[spip-dev] critere #date dans les rubriques

Dans le manuel de référence, on lit, dans la section sur les boucles
rubriques:

   [SPIP 1.4] #DATE affiche la date de la dernière publication
   effectuée dans la rubrique et/ou ses sous-rubriques (articles,
   brèves...).

Qu'est-ce que le "..." veut dire ici? Est-ce que cela implique que
#date devrait prendre en compte les feeds XML? Si c'est le cas, il y a
un bug, car la #date ici ne prend pas en compte les mises-à-jour des
feeds en question.

J'ai l'impression qu'il y a quelquechose qui cloche dans
calculer_dates_rubriques(). Si je comprends bien ce que cette fonction
fait, c'est à dire qu'elle recherche la date la plus récente de
modification d'une rubrique, il y a un bug, que la patch suivante
règle:

--- inc.php3.orig Wed Jun 18 10:50:32 2003
+++ inc.php3 Wed Jun 18 10:50:36 2003
@@ -337,7 +337,7 @@
                        $date_breves = $row['date_h'];
                        if ($date_breves > $date_rubrique) $date_rubrique = $date_breves;
                }
- $query = "SELECT MAX(date) AS date_h FROM spip_syndic WHERE id_rubrique=$id_rubrique AND statut='publie'";
+ $query = "SELECT MAX(date_syndic) AS date_h FROM spip_syndic WHERE id_rubrique=$id_rubrique AND statut='publie'";
                $result = spip_query($query);
                while ($row = spip_fetch_array($result)) {
                        $date_syndic = $row['date_h'];

autrement dit:

Évidemment, ce email n'était pas terminé quand j'ai fait l'erreur de
presser sur "envoi". :slight_smile:

...

J'ai l'impression qu'il y a quelquechose qui cloche dans
calculer_dates_rubriques(). Si je comprends bien ce que cette fonction
fait, c'est à dire qu'elle recherche la date la plus récente de
modification d'une rubrique, il y a un bug, que la patch suivante
règle:

--- inc.php3.orig Wed Jun 18 10:50:32 2003
+++ inc.php3 Wed Jun 18 10:50:36 2003
@@ -337,7 +337,7 @@
                        $date_breves = $row['date_h'];
                        if ($date_breves > $date_rubrique) $date_rubrique = $date_breves;
                }
- $query = "SELECT MAX(date) AS date_h FROM spip_syndic WHERE id_rubrique=$id_rubrique AND statut='publie'";
+ $query = "SELECT MAX(date_syndic) AS date_h FROM spip_syndic WHERE id_rubrique=$id_rubrique AND statut='publie'";
                $result = spip_query($query);
                while ($row = spip_fetch_array($result)) {
                        $date_syndic = $row['date_h'];

autrement dit: ...

la date de modification d'une rubrique est aussi la date de la
dernière mise-à-jour d'un site syndiqué (au lieu de la date d'ajout du
site en question).

Mais, à mon grand désarroi, cette modification n'a pas d'impact sur
une balise #DATE d'une boucle rubrique...

En fait, il semblerait que cette fonction ne soit pas appelée du tout,
comme je m'y attendais... De plus, comment les résultats de cette
fonctions sont-ils stockés?? Nulle part dans le code la valeur de
retour de cette fonction est récupéré, à part dans un appel récursif.

Des idées?

A.

@ The Anarcat <anarcat@anarcat.ath.cx> :

Dans le manuel de référence, on lit, dans la section sur les boucles
rubriques:

   [SPIP 1.4] #DATE affiche la date de la dernière publication
   effectuée dans la rubrique et/ou ses sous-rubriques (articles,
   brèves...).

Qu'est-ce que le "..." veut dire ici? Est-ce que cela implique que
#date devrait prendre en compte les feeds XML? Si c'est le cas, il y a
un bug, car la #date ici ne prend pas en compte les mises-à-jour des
feeds en question.

En effet, il s'agit de la date d'ajout du site syndiqué, pas de sa dernière
syundication. Cela dit, le patch que tu proposes utilise la date de la
dernière syndication, que celle-ci ait donné un nouvel item ou pas ; ça
n'est guère utile non plus :wink:

J'ai l'impression qu'il y a quelquechose qui cloche dans
calculer_dates_rubriques().

Ce qui est gênant, surtout, dans cette fonction, c'est qu'elle n'est appelée
que depuis l'espace privé ; donc si tu publies des articles "à l'avance" en
changeant leur date dans le futur, et que tu pars en vacances, cette date ne
sera pas mise à jour quand les articles seront "publiés" automatiquement...

-- Fil

