X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fplugins%2Fauto%2Fafficher_objets%2Fafficher_objets_fonctions.php;fp=www%2Fplugins%2Fauto%2Fafficher_objets%2Fafficher_objets_fonctions.php;h=2d6c962abbde1d1725014f916fa48322f797f94d;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/plugins/auto/afficher_objets/afficher_objets_fonctions.php b/www/plugins/auto/afficher_objets/afficher_objets_fonctions.php new file mode 100644 index 0000000..2d6c962 --- /dev/null +++ b/www/plugins/auto/afficher_objets/afficher_objets_fonctions.php @@ -0,0 +1,157 @@ + $idb + * @param $boucles + * @param $crit + */ +function critere_where_dist($idb, &$boucles, $crit) { + $boucle = &$boucles[$idb]; + if (isset($crit->param[0])) + $_where = calculer_liste($crit->param[0], array(), $boucles, $boucle->id_parent); + else + $_where = '@$Pile[0]["where"]'; + + if ($crit->cond) + $_where = "(($_where) ? ($_where) : '')"; + + if ($crit->not) + $_where = "array('NOT',$_where)"; + + $boucle->where[]= $_where; +} + +/** + * Compter les articles publies lies a un auteur, dans une boucle auteurs + * pour la vue prive/liste/auteurs.html + * + * @param $idb + * @param $boucles + * @param $crit + * @param $left + */ +function critere_compteur_articles_filtres_dist($idb, &$boucles, $crit, $left=false){ + $boucle = &$boucles[$idb]; + + $_statut = calculer_liste($crit->param[0], array(), $boucles, $boucle->id_parent); + + $not=""; + if ($crit->not) + $not=", 'NOT'"; + $boucle->from['auteurs_articles'] = 'spip_auteurs_articles'; + $boucle->from_type['auteurs_articles'] = 'left'; + $boucle->join['auteurs_articles'] = array("'auteurs'","'id_auteur'"); + + $boucle->from['articles'] = 'spip_articles'; + $boucle->from_type['articles'] = 'left'; + $boucle->join['articles'] = array("'auteurs_articles'","'id_article'","'id_article'","'(articles.statut IS NULL OR '.sql_in('articles.statut',sql_quote($_statut)$not).')'"); + + $boucle->select[]= "COUNT(articles.id_article) AS compteur_articles"; + $boucle->group[] = 'auteurs.id_auteur'; +} +/** + * Compter les articles publies lies a un auteur, dans une boucle auteurs + * pour la vue prive/liste/auteurs.html + * + * @param $p + * @return + */ +function balise_COMPTEUR_ARTICLES_dist($p) { + return rindex_pile($p, 'compteur_articles', 'compteur_articles_filtres'); +} + + +/** + * Calculer l'initiale d'un nom + * + * @param $nom + * @return + */ +function initiale($nom){ + return spip_substr(trim(strtoupper($nom)),0,1); +} + +/** + * Afficher l'initiale pour la navigation par lettres + * + * @staticvar string $memo + * @param $url + * @param $initiale + * @param $compteur + * @param $debut + * @param $pas + * @return + */ +function afficher_initiale($url,$initiale,$compteur,$debut,$pas){ + static $memo = null; + $res = ''; + if (!$memo + OR (!$initiale AND !$url) + OR ($initiale!==$memo['initiale']) + ){ + $newcompt = intval(floor(($compteur-1)/$pas)*$pas); + #var_dump("$initiale:$newcompt"); + if ($memo){ + $on = (($memo['compteur']<=$debut) + AND ( + $newcompt>$debut OR ($newcompt==$debut AND $newcompt==$memo['compteur']) + )); + $res = lien_ou_expose($memo['url'],$memo['initiale'],$on,'lien_pagination'); + } + if ($initiale) + $memo = array('initiale'=>$initiale,'url'=>parametre_url($url,'i',$initiale),'compteur'=>$newcompt); + } + return $res; +} + +/** + * 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 date $en_ligne + * @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, array('0minirezo', '1comite'))) + return ''; + + if (is_null($time)) + $time = time(); + $parti = (($time-strtotime($en_ligne))>15*60); + + if ($imessage != 'non' AND !$parti AND $GLOBALS['meta']['messagerie_agenda'] != 'non') + return generer_action_auteur("editer_message","normal/$id_auteur"); + + elseif (strlen($email) AND autoriser('voir', 'auteur', $id_auteur)) + return 'mailto:' . $email; + + else + return ''; + + return " "; +} +?>