SPIP Blog

Du logiciel libre et de la tendresse

Accueil > Développement > Une nouvelle balise de date

Une nouvelle balise de date

mercredi 9 août 2006, par James

Message officiel

J’avais envie de créer une balise #DATE_THREAD qui afficherait la date de
publication du message de forum le plus récent soit dans un fil de
discussion soit pour un article/breve/rubrique.

Intéressant si on considère que #DATE_MODIF, qui est la date de
modification d’un objet éditorial, ne suffit pas pour indiquer la date de
mise à jour de cet objet et qu’on entend par mise à jour la date de modification d’une page web qui contiendrait le texte d’un article ainsi que ses forums associés.

Le code

dans mes_fonctions.php :

function balise_DATE_THREAD($p) {
        $nom = $p->id_boucle;
        $_type = $p->boucles[$nom]->type_requete;
        // Reserver la cle primaire de la boucle courante
        if ($primary = $p->boucles[$p->id_boucle]->primary) {
                $id = champ_sql($primary, $p);
                if($primary=='id_forum') $primary='id_thread';
        }
        # On pourrait mieux faire qu'utiliser cette fonction assistante ?
        $p->code = "sql_date_thread(" .
                $id .
                ",'" .
                $primary .
                "','" .
                $nom .
                "','" .
                $_type .
                "','" .
                $p->boucles[$nom]->sql_serveur .
        "')";
       
        #$p->interdire_scripts = true;
        return $p;
}

function sql_date_thread($id, $primary, $table, $id_boucle, $serveur='') {
        $date = '';
       
        $select = array('MAX(date_heure) AS date_thread');
        $from = array('forum' => 'spip_forum');
        $where = array("forum.$primary=$id");
        $groupby = $primary;
        $orderby = array('date_thread');
       
        $result_date_thread = spip_abstract_select(
                $select, $from, $where, $groupby, $orderby,
                '', '', array(), $table, $id_boucle, $serveur);
       
        if($row_date_thread = spip_abstract_fetch($result_date_thread, $serveur)) {
                $date = $row_date_thread['date_thread'];
        }
       
        return $date;
}

Message officieux

Certes on pouvait faire ça par boucle... mais avouez que la place que ça occupe dans un squelette rend le truc plus classe quand même, non ?

En fait, c’est juste histoire de faire un billet... j’hésite encore à balancer ça dans le noyau...

Messages

Un message, un commentaire ?

Qui êtes-vous ?
Se connecter
Votre message

Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.