Programmer avec SPIP 3.0
Documentation technique sur SPIP 3.0

> > > > optimiser_base_disparus

optimiser_base_disparus

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.

  1. $n = pipeline('optimiser_base_disparus', array(
  2. 'args'=>array(
  3. 'attente' => $attente,
  4. 'date' => $mydate),
  5. 'data'=>$n
  6. ));

Télécharger

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 :

  1. function forum_optimiser_base_disparus($flux){
  2. $n = &$flux['data'];
  3.  
  4. # les forums lies a une id_rubrique inexistante
  5. $res = sql_select("forum.id_forum AS id",
  6. "spip_forum AS forum
  7. LEFT JOIN spip_rubriques AS rubriques
  8. ON forum.id_rubrique=rubriques.id_rubrique",
  9. "rubriques.id_rubrique IS NULL
  10. AND forum.id_rubrique>0");
  11.  
  12. $n+= optimiser_sansref('spip_forum', 'id_forum', $res);
  13.  
  14. // [...]
  15.  
  16. return $flux;
  17. }

Télécharger