source: trunk/spip/esqueleto-redcta/plugins/spip-listes_1_9_2/exec/listes.php @ 90

Last change on this file since 90 was 90, checked in by guille, 15 years ago

importacion de spip-listes-1_9_2

File size: 18.9 KB
Line 
1<?php
2
3/******************************************************************************************/
4/* SPIP-listes est un systï¿œe de gestion de listes d'information par email pour SPIP      */
5/* Copyright (C) 2004 Vincent CARON  v.caron<at>laposte.net , http://bloog.net            */
6/*                                                                                        */
7/* Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes */
8/* de la Licence Publique Gᅵᅵale GNU publiï¿œ par la Free Software Foundation            */
9/* (version 2).                                                                           */
10/*                                                                                        */
11/* Ce programme est distribuï¿œcar potentiellement utile, mais SANS AUCUNE GARANTIE,       */
12/* ni explicite ni implicite, y compris les garanties de commercialisation ou             */
13/* d'adaptation dans un but spï¿œifique. Reportez-vous ï¿œla Licence Publique Gᅵᅵale GNU  */
14/* pour plus de dï¿œails.                                                                  */
15/*                                                                                        */
16/* Vous devez avoir reï¿œ une copie de la Licence Publique Gᅵᅵale GNU                    */
17/* en mï¿œe temps que ce programme ; si ce n'est pas le cas, ï¿œrivez ï¿œla                  */
18/* Free Software Foundation,                                                              */
19/* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, ï¿œats-Unis.                   */
20/******************************************************************************************/
21
22if (!defined("_ECRIRE_INC_VERSION")) return;
23
24include_spip('inc/presentation');
25include_spip('inc/mots');
26include_spip('inc/lang');
27include_spip('inc/affichage');
28include_spip('base/spip-listes');
29
30function exec_listes_dist(){
31
32        global $connect_statut;
33        global $connect_toutes_rubriques;
34        global $connect_id_auteur;
35        global $spip_lang_left,$spip_lang_right;
36
37        $new = _request('new');
38        $id_liste = _request('id_liste');
39        $titre = _request('titre');
40        $texte = _request('texte');
41        $pied_page = _request('pied_page');
42        //on peut plus ajouter un auteur la c buggue
43        //global $flag_auteur;
44        $creer_auteur = _request('creer_auteur');
45        //global $ajout_auteur;
46        $supp_auteur = _request('supp_auteur');
47        $cherche_auteur = _request('cherche_auteur');
48        //global $nouv_auteur;
49        $changer_lang = _request('changer_lang');
50       
51        $Valider_auto = _request('Valider_auto');
52        $auto = _request('auto');
53        $changer_extra = _request('changer_extra');
54        $email_envoi = _request('email_envoi');
55        $patron = _request('patron');
56        $periode = _request('periode');
57        $sujet_message = _request('sujet_message');
58        $envoyer_direct = _request('envoyer_direct');
59       
60        $debut = _request('debut');
61 
62        $ok_nouveau_statut  = _request('ok_nouveau_statut');
63        $statut_nouv = _request('statut_nouv');
64 
65        $nomsite=lire_meta("nom_site"); 
66        $urlsite=lire_meta("adresse_site"); 
67
68 
69        // Admin SPIP-Listes
70        echo debut_page(_T('spiplistes:spip_listes'), "redacteurs", "spiplistes");
71
72        if ($connect_statut != "0minirezo" ) {
73                echo "<p><b>"._T('spiplistes:acces_a_la_page')."</b></p>";
74                echo fin_page();
75                exit;
76        }
77
78        if (($connect_statut == "0minirezo") OR ($connect_id_auteur == $id_auteur)) {
79                $statut_auteur=$statut;
80                spip_listes_onglets("messagerie", _T('spiplistes:spip_listes'));
81        }
82
83        // Creer une liste -----------------------------------------
84        ////
85
86        if ($id_liste==0) {
87                if ($new=='oui') {
88                        if ($titre=='') $titre = _T('spiplistes:liste_sans_titre');
89       
90                        spip_query("INSERT INTO spip_listes (statut, date, lang) VALUES ('inact', NOW(),"._q($langue_new).")");
91                        $id_liste = spip_insert_id();
92                        //Auteur de la liste (moderateur)
93                        spip_query("DELETE FROM spip_auteurs_mod_listes WHERE id_liste = "._q($id_liste));
94                        spip_query("INSERT INTO spip_auteurs_mod_listes (id_auteur, id_liste) VALUES ("._q($connect_id_auteur).","._q($id_liste).")");
95                        //abonner le moderateur a sa liste
96                        spip_query("DELETE FROM spip_auteurs_listes WHERE id_liste = "._q($id_liste).")");
97                        spip_query("INSERT INTO spip_auteurs_listes (id_auteur, id_liste) VALUES ("._q($connect_id_auteur).","._q($id_liste).")");
98                } 
99        }
100
101        debut_gauche();
102        echo debut_boite_info();
103
104        echo '<div align="center">
105        <font face="Verdana,Arial,Sans,sans-serif" size="1"><b>'._T('spiplistes:liste_numero').'&nbsp;:</b></font>
106        <br><font face="Verdana,Arial,Sans,sans-serif" size="6"><b>'.$id_liste.'</b></font>
107        </div>';
108
109        echo fin_boite_info();
110        spip_listes_raccourcis();
111        creer_colonne_droite();
112
113        debut_droite("messagerie");
114
115        //////////////////////////////////////////////////////
116        // Determiner les droits d'edition de la liste
117        //
118
119        $result = spip_query("SELECT statut, titre, maj FROM spip_listes WHERE id_liste="._q($id_liste));
120        if ($row = spip_fetch_array($result)) {
121                $statut_article = $row['statut'];
122                $titre_article = $row['titre'];
123                $maj = $row['maj'];
124        }
125        else {
126                $statut_article = '';
127        }
128
129        $result_auteur = spip_query("SELECT * FROM spip_auteurs_mod_listes WHERE id_liste="._q($id_liste)." AND id_auteur="._q($connect_id_auteur));
130
131        //
132        // Droits mieux structure que ca ?
133        //
134
135        $flag_auteur=true;
136        $flag_editable = ($flag_auteur AND ($statut_article == 'inact' OR $statut_article == 'liste' OR $statut_article == 'poublist'));
137
138        //
139        // Appliquer les modifications sur la liste
140        //
141
142        $ok_nouveau_statut = false;
143
144        //Modifier le statut de la liste
145        if ($statut_nouv) {
146                if ($flag_auteur) {
147                     //il faut etre admin et abonnï¿œpour modifer une liste
148                        if ($statut_nouv == 'liste' AND $statut_article == 'inact')
149                                $ok_nouveau_statut = true;
150                        else if ($statut_nouv == 'inact' AND $statut_article == 'poublist')
151                                $ok_nouveau_statut = true;
152                        else if ($statut_nouv == 'poublist' AND $statut_article == 'inact')
153                                $ok_nouveau_statut = true;
154                        else if ($statut_nouv == 'poublist' AND $statut_article == 'liste')
155                                $ok_nouveau_statut = true;
156                        else if ($statut_nouv == 'inact' AND $statut_article == 'liste')
157                                $ok_nouveau_statut = true;
158                        else if ($statut_nouv == 'liste' AND $statut_article == 'poublist')
159                                $ok_nouveau_statut = true;
160                }
161                if ($ok_nouveau_statut)
162                        $result = spip_query("UPDATE spip_listes SET statut="._q($statut_nouv)." WHERE id_liste="._q($id_liste));
163        }
164
165        //modifier la date
166        if ($jour=intval(_request('jour')) && $flag_editable) {
167                $mois = intval(_request('mois'));
168                if (($annee=intval(_request('annee'))) == "0000") $mois = "00";
169                if ($mois == "00") $jour = "00";
170                $result = spip_query("UPDATE spip_listes SET date='$annee-$mois-$jour' WHERE id_liste="._q($id_liste));
171        }
172
173        // Enregistrer les modifs sur la liste
174
175        if ($titre && !$ajout_forum && $flag_editable) {
176                $titre = corriger_caracteres($titre);
177                $descriptif = corriger_caracteres($descriptif);
178                $texte = corriger_caracteres($texte);
179                $pied_page = corriger_caracteres($pied_page);
180               
181                $result = spip_query("UPDATE spip_listes SET titre="._q($titre).",descriptif="._q($descriptif).",texte="._q($texte).",pied_page="._q($pied_page)." WHERE id_liste="._q($id_liste));
182                // afficher le nouveau titre dans la barre de fenetre
183                $titre_article = $titre;
184        }
185
186        if($changer_lang)
187                $result = spip_query("UPDATE spip_listes SET lang="._q($changer_lang)." WHERE id_liste="._q($id_liste));
188
189        // prendre en compte les modifs sur le message auto
190        if($Valider_auto){
191                if($auto == "oui"){
192                        $result = spip_query("UPDATE spip_listes SET message_auto='oui' WHERE id_liste="._q($id_liste));
193                        if($maj=="0000-00-00 00:00:00"){
194                                $result = spip_query("UPDATE spip_listes SET maj=NOW() WHERE id_liste="._q($id_liste));
195                        }
196                }
197                elseif ($auto == "non"){
198                        $result = spip_query("UPDATE spip_listes SET message_auto='non', maj='0000-00-00 00:00:00' WHERE id_liste="._q($id_liste));
199                }
200                if(email_valide($email_envoi)){
201                        $result = spip_query("UPDATE spip_listes SET email_envoi="._q($email_envoi)." WHERE id_liste="._q($id_liste));
202                }
203                if(($changer_extra == "oui") AND ($auto == "oui") ){
204                        $result = spip_query("UPDATE spip_listes SET patron="._q($patron).", periode="._q($periode).", titre_message="._q($sujet_message)." WHERE id_liste="._q($id_liste));
205                        if($envoyer_direct){
206                                $majnouv = (time() - ($periode * 3600*24));
207                                $result = spip_query("UPDATE spip_listes SET maj=FROM_UNIXTIME($majnouv), periode="._q($periode)." WHERE id_liste="._q($id_liste));
208                        }
209                }
210        }
211
212        //
213        // Lire la liste
214        //
215
216        $result = spip_query("SELECT * FROM spip_listes WHERE id_liste="._q($id_liste));
217
218        if ($row = spip_fetch_array($result)) {
219                $id_liste = $row["id_liste"];
220                $titre = $row["titre"];
221                $titre_message = $row["titre_message"];
222                $pied_page = $row["pied_page"];
223                $texte = $row["texte"];
224                $date = $row["date"];
225                $statut_article = $row["statut"];
226                $maj_nouv = $row["maj"];
227                $email_envoi=$row["email_envoi"];
228                $message_auto = $row["message_auto"];
229                $periode = $row["periode"];
230                $patron = $row["patron"];
231                $lang = $row["lang"];
232        }
233
234        changer_typo('','liste'.$id_liste);
235
236        echo debut_cadre_relief();
237        echo "<center>";
238
239        //
240        // Titre, surtitre, sous-titre
241        //
242
243        if($statut == 'liste') $logo_statut = 'puce-verte.gif';
244        if($statut == 'inact') $logo_statut = 'puce-blanche.gif';
245        if($statut == 'poublist') $logo_statut = 'puce-blanche.gif';
246
247        echo "\n<table cellpadding=0 cellspacing=0 border=0 width='100%'>";
248        echo "<tr width='100%'><td width='100%' valign='top'>";
249
250        gros_titre($titre, $logo_statut);
251
252        echo "<div style='margin:10px 0px 10px 0px'>";
253        echo justifier(propre($texte));
254        echo "</div>";
255       
256        echo "</td>";
257
258        if ($flag_editable) {
259                echo "<td><img src='"._DIR_IMG_PACK."rien.gif' width='5'></td>\n";
260                echo "<td align='center'>";
261                echo listes_edit_presentation($id_liste);
262                echo "</td>";
263        }
264        echo "</tr></table>\n";
265
266        echo fin_cadre_relief();
267
268        //////////////////////////////////////////////////////
269        // Modifier le statut de la liste
270        //
271
272        echo "
273        <script type='text/javascript'><!--
274        function change_bouton(selObj){
275                var selection=selObj.options[selObj.selectedIndex].value;
276                if (selection=='liste'){
277                        document.statut.src='"._DIR_IMG_PACK."puce-verte.gif';
278                }
279                if (selection=='inact'){
280                        document.statut.src='"._DIR_IMG_PACK."puce-blanche.gif';
281                }
282                if (selection=='poublist'){
283                        document.statut.src='"._DIR_IMG_PACK."puce-poubelle.gif';
284                }
285        }
286        // --></script>";
287
288        if ($connect_statut == '0minirezo' ) {
289                echo debut_cadre_relief("racine-site-24.gif");
290                echo "<form action='".generer_url_ecrire('listes',"id_liste=$id_liste")."' method='get'>";
291                echo "<input type='hidden' name='exec' value='listes' />";
292                echo "<input type='hidden' name='id_liste' value='$id_liste' />";
293
294                echo "<b>"._T('spiplistes:Cette_liste_est').": </b> ";
295               
296                echo "<select name='statut_nouv' size='1' class='fondl' onChange='change_bouton(this)'>";
297                echo "<option" . mySel("inact", $statut_article) ." style='background-color: white'>"._T('spiplistes:statut_interne')."\n";
298                echo "<option" . mySel("liste", $statut_article) . " style='background-color: #B4E8C5'>"._T('spiplistes:statut_publique')."\n";
299                echo "<option" . mySel("poublist", $statut_article) . " style='background:url("._DIR_IMG_PACK."rayures-sup.gif)'>"._T('texte_statut_poubelle')."\n";
300               
301                echo "</select>";
302                echo " \n";
303               
304                if ($statut_article=='liste') {
305                        echo "<img src='"._DIR_IMG_PACK."/puce-verte.gif' alt='' width='13' height='14' border='0' name='statut'>";
306                }
307                elseif ($statut_article=='inact') {
308                        echo "<img src='"._DIR_IMG_PACK."/puce-blanche.gif' alt='' width='13' height='14' border='0' name='statut'>";
309                }
310                elseif ($statut_article == 'poublist') {
311                        echo "<img src='"._DIR_IMG_PACK."/puce-poubelle.gif' alt='' width='13' height='14' border='0' name='statut'>";
312                }
313                echo " \n";
314               
315                echo "<input type='submit' name='Modifier' value='"._T('bouton_modifier')."' class='fondo' />";
316                echo aide ("artstatut");
317                echo "</form>"; 
318               
319                echo "<div style='margin:10px 0px 10px 0px'>";
320                echo menu_langues('changer_lang', $lang , _T('spiplistes:langue'),'', '');
321                echo "</div>";
322               
323                //regler email d'envoi de la liste
324                echo "<form action='".generer_url_ecrire('listes',"id_liste=$id_liste")."' method='post'>";
325                               
326                $email_defaut = entites_html(lire_meta("email_webmaster"));
327                $email_envoi = (email_valide($email_envoi)) ? $email_envoi : $email_defaut ;
328               
329                echo "<strong>";
330                echo _T('spiplistes:retour')."</strong><br />";
331               
332                echo "<p>"._T('spiplistes:adresse')."</p>";
333                echo "<input type='text' name='email_envoi' value=\"".$email_envoi."\" size='20' class='fondl' />&nbsp;";
334                               
335                if($id_liste)
336                        echo "<input type='hidden' name='id_liste' value='$id_liste' />";
337                if($new)
338                        echo "<input type='hidden' name='new' value='$new' />";
339                echo "<input type='submit' name='Valider_auto' value='"._T('bouton_valider')."' class='fondo' />";
340                               
341                echo "</form>";
342                               
343                echo fin_cadre_relief();
344        }
345
346        echo debut_cadre_relief(_DIR_PLUGIN_SPIPLISTES."img_pack/stock_timer.gif");
347        echo "<form action='".generer_url_ecrire('listes',"id_liste=$id_liste")."' method='post'>";
348         
349        // programmer un courrier automatique
350        echo "<h3>"._T('spiplistes:program')."</h3>";
351
352        echo "<table border=0 cellspacing=1 cellpadding=3 width=\"100%\">";
353        echo "<tr><td background='"._DIR_IMG_PACK."/rien.gif' align='$spip_lang_left' class='verdana2'>";
354        if ($message_auto != "oui")
355                echo _T('spiplistes:non_program');
356        else {
357                if(($changer_extra == "oui") AND ($auto == "oui") )
358                        echo "<h2>"._T('spiplistes:date_act')."</h2>" ;
359                echo "<h3> "._T('spiplistes:sujet_courrier_auto').$titre_message."</h3>";
360                echo _T('spiplistes:env_esquel')." <em>".$patron."</em> " ;
361                echo "<br />"._T('spiplistes:Tous_les')."  <b>".$periode."</b>  "._T('info_jours') ;
362               
363                $dernier_envoi =  strtotime($maj_nouv)  ;
364                $sablier = (time() - $dernier_envoi) ;
365                       
366                $proch = round(  (( (24*3600*$periode) - $sablier) / (3600*24)) ) ;
367                $last = round(  ($sablier / (3600*24)) ) ;
368                echo "<br />"._T('spiplistes:dernier_envoi')." <b>$last</b> "._T('spiplistes:jours')."<br />";
369                if($proch != 0) {
370                        echo "<br />"._T('spiplistes:prochain_envoi_prevu_dans')."<b>$proch</b> "._T('spiplistes:jours')."<br />";
371                }
372                else {
373                        echo "<br />"._T('spiplistes:prochain_envoi_aujd')."<br />";
374                }
375        }
376
377        echo "</td></tr>";
378        echo "<tr><td background='"._DIR_IMG_PACK."/rien.gif' align='$spip_lang_left' class='verdana2'>";
379
380        $checked = ($message_auto=='oui')?"checked='checked'":"";
381        echo "<input type='radio' name='auto' value='oui' id='auto_oui' "
382         . $checked
383         ." onchange=\"jQuery('#auto_oui_detail').show();\" />";
384        echo $checked?"<b>":"";
385        echo "<label for='auto_oui'>"._T('spiplistes:prog_env')."</label>";
386        echo $checked?"</b>":"";
387        echo "<input type='hidden' name='changer_extra' value='oui'>";
388        echo "<div id='auto_oui_detail'>";
389       
390        $sujet_message = ($titre_message=='') ? $titre." "._T('zxml_de')." ".$nomsite : $titre_message ;
391       
392        echo "<ul style='list-style-type:none;'>";
393        echo "<li>"._T('spiplistes:message_sujet').": <input type='titre_message' name='sujet_message' value='".$sujet_message."' size='50' class='fondl' /> </li>" ;
394        echo "<li>"._T('spiplistes:squel');
395       
396       
397        $liste_patrons = find_all_in_path("patrons/","[.]html$");
398        echo "<select name='patron'>";
399        foreach($liste_patrons as $titre_option) {
400                $titre_option = basename($titre_option,".html");
401                $selected ="";
402                if ($patron == $titre_option)
403                        $selected = "selected='selected";
404                echo "<option ".$selected." value='".$titre_option."'>".$titre_option."</option>\n";
405        }
406        echo "</select>";
407       
408        echo "</li>";
409
410        echo "<li>"._T('spiplistes:Tous_les')." <input type='text' name='periode' value='".$periode."' size='4' class='fondl' /> "._T('info_jours')."</li>" ;
411
412        if(!$envoyer_direct)
413                echo " <li><input type='checkbox' class='checkbox' name='envoyer_direct' id='box' class='fondl' /><label for='box'>"._T('spiplistes:env_maint')."</label></li>";
414
415        echo "</ul></div>";
416        $checked = ($message_auto=='non')?"checked='checked'":"";
417        echo "<br /><input type='radio' name='auto' value='non' id='auto_non' "
418         . $checked
419         ." onchange=\"jQuery('#auto_oui_detail').hide();\" />";
420        echo $checked?"<b>":"";
421        echo " <label for='auto_non'>"._T('spiplistes:prog_env_non')."</label> ";
422        echo $checked?"</b>":"";
423        if ($message_auto=='non')
424                echo "<script type='text/javascript'><!--
425                jQuery('#auto_oui_detail').hide();
426                --></script>";
427       
428        echo "</td></tr>\n";
429       
430        echo "<tr><td style='text-align:$spip_lang_right;'>";
431        if($id_liste)
432                echo "<input type='hidden' name='id_liste' value='$id_liste' />";
433        if($new)
434                echo "<input type='hidden' name='new' value='$new' />";
435        echo "<input type='submit' name='Valider_auto' value='"._T('bouton_valider')."' class='fondo' />";
436        echo "</td></tr>";
437        echo "</table>\n";
438       
439        echo "</form>";
440
441        echo fin_cadre_relief();
442
443        //
444        // Liste des abonnes
445        //
446
447        //
448        // Appliquer les modifications sur les abonnes
449        //
450
451        echo "<a name='auteurs'></a>";
452
453        //
454        // Afficher les abonnes
455        //
456
457        //
458        // Liste des abonnes a la liste
459        //
460
461        $editer_auteurs = charger_fonction('editer_auteurs','inc');
462        echo $editer_auteurs('liste',$id_liste,$flag_editable, _request('cherche_auteur'),_request('ids'), 
463                _T('spiplistes:abon'),
464                'listes',
465                'abonne_edit');
466       
467        ////
468        // MODE EDIT LISTE FIN ---------------------------------------------------------
469        echo "<p style='font-family: Arial, Verdana,sans-serif;font-size:10px;font-weight:bold'>".$GLOBALS['spiplistes_version']."<p>" ;
470        echo fin_gauche(), fin_page();
471}
472
473function listes_edit_presentation($id_liste){
474        return icone(_T('spiplistes:modifier_liste'), generer_url_ecrire("liste_edit","id_liste=$id_liste"),_DIR_PLUGIN_SPIPLISTES."img_pack/reply-to-all-24.gif", "edit.gif");
475}
476
477/******************************************************************************************/
478/* SPIP-listes est un systÚme de gestion de listes d'abonnés et d'envoi d'information     */
479/* par email  pour SPIP.                                                                  */
480/* Copyright (C) 2004 Vincent CARON  v.caron<at>laposte.net , http://bloog.net            */
481/*                                                                                        */
482/* Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes */
483/* de la Licence Publique Générale GNU publiée par la Free Software Foundation            */
484/* (version 2).                                                                           */
485/*                                                                                        */
486/* Ce programme est distribué car potentiellement utile, mais SANS AUCUNE GARANTIE,       */
487/* ni explicite ni implicite, y compris les garanties de commercialisation ou             */
488/* d'adaptation dans un but spécifique. Reportez-vous à la Licence Publique Généale GNU  */
489/* pour plus de détails.                                                                  */
490/*                                                                                        */
491/* Vous devez avoir reçu une copie de la Licence Publique Générale GNU                    */
492/* en même temps que ce programme ; si ce n'est pas le cas, écrivez à la                  */
493/* Free Software Foundation,                                                              */
494/* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, Etats-Unis.                   */
495/******************************************************************************************/
496
497?>
Note: See TracBrowser for help on using the repository browser.