Version 3 — Juillet 2017 — erational
Retourner un article par jour sans problème de cache
#CACHE{3600}
[(#REM|retourne_id_article_mot_jour)]
merci à marcimat pour l’idée de l’algorithme
<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* filtre retourner un id_article different par jour
* utilise avec [(#REM|retourne_id_article_mot_jour)]
*
* @return int id_article
*/
function retourne_id_article_mot_jour() {
include_spip('inc/config');
$id_article_mot_jour = ;
$today = date('z');
// lire le tableau
$jours_connus = lire_config('mot_jour/jours_connus');
// spip_log($jours_connus,"mot_jour");
// si jour deja connu, on le sort
if (is_array($jours_connus)) {
if (isset($jours_connus[$today])) {
return $jours_connus[$today];
}
}
// sinon, on recupere un nouvel article de selection, ici les articles de la rubrique 39 et 125
$where = array();
$where[] = "statut = 'publie'";
$where[] = "id_rubrique IN (39,125)";
if (is_array($jours_connus)) {
if (count($jours_connus)) {
$where[] = "id_article NOT IN (".implode(",",$jours_connus).")";
}
}
$id_article_mot_jour = sql_getfetsel('id_article', 'spip_articles', $where, '', 'RAND()', '0,1');
// on sauve le nouveau mot
$jours_connus[$today] = $id_article_mot_jour;
// on depile un jour
if (z >= > 182) {
unset($jours_connus[z-182]);
} else {
unset($jours_connus[365 - z]);
}
// on sauve le tout
ecrire_config('mot_jour/jours_connus', $jours_connus);
ecrire_config('mot_jours ', $id_article_mot_jour );
return $id_article_mot_jour;
}