[spip-dev] #DATE des rubriques pas recalculé

Allo!

Dans un email précédent, je suggérait une patch pour que le calcul de
modification d'une rubrique prenne correctement en compte les dates
des articles syndiqués. J'utilise la patch depuis maintenant assez
longtemps pour dire qu'elle fonctionne bien.

Mon problème se situe maintenant au niveau de la fonction
calculer_dates_rubriques(). Cette fonction est celle qui opère le
calcul du paramètre #DATE des rubriques. J'ai l'impression qu'elle est
appelée lorsqu'un article est mis-à-jour mais pas lorque l'article
vient d'un site syndiqué, ce qui est un bug, à mon avis.

Je crois donc qu'il faudrait rajouter un appel dans syndic_a_jour() ou
dans executer_une_syndication(). Ma patch, très simple:

--- ecrire/inc_sites.php3.orig Sun Jun 22 11:10:32 2003
+++ ecrire/inc_sites.php3 Sun Jun 22 11:10:32 2003
@@ -262,6 +262,7 @@

   // Ne pas oublier de liberer le verrou
   spip_release_lock($url_syndic);
+ calculer_rubriques();
   return $erreur;
}

Ainsi, la mise-à-jour est executée seulement si un site syndiqué est
mis-à-jour.

J'espère que ces deux patches seront considérées puisque je n'en ai
pas encore eu de feedback..

Merci,

A.

En fait... Je crois que la patch correcte serait plutot:

--- ecrire/inc_sites.php3.orig Sun Jun 22 11:32:42 2003
+++ ecrire/inc_sites.php3 Sun Jun 22 11:32:42 2003
@@ -220,6 +220,7 @@
           $query_syndic = "INSERT INTO spip_syndic_articles (id_syndic, titre, url, date, lesauteurs, statut, descriptif) ".
             "VALUES ('$now_id_syndic', '$le_titre', '$le_lien', FROM_UNIXTIME($la_date), '$les_auteurs', '$moderation', '$la_description')";
           $result_syndic=spip_query($query_syndic);
+ calculer_rubriques();
         }
       }
       spip_query("UPDATE spip_syndic SET syndication='oui' WHERE id_syndic='$now_id_syndic'");
@@ -251,6 +252,7 @@
           $query_syndic = "INSERT INTO spip_syndic_articles (id_syndic, titre, url, date, lesauteurs, statut, descriptif) ".
             "VALUES ('$now_id_syndic', '$le_titre', '$le_lien', '$la_date', '$les_auteurs', '$moderation', '$la_description')";
           $result_syndic=spip_query($query_syndic);
+ calculer_rubriques();
         }
         $i++;
       }

puisque la précédente faisait un update qu'un article ait été syndiqué
ou non.

A.

--- ecrire/inc_sites.php3.orig Sun Jun 22 11:10:32 2003
+++ ecrire/inc_sites.php3 Sun Jun 22 11:10:32 2003
@@ -262,6 +262,7 @@

   // Ne pas oublier de liberer le verrou
   spip_release_lock($url_syndic);
+ calculer_rubriques();
   return $erreur;
}

Ceci ne fonctionne pas, et je ne m'en suis rendu compte que tout
récemment. J'ignore pourquoi, mais inc.php3 n'est pas inclus à ce
moment, et calculer_rubriques() n'est pas encore défini.

Un "workaround" que j'ai pu trouver:

--- inc_sites.php3.orig Thu Jun 26 18:14:43 2003
+++ inc_sites.php3 Thu Jun 26 18:14:06 2003
@@ -220,6 +220,7 @@
           $query_syndic = "INSERT INTO spip_syndic_articles (id_syndic, titre, url, date, lesauteurs, statut, descriptif) ".
             "VALUES ('$now_id_syndic', '$le_titre', '$le_lien', FROM_UNIXTIME($la_date), '$les_auteurs', '$moderation', '$la_description')";
           $result_syndic=spip_query($query_syndic);
