[SPIP] +2.1.12
[velocampus/web/www.git] / www / plugins / auto / afficher_objets / afficher_objets_fonctions.php
1 <?php
2
3 if (!defined("_ECRIRE_INC_VERSION")) return;
4
5 function filtre_test_syndic_article_miroir($id){
6 global $my_sites;
7 if (isset($my_sites[$id]['miroir']) AND $my_sites[$id]['miroir'] == 'oui')
8 return ' ';
9 return '';
10 }
11
12
13 /**
14 * {where}
15 * tout simplement
16 *
17 * @param <type> $idb
18 * @param <type> $boucles
19 * @param <type> $crit
20 */
21 function critere_where_dist($idb, &$boucles, $crit) {
22 $boucle = &$boucles[$idb];
23 if (isset($crit->param[0]))
24 $_where = calculer_liste($crit->param[0], array(), $boucles, $boucle->id_parent);
25 else
26 $_where = '@$Pile[0]["where"]';
27
28 if ($crit->cond)
29 $_where = "(($_where) ? ($_where) : '')";
30
31 if ($crit->not)
32 $_where = "array('NOT',$_where)";
33
34 $boucle->where[]= $_where;
35 }
36
37 /**
38 * Compter les articles publies lies a un auteur, dans une boucle auteurs
39 * pour la vue prive/liste/auteurs.html
40 *
41 * @param <type> $idb
42 * @param <type> $boucles
43 * @param <type> $crit
44 * @param <type> $left
45 */
46 function critere_compteur_articles_filtres_dist($idb, &$boucles, $crit, $left=false){
47 $boucle = &$boucles[$idb];
48
49 $_statut = calculer_liste($crit->param[0], array(), $boucles, $boucle->id_parent);
50
51 $not="";
52 if ($crit->not)
53 $not=", 'NOT'";
54 $boucle->from['auteurs_articles'] = 'spip_auteurs_articles';
55 $boucle->from_type['auteurs_articles'] = 'left';
56 $boucle->join['auteurs_articles'] = array("'auteurs'","'id_auteur'");
57
58 $boucle->from['articles'] = 'spip_articles';
59 $boucle->from_type['articles'] = 'left';
60 $boucle->join['articles'] = array("'auteurs_articles'","'id_article'","'id_article'","'(articles.statut IS NULL OR '.sql_in('articles.statut',sql_quote($_statut)$not).')'");
61
62 $boucle->select[]= "COUNT(articles.id_article) AS compteur_articles";
63 $boucle->group[] = 'auteurs.id_auteur';
64 }
65 /**
66 * Compter les articles publies lies a un auteur, dans une boucle auteurs
67 * pour la vue prive/liste/auteurs.html
68 *
69 * @param <type> $p
70 * @return <type>
71 */
72 function balise_COMPTEUR_ARTICLES_dist($p) {
73 return rindex_pile($p, 'compteur_articles', 'compteur_articles_filtres');
74 }
75
76
77 /**
78 * Calculer l'initiale d'un nom
79 *
80 * @param <type> $nom
81 * @return <type>
82 */
83 function initiale($nom){
84 return spip_substr(trim(strtoupper($nom)),0,1);
85 }
86
87 /**
88 * Afficher l'initiale pour la navigation par lettres
89 *
90 * @staticvar string $memo
91 * @param <type> $url
92 * @param <type> $initiale
93 * @param <type> $compteur
94 * @param <type> $debut
95 * @param <type> $pas
96 * @return <type>
97 */
98 function afficher_initiale($url,$initiale,$compteur,$debut,$pas){
99 static $memo = null;
100 $res = '';
101 if (!$memo
102 OR (!$initiale AND !$url)
103 OR ($initiale!==$memo['initiale'])
104 ){
105 $newcompt = intval(floor(($compteur-1)/$pas)*$pas);
106 #var_dump("$initiale:$newcompt");
107 if ($memo){
108 $on = (($memo['compteur']<=$debut)
109 AND (
110 $newcompt>$debut OR ($newcompt==$debut AND $newcompt==$memo['compteur'])
111 ));
112 $res = lien_ou_expose($memo['url'],$memo['initiale'],$on,'lien_pagination');
113 }
114 if ($initiale)
115 $memo = array('initiale'=>$initiale,'url'=>parametre_url($url,'i',$initiale),'compteur'=>$newcompt);
116 }
117 return $res;
118 }
119
120 /**
121 * Calculer l'url vers la messagerie :
122 * - si l'auteur accepte les messages internes et que la messagerie est activee
123 * et qu'il est en ligne, on propose le lien vers la messagerie interne
124 * - sinon on propose un lien vers un email si possible
125 * - sinon rien
126 *
127 * @staticvar string $time
128 * @param int $id_auteur
129 * @param date $en_ligne
130 * @param string $statut
131 * @param string $imessage
132 * @param string $email
133 * @return string
134 */
135 function auteur_lien_messagerie($id_auteur,$en_ligne,$statut,$imessage,$email){
136 static $time = null;
137 if (!in_array($statut, array('0minirezo', '1comite')))
138 return '';
139
140 if (is_null($time))
141 $time = time();
142 $parti = (($time-strtotime($en_ligne))>15*60);
143
144 if ($imessage != 'non' AND !$parti AND $GLOBALS['meta']['messagerie_agenda'] != 'non')
145 return generer_action_auteur("editer_message","normal/$id_auteur");
146
147 elseif (strlen($email) AND autoriser('voir', 'auteur', $id_auteur))
148 return 'mailto:' . $email;
149
150 else
151 return '';
152
153 return "<a href='$href' title=\""
154 . _T('info_envoyer_message_prive')
155 . "\" class='message'>&nbsp;</a>";
156 }
157 ?>