[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_www.git] / www / plugins-dist / organiseur / organiseur_pipelines.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')) return;
14
15
16 /**
17 * Lister les tables a ne pas inclure dans un export de BDD
18 * ici se ramener a tester l'admin restreint est un abus
19 * car cela presume qu'un admin restreint ne peut pas faire de sauvegarde
20 * complete, alors que l'intention est d'exclure les messages
21 * des sauvegardes partielles que peuvent realiser les admin restreint
22 *
23 * *a revoir*
24 *
25 * @param array $EXPORT_tables_noexport
26 * @return array
27 */
28 function organiseur_lister_tables_noexport($EXPORT_tables_noexport){
29 if (!$GLOBALS['connect_toutes_rubriques']){
30 $EXPORT_tables_noexport[]='spip_messages';
31 #$EXPORT_tables_noexport[]='spip_auteurs_liens'; // where objet='message'
32 }
33 return $EXPORT_tables_noexport;
34 }
35
36 /**
37 * Optimiser les liens morts dans la base de donnees
38 *
39 * @param array $flux
40 * @return array
41 */
42 function organiseur_optimiser_base_disparus($flux){
43 //
44 // Messages prives
45 //
46
47 # supprimer les messages lies a un auteur disparu
48 $res = sql_select("M.id_message AS id",
49 "spip_messages AS M
50 LEFT JOIN spip_auteurs AS A
51 ON A.id_auteur=M.id_auteur",
52 "A.id_auteur IS NULL");
53
54 $flux['data'] += optimiser_sansref('spip_messages', 'id_message', $res);
55
56 return $flux;
57 }
58
59 /**
60 * Generer les alertes message recu a destination de l'auteur
61 * concerne par l'appel
62 *
63 * @param array $flux
64 * @return array
65 */
66 function organiseur_alertes_auteur($flux) {
67
68 $id_auteur = $flux['args']['id_auteur'];
69
70 $result_messages = sql_allfetsel("M.id_message", "spip_messages AS M LEFT JOIN spip_auteurs_liens AS L ON (L.objet='message' AND L.id_objet=M.id_message)", "L.id_auteur=".intval($id_auteur)." AND vu='non' AND statut='publie' AND type='normal'");
71 $total_messages = count($result_messages);
72 if ($total_messages == 1) {
73 $row = reset($result_messages);
74 $id_message=$row['id_message'];
75 $flux['data'][] = "<a href='" . generer_url_ecrire("message","id_message=$id_message") . "'>"._T('organiseur:info_1_message_nonlu')."</a>";
76 }
77 elseif ($total_messages > 1)
78 $flux['data'][] = "<a href='" . generer_url_ecrire("messages") . "'>"._T('organiseur:info_nb_messages_nonlus', array('nb' => $total_messages))."</a>";
79
80 return $flux;
81 }
82
83 /**
84 * Afficher les interventions et objets en lien
85 * avec un auteur (sur sa page)
86 *
87 * @param array $flux
88 * @return array
89 */
90 function organiseur_affiche_auteurs_interventions($flux){
91
92 if ($id_auteur = intval($flux['args']['id_auteur'])){
93 include_spip('inc/message_select');
94 // Messages de l'auteur et discussions en cours
95 if ($GLOBALS['meta']['messagerie_agenda'] != 'non'
96 AND $id_auteur != $GLOBALS['visiteur_session']['id_auteur']
97 AND autoriser('ecrire', '', '', $flux['args']['auteur'])
98 ) {
99 $flux['data'] .= recuperer_fond('prive/squelettes/inclure/organiseur-interventions',array('id_auteur'=>$id_auteur));
100 }
101 }
102 return $flux;
103 }
104
105 /**
106 * Declarer les metas de configuration de l'agenda/messagerie
107 * @param array $metas
108 * @return array
109 */
110 function organiseur_configurer_liste_metas($metas){
111 $metas['messagerie_agenda'] = 'oui';
112 return $metas;
113 }
114
115 /**
116 * Inserer la css de l'agenda dans l'espace prive (hum)
117 * @param string $head
118 * @return string
119 */
120 function organiseur_header_prive($head){
121 // CSS calendrier
122 if ($GLOBALS['meta']['messagerie_agenda'] != 'non')
123 $head .= '<link rel="stylesheet" type="text/css" href="'
124 . url_absolue(find_in_path('calendrier.css')) .'" />' . "\n";
125
126 return $head;
127 }
128
129 /**
130 * Afficher agenda, messages et annonces sur la page d'accueil
131 *
132 * @param array $flux
133 * @return array
134 */
135 function organiseur_affiche_droite($flux){
136 if ($flux['args']['exec']=='accueil'){
137 $flux['data'] .= recuperer_fond(
138 'prive/squelettes/inclure/organiseur-rappels',
139 array(
140 'id_auteur'=>$GLOBALS['visiteur_session']['id_auteur'],
141 'last' => $GLOBALS['visiteur_session']['quand'],
142 )
143 );
144 }
145 return $flux;
146 }
147
148 /**
149 * Afficher le formulaire de configuration sur la page concernee
150 *
151 * @param array $flux
152 * @return array
153 */
154 function organiseur_affiche_milieu($flux){
155 if ($flux['args']['exec']=='configurer_interactions'){
156 $c = recuperer_fond('prive/squelettes/inclure/configurer_messagerie',array());
157 if ($p = strpos($flux['data'],'<!--contenu_prive-->'))
158 $flux['data'] = substr_replace($flux['data'],$c,$p,0);
159 else
160 $flux['data'] .= $c;
161 }
162 return $flux;
163 }
164
165 /**
166 * Diffuser un message qui passe en publie (== a envoyer)
167 *
168 * @param array $flux
169 * @return array
170 */
171 function organiseur_post_edition($flux){
172
173 if ($flux['args']['table']=='spip_messages'
174 AND $flux['args']['action']=='instituer'
175 AND $flux['data']['statut']=='publie'
176 AND $flux['args']['statut_ancien']!='publie'
177 ){
178 $id_message = $flux['args']['id_objet'];
179 $row = sql_fetsel('destinataires,id_auteur,titre,texte','spip_messages','id_message='.intval($id_message));
180 if ($row){
181 include_spip('inc/messages');
182 list($auteurs_dest,$email_dests) = messagerie_destiner(explode(',',$row['destinataires']));
183
184 // diffuser le message en interne
185 messagerie_diffuser_message($id_message, $auteurs_dest);
186 // diffuser le message en externe
187 messagerie_mailer_message($id_message, $email_dests);
188 }
189 }
190 return $flux;
191 }