+ ecrire_meta('calculer_rubriques', 'oui');
         }
       }
       spip_query("UPDATE spip_syndic SET syndication='oui' WHERE id_syndic='$now_id_syndic'");
@@ -251,6 +252,7 @@
           $query_syndic = "INSERT INTO spip_syndic_articles (id_syndic, titre, url, date, lesauteurs, statut, descriptif) ".
             "VALUES ('$now_id_syndic', '$le_titre', '$le_lien', '$la_date', '$les_auteurs', '$moderation', '$la_description')";
           $result_syndic=spip_query($query_syndic);
+ ecrire_meta('calculer_rubriques', 'oui');
         }
         $i++;
       }

Mais ceci règle que partiellement le problème puisque le "meta" n'a
d'influence que lorsque l'on entre dans l'interface d'administration.

Je crois que le code:

//
// Si necessaire, recalculer les rubriques
//

if (lire_meta('calculer_rubriques') == 'oui') {
        calculer_rubriques();
        effacer_meta('calculer_rubriques');
        ecrire_metas();
}

devrait être dans inc-public-global.php3 au lieu de ecrire/index.php3,
mais ceci demanderait que les fonctions calculer_rubriques() soient
définies dans la section publique et donc que inc.php3 soit inclus
dans la section publique, ce que je crois être "déplacé".

Il faudrait plutôt regrouper les fonctions calculer_*() dans un
fichier séparé et l'inclure au besoin...

Mais pour ça, j'aimerais savoir si je suis sur la bonne voie et/ou si
je travaille pour rien:

J'espère que ces deux patches seront considérées puisque je n'en ai
pas encore eu de feedback..

<tap-tap> un-deux, un-deux.. Y a-t-il des développeurs à l'écoute?

A.

> + calculer_rubriques();
> J'espère que ces deux patches seront considérées puisque je n'en ai
> pas encore eu de feedback..

<tap-tap> un-deux, un-deux.. Y a-t-il des développeurs à l'écoute?

Voilà, c'est revu, révisé, incorporé, intégré... au CVS. Merci !

-- Fil

> > + calculer_rubriques();
> > J'espère que ces deux patches seront considérées puisque je n'en ai
> > pas encore eu de feedback..
>
> <tap-tap> un-deux, un-deux.. Y a-t-il des développeurs à l'écoute?

Voilà, c'est revu, révisé, incorporé, intégré... au CVS. Merci !

Serait-ce possible qu'il manque un fichier inc_rubriques.php3 au CVS? :slight_smile:

A.

PS:

cvs update

cvs server: Updating .
cvs server: Updating CACHE
cvs server: Updating IMG
cvs server: Updating IMG/icones
cvs server: Updating NAVPICS
cvs server: Updating ecrire
cvs server: Updating ecrire/AIDE
cvs server: Updating ecrire/AIDE/ar
cvs server: Updating ecrire/AIDE/cpf
cvs server: Updating ecrire/AIDE/da
cvs server: Updating ecrire/AIDE/de
cvs server: Updating ecrire/AIDE/en
cvs server: Updating ecrire/AIDE/eo
cvs server: Updating ecrire/AIDE/es
cvs server: Updating ecrire/AIDE/fr
cvs server: Updating ecrire/AIDE/gl
cvs server: Updating ecrire/AIDE/it
cvs server: Updating ecrire/AIDE/vi
cvs server: Updating ecrire/IMG2
cvs server: Updating ecrire/data
cvs server: Updating ecrire/i18n
cvs server: Updating ecrire/img_pack
cvs server: Updating ecrire/lang
cvs server: Updating ecrire/upload
cvs server: Updating oo

grep -r inc_rubr *

ecrire/inc.php3:include_ecrire("inc_rubriques.php3");
ecrire/inc_sites.php3: include_ecrire('inc_rubriques.php3');
inc-public-global.php3: include_ecrire('inc_rubriques.php3');

Serait-ce possible qu'il manque un fichier inc_rubriques.php3 au CVS? :slight_smile:

Il est dans le TGV Nîmes-Anglet, qui a pris du retard :wink: