source: spip-zone/_plugins_/mailsubscribers/trunk/action/unsubscribe_mailsubscriber.php @ 70410

Last change on this file since 70410 was 70410, checked in by cedric@…, 7 years ago

Certains webmails font un hit sur les liens internes des mails pour detecter les SPAMS :
Imposer une action manuelle sur un bouton sur l'url de desinscription pour éviter que le bot ne désinscrive automatiquement en scannant le lien contenu dans la Newsletter (la desinscription génère ensuite un mail avec un lien pour se réinscrire et sans cela le bot peut faire tourner en boucle infinie inscription/desinscription sinon - cyaltern)

File size: 2.1 KB
Line 
1<?php
2/**
3 * Plugin mailsubscribers
4 * (c) 2012 Cédric Morin
5 * Licence GNU/GPL v3
6 */
7
8if (!defined('_ECRIRE_INC_VERSION')) return;
9
10/**
11 * Des-inscrire un email deja en base
12 * (mise a jour du statut en refuse)
13 *
14 * @param string $email
15 */
16function action_unsubscribe_mailsubscriber_dist($email=null, $double_optin=true){
17        include_spip('mailsubscribers_fonctions');
18        if (is_null($email)){
19                $email = _request('email');
20                $arg = _request('arg');
21                $row = sql_fetsel('id_mailsubscriber,email,jeton,lang,statut','spip_mailsubscribers','email='.sql_quote($email));
22                if (!$row
23                        OR $arg!==mailsubscriber_cle_action("unsubscribe",$row['email'],$row['jeton'])){
24                        $row = false;
25                }
26        }
27        else {
28                $double_optin = false;
29                $row = sql_fetsel('id_mailsubscriber,email,jeton,statut','spip_mailsubscribers','email='.sql_quote($email));
30        }
31        if (!$row){
32                include_spip('inc/minipres');
33                echo minipres();
34                exit;
35        }
36
37        include_spip("inc/lang");
38        changer_langue($row['lang']);
39        include_spip("inc/autoriser");
40
41        if (!$row['statut']=='valide'){
42                $titre = _T('mailsubscriber:unsubscribe_deja_texte',array('email'=>$row['email']));
43        }
44        else {
45                if ($double_optin){
46                        include_spip("inc/filtres");
47                        $titre = _T('mailsubscriber:unsubscribe_texte_confirmer_email_1',array('email'=>$row['email']));
48                        $titre .= "<br /><br />".bouton_action(_T('newsletter:bouton_unsubscribe'),generer_action_auteur('confirm_unsubscribe_mailsubscriber',"$email-$arg"));
49                }
50                else {
51                        autoriser_exception("modifier","mailsubscriber",$row['id_mailsubscriber']);
52                        autoriser_exception("instituer","mailsubscriber",$row['id_mailsubscriber']);
53                        // OK l'email est connu et valide
54                        include_spip("action/editer_objet");
55                        objet_modifier("mailsubscriber",$row['id_mailsubscriber'],array('statut'=>'refuse'));
56                        $titre = _T('mailsubscriber:unsubscribe_texte_email_1',array('email'=>$row['email']));
57                        autoriser_exception("modifier","mailsubscriber",$row['id_mailsubscriber'],false);
58                        autoriser_exception("instituer","mailsubscriber",$row['id_mailsubscriber'],false);
59                }
60        }
61
62        // Dans tous les cas on finit sur un minipres qui dit si ok ou echec
63        include_spip('inc/minipres');
64        echo minipres($titre,"","",true);
65
66}
Note: See TracBrowser for help on using the repository browser.