source: spip-zone/_core_/plugins/organiseur/organiseur_fonctions.php

Last change on this file was 113294, checked in by spip.franck@…, 2 months ago

Il parait que le futur c'est maintenant :-D

File size: 5.2 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2019                                                *
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
13if (!defined('_ECRIRE_INC_VERSION')) {
14        return;
15}
16
17
18function 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
65function 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 **/
86function 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 */
103function 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 */
123function 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 */
143function 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
165function 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
172function 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
179function 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}
Note: See TracBrowser for help on using the repository browser.