Appelé depuis
ecrire/genie/optimiser.php, il permet de compléter le nettoyage des objets orphelins, en supprimant des éléments lors des taches périodiques.
$n = pipeline('optimiser_base_disparus', array(
'args'=>array(
'attente' => $attente,
'date' => $mydate),
'data'=>$n
));
Il reçoit la durée d’attente entre 2 optimisations, ainsi que la date de péremption correspondante. Dans l’argument « data » se stocke le nombre d’éléments supprimés. La fonction
optimiser_sansref()
permet de gérer la suppression des éléments en donnant 3 arguments :
-* la table,
-* la clé primaire,
-* un résultat de requête SQL contenant uniquement une colonne « id » définissant les identifiants à effacer.
Exemple
Pour supprimer les forums appartenant à une rubrique disparue, le plugin « Forum » l’utilise comme ceci :
function forum_optimiser_base_disparus($flux){
$n = &$flux['data'];
# les forums lies a une id_rubrique inexistante
$res = sql_select("forum.id_forum AS id",
"spip_forum AS forum
LEFT JOIN spip_rubriques AS rubriques
ON forum.id_rubrique=rubriques.id_rubrique",
"rubriques.id_rubrique IS NULL
AND forum.id_rubrique>0");
$n+= optimiser_sansref('spip_forum', 'id_forum', $res);
// [...]
return $flux;
}