source: spip-zone/_contribs_/_email_/spip-listes/abonnement.php3 @ 441

Last change on this file since 441 was 441, checked in by kent1@…, 14 years ago

avancées vers la validation xhtml 1.0 STRICT on avance...

File size: 11.0 KB
Line 
1<?php
2
3include ("ecrire/inc_version.php3");
4
5include_ecrire ("inc_meta.php3");
6include_ecrire ("inc_session.php3");
7include_ecrire ("inc_filtres.php3");
8include_ecrire ("inc_texte.php3");
9include_ecrire ("inc_meta.php3");
10include_ecrire ("inc_mail.php3");
11include_ecrire ("inc_acces.php3");
12
13//utiliser_langue_site();
14$nomsite=lire_meta("nom_site");
15$urlsite=lire_meta("adresse_site");
16
17
18
19// 3 Cas : 
20// 1) La personne valide le formulaire de modif, traitement des données
21// 2) Recuperer le cookie de relance désabonnement / afficher le forumlaire de modif
22// 3) Envoyer par mail le cookie de relance modif abonnement
23//presentation
24
25
26 // La personne valide le formulaire
27
28 // revoir le test ?
29if($champs_extra AND ($confirm == 'oui') ){
30
31$res = spip_query("SELECT * FROM spip_auteurs WHERE cookie_oubli='$d' AND statut<>'5poubelle' AND pass<>''");
32   if ($row = spip_fetch_array($res)) {
33    $id_auteur = $row['id_auteur'];
34        $statut = $row['statut'];
35        $nom = $row['nom'];
36        $mail_abo = $row['email'];
37
38    // abonnement aux listes
39    //(http://www.phpfrance.com/tutorials/index.php?page=2&id=13)
40
41//selectionne les listes et desabonne l'auteur
42$listes = spip_query ("SELECT * FROM spip_articles WHERE statut = 'liste'");
43while($row = spip_fetch_array($listes)) {
44$id_liste = $row['id_article'] ;       
45$query="DELETE FROM spip_auteurs_articles WHERE id_auteur='$id_auteur' AND id_article='$id_liste'";
46$result=spip_query($query);
47}
48
49if(is_array($list)){
50
51 // on abonne l'auteur aux listes choisies
52 while( list(,$val) = each($list) ){
53               
54        $query="INSERT INTO spip_auteurs_articles (id_auteur,id_article) VALUES ('$id_auteur','$val')";
55        $result=spip_query($query);
56               
57 }
58} else { $desabo="oui"; }
59
60// fin de l'abo  aux listes
61
62 // prendre en compte les extras
63
64   $extras = bloog_extra_recup_saisie('auteurs');
65
66   spip_query("UPDATE spip_auteurs SET extra = '$extras' WHERE cookie_oubli ='$d'");
67   spip_query("UPDATE spip_auteurs SET cookie_oubli = '0' WHERE cookie_oubli ='$d'");
68
69   // affichage des modifs
70
71   $extra = get_extra($id_auteur,'auteur');
72
73   If ($extra['abo'] == 'non')  {
74   bdebut_html(_T('spiplistes:desabonnement_valid'));
75   echo"<h4>"._T('spiplistes:desabonnement_valid')."</h4>".$mail_abo."<br>\n";
76   bfin_html();
77   }
78   else {
79   bdebut_html(_T('spiplistes:abonnement_modifie'));
80   echo"<h4>"._T('spiplistes:abonnement_modifie')."</h4>" ;
81
82
83
84   // $message .= _T('spiplistes:bloogletter_mail_format', array('nom_site_spip' => $nom_site_spip))." : ".$GLOBALS['suppl_abo']."\n";
85        $message = "";
86
87        //SELECT des listes de l'abonné
88        $query = "SELECT * FROM spip_auteurs_articles AS abonnements, spip_articles AS listes WHERE abonnements.id_auteur='$id_auteur' AND abonnements.id_article=listes.id_article AND listes.statut='liste'";
89                $res = spip_query($query);
90
91                 //lister les listes
92         $nb_listes_abo = spip_num_rows($res);
93         if($nb_listes_abo>0){
94                        while($row = spip_fetch_array($res)) {
95                        $id_article = $row['id_article'] ;
96                        $query = "SELECT * FROM spip_articles WHERE statut='liste' AND id_article=$id_article";
97                    $result = spip_query($query);
98                                if(spip_num_rows($result)>0){
99                                $row = spip_fetch_array($result);
100                                $titre = $row['titre'] ;
101                                $message .= "<li>".$titre."</li>" ;
102                                }
103                        }
104        echo "<ul>".$message."</ul>";
105        }else{
106        //echo " vous n'êtes plus abonné aux lettres d'information" ;
107        }
108   echo"<p>"._T('spiplistes:abonnement_nouveau_format').$extra['abo']."<br>\n";
109   bfin_html();
110   }
111
112
113   } else  {
114                bdebut_html(_T('pass_erreur_code_inconnu'));
115                echo _T('pass_erreur_code_inconnu');
116                bfin_html();
117   }
118}
119
120// recuperer le cookie de relance désabonnement, et afficher le formulaire de modif
121if ($d = addslashes($d) AND ($confirm != 'oui')) {
122
123        $res = spip_query ("SELECT * FROM spip_auteurs WHERE cookie_oubli='$d' AND statut<>'5poubelle' AND pass<>''");
124        if ($row = spip_fetch_array($res)) {
125             $id_auteur = $row['id_auteur'];
126                         $nom = $row['nom'];
127                         $extra_aut = $row['extra'];
128
129          //SELECT des listes de l'abonné
130       
131                $listes = spip_query ("SELECT * FROM spip_articles WHERE statut = 'liste' OR statut = 'inact'");
132                        while($row = spip_fetch_array($listes)) {
133                        $id_liste = $row['id_article'] ;       
134                        $query = "SELECT * FROM spip_auteurs_articles WHERE id_auteur=$id_auteur AND id_article=$id_liste";
135                        $res = spip_query($query);
136                        //lister les listes
137            while($row2 = spip_fetch_array($res)) {
138                        $tab_articles[] = $row2['id_article'] ;
139            }
140            }   
141             
142                 if(!is_array($tab_articles)) { $desabo="oui"; }
143
144         // permettre de modifier la valeur des champs d'abo .
145
146
147         bdebut_html(_T('spiplistes:abonnement'));
148         echo "[$nom]";
149                 echo "<h4>"._T('spiplistes:abonnement')."</h4>"   ;
150         echo "<form action='abonnement.php3' method='post'>";
151         echo "<div class='bloogletter-left'>";
152
153                /***********/
154
155
156            $list = spip_query ("SELECT * FROM spip_articles WHERE statut = 'liste' ");
157                        $nb_listes = spip_num_rows($list);
158                        if($nb_listes == 0){
159                        echo "<fieldset>";
160                        echo "<legend> Abonnement à la lettre d'information </legend>";
161                        }
162                        elseif($nb_listes == 1){
163                        echo "<fieldset>";
164                        echo "<legend> Abonnement à la lettre d'information </legend>";
165                        echo "<ul style='width:350px'>" ;
166                        while($row2 = spip_fetch_array($list)) {
167
168                        echo "<li>" ;
169                        $id_article = $row2['id_article'] ;
170                        $titre = $row2['titre'] ;
171
172
173            echo "<div style='float:right'>"."<input type=\"checkbox\" name=\"list[]\" checked=\"checked\" value=\"".$id_article."\" />"."</div><a href='?liste=$id_article'>$titre</a>" ;
174                        echo "</li>" ;
175                        }
176                        echo "</ul>" ;
177                        }
178                        else{
179                       
180
181
182
183            echo "<fieldset> ";
184                        echo "<legend> Abonnement aux listes de diffusion </legend>";
185                        echo "<ul style='width:350px'>" ;
186                        while($row3 = spip_fetch_array($list)) {
187
188                        echo "<li>" ;
189                        $id_article = $row3['id_article'] ;
190                        $titre = $row3['titre'] ;
191                       
192                        //Gérer les CHECKED
193                        if ($desabo != "oui"){
194                         if (in_array ($id_article, $tab_articles)) {
195                         $checked = "checked=\"checked\"";
196                         }else{$checked = "";}
197                         
198                        }
199
200            echo "<div style='float:right'>"."<input type=\"checkbox\" name=\"list[]\" ".$checked."  value=\"".$id_article."\" />"."</div><a href='?liste=$id_article' title='informations sur cette liste'>$titre</a>" ;
201                        echo "</li>" ;
202                        }
203                        echo "</ul>" ;
204
205
206                    } // fin du test nb listes
207               
208
209
210
211               /**************/
212
213
214
215         bloog_extra_saisie($extra_aut, 'auteurs', 'inscription');
216        echo "<input type='submit' name='Valider' value='"._T('spiplistes:abonnement_bouton')."' />";
217        echo "<input type='hidden' name='d'  value=$d  />";
218        echo "<input type='hidden' name='confirm'  value='oui' />";
219        echo "</fieldset> </div> </form>";
220        bfin_html();
221
222        }
223        else
224                {
225                bdebut_html(_T('pass_erreur_code_inconnu'));
226                echo _T('pass_erreur_code_inconnu');
227                bfin_html();
228   }
229}   else {
230
231// envoyer le cookie de relance modif abonnement
232if ($email_desabo) {
233        if (email_valide($email_desabo)) {
234                $email = addslashes($email_desabo);
235                $res = spip_query("SELECT * FROM spip_auteurs WHERE email ='$email'");
236                if ($row = spip_fetch_array($res)) {
237                        if ($row['statut'] == '5poubelle')
238                                $erreur = _T('pass_erreur_acces_refuse');
239                        else {
240                                $cookie = creer_uniqid();
241                                spip_query("UPDATE spip_auteurs SET cookie_oubli = '$cookie' WHERE email ='$email'");
242
243                                $message = _T('spiplistes:abonnement_mail_passcookie', array('nom_site_spip' => $nomsite, 'adresse_site' => $urlsite, 'cookie' => $cookie));
244                                if (envoyer_mail($email, "[$nomsite] "._T('spiplistes:abonnement_titre_mail'), $message))
245                                        $erreur = _T('spiplistes:pass_recevoir_mail');
246                                else
247                                        $erreur = _T('pass_erreur_probleme_technique');
248                        }
249                }
250                else
251                        $erreur = _T('pass_erreur_non_enregistre', array('email_oubli' => htmlspecialchars($email_desabo)));
252        }
253        else
254                $erreur = _T('pass_erreur_non_valide', array('email_desabo' => htmlspecialchars($email_desabo)));
255}
256
257if($confirm != 'oui'){
258        // debut presentation
259        bdebut_html(_T('spiplistes:abonnement_change_format'));
260       
261       
262          echo "<fieldset> ";
263        echo "<legend>"._T('spiplistes:lettre_d_information')." </legend>";
264
265       
266        echo"<h4>"._T('spiplistes:abonnement_change_format', array('nom_site_spip' => $nomsite))."</h4>\n";
267
268
269        if ($erreur)
270                echo $erreur;
271        else {
272                echo _T('spiplistes:abonnement_texte_mail');
273
274                echo "<form action='".$PHP_SELF."' method='post'>";
275                echo "<div class='bloogletter-right'>";
276                echo "<input type='text' class='fondo' name='email_desabo' value='' />";
277                echo "<input type='hidden' name='desabo' value='oui' />";
278                echo "<input type='submit' class='fondl' name='oubli' value='OK' /></div></form>";
279        }
280
281        echo "</fieldset> ";
282      bfin_html();
283}
284}
285
286function bdebut_html($titre = "") {
287        global $couleur_foncee, $couleur_claire, $couleur_lien, $couleur_lien_off;
288        global $flag_ecrire;
289        global $spip_lang_rtl;
290
291        $nom_site_spip = entites_html(lire_meta("nom_site"));
292        $titre = textebrut(typo($titre));
293
294        if (!$nom_site_spip) $nom_site_spip="SPIP";
295        if (!$charset = lire_meta('charset')) $charset = 'utf-8';
296
297        @Header("Expires: 0");
298        @Header("Cache-Control: no-cache,no-store");
299        @Header("Pragma: no-cache");
300        @Header("Content-Type: text/html; charset=$charset");
301
302        echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
303        echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">';
304        echo "<head>";
305        echo "<title>[$nom_site_spip] $titre</title>";
306        echo "<meta http-equiv='Content-Type' content='text/html; charset=".$charset."' />";
307        echo '
308
309      <style type="text/css">
310<!--
311
312body {
313        color:#000000;
314        background-color:#F5F5F5;
315}
316
317.bloogletter-right {text-align:right}
318.bloogletter-center {text-align:center}
319.bloogletter-left {text-align:left}
320
321.cadre {
322        /*border: 1px #000000 solid;*/
323        background-color:#FFFFFF;
324        text-align: justify;
325        width:500px;
326        padding: 10px;
327        margin-left: auto;
328        margin-right: auto;
329        margin-bottom: 10px;
330        -moz-border-radius: 6px;
331        border-radius: 6px;
332}
333
334h1 {
335 font-size: 150%;
336 text-decoration: underline ;
337
338}
339
340.bloc {
341 margin-top: 100px;
342 padding: 10px;
343 text-align: center;
344}
345
346.cdt{
347  font-size:10px;
348}
349
350-->
351</style>
352  ';
353
354        echo "</head><body ";
355        if ($spip_lang_rtl)
356                echo " dir='rtl'";
357        echo "><div class='bloc'><h1>".$nom_site_spip."</h1><div class='cadre'>";
358}
359
360function bfin_html() {
361 $urlsite=lire_meta("adresse_site");
362
363        echo "</div><p><a href='".$urlsite."'>"._T('pass_retour_public')."</a></p><br /><div class='cdt'>"._T('spiplistes:abonnement_cdt')."</div></div></body></html>\n";
364
365}
366
367?>
Note: See TracBrowser for help on using the repository browser.