Changeset 67895 in spip-zone


Ignore:
Timestamp:
Nov 23, 2012, 9:38:37 AM (7 years ago)
Author:
cedric@…
Message:

Import automatise depuis spip-lettres à l'installation (prise en charge des listes-rubriques)
+ autoriser le "-" dans les id de listes

Location:
_plugins_/mailsubscribers/trunk
Files:
3 edited

Legend:

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

    r67857 r67895  
    1717 */
    1818function mailsubscribers_normaliser_nom_liste($liste='', $category="newsletter"){
    19         $category = trim(preg_replace(",\W,","",$category));
     19        $category = strtolower(trim(preg_replace(",\W,","",$category)));
    2020
    2121        if (!$liste)
     
    2626                return mailsubscribers_normaliser_nom_liste($liste[1],$liste[0]);
    2727        }
     28        include_spip("inc/charsets");
     29        $liste = translitteration($liste);
     30        $liste = strtolower($liste);
    2831
    29         $liste = trim(preg_replace(",\W,","",$liste));
     32        $liste = trim(preg_replace(",[^\w-],","",$liste));
    3033        $liste = "$category::$liste";
    3134        return $liste;
  • _plugins_/mailsubscribers/trunk/mailsubscribers_administrations.php

    r67892 r67895  
    2020                array('mailsubscribers_import_from_spiplistes'),
    2121                array('mailsubscribers_import_from_mesabonnes'),
     22                array('mailsubscribers_import_from_spiplettres'),
    2223        );
    2324
     
    4950                while ($row = sql_fetch($res)){
    5051                        $email = $row['email'];
     52                        $set = array();
    5153                        $set['statut'] = ($row['spip_listes_format']=="non"?'refuse':'valide');
    5254                        $set['nom'] = $row['nom'];
     
    106108
    107109
     110function mailsubscribers_import_from_spiplettres(){
     111        $trouver_table = charger_fonction("trouver_table","base");
     112        if ($trouver_table('spip_abonnes')
     113          AND $trouver_table('spip_desabonnes')
     114          AND $trouver_table('spip_abonnes_rubriques')
     115        ){
     116
     117                include_spip("inc/mailsubscribers");
     118
     119                // reperer les listes
     120                $rubs = sql_allfetsel("DISTINCT id_rubrique","spip_abonnes_rubriques","statut=".sql_quote('valide'));
     121                $rubs = array_map('reset',$rubs);
     122                $listes = array();
     123                $rows = sql_allfetsel("id_rubrique,titre","spip_rubriques",sql_in('id_rubrique',$rubs));
     124                foreach ($rows as $row){
     125                        $listes[$row['id_rubrique']] = mailsubscribers_normaliser_nom_liste($row['id_rubrique']."-".strtolower($row['titre']));
     126                }
     127
     128
     129                include_spip("action/editer_objet");
     130
     131                // les abonnes
     132                sql_alter("TABLE spip_abonnes ADD imported tinyint NOT NULL DEFAULT 0");
     133                $res = sql_select('id_abonne,email,nom','spip_abonnes',"imported=0");
     134                while ($row = sql_fetch($res)){
     135                        $email = $row['email'];
     136                        $set = array(
     137                                'nom' => $row['nom'],
     138                                'statut' => 'valide',
     139                        );
     140
     141                        $ll = sql_allfetsel("id_rubrique","spip_abonnes_rubriques","id_abonne=".intval($row['id_abonne'])." AND statut=".sql_quote('valide'));
     142                        if (count($ll)){
     143                                $set['listes'] = array();
     144                                while ($l = array_shift($ll))
     145                                        $set['listes'][] = $listes[$l['id_rubrique']];
     146                                $set['listes'] = implode(',',$set['listes']);
     147                        }
     148                        else
     149                                $set['statut'] = 'prepa'; // aucune liste ? pas un vrai abonne en fait !
     150                        mailsubscriber_import_one($email,$set);
     151                        sql_updateq("spip_abonnes",array('imported'=>1),"id_abonne=".intval($row['id_abonne']));
     152                        spip_log("import from spip_lettres $email ".var_export($set,true),"mailsubscribers");
     153
     154                        // timeout ? on reviendra
     155                        if (time() >= _TIME_OUT)
     156                                return;
     157                }
     158
     159                // les desabonnes
     160                sql_alter("TABLE spip_desabonnes ADD imported tinyint NOT NULL DEFAULT 0");
     161                $res = sql_select('id_desabonne,email','spip_desabonnes',"imported=0");
     162                while ($row = sql_fetch($res)){
     163                        $email = $row['email'];
     164                        $set = array(
     165                                'statut' => 'refuse',
     166                        );
     167                        mailsubscriber_import_one($email,$set);
     168                        sql_updateq("spip_desabonnes",array('imported'=>1),"id_desabonne=".intval($row['id_desabonne']));
     169                        spip_log("import from spip_lettres $email ".var_export($set,true),"mailsubscribers");
     170
     171                        // timeout ? on reviendra
     172                        if (time() >= _TIME_OUT)
     173                                return;
     174                }
     175                sql_alter("TABLE spip_abonnes DROP imported");
     176                sql_alter("TABLE spip_desabonnes DROP imported");
     177        }
     178}
     179
     180
     181
    108182function mailsubscriber_import_one($email,$set){
    109183        $GLOBALS['instituermailsubscriber_status'] = false;
  • _plugins_/mailsubscribers/trunk/paquet.xml

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