[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins-dist / organiseur / organiseur_fonctions.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2016 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined('_ECRIRE_INC_VERSION')) {
14 return;
15 }
16
17
18 function critere_MESSAGES_destinataire_dist($idb, &$boucles, $crit) {
19 $boucle = &$boucles[$idb];
20 $_auteur = calculer_liste($crit->param[0], array(), $boucles, $boucle->id_parent);
21
22 $boucle->join['auteurs_liens'] = array(
23 "'" . $boucle->id_table . "'",
24 "'id_objet'",
25 "'" . $boucle->primary . "'",
26 "'auteurs_liens.objet=\'message\' AND auteurs_liens.id_auteur='.intval($_auteur)"
27 );
28 $boucle->from['auteurs_liens'] = 'spip_auteurs_liens';
29 $boucle->from_type['auteurs_liens'] = 'LEFT';
30 $where =
31 array(
32 "'OR'",
33 array(
34 "'AND'",
35 array("'!='", "'" . $boucle->id_table . ".id_auteur'", "intval($_auteur)"),
36 array(
37 "'AND'",
38 array("'='", "'auteurs_liens.id_auteur'", "intval($_auteur)"),
39 array("'!='", "'auteurs_liens.vu'", "'\'poub\''"),
40 ),
41 ),
42 array(
43 "'OR'",
44 array("'='", "'" . $boucle->id_table . ".type'", "sql_quote('affich')"),
45 array(
46 "'AND'",
47 array("'='", "'" . $boucle->id_table . ".type'", "sql_quote('pb')"),
48 array("'='", "'" . $boucle->id_table . ".id_auteur'", "intval($_auteur)"),
49 )
50 )
51 );
52 $not = $crit->not;
53
54 if ($crit->cond) {
55 $where = array("'?'", "strlen($_auteur)", $where, "'1=1'");
56 }
57
58 if ($not) {
59 $where = array("'NOT'", $where);
60 }
61
62 $boucle->where[] = $where;
63 }
64
65 function critere_MESSAGES_non_lu_dist($idb, &$boucles, $crit) {
66 $boucle = &$boucles[$idb];
67 $boucle->where[] =
68 array(
69 "'OR'",
70 "'auteurs_liens.vu IS NULL'",
71 "sql_in('auteurs_liens.vu',array('poub','oui'),'NOT',\$connect)"
72 );
73 }
74
75 /**
76 * Fonction privee pour mutualiser de code des criteres_MESSAGES_rv_*
77 * Retourne le code php pour obtenir la date de reference de comparaison
78 * des evenements a trouver
79 *
80 * @param string $idb
81 * @param object $boucles
82 * @param object $crit
83 *
84 * @return string code PHP concernant la date.
85 **/
86 function organiseur_calculer_date_reference($idb, &$boucles, $crit) {
87 if (isset($crit->param[0])) {
88 return calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
89 } else {
90 return "date('Y-m-d H:i:00')";
91 }
92 }
93
94
95 /**
96 * {rv_a_venir}
97 * {rv_a_venir #ENV{date}}
98 *
99 * @param string $idb
100 * @param object $boucles
101 * @param object $crit
102 */
103 function critere_MESSAGES_rv_a_venir_dist($idb, &$boucles, $crit) {
104 $boucle = &$boucles[$idb];
105 $id_table = $boucle->id_table;
106
107 $_dateref = organiseur_calculer_date_reference($idb, $boucles, $crit);
108 $_date = "$id_table." . (isset($boucle->show['date']) ? $boucle->show['date'] : 'date_debut');
109 $op = $crit->not ? '<=' : '>';
110 $where = array("'$op'", "'$_date'", "sql_quote($_dateref)");
111
112 $boucle->where[] = $where;
113 }
114
115 /**
116 * {rv_passe}
117 * {rv_passe #ENV{date}}
118 *
119 * @param string $idb
120 * @param object $boucles
121 * @param object $crit
122 */
123 function critere_MESSAGES_rv_passe_dist($idb, &$boucles, $crit) {
124 $boucle = &$boucles[$idb];
125 $id_table = $boucle->id_table;
126
127 $_dateref = organiseur_calculer_date_reference($idb, $boucles, $crit);
128 $_date = "$id_table.date_fin";
129 $op = $crit->not ? '>=' : '<';
130
131 $where = array("'$op'", "'$_date'", "sql_quote($_dateref)");
132 $boucle->where[] = $where;
133 }
134
135 /**
136 * {rv_en_cours}
137 * {rv_en_cours #ENV{date}}
138 *
139 * @param string $idb
140 * @param object $boucles
141 * @param object $crit
142 */
143 function critere_MESSAGES_rv_en_cours_dist($idb, &$boucles, $crit) {
144 $boucle = &$boucles[$idb];
145 $id_table = $boucle->id_table;
146
147 $_dateref = organiseur_calculer_date_reference($idb, $boucles, $crit);
148 $_date_debut = "$id_table." . (isset($boucle->show['date']) ? $boucle->show['date'] : 'date_debut');
149 $_date_fin = "$id_table.date_fin";
150
151 $where =
152 array(
153 "'AND'",
154 array("'<='", "'$_date_debut'", "sql_quote($_dateref)"),
155 array("'>='", "'$_date_fin'", "sql_quote($_dateref)")
156 );
157
158 if ($crit->not) {
159 $where = array("'NOT'", $where);
160 }
161 $boucle->where[] = $where;
162 }
163
164
165 function organiseur_icone_message($type, $taille = 24) {
166 $icone = array('pb' => 'pensebete', 'affich' => 'annonce');
167 $icone = isset($icone[$type]) ? $icone[$type] : 'message';
168
169 return "$icone-$taille.png";
170 }
171
172 function organiseur_texte_modifier_message($type) {
173 $texte = array('pb' => 'organiseur:icone_modifier_pensebete', 'affich' => 'organiseur:icone_modifier_annonce');
174 $texte = isset($texte[$type]) ? $texte[$type] : 'organiseur:icone_modifier_message';
175
176 return _T($texte);
177 }
178
179 function organiseur_texte_nouveau_message($type) {
180 $texte = array(
181 'pb' => 'organiseur:icone_ecrire_nouveau_pensebete',
182 'affich' => 'organiseur:icone_ecrire_nouvelle_annonce'
183 );
184 $texte = isset($texte[$type]) ? $texte[$type] : 'organiseur:icone_ecrire_nouveau_message';
185
186 return _T($texte);
187 }