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

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

importacion de spip-listes-1_9_2

File size: 16.0 KB
Line 
1<?php
2
3/******************************************************************************************/
4/* SPIP-listes est un systï¿œe de gestion de listes d'information par email pour SPIP*/
5/* Copyright (C) 2004 Vincent CARONv.caron<at>laposte.net , http://bloog.net*/
6/**/
7/* Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes */
8/* de la Licence Publique Gᅵᅵale GNU publiᅵ par la Free Software Foundation*/
9/* (version 2). */
10/**/
11/* Ce programme est distribuï¿œcar potentiellement utile, mais SANS AUCUNE GARANTIE, */
12/* ni explicite ni implicite, y compris les garanties de commercialisation ou */
13/* d'adaptation dans un but spᅵifique. Reportez-vous ᅵla Licence Publique Gᅵᅵale GNU*/
14/* pour plus de dï¿œails.*/
15/**/
16/* Vous devez avoir reᅵ une copie de la Licence Publique Gᅵᅵale GNU*/
17/* en mï¿œe temps que ce programme ; si ce n'est pas le cas, ï¿œrivez ï¿œla*/
18/* Free Software Foundation,*/
19/* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, ï¿œats-Unis. */
20/******************************************************************************************/
21
22
23if (!defined("_ECRIRE_INC_VERSION")) return;
24
25include_spip('inc/presentation');
26include_spip('inc/acces');
27include_spip('inc/affichage');
28
29function exec_import_export(){
30
31        global $connect_statut;
32        global $connect_toutes_rubriques;
33        global $connect_id_auteur;
34        global $type;
35
36        $list_abo= _request('list_abo');
37        $etape= _request('etape');
38        $new= _request('new');
39
40        $nomsite=lire_meta("nom_site"); 
41        $urlsite=lire_meta("adresse_site"); 
42
43        // generation du fichier export ?
44        if (isset($_POST['export_txt']) && isset($_POST['export_id']) && $connect_statut == "0minirezo" ) {
45                $export_id =$_POST['export_id'];
46               
47                if (intval($export_id)>0) {                     
48                       
49                        $result = spip_query("SELECT a.`email` FROM `spip_auteurs` a, `spip_auteurs_listes` l
50                        WHERE l.id_liste = "._q($export_id)."
51                        AND a.id_auteur=l.id_auteur
52                        AND a.statut!='5poubelle' ");
53                        $nb_inscrits = spip_num_rows($result);
54                       
55                        $str_export= "# spip-listes\r\n";
56                        $str_export .= "# "._T('spiplistes:membres_liste')."\r\n";
57                        $str_export .= "# liste id: $export_id\r\n";
58                        $str_export .= "# date: ".date("Y-m-d")."\r\n\r\n";
59                       
60                        while($row = spip_fetch_array($result)) {       
61                                $str_export .= $row['email']."\r\n";
62                                }
63                       
64                        header("Content-type: text/plain");
65                        header("Content-Disposition: attachment; filename=\"export_liste$export_id-".date("Y-m-d").".txt\"");
66                        echo $str_export;
67                        exit;
68                }
69        else{
70
71                if($export_id == "abo_sans_liste"){
72                        $abonnes = spip_query("select a.id_auteur, count(d.id_liste) from spip_auteurs a left join spip_auteurs_listes d on a.id_auteur = d.id_auteur group by a.id_auteur having count(d.id_liste) = 0;");
73
74                        $str_export= "# spip-listes\r\n"; 
75                        $str_export .= "# "._T('spiplistes:membres_liste')."\r\n";
76                        $str_export .= "# liste id: $export_id\r\n";
77                        $str_export .= "# date: ".date("Y-m-d")."\r\n\r\n";
78                        while($row = spip_fetch_array($abonnes)) {
79                                $abonne = $row['id_auteur'];
80                                $abo = spip_fetch_array(spip_query("SELECT `spip_listes_format` FROM `spip_auteurs_elargis` WHERE `id_auteur`=$abonne")) ;             
81                               
82                                $format_abo = $abo["spip_listes_format"];
83                                if ($format_abo=="html" || $format_abo=="texte") {
84                                        $subresult = spip_query("SELECT email FROM spip_auteurs WHERE statut!='5poubelle' AND id_auteur="._q($abonne)." LIMIT 1");
85                                        while ($subrow = spip_fetch_array($subresult)) {
86                                                $str_export .= $subrow['email']."\r\n";
87                                        }
88                                }
89                        }
90                        header("Content-type: text/plain");
91                        header("Content-Disposition: attachment; filename=\"export_liste$export_id-".date("Y-m-d").".txt\"");
92                        echo $str_export;
93                        exit;
94                }
95                if($export_id == "desabo"){
96                        $result = spip_query("SELECT a.`email`, f.`spip_listes_format` FROM `spip_auteurs` a, `spip_auteurs_elargis` f
97                        WHERE a.id_auteur=f.id_auteur
98                        AND a.statut!='5poubelle'
99                        AND f.`spip_listes_format`='non' ");
100                        $nb_inscrits = spip_num_rows($result);
101
102                        $str_export= "# spip-listes\r\n";
103                        $str_export .= "# "._T('spiplistes:membres_liste')."\r\n";
104                        $str_export .= "# liste id: $export_id\r\n";
105                        $str_export .= "# date: ".date("Y-m-d")."\r\n\r\n";
106                        while($row = spip_fetch_array($result)) {
107                                $str_export .= $row['email']."\r\n";
108                        }
109                        header("Content-type: text/plain");
110                        header("Content-Disposition: attachment; filename=\"export_liste$export_id-".date("Y-m-d").".txt\"");
111                        echo $str_export;
112                        exit;
113                }
114        }
115        }
116
117// generation du fichier export fin
118
119// Admin SPIP-Listes
120        echo debut_page(_T('spiplistes:spip_listes'), "redacteurs", "spiplistes");
121
122        if ($connect_statut != "0minirezo" ) {
123                echo "<p><b>"._T('spiplistes:acces_a_la_page')."</b></p>";
124                echo fin_page();
125                exit;
126        }
127
128       
129        if (($connect_statut == "0minirezo") OR ($connect_id_auteur == $id_auteur)) {
130                $statut_auteur=$statut;
131                spip_listes_onglets("messagerie", _T('spiplistes:spip_listes'));
132        }
133
134        debut_gauche();
135
136        spip_listes_raccourcis();
137
138        creer_colonne_droite();
139
140
141        debut_droite("messagerie");
142
143// import //
144
145        function test_login2($mail) {
146                if (strpos($mail, "@") > 0) $login_base = substr($mail, 0, strpos($mail, "@"));
147                else $login_base = $mail;
148
149                $login_base = strtolower($login_base);
150                $login_base = ereg_replace("[^a-zA-Z0-9]", "", $login_base);
151                if (!$login_base) $login_base = "user";
152
153                for ($i = 0; ; $i++) {
154                        if ($i) $login = $login_base.$i;
155                        else $login = $login_base;
156                        $result = spip_query("SELECT id_auteur FROM spip_auteurs WHERE login="._q($login));
157                        if (!spip_num_rows($result)) break;
158                }
159
160        return $login;
161        }
162
163        $format = _request('suppl_abo');
164
165
166        // import form
167        echo debut_cadre_relief("redacteurs-24.gif", false, "", _T('spiplistes:importer'));
168        switch ($etape) {
169                case "2" :
170        {
171
172                if (!$insert_file) $insert_file = $_FILES["insert_file"]["tmp_name"] ;
173                if ($insert_file && $insert_file != "none") {           
174                  $import_file = _DIR_TMP."import_email.txt";
175                 
176      $ok = @copy($insert_file,$import_file); // a terme utiliser la fonction de spip: deplacer_fichier_upload (inc/getdocument) ?
177      if (!$ok) $ok = @move_uploaded_file($insert_file,$import_file);
178                         
179                        if($ok) {
180                                // if(ereg("^php[0-9A-Za-z_.-]+$", basename($insert_file)))
181                                if(!empty($insert_file) && $insert_file != "none" && ereg("^php[0-9A-Za-z_.-]+$", basename($insert_file)))
182                                $liste = fread(fopen($import_file, "r"), filesize($import_file)); //pour NS et IE
183
184                                $liste=ereg_replace("\n|\r|\n\r|\r\n|\n\n","\n",$liste);
185                                $liste = explode( "\n",$liste);
186                                $new_abonne = 0;
187
188                                for($i=0;$i<sizeof($liste); $i++) {
189                                        $tmp_log = "\n<br style='clear:both'/>";                                 
190
191                                        /* Ajouter un nouvel enregistrement dans la table */
192                                        $liste[$i]=trim($liste[$i]);
193                                        $ligne_nb = ($i+1);
194                                                if(!empty($liste[$i])){
195
196                                                // Inscription
197                                                // Ajouter un code pour retrouver l'abonne
198                                                $mail_inscription = $liste[$i] ;
199                                               
200                                                if(email_valide($mail_inscription)){
201                                                  $tmp_log .= "<div style='color:#090;margin-bottom:5px;width:220px;float:left;'>$mail_inscription</div> " ;
202
203                                                        $pass = creer_pass_aleatoire(8, $mail_inscription);
204                                                        $nom_inscription = test_login2($mail_inscription);
205                                                        $login = test_login2($mail_inscription);
206                                                        $mdpass = md5($pass);
207                                                        $htpass = generer_htpass($pass);
208                                                        $statut = "6forum" ;
209                                                        $cookie = creer_uniqid();
210                                                        $format_abo = _q(_request('suppl_abo'));
211                                                        $resulta = spip_query("SELECT * FROM spip_auteurs WHERE email="._q($mail_inscription));
212
213                                                        if ($row = spip_fetch_array($resulta)) {
214                                                                $nom = $row['nom'] ;
215                                                                $mail = $row['email'] ;
216                                                                $id = $row['id_auteur'] ;
217                                                                $tmp_log .= _T('spiplistes:adresse_deja_inclus')." ";                                                           
218                                                                $abo = spip_fetch_array(spip_query("SELECT `spip_listes_format` FROM `spip_auteurs_elargis` WHERE `id_auteur`='$id'")) ;               
219                               
220                                                                        if($abo){
221                                                                        $ok = spip_query("UPDATE `spip_auteurs_elargis` SET `spip_listes_format`=$format_abo WHERE id_auteur="._q($id));
222                                                                        }
223                                                                        else{
224                                                                        $ok = spip_query("INSERT INTO `spip_auteurs_elargis` (`id_auteur`,`spip_listes_format`) VALUES ('$id',$format_abo)");
225                                                                        }
226                                                                        if ($ok){ 
227                                                                        $tmp_log .=  "("._T('spiplistes:mis_a_jour').")";
228                                                               
229                                                                }
230                                                        }
231                                                        else {
232                                                                $tmp_log .= "<strong>$format</strong>";
233                                                                spip_query("INSERT INTO spip_auteurs (nom, email, login, pass, statut, htpass, cookie_oubli) ".
234                                                                "VALUES ("._q($nom_inscription).","._q($mail_inscription).","._q($login).","._q($mdpass).","._q($statut).","._q($htpass).","._q($cookie).")");
235                                                                $id = spip_insert_id();
236                                                                $ok = spip_query("INSERT INTO `spip_auteurs_elargis` (`id_auteur`,`spip_listes_format`) VALUES  ('$id',$format_abo)");
237                                                        }
238
239                                                        // Inscription aux listes
240                                                        // abonnement aux listes http://www.phpfrance.com/tutorials/index.php?page=2&id=13
241                                                        $resu = spip_query("SELECT * FROM spip_auteurs WHERE email="._q($mail_inscription));
242
243                                                        // l'abonne existe deja.
244                                                        if ($row = spip_fetch_array($resu)) {
245                                                                $id_auteur = $row['id_auteur'];
246                                                                $statut = $row['statut'];
247                                                                $nom = $row['nom'];
248                                                                $mel = $row['email'];
249                                                        // on abonne l'auteur aux listes
250                                                                if(is_array($list_abo)){
251                                                                        reset($list_abo);
252                                                                        while( list(,$val) = each($list_abo) ){                                                                         
253                                                                                //$tmp_log .= "liste $val ";
254                                                                                $result = spip_query("DELETE FROM spip_auteurs_listes WHERE id_auteur="._q($id_auteur)." AND id_liste="._q($val));
255
256                                                                                if(_request('suppl_abo') !='non')
257                                                                                        spip_query("INSERT INTO spip_auteurs_listes (id_auteur,id_liste) VALUES ("._q($id_auteur).","._q($val).")");                                                                                   
258                                                                                 
259                                                                        }                                                                                                                                                               
260                                                                        $new_abonne++;
261                                                                }else{
262                                                                if(_request('suppl_abo') =='non'){
263                                                                        $result=spip_query("DELETE FROM spip_auteurs_mod_listes WHERE id_auteur="._q($id_auteur)); 
264                                                                        $tmp_log .= "<strong>"._T('spiplistes:desabo')."</strong>";
265                                                                }
266                                                                }
267                                                        }
268                                                } else {
269                                                        $tmp_log .= _T('spiplistes:erreur_import').$ligne_nb.": ";
270                                                        $tmp_log .= "<span style='color:red;margin-bottom:5px'>".$liste[$i]." : </span>";
271                                                }//email valide
272                                                echo $tmp_log;
273                                        }//listei
274
275                                }// for
276                                unlink($import_file);                           
277                                echo "<div style='margin:10px 0'><strong>"._T('spiplistes:adresses_importees').": </strong> $new_abonne</div>\n";
278                        }// move et file
279
280                } // insert
281                else echo "<br /><br /><center><strong>"._T('spiplistes:erreur')."</strong></center>";
282                echo "<a href='?exec=import_export'>["._T('spiplistes:retour_link')."]</a>";
283                echo "</div>";
284        }
285        break ;
286
287        default :
288        if($spip_version < 1.8 ){
289                echo "<h3>"._T('spiplistes:importer')."</h3>" ;
290        }
291
292        echo _T('spiplistes:importer_fichier_txt')."<div>";
293
294        $list = spip_query ("SELECT * FROM spip_listes WHERE statut = 'liste' OR statut = 'inact' ");
295        $nb_listes = spip_num_rows($list);
296        if($nb_listes == 0){
297                echo "<fieldset> ";
298                echo "<legend>"._T('spiplistes:abonnement_newsletter')."</legend>";
299                echo _T('spiplistes:importer_preciser');
300                echo "<form action='./?exec=import_export&etape=2' method='post'enctype='multipart/form-data' name='importform'> ";
301                echo'<div style="text-align: left;">';
302                                echo'<strong>Format :</strong><br>';
303                                echo'<input name="suppl_abo" value="html" checked="checked"  type="radio">'._T('spiplistes:html').'<br>';
304                                echo'<input name="suppl_abo" value="texte" type="radio">'._T('spiplistes:texte').'<br>';
305                                echo'<input name="suppl_abo" value="non" type="radio">'._T('spiplistes:desabonnement').'<br>';
306                                echo'</div>';
307                                echo"<p>";
308                                echo"<input type='submit' name='Valider' value='"._T('spiplistes:modifier')."'>";
309                                echo"<input type='hidden' name='confirm'  value='oui' >";
310                                echo"</p>";
311        } else {
312                echo "<fieldset> ";
313                echo "<legend>"._T('spiplistes:abonnement_newsletter')."</legend>";
314                echo _T('spiplistes:importer_preciser');
315                echo "<div style='text-align:left'>" ;
316                echo "<form action='$PHP_SELF?exec=import_export&etape=2' method='post' enctype='multipart/form-data'name='importform'> ";
317                while($row = spip_fetch_array($list)) {
318                        $id_liste = $row['id_liste'] ;
319                        $titre = $row['titre'] ;
320                        if ($nb_listes = 1) $ischecked = "";
321                        else $ischecked = "checked='checked'";
322                        echo "<input type=\"checkbox\" name=\"list_abo[]\" $ischecked value=\"".$id_liste."\" />\n";
323                        echo "<a href='?exec=import_export&liste=$id_liste' title='"._T('spiplistes:infos_liste')."'>$titre</a><br />" ;
324                }
325                echo "<br />";
326                echo'<strong>Format :</strong><br>';
327                                echo'<input name="suppl_abo" value="html" checked="checked"  type="radio">'._T('spiplistes:html').'<br>';
328                                echo'<input name="suppl_abo" value="texte" type="radio">'._T('spiplistes:texte').'<br>';
329                                echo'<input name="suppl_abo" value="non" type="radio">'._T('spiplistes:desabonnement').'<br>';
330                                echo'</div>';
331                                echo"<p>";
332                                echo"<input type='submit' name='Valider' value='"._T('spiplistes:modifier')."'>";
333                                echo"<input type='hidden' name='confirm'  value='oui' >";
334                                echo"</p>";
335                echo "</div>";
336
337        } // fin du test nb listes
338
339        echo "<!-- <script language=\"javascript\">function Soumettre(){
340                        document.importform.fich.value=document.importform.insert_file.value;
341                        document.importform.submit();
342                }
343                </script>
344                --> ";
345
346        echo "<h5>"._T('spiplistes:importer_fichier')."</h5>";
347        echo "<input type=\"file\" name=\"insert_file\" /><br /><br />";
348        echo "<input type=\"hidden\" name=\"mode\" value=\"inout\" />";
349        echo "<input type=\"hidden\" name=\"import\" value=\"oui\" />";
350        echo "</div>" ;
351        echo "<input type='submit' name='Valider' value='"._T('bouton_valider')."' class='fondo' onclick='Soumettre()' />";
352        echo "</form>" ;
353
354        } // switch
355
356        /**************/
357
358        echo "</fieldset></div>"; 
359
360
361        // import form end
362
363        // import end //
364
365        // export //(added by erational.org)
366        // formulaire d'export
367
368        $list = spip_query ("SELECT * FROM spip_listes WHERE statut = 'liste' OR statut = 'inact' ");
369        $nb_listes = spip_num_rows($list);
370        if ($nb_listes > 0) {
371                echo debut_cadre_relief("redacteurs-24.gif", false, "", _T('spiplistes:exporter'));
372                echo "<form action='$PHP_SELF?exec=import_export' method='post'>\n";     
373                while($row = spip_fetch_array($list)) {
374                        $id_liste = $row['id_liste'] ;
375                        $titre = $row['titre'];
376                        if ($nb_listes==1) $checked = " checked='checked'";
377                        else $checked = "";
378                        echo "<input type=\"radio\" name=\"export_id\" value=\"".$id_liste."\"$checked />$titre <small>".spip_listes_nb_abonnes_liste($id_liste)."</small><br />\n";
379                }
380                echo "<input type=\"radio\" name=\"export_id\"value=\"abo_sans_liste\"$checked /><strong>"._T('spiplistes:abonne_aucune_liste')."</strong> <br />\n";
381                echo "<input type=\"radio\" name=\"export_id\"value=\"desabo\"$checked /><strong>"._T('spiplistes:desabonnes')."</strong><br />\n"; 
382                echo "<input type='submit' name='export_txt' class='fondo' value='"._T('bouton_valider')."' />\n";
383                echo "</form>\n";
384                echo fin_cadre_relief();
385        }
386                echo fin_cadre_relief();
387        // export end //
388
389        // MODE INOUT FIN --------------------------------------------------------------
390
391        echo "<p style='font-family: Arial, Verdana,sans-serif;font-size:10px;font-weight:bold'>".$GLOBALS['spiplistes_version']."</p>" ;
392
393        echo fin_gauche(), fin_page();
394
395}
396
397/******************************************************************************************/
398/* SPIP-listes est un systᅵe de gestion de listes d'abonnᅵ et d'envoi d'information */
399/* par emailpour SPIP.*/
400/* Copyright (C) 2004 Vincent CARONv.caron<at>laposte.net , http://bloog.net*/
401/**/
402/* Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes */
403/* de la Licence Publique Gᅵᅵale GNU publiᅵ par la Free Software Foundation*/
404/* (version 2). */
405/**/
406/* Ce programme est distribuï¿œcar potentiellement utile, mais SANS AUCUNE GARANTIE, */
407/* ni explicite ni implicite, y compris les garanties de commercialisation ou */
408/* d'adaptation dans un but spᅵifique. Reportez-vous ᅵla Licence Publique Gᅵᅵale GNU*/
409/* pour plus de dï¿œails.*/
410/**/
411/* Vous devez avoir reᅵ une copie de la Licence Publique Gᅵᅵale GNU*/
412/* en mï¿œe temps que ce programme ; si ce n'est pas le cas, ï¿œrivez ï¿œla*/
413/* Free Software Foundation,*/
414/* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, ï¿œats-Unis. */
415/******************************************************************************************/
416?>
Note: See TracBrowser for help on using the repository browser.