source: spip-zone/_plugins_/_test_/spip-listes/spip-listes_1_9_3/exec/spiplistes_maintenance.php @ 24626

Last change on this file since 24626 was 24626, checked in by paladin@…, 11 years ago

optimisation de la boite info du plugin. les numeros de version en double et autres infos pertubaient certains (et n'apportaient pas grand chose)

  • Property svn:eol-style set to LF
  • Property svn:keywords set to LastChangedBy LastChangedDate LastChangedRevision
File size: 12.3 KB
Line 
1<?php
2
3// exec/spiplistes_maintenance.php
4// _SPIPLISTES_EXEC_MAINTENANCE
5
6// From: paladin@quesaco.org
7// $LastChangedRevision: 24626 $
8// $LastChangedBy: paladin@quesaco.org $
9// $LastChangedDate: 2008-11-25 08:46:45 +0000 (Tue, 25 Nov 2008) $
10
11if (!defined("_ECRIRE_INC_VERSION")) return;
12
13include_spip('inc/spiplistes_api_globales');
14include_spip('inc/spiplistes_api_courrier');
15
16function exec_spiplistes_maintenance () {
17
18        include_spip('inc/distant');
19        include_spip('inc/meta');
20        include_spip('inc/config');
21        include_spip('inc/spiplistes_api');
22        include_spip('inc/spiplistes_api_presentation');
23
24        global $connect_statut
25                , $connect_toutes_rubriques
26                , $connect_id_auteur
27                , $couleur_foncee
28                , $spip_lang_right
29                ;
30        // la globale de connect_id_auteur est string
31        // c'est un entier qu'il faut envoyer a autoriser()
32        $connect_id_auteur = intval($GLOBALS['connect_id_auteur']);
33       
34        // initialise les variables postees par le formulaire
35        foreach(array_merge(
36                array(
37                        'btn_supprimer_courriers', 'btn_reset_listes', 'btn_supprimer_listes'
38                        , 'btn_supprimer_formats', 'confirmer_supprimer_formats'
39                )) as $key) {
40                $$key = _request($key);
41        }
42       
43        // la maintenance spiplistes est reservee a l'admin principal
44        $flag_autorise = autoriser('webmestre','','',$connect_id_auteur);
45       
46        $tous_les_statuts_courriers = array(_SPIPLISTES_COURRIER_STATUT_REDAC, _SPIPLISTES_COURRIER_STATUT_READY
47                        , _SPIPLISTES_COURRIER_STATUT_ENCOURS
48                        , _SPIPLISTES_COURRIER_STATUT_AUTO, _SPIPLISTES_COURRIER_STATUT_PUBLIE
49                        , _SPIPLISTES_COURRIER_STATUT_VIDE, _SPIPLISTES_COURRIER_STATUT_IGNORE
50                        , _SPIPLISTES_COURRIER_STATUT_STOPE, _SPIPLISTES_COURRIER_STATUT_ERREUR
51                        );
52
53        $msg_maintenance = array();
54       
55        $sql_formats_where = explode(";", _SPIPLISTES_FORMATS_ALLOWED);
56        foreach($sql_formats_where as $key => $value) {
57                $sql_formats_where[$key] = sql_quote($value);
58        }
59        $sql_formats_where = ""
60                . "`spip_listes_format`="
61                . implode(" OR `spip_listes_format`=", $sql_formats_where)
62                ;
63       
64        /////////////////
65        // Faire ce qui est demande par le formulaire
66        if($flag_autorise) {
67       
68                $msg_ok = "<span style='color:green;'>"._T('pass_ok');
69                $msg_bad = "<span style='font-weight:bold;color:red;'>"._T('pass_erreur');
70                $msg_end = "</span>\n";
71               
72                // les courriers
73                if($btn_supprimer_courriers) {
74                        foreach($tous_les_statuts_courriers as $statut) {
75                                if(_request("supprimer_courriers_$statut")) {
76                                        if($statut == _SPIPLISTES_COURRIER_STATUT_ENCOURS) {
77                                                // supprime d'abord de la queue d'envoi
78                                                spiplistes_courrier_supprimer_queue_envois('statut', $statut);
79                                                spiplistes_log("RESET spool ID_COURRIER #$id_courrier by ID_AUTEUR #$connect_id_auteur");
80                                        }
81                                        // supprime le courrier
82                                        $msg = 
83                                                (
84                                                        spiplistes_courrier_supprimer('statut', $statut)
85                                                ) 
86                                                ? $msg_ok 
87                                                : $msg_bad
88                                                ;
89                                        $msg_maintenance[] = _T('spiplistes:Suppression_de')." : ".spiplistes_items_get_item('tab_t', $statut)."... : ".$msg.$msg_end;
90                                        spiplistes_log("DELETE courrier ID_COURRIER #$id_courrier by ID_AUTEUR #$connect_id_auteur");
91                                }
92                        }
93                }
94               
95                // les listes en chronos a repasser en non-chrono
96                // en realite', conserve le statut mais supprime la date d'envoi
97                // ainsi, la trieuse ne preparera pas le courrier
98                if($btn_reset_listes) {
99                        foreach(spiplistes_listes_select("id_liste", "message_auto='oui'") as $row) {
100                                $id_liste = intval($row['id_liste']);
101                                $sql_table = "spip_listes";
102                                $sql_champs = array('message_auto' => 'non', 'date' => '');
103                                $sql_where = "id_liste=$id_liste";
104                                if(_request("reset_liste_$id_liste")) {
105                                        $msg =
106                                                (
107                                                // reset liste
108                                                        sql_updateq($sql_table, $sql_champs, $sql_where)
109                                                )
110                                                ?       $msg_ok
111                                                :       $msg_bad
112                                                ;
113                                        $msg_maintenance[] = _T('spiplistes:annulation_chrono_')." : ID_LISTE #$id_liste : ".$msg.$msg_end;
114                                        spiplistes_log("RESET liste ID_LISTE #$id_liste by ID_AUTEUR #$connect_id_auteur");
115                                }
116                        }
117                }
118               
119                // les listes (global)
120                if($btn_supprimer_listes) {
121                        foreach(spiplistes_listes_select("id_liste,titre") as $row) {
122                                $titre = $row['titre'];
123                                $id_liste = intval($row['id_liste']);
124                                if(_request("supprimer_liste_$id_liste")) {
125                                        $sql_where = "id_liste=".sql_quote($id_liste);
126                                        $msg =
127                                                spiplistes_listes_liste_supprimer($id_liste)
128                                                ?       $msg_ok
129                                                :       $msg_bad
130                                                ;
131                                        $msg_maintenance[] = _T('spiplistes:Suppression_de')." : ".$titre."... : ".$msg.$msg_end;
132                                        spiplistes_log("DELETE liste ID_LISTE #$id_liste by ID_AUTEUR #$connect_id_auteur");
133                                }
134                        }
135                }
136               
137                // les formats
138                if($btn_supprimer_formats && $confirmer_supprimer_formats) {
139                        $msg =
140                                (
141                                        // vider la table des formats connus de spiplistes
142                                        sql_delete("spip_auteurs_elargis", $sql_formats_where)
143                                )
144                                ?       $msg_ok
145                                :       $msg_bad
146                                ;
147                        $objet = array('objet' => _T('spiplistes:des_formats'));
148                        $msg_maintenance[] = _T('spiplistes:suppression_', $objet)." : ".$msg.$msg_end;
149                        spiplistes_log("DELETE formats "._SPIPLISTES_FORMATS_ALLOWED." by ID_AUTEUR #$connect_id_auteur");
150                }
151        }
152       
153        // compter les listes
154        $nb_listes = spiplistes_listes_compter();
155        $nb_listes_desc = 
156                                                ($nb_listes==1)
157                                                ? _T('spiplistes:info_1_liste')
158                                                : "$nb_listes "._T('spiplistes:info_liste_2')
159                                                ;
160        $listes_array = spiplistes_listes_select("id_liste,statut,titre,message_auto");
161        // listes auto (crhono) compte'es a part
162        $nb_listes_auto = 0;
163        foreach($listes_array as $row) {
164                if($row['message_auto']=='oui') {
165                        $nb_listes_auto++;
166                }
167        }
168       
169        // compter les formats (les abonnes ayant de'fini un format)
170        $nb_abonnes_formats = sql_fetsel("COUNT(id) as n", "spip_auteurs_elargis", $sql_formats_where);
171        $nb_abonnes_formats = $nb_abonnes_formats['n'];
172        $nb_abonnes_formats_desc = 
173                                        ($nb_abonnes_formats==1)
174                                        ? _T('spiplistes:info_1_abonne')
175                                        : "$nb_abonnes_formats "._T('spiplistes:info_abonnes')
176                                        ;
177
178        $maintenance_url_action = generer_url_ecrire(_SPIPLISTES_EXEC_MAINTENANCE);
179       
180////////////////////////////////////
181// PAGE CONTENU
182////////////////////////////////////
183
184        $titre_page = _T('titre_admin_tech');
185        // Permet entre autres d'ajouter les classes a' la page : <body class='$rubrique $sous_rubrique'>
186        $rubrique = _SPIPLISTES_PREFIX;
187        $sous_rubrique = "maintenance";
188
189        $commencer_page = charger_fonction('commencer_page', 'inc');
190        echo($commencer_page(_T('spiplistes:spip_listes') . " - " . trim($titre_page), $rubrique, $sous_rubrique));
191
192        if(!$flag_autorise) {
193                die (spiplistes_terminer_page_non_autorisee() . fin_page());
194        }
195
196        $page_result = ""
197                . "<br /><br />\n"
198                . spiplistes_gros_titre($titre_page, '', true)
199                . spiplistes_onglets(_SPIPLISTES_RUBRIQUE, $sous_rubrique)
200                . debut_gauche($rubrique, true)
201                . spiplistes_boite_meta_info(_SPIPLISTES_PREFIX)
202                . creer_colonne_droite($rubrique, true)
203                . spiplistes_boite_raccourcis(true)
204                . spiplistes_boite_autocron() 
205                . spiplistes_boite_info_spiplistes(true)
206                . debut_droite($rubrique, true)
207                ;
208       
209        if(count($msg_maintenance)) {
210                $page_result .= "<ul style='padding-left:2ex;margin-bottom:2em;'>";
211                foreach($msg_maintenance as $texte) {
212                        $page_result .= "<li>$texte</li>\n";
213                }
214                $page_result .= "</ul>\n";
215        }
216
217        //////////////////////////////////////////////////////
218        // Boite de maintenance du casier a courriers
219        $objet = array('objet' => _T('spiplistes:des_courriers'));
220        $page_result .= ""
221                . debut_cadre_trait_couleur("administration-24.gif", true, "", _T('spiplistes:maintenance_objet', $objet))
222                . spiplistes_form_debut ($maintenance_url_action, true)
223                . spiplistes_form_description(_T('spiplistes:conseil_sauvegarder_avant', $objet), true)
224                ;
225        if(spiplistes_courriers_statut_compter()) {
226                $page_result .= spiplistes_form_fieldset_debut(_T('spiplistes:suppression_', $objet), true);
227                foreach($tous_les_statuts_courriers as $statut) {
228                        if(spiplistes_courriers_statut_compter($statut)) {
229                                $titre = spiplistes_items_get_item('tab_t', $statut);
230                                $page_result .= spiplistes_form_input_checkbox ('supprimer_courriers_'.$statut, $statut, $titre, false, true);
231                        }
232                }
233                $page_result .= spiplistes_form_fieldset_fin(true);
234        }
235        else {
236                $page_result .= spiplistes_form_message(_T('spiplistes:Casier_vide'), true);
237        }
238        $page_result .= ""
239                . spiplistes_form_bouton_valider ('btn_supprimer_courriers')
240                . spiplistes_form_fin(true)
241                . fin_cadre_trait_couleur(true)
242                ;
243
244        /////////////////////////////////////////
245        // boite de maintenance des listes : la date des listes sont remises a zero (supprimer les chronos)
246        $objet = array('objet' => _T('spiplistes:des_listes'));
247        $page_result .= ""
248                . debut_cadre_trait_couleur("administration-24.gif", true, "", _T('spiplistes:maintenance_objet', $objet))
249                . debut_cadre_relief("", true, "", _T('spiplistes:Supprimer_les_chronos'))
250                ;
251        if($nb_listes_auto) {
252                $page_result .= ""
253                        . spiplistes_form_debut ($maintenance_url_action, true)
254                        . "<p class='verdana2'>"._T('spiplistes:suppression_chronos_desc')."</p>\n"
255                        . spiplistes_form_description(_T('spiplistes:conseil_sauvegarder_avant', $objet), true)
256                        . spiplistes_form_fieldset_debut (
257                                _T('spiplistes:suppression_chronos_', $objet).spiplistes_fieldset_legend_detail(_T('spiplistes:total').": $nb_listes_auto / $nb_listes_desc", true)
258                                , true)
259                ;
260                foreach($listes_array as $row) {
261                        if($row['message_auto']=='oui') {
262                                $titre = $row['titre'];
263                                $statut = "";
264                                $id_liste = intval($row['id_liste']);
265                                $page_result .= spiplistes_form_input_checkbox ('reset_liste_'.$id_liste, $id_liste, $statut.$titre, false, true);
266                        }
267                }
268                $page_result .= ""
269                        . spiplistes_form_fieldset_fin(true)
270                        . spiplistes_form_bouton_valider('btn_reset_listes')
271                        . spiplistes_form_fin(true)
272                        ;
273        }
274        else {
275                $page_result .= spiplistes_form_message(_T('spiplistes:pas_de_liste_en_auto'), true);
276        }
277        $page_result .= ""
278                . fin_cadre_relief(true)
279                ;
280                /////////////////////////////////////////
281                // supprimer les listes
282        $page_result .= ""
283                . debut_cadre_relief("", true, "", _T('spiplistes:Supprimer_les_listes'))
284                ;
285        if($nb_listes) {
286                $page_result .= ""
287                        . spiplistes_form_debut ($maintenance_url_action, true)
288                        . spiplistes_form_description(_T('spiplistes:conseil_sauvegarder_avant', $objet), true)
289                        . spiplistes_form_fieldset_debut (
290                                _T('spiplistes:suppression_', $objet).spiplistes_fieldset_legend_detail(_T('spiplistes:total').": $nb_listes_desc", true)
291                                , true)
292                        ;
293                foreach($listes_array as $row) {
294                        $id_liste = intval($row['id_liste']);
295                        $titre = $row['titre'];
296                        $statut = "<img src='".spiplistes_items_get_item("puce", $row['statut'])."' alt='".spiplistes_items_get_item("alt", $row['statut'])."' width='9' height='9' style='margin: 0 0.25ex' />";
297                        $page_result .= spiplistes_form_input_checkbox ('supprimer_liste_'.$id_liste, $id_liste, $statut.$titre, false, true);
298                }
299                $page_result .= ""
300                        . spiplistes_form_fieldset_fin(true)
301                        . spiplistes_form_bouton_valider ('btn_supprimer_listes')
302                        . spiplistes_form_fin(true)
303                        ;
304        }
305        else {
306                $page_result .= spiplistes_form_message(_T('spiplistes:pas_de_liste'), true);
307        }
308        $page_result .= ""
309                . fin_cadre_relief(true)
310                . fin_cadre_trait_couleur(true)
311                ;
312
313        //////////////////////////////////////////////////////
314        // Boite maintenance des formats
315        $objet = array('objet' => _T('spiplistes:des_formats'));
316        $page_result .= ""
317                . debut_cadre_trait_couleur("administration-24.gif", true, "", _T('spiplistes:maintenance_objet', $objet))
318                ;
319        if($nb_abonnes_formats > 0) {
320                $page_result .= ""
321                        . spiplistes_form_debut ($maintenance_url_action, true)
322                        . spiplistes_form_description(_T('spiplistes:conseil_sauvegarder_avant', $objet), true)
323                        . spiplistes_form_fieldset_debut (
324                                _T('spiplistes:suppression_', $objet).spiplistes_fieldset_legend_detail(_T('spiplistes:total').": $nb_abonnes_formats_desc", true)
325                                , true) 
326                        . spiplistes_form_input_checkbox ('confirmer_supprimer_formats', 'oui', _T('spiplistes:confirmer_supprimer_formats'), false, true)
327                        . spiplistes_form_fieldset_fin(true)
328                        . spiplistes_form_bouton_valider('btn_supprimer_formats')
329                        . spiplistes_form_fin(true)
330                        ;
331        } else {
332                $page_result .= spiplistes_form_message(_T('spiplistes:pas_de_format'), true);
333        }
334        $page_result .= ""
335                . fin_cadre_trait_couleur(true)
336                ;
337       
338        // Fin de la page
339        echo($page_result);
340        echo spiplistes_html_signature(_SPIPLISTES_PREFIX), fin_gauche(), fin_page();
341       
342} // exec_spiplistes_maintenance()
343
344/******************************/
345
346// CP-20080329: demande la liste des listes
347// retourne un tableau des listes
348function spiplistes_listes_select ($sql_select, $sql_where = "") {
349        $result = array();
350        if(!empty($sql_select) && ($r = sql_select($sql_select, "spip_listes", $sql_where))) {
351                while($row = sql_fetch($r)) {
352                        $result[] = $row;
353                }
354        }
355        return($result);
356}
357
358//
359?>
Note: See TracBrowser for help on using the repository browser.