Carnet Wiki

Nombre de jours écoulés depuis la publication

Avec un filtre |age

Dans squelettes/mes_fonctions.php

function age(string $date): int {
    $date = new \DateTimeImmutable($date);
    // Si pas d’heure, mettre 20h (if optionnel)
    if ($date->format('His') === '000000') {
        $date = $date->setTime(20, 0);
    }
    return (new \DateTimeImmutable())->diff($date)->days;
}

Exemple de squelette

<BOUCLE_art(ARTICLES){!par date}{0, 10}>
- #ID_ARTICLE - Nb jours : [(#DATE|age)]<br />
</BOUCLE_art>

Avec un critère {mon_age_relatif} + balise #MON_AGE_RELATIF

Snipet à placer dans squelettes/mes_fonctions.php

/**
 * {mon_age_relatif} ou {mon_age_relatif date_modif}
by Marcimat
 */
function critere_mon_age_relatif_dist($idb, &$boucles, $crit) {
    $boucle = &$boucles[$idb];
 
    $table = $boucle->show;
    $params = $crit->param;
    if ($params) {
        $champ = reset($params);
        $champ = $champ[0]->texte;
    } else {
        $champ = $table['date'] ?? '';
    }
    if (empty($table['field'][$champ])) {
        erreur_squelette("Critere mon_age_relatif sans champ date valide.", $boucle);
    }
    $date_compare = "'\" . normaliser_date(" .
        calculer_argument_precedent($idb, $champ, $boucles) .
        ") . \"'";
    $date_orig = $boucle->id_table . '.' . $champ;
    $as = 'mon_age_relatif';
 
#var_dump(calculer_param_date($date_compare, $date_orig));
    $boucle->select[] = '(' . calculer_param_date($date_compare, $date_orig)  . ") AS $as";
}
 
/**
 * #MON_AGE_RELATIF => 7
 * #MON_AGE_RELATIF* => 7.1234
 * @param Pile $p
 * @return Pile
 */
function balise_MON_AGE_RELATIF_dist($p) {
    $p = rindex_pile($p, 'mon_age_relatif', 'mon_age_relatif');
    if (!$p->etoile) {
        $p->code = "floor(" . $p->code . ")";
    }
    return $p;
}

Dans votre squelette :

-  #MON_AGE_RELATIF arrondi le nombre de jours sans virgules (floor())
-  #MON_AGE_RELATIF* renvoie un nombre flottant

<BOUCLE_1(ARTICLES){mon_age_relatif}{0, 10}>
#ID_ARTICLE - #MON_AGE_RELATIF - #MON_AGE_RELATIF*<br />
</BOUCLE_1>
formatec - Mise à jour :17 juillet 2023 à 12h58min