@ The Anarcat <anarcat@anarcat.ath.cx> :
> Dans le manuel de référence, on lit, dans la section sur les boucles
> rubriques:
>
> [SPIP 1.4] #DATE affiche la date de la dernière publication
> effectuée dans la rubrique et/ou ses sous-rubriques (articles,
> brèves...).
>
> Qu'est-ce que le "..." veut dire ici? Est-ce que cela implique que
> #date devrait prendre en compte les feeds XML? Si c'est le cas, il y a
> un bug, car la #date ici ne prend pas en compte les mises-à-jour des
> feeds en question.

En effet, il s'agit de la date d'ajout du site syndiqué, pas de sa dernière
syundication. Cela dit, le patch que tu proposes utilise la date de la
dernière syndication, que celle-ci ait donné un nouvel item ou pas ; ça
n'est guère utile non plus :wink:

En effet.. Il va falloir que je revois ma patch. Je vous reviens
là-dessus.

> J'ai l'impression qu'il y a quelquechose qui cloche dans
> calculer_dates_rubriques().

Ce qui est gênant, surtout, dans cette fonction, c'est qu'elle n'est appelée
que depuis l'espace privé ; donc si tu publies des articles "à l'avance" en
changeant leur date dans le futur, et que tu pars en vacances, cette date ne
sera pas mise à jour quand les articles seront "publiés" automatiquement...

En effet. Pourquoi en est-il ainsi? Elle est trop "complexe" pour être
appelée de l'espace public?

A.

@ The Anarcat <anarcat@anarcat.ath.cx> :
> Dans le manuel de référence, on lit, dans la section sur les boucles
> rubriques:
>
> [SPIP 1.4] #DATE affiche la date de la dernière publication
> effectuée dans la rubrique et/ou ses sous-rubriques (articles,
> brèves...).
>
> Qu'est-ce que le "..." veut dire ici? Est-ce que cela implique que
> #date devrait prendre en compte les feeds XML? Si c'est le cas, il y a
> un bug, car la #date ici ne prend pas en compte les mises-à-jour des
> feeds en question.

En effet, il s'agit de la date d'ajout du site syndiqué, pas de sa dernière
syundication. Cela dit, le patch que tu proposes utilise la date de la
dernière syndication, que celle-ci ait donné un nouvel item ou pas ; ça
n'est guère utile non plus :wink:

Bon, j'ai mijoté autre chose. Aller chercher l'article le plus récent
des articles syndiqués dans la rubrique:

--- ecrire/inc.php3.orig Fri Jun 20 00:04:35 2003
+++ ecrire/inc.php3 Fri Jun 20 00:04:35 2003
@@ -337,11 +337,16 @@
       $date_breves = $row['date_h'];
       if ($date_breves > $date_rubrique) $date_rubrique = $date_breves;
     }
- $query = "SELECT MAX(date) AS date_h FROM spip_syndic WHERE id_rubrique=$id_rubrique AND statut='publie'";
- $result = spip_query($query);
+ $query = "SELECT id_syndic FROM spip_syndic WHERE id_rubrique=$id_rubrique AND statut='publie'";
+ $result = spip_query($query);
     while ($row = spip_fetch_array($result)) {
- $date_syndic = $row['date_h'];
- if ($date_syndic > $date_rubrique) $date_rubrique = $date_syndic;
+ $id_syndic = $row['id_syndic'];
+ $query = "SELECT MAX(date) AS date_h FROM spip_syndic_articles WHERE id_syndic = $id_syndic AND statut='publie'";
+ $articles = spip_query($query);
+ while ($art_row = spip_fetch_array($articles)) {
+ $date_syndic = $art_row['date_h'];
+ if ($date_syndic > $date_rubrique) $date_rubrique = $date_syndic;
+ }
     }
     $post_dates = lire_meta("post_dates");
     if ($post_dates != "non") {

...mais ceci règle seulement une partie du problème:

> J'ai l'impression qu'il y a quelquechose qui cloche dans
> calculer_dates_rubriques().

Ce qui est gênant, surtout, dans cette fonction, c'est qu'elle n'est appelée
que depuis l'espace privé ; donc si tu publies des articles "à l'avance" en
changeant leur date dans le futur, et que tu pars en vacances, cette date ne
sera pas mise à jour quand les articles seront "publiés" automatiquement...

On a le même problème au niveau de la syndication. Le processus
automatique ne (semble) pas requérir d'intervention administrative, et
les dates de mise-à-jour des rubriques peuvent devenir erronées.

..et ça m'amène à la question suivante: quand les sites eux-mêmes
sont-ils syndiqués, mis-à-jour? À quelle intervalle?

Et la question corollaire: quand devrait être appelée
calculer_dates_rubriques()?

A.