source: spip-zone/_contribs_/_email_/spip-listes/ecrire/spip_listes.php3 @ 839

Last change on this file since 839 was 839, checked in by joseluis@…, 16 years ago

D'autre problem d'envoi ressolu, mais non les messages bloqués en cours d’envoi :-(

File size: 111.7 KB
Line 
1<?php
2
3/******************************************************************************************/
4/* spip-listes est un système de gestion de listes d'abonnés et d'envoi d'information     */
5/* par email  pour SPIP.                                                                  */
6/* Copyright (C) 2004 Vincent CARON  v.caron<at>laposte.net , http://bloog.net            */
7/*                                                                                        */
8/* Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes */
9/* de la Licence Publique Générale GNU publiée par la Free Software Foundation            */
10/* (version 2).                                                                           */
11/*                                                                                        */
12/* Ce programme est distribué car potentiellement utile, mais SANS AUCUNE GARANTIE,       */
13/* ni explicite ni implicite, y compris les garanties de commercialisation ou             */
14/* d'adaptation dans un but spécifique. Reportez-vous à la Licence Publique Générale GNU  */
15/* pour plus de détails.                                                                  */
16/*                                                                                        */
17/* Vous devez avoir reçu une copie de la Licence Publique Générale GNU                    */
18/* en même temps que ce programme ; si ce n'est pas le cas, écrivez à la                  */
19/* Free Software Foundation,                                                              */
20/* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, États-Unis.                   */
21/******************************************************************************************/
22
23
24
25
26include ("inc.php3");
27include_ecrire ("inc_acces.php3");
28include_ecrire ("inc_filtres.php3");
29include_ecrire ("inc_config.php3");
30include_ecrire ("inc_barre.php3");
31
32include_ecrire ("inc_logos.php3");
33include_ecrire ("inc_mots.php3");
34include_ecrire ("inc_documents.php3");
35
36//include("ecrire/inc_version.php3") ;
37
38init_config();
39if ($changer_config == 'oui') {
40        appliquer_modifs_config();
41}
42 
43$nomsite=lire_meta("nom_site"); 
44$urlsite=lire_meta("adresse_site"); 
45 
46
47 
48 // Admin SPIP-Listes
49debut_page("Spip listes", "redacteurs", "spiplistes");
50
51
52if ($connect_statut != "0minirezo" ) {
53        echo "<p><b>"._T('spiplistes:acces_a_la_page')."</b></p>";
54        fin_page();
55        exit;
56}
57
58if (($connect_statut == "0minirezo") OR ($connect_id_auteur == $id_auteur)) {
59        $statut_auteur=$statut;
60        spip_listes_onglets("messagerie", "Spip listes");
61}
62
63debut_gauche();
64
65// debut des racourcis
66debut_raccourcis("mailer_config.gif");
67//
68
69
70               
71if ($connect_statut == "0minirezo") {
72icone_horizontale( _T('spiplistes:Nouveau_courrier') , "spip_listes.php3?mode=courrier_edit&new=oui&type=nl", "stock_mail_send.gif");
73icone_horizontale(_T('spiplistes:Nouvelle_liste_de_diffusion'), "spip_listes.php3?mode=creer_liste&new=oui", "reply-to-all-24.gif");
74echo "<br />" ;
75echo "<br />" ;
76icone_horizontale(_T('spiplistes:Patrons'), "spip_listes.php3?mode=squelettes", "Palette-24.gif");
77icone_horizontale(_T('spiplistes:Configuration'), "spip_listes.php3?mode=config", "mailer_config.gif");
78        }
79       
80
81
82
83fin_raccourcis();
84//
85
86
87
88//Afficher la console d'envoi ?
89
90global $table_prefix;
91$qery_message = "SELECT * FROM ".$table_prefix."_messages AS messages WHERE statut='encour' AND (type='auto' OR type='nl') LIMIT 0,1";
92$rsult_pile = spip_query($qery_message);
93$mssage_pile = spip_num_rows($rsult_pile);
94               
95
96//initialiser le nombre total d'abonnes         
97$extra_meta = get_extra(1,"auteur");
98
99if(!$extra_meta["total_auteurs"]){
100$extra_meta["total_auteurs"] = "0";
101set_extra(1,$extra_meta,"auteur");
102$extra_meta = get_extra(1,"auteur");
103}
104
105
106 if($mssage_pile > 0 ){
107        // Les valeurs sont deja initialisées
108        // Compter le nombre de mails à envoyer
109
110        $nb_inscrits = $extra_meta["total_auteurs"];
111        echo "<br />";
112        debut_boite_info();
113
114        echo "<div style='font-weight:bold;text-align:center'>"._T('spiplistes:message_en_cours')."</div>";
115        echo "<div style='padding : 10px;text-align:center'><img src='img_pack/48_import.gif'></div>";
116                if($nb_inscrits > 0){
117                echo "<p align='center'><b>".round($extra_meta["debut"]/$nb_inscrits *100)." %</b></p>";
118                }
119        echo "<p>"._T('spiplistes:texte_boite_en_cours')."</p>" ;
120        echo "<p align='center'><a href='../spip-meleuse.php3'>["._T('spiplistes:suivi_envois')."]</a></p>";
121       
122        echo "<p align='center'><a href='".$PHP_SELF."?envoi_lot=oui'><tt>["._T('spiplistes:lot_suivant')."]</a></tt></p>";
123   echo "<p align='center'><a href='".$PHP_SELF."'><tt>["._T('spiplistes:actualiser')."]</a></tt></p>";
124        if($envoi_lot == "oui"){
125echo"<iframe src='../spip-meleuse.php3' height='1' width='1' frameborder='0' >"._T('spiplistes:desole')."</iframe>";
126
127}
128       
129       
130        fin_boite_info();
131 }elseif($extra_meta["debut"] != 0){
132        $extra_meta["debut"] = 0; // initialiser le compteur à zero pour etre sur
133        set_extra(1,$extra_meta,"auteur");
134 }
135
136
137
138echo "<br />" ;
139
140debut_boite_info();
141
142echo _T('spiplistes:_aide');
143
144fin_boite_info();
145
146
147creer_colonne_droite();
148
149
150
151debut_droite("messagerie");
152
153
154// Rédaction d'un courrier
155
156if ($mode == "courrier_edit"){
157
158if ($new == "oui") {
159        $statut = 'redac';
160        $query = "INSERT INTO spip_messages (titre, date_heure, statut, type, id_auteur) VALUES ('".addslashes(filtrer_entites(_T('texte_nouveau_message')))."', NOW(), '$statut', '$type', $connect_id_auteur)";
161        $result = spip_query($query);
162        $id_message = spip_insert_id();
163    spip_query("INSERT INTO spip_auteurs_messages (id_auteur,id_message,vu) VALUES ('$connect_id_auteur','$id_message','oui')");
164}
165
166
167$query = "SELECT * FROM spip_messages WHERE id_message=$id_message";
168$result = spip_query($query);
169
170if ($row = spip_fetch_array($result)) {
171        $id_message = $row['id_message'];
172        $date_heure = $row["date_heure"];
173        $date_fin = $row["date_fin"];
174        $titre = entites_html($row["titre"]);
175        $texte = entites_html($row["texte"]);
176        $type = $row["type"];
177        $statut = $row["statut"];
178        $page = $row["page"];
179        $rv = $row["rv"];
180        $expediteur = $row["id_auteur"];
181        if (!($expediteur == $connect_id_auteur OR ($type == 'nl' AND $connect_statut == '0minirezo'))) die();
182
183     debut_cadre_relief("stock_insert-slide.gif");
184     //Charger un patron ?   
185         
186          // inclusion du script de gestion des layers de SPIP
187               
188                if($spip_version < 1.8 ){
189                include 'inc_layer.php3';
190                 afficher_script_layer();
191                              }
192                else{
193                echo $GLOBALS['browser_layer'];
194                } 
195
196                // Titre du bloc
197                echo bouton_block_invisible(md5(_T('spiplistes:charger_patron')));
198                        echo "<a href=\"javascript:swap_couche('$compteur_block', '$spip_lang_rtl');\">"._T('spiplistes:charger_patron')."</a>";
199                       
200                // Bloc invisible
201                echo debut_block_invisible(md5(_T('spiplistes:charger_patron')));
202                       
203                 echo "<table><tr><td>";                               
204         
205          echo "<form action='inc_import_patron.php3?mode=courrier&id_message=$id_message' METHOD='post'>"; 
206      $dir = "../patrons/";
207
208                // Ouvre un dossier bien connu, et liste tous les fichiers
209                if (is_dir($dir)) {
210                if ($dh = opendir($dir)) {
211                        $total_option=0;
212                                while (($file = readdir($dh)) !== false) {
213                if($file != '..' && $file !='.' && $file !='') $total_option=$total_option+1;
214                        }
215                        closedir($dh);
216                        }
217                                if ($dh = opendir($dir)) {
218                        echo "<SELECT name='patron' size='".$total_option."'>";
219                               
220                                        while (($file = readdir($dh)) !== false) {
221                         if($file != '..' && $file !='.' && $file !='') 
222                                                {
223                                                $titre_option=ereg_replace('(\.html|\.HTML)','',$file);
224                                                echo "<option value='$titre_option'>$titre_option</OPTION>";
225                                                }
226                                        }
227                                echo "</SELECT>";
228                        closedir($dh);
229                                }
230                }
231                         
232        echo "</td><td>";
233
234
235          echo "<input type='Hidden' name='inclure_patron' value=\"oui\">";
236          echo "<input type='Hidden' name='id_message' value=\"$id_message\">";
237            echo "<input type='Hidden' name='nomsite' value=\"$nomsite\">";
238
239    $auj = date("Y/m/d");
240    echo "<p align='center'><b></b>"._T('spiplistes:date_ref')."<br /><input type='text' name='date' value=\"$auj\"></p>";
241        echo "<p align='center'>"._T('spiplistes:alerte_modif')."<br /><br /><input type='submit' name='Valider' value='"._T('spiplistes:charger_le_patron')."' class='fondo'></p>";
242        echo "</FORM>";
243
244        echo "</td></tr></table>";
245
246
247                // Fin du bloc
248                echo fin_block();
249
250     fin_cadre_relief();
251
252     //Ecrire dans le formulaire
253
254
255        echo "<form action='spip_listes.php3?mode=courrier&id_message=$id_message' METHOD='post' name='formulaire'>";
256
257        if ($type == 'nl') $le_type = _T('spiplistes:email_collec');
258
259        echo "<font face='Verdana,Arial,Sans,sans-serif' size=2 color='green'><b>$le_type</b></font><p>";
260    echo "<font face='Verdana,Arial,Helvetica,sans-serif' size=1 color='red'>"._T('spiplistes:alerte_edit')."</font><p>";
261
262        echo "<input type='Hidden' name='modifier_message' value=\"oui\">";
263        echo "<input type='Hidden' name='id_message' value=\"$id_message\">";
264
265        echo _T('texte_titre_obligatoire')."<br />";
266
267        echo "<input type='text' class='formo' name='titre' value=\"$titre\" size='40'>";
268
269
270        echo "<p><b>"._T('info_texte_message_02')."</b>";
271    echo aide ("raccourcis");
272    echo"<br />";
273        echo afficher_barre('document.formulaire.texte');
274        echo "<TEXTAREA id='text_area' name='texte' ".$GLOBALS['browser_caret']." class='formo' ROWS='20' COLS='40' wrap=soft>";
275        echo $texte;
276        echo "</TEXTAREA>\n";
277
278        echo "<p align='right'><input type='submit' name='Valider' value='"._T('bouton_valider')."' class='fondo'>";
279        echo "</FORM>";
280}
281
282
283}
284
285// fin du courrier edit
286
287
288// Affichage d'un courrier
289
290if ($mode == 'courrier') {
291
292
293$query_message = "SELECT * FROM spip_messages WHERE id_message=$id_message";
294$result_message = spip_query($query_message);
295        while($row = spip_fetch_array($result_message)) {
296                $type = $row['type'];
297                }
298        if (!$connect_statut == "0minirezo"){
299        echo "<b>"._T('avis_non_acces_message')._T('info_acces_refuse')."</b><p>";
300        fin_page();
301        exit;
302        }
303
304
305
306if ($modifier_message == "oui") {       
307    $titre = addslashes($titre);
308        $texte = addslashes($texte);
309        spip_query("UPDATE spip_messages SET titre='$titre', texte='$texte' WHERE id_message='$id_message'");   
310}
311
312
313
314if ($change_statut) {
315spip_query("UPDATE spip_messages SET statut='$change_statut' WHERE id_message='$id_message'");
316}
317
318if ($supp_dest) {
319        spip_query("DELETE FROM spip_auteurs_messages WHERE id_message='$id_message' AND id_auteur='$supp_dest'");
320}
321
322// A sécuriser ?
323if ($envoi) {
324 spip_query("UPDATE spip_messages SET statut='encour' WHERE id_message='$id_message'");
325}
326
327//
328//
329
330$query_m = "SELECT * FROM spip_messages WHERE id_message=$id_message";
331$result_m = spip_query($query_m);
332
333while($row = spip_fetch_array($result_m)) {
334        $id_message = $row['id_message'];
335        $date_heure = $row["date_heure"];
336        $date_fin = $row["date_fin"];
337        $titre = typo($row["titre"]);
338        $texte = $row["texte"];
339        //$texte = propre($row["texte"]);
340        $type = $row["type"];
341        $statut = $row["statut"];
342        $page = $row["page"];
343        $rv = $row["rv"];
344        $expediteur = $row['id_auteur'];
345
346        $lejour=journum($row['date_heure']);
347        $lemois = mois($row['date_heure']);             
348        $lannee = annee($row['date_heure']);           
349
350       
351                $le_type = _T('spiplistes:message_type');
352                $la_couleur = "red";   
353       
354    debut_cadre_relief("stock_mail_send.gif");
355
356    if ($statut == 'redac') {
357                if (!$envoi && $destinataire)
358                echo "<font face='Verdana,Arial,Sans,sans-serif' size=2 color='red'>
359                <b>"._T('spiplistes:message_presque_envoye')."<br />"._T('spiplistes:confirme_envoi')."</b></font>";
360                elseif (!$envoi)
361                echo "<br /><font face='Verdana,Arial,Sans,sans-serif' size=2 color='red'>
362                <b>"._T('spiplistes:message_en_cours')." <br />"._T('spiplistes:modif_envoi')."</b></font>";
363    }
364
365    if ($statut == 'encour'){
366        echo "<p><font face='Verdana,Arial,Sans,sans-serif' size=2 color='red'>
367        <b>"._T('spiplistes:envoi_program')."</b><br />
368        <a href='spip_listes.php3'>["._T('spiplistes:voir_historique')."]</a></font></p>";
369                        if ($expediteur == $connect_id_auteur  OR ($type == 'nl' AND $connect_statut == '0minirezo') OR ($type == 'auto' AND $connect_statut == '0minirezo')) {
370                        icone (_T('icone_supprimer_message'), "spip_listes.php3?detruire_message=$id_message", "messagerie-24.gif", "supprimer.gif");
371                        echo "<br />";
372                        }
373        }
374
375        if ($statut == 'publie') 
376        echo "<font face='Verdana,Arial,Sans,sans-serif' size=2 color='red'>
377        <b>"._T('spiplistes:message_arch')."</b></font>";
378
379    fin_cadre_relief();
380
381        echo "<div style='margin-top:20px;border: 1px solid $la_couleur; background-color: $couleur_fond; padding: 5px;'>"; // debut cadre de couleur
382        //debut_cadre_relief("messagerie-24.gif");
383        echo "<table width=100% cellpadding=0 cellspacing=0 border=0>";
384        echo "<tr><td width=100%>";
385
386        echo "<font face='Verdana,Arial,Sans,sans-serif' size=2 color='$la_couleur'><b>$le_type</b></font><br />";
387        echo "<font face='Verdana,Arial,Sans,sans-serif' size=5><b>$titre</b></font>";
388       
389
390    if ($statut == 'redac') {
391                if ($expediteur == $connect_id_auteur OR ($type == 'nl' AND $connect_statut == '0minirezo')) {
392                        echo "\n</td> <td align='right'>";
393                        if (!$envoi) icone (_T('icone_modifier_message'),"spip_listes.php3?mode=courrier_edit&id_message=$id_message", "messagerie-24.gif", "edit.gif");
394                        echo "</td><tr></table>";
395                }
396        }
397       
398       
399
400        echo "<p>";
401
402    //////////////////////////////////////////////////////
403        // Le message lui-meme
404        //
405    $texte = eregi_replace("__bLg__[0-9@\.A-Z_-]+__bLg__","",$texte);
406        $texte = stripslashes($texte);
407        $texte = propre($texte);
408
409    echo "<div align='left'>";
410        echo "<table width=100% cellpadding=0 cellspacing=0 border=0>";
411        echo "<tr><td>";
412
413        echo "<br /><font face='Georgia,Garamond,Times,serif' size=3>";
414        debut_boite_info();
415    echo "<h2> "._T('spiplistes:version')." HTML </h2>";
416        echo "<p>$texte";
417        fin_boite_info();
418   
419        echo "<p>";
420    debut_boite_info();
421        echo "<h2> "._T('spiplistes:version')." "._T('spiplistes:val_texte')." </h2>";
422    echo "<textarea name='texte' rows='20' class='formo' cols='40' wrap=soft>";
423        echo version_texte($texte);
424        echo "</textarea><p>\n";
425
426        fin_boite_info();
427        echo "</font>";
428
429        echo "</td></tr></table><p>";   
430       
431//////////////////////////////////////////////////////
432        // Newsletter?
433        //
434
435// Ajouter si on le connait le destinataire
436// on fait ca comme un sale directos dans le texte du message :))
437       
438if ($statut == 'redac' AND $type =='nl' ){     
439       
440        if(!$envoi && ($destinataire && $choisir_dest)){
441        $texte = "__bLg__".$destinataire."__bLg__".$texte ;
442        $texte = addslashes($texte);
443        spip_query("UPDATE spip_messages SET texte='$texte' WHERE id_message='$id_message'");
444        }
445
446        // email de test
447        elseif($envoi_test){
448        //vérifier si l adresse est valide ?
449        // si l'abonné est inscrit ?
450     
451     if(email_valide_bloog($adresse_test)){
452                $query = "SELECT id_auteur FROM ".$table_prefix."_auteurs WHERE email = '$adresse_test' ORDER BY id_auteur ASC ";
453                $result_in = spip_query($query);
454                $is_inscrit = spip_num_rows($result_in);
455                         if($is_inscrit > 0){
456                         $texte = "__bLg__".$adresse_test."__bLg__".$texte ;
457                         $texte = addslashes($texte);
458                         spip_query("UPDATE spip_messages SET texte='$texte' WHERE id_message='$id_message'");
459                         } else{$erreur_mail ='oui';}
460     
461     }  else{$erreur_mail = 'oui';}
462 
463        }
464
465
466        if(!$envoi){
467       
468        //envoi de test ?
469        echo "<form action='spip_listes.php3?mode=courrier&id_message=".$id_message."' method='post'>";
470                        debut_boite_info();
471                        echo "<div style='font-size:12px;font-familly:Verdana,Garamond,Times,serif;color:#000000;'>";
472                        echo "<b>"._T('spiplistes:envoi')."</b><p style='font-familly : Georgia,Garamond,Times,serif'>"._T('spiplistes:envoi_texte')."</p>";
473                        debut_cadre_enfonce();
474                        echo "<div style='font-size:12px;font-familly:Verdana,Garamond,Times,serif;color:#000000;'>";
475                        echo "<div style='float:right'><input type='submit' name='envoi_test' value='"._T('spiplistes:email_tester')."' class='fondo' /></div>";
476                        echo "<input type='text' name='adresse_test' value='"._T('spiplistes:email_adresse')."' class='fondo'>" ;
477                        echo "</div>" ;
478                        fin_cadre_enfonce() ;
479                       
480                        if($envoi_test){
481                        echo "<h2>"._T('spiplistes:email_test')."</h2>" ;
482                        }else{
483                        echo "<h2>"._T('spiplistes:email_test_liste')."</h2>" ;
484                        }
485       
486                                       
487                                        //trouver un dest dans le texte
488                       
489        $query_mess = "SELECT * FROM spip_messages WHERE id_message=$id_message";
490        $result_mess = spip_query($query_mess);
491       
492                while($row4 = spip_fetch_array($result_mess)){
493                $texte = $row4['texte'] ;
494                $destinataires = ''; //secu
495                eregi("^__bLg__[0-9@\.A-Z_-]+__bLg__", $texte, $res );
496                $destinataires = str_replace("__bLg__","",$res[0]);
497                 //echo"destinataire >> $destinataires ";
498                // si pas de dest
499               
500                        if($destinataires == ''){
501                       
502                                if($erreur_mail == 'oui'){
503                                echo "<br />"._T('spiplistes:sans_envoi');
504                                }else{
505                                $list = spip_query ("SELECT * FROM spip_articles WHERE statut = 'liste' OR statut = 'inact' ");
506                                echo "<div style='font-size:14px;font-weight:bold'>"._T('spiplistes:destinataires')."</div>";
507                                echo "<div style='float:right'><input type='submit' name='choisir_dest' value='"._T('spiplistes:choisir_cette')."' class='fondo'></div>";
508                                echo "<select name='destinataire' >";
509                                echo "<option value='tous'>"._T('spiplistes:toutes')."</option>" ;
510                                        while($row = spip_fetch_array($list)) {
511                                        $id_article = $row['id_article'] ;
512                                        $titre = $row['titre'] ;
513                                        echo "<option value='$id_article'>$titre</option>" ;
514                                        }
515                                echo "</select>";
516                                echo "</div>";
517                                }
518                               
519                        }else{
520               
521                        if($destinataires == 'tous'){
522                        $vers = _T('spiplistes:abonees');
523                        }else{
524                                if(email_valide_bloog($destinataires)){
525                                $vers = $destinataires ;
526                                //echo "<h1>$vers</h1>";
527                                }else{
528                                //echo "->$vers";
529                                $destinataires = intval($destinataires) ;
530                                $desti = spip_query ("SELECT * FROM spip_articles WHERE id_article = '$destinataires' ");
531                                $row = spip_fetch_array($desti);
532                                $vers = $row['titre'];
533                                }
534                        }
535               
536                        if($erreur_mail != 'oui'){
537                        echo "<div style='float:right'><input type='submit' name='envoi' value='"._T('spiplistes:envoyer')."' class='fondo'></div>";
538                        }
539                        $envoyer_a= _T('spiplistes:envoyer_a');
540                        echo "<div style='font-size:14px;font-weight:bold'>".$envoyer_a." -> ".$vers."</div>";
541                        echo "<p>";
542                        echo "</div>";
543                        }
544         
545               
546                } //while
547       
548        fin_boite_info();
549        echo "</form>";
550       
551        }// pas en mode envoyer
552       
553        if ($expediteur == $connect_id_auteur  OR ($type == 'nl' AND $connect_statut == '0minirezo')) {
554        echo "<br /><table width='100%'><tr><td>";
555        echo "\n<table align='left'><tr><td>";
556        icone (_T('icone_supprimer_message'), "spip_listes.php3?detruire_message=$id_message", "messagerie-24.gif", "supprimer.gif");
557        echo "</td></tr></table>";
558        }
559
560}// statut
561
562
563        echo "</td></tr></table></div>";
564        //fin_cadre_relief();
565        echo "</div>"; // fin du cadre de couleur
566       
567
568
569        if ($statut == 'publie' AND  $type == 'nl' ) {
570        echo "\n<table align='left'><tr><td>";
571        icone (_T('icone_arret_discussion'), "spip_listes.php3?id_message=$id_message&supp_dest=$connect_id_auteur", "messagerie-24.gif", "supprimer.gif");
572        echo "</td></tr></table>";
573        }
574
575
576               
577        echo "</td></tr></table>";
578               
579        //////////////////////////////////////////////////////
580        // Forums
581        //
582
583        echo "<br /><br />";
584
585        $forum_retour = urlencode("spip_listes.php3?mode=courrier&id_message=$id_message");
586
587
588        echo "\n<div align='center'>";
589                icone(_T('icone_poster_message'), "forum_envoi.php3?statut=perso&adresse_retour=".$forum_retour."&id_message=$id_message&titre_message=".urlencode($titre), "forum-interne-24.gif", "creer.gif");
590        echo "</div>";
591   
592       
593
594        echo "<p align='left'>";
595
596        $query_forum = "SELECT * FROM spip_forum WHERE statut='perso' AND id_message='$id_message' AND id_parent=0 ORDER BY date_heure DESC LIMIT 0,20";
597        $result_forum = spip_query($query_forum);
598        afficher_forum($result_forum, $forum_retour);
599
600}//while
601
602}
603
604// Suivi des abonnements
605
606
607if ($mode == "statut") {
608
609
610
611
612//
613// Recherche d'auteur
614//
615
616if ($cherche_auteur) {
617        echo "<p align='left'>";
618        $query = "SELECT id_auteur, nom, email FROM spip_auteurs";
619        $result = spip_query($query);
620
621       
622
623
624        unset($table_auteurs);
625        unset($table_ids);
626        while ($row = spip_fetch_array($result)) {
627         
628         if( email_valide_bloog($cherche_auteur) ){
629                $table_auteurs[] = $row["email"] ; }
630                else {
631                $table_auteurs[] = $row["nom"];
632                }
633                $table_ids[] = $row["id_auteur"];
634        }
635        $resultat = mots_ressemblants($cherche_auteur, $table_auteurs, $table_ids);
636        debut_boite_info();
637        if (!$resultat) {
638                echo "<b>"._T('texte_aucun_resultat_auteur', array('cherche_auteur' => $cherche_auteur)).".</b><br />";
639        }
640        else if (count($resultat) == 1) {
641
642                list(, $nouv_auteur) = each($resultat);
643                echo "<b>"._T('spiplistes:une_inscription')."</b><br />";
644                $query = "SELECT * FROM spip_auteurs WHERE id_auteur=$nouv_auteur";
645                $result = spip_query($query);
646                echo "<ul>";
647                while ($row = spip_fetch_array($result)) {
648                        $id_auteur = $row['id_auteur'];
649                        $nom_auteur = $row['nom'];
650                        $email_auteur = $row['email'];
651                        $bio_auteur = $row['bio'];
652
653                        echo "<li><font face='Verdana,Arial,Sans,sans-serif' size=2><b><font size=3><a href=\"spip_listes.php3?mode=abonne&id_auteur=$id_auteur\">".typo($nom_auteur)."</a></font></b>";
654                        echo " | $email_auteur";
655                        echo "</font>\n";
656                }
657                echo "</ul>";
658        }
659        else if (count($resultat) < 16) {
660                reset($resultat);
661                unset($les_auteurs);
662                while (list(, $id_auteur) = each($resultat)) $les_auteurs[] = $id_auteur;
663                if ($les_auteurs) {
664                        $les_auteurs = join(',', $les_auteurs);
665                        echo "<b>"._T('texte_plusieurs_articles', array('cherche_auteur' => $cherche_auteur))."</b><br />";
666                        $query = "SELECT * FROM spip_auteurs WHERE id_auteur IN ($les_auteurs) ORDER BY nom";
667                        $result = spip_query($query);
668                        echo "<ul>";
669                        while ($row = spip_fetch_array($result)) {
670                                $id_auteur = $row['id_auteur'];
671                                $nom_auteur = $row['nom'];
672                                $email_auteur = $row['email'];
673                                $bio_auteur = $row['bio'];
674
675                                echo "<li><font face='Verdana,Arial,Sans,sans-serif' size=2><b><font size=3>".typo($nom_auteur)."</font></b>";
676
677                                if ($email_auteur) echo " ($email_auteur)";
678                                echo " | <a href=\"spip_listes.php3?mode=abonne&id_auteur=$id_auteur\">"._T('spiplistes:choisir')."</a>";
679
680                                if (trim($bio_auteur)) {
681                                        echo "<br /><font size=1>".couper(propre($bio_auteur), 100)."</font>\n";
682                                }
683                                echo "</font><p>\n";
684                        }
685                        echo "</ul>";
686                }
687        }
688        else {
689                echo "<b>"._T('texte_trop_resultats_auteurs', array('cherche_auteur' => $cherche_auteur))."</b><br />";
690        }
691        fin_boite_info();
692        echo "<p>";
693
694}
695
696
697global $table_prefix;
698$query_message = "SELECT * FROM ".$table_prefix."_articles AS listes LEFT JOIN ".$table_prefix."_auteurs_articles AS abonnements USING (id_article) WHERE statut='liste'";
699$result_pile = spip_query($query_message);
700$nb_abonnes = spip_num_rows($result_pile);
701               
702$query = "SELECT id_auteur, nom, extra FROM spip_auteurs";
703$result = spip_query($query);
704$nb_inscrits = spip_num_rows($result);
705
706        $cmpt_texte = 0;
707        $cmpt_html = 0;
708        $cmpt_non = 0;
709
710        while ($row = spip_fetch_array($result)) {
711        $abo = get_extra($row["id_auteur"],auteur);
712
713        if ($abo['abo'] == "texte"){
714        $cmpt_texte = $cmpt_texte + 1 ;
715        }
716
717        if ($abo['abo'] == "html"){
718        $cmpt_html = $cmpt_html + 1 ;
719        }
720
721        if ($abo['abo'] == "non"){
722        $cmpt_non = $cmpt_non + 1 ;
723        }
724
725        $total_abo = $cmpt_html + $cmpt_texte ;
726        }
727
728
729debut_cadre_relief('forum-interne-24.gif');
730
731
732echo"<div>";
733echo"<div style='float:right;width:150px'>";
734echo "<b>"._T('spiplistes:repartition')."</b>  <br /><b>"._T('spiplistes:html')."</b> : $cmpt_html <br /><b>"._T('spiplistes:texte')."</b> : $cmpt_texte <br /><b>"._T('spiplistes:desabonnes')."</b> : $cmpt_non";
735echo"</div>";
736$total= $cmpt_html+$cmpt_texte+$cmpt_non;
737echo "<p>"._T('spiplistes:nb_inscrits').$total."&nbsp;&nbsp;/&nbsp;&nbsp;"._T('spiplistes:nb_abonnes').$total_abo."<br />"._T('spiplistes:nb_listes').$nb_abonnes."</p>";
738echo"</div>";
739
740
741//echo debut_block_invisible("auteursarticle");
742
743        $query = "SELECT * FROM spip_auteurs WHERE ";
744        $query .= "statut!='5poubelle' AND statut!='nouveau' ORDER BY statut, nom";
745        $result = spip_query($query);
746
747        if (spip_num_rows($result) > 0) {
748                echo "<form action='spip_listes.php3?mode=statut' METHOD='post'>";
749        echo "<div align=center>\n";
750                echo "<input type='text' name='cherche_auteur' class='fondl' value='' size='20'>";
751                echo " <input type='submit' name='Chercher' value='"._T('bouton_chercher')."' class='fondo'>";
752                echo "</div></FORM>";
753        }
754// echo fin_block();
755
756
757
758fin_cadre_relief();
759
760echo "<p>";
761
762// auteur
763
764$retour = "spip_listes.php3?mode=statut";
765
766//changer de statut
767
768if(!$statut) $statut=' ';
769
770if( ($changer_statut=='oui') AND ( ($statut=='html') OR ($statut=='texte') OR ($statut=='non') ) ){
771$extras = get_extra($id_auteur,"auteur") ;
772$extras["abo"] = $statut ;
773set_extra($id_auteur,$extras,"auteur");
774}
775
776if ($tri) {
777        $retour .= "&tri=$tri";
778        if ($tri=='nom' OR $tri=='statut')
779                $partri = " "._T('info_par_tri', array('tri' => $tri));
780        else if ($tri=='id')
781                $partri = _T('spiplistes:par_date');
782       
783        }
784
785//
786// Construire la requete
787//
788
789
790        $sql_statut_auteurs = " AND auteurs.statut IN ('0minirezo', '1comite', '5poubelle','6forum')";
791        $sql_statut_articles = "";
792
793
794// tri
795switch ($tri) {
796//trier les extra ? pas simple..., trions par id
797case 'id':
798        $sql_order = ' ORDER BY auteurs.id_auteur DESC, unom';
799        $type_requete = 'auteur';
800        break;
801
802case 'statut':
803        $sql_order = ' ORDER BY auteurs.statut, login = "", unom';
804        $type_requete = 'auteur';
805        break;
806
807case 'nom':
808default:
809        $sql_order = ' ORDER BY unom';
810        $type_requete = 'auteur';
811}
812
813
814// si on doit afficher les auteurs par statut ou par nom,
815// la requete principale est simple, et une autre requete
816// vient calculer les nombres d'articles publies ;
817// si en revanche on doit classer par nombre, la bonne requete
818// est la concatenation de $query_nombres et de $query_auteurs
819
820unset($nombre_auteurs);
821$auteurs = Array();
822
823if ($type_requete == 'auteur') {
824        $result_auteurs = spip_query("SELECT id_auteur, extra, statut, source, pass, login, nom, email, url_site, UPPER(nom) AS unom
825                FROM spip_auteurs AS auteurs
826                WHERE 1 $sql_statut_auteurs
827                $sql_order");
828        while ($row = spip_fetch_array($result_auteurs)) {
829                $auteurs[$row['id_auteur']] = $row;
830                $nombre_auteurs ++;
831
832                $nom_auteur = $row['nom'];
833                $premiere_lettre = addslashes(strtoupper(substr($nom_auteur,0,1)));
834                if ($premiere_lettre != $lettre_prec) {
835                        $lettre[$premiere_lettre] = $nombre_auteurs;
836                }
837                $lettre_prec = $premiere_lettre;
838        }
839
840        $result_nombres = spip_query("SELECT auteurs.id_auteur, UPPER(auteurs.nom) AS unom, COUNT(articles.id_article) AS compteur
841                FROM spip_auteurs AS auteurs, spip_auteurs_articles AS lien, spip_articles AS articles
842                WHERE auteurs.id_auteur=lien.id_auteur AND lien.id_article=articles.id_article
843                $sql_statut_auteurs $sql_statut_articles
844                GROUP BY auteurs.id_auteur
845                $sql_order");
846        while ($row = spip_fetch_array($result_nombres))
847                $auteurs[$row['id_auteur']]['compteur'] = $row['compteur'];
848
849        // si on n'est pas minirezo, supprimer les auteurs sans article publie
850        // sauf les admins, toujours visibles.
851       
852       
853
854} else { // tri par nombre
855        $result_nombres = spip_query("SELECT auteurs.id_auteur, auteurs.statut, auteurs.source, auteurs.pass, auteurs.login, auteurs.nom, auteurs.email, auteurs.url_site, UPPER(nom) AS unom, COUNT(articles.id_article) AS compteur
856                FROM spip_auteurs AS auteurs, spip_auteurs_articles AS lien, spip_articles AS articles
857                WHERE auteurs.id_auteur=lien.id_auteur AND lien.id_article=articles.id_article
858                $sql_statut_auteurs $sql_statut_articles
859                GROUP BY auteurs.id_auteur
860                $sql_order");
861        unset($vus);
862        while ($row = spip_fetch_array($result_nombres)) {
863                $auteurs[$row['id_auteur']] = $row;
864                $vus .= ','.$row['id_auteur'];
865                $nombre_auteurs ++;
866        }
867
868        // si on est admin, ajouter tous les auteurs sans articles
869        // sinon ajouter seulement les admins sans articles
870        if ($connect_statut == '0minirezo')
871                $sql_statut_auteurs_ajout = $sql_statut_auteurs;
872       
873        $result_auteurs = spip_query("SELECT auteurs.id_auteur, auteurs.statut, auteurs.source, auteurs.pass, auteurs.login, auteurs.nom, auteurs.email, auteurs.url_site, UPPER(nom) AS unom, 0 as compteur
874                FROM spip_auteurs AS auteurs
875                WHERE id_auteur NOT IN (0$vus)
876                $sql_statut_auteurs_ajout
877                $sql_order");
878        while ($row = spip_fetch_array($result_auteurs)) {
879                $auteurs[$row['id_auteur']] = $row;
880                $nombre_auteurs ++;
881        }
882}
883
884
885unset ($rub_restreinte);
886if ($connect_statut == '0minirezo') { // recuperer les admins restreints
887        $restreint = spip_query("SELECT * FROM spip_auteurs_rubriques");
888        while ($row = spip_fetch_array($restreint))
889                $rub_restreinte[$row['id_auteur']] .= ','.$row['id_rubrique'];
890}
891
892//
893// Affichage
894//
895
896
897// reglage du debut
898$max_par_page = 30;
899if ($debut > $nombre_auteurs - $max_par_page)
900        $debut = max(0,$nombre_auteurs - $max_par_page);
901$fin = min($nombre_auteurs, $debut + $max_par_page);
902
903// ignorer les $debut premiers
904unset ($i);
905reset ($auteurs);
906while ($i++ < $debut AND each($auteurs));
907
908// ici commence la vraie boucle
909debut_cadre_relief('redacteurs-24.gif');
910echo "<table border='0' cellpadding=3 cellspacing=0 width='100%' class='arial2'>\n";
911echo "<tr bgcolor='#DBE1C5'>";
912echo "<td width='20'>";
913        $img = "<img src='img_pack/admin-12.gif' alt='' border='0'>";
914        if ($tri=='statut')
915                echo $img;
916        else
917                echo "<a href='spip_listes.php3?mode=statut&tri=statut' title='"._T('lien_trier_statut')."'>$img</a>";
918
919echo "</td><td>";
920        if ($tri == '' OR $tri=='nom')
921                echo '<b>'._T('info_nom').'</b>';
922        else
923                echo "<a href='spip_listes.php3?mode=statut&tri=nom' title='"._T('lien_trier_nom')."'><b>"._T('info_nom')."</b></a>";
924
925if ($options == 'avancees') echo "</td><td colspan='2'><b>"._T('info_contact')."</b>";
926echo "</td><td>";
927        if ($visiteurs != 'oui') {
928                if ($tri=='nombre')
929                        echo "<b>"._T('spiplistes:format')."</b>";
930                else
931                        echo "<b>"._T('spiplistes:format')."</b>";
932
933        }
934echo "</td><td>";
935echo "<b>"._T('spiplistes:modifier')."</b>";
936
937echo "</td></tr>\n";
938
939if ($nombre_auteurs > $max_par_page) {
940        echo "<tr bgcolor='white'><td colspan='".($options == 'avancees' ? 5 : 3)."'>";
941        echo "<font face='Verdana,Arial,Sans,sans-serif' size='2'>";
942        for ($j=0; $j < $nombre_auteurs; $j+=$max_par_page) {
943                if ($j > 0) echo " | ";
944
945                if ($j == $debut)
946                        echo "<b>$j</b>";
947                else if ($j > 0)
948                        echo "<a href=$retour&debut=$j>$j</a>";
949                else
950                        echo " <a href=$retour>0</a>";
951
952                if ($debut > $j  AND $debut < $j+$max_par_page){
953                        echo " | <b>$debut</b>";
954                }
955
956        }
957        echo "</font>";
958        echo "</td></tr>\n";
959
960        if (($tri == 'nom' OR !$tri) AND $options == 'avancees') {
961                // affichage des lettres
962                echo "<tr bgcolor='white'><td colspan='5'>";
963                echo "<font face='Verdana,Arial,Sans,sans-serif' size=2>";
964                while (list($key,$val) = each($lettre)) {
965                        if ($val == $debut)
966                                echo "<b>$key</b> ";
967                        else
968                                echo "<a href=$retour&debut=$val>$key</a> ";
969                }
970                echo "</font>";
971                echo "</td></tr>\n";
972        }
973        echo "<tr height='5'></tr>";
974}
975
976
977 if($debut)$retour .="&debut=".$debut;
978while ($i++ <= $fin && (list(,$row) = each ($auteurs))) {
979        // couleur de ligne
980        $couleur = ($i % 2) ? '#FFFFFF' : $couleur_claire;
981        echo "<tr bgcolor='$couleur'>";
982
983        // statut auteur
984        echo "<td>";
985        echo bonhomme_statut($row);
986
987        // nom
988        echo '</td><td>';
989        echo "<a href='spip_listes.php3?mode=abonne&id_auteur=".$row['id_auteur']."'>".typo($row['nom']).'</a>';
990
991        if ($connect_statut == '0minirezo' AND $row['statut']=='0minirezo' AND $rub_restreinte[$row['id_auteur']])
992                echo " &nbsp;<small>"._T('statut_admin_restreint')."</small>";
993
994
995        // contact
996        if ($options == 'avancees') {
997                echo '</td><td>';
998                if ($row['messagerie'] == 'oui' AND $row['login']
999                AND $activer_messagerie != "non" AND $connect_activer_messagerie != "non" AND $messagerie != "non")
1000                        echo bouton_imessage($row['id_auteur'],"force")."&nbsp;";
1001                if ($connect_statut=="0minirezo")
1002                        if (strlen($row['email'])>3)
1003                                echo "<a href='mailto:".$row['email']."'>"._T('lien_email')."</a>";
1004                        else
1005                                echo "&nbsp;";
1006
1007                if (strlen($row['url_site'])>3)
1008                        echo "</td><td><a href='".$row['url_site']."'>"._T('lien_site')."</a>";
1009                else
1010                        echo "</td><td>&nbsp;";
1011        }
1012
1013        // Abonnés ou pas ?
1014        echo '</td><td>';
1015       
1016        $extra = unserialize ($row["extra"]);
1017       
1018        if( !is_array($extra) ){
1019        $extra = array();
1020        $extra["abo"] = "non";
1021        set_extra($row["id_auteur"],$extra,'auteur');
1022        get_extra($row["id_auteur"],'auteur');
1023        }
1024       
1025        $abo = $extra["abo"];
1026
1027                if($abo == "non") echo "-";
1028                else echo "&nbsp;".$abo;
1029               
1030               
1031                // Modifier l'abonnement
1032        echo '</td><td>';
1033       
1034  if ($row["statut"] != '0minirezo') {
1035if($extra["abo"] == 'html') $option_abo = "<a href='$retour&id_auteur=".$row['id_auteur']."&changer_statut=oui&statut=non'>désabo</a> | <a href='$retour&id_auteur=".$row['id_auteur']."&changer_statut=oui&statut=texte'>texte</a>";
1036else if($extra["abo"] == 'texte') $option_abo = "<a href='$retour&id_auteur=".$row['id_auteur']."&changer_statut=oui&statut=non'>désabo</a> | <a href='$retour&id_auteur=".$row['id_auteur']."&changer_statut=oui&statut=html'>html</a>";
1037else  if(($extra["abo"] == 'non')OR (!$extra["abo"])) $option_abo = "<a href='$retour&id_auteur=".$row['id_auteur']."&changer_statut=oui&statut=texte'>texte</a> | <a href='$retour&id_auteur=".$row['id_auteur']."&changer_statut=oui&statut=html'>html</a>";
1038echo "&nbsp;".$option_abo;
1039  }
1040        echo "</td></tr>\n";
1041}
1042
1043echo "</table>\n";
1044
1045
1046echo "<a name='bas'>";
1047echo "<table width='100%' border='0'>";
1048
1049$debut_suivant = $debut + $max_par_page;
1050if ($debut_suivant < $nombre_auteurs OR $debut > 0) {
1051        echo "<tr height='10'></tr>";
1052        echo "<tr bgcolor='white'><td align='left'>";
1053        if ($debut > 0) {
1054                $debut_prec = strval(max($debut - $max_par_page, 0));
1055                $link = new Link;
1056                $link->addVar('debut', $debut_prec);
1057                echo $link->getForm('GET');
1058                echo "<input type='submit' name='submit' value='&lt;&lt;&lt;' class='fondo'>";
1059                echo "</form>";
1060                //echo "<a href='$retour&debut=$debut_prec'>&lt;&lt;&lt;</a>";
1061        }
1062        echo "</td><td align='right'>";
1063        if ($debut_suivant < $nombre_auteurs) {
1064                $link = new Link;
1065                $link->addVar('debut', $debut_suivant);
1066                echo $link->getForm('GET');
1067                echo "<input type='submit' name='submit' value='&gt;&gt;&gt;' class='fondo'>";
1068                echo "</form>";
1069                //echo "<a href='$retour&debut=$debut_suivant'>&gt;&gt;&gt;</a>";
1070        }
1071        echo "</td></tr>\n";
1072}
1073
1074echo "</table>\n";
1075
1076fin_cadre_relief();
1077
1078
1079
1080//fin auteur
1081
1082}
1083
1084
1085if ($mode == "abonne") {
1086
1087
1088
1089if($effacer_definitif=$_POST['effacer_definitif']){
1090debut_cadre_relief("redacteurs-poubelle-24.gif");
1091spip_query("DELETE FROM spip_auteurs_articles WHERE id_auteur='$id_auteur'");
1092spip_query("DELETE FROM spip_auteurs WHERE id_auteur='$id_auteur'");
1093
1094echo "$nom ($email) "._T('spiplistes:efface');
1095fin_cadre_relief();
1096}
1097
1098
1099if($champs_extra AND ($confirm == 'oui') ){
1100// prendre en compte les extras
1101$extras = bloog_extra_recup_saisie('auteurs');
1102spip_query("UPDATE spip_auteurs SET extra = '$extras' WHERE id_auteur ='$id_auteur'");
1103}
1104
1105
1106$query = "SELECT * FROM spip_auteurs WHERE id_auteur='$id_auteur'";
1107$result = spip_query($query);
1108
1109
1110if ($row = spip_fetch_array($result)) {
1111        $id_auteur=$row['id_auteur'];
1112        $nom=$row['nom'];
1113        $bio=$row['bio'];
1114        $email=$row['email'];
1115        $nom_site_auteur=$row['nom_site'];
1116        $url_site=$row['url_site'];
1117        $login=$row['login'];
1118        $pass=$row['pass'];
1119        $statut=$row['statut'];
1120        $pgp=$row["pgp"];
1121        $messagerie=$row["messagerie"];
1122        $imessage=$row["imessage"];
1123        $extra = $row["extra"];
1124        $low_sec = $row["low_sec"];
1125
1126
1127       
1128
1129echo "<div align='center'>";
1130gros_titre($nom);
1131echo "</div>";
1132
1133if ($suppr_auteur AND $id_article) {
1134
1135        $query = spip_query("SELECT * FROM spip_articles WHERE id_article='$id_article'");
1136        $row = spip_fetch_array($query);
1137        $title = $row['titre'] ;
1138        echo "<h2> ".$nom." "._T('spiplistes:').$title." </h2>";
1139        $query="DELETE FROM spip_auteurs_articles WHERE id_auteur='$suppr_auteur' AND id_article='$id_article'";
1140        spip_query($query);
1141}
1142
1143
1144if ($statut == "0minirezo") $logo = "redacteurs-admin-24.gif";
1145else if ($statut == "5poubelle") $logo = "redacteurs-poubelle-24.gif";
1146else $logo = "redacteurs-24.gif";
1147
1148
1149if (strlen($email) > 2 OR strlen($bio) > 0 OR strlen($nom_site_auteur) > 0 OR ($champs_extra AND $extra)) {
1150        debut_cadre_relief("$logo");
1151        echo "<font face='Verdana,Arial,Sans,sans-serif'>";
1152        if (strlen($email) > 2) echo _T('email_2')." <b><a href='mailto:$email'>$email</a></b><br /> ";
1153        if (strlen($nom_site_auteur) > 2) echo _T('info_site_2')." <b><a href='$url_site'>$nom_site_auteur</a></b>";
1154        echo "<p>".propre($bio)."</p>";
1155        echo "</font>";
1156        fin_cadre_relief();
1157
1158        if ($champs_extra AND $extra) {
1159
1160       
1161        debut_cadre_relief("$logo");
1162
1163        echo"<form action='spip_listes.php3?mode=abonne' method='post'>";
1164         echo"<p align='center'>";
1165
1166         bloog_extra_saisie($extra, 'auteurs', 'inscription');
1167         echo"<input type='submit' name='Valider' value='"._T('spiplistes:modifier')."'>";
1168         echo"<input type='hidden' name='id_auteur'  value=$id_auteur >";
1169         echo"<input type='hidden' name='confirm'  value='oui' >";
1170         echo"</p>";
1171         echo"</form>";
1172        fin_cadre_relief();
1173         }
1174
1175       
1176}
1177
1178
1179echo "<p>";
1180if ($connect_statut == "0minirezo") $aff_art = "'prepa','prop','publie','refuse'";
1181else if ($connect_id_auteur == $id_auteur) $aff_art = "'prepa','prop','publie'";
1182else $aff_art = "'prop','publie'";
1183
1184afficher_articles_listes(_T('spiplistes:abonne_listes'),
1185        ", spip_auteurs_articles AS lien WHERE lien.id_auteur='$id_auteur' ".
1186        "AND lien.id_article=articles.id_article AND (articles.statut ='liste' OR articles.statut ='inact') ".
1187        "ORDER BY articles.date DESC", true, $id_auteur);
1188}
1189
1190if(!$effacer_definitif=$_POST['effacer_definitif']){
1191debut_cadre_relief("$logo");
1192echo "<h3>"._T('spiplistes:supprime_contact')."</h3>";
1193echo "<form action='spip_listes.php3?mode=abonne' method='post'>";
1194echo "<p align='center'>";
1195
1196echo "<input type='submit' name='Valider' value='"._T('spiplistes:supprime_contact_base')."'>";
1197echo "<input type='hidden' name='id_auteur'  value=$id_auteur >";
1198echo "<input type='hidden' name='nom'  value=$nom >";
1199echo "<input type='hidden' name='email'  value=$email >";
1200echo "<input type='hidden' name='effacer_definitif'  value='oui' >";
1201echo "</p>";
1202echo "</form>";
1203fin_cadre_relief();
1204}
1205
1206
1207}
1208//fin abonne
1209
1210
1211
1212// Historique des envois
1213
1214if ($mode == "historique" OR !$mode){
1215
1216if ($supp_dest) {
1217        spip_query("DELETE FROM spip_auteurs_messages WHERE id_message=$id_message AND id_auteur=$supp_dest");
1218}
1219
1220if ($detruire_message) {
1221        spip_query("DELETE FROM spip_messages WHERE id_message=$detruire_message");
1222        spip_query("DELETE FROM spip_auteurs_messages WHERE id_message=$detruire_message");
1223        spip_query("DELETE FROM spip_forum WHERE id_message=$detruire_message");
1224}
1225
1226
1227
1228
1229
1230/// afficher un tableau de messages
1231
1232
1233
1234///
1235
1236$messages_vus = '';
1237
1238global $table_prefix;
1239$query_message = "SELECT * FROM ".$table_prefix."_messages AS messages WHERE statut='encour' AND (type='auto' OR type='nl')";
1240bloog_afficher_messages(_T('spiplistes:aff_encours'), $query_message, false, true, true, false ,'24_send-receive.gif');
1241
1242
1243echo "<p>" ;
1244$query_message = "SELECT * FROM spip_messages AS messages WHERE type='nl' AND statut='redac'";
1245bloog_afficher_messages(_T('spiplistes:aff_redac'), $query_message, false, true, false, false ,'stock_mail.gif');
1246
1247echo "<p>" ;
1248
1249
1250// afficher les messages auto
1251$list = spip_query ("SELECT * FROM spip_articles WHERE statut = 'inact' OR statut = 'liste' ");
1252$message_pile = spip_num_rows($list);
1253if ($message_pile > 0){
1254
1255$flag_auto = false ;
1256while($row = spip_fetch_array($list)) {
1257$extraa = unserialize($row['extra']);
1258if($extraa['auto'] == 'oui') $flag_auto = true ;
1259}
1260
1261if($flag_auto){
1262debut_cadre_enfonce("stock_timer.gif");
1263                        echo "<div  class='chapo' style='border-top:1px #cccccc;width:100%;font-weight:bold;font-size:14px'>"._T('spiplistes:Messages_automatiques')."</div>";
1264                        echo "<p>" ;
1265                        $i = 0 ;
1266                        $list = spip_query ("SELECT * FROM spip_articles WHERE statut = 'inact' OR statut = 'liste' ");
1267                        $message_pile = spip_num_rows($list);
1268                        while($row = spip_fetch_array($list)) {
1269                        $id_article = $row['id_article'] ;
1270                        $titre = $row['titre'] ;
1271                         
1272                        // On récupère les extras
1273                        $extra = get_extra($id_article, 'article');
1274                        // Tient il n'y avait pas d'extra pour cette liste
1275                        if (!is_array($extra)) {
1276                                $extra = array();
1277                        }
1278
1279                        $sablier = time() - $extra['majnouv'] ;
1280                        $proch = round( ( (24*3600*$extra['periode']) - $sablier) / (3600*24) ) ;
1281
1282
1283                        if($extra['auto'] == "oui"){
1284                        if($i == 0){
1285                        echo "<div style='padding:5px'>" ;
1286                        $i = 1 ;
1287                        }else {
1288                        echo "<div style='padding:5px;background-color:#FFFFFF'>" ;
1289                        $i = 0 ;
1290                        }
1291                        echo "<div style='float:right'>";
1292                        if($proch != 0)echo "<br />"._T('spiplistes:prochain_envoi_prevu')."<b>$proch</b> "._T('spiplistes:jours')."</div>";
1293                        else echo "<br />"._T('spiplistes:prochain_envoi_aujd')."</div>";
1294                        $date_dernier = $extra['majnouv'] ;
1295                        $date_dernier = date(_T('spiplistes:format_date'),$date_dernier) ;
1296
1297                        echo "<a href='?mode=liste_edit&id_article=$id_article'>$titre</a> (".$extra['squelette'].")<br />
1298                        <i>"._T('spiplistes:Tous_les')." ".$extra['periode']." "._T('spiplistes:jours')." [<a href='../patron.php3?patron=".$extra['squelette']."&date=".$date_dernier."'>"._T('spiplistes:voir')."</a>]</i>" ;
1299                        echo "</div>" ;
1300
1301                        }
1302
1303                        }
1304
1305
1306fin_cadre_enfonce();
1307}// flag_auto
1308   }// message pile
1309
1310  echo "<p>" ;
1311
1312$query_message = "SELECT * FROM spip_messages AS messages WHERE statut='publie' AND type='auto' ";
1313bloog_afficher_messages(_T('spiplistes:messages_auto_envoye'), $query_message, false,  false, false);
1314
1315
1316echo "<p>" ;
1317$query_message = "SELECT * FROM spip_messages AS messages WHERE statut='publie' AND type='nl' ";
1318bloog_afficher_messages(_T('spiplistes:aff_envoye'), $query_message, false,  false, false);
1319
1320}
1321
1322
1323
1324
1325
1326if ($mode == "squelettes"){
1327
1328
1329//
1330// Définir les squelettes
1331//
1332
1333        debut_cadre_relief();
1334
1335
1336
1337
1338
1339
1340
1341
1342        echo "<table border=0 cellspacing=1 cellpadding=3 width=\"100%\">";
1343        echo "<tr><td bgcolor='$couleur_foncee' background='img_pack/rien.gif'>
1344        <b><font face='Verdana,Arial,Sans,sans-serif' size=3 COLOR='#FFFFFF'>"._T('spiplistes:definir_squel')."</font></b></td></tr>";
1345        echo "<tr><td bgcolor='#FFFFFF' background='img_pack/rien.gif' >";
1346        echo " </td></tr>";
1347        echo "<tr><td bgcolor='#EEEECC' background='img_pack/rien.gif' >";
1348
1349
1350        //un patron ?
1351
1352
1353
1354        echo "<b><font face='Verdana,Arial,Sans,sans-serif' size=3>";
1355        echo _T('spiplistes:patron_disponibles')."</font></b>";
1356
1357    echo "</td></tr>";
1358
1359    echo "<tr><td bgcolor='#FFFFFF' background='img_pack/rien.gif' >";
1360
1361
1362                echo "<form action='../patron.php3' METHOD='GET' TARGET='_blank'>"; 
1363      echo "<div>";
1364          echo "<div style='float:right;width:200px'>";
1365
1366
1367    $auj = date(_T('spiplistes:format_date'));
1368    echo "<p align='center'><b>"._T('spiplistes:date_ref')."</b><br /><input type='text' name='date' value=\"$auj\"></p>";
1369        echo " <input type='radio' name='format' value='HTML'> HTML<br />";
1370    echo "<input type='radio' name='format' value='texte'>"._T('spiplistes:val_texte')."<br />";
1371        echo "<p align='center'>"._T('spiplistes:alerte_modif')."<br /><br /><input type='submit' name='Valider' value='"._T('spiplistes:charger_le_patron')."' class='fondo'></p>";
1372        echo "</div>";
1373         
1374         
1375          $dir = "../patrons/";
1376
1377                // Ouvre un dossier bien connu, et liste tous les fichiers
1378                if (is_dir($dir)) {
1379                if ($dh = opendir($dir)) {
1380                        $total_option=0;
1381                                while (($file = readdir($dh)) !== false) {
1382                if($file != '..' && $file !='.' && $file !='') $total_option=$total_option+1;
1383                        }
1384                        closedir($dh);
1385                        }
1386                                if ($dh = opendir($dir)) {
1387                        echo "<SELECT name='patron' size='".$total_option."'>";
1388                               
1389                                        while (($file = readdir($dh)) !== false) {
1390                         if($file != '..' && $file !='.' && $file !='')
1391                                                {
1392                                                $titre_option=ereg_replace('(\.html|\.HTML)','',$file);
1393                                                echo "<option value='$titre_option'>$titre_option</OPTION>";
1394                                                }
1395                                        }
1396                                echo "</SELECT>";
1397                        closedir($dh);
1398                                }
1399                }
1400                         
1401       
1402        echo "</div>";
1403        echo "</FORM>";
1404
1405
1406                echo "<blockquote><i>"._T('spiplistes:definir_squel_texte')."</i></blockquote>";
1407                               
1408
1409        echo "</td></tr>";
1410
1411
1412        echo "</table>\n";
1413
1414        echo "</FORM>";
1415
1416        fin_cadre_relief();
1417
1418}
1419
1420
1421if($mode == "creer_liste"){
1422
1423
1424$articles_surtitre = lire_meta("articles_surtitre");
1425$articles_soustitre = lire_meta("articles_soustitre");
1426$articles_descriptif = lire_meta("articles_descriptif");
1427$articles_urlref = lire_meta("articles_urlref");
1428$articles_chapeau = lire_meta("articles_chapeau");
1429$articles_ps = lire_meta("articles_ps");
1430$articles_redac = lire_meta("articles_redac");
1431$articles_mots = lire_meta("articles_mots");
1432$articles_modif = lire_meta("articles_modif");
1433
1434// securite
1435$id_article = intval($id_article);
1436$id_rubrique = intval($id_rubrique);
1437$lier_trad = intval($lier_trad);
1438unset ($flag_editable);
1439
1440//
1441// Creation de l'objet article
1442//
1443
1444if ($id_article) {
1445        spip_query("UPDATE spip_articles SET date_modif=NOW(), auteur_modif=$connect_id_auteur WHERE id_article=$id_article");
1446        $id_article_bloque = $id_article;       // message pour inc_presentation
1447
1448        // Recuperer les donnees de l'article
1449        $query = "SELECT * FROM spip_articles WHERE id_article=$id_article";
1450        $result = spip_query($query);
1451
1452        if ($row = spip_fetch_array($result)) {
1453                $id_article = $row["id_article"];
1454                $surtitre = $row["surtitre"];
1455                $titre = $row["titre"];
1456                $soustitre = $row["soustitre"];
1457                $id_rubrique = $row["id_rubrique"];
1458                $id_secteur = $row['id_secteur'];
1459                $descriptif = $row["descriptif"];
1460                $nom_site = $row["nom_site"];
1461                $url_site = $row["url_site"];
1462                $chapo = $row["chapo"];
1463                $texte = $row["texte"];
1464                $ps = $row["ps"];
1465                $date = $row["date"];
1466                $statut = $row['statut'];
1467                $date_redac = $row['date_redac'];
1468                if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$date_redac,$regs)){
1469                        $mois_redac = $regs[2];
1470                        $jour_redac = $regs[3];
1471                        $annee_redac = $regs[1];
1472                        if ($annee_redac > 4000) $annee_redac -= 9000;
1473                }
1474                $extra=$row["extra"];
1475
1476                $query = "SELECT * FROM spip_auteurs_articles WHERE id_article=$id_article AND id_auteur=$connect_id_auteur";
1477                $result_auteur = spip_query($query);
1478                $flag_auteur = (spip_num_rows($result_auteur) > 0);
1479
1480                $flag_editable = (acces_rubrique($id_rubrique) OR ($flag_auteur > 0 AND ($statut == 'prepa' OR $statut == 'prop' OR $new == 'oui')));
1481        }
1482}
1483else if ($new=='oui') {
1484        if ($lier_trad) {
1485                // Pas de langue choisie par defaut
1486                $changer_lang = '';
1487
1488                // Recuperer les donnees de la traduction
1489                $query = "SELECT * FROM spip_articles WHERE id_article=$lier_trad";
1490                $result = spip_query($query);
1491
1492                if ($row = spip_fetch_array($result)) {
1493                        $surtitre = $row["surtitre"];
1494                        $titre = filtrer_entites(_T('info_nouvelle_traduction')).' '.$row["titre"];
1495                        $soustitre = $row["soustitre"];
1496                        $id_rubrique_trad = $row["id_rubrique"];
1497                        $descriptif = $row["descriptif"];
1498                        $nom_site = $row["nom_site"];
1499                        $url_site = $row["url_site"];
1500                        $chapo = $row["chapo"];
1501                        $texte = $row["texte"];
1502                        $ps = $row["ps"];
1503                        $date = $row["date"];
1504                        $date_redac = $row['date_redac'];
1505                        if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$date_redac,$regs)) {
1506                                $mois_redac = $regs[2];
1507                                $jour_redac = $regs[3];
1508                                $annee_redac = $regs[1];
1509                                if ($annee_redac > 4000) $annee_redac -= 9000;
1510                        }
1511                        $extra = $row["extra"];
1512                }
1513                $langues_autorisees = lire_meta('langues_multilingue');
1514
1515                // Regler la langue, si possible
1516                if (ereg(",$spip_lang,", ",$langues_autorisees,")) {
1517                        if (lire_meta('multi_articles') == 'oui') {
1518                                // Si le menu de langues est autorise sur les articles,
1519                                // on peut changer la langue quelle que soit la rubrique
1520                                $changer_lang = $spip_lang;
1521                        }
1522                        else if (lire_meta('multi_rubriques') == 'oui') {
1523                                // Chercher la rubrique la plus adaptee pour accueillir l'article
1524                                if (lire_meta('multi_secteurs') == 'oui')
1525                                        $id_parent = 0;
1526                                else {
1527                                        $query = "SELECT id_parent FROM spip_rubriques WHERE id_rubrique=$id_rubrique";
1528                                        $row_rub = spip_fetch_array(spip_query($query));
1529                                        $id_parent = $row_rub['id_parent'];
1530                                }
1531                                $query = "SELECT id_rubrique FROM spip_rubriques WHERE lang='$spip_lang' AND id_parent=$id_parent";
1532                                if ($row_rub = spip_fetch_array(spip_query($query))) {
1533                                        $id_rubrique = $id_secteur = $row_rub['id_rubrique'];
1534                                        $changer_lang = 'herit';
1535                                }
1536                        }
1537                }
1538        }
1539        else {
1540                // Nouvel article : titre par defaut
1541                $titre = filtrer_entites(_T('spiplistes:Nouvelle_liste_de_diffusion'));
1542                $onfocus = " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\"";
1543        }
1544        if (!$id_secteur) {
1545                $row_rub = spip_fetch_array(spip_query("SELECT id_secteur FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
1546                $id_secteur = $row_rub['id_secteur'];
1547        }
1548        $flag_editable = true;
1549}
1550
1551
1552
1553if ($id_article && $id_document) {
1554        $query_doc = "SELECT * FROM spip_documents_articles WHERE id_document=$id_document AND id_article=$id_article";
1555        $result_doc = spip_query($query_doc);
1556        $flag_document_editable = (spip_num_rows($result_doc) > 0);
1557} else {
1558        $flag_document_editable = false;
1559}
1560
1561$modif_document = $GLOBALS['modif_document'];
1562if ($modif_document == 'oui' AND $flag_document_editable) {
1563        $titre_document = addslashes(corriger_caracteres($titre_document));
1564        $descriptif_document = addslashes(corriger_caracteres($descriptif_document));
1565        $query = "UPDATE spip_documents SET titre=\"$titre_document\", descriptif=\"$descriptif_document\"";
1566        if ($largeur_document AND $hauteur_document) $query .= ", largeur='$largeur_document', hauteur='$hauteur_document'";
1567        $query .= " WHERE id_document=$id_document";
1568        spip_query($query);
1569}
1570
1571
1572
1573
1574//
1575// Gestion des textes trop longs (limitation brouteurs)
1576//
1577
1578function coupe_trop_long($texte){       // utile pour les textes > 32ko
1579        if (strlen($texte) > 28*1024) {
1580                $texte = str_replace("\r\n","\n",$texte);
1581                $pos = strpos($texte, "\n\n\n", 28*1024);       // coupe para > 28 ko
1582                if ($pos > 0 and $pos < 32 * 1024) {
1583                        $debut = substr($texte, 0, $pos)."\n\n\n<!--SPIP-->\n";
1584                        $suite = substr($texte, $pos + 3);
1585                } else {
1586                        $pos = strpos($texte, " ", 28*1024);    // sinon coupe espace
1587                        if (!($pos > 0 and $pos < 32 * 1024))
1588                                $pos = 28*1024; // au pire
1589                        $debut = substr($texte,0,$pos);
1590                        $suite = substr($texte,$pos + 1);
1591                }
1592                return (array($debut,$suite));
1593        }
1594        else
1595                return (array($texte,''));
1596}
1597
1598
1599debut_cadre_formulaire();
1600 /*
1601
1602function mySel($varaut,$variable) {
1603        $retour= " value=\"$varaut\"";
1604
1605        if ($variable==$varaut) {
1606                $retour.= " SELECTED";
1607        }
1608
1609        return $retour;
1610}
1611
1612
1613
1614function my_sel($num,$tex,$comp){
1615        if ($num==$comp){
1616                echo "<option value='$num' SELECTED>$tex\n";
1617        }else{
1618                echo "<option value='$num'>$tex\n";
1619        }
1620
1621}
1622
1623function afficher_mois($mois){
1624        my_sel("01",_T('date_mois_1'),$mois);
1625        my_sel("02",_T('date_mois_2'),$mois);
1626        my_sel("03",_T('date_mois_3'),$mois);
1627        my_sel("04",_T('date_mois_4'),$mois);
1628        my_sel("05",_T('date_mois_5'),$mois);
1629        my_sel("06",_T('date_mois_6'),$mois);
1630        my_sel("07",_T('date_mois_7'),$mois);
1631        my_sel("08",_T('date_mois_8'),$mois);
1632        my_sel("09",_T('date_mois_9'),$mois);
1633        my_sel("10",_T('date_mois_10'),$mois);
1634        my_sel("11",_T('date_mois_11'),$mois);
1635        my_sel("12",_T('date_mois_12'),$mois);
1636}
1637
1638function afficher_jour($jour){
1639        for($i=1;$i<32;$i++){
1640                if ($i<10){$aff="&nbsp;".$i;}else{$aff=$i;}
1641                my_sel($i,$aff,$jour);
1642        }
1643}
1644  */
1645
1646
1647
1648echo "\n<table cellpadding=0 cellspacing=0 border=0 width='100%'>";
1649echo "<tr width='100%'>";
1650echo "<td>";
1651        if ($lier_trad) icone(_T('icone_retour'), "spip_listes.php3?mode=liste_edit&id_article=$lier_trad", "article-24.gif", "rien.gif");
1652        else icone(_T('icone_retour'), "spip_listes.php3?mode=liste_edit&id_article=$id_article", "article-24.gif", "rien.gif");
1653
1654echo "</td>";
1655        echo "<td><img src='img_pack/rien.gif' width=10></td>\n";
1656echo "<td width='100%'>";
1657echo _T('spiplistes:modifier_liste');
1658gros_titre($titre);
1659echo "</td></tr></table>";
1660echo "<p>";
1661
1662echo "<p><HR><p>";
1663
1664        $titre = entites_html($titre);
1665        $soustitre = entites_html($soustitre);
1666        $surtitre = entites_html($surtitre);
1667
1668        $descriptif = entites_html($descriptif);
1669        $nom_site = entites_html($nom_site);
1670        $url_site = entites_html($url_site);
1671        $chapo = entites_html($chapo);
1672        $texte = entites_html($texte);
1673        $ps = entites_html($ps);
1674
1675        $lien = 'spip_listes.php3?mode=liste_edit';
1676        if ($id_article) $lien .= "&id_article=$id_article";
1677        echo "<form action='$lien' METHOD='post' name='formulaire'>\n";
1678
1679        if ($id_article)
1680                echo "<input type='Hidden' name='id_article' value='$id_article'>";
1681        else if ($new == 'oui')
1682                echo "<input type='Hidden' name='new' value='oui'>";
1683
1684        if ($lier_trad) {
1685                echo "<input type='Hidden' name='lier_trad' value='$lier_trad'>";
1686                echo "<input type='Hidden' name='changer_lang' value='$spip_lang'>";
1687        }
1688
1689        /*
1690        if (($options == "avancees" AND $articles_surtitre != "non") OR $surtitre) {
1691                echo "<b>"._T('texte_sur_titre')."</b>";
1692                echo "<br /><input type='text' name='surtitre' class='forml' value=\"$surtitre\" size='40'><p>";
1693        }
1694        else {
1695                echo "<input type='hidden' name='surtitre' value=\"$surtitre\" >";
1696        }
1697    */
1698        echo _T('texte_titre_obligatoire');
1699        echo "<br /><input type='text' name='titre' style='font-weight: bold; font-size: 13px;' class='formo' value=\"$titre\" size='40' $onfocus><p>";
1700
1701        /*
1702        if (($articles_soustitre != "non") OR $soustitre) {
1703                echo "<b>"._T('texte_sous_titre')."</b>";
1704                echo "<br /><input type='text' name='soustitre' class='forml' value=\"$soustitre\" size='40'><br /><br />";
1705        }
1706        else {
1707                echo "<input type='hidden' name='soustitre' value=\"$soustitre\">";
1708        }
1709    */
1710
1711
1712
1713
1714        if ($new != 'oui') echo "<input type='hidden' name='id_rubrique_old' value=\"$id_rubrique\" >";
1715
1716
1717        if (($options == "avancees" AND $articles_descriptif != "non") OR $descriptif) {
1718                echo "<p><b>"._T('texte_descriptif_rapide')."</b>";
1719                echo aide ("artdesc");
1720                echo "<br />"._T('texte_contenu_article')."<br />";
1721                echo "<TEXTAREA name='descriptif' class='forml' ROWS='2' COLS='40' wrap=soft>";
1722                echo $descriptif;
1723                echo "</TEXTAREA><p>\n";
1724        }
1725        else {
1726                echo "<input type='hidden' name='descriptif' value=\"$descriptif\">";
1727        }
1728
1729        /*
1730
1731        if (($options == "avancees" AND $articles_urlref != "non") OR $nom_site OR $url_site) {
1732                echo _T('entree_liens_sites')."<br />\n";
1733                echo _T('info_titre')." ";
1734                echo "<input type='text' name='nom_site' class='forml' width='40' value=\"$nom_site\"/><br />\n";
1735                echo _T('info_url')." ";
1736                echo "<input type='text' name='url_site' class='forml' width='40' value=\"$url_site\"/>";
1737        }
1738
1739        if (substr($chapo, 0, 1) == '=') {
1740                $virtuel = substr($chapo, 1);
1741                $chapo = "";
1742        }
1743
1744        if ($connect_statut=="0minirezo" AND $virtuel){
1745                echo "<p><div style='border: 1px dashed #666666; background-color: #f0f0f0; padding: 5px;'>";
1746                echo "<table width=100% cellspacing=0 cellpadding=0 border=0>";
1747                echo "<tr><td valign='top'>";
1748                echo "<font face='Verdana,Arial,Sans,sans-serif' size=2>";
1749                echo "<b><label for='confirme-virtuel'>"._T('info_redirection')."&nbsp;:</label></b>";
1750                echo aide ("artvirt");
1751                echo "</font>";
1752                echo "</td>";
1753                echo "<td width=10>&nbsp;</td>";
1754                echo "<td valign='top' width='50%'>";
1755                if (!$virtuel) $virtuel = "http://";
1756                echo "<input type='text' name='virtuel' class='forml' style='font-size:9px;' value=\"$virtuel\" size='40'>";
1757                echo "<input type='hidden' name='changer_virtuel' value='oui'>";
1758                echo "</td></tr></table>\n";
1759                echo "<font face='Verdana,Arial,Sans,sans-serif' size=2>";
1760                echo _T('texte_article_virtuel_reference');
1761                echo "</font>";
1762                echo "</div><p>\n";
1763        }
1764
1765        else {
1766                echo "<HR>";
1767
1768                if (($articles_chapeau != "non") OR $chapo) {
1769                        if ($spip_ecran == "large") $rows = 8;
1770                        else $rows = 5;
1771                        echo "<b>"._T('info_chapeau')."</b>";
1772                        echo aide ("artchap");
1773                        echo "<br />"._T('texte_introductif_article')."<br />";
1774                        echo "<TEXTAREA name='chapo' class='forml' ROWS='$rows' COLS='40' wrap=soft>";
1775                        echo $chapo;
1776                        echo "</TEXTAREA><p>\n";
1777                }
1778                else {
1779                        echo "<input type='hidden' name='chapo' value=\"$chapo\">";
1780                }
1781
1782        }
1783
1784        */
1785
1786        if ($spip_ecran == "large") $rows = 28;
1787        else $rows = 20;
1788
1789        if (strlen($texte)>29*1024) // texte > 32 ko -> decouper en morceaux
1790        {
1791                $textes_supplement = "<br /><font color='red'>"._T('info_texte_long')."</font>\n";
1792                while (strlen($texte)>29*1024)
1793                {
1794                        $nombre_textes ++;
1795                        list($texte1,$texte) = coupe_trop_long($texte);
1796
1797                        $textes_supplement .= "<br />";
1798                        $textes_supplement .= afficher_barre('formulaire', 'texte'.$nombre_textes);
1799                        $textes_supplement .= "<textarea name='texte$nombre_textes'".
1800                                " class='formo' ".afficher_claret()." rows='$rows' cols='40' wrap=soft>" .
1801                                $texte1 . "</textarea><p>\n";
1802                }
1803        }
1804        echo "<b>"._T('spiplistes:txt_inscription')."</b>";
1805        echo "<br />"._T('spiplistes:txt_abonnement');
1806        echo "<br />"._T('texte_enrichir_mise_a_jour');
1807        echo aide("raccourcis");
1808
1809        echo $textes_supplement;
1810
1811        //echo "<br />";
1812        echo afficher_barre('formulaire', 'texte');
1813        echo "<textarea id='text_area' name='texte' ".afficher_claret()." class='formo' rows='$rows' cols='40' wrap=soft>";
1814        echo $texte;
1815        echo "</textarea>\n";
1816
1817/*      // traitement automatique des sauts de ligne : pas mur
1818        if ($proposer_autobr AND ($options == "avancees")) {
1819                echo '<div class="verdana2">';
1820                echo '<input type="checkbox" class="checkbox" name="post_autobr" id="autobr" value="1" />';
1821                echo '<label for="autobr">'._L("prendre en compte les sauts de ligne simples").'</label></div>';
1822        }
1823
1824
1825        if (($articles_ps != "non" AND $options == "avancees") OR $ps) {
1826                echo "<p><b>"._T('info_post_scriptum')."</b><br />";
1827                echo "<textarea name='ps' class='forml' rows='5' cols='40' wrap=soft>";
1828                echo $ps;
1829                echo "</textarea><p>\n";
1830        }
1831        else {
1832                echo "<input type='hidden' name='ps' value=\"$ps\">";
1833        }
1834 */
1835        if ($champs_extra) {
1836                include_ecrire("inc_extra.php3");
1837                extra_saisie($extra, 'articles', $id_secteur);
1838        }
1839
1840        if ($date)
1841                echo "<input type='Hidden' name='date' value=\"$date\" size='40'><p>";
1842
1843        if ($new == "oui")
1844                echo "<input type='Hidden' name='statut_nouv' value=\"inact\" size='40'><p>";
1845
1846        echo "<div align='right'>";
1847        echo "<input class='fondo' type='submit' name='Valider' value='"._T('bouton_valider')."'>";
1848        echo "</div></form>";
1849       
1850       
1851
1852fin_cadre_formulaire();
1853
1854
1855
1856
1857
1858}
1859
1860/// afficher une liste
1861
1862if ($mode == "liste_edit"){
1863////
1864
1865  //yoyo
1866
1867if ($id_article==0) {
1868        if ($new=='oui') {
1869                $id_rubrique = intval($id_rubrique);
1870                if ($titre=='') $titre = _T('spiplistes:liste_sans_titre');
1871
1872                $langue_new = '';
1873                $result_lang_rub = spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique");
1874                if ($row = spip_fetch_array($result_lang_rub))
1875                        $langue_new = $row["lang"];
1876
1877                if (!$langue_new) $langue_new = lire_meta('langue_site');
1878                $langue_choisie_new = 'non';
1879
1880                $forums_publics = substr(lire_meta('forums_publics'),0,3);
1881                spip_query("INSERT INTO spip_articles (id_rubrique, statut, date, accepter_forum, lang, langue_choisie) VALUES ($id_rubrique, 'inact', NOW(), '$forums_publics', '$langue_new', '$langue_choisie_new')");
1882                $id_article = spip_insert_id();
1883                spip_query("DELETE FROM spip_auteurs_articles WHERE id_article = $id_article");
1884                spip_query("INSERT INTO spip_auteurs_articles (id_auteur, id_article) VALUES ($connect_id_auteur, $id_article)");
1885        } /*else {
1886                @header("Location: ./index.php3");
1887                exit;
1888        }*/
1889}
1890
1891
1892$clean_link = new Link("spip_listes.php3?mode=list_edit&id_article=$id_article");
1893
1894// Initialiser doublons pour documents (completes par "propre($texte)")
1895$id_doublons['documents'] = "0";
1896
1897
1898
1899//////////////////////////////////////////////////////
1900// Determiner les droits d'edition de l'article
1901//
1902
1903$query = "SELECT statut, titre, id_rubrique FROM spip_articles WHERE id_article=$id_article";
1904$result = spip_query($query);
1905if ($row = spip_fetch_array($result)) {
1906        $statut_article = $row['statut'];
1907        $titre_article = $row['titre'];
1908        $rubrique_article = $row['id_rubrique'];
1909}
1910else {
1911        $statut_article = '';
1912}
1913
1914$query = "SELECT * FROM spip_auteurs_articles WHERE id_article=$id_article AND id_auteur=$connect_id_auteur";
1915$result_auteur = spip_query($query);
1916
1917//
1918// Droits mieux structurés que ca ?
1919//
1920
1921$flag_auteur = (spip_num_rows($result_auteur) > 0);
1922$flag_editable = (acces_rubrique($rubrique_article)
1923        OR ($flag_auteur AND ($statut_article == 'inact' OR $statut_article == 'liste' OR $statut_article == 'poublist')));
1924
1925
1926//
1927// Appliquer les modifications
1928//
1929
1930
1931
1932
1933$suivi_edito = lire_meta("suivi_edito");
1934$reindexer = false;
1935
1936$ok_nouveau_statut = false;
1937
1938function terminer_changement_statut() {
1939        global $ok_nouveau_statut, $statut_nouv, $statut_ancien, $id_article, $reindexer;
1940
1941        if ($ok_nouveau_statut) {
1942                calculer_rubriques();
1943                if ($statut_nouv == 'publie' AND $statut_ancien != $statut_nouv) {
1944                        include_ecrire("inc_mail.php3");
1945                        envoyer_mail_publication($id_article);
1946                }
1947               
1948        }
1949
1950       
1951}
1952
1953
1954
1955if ($statut_nouv) {
1956        if ($flag_auteur) {
1957             //il faut etre admin et abonné pour modifer une liste
1958                if ($statut_nouv == 'liste' AND $statut_article == 'inact')
1959                        $ok_nouveau_statut = true;
1960                else if ($statut_nouv == 'inact' AND $statut_article == 'poublist')
1961                        $ok_nouveau_statut = true;
1962                else if ($statut_nouv == 'poublist' AND $statut_article == 'inact')
1963                        $ok_nouveau_statut = true;
1964                else if ($statut_nouv == 'poublist' AND $statut_article == 'liste')
1965                        $ok_nouveau_statut = true;
1966                else if ($statut_nouv == 'inact' AND $statut_article == 'liste')
1967                        $ok_nouveau_statut = true;
1968                else if ($statut_nouv == 'liste' AND $statut_article == 'poublist')
1969                        $ok_nouveau_statut = true;
1970        }
1971        if ($ok_nouveau_statut) {
1972                $query = "UPDATE spip_articles SET statut='$statut_nouv' WHERE id_article=$id_article";
1973                $result = spip_query($query);
1974
1975
1976        }
1977}
1978
1979if ($jour && $flag_editable) {
1980        if ($annee == "0000") $mois = "00";
1981        if ($mois == "00") $jour = "00";
1982        $query = "UPDATE spip_articles SET date='$annee-$mois-$jour' WHERE id_article=$id_article";
1983        $result = spip_query($query);
1984        calculer_rubriques();
1985}
1986
1987if ($jour_redac && $flag_editable) {
1988        if ($annee_redac<>'' AND $annee_redac < 1001) $annee_redac += 9000;
1989
1990        if ($mois_redac == "00") $jour_redac = "00";
1991
1992        if ($avec_redac=="non"){
1993                $annee_redac = '0000';
1994                $mois_redac = '00';
1995                $jour_redac = '00';
1996        }
1997
1998        $query = "UPDATE spip_articles SET date_redac='$annee_redac-$mois_redac-$jour_redac' WHERE id_article=$id_article";
1999        $result = spip_query($query);
2000}
2001
2002
2003// Appliquer la modification de langue
2004if (lire_meta('multi_articles') == 'oui' AND $flag_editable) {
2005        $row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$rubrique_article"));
2006        $langue_parent = $row['lang'];
2007
2008        if ($changer_lang) {
2009                if ($changer_lang != "herit")
2010                        spip_query("UPDATE spip_articles SET lang='".addslashes($changer_lang)."', langue_choisie='oui' WHERE id_article=$id_article");
2011                else
2012                        spip_query("UPDATE spip_articles SET lang='".addslashes($langue_parent)."', langue_choisie='non' WHERE id_article=$id_article");
2013        }
2014}
2015
2016
2017
2018//
2019// Reunit les textes decoupes parce que trop longs
2020//
2021
2022$nb_texte = 0;
2023while ($nb_texte ++ < 100){             // 100 pour eviter une improbable boucle infinie
2024        $varname = "texte$nb_texte";
2025        $texte_plus = $$varname;        // double $ pour obtenir $texte1, $texte2...
2026        if ($texte_plus){
2027                $texte_plus = ereg_replace("<!--SPIP-->[\n\r]*","\n\n\n",$texte_plus);
2028                $texte_ajout .= " ".$texte_plus;
2029        } else {
2030                break;
2031        }
2032}
2033$texte = $texte_ajout . $texte;
2034
2035//
2036// Traiter les fins de lignes
2037//
2038if ($post_autobr) {
2039        $chapo = post_autobr($chapo);
2040        $texte = post_autobr($texte);
2041}
2042
2043
2044
2045if ($titre && !$ajout_forum && $flag_editable) {
2046        $surtitre = addslashes(corriger_caracteres($surtitre));
2047        $titre = addslashes(corriger_caracteres($titre));
2048        $soustitre = addslashes(corriger_caracteres($soustitre));
2049        $descriptif = addslashes(corriger_caracteres($descriptif));
2050        $nom_site = addslashes(corriger_caracteres($nom_site));
2051        $url_site = addslashes(corriger_caracteres($url_site));
2052        $chapo = addslashes(corriger_caracteres($chapo));
2053        $texte = addslashes(corriger_caracteres($texte));
2054        $ps = addslashes(corriger_caracteres($ps));
2055
2056
2057        // Verifier qu'on envoie bien dans une rubrique autorisee
2058        if ($flag_auteur OR acces_rubrique($id_rubrique)) {
2059                $change_rubrique = "id_rubrique=\"$id_rubrique\",";
2060        } else {
2061                $change_rubrique = "";
2062        }
2063
2064        $query = "UPDATE spip_articles SET surtitre=\"$surtitre\", titre=\"$titre\", soustitre=\"$soustitre\", $change_rubrique descriptif=\"$descriptif\", chapo=\"$chapo\", texte=\"$texte\", ps=\"$ps\", url_site=\"$url_site\", nom_site=\"$nom_site\" $add_extra WHERE id_article=$id_article";
2065        $result = spip_query($query);
2066        calculer_rubriques();
2067        if ($statut_article == 'publie') $reindexer = true;
2068       
2069       
2070
2071        // Changer la langue heritee
2072        if ($id_rubrique != $id_rubrique_old) {
2073                $row = spip_fetch_array(spip_query("SELECT lang, langue_choisie FROM spip_articles WHERE id_article=$id_article"));
2074                $langue_old = $row['lang'];
2075                $langue_choisie_old = $row['langue_choisie'];
2076
2077                if ($langue_choisie_old != "oui") {
2078                        $row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
2079                        $langue_new = $row['lang'];
2080                        if ($langue_new != $langue_old) spip_query("UPDATE spip_articles SET lang = '$langue_new' WHERE id_article = $id_article");
2081                }
2082        }
2083
2084        // afficher le nouveau titre dans la barre de fenetre
2085        $titre_article = stripslashes($titre);
2086
2087        // marquer l'article (important pour les articles nouvellement crees)
2088        spip_query("UPDATE spip_articles SET date_modif=NOW(), auteur_modif=$connect_id_auteur WHERE id_article=$id_article");
2089        $id_article_bloque = $id_article;   // message pour inc_presentation
2090}
2091
2092
2093
2094//
2095// Suivi forums publics
2096//
2097
2098if (!function_exists('get_forums_publics')) {
2099
2100// fonction dupliquee dans inc-forum.php3
2101function get_forums_publics($id_article=0) {
2102        $forums_publics = lire_meta("forums_publics");
2103        if ($id_article) {
2104                $query = "SELECT accepter_forum FROM spip_articles WHERE id_article=$id_article";
2105                $res = spip_query($query);
2106                if ($obj = spip_fetch_object($res))
2107                        $forums_publics = $obj->accepter_forum;
2108        } else { // dans ce contexte, inutile
2109                $forums_publics = substr(lire_meta("forums_publics"),0,3);
2110        }
2111        return $forums_publics;
2112}
2113
2114}
2115
2116//
2117// Lire l'article
2118//
2119
2120$query = "SELECT * FROM spip_articles WHERE id_article='$id_article'";
2121$result = spip_query($query);
2122
2123if ($row = spip_fetch_array($result)) {
2124        $id_article = $row["id_article"];
2125        $surtitre = $row["surtitre"];
2126        $titre = $row["titre"];
2127        $soustitre = $row["soustitre"];
2128        $id_rubrique = $row["id_rubrique"];
2129        $descriptif = $row["descriptif"];
2130        $nom_site = $row["nom_site"];
2131        $url_site = $row["url_site"];
2132        $chapo = $row["chapo"];
2133        $texte = $row["texte"];
2134        $ps = $row["ps"];
2135        $date = $row["date"];
2136        $statut_article = $row["statut"];
2137        $maj = $row["maj"];
2138        $date_redac = $row["date_redac"];
2139        $visites = $row["visites"];
2140        $referers = $row["referers"];
2141        $extra = $row["extra"];
2142        $id_trad = $row["id_trad"];
2143}
2144
2145
2146
2147if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})", $date_redac, $regs)) {
2148        $mois_redac = $regs[2];
2149        $jour_redac = $regs[3];
2150        $annee_redac = $regs[1];
2151        if ($annee_redac > 4000) $annee_redac -= 9000;
2152}
2153
2154if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})", $date, $regs)) {
2155        $mois = $regs[2];
2156        $jour = $regs[3];
2157        $annee = $regs[1];
2158}
2159
2160
2161
2162
2163
2164changer_typo('','article'.$id_article);
2165
2166
2167if (!function_exists('my_sel')) {
2168
2169        function my_sel($num,$tex,$comp){
2170                if ($num==$comp){
2171                        echo "<option value='$num' SELECTED>$tex\n";
2172                }else{
2173                        echo "<option value='$num'>$tex\n";
2174                }
2175       
2176        }
2177       
2178        function afficher_mois($mois){
2179                my_sel("00",_T('mois_non_connu'),$mois);
2180                my_sel("01",_T('date_mois_1'),$mois);
2181                my_sel("02",_T('date_mois_2'),$mois);
2182                my_sel("03",_T('date_mois_3'),$mois);
2183                my_sel("04",_T('date_mois_4'),$mois);
2184                my_sel("05",_T('date_mois_5'),$mois);
2185                my_sel("06",_T('date_mois_6'),$mois);
2186                my_sel("07",_T('date_mois_7'),$mois);
2187                my_sel("08",_T('date_mois_8'),$mois);
2188                my_sel("09",_T('date_mois_9'),$mois);
2189                my_sel("10",_T('date_mois_10'),$mois);
2190                my_sel("11",_T('date_mois_11'),$mois);
2191                my_sel("12",_T('date_mois_12'),$mois);
2192        }
2193       
2194        function afficher_annee($annee){
2195                // Cette ligne permettrait de faire des articles sans date de publication
2196                // my_sel("0000","n.c.",$annee);
2197       
2198                if($annee<1996 AND $annee <> 0){
2199                        echo "<option value='$annee' SELECTED>$annee\n";
2200                }
2201                for($i=1996;$i<date(Y)+2;$i++){
2202                        my_sel($i,$i,$annee);
2203                }
2204        }
2205       
2206        function afficher_jour($jour){
2207                my_sel("00",_T('jour_non_connu_nc'),$jour);
2208                for($i=1;$i<32;$i++){
2209                        if ($i<10){$aff="&nbsp;".$i;}else{$aff=$i;}
2210                        my_sel($i,$aff,$jour);
2211                }
2212        }
2213
2214}
2215
2216// prendre en compte les modifs sur les extras
2217if($Valider_auto){
2218
2219        // On récupère les extras
2220   $extra = get_extra($id_article, 'article');
2221
2222          // Tient il n'y avait pas d'extra
2223          if (!is_array($extra)) {
2224          $extra = array();
2225          }
2226
2227        if($auto == "oui"){
2228         $extra['auto'] = "oui" ;
2229         set_extra($id_article, $extra, 'article');
2230         }
2231         elseif($auto == "non"){
2232             $extra['auto'] = "non" ;
2233             set_extra($id_article, $extra, 'article');
2234             }
2235
2236                         
2237                if($email_envoi){
2238         $extra = get_extra($id_article, 'article');
2239                 $extra['email_envoi'] = $email_envoi ;
2240         set_extra($id_article, $extra, 'article');
2241         }
2242         
2243
2244
2245   if(($changer_extra == "oui") AND ($auto == "oui") ){
2246        // On récupère les extras
2247        $extra = get_extra($id_article, 'article');
2248
2249        // Tient il n'y avait pas d'extra
2250        if (!is_array($extra)) {
2251        $extra = array();
2252        }
2253
2254     
2255      $extra['squelette'] = $patron ;
2256      $extra['periode'] = $periode ;
2257   
2258       
2259        if($envoyer_direct){
2260        $extra['majnouv'] = (time() - ($periode * 3600*24));
2261        //echo"<iframe src='../inc-bloog_meleuse.php3' height='1' width='1' frameborder='0' >Désolé</iframe>";
2262        }elseif(!$extra['majnouv']){
2263        $extra['majnouv'] = time();
2264        }
2265      set_extra($id_article, $extra, 'article');
2266     
2267      }
2268}
2269        include_ecrire("inc_extra.php3");
2270  /*echo "ap" ;
2271  $ex = get_extra($id_article, 'article');
2272  extra_affichage(serialize($ex), "articles"); */
2273
2274
2275debut_cadre_relief();
2276echo "<center>";
2277
2278//
2279// Titre, surtitre, sous-titre
2280//
2281
2282if($statut == 'liste') $couleur = 'publie';
2283if($statut == 'inact') $couleur = 'redac';
2284if($statut == 'poublist') $couleur = 'poubelle';
2285
2286$logo_statut = "puce-".puce_statut("publie").".gif";
2287
2288echo "\n<table cellpadding=0 cellspacing=0 border=0 width='100%'>";
2289echo "<tr width='100%'><td width='100%' valign='top'>";
2290if ($surtitre) {
2291        echo "<span $dir_lang><font face='arial,helvetica' size=3><b>";
2292        echo typo($surtitre);
2293        echo "</b></font></span>\n";
2294}
2295        gros_titre($titre, $logo_statut);
2296
2297if ($soustitre) {
2298        echo "<span $dir_lang><font face='arial,helvetica' size=3><b>";
2299        echo typo($soustitre);
2300        echo "</b></font></span>\n";
2301}
2302
2303
2304if ($descriptif OR $url_site OR $nom_site) {
2305        echo "<p><div align='left' style='padding: 5px; border: 1px dashed #aaaaaa; background-color: #e4e4e4;' $dir_lang>";
2306        echo "<font size=2 face='Verdana,Arial,Sans,sans-serif'>";
2307        $texte_case = ($descriptif) ? "{{"._T('info_descriptif')."}} $descriptif\n\n" : '';
2308        $texte_case .= ($nom_site.$url_site) ? "{{"._T('info_urlref')."}} [".$nom_site."->".$url_site."]" : '';
2309        echo propre($texte_case);
2310        echo "</font>";
2311        echo "</div>";
2312}
2313
2314
2315
2316echo "</td>";
2317
2318
2319if ($flag_editable) {
2320        echo "<td><img src='img_pack/rien.gif' width=5></td>\n";
2321        echo "<td align='center'>";
2322        $flag_modif = false;
2323
2324        // Recuperer les donnees de l'article
2325        if (lire_meta('articles_modif') != 'non') {
2326                $query = "SELECT auteur_modif, UNIX_TIMESTAMP(date_modif) AS modification, UNIX_TIMESTAMP(NOW()) AS maintenant FROM spip_articles WHERE id_article='$id_article'";
2327                $result = spip_query($query);
2328
2329                if ($row = spip_fetch_array($result)) {
2330                        $auteur_modif = $row["auteur_modif"];
2331                        $modification = $row["modification"];
2332                        $maintenant = $row["maintenant"];
2333
2334                        $date_diff = floor(($maintenant - $modification)/60);
2335
2336                        if ($date_diff >= 0 AND $date_diff < 60 AND $auteur_modif > 0 AND $auteur_modif != $connect_id_auteur) {
2337                                $flag_modif = true;
2338                                $query_auteur = "SELECT nom FROM spip_auteurs WHERE id_auteur='$auteur_modif'";
2339                                $result_auteur = spip_query($query_auteur);
2340                                if ($row_auteur = spip_fetch_array($result_auteur)) {
2341                                        $nom_auteur_modif = typo($row_auteur["nom"]);
2342                                }
2343                        }
2344                }
2345        }
2346        if ($flag_modif) {
2347                icone("Modifier cette liste", "spip_listes.php3?mode=creer_liste&id_article=$id_article", "article-24.gif", "edit.gif");
2348                echo "<font face='arial,helvetica,sans-serif' size='2'>"._T('avis_article_modifie', array('nom_auteur_modif' => $nom_auteur_modif, 'date_diff' => $date_diff))."</font>";
2349                echo aide("artmodif");
2350        }
2351        else {
2352                icone("Modifier cette liste", "spip_listes.php3?mode=creer_liste&id_article=$id_article", "article-24.gif", "edit.gif");
2353        }
2354
2355        echo "</td>";
2356}
2357echo "</tr></table>\n";
2358
2359
2360
2361echo "<div class='serif' align='left'>";
2362
2363
2364//////////////////////////////////////////////////////
2365// Corps de l'article
2366//
2367
2368echo "\n\n<div align='justify'>";
2369
2370if ($virtuel) {
2371        debut_boite_info();
2372        echo _T('info_renvoi_article')." ".propre("<center>[->$virtuel]</center>");
2373        fin_boite_info();
2374}
2375else {
2376        echo "<div $dir_lang><b>";
2377        $revision_nbsp = $activer_revision_nbsp;
2378        echo justifier(propre($chapo));
2379        echo "</b></div>\n\n";
2380
2381        echo "<div $dir_lang>";
2382        echo justifier(propre($texte));
2383        echo "</div>";
2384
2385        if ($ps) {
2386                echo debut_cadre_enfonce();
2387                echo "<div $dir_lang><font size=2 face='Verdana,Arial,Sans,sans-serif'>";
2388                echo justifier("<b>"._T('info_ps')."</b> ".propre($ps));
2389                echo "</font></div>";
2390                echo fin_cadre_enfonce();
2391        }
2392        $revision_nbsp = false;
2393
2394        if ($les_notes) {
2395                echo debut_cadre_relief();
2396                echo "<div $dir_lang><font size=2>";
2397                echo justifier("<b>"._T('info_notes')."&nbsp;:</b> ".$les_notes);
2398                echo "</font></div>";
2399                echo fin_cadre_relief();
2400        }
2401
2402        if ($champs_extra AND $extra) {
2403                include_ecrire("inc_extra.php3");
2404                //extra_affichage($extra, "articles");
2405        }
2406}
2407
2408
2409
2410
2411//////////////////////////////////////////////////////
2412// Modifier le statut de l'article
2413//
2414
2415
2416?>
2417<script type='text/javascript'>
2418<!--
2419function change_bouton(selObj){
2420
2421        var selection=selObj.options[selObj.selectedIndex].value;
2422
2423        if (selection=="liste"){
2424                document.statut.src="img_pack/puce-verte.gif";
2425        }
2426        if (selection=="inact"){
2427                document.statut.src="img_pack/puce-blanche.gif";
2428        }
2429
2430        if (selection=="poublist"){
2431                document.statut.src="img_pack/puce-poubelle.gif";
2432        }
2433}
2434// -->
2435</script>
2436<?php
2437
2438
2439if ($connect_statut == '0minirezo' ) {
2440        echo "<form action='spip_listes.php3' METHOD='get'>";
2441        debut_cadre_relief("racine-site-24.gif");
2442        echo "<CENTER>";
2443       
2444        echo "<input type='Hidden' name='mode' value='liste_edit'>";
2445
2446        echo "<input type='Hidden' name='id_article' value=\"$id_article\">";
2447
2448        echo "<b>"._T('spiplistes:Cette_liste_est').": </b> ";
2449
2450        echo "<SELECT name='statut_nouv' size='1' class='fondl' onChange='change_bouton(this)'>";
2451
2452        echo "<option" . mySel("inact", $statut_article) ." style='background-color: white'>Interne\n";
2453        echo "<option" . mySel("liste", $statut_article) . " style='background-color: #B4E8C5'>Publique\n";
2454        echo "<option" . mySel("poublist", $statut_article) . " style='background:url(img_pack/rayures-sup.gif)'>"._T('texte_statut_poubelle')."\n";
2455
2456        echo "</SELECT>";
2457
2458        echo " \n";
2459
2460        if ($statut_article=='liste') {
2461                echo "<img src='img_pack/puce-verte.gif' alt='' width='13' height='14' border='0' name='statut'>";
2462        }
2463        else if ($statut_article=='inact') {
2464                echo "<img src='img_pack/puce-blanche.gif' alt='' width='13' height='14' border='0' name='statut'>";
2465        }
2466
2467        else if ($statut_article == 'poublist') {
2468                echo "<img src='img_pack/puce-poubelle.gif' alt='' width='13' height='14' border='0' name='statut'>";
2469        }
2470        echo " \n";
2471
2472        echo "<input type='submit' name='Modifier' value='"._T('bouton_modifier')."' class='fondo'>";
2473        echo aide ("artstatut");
2474        echo "</CENTER>";
2475        fin_cadre_relief();
2476        echo "</form>";
2477}
2478
2479/*
2480
2481//
2482// Langue de l'article
2483//
2484if ((lire_meta('multi_articles') == 'oui')
2485        OR ((lire_meta('multi_rubriques') == 'oui') AND (lire_meta('gerer_trad') == 'oui'))) {
2486
2487        $row = spip_fetch_array(spip_query("SELECT lang, langue_choisie FROM spip_articles WHERE id_article=$id_article"));
2488        $langue_article = $row['lang'];
2489        $langue_choisie_article = $row['langue_choisie'];
2490
2491        debut_cadre_enfonce('langues-24.gif');
2492        echo "<table border=0 cellspacing=0 cellpadding=3 width=100% background=''><tr><td bgcolor='#EEEECC' class='serif2'>";
2493        echo bouton_block_invisible('languesarticle,ne_plus_lier,lier_traductions');
2494        echo "<b>";
2495        if (lire_meta('gerer_trad') == 'oui')
2496                echo _T('titre_langue_trad_article');
2497        else
2498                echo "langue";
2499
2500        echo "&nbsp; (".traduire_nom_langue($langue_article).")";
2501
2502        echo "</b>";
2503        echo "</td></tr></table>";
2504
2505        // Choix langue article
2506        if (lire_meta('multi_articles') == 'oui' AND $flag_editable) {
2507                echo debut_block_invisible('languesarticle');
2508
2509                $row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
2510                $langue_parent = $row['lang'];
2511
2512                if ($langue_choisie_article == 'oui') $herit = false;
2513                else $herit = true;
2514
2515                //debut_cadre_enfonce();
2516                echo "<div style='padding: 5px; text-align: center;'><font face='Verdana,Arial,Sans,sans-serif' size='2'>";
2517                echo menu_langues('changer_lang', $langue_article, _T('info_multi_cet_article').' ', $langue_parent);
2518                echo "</font></div>\n";
2519                //fin_cadre_enfonce();
2520
2521                echo fin_block();
2522        }
2523
2524
2525        fin_cadre_enfonce();
2526}
2527
2528*/
2529
2530
2531echo "<p>" ;
2532
2533
2534/*  echo "av" ;
2535  $ex = get_extra($id_article, 'article');
2536  extra_affichage(serialize($ex), "articles"); */
2537//
2538// Activer/desactiver mails automatiques
2539//
2540
2541
2542debut_cadre_relief("reply-to-all-24.gif");
2543     
2544echo "<form action='spip_listes.php3?mode=liste_edit' METHOD='post'>";
2545                 
2546        // On récupère les extras
2547$extra = get_extra($id_article, 'article');
2548
2549// Tient il n'y avait pas d'extra
2550if (!is_array($extra)) {
2551        $extra = array();
2552}
2553
2554$email_envoi = entites_html(lire_meta("email_envoi"));
2555$email_envoi = ($extra['email_envoi'] !='') ? $extra['email_envoi'] : $email_envoi ;
2556               
2557                echo "<b><font face='Verdana,Arial,Sans,sans-serif' size=3 COLOR='#000000'>";
2558                echo _T('spiplistes:retour')."</font></b><br />";
2559
2560                echo "<p>"._T('spiplistes:adresse')."</p>";
2561                echo "<input type='text' name='email_envoi' value=\"".$email_envoi."\" size='20' class='fondl'>&nbsp;";
2562               
2563       
2564        if($id_article)
2565        echo "<input type='hidden' name='id_article' value='$id_article'>";
2566        if($new)
2567        echo "<input type='hidden' name='new' value='$new'>";
2568        echo "<input type='submit' name='Valider_auto' value='"._T('bouton_valider')."' class='fondo'>";
2569       
2570       
2571        echo "</form>";
2572
2573fin_cadre_relief();
2574
2575debut_cadre_relief("stock_timer.gif");
2576     
2577echo "<form action='spip_listes.php3?mode=liste_edit' METHOD='post'>";
2578                 
2579        // On récupère les extras
2580$extra = get_extra($id_article, 'article');
2581
2582// Tient il n'y avait pas d'extra
2583if (!is_array($extra)) {
2584        $extra = array();
2585}
2586
2587echo "</h3>"._T('spiplistes:program')."<h3>";
2588   
2589
2590echo "<table border=0 cellspacing=1 cellpadding=3 width=\"100%\">";
2591       
2592echo "<tr><td background='img_pack/rien.gif' align='$spip_lang_left' class='verdana2'>";
2593if ($extra['auto'] != "oui") {
2594echo _T('spiplistes:non_program');
2595}
2596else {
2597     if(($changer_extra == "oui") AND ($auto == "oui") )
2598     echo "<h2>"._T('spiplistes:dates_act')."</h2>" ;
2599     echo _T('spiplistes:env_esquel')."<b>".$extra['squelette']."</b> " ;
2600       
2601                               
2602    echo _T('spiplistes:Tous_les')."  <b>".$extra['periode']."</b>  "._T('info_jours') ;
2603       
2604    $dernier_envoi =  $extra['majnouv'];
2605                 $periode= $extra['periode'];
2606
2607            $sablier = (time() - $dernier_envoi) ;
2608           $proch = round(  (( (24*3600*$periode) - $sablier) / (3600*24)) ) ;
2609            if($proch != 0) {
2610            echo "<br />"._T('spiplistes:prochain_envoi_prevu')."<b>$proch</b> "._T('spiplistes:jours')."<br />";
2611            }
2612            else {
2613                        echo "<br />"._T('spiplistes:prochain_envoi_aujd')."<br />";
2614            }
2615
2616}
2617               
2618
2619
2620 
2621
2622echo "</td></tr>";
2623
2624
2625echo "<tr><td background='img_pack/rien.gif' align='$spip_lang_left' class='verdana2'>";
2626       
2627       
2628        if ($extra['auto'] != "oui") {
2629                echo "<input type='radio' name='auto' value='oui' id='auto_oui'>";
2630                echo " <label for='auto_oui'>"._T('spiplistes:prog_env')."</label> ";
2631                echo "<br /><input type='radio' name='auto' value='non' CHECKED id='auto_non'>";
2632                echo " <b><label for='auto_non'>"._T('spiplistes:prog_env_non')."</label></b> ";
2633               
2634        }
2635        else {
2636                echo "<input type='radio' name='auto' value='oui' id='auto_oui' CHECKED>";
2637                echo " <b><label for='auto_oui'>"._T('spiplistes:prog_env')."</label></b> ";
2638                echo "<input type='hidden' name='changer_extra' value='oui'>";
2639                echo "<p>";
2640               
2641                echo "<ul>";
2642                echo "<li>"._T('spiplistes:squel');
2643               
2644                $dir = "../patrons/";
2645
2646                // Ouvre un dossier bien connu, et liste tous les fichiers
2647                if (is_dir($dir)) {
2648                if ($dh = opendir($dir)) {
2649                        $total_option=0;
2650                while (($file = readdir($dh)) !== false) {
2651                if($file != '..' && $file !='.' && $file !='') $total_option=$total_option+1;
2652                }
2653                closedir($dh);
2654                }
2655                                if ($dh = opendir($dir)) {
2656                        //echo "<SELECT name='patron' size='".$total_option."'>";
2657                        echo "<SELECT name='patron'>";
2658                        while (($file = readdir($dh)) !== false) {
2659                         if($file != '..' && $file !='.' && $file !=''){
2660                        $titre_option=ereg_replace('(\.html|\.HTML)','',$file);
2661                         ($extra['squelette'] == $titre_option) ? $selected = "SELECTED" : $selected ="" ;
2662
2663                        echo "<option ".$selected." value='".$titre_option."'>".$titre_option."</OPTION>";
2664                        }
2665                                        }
2666                                echo "</SELECT>";
2667                        closedir($dh);
2668                                }
2669                }
2670               
2671                echo "</li>";
2672               
2673               
2674
2675                echo "<li>"._T('spiplistes:Tous_les')." <input type='text' name='periode' value='".$extra['periode']."' size='4' class='fondl'> "._T('info_jours')."</li>" ;
2676       
2677                if(!$envoyer_direct){
2678                echo " <li><input type='checkbox' class='checkbox' name='envoyer_direct' id='box' class='fondl' /><label for='box'>"._T('spiplistes:env_maint')."</label></li>";
2679
2680                }
2681
2682                echo "</ul><br />";
2683       
2684               
2685                echo "<br /><input type='radio' name='auto' value='non' id='auto_non'>";
2686                echo " <label for='auto_non'>"._T('spiplistes:prog_env_non')."</label> ";
2687
2688        }
2689        echo "</td></tr>\n";
2690       
2691        echo "<tr><td style='text-align:$spip_lang_right;'>";
2692        if($id_article)
2693        echo "<input type='hidden' name='id_article' value='$id_article'>";
2694        if($new)
2695        echo "<input type='hidden' name='new' value='$new'>";
2696        echo "<input type='submit' name='Valider_auto' value='"._T('bouton_valider')."' class='fondo'>";
2697        echo "</td></tr>";
2698        echo "</table>\n";
2699       
2700        echo "</FORM>";
2701               
2702
2703
2704fin_cadre_relief();
2705
2706
2707 /*   $ex = get_extra($id_article, 'article');
2708 extra_affichage(serialize($ex), "articles");*/
2709
2710
2711
2712//
2713// Liste des auteurs de l'article
2714//
2715
2716echo "<a name='auteurs'></a>";
2717
2718
2719if ($flag_editable AND $options == 'avancees') {
2720        $bouton = bouton_block_invisible("auteursarticle");
2721}
2722
2723debut_cadre_enfonce("auteur-24.gif", false, "", $bouton._T('spiplistes:abon').aide ("artauteurs"));
2724
2725
2726
2727////////////////////////////////////////////////////
2728// Gestion des auteurs
2729//
2730
2731// Creer un nouvel auteur et l'ajouter
2732
2733if ($creer_auteur AND $connect_statut=='0minirezo'){
2734        $creer_auteur = addslashes($creer_auteur);
2735        $query_creer = "INSERT INTO spip_auteurs (nom, statut) VALUES (\"$creer_auteur\", '1comite')";
2736        $result_creer = spip_query($query_creer);
2737
2738        $nouv_auteur = spip_insert_id();
2739        $ajout_auteur = true;
2740}
2741
2742
2743//
2744// Recherche d'auteur
2745//
2746
2747if ($cherche_auteur) {
2748        echo "<p align='left'>";
2749        $query = "SELECT id_auteur, nom FROM spip_auteurs";
2750        $result = spip_query($query);
2751        unset($table_auteurs);
2752        unset($table_ids);
2753        while ($row = spip_fetch_array($result)) {
2754                $table_auteurs[] = $row["nom"];
2755                $table_ids[] = $row["id_auteur"];
2756        }
2757        $resultat = mots_ressemblants($cherche_auteur, $table_auteurs, $table_ids);
2758        debut_boite_info();
2759        if (!$resultat) {
2760                echo "<b>"._T('texte_aucun_resultat_auteur', array('cherche_auteur' => $cherche_auteur)).".</b><br />";
2761        }
2762        else if (count($resultat) == 1) {
2763                $ajout_auteur = 'oui';
2764                list(, $nouv_auteur) = each($resultat);
2765                echo "<b>"._T('spiplistes:nouvelle_abonne')."</b><br />";
2766                $query = "SELECT * FROM spip_auteurs WHERE id_auteur=$nouv_auteur";
2767                $result = spip_query($query);
2768                echo "<ul>";
2769                while ($row = spip_fetch_array($result)) {
2770                        $id_auteur = $row['id_auteur'];
2771                        $nom_auteur = $row['nom'];
2772                        $email_auteur = $row['email'];
2773                        $bio_auteur = $row['bio'];
2774
2775                        echo "<li><font face='Verdana,Arial,Sans,sans-serif' size=2><b><font size=3>".typo($nom_auteur)."</font></b>";
2776                        echo "</font>\n";
2777                }
2778                echo "</ul>";
2779        }
2780        else if (count($resultat) < 16) {
2781                reset($resultat);
2782                unset($les_auteurs);
2783                while (list(, $id_auteur) = each($resultat)) $les_auteurs[] = $id_auteur;
2784                if ($les_auteurs) {
2785                        $les_auteurs = join(',', $les_auteurs);
2786                        echo "<b>"._T('texte_plusieurs_articles', array('cherche_auteur' => $cherche_auteur))."</b><br />";
2787                        $query = "SELECT * FROM spip_auteurs WHERE id_auteur IN ($les_auteurs) ORDER BY nom";
2788                        $result = spip_query($query);
2789                        echo "<ul>";
2790                        while ($row = spip_fetch_array($result)) {
2791                                $id_auteur = $row['id_auteur'];
2792                                $nom_auteur = $row['nom'];
2793                                $email_auteur = $row['email'];
2794                                $bio_auteur = $row['bio'];
2795
2796                                echo "<li><font face='Verdana,Arial,Sans,sans-serif' size=2><b><font size=3>".typo($nom_auteur)."</font></b>";
2797
2798                                if ($email_auteur) echo " ($email_auteur)";
2799                                echo " | <a href=\"spip_listes.php3?mode=liste_edit&id_article=$id_article&ajout_auteur=oui&nouv_auteur=$id_auteur#auteurs\">"._T('lien_ajouter_auteur')."</a>";
2800
2801                                if (trim($bio_auteur)) {
2802                                        echo "<br /><font size=1>".couper(propre($bio_auteur), 100)."</font>\n";
2803                                }
2804                                echo "</font><p>\n";
2805                        }
2806                        echo "</ul>";
2807                }
2808        }
2809        else {
2810                echo "<b>"._T('texte_trop_resultats_auteurs', array('cherche_auteur' => $cherche_auteur))."</b><br />";
2811        }
2812
2813       
2814
2815        fin_boite_info();
2816        echo "<p>";
2817
2818}
2819
2820
2821
2822//
2823// Appliquer les modifications sur les auteurs
2824//
2825
2826if ($ajout_auteur && $flag_editable) {
2827        if ($nouv_auteur > 0) {
2828                $query="DELETE FROM spip_auteurs_articles WHERE id_auteur='$nouv_auteur' AND id_article='$id_article'";
2829                $result=spip_query($query);
2830                $query="INSERT INTO spip_auteurs_articles (id_auteur,id_article) VALUES ('$nouv_auteur','$id_article')";
2831                $result=spip_query($query);
2832        }
2833
2834        if (lire_meta('activer_moteur') == 'oui') {
2835                include_ecrire ("inc_index.php3");
2836                indexer_article($id_article);
2837        }
2838}
2839
2840if ($supp_auteur && $flag_editable) {
2841        $query="DELETE FROM spip_auteurs_articles WHERE id_auteur='$supp_auteur' AND id_article='$id_article'";
2842        $result=spip_query($query);
2843        if (lire_meta('activer_moteur') == 'oui') {
2844                include_ecrire ("inc_index.php3");
2845                indexer_article($id_article);
2846        }
2847}
2848
2849
2850//
2851// Afficher les auteurs
2852//
2853
2854unset($les_auteurs);
2855
2856$query = "SELECT * FROM spip_auteurs AS auteurs, spip_auteurs_articles AS lien ".
2857        "WHERE auteurs.id_auteur=lien.id_auteur AND lien.id_article=$id_article ".
2858        "GROUP BY auteurs.id_auteur ORDER BY auteurs.nom";
2859$result = spip_query($query);
2860
2861if (spip_num_rows($result)) {
2862        echo "<div class='liste'>";
2863        echo "<table width='100%' cellpadding='3' cellspacing='0' border='0' background=''>";
2864        $table = '';
2865        while ($row = spip_fetch_array($result)) {
2866                $vals = '';
2867                $id_auteur = $row["id_auteur"];
2868                $nom_auteur = $row["nom"];
2869                $email_auteur = $row["email"];
2870                if ($bio_auteur = attribut_html(propre(couper($row["bio"], 100))))
2871                        $bio_auteur = " TITLE=\"$bio_auteur\"";
2872                $url_site_auteur = $row["url_site"];
2873                $statut_auteur = $row["statut"];
2874                if ($row['messagerie'] == 'non' OR $row['login'] == '') $messagerie = 'non';
2875
2876                $les_auteurs[] = $id_auteur;
2877
2878                if ($connect_statut == "0minirezo") $aff_articles = "('prepa', 'prop', 'publie', 'refuse')";
2879                else $aff_articles = "('prop', 'publie')";
2880
2881                $query2 = "SELECT COUNT(articles.id_article) AS compteur ".
2882                        "FROM spip_auteurs_articles AS lien, spip_articles AS articles ".
2883                        "WHERE lien.id_auteur=$id_auteur AND articles.id_article=lien.id_article ".
2884                        "AND articles.statut IN $aff_articles GROUP BY lien.id_auteur";
2885                $result2 = spip_query($query2);
2886                if ($result2) list($nombre_articles) = spip_fetch_array($result2);
2887                else $nombre_articles = 0;
2888
2889                $url_auteur = "spip_listes.php3?mode=abonne&id_auteur=$id_auteur";
2890
2891                $vals[] = bonhomme_statut($row);
2892
2893                $vals[] = "<a href=\"$url_auteur\"$bio_auteur>".typo($nom_auteur)."</a>";
2894
2895                $vals[] = bouton_imessage($id_auteur);
2896
2897               
2898               
2899                if ($email_auteur) $vals[] =  "<a href='mailto:$email_auteur'>"._T('email')."</a>";
2900                else $vals[] =  "&nbsp;";
2901
2902                if ($url_site_auteur) $vals[] =  "<a href='$url_site_auteur'>"._T('info_site_min')."</a>";
2903                else $vals[] =  "&nbsp;";
2904
2905                if ($nombre_articles > 1) $vals[] =  $nombre_articles.' '._T('info_article_2');
2906                else if ($nombre_articles == 1) $vals[] =  _T('info_1_article');
2907                else $vals[] =  "&nbsp;";
2908
2909                if ($flag_editable AND ($connect_id_auteur != $id_auteur OR $connect_statut == '0minirezo') AND $options == 'avancees') {
2910                        $vals[] =  "<a href='spip_listes.php3?mode=liste_edit&id_article=$id_article&supp_auteur=$id_auteur#auteurs'>Désabonnement&nbsp;<img src='img_pack/croix-rouge.gif' alt='X' width='7' height='7' border='0' align='middle'></a>";
2911                } else {
2912                        $vals[] = "";
2913                }
2914               
2915                $table[] = $vals;
2916        }
2917       
2918       
2919        $largeurs = array('14', '', '', '', '', '', '');
2920        $styles = array('arial11', 'arial2', 'arial11', 'arial11', 'arial11', 'arial11', 'arial1');
2921        afficher_liste($largeurs, $table, $styles);
2922
2923       
2924        echo "</table></div>\n";
2925
2926        $les_auteurs = join(',', $les_auteurs);
2927}
2928
2929
2930//
2931// Ajouter un auteur
2932//
2933
2934if ($flag_editable AND $options == 'avancees') {
2935        //echo debut_block_invisible("auteursarticle");
2936
2937        $query = "SELECT * FROM spip_auteurs WHERE ";
2938        if ($les_auteurs) $query .= "id_auteur NOT IN ($les_auteurs) AND ";
2939        $query .= "statut!='5poubelle' AND statut!='nouveau' ORDER BY statut, nom";
2940        $result = spip_query($query);
2941       
2942        echo "<table width='100%'>";
2943        echo "<tr>";
2944
2945        echo "<td>";
2946       
2947       
2948        if (spip_num_rows($result) > 0) {
2949                echo "<form action='spip_listes.php3?mode=liste_edit&id_article=$id_article#auteurs' METHOD='post'>";
2950                echo "<span class='verdana1'><b>"._T('spiplistes:abon_ajouter')."</b></span>\n";
2951                echo "<div><input type='Hidden' name='id_article' value=\"$id_article\">";
2952
2953                if (spip_num_rows($result) > 80 AND $flag_mots_ressemblants) {
2954                        echo "<input type='text' name='cherche_auteur' onClick=\"setvisibility('valider_ajouter_auteur','visible');\" class='fondl' value='' size='20'>";
2955                        echo "<span  class='visible_au_chargement' id='valider_ajouter_auteur'>";
2956                        echo " <input type='submit' name='Chercher' value='"._T('bouton_chercher')."' class='fondo'>";
2957                        echo "</span>";
2958                }
2959                else {
2960                        echo "<input type='Hidden' name='ajout_auteur' value='oui'>";
2961                        echo "<SELECT name='nouv_auteur' size='1' STYLE='width:150px;' class='fondl' onChange=\"setvisibility('valider_ajouter_auteur','visible');\">";
2962                        $group = false;
2963                        $group2 = false;
2964
2965                        while ($row = spip_fetch_array($result)) {
2966                                $id_auteur = $row["id_auteur"];
2967                                $nom = $row["nom"];
2968                                $email = $row["email"];
2969                                $statut = $row["statut"];
2970
2971                                $statut=ereg_replace("0minirezo", _T('info_administrateurs'), $statut);
2972                                $statut=ereg_replace("1comite", _T('info_redacteurs'), $statut);
2973                                $statut=ereg_replace("2redac", _T('info_redacteurs'), $statut);
2974
2975                                $premiere = strtoupper(substr(trim($nom), 0, 1));
2976
2977                                if ($connect_statut != '0minirezo')
2978                                        if ($p = strpos($email, '@'))
2979                                                $email = substr($email, 0, $p).'@...';
2980                                if ($email)
2981                                        $email = " ($email)";
2982
2983                                if ($statut != $statut_old) {
2984                                        echo "\n<option value=\"x\">";
2985                                        echo "\n<option value=\"x\"> $statut";
2986                                }
2987
2988                                if ($premiere != $premiere_old AND ($statut != _T('info_administrateurs') OR !$premiere_old)) {
2989                                        echo "\n<option value=\"x\">";
2990                                }
2991
2992                                $texte_option = supprimer_tags(couper("$nom$email", 40));
2993                                echo "\n<option value=\"$id_auteur\">&nbsp;&nbsp;&nbsp;&nbsp;$texte_option";
2994                                $statut_old = $statut;
2995                                $premiere_old = $premiere;
2996                        }
2997
2998                        echo "</SELECT>";
2999                        echo "<span  class='visible_au_chargement' id='valider_ajouter_auteur'>";
3000                        echo " <input type='submit' name='Ajouter' value="._T('bouton_ajouter')." class='fondo'>";
3001                        echo "</span>";
3002                }
3003                echo "</div></FORM>";
3004        }
3005       
3006        echo "</td></tr></table>";
3007
3008
3009//      echo fin_block();
3010}
3011
3012fin_cadre_enfonce(false);
3013
3014
3015
3016//////////////////////////////////////////////////////
3017// Liste des mots-cles de l'article
3018//
3019
3020if ($options == 'avancees' AND $articles_mots != 'non') {
3021        //formulaire_mots('articles', $id_article, '' , '' ,false,true);
3022}
3023
3024
3025
3026
3027
3028
3029
3030//
3031// Bouton "modifier cet article"
3032//
3033
3034if ($flag_editable) {
3035        echo "\n\n<div align=right><br />";
3036       
3037        if ($date_diff >= 0 AND $date_diff < 60 AND $auteur_modif > 0 AND $auteur_modif != $connect_id_auteur) {
3038                $query_auteur = "SELECT * FROM spip_auteurs WHERE id_auteur='$auteur_modif'";
3039                $result_auteur = spip_query($query_auteur);
3040                while ($row_auteur = spip_fetch_array($result_auteur)) {
3041                        $nom_auteur_modif = typo($row_auteur["nom"]);
3042                }
3043                icone(_T('icone_modifier_article'), "spip_listes.php3?mode=creer_liste&id_article=$id_article", "warning-24.gif", "");
3044                echo "<font face='arial,helvetica,sans-serif' size=1>"._T('texte_travail_article', array('nom_auteur_modif' => $nom_auteur_modif, 'date_diff' => $date_diff))."</font>";
3045                echo aide("artmodif");
3046        }
3047        else {
3048                icone("Modifier cette liste", "spip_listes.php3?mode=creer_liste&id_article=$id_article", "article-24.gif", "edit.gif");
3049        }
3050       
3051        echo "</div>";
3052}
3053
3054
3055echo "</div>";
3056
3057
3058fin_cadre_relief();
3059
3060//
3061// Forums
3062//
3063
3064echo "<br /><br />";
3065
3066$forum_retour = urlencode("articles.php3?id_article=$id_article");
3067
3068
3069echo "\n<div align='center'>";
3070        icone(_T('icone_poster_message'), "forum_envoi.php3?statut=prive&adresse_retour=".$forum_retour."&id_article=$id_article&titre_message=".urlencode($titre), "forum-interne-24.gif", "creer.gif");
3071echo "</div>";
3072
3073echo "<p align='left'>";
3074
3075
3076$query_forum = "SELECT COUNT(*) AS cnt FROM spip_forum WHERE statut='prive' AND id_article='$id_article' AND id_parent=0";
3077$result_forum = spip_query($query_forum);
3078$total = 0;
3079if ($row = spip_fetch_array($result_forum)) $total = $row["cnt"];
3080
3081if (!$debut) $debut = 0;
3082$total_afficher = 8;
3083if ($total > $total_afficher) {
3084        echo "<div class='serif2' align='center'>";
3085        for ($i = 0; $i < $total; $i = $i + $total_afficher){
3086                $y = $i + $total_afficher - 1;
3087                if ($i == $debut)
3088                        echo "<font size=3><b>[$i-$y]</b></font> ";
3089                else
3090                        echo "[<a href='articles.php3?id_article=$id_article&debut=$i'>$i-$y</a>] ";
3091        }
3092        echo "</div>";
3093}
3094
3095
3096
3097$query_forum = "SELECT * FROM spip_forum WHERE statut='prive' AND id_article='$id_article' AND id_parent=0 ORDER BY date_heure DESC LIMIT $debut,$total_afficher";
3098$result_forum = spip_query($query_forum);
3099afficher_forum($result_forum, $forum_retour);
3100
3101
3102if (!$debut) $debut = 0;
3103$total_afficher = 8;
3104if ($total > $total_afficher) {
3105        echo "<div class='serif2' align='center'>";
3106        for ($i = 0; $i < $total; $i = $i + $total_afficher){
3107                $y = $i + $total_afficher - 1;
3108                if ($i == $debut)
3109                        echo "<font size=3><b>[$i-$y]</b></font> ";
3110                else
3111                        echo "[<a href='articles.php3?id_article=$id_article&debut=$i'>$i-$y</a>] ";
3112        }
3113        echo "</div>";
3114}
3115
3116
3117echo "</div>\n";
3118
3119
3120
3121
3122if ($ok_nouveau_statut || $reindexer) {
3123        @flush();
3124        terminer_changement_statut();
3125}
3126
3127
3128
3129
3130
3131
3132////
3133}
3134
3135
3136// afficher les listes
3137
3138if ($mode == "listes"){
3139
3140
3141global $table_prefix;
3142$query_message = "SELECT * FROM ".$table_prefix."_articles AS listes LEFT JOIN ".$table_prefix."_auteurs_articles AS abonnements USING (id_article) WHERE statut='liste'";
3143
3144$result_pile = spip_query($query_message);
3145$nb_abonnes = spip_num_rows($result_pile);
3146               
3147$query = "SELECT id_auteur, nom, extra FROM spip_auteurs";
3148$result = spip_query($query);
3149$nb_inscrits = spip_num_rows($result);
3150
3151        $cmpt_texte = 0;
3152        $cmpt_html = 0;
3153        $cmpt_non = 0;
3154       
3155           while ($row = spip_fetch_array($result)) {
3156               
3157                $abo = get_extra($row["id_auteur"],auteur);
3158
3159                        if ($abo['abo'] == "texte"){
3160                        $cmpt_texte = $cmpt_texte + 1 ;
3161                        }
3162
3163                        if ($abo['abo'] == "html"){
3164                        $cmpt_html = $cmpt_html + 1 ;
3165                        }
3166                       
3167                        if ($abo['abo'] == "non"){
3168                        $cmpt_non = $cmpt_non + 1 ;
3169                        }
3170                       
3171                        $total_abo = $cmpt_html + $cmpt_texte ;
3172        }
3173
3174
3175debut_cadre_relief('forum-interne-24.gif');
3176
3177echo ""._T('spiplistes:nb_abonnes')." : $nb_abonnes  <p>";
3178echo "<p>";
3179fin_cadre_relief();
3180
3181echo "<p>";
3182
3183//
3184// Afficher tableau de listes
3185//
3186
3187
3188//
3189// lettres d'infos
3190//
3191 afficher_articles_listes(_T('spiplistes:listes_internes'),
3192        "WHERE articles.statut=\"inact\"  ORDER BY articles.date DESC");
3193
3194
3195echo "<p>";
3196
3197afficher_articles_listes(_T('spiplistes:liste_diff_publiques'),
3198        "WHERE articles.statut=\"liste\"  ORDER BY articles.date DESC");
3199
3200echo "<p>";
3201echo "<p>";
3202
3203afficher_articles_listes(_T('spiplistes:listes_poubelle'),
3204        "WHERE articles.statut=\"poublist\"  ORDER BY articles.date DESC");
3205}
3206
3207
3208
3209
3210If ($mode == "config"){
3211
3212
3213$accepter_visiteurs = lire_meta('accepter_visiteurs');
3214
3215if($accepter_visiteurs != 'oui'){
3216$accepter_visiteurs = 'oui';
3217ecrire_meta("accepter_visiteurs", $accepter_visiteurs);
3218ecrire_metas();
3219echo _T('spiplistes:autorisation_inscription');
3220}
3221
3222$extra = get_extra(1,'auteur');
3223$deb = $extra['debut'] ;
3224//echo "<h1>$deb</h1>";
3225if( !is_array($extra) ){
3226        $extra = array();
3227        $extra["config"] = "simple";
3228        set_extra(1,$extra,'auteur');
3229        $extra = get_extra(1,'auteur');
3230        }
3231if( !$extra['config']) {
3232        $extra["config"] = "simple";
3233        set_extra(1,$extra,'auteur');
3234        $extra = get_extra(1,'auteur');
3235        }
3236
3237
3238if ($changer_config == 'oui') {
3239$extra['config'] = $statut_abo ;
3240set_extra(1,$extra,'auteur');
3241$extra = get_extra(1,'auteur');
3242}
3243
3244$config = $extra['config'];
3245
3246
3247
3248echo "<form action='spip_listes.php3?mode=config' method='post'>";
3249echo "<input type='hidden' name='changer_config' value='oui'>";
3250 
3251  debut_cadre_relief("redacteurs-24.gif", false, "", _T('spiplistes:mode_inscription'));
3252
3253        echo "<table border=0 cellspacing=1 cellpadding=3 width=\"100%\">";
3254
3255        echo "<tr><td background='img_pack/rien.gif' class='verdana2'>";
3256          if($spip_version < 1.8 ){
3257                echo "<h3>"._T('spiplistes:mode_inscription')."</h3>" ;
3258          }
3259         $texte1 = '' ;
3260         $texte2 = '' ;
3261        ($config == 'simple' ) ? $texte1 = "checked"  : $texte2 = "checked" ;
3262
3263    echo "<input type='radio' name='statut_abo' value='simple' $texte1 id='statut_simple'>";
3264        echo "<label for='statut_simple'>"._T('spiplistes:abonnement_simple')."</label> ";
3265        echo "<p><input type='radio' name='statut_abo' value='membre' $texte2 id='statut_membre'>";
3266        echo "<label for='statut_membre'>"._T('spiplistes:abonnement_code_acces')."</label></b> ";
3267
3268
3269
3270        echo "</td></tr>";
3271
3272
3273
3274
3275
3276        echo "<tr><td style='text-align:$spip_lang_right;'>";
3277        echo "<input type='submit' name='Valider' value='"._T('bouton_valider')."' class='fondo'>";
3278        echo "</td></tr>";
3279        echo "</table>\n";
3280
3281
3282         echo "</form>";
3283       
3284
3285        fin_cadre_relief();
3286       
3287        debut_cadre_relief("redacteurs-24.gif", false, "", _T('spiplistes:tableau_bord'));
3288        $meta = get_extra(1,"auteur");
3289        //print_r($meta);
3290       
3291        echo "<br />"._T('spiplistes:lock').$meta['locked'] ;
3292        echo "<br />"._T('spiplistes:mail_a_envoyer').$meta['total_auteurs'] ;
3293        echo "<br />"._T('spiplistes:mail_tache_courante'). $meta['debut'] ;
3294       
3295
3296       
3297        fin_cadre_relief();
3298
3299
3300               ////////import
3301
3302
3303
3304    function test_login2($mail) {
3305        if (strpos($mail, "@") > 0) $login_base = substr($mail, 0, strpos($mail, "@"));
3306        else $login_base = $mail;
3307
3308        $login_base = strtolower($login_base);
3309        $login_base = ereg_replace("[^a-zA-Z0-9]", "", $login_base);
3310        if (!$login_base) $login_base = "user";
3311
3312        for ($i = 0; ; $i++) {
3313                if ($i) $login = $login_base.$i;
3314                else $login = $login_base;
3315                $query = "SELECT id_auteur FROM spip_auteurs WHERE login='$login'";
3316                $result = spip_query($query);
3317                if (!spip_num_rows($result)) break;
3318        }
3319
3320        return $login;
3321}
3322
3323
3324
3325
3326
3327
3328 $format = $GLOBALS['suppl_abo'];
3329
3330
3331
3332//print_r($list_abo);
3333//echo $format."<br /><br /><br />";
3334
3335
3336
3337
3338         ////////// formulaire
3339
3340         debut_cadre_relief("redacteurs-24.gif", false, "", _T('spiplistes:importer'));
3341
3342        echo "<table border=0 cellspacing=1 cellpadding=3 width=\"100%\">";
3343
3344        echo "<tr><td background='img_pack/rien.gif' class='verdana2'>";
3345       
3346         switch ($etape) {
3347            case "2" :
3348        {
3349                       
3350                       
3351                        if (!$insert_file) $insert_file = $_FILES["insert_file"]["tmp_name"] ;
3352                       
3353                        if ($insert_file && $insert_file != "none") {
3354                        if(!file_exists("./temp"))
3355                        mkdir("./temp",0777);
3356                        else 
3357                        chmod("./temp",0777);
3358
3359                        $import_file = "./temp/import.txt";
3360                                if(move_uploaded_file($insert_file,$import_file ))
3361                                {
3362                                //         if(ereg("^php[0-9A-Za-z_.-]+$", basename($insert_file)))
3363                                if(!empty($insert_file) && $insert_file != "none" && ereg("^php[0-9A-Za-z_.-]+$", basename($insert_file)))
3364                                $liste = fread(fopen($import_file, "r"), filesize($import_file)); //pour NS et IE
3365                 
3366                                $liste=ereg_replace("\n|\r|\n\r|\r\n|\n\n","\n",$liste);
3367                                $liste = explode( "\n",$liste);
3368                 
3369                                        for($i=0;$i<sizeof($liste); $i++)
3370                                        {
3371
3372                                        /* Ajouter un nouvel enregistrement dans la table */
3373                                        $liste[$i]=trim($liste[$i]);
3374                                                if(!empty($liste[$i])){
3375                                     
3376                                                // Inscription
3377                                                // Ajouter un code pour retrouver l'abonné
3378                       
3379                        $mail_inscription = $liste[$i] ;
3380                                                $ligne_nb = ($i+1) ;
3381
3382                           if(email_valide_bloog($mail_inscription)){
3383                           echo $mail_inscription."<br />" ;
3384                           $pass = creer_pass_aleatoire(8, $mail_inscription);
3385                                                   $nom_inscription = test_login2($mail_inscription);
3386                             
3387                           $login = test_login2($mail_inscription);
3388                               $mdpass = md5($pass);
3389                               $htpass = generer_htpass($pass);
3390                           $statut = "6forum" ;
3391                           $cookie = creer_uniqid();
3392     
3393                           $extras = bloog_extra_recup_saisie('auteurs');
3394
3395                           $query = "SELECT * FROM spip_auteurs WHERE email='$mail_inscription'";
3396                                                   $resulta = spip_query($query);
3397                               
3398                                                                if ($row = spip_fetch_array($resulta)) {
3399                                $nom = $row['nom'] ;
3400                                $mail = $row['email'] ;
3401                                //echo " Le fichier d'import présente une erreur à la ligne $ligne_nb <br />" ;
3402                                                                echo _T('spiplistes:adresse_deja_inclus')."<br /><br />" ;
3403                                 } else {
3404                                 
3405                                                                 // echo "$nom_inscription <br />$mail_inscription<br />$format";
3406                                $query = "INSERT INTO spip_auteurs (nom, email, login, pass, statut, htpass, extra, cookie_oubli) ".
3407                                        "VALUES ('$nom_inscription', '$mail_inscription', '$login', '$mdpass', '$statut', '$htpass', '$extras', '$cookie')";
3408                                        spip_query($query);
3409                                                                }
3410                                                       
3411                                // Inscription aux listes
3412                                // abonnement aux listes http://www.phpfrance.com/tutorials/index.php?page=2&id=13
3413                       
3414                                $query = "SELECT * FROM spip_auteurs WHERE email='$mail_inscription'";
3415                                        $resu = spip_query($query);
3416                       
3417                                                                        // l'abonne existe deja.
3418                                                                        if ($row = spip_fetch_array($resu)) {
3419                                                                        $id_auteur = $row['id_auteur'];
3420                                                                        $statut = $row['statut'];
3421                                                                        $nom = $row['nom'];
3422       
3423                                                                        // on abonne l'auteur aux listes
3424                                                                       
3425                                                                                if(is_array($list_abo)){
3426                                                                                        reset($list_abo);
3427                                                                                        while( list(,$val) = each($list_abo) ){
3428                                                                                                 //echo "<h2>$nom :liste $val </h2>" ;
3429                                                                                                 $query="DELETE FROM spip_auteurs_articles WHERE id_auteur='$id_auteur' AND id_article='$val'";
3430                                                                                                 $result=spip_query($query);
3431                                                                                                 $query="INSERT INTO spip_auteurs_articles (id_auteur,id_article) VALUES ('$id_auteur','$val')";
3432                                                                                                 $result=spip_query($query);
3433                                                                                        }
3434                                                                 
3435                                                                                 }
3436                                                                        }
3437                       
3438                                                                //
3439                       
3440                                                                             
3441                         
3442                                                        }else{
3443                                echo " "._T('spiplistes:erreur_import')." <br />" ;
3444                             echo $liste[$i]." : <br /><br /> ";
3445                            }//email valide
3446
3447
3448                       
3449                        }  //listei
3450                     
3451                     
3452                     }  // for
3453
3454
3455                 unlink($import_file);
3456                 echo "<br /><br /><center><b>"._T('spiplistes:adresses_importées')."</b></center>";
3457               }// move et file
3458
3459           } // insert
3460           else echo "<br /><br /><center><b>"._T('spiplistes:erreur')."</b></center>";
3461
3462
3463
3464
3465
3466                 echo  "<a href='spip_listes.php3?mode=config'>["._T('spiplistes:retour_link')."]</a>";
3467
3468             }
3469            break ;
3470           
3471            default :
3472         if($spip_version < 1.8 ){
3473                echo "<h3>"._T('spiplistes:importer')."</h3>" ;
3474          }
3475         echo _T('spiplistes:importer_fichier_txt')."<center><div>";
3476
3477  $list = spip_query ("SELECT * FROM spip_articles WHERE statut = 'liste' OR statut = 'inact' ");
3478  $nb_listes = spip_num_rows($list);
3479  if($nb_listes == 0){
3480        echo "<fieldset> ";
3481        echo "<legend>"._T('spiplistes:abonnement_newsletter')."</legend>";
3482 echo _T('spiplistes:importer_preciser');
3483           echo "<form action='$PHP_SELF?etape=2' method='post'  enctype='multipart/form-data' name='importform'> ";
3484        echo  "<div style='float:right'>";
3485        //include('ecrire/inc_extra.php3');
3486        bloog_extra_saisie('', 'auteurs', 'inscription');
3487        echo  "</div>";
3488        }
3489  elseif($nb_listes == 1){
3490        echo "<fieldset> ";
3491        echo "<legend>"._T('spiplistes:abonnement_newsletter')."</legend>";
3492        echo _T('spiplistes:importer_preciser');
3493                echo "<form action='$PHP_SELF?etape=2' method='post'  enctype='multipart/form-data' name='importform'> ";
3494        echo  "<div style='float:right'>";
3495        //include('ecrire/inc_extra.php3');
3496        bloog_extra_saisie('', 'auteurs', 'inscription');
3497        echo  "</div>";
3498
3499        echo "<ul style='width:350px'>" ;
3500                        while($row = spip_fetch_array($list)) {
3501               
3502                        echo "<li>" ;
3503                        $id_article = $row['id_article'] ;
3504                        $titre = $row['titre'] ;
3505                        echo "<a href='?liste=$id_article' title='"._T('spiplistes:infos_liste')."'>$titre</a>&nbsp;&nbsp;&nbsp;<input type=\"checkbox\" name=\"list_abo[]\" CHECKED  value=\"".$id_article."\">" ;
3506                        echo "</li>" ;
3507                        }
3508        echo "</ul>" ;
3509        }
3510                       
3511  else{
3512 
3513  echo "<fieldset> ";
3514  echo "<legend>"._T('spiplistes:abonnement_newsletter')."</legend>";
3515  echo _T('spiplistes:importer_preciser');
3516  echo "<div style='width:350px'>" ;
3517  echo "<form action='$PHP_SELF?etape=2' method='post' enctype='multipart/form-data'  name='importform'> ";
3518  echo  "<div style='float:right'>";
3519  //include('ecrire/inc_extra.php3');
3520  bloog_extra_saisie('', 'auteurs', 'inscription');
3521  echo  "</div>";
3522
3523                        while($row = spip_fetch_array($list)) {
3524                                       
3525                        echo "<div style='padding:0px 0px 6px 15px'>" ;
3526                        $id_article = $row['id_article'] ;
3527                        $titre = $row['titre'] ;
3528                        echo "<div style='float:right'><input type=\"checkbox\" name=\"list_abo[]\"   value=\"".$id_article."\"></div>" ;
3529                        echo "<img src='./ecrire/img_pack/puceoff.gif' height='10px'>&nbsp;<a href='?liste=$id_article' title='informations sur cette liste'>$titre</a><br />" ;
3530                        echo "</div>" ;
3531
3532                        }
3533
3534
3535} // fin du test nb listes
3536
3537
3538   echo '<!--
3539  <script language=\"javascript\">
3540  function Soumettre()
3541                        {
3542                        //if  (document.importform.insert_file.value==\"\")
3543                        //alert(';
3544                       
3545        echo _T('spiplistes:remplir_tout');
3546       
3547        echo ');
3548                        //else
3549  document.importform.fich.value=document.importform.insert_file.value;
3550  document.importform.submit();
3551                         }
3552  </script>
3553   --> ';
3554
3555 echo "<h5>Importer un fichier</h5>";
3556  echo "<input type=file name=\"insert_file\"><br /><br />";
3557  echo "<input type=\"hidden\" name=\"mode\" value=\"config\">";
3558  echo "<input type=\"hidden\" name=\"import\" value=\"oui\">";
3559
3560
3561   echo "</div>" ;
3562   echo "<input type='submit' name='Valider' value='"._T('bouton_valider')."' class='fondo' onclick='Soumettre()'>";
3563   echo "</form>" ;
3564
3565
3566   } // switch
3567
3568               /**************/
3569
3570
3571
3572               
3573
3574
3575                echo  "</fieldset></div>";
3576
3577
3578
3579
3580
3581        echo "</td></tr>";
3582
3583        echo "<tr><td style='text-align:$spip_lang_right;'>";
3584                echo "</td></tr>";
3585        echo "</table>\n";
3586       
3587        fin_cadre_relief();
3588
3589
3590} //// fin config
3591
3592fin_page();
3593/******************************************************************************************/
3594/* SPIP-listes est un système de gestion de listes d'abonnés et d'envoi d'information     */
3595/* par email  pour SPIP.                                                                  */
3596/* Copyright (C) 2004 Vincent CARON  v.caron<at>laposte.net , http://bloog.net            */
3597/*                                                                                        */
3598/* Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes */
3599/* de la Licence Publique Générale GNU publiée par la Free Software Foundation            */
3600/* (version 2).                                                                           */
3601/*                                                                                        */
3602/* Ce programme est distribué car potentiellement utile, mais SANS AUCUNE GARANTIE,       */
3603/* ni explicite ni implicite, y compris les garanties de commercialisation ou             */
3604/* d'adaptation dans un but spécifique. Reportez-vous à la Licence Publique Générale GNU  */
3605/* pour plus de détails.                                                                  */
3606/*                                                                                        */
3607/* Vous devez avoir reçu une copie de la Licence Publique Générale GNU                    */
3608/* en même temps que ce programme ; si ce n'est pas le cas, écrivez à la                  */
3609/* Free Software Foundation,                                                              */
3610/* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, États-Unis.                   */
3611/******************************************************************************************/
3612?>
Note: See TracBrowser for help on using the repository browser.