Server : Apache System : Linux webd348.cluster026.gra.hosting.ovh.net 5.15.148-ovh-vps-grsec-zfs-classid #1 SMP Thu Feb 8 09:41:04 UTC 2024 x86_64 User : hednacluml ( 122243) PHP Version : 8.3.9 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl Directory : /home/hednacluml/unichild/prive/objets/liste/ |
<?php /***************************************************************************\ * SPIP, Système de publication pour l'internet * * * * Copyright © avec tendresse depuis 2001 * * Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribué sous licence GNU/GPL. * \***************************************************************************/ /** * Fonctions spécifiques au squelette * * @package SPIP\Core\Fonctions **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Compter les articles publies lies a un auteur, dans une boucle auteurs * pour la vue prive/liste/auteurs.html * * @param string $idb * @param array $boucles * @param Critere $crit * @param bool $left */ function critere_compteur_articles_filtres_dist($idb, &$boucles, $crit, $left = false) { $boucle = &$boucles[$idb]; $_statut = calculer_liste($crit->param[0], [], $boucles, $boucle->id_parent); $not = ''; if ($crit->not) { $not = ", 'NOT'"; } $boucle->from['LAA'] = 'spip_auteurs_liens'; $boucle->from_type['LAA'] = 'left'; $boucle->join['LAA'] = ["'auteurs'", "'id_auteur'", "'id_auteur'", "'LAA.objet=\'article\''"]; $boucle->from['articles'] = 'spip_articles'; $boucle->from_type['articles'] = 'left'; $boucle->join['articles'] = [ "'LAA'", "'id_article'", "'id_objet'", "'(articles.statut IS NULL OR '.sql_in_quote('articles.statut',[$_statut]$not).')'" ]; $boucle->select[] = 'COUNT(articles.id_article) AS compteur_articles'; $boucle->group[] = 'auteurs.id_auteur'; } /** * Compter les articles publiés liés à un auteur, dans une boucle auteurs * pour la vue `prive/liste/auteurs.html` * * Nécessite le critère `compteur_articles_filtres` * * @balise * @see critere_compteur_articles_filtres_dist() * * @param Champ $p * Pile au niveau de la balise * @return Champ * Pile complétée par le code à générer */ function balise_COMPTEUR_ARTICLES_dist($p) { return rindex_pile($p, 'compteur_articles', 'compteur_articles_filtres'); } /** * Afficher l'initiale pour la navigation par lettres * * @staticvar string $memo * @param string $url * @param string $initiale * @param int $compteur * @param int $debut * @param int $pas * @return string */ function afficher_initiale($url, $initiale, $compteur, $debut, $pas) { static $memo = null; static $res = []; $out = ''; if ( !$memo or (!$initiale and !$url) or ($initiale !== $memo['initiale']) ) { $newcompt = intval(floor(($compteur - 1) / $pas) * $pas); // si fin de la pagination et une seule entree, ne pas l'afficher, ca ne sert a rien if (!$initiale and !$url and !$memo['compteur']) { $memo = null; } if ($memo) { $on = (($memo['compteur'] <= $debut) and ( $newcompt > $debut or ($newcompt == $debut and $newcompt == $memo['compteur']) )); $res[] = "<li class='pagination-item'>" . lien_ou_expose($memo['url'], $memo['initiale'], $on ? 'span.pagination-item-label' : '', 'pagination-item-label lien_pagination') . '</li>'; } if ($initiale) { $memo = [ 'entree' => isset($memo['entree']) ? $memo['entree'] + 1 : 0, 'initiale' => $initiale, 'url' => parametre_url($url, 'i', $initiale), 'compteur' => $newcompt ]; } } if (!$initiale and !$url) { if ((is_countable($res) ? count($res) : 0) > 1) { $out = "<ul class='pagination-items'>" . implode(' ', $res) . '</ul>'; } $memo = null; $res = []; } return $out; } /** * Calculer l'url vers la messagerie : * - si l'auteur accepte les messages internes et que la messagerie est activee * et qu'il est en ligne, on propose le lien vers la messagerie interne * - sinon on propose un lien vers un email si possible * - sinon rien * * @staticvar string $time * @param int $id_auteur * @param string $en_ligne Date * @param string $statut * @param string $imessage * @param string $email * @return string */ function auteur_lien_messagerie($id_auteur, $en_ligne, $statut, $imessage, $email = '') { static $time = null; if (!in_array($statut, ['0minirezo', '1comite'])) { return ''; } if (is_null($time)) { $time = time(); } $parti = (($time - strtotime($en_ligne)) > 15 * 60); if ( $imessage != 'non' and !$parti // historique : est-ce que ca a encore un sens de limiter vu qu'on a la notification par email ? and $GLOBALS['meta']['messagerie_agenda'] != 'non' ) { return parametre_url(parametre_url(generer_url_ecrire('message_edit', 'new=oui'), 'to', $id_auteur), 'redirect', self()); } elseif (strlen($email) and autoriser('voir', 'auteur', $id_auteur)) { return 'mailto:' . $email; } else { return ''; } }