Changeset 67886 in spip-zone


Ignore:
Timestamp:
Nov 22, 2012, 6:21:50 PM (7 years ago)
Author:
cedric@…
Message:
  • le champ email passe en varchar(256) car la condition unique sur la cle impose de fixer une longueur en mysql
  • import automatisé des abonnés spip-listes à l'installation (avec conservation des listes)
Location:
_plugins_/mailsubscribers/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/mailsubscribers/trunk/base/mailsubscribers.php

    r67882 r67886  
    3030                'field'=> array(
    3131                        "id_mailsubscriber"   => "bigint(21) NOT NULL",
    32                         "email"              => "text NOT NULL DEFAULT ''",
     32                        "email"              => "varchar(256) NOT NULL DEFAULT ''",
    3333                        "nom"                => "text NOT NULL DEFAULT ''",
    3434                        "listes"             => "text NOT NULL DEFAULT ''",
     
    4242                'key' => array(
    4343                        "PRIMARY KEY"        => "id_mailsubscriber",
    44                         "UNIQUE email"           => "email",
     44                        "UNIQUE email"           => "email(256)",
    4545                        "KEY lang"           => "lang",
    4646                        "KEY statut"         => "statut",
  • _plugins_/mailsubscribers/trunk/mailsubscribers_administrations.php

    r67853 r67886  
    1717
    1818        $maj['create'] = array(
    19                 array('maj_tables', array('spip_mailsubscribers'))
     19                array('maj_tables', array('spip_mailsubscribers')),
     20                array('mailsubscribers_import_from_spiplistes')
    2021        );
    2122
     
    2324        include_spip('base/upgrade');
    2425        maj_plugin($nom_meta_base_version, $version_cible, $maj);
     26}
     27
     28
     29function mailsubscribers_import_from_spiplistes(){
     30        $trouver_table = charger_fonction("trouver_table","base");
     31        if ($desc = $trouver_table('spip_auteurs_elargis')
     32                AND isset($desc['field']['spip_listes_format'])
     33          AND $trouver_table('spip_listes')){
     34
     35                include_spip("inc/mailsubscribers");
     36
     37                // reperer les listes
     38                $rows = sql_allfetsel("id_liste,titre","spip_listes");
     39                $listes = array();
     40                foreach ($rows as $row){
     41                        $listes[$row['id_liste']] = mailsubscribers_normaliser_nom_liste($row['id_liste']."-".strtolower($row['titre']));
     42                }
     43
     44
     45                include_spip("action/editer_objet");
     46                sql_alter("TABLE spip_auteurs_elargis ADD imported tinyint NOT NULL DEFAULT 0");
     47                $res = sql_select('A.id_auteur,A.email,A.nom,E.spip_listes_format','spip_auteurs as A JOIN spip_auteurs_elargis AS E ON E.id_auteur=A.id_auteur',"imported=0");
     48                while ($row = sql_fetch($res)){
     49                        $email = $row['email'];
     50                        $set['statut'] = ($row['spip_listes_format']=="non"?'refuse':'valide');
     51                        $set['nom'] = $row['nom'];
     52
     53                        $ll = sql_allfetsel("id_liste","spip_auteurs_listes","id_auteur=".intval($row['id_auteur']));
     54                        if (count($ll)){
     55                                $set['listes'] = array();
     56                                while ($l = array_shift($ll))
     57                                        $set['listes'][] = $listes[$l['id_liste']];
     58                                $set['listes'] = implode(',',$set['listes']);
     59                        }
     60                        mailsubscriber_import_one($email,$set);
     61                        sql_updateq("spip_auteurs_elargis",array('imported'=>1),"id_auteur=".intval($row['id_auteur']));
     62                        spip_log("import $email ".var_export($set,true),"mailsubscribers");
     63
     64                        // timeout ? on reviendra
     65                        if (time() >= _TIME_OUT)
     66                                return;
     67                }
     68                sql_alter("TABLE spip_auteurs_elargis DROP imported");
     69        }
     70}
     71
     72function mailsubscriber_import_one($email,$set){
     73        $GLOBALS['instituermailsubscriber_status'] = false;
     74        if ($id = sql_getfetsel("id_mailsubscriber","spip_mailsubscribers","email=".sql_quote($email))){
     75                objet_modifier("mailsubscriber",$id,$set);
     76                return $id;
     77        }
     78        else {
     79                $set['email'] = $email;
     80                $id = objet_inserer("mailsubscriber",0,$set);
     81                objet_modifier("mailsubscriber",$id,$set); // double detente
     82                return $id;
     83        }
    2584}
    2685
  • _plugins_/mailsubscribers/trunk/notifications/instituermailsubscriber.php

    r67853 r67886  
    1717                return;
    1818        }
     19        // desactivable
     20        if (isset($GLOBALS['instituermailsubscriber_status']) AND !$GLOBALS['instituermailsubscriber_status'])
     21                return;
    1922
    2023        include_spip('inc/texte');
  • _plugins_/mailsubscribers/trunk/paquet.xml

    r67882 r67886  
    22        prefix="mailsubscribers"
    33        categorie="communication"
    4         version="0.5.0"
     4        version="0.6.0"
    55        etat="dev"
    66        compatibilite="[3.0.0;3.0.*]"
Note: See TracChangeset for help on using the changeset viewer.