/**
 * Génère le cache de la liste des rubriques pour la navigation du bandeau
 *
 * Le cache, qui comprend pour chaque rubrique ses rubriques enfants et leur titre, est :
 *
 * - réactualisé en fonction de la meta `date_calcul_rubriques`
 * - mis en cache dans le fichier défini par la constante `_CACHE_RUBRIQUES`
 * - stocké également dans la globale `db_art_cache`
 *
 * @return bool true.
 **/
function gen_liste_rubriques()
{
    include_spip('inc/config');
    // ici, un petit fichier cache ne fait pas de mal
    $last = lire_config('date_calcul_rubriques', 0);
    if (lire_fichier(_CACHE_RUBRIQUES, $cache)) {
        list($date, $GLOBALS['db_art_cache']) = @unserialize($cache);
        if ($date == $last) {
            return false;
        }
        // c'etait en cache :-)
    }
    // se restreindre aux rubriques utilisees recemment +secteurs
    $where = sql_in_select("id_rubrique", "id_rubrique", "spip_rubriques", "", "", "id_parent=0 DESC, date DESC", _CACHE_RUBRIQUES_MAX);
    // puis refaire la requete pour avoir l'ordre alphabetique
    $res = sql_select("id_rubrique, titre, id_parent", "spip_rubriques", $where, '', 'id_parent, 0+titre, titre');
    // il ne faut pas filtrer le autoriser voir ici
    // car on met le resultat en cache, commun a tout le monde
    $GLOBALS['db_art_cache'] = array();
    while ($r = sql_fetch($res)) {
        $t = sinon($r['titre'], _T('ecrire:info_sans_titre'));
        $GLOBALS['db_art_cache'][$r['id_parent']][$r['id_rubrique']] = supprimer_numero(typo($t));
    }
    $t = array($last ? $last : time(), $GLOBALS['db_art_cache']);
    ecrire_fichier(_CACHE_RUBRIQUES, serialize($t));
    return true;
}
Example #2
0
function ajouter_nouveau_mot($id_groupe, $table, $table_id, $id_mot, $id)
{
	if (un_seul_mot_dans_groupe($id_groupe)) {
		sql_delete("spip_mots_$table", "$table_id=$id AND " . sql_in_select("id_mot", "id_mot", "spip_mots", "id_groupe = $id_groupe"));
	}
	sql_insertq("spip_mots_$table", array("id_mot" => $id_mot, $table_id => $id));
}