Changeset 59243 in spip-zone


Ignore:
Timestamp:
Mar 12, 2012, 7:44:25 PM (8 years ago)
Author:
abelass@…
Message:

terminer la syncronisation
corrections à la bd
corecction aux formulaire de gestion des inscriptions

Location:
_plugins_/squirrels_love_chimps_lists_plus/trunk
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/squirrels_love_chimps_lists_plus/trunk/action/gestion_listes.php

    r59220 r59243  
    7373                                spip_log($listes_accordes, 'slcp');
    7474                               
    75                                 $resultat = syncroniser_listes('',$id_liste,$listes_accordes[$id_liste]);
    76                                
     75                                $syncroniser=charger_fonction('syncroniser_listes','inc');
     76                                $resultat = $syncroniser('',$id_liste,$listes_accordes[$id_liste],$status,$start,$limit,true);
    7777                                break;
    7878                        }
  • _plugins_/squirrels_love_chimps_lists_plus/trunk/base/sclp.php

    r59220 r59243  
    7070                );*/
    7171
    72         $tables_principales['spip_auteurs']['field']['id_mailchimp'] = "bigint(21) NOT NULL default '0'";
     72        $tables_principales['spip_auteurs']['field']['id_mailchimp'] = "varchar(50) NOT NULL";
    7373        $tables_principales['spip_auteurs']['field']['date_syncro'] = "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL";
    7474        $tables_principales['spip_auteurs']['field']['format'] = "enum('html','texte') NOT NULL default 'html'";
  • _plugins_/squirrels_love_chimps_lists_plus/trunk/formulaires/auteur_listes.html

    r59220 r59243  
    55<fieldset>
    66        <legend>
    7         <:sclp:newsletter:>
     7        <:sclp:newsletters_dispos:>
    88    </legend>
    99
     
    1717       
    1818    <B_listes>
    19     [<p class="explications">(#TOTAL_BOUCLE|singulier_ou_pluriel{<:sclp:exp_newsletter:>,<:sclp:exp_newsletters:>})</p>]
    20 
    21         <BOUCLE_listes(LISTES){statut IN public,prive}>
     19        <ul>
     20        <BOUCLE_listes(LISTES){statut IN public,prive}{par titre}>
    2221            <li class="squirrel_chimp_mailinglists">
    2322                        <label for="listes_abos-#ID_LISTE"> #TITRE </label>
     
    4241        </form>
    4342        [<div class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</div>]
    44         [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
     43        [<div class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</div>]
    4544</div>
  • _plugins_/squirrels_love_chimps_lists_plus/trunk/formulaires/auteur_listes.php

    r59220 r59243  
    2121         $listes_accordes=lire_config('squirrel_chimp/mailinglists');
    2222         
    23          $autuer=sql_fetsel('email,format','spip_auteurs','id_auteur='.$id_auteur);
    24          
     23         $auteur=sql_fetsel('email,format','spip_auteurs','id_auteur='.$id_auteur);
     24         $email= $auteur['email'];     
     25         $format= $auteur['format'];   
     26         
    2527         $listes=sql_select('*','spip_auteurs_listes','id_auteur='.$id_auteur);
     28
    2629         
    2730         $info_liste_spip=array();
     
    3336          $info_liste_mc=array();
    3437         
    35                
    36          
     38         $status_equivalence=array(
     39                'valide'=>array('subscribed'),
     40                'a_valider'=>array('unsubscribed','cleaned'),
     41                );
     42               
     43         $status=array();
     44         
     45
    3746         foreach($listes_accordes AS $id_liste_spip=>$id_liste_mc){
    3847                 
    39                  $member_info=membres_liste_info_mc($api,$id_liste_mc,$email);
    40                  echo $member_info['data'][0]['error'];
    41                  //Info mailchimp plus récente que celle de spip
    42                  
    43                  if($timestamp=$member_info['data'][0]['timestamp']>$info_liste_spip[$id_liste_spip]['maj']){
    44                 echo '1';                       
    45                          if($status_mc=$member_info['data'][0]['status']=='subscribed'){
    46                                  echo '1.1';   
    47                                  sql_updateq('spip_auteurs_listes',array('statut'=>'valide','maj'=>$timestamp),'id_auteur='.$id_auteur.' AND id_liste='.$id_liste_spip);
     48
     49                 //echo $id_liste_mc."\n\n";
     50                 //echo date('i:s')."\n\n";
     51                $timestamp='';
     52                 /*Faire d'abord un seul appel à Mc pour afficher plus raidement le formulaire
     53                  * On en retire les informations sur les statut des listes
     54                  */
     55                 if(!$member_info){
     56                         $member_info=membres_liste_info_mc($api,$id_liste_mc,$email);
     57                         $status[$id_liste_mc]=$member_info['data'][0]['status'];
     58                         $timestamp=$member_info['data'][0]['timestamp'];
     59                         if(is_array($member_info['data'][0]['lists']))$lists_members=array_merge($status,$member_info['data'][0]['lists']);
     60                         else $lists_members=$status;
     61                        //echo serialize($lists_members);
     62                        }
     63                 //echo date('i:s')."\n\n";                     
     64                 //echo 'actualiser';
     65                 // Si le statut mc ne correpond pas au statut spip on syncronise
     66                $statut_spip=$info_liste_spip[$id_liste_spip]['statut']?$info_liste_spip[$id_liste_spip]['statut']:'a_valider';
     67                //echo $lists_members[$id_liste_mc];
     68                if($lists_members[$id_liste_mc]){
     69                       
     70                         if      (!in_array($lists_members[$id_liste_mc],$status_equivalence[$statut_spip])){
     71
     72                                if(!$timestamp){
     73                                        $member_info=membres_liste_info_mc($api,$id_liste_mc,$email);
     74                                        $timestamp=$member_info['data'][0]['timestamp'];
     75                                        }
     76                         //Info mailchimp plus récente que celle de spip
     77       
     78                                         if($timestamp=$member_info['data'][0]['timestamp']>$info_liste_spip[$id_liste_spip]['maj']){
     79                                        //echo '1';                     
     80                                                 if($status_mc=$member_info['data'][0]['status']=='subscribed'){
     81                                                         //echo '1.1';
     82                                                         //echo '"'.$id_liste_spip.'-'.$id_liste_mc.'"';
     83                                                                $test=sql_updateq('spip_auteurs_listes',array('statut'=>'valide','maj'=>$timestamp),'id_auteur='.$id_auteur.' AND id_liste='.$id_liste_spip);
     84                                                                if (!$teste) sql_insertq('spip_auteurs_listes',array('statut'=>'valide','maj'=>$timestamp,'id_auteur'=>$id_auteur,'id_liste'=>$id_liste_spip));
     85                                                         }
     86                                                else{
     87                                                        // echo '1.2'; 
     88                                                         sql_updateq('spip_auteurs_listes',array('statut'=>'a_valider','maj'=>$timestamp),'id_auteur='.$id_auteur.' AND id_liste='.$id_liste_spip);                             
     89                                                        }
     90                                                 
     91                                                 }
     92                                        elseif($timestamp=$member_info['data'][0]['timestamp']<$info_liste_spip[$id_liste_spip]['maj']){
     93                                                //echo '2';     
     94                                                //echo serialize($info_liste_spip[$id_liste_spip]);     
     95                                                        // compilation des informations à envoyer à MailChimp
     96                                                        $auteur=donnees_sync_simple($id_liste_spip,$info_liste_spip[$id_liste_spip]);
     97
     98                       
     99                                                        $auteur=$auteur[1];
     100                       
     101                                                        $vals=inscription_liste_mc($valeurs,$api,$id_liste_mc,$email,$auteur,$format,$optin,true);
     102                                                                               
     103                                                }
     104                                        elseif($member_info['data'][0]['error']=='The email address passed does not exist on this list'){
     105                                                //echo '3';
     106                                                if($info_liste_spip[$id_liste_spip]['statut']=='valide'){
     107                                                        // echo '3.1'; 
     108                                                        // compilation des informations à envoyer à MailChimp
     109                                               
     110                                                        $auteur=donnees_sync_simple($id_liste_spip,$info_liste_spip[$id_liste_spip]);
     111                                                                               
     112                                                        $auteur=$auteur[1];
     113                       
     114                                                        $vals=inscription_liste_mc($valeurs,$api,$id_liste_mc,$email,$auteur,$format,$optin,true);     
     115                                                       
     116                                                         }
     117                                                       
     118                                                }                               
     119                                       
    48120                                 }
    49                         else{
    50                                  echo '1.2';   
    51                                  sql_updateq('spip_auteurs_listes',array('statut'=>'a_valider','maj'=>$timestamp),'id_auteur='.$id_auteur.' AND id_liste='.$id_liste_spip);                             
    52                                 }
    53                          
    54                          }
    55                 elseif($timestamp=$member_info['data'][0]['timestamp']<$info_liste_spip[$id_liste_spip]['maj']){
    56                         echo '2';       
    57                         echo serialize($info_liste_spip[$id_liste_spip]);       
    58                                 // compilation des informations à envoyer à MailChimp
    59                                 $auteur=donnees_sync_simple($id_liste_spip,$info_liste_spip[$id_liste_spip]);
    60                                
    61                                 echo serialize($auteur);
    62 
    63                                 $auteur=$auteur[1];
    64 
    65                                 $vals=inscription_liste_mc($valeurs,$api,$id_liste_mc,$email,$auteur,$format,$optin,true);
    66                                 $vals=inscription_liste_mc($flux='',$api,$listId,$email,$donnees_auteur,$email_type='',$optin,$update_existing=true,$replace_interests=false,$send_welcome=false);
    67                                                        
    68                         }
    69                 elseif($member_info['data'][0]['error']=='The email address passed does not exist on this list'){
    70                         echo '3';
    71                         if($info_liste_spip[$id_liste_spip]['statut']=='valide'){
    72                                  echo '3.1';   
    73                                 // compilation des informations à envoyer à MailChimp
    74                        
    75                                 $auteur=donnees_sync_simple($id_liste_spip,$info_liste_spip[$id_liste_spip]);
    76                                
    77                                 echo serialize($auteur);
    78 
    79                                 $auteur=$auteur[1];
    80 
    81                                 $vals=inscription_liste_mc($valeurs,$api,$id_liste_mc,$email,$auteur,$format,$optin,true);     
    82                                  }
    83                                
    84                         }
     121                                 spip_log($vals, 'slcp');       
     122                 }
     123                         // l'abonnée spip n'existe pas sur mc on désincrit
     124                         elseif(!$lists_members[$id_liste_mc]){
     125                                 //echo '4';
     126                                 sql_delete('spip_auteurs_listes','id_auteur='.$id_auteur.' AND id_liste='.$id_liste_spip);                             
     127                                }       
     128                                 
     129               
     130
    85131                 }       
    86132         
     
    194240                foreach($listes_abos AS $id_liste){
    195241                       
    196                                 if(!in_array($id_liste,$listes_abos_prev)){
     242                        if(!in_array($id_liste,$listes_abos_prev)){
    197243                                $l=sql_getfetsel('id_liste','spip_auteurs_listes','id_auteur='.$id_auteur.' AND id_liste='.$id_liste);
    198244                                                               
     
    208254                                $vals=inscription_liste_mc($valeurs,$api,$liste,$email,$auteur,$format,$optin,true);
    209255                               
    210                                 $infos=membres_liste_info_mc($api,$liste,$email);
    211                                 $infos=$infos['data'][0];
    212 
    213                                 $id_mailchimp=$infos['id'];
    214                                 $date_syncro=$infos['info_changed'];
    215                                 if(!intval($l)){
    216                                         sql_insertq('spip_auteurs_listes',array('statut'=>'valide','id_auteur'=>$id_auteur,'id_liste'=>$id_liste,'id_mailchimp'=>$id_mailchimp,'date_inscription'=>$date,'maj'=>$date_syncro));
    217 
    218                                         }
    219                                 else {
    220                                         sql_updateq('spip_auteurs_listes',array('statut'=>'valide','id_mailchimp'=>$id_mailchimp,'date_inscription'=>$date,'maj'=>$date_syncro),'id_auteur='.$id_auteur.' AND id_liste='.$id_liste);
    221                                         }
    222 
    223                                
    224                                
    225                                 $message_ok.='<li>'._T('sclp:liste').' - '.$id_liste.': '. $vals['data']['message_ok'].'</li>';
    226                         }
     256                                if($vals['data']['message_erreur']){
     257                                        $message_erreur.='<li>'._T('sclp:liste').' - '.$id_liste.': '. $vals['data']['message_erreur'].'</li>';
     258                                        }
     259                                else{
     260                                        $infos=membres_liste_info_mc($api,$liste,$email);
     261                                        $infos=$infos['data'][0];
     262       
     263                                        $id_mailchimp=$infos['id'];
     264                                        $date_syncro=$infos['info_changed'];
     265                                        if(!intval($l)){
     266                                                sql_insertq('spip_auteurs_listes',array('statut'=>'valide','id_auteur'=>$id_auteur,'id_liste'=>$id_liste,'id_mailchimp'=>$id_mailchimp,'date_inscription'=>$date,'maj'=>$date_syncro));
     267       
     268                                                }
     269                                        else {
     270                                                sql_updateq('spip_auteurs_listes',array('statut'=>'valide','id_mailchimp'=>$id_mailchimp,'date_inscription'=>$date,'maj'=>$date_syncro),'id_auteur='.$id_auteur.' AND id_liste='.$id_liste);
     271                                                }
     272                                        $message_ok.='<li>'._T('sclp:liste').' - '.$id_liste.': '. $vals['data']['message_ok'].'</li>';         
     273                                        }
    227274                                $liste='';
    228 
     275                                spip_log($vals, 'slcp');       
     276                                }
    229277                        }       
    230278
    231279                }
    232                 if($message_ok) $valeurs .= '<ul>'.$message_ok.'</ul>';
     280               
     281                if($message_ok) $valeurs['message_ok'] = '<ul>'.$message_ok.'</ul>';
     282                if($message_erreur) $valeurs['message_erreur'] = '<ul>'.$message_erreur.'</ul>';               
    233283        return $valeurs;
    234284}
  • _plugins_/squirrels_love_chimps_lists_plus/trunk/formulaires/inc-squirrel_chimps_lists_config-sclp_accordance_champs.html

    r59220 r59243  
     1#CACHE{0}
     2
    13#SET{champs_mailchimp,#ENV**{champs}|table_valeur{mailchimp}}
    24
  • _plugins_/squirrels_love_chimps_lists_plus/trunk/lang/sclp_fr.php

    r59220 r59243  
    77       
    88        //A
     9        'abonnement_inscrit' => 'Inscrits aux listes d\'envois',
    910        'activer_liste' => 'Activer cette liste',
     11        'aucun_abonnement' => 'Pas d\'abonnments',
    1012       
    1113        //C
     
    2325        'eliminer_liste' => 'Éliminer définitivement cette liste',
    2426       
     27        //F
     28        'fermer' => 'Fermer',
     29       
    2530        //G
    26         'gerer_abonnements_listes' => 'Gerer les liste d\'envois',
     31        'gerer_abonnements_listes' => 'Gerer les listes d\'envois',
    2732        'gestion_listes' => 'Gestion listes',
    2833       
     
    3742        'listes_public' => 'Les listes publiques',
    3843       
     44       
     45        //M
     46        'modifier_abonnments' => 'Modifier les abonnements',
     47       
     48        //N
     49        'newsletters_dispos' => 'Les abonnements disponibles',
    3950       
    4051        //P
  • _plugins_/squirrels_love_chimps_lists_plus/trunk/prive/squelettes/affiche_milieu/auteur_listes.html

    r59220 r59243  
    1 
    2 <div class="ajax">
    3 #FORMULAIRE_AUTEUR_LISTES{#ID_AUTEUR}
    4 </div>
    51
    62
     3<BOUCLE_test(CONDITION){si #ENV{editer_abonnements}|=={oui}|non}>
     4        <B_listes>
     5        <h2><:sclp:abonnement_inscrit:></h2>   
     6        <ul>
     7                <BOUCLE_listes(AUTEURS_LISTES listes){spip_listes.statut IN public,prive}{spip_auteurs_listes.statut=valide}{spip_auteurs_listes.id_auteur}{par titre}>
     8                    <li class="squirrel_chimp_mailinglists">#TITRE</li>
     9            </BOUCLE_listes>   
     10        </ul>
     11        </B_listes>     
     12        <div><:sclp:aucun_abonnement:></div>
     13        <//B_listes>
     14        <div><a class="ajax" href="[(#SELF|parametre_url{editer_abonnements,oui})]"><:sclp:modifier_abonnments:></a></div>
     15</BOUCLE_test> 
     16        <div><a  href="[(#SELF|parametre_url{editer_abonnements,'non'})]"><:sclp:fermer:></a></div>
     17        <div class="ajax">
     18        #FORMULAIRE_AUTEUR_LISTES{#ID_AUTEUR}
     19        </div>
     20<//B_test>             
     21
     22
     23
  • _plugins_/squirrels_love_chimps_lists_plus/trunk/prive/squelettes/contenu/inc-squirrel_chimp_sclp_listes_actives_details.html

    r59220 r59243  
    44        <BOUCLE_listes_spip_privees(LISTES){statut}{par titre}>
    55        <li class="choix">
    6                 <span class="titre">#TITRE      </span>
     6                <span class="titre">#TITRE      (#DATE_SYNCRO)</span>   
    77                <div class="actions">
    88                        <span class="syncroniser">
  • _plugins_/squirrels_love_chimps_lists_plus/trunk/sclp_fonctions.php

    r59220 r59243  
    11<?php
    2 
    32if (!defined("_ECRIRE_INC_VERSION")) return;
    43
     
    2524                }
    2625
    27         spip_log($donnes_liste_spip,'slcp');
     26        //spip_log($donnes_liste_spip,'slcp');
    2827        foreach($liste_mc['data'] AS $membre){
    2928
     
    3332        }
    3433       
    35 // Syncroniser des listes
    36 function syncroniser_listes($api='',$id_liste_spip,$id_liste_mailchimp,$status='',$start='',$limit=''){
    37 
    38         include_spip('squirrel_chimp_lists_fonctions');
    39        
    40         //pour ecrire_config
    41         include_spip('inc/config');
    42        
    43         //L'api de mailchimps
    44         include_spip('inc/1.3/MCAPI.class');
    45 
    46        
    47         // initialisation d'un objet mailchimp 
    48         if(!$api){
    49                 $apikey=lire_config('squirrel_chimp/apiKey');
    50                 $api = new MCAPI($apikey);
    51                 }
    52        
    53         // la date de la dernière syncro générale
    54         $since=sql_getfetsel('date_syncro','spip_listes_syncro','objet="listes" AND type_syncro="generale" AND id_objet='.$id_liste_spip,'','date_syncro DESC');
    55 
    56 
    57         // lesn données spip
    58         $champs=champs_spip();
    59         $champs_spip_auteurs=array();
    60         foreach($champs AS $champ){
    61                 $champs_spip_auteurs[]='spip_auteurs.'.$champ;
    62                 }
    63                
    64         $c=implode(',',$champs_spip_auteurs).',spip_auteurs_listes.maj,spip_auteurs_listes.date_syncro,spip_auteurs_listes.statut,spip_auteurs.email,spip_auteurs.id_auteur,spip_auteurs.id_mailchimp';
    65        
    66         $liste_spip=sql_select($c,'spip_auteurs_listes,spip_auteurs','spip_auteurs_listes.id_liste='.$id_liste_spip.' AND spip_auteurs_listes.id_auteur=spip_auteurs.id_auteur  AND spip_auteurs_listes.date_syncro >'.sql_quote($since));
    67        
    68         // Composer le tableau distinguant entre abonnées et désabonnées
    69         $listes_spip=array();
    70         while($data=sql_fetch($liste_spip)){
    71                 if($data['email'])$listes_spip[$data['statut']][$data['email']]=$data;
    72                 }
    73        
    74         //Les listes mc distinguant entre abonnées et désabonnées
    75         if(!$status){
    76                 $statuts=array('subscribed','unsubscribed');
    77                 $listes_mc=array();
    78                 foreach($statuts AS $status){
    79                         $listes_mc[$status]=membres_liste_mc($api,$id_liste_mailchimp,$status,$since,$limit);
    80                         }       
    81                 }
    82         else {
    83                 $liste_mc=membres_liste_mc($api,$id_liste_mailchimp,$status,$since,$limit);
    84                 }
    85        
    86         //Etablir les candiats à la syncro.
    87 
    88         //D'abord les désinscriptions
    89         $liste_desabonnement=array();
    90         $liste_abonnement=array();
    91         $liste_traites_mc=array();
    92         $timestamp_desabo=array();
    93        
    94         foreach($listes_mc['unsubscribed']['data'] as $info_m_mc){
    95                 $syncro_spip='';
    96                 if($syncro_spip=$listes_spip['valide'][$info_m_mc['email']]['maj']){           
    97                         if($info_m_mc['timestamp'] > $syncro_spip){
    98                                 $liste_desabonnement['vers_spip'][]=$listes_spip['valide'][$info_m_mc['email']]['id_auteur'];
    99                                 $timestamp_desabo[$listes_spip['valide'][$info_m_mc['email']]['id_auteur']]=$info_m_mc['timestamp'] ;
    100                         }
    101                         // on le réinscrir sur mc
    102                         elseif($syncro_spip > $info_m_mc['timestamp']){
    103                                 $liste_abonnement['vers_mc'][$info_m_mc_2['email']]=$listes_spip['a_valider'][$info_m_mc_2['email']];
    104                                 }
    105                         }
    106                 }       
    107 
    108         //spip_log($listes_spip,'slcp');               
    109         //spip_log($liste_desabonnement,'slcp');               
    110         //spip_log($listes_mc['subscribed']['data'],'slcp');
    111                        
    112         //Ensuite les inscriptions et actualisations   
    113 
    114         foreach($listes_mc['subscribed']['data'] as $info_m_mc_2){
    115                 $syncro_spip_2='';
    116                 //spip_log($listes_spip['valide'][$info_m_mc_2['email']].$info_m_mc_2['email'],'slcp');
    117 
    118                 //L'inscris mc est désactivé en spip
    119                                
    120                 if($syncro_spip_2=$listes_spip['a_valider'][$info_m_mc_2['email']]['maj']){
    121                         //spip_log('1.1','slcp');                       
    122                                 if($info_m_mc_2['timestamp'] > $syncro_spip_2){
    123                                         //spip_log('1.1.1','slcp');     
    124 
    125                                         //on cherche les données de l'abonnée mc
    126                                         $info=membres_liste_info_mc($api,$id_liste_mailchimp,$info_m_mc_2['email']);
    127                                          $liste_abonnement['vers_spip'][$info_m_mc_2['email']]=$info['data'][0];
    128                                  }
    129                                 elseif($syncro_spip_2 > $info_m_mc_2['timestamp']){
    130                                         $liste_desabonnement['vers_mc'][]=$info_m_mc_2['email'];
    131                                         $timestamp_desabo[$listes_spip['valide'][$info_m_mc_2['email']]['id_auteur']]=$info_m_mc_2['timestamp'] ;
    132                                         //spip_log('1.1.2','slcp');     
    133                                         }
    134                                 }
    135                         //spip_log($info_m_mc_2['timestamp'], 'slcp');                                         
    136                 //L'inscris mc est active en spip mais date d'actualisation plus anciennes que celle de mc                             
    137                 elseif(($syncro_spip_2=$listes_spip['valide'][$info_m_mc_2['email']]['maj'])){
    138                         //spip_log('1.2','slcp');       
    139                                 if($info_m_mc_2['timestamp'] > $syncro_spip_2){                                 
    140                                          //on cherche les données de l'abonnée mc
    141                                          $info=membres_liste_info_mc($api,$id_liste_mailchimp,$info_m_mc_2['email']);
    142                                          $liste_abonnement['vers_spip'][$info_m_mc_2['email']]=$info['data'][0];
    143                                          }
    144                                 elseif($syncro_spip_2 > $info_m_mc_2['timestamp']){
    145                                                 $liste_abonnement['vers_mc'][$info_m_mc_2['email']]=$listes_spip['valide'][$info_m_mc_2['email']];
    146                                                 }
    147                                 }
    148                         //Présent sur mailchhimp       
    149                 else{
    150                         //mais pas abonné à la liste spip ou pas de modifications depuis la dernière syncro     
    151                         if($listes_spip['valide'][$email]){
    152                                 //on cherche les données de l'abonnée mc
    153                                 $info=membres_liste_info_mc($api,$id_liste_mailchimp,$info_m_mc_2['email']);
    154                                 $liste_abonnement['vers_spip'][$info_m_mc_2['email']]=$info['data'][0];
    155                                 }
    156                         }       
    157                 $liste_traites_mc[$info_m_mc_2['email']]=$info_m_mc_2['timestamp'];             
    158                 }
    159                
    160        
    161         // On récupère les abbonées spip pas encore traitées   
    162         $a_traiter_abo=array_diff_key($listes_spip['valide'],$liste_traites_mc);
    163 
    164         foreach ($a_traiter_abo AS $email=>$data){
    165                 $liste_abonnement['vers_mc'][$email]=$listes_spip['valide'][$email];
    166                 }
    167                
    168 
    169        
    170         // On sycronise
    171        
    172         // les variables
    173         $optin = lire_config('squirrel_chimp/ml_opt_in')?false:true; //yes, send optin emails
    174         $up_exist = true; // yes, update currently subscribed users
    175         $replace_int = false; // no, add interest, don't replace
    176        
    177         // Désabonnement       
    178         if($liste_desabonnement){
    179                 if($liste_desabonnement['vers_mc']){           
    180                         desinscription_batch_mc($api,$id_liste_mailchimp,$liste_desabonnement['vers_mc']);
    181                         }
    182                 elseif($liste_desabonnement['vers_spip']){
    183                         desinscription_batch_spip($id_liste_spip,$liste_desabonnement['vers_spip'],$timestamp_desabo);
    184                         }
    185                 }
    186                
    187                
    188        
    189         // Inscriptions
    190         if($liste_abonnement){
    191                 if($liste_abonnement['vers_mc']){
    192                         $batch=donnees_sync_simple($id_liste_mailchimp,$liste_abonnement['vers_mc']);           
    193                         inscription_batch_mc($api,$id_liste_mailchimp,$batch,$optin,$up_exist,$replace_ints);
    194                         }
    195                 elseif($liste_abonnement['vers_spip']){
    196                         inscription_batch_spip($id_liste_spip,$liste_abonnement['vers_spip']);
    197                         }
    198                 }
    199                
    200 
    201         //$nombre_liste_spip=sql_count($liste_spip);
    202         //$nombre_liste_mc=count($liste_mc);
    203        
    204         /*if($nombre_liste_spip>=$nombre_liste_mc)$sync=syncro_spip_mc($liste_spip,$liste_mc,$derniere_syncro);
    205         else $sync=syncro_mc_spip($liste_spip,$liste_mc,$derniere_syncro);*/
    206         //spip_log('a traiter'.serialize($a_traiter), 'slcp'); 
    207         //spip_log($listes_spip['valide'], 'slcp');
    208         //spip_log($listes_spip['a_valider'], 'slcp');
    209         spip_log($liste_abonnement, 'slcp');
    210         spip_log($batch, 'slcp');
    211         spip_log($timestamp_desabo, 'slcp');
    212         //spip_log($liste_desabonnement, 'slcp');
    213         //spip_log($listes_spip, 'slcp');
    214         spip_log($desabonner_mc, 'slcp');
    215        
    216         //spip_log($liste_traites_mc, 'slcp'); 
    217 
    218        
    219         //spip_log($data, 'slcp');
    220         //spip_log("Admin $messageErreur",'squirrel_chimp');
    221         return;
    222        
    223 }
    224 
    22534// Prépare les données pour la synchronisation
    226 function donnees_sync_simple($id_liste,$donnees){
    227        
     35function donnees_sync_simple($id_liste,$donnees,$base='spip'){
     36
    22837        // Les champs spip à traiter
    22938        $champs_sync=champs_pour_concordance($id_liste);
    230        
    231 
     39
     40        if($base!='spip')$champs_sync=array_flip($champs_sync[0]);
     41
     42        //spip_log($donnees ,'slcp');
    23243        // Préparation de l'array a envoyer à mailchimp
    23344        $batch=array();
    23445        $i=0;
    23546        foreach($donnees AS $key=>$data){
    236                 echo serialize($data);
     47                //spip_log($key ,'slcp');       
     48                //spip_log($data ,'slcp');                     
    23749                if(!is_array($data))$data =$donnees;
     50                if($base!='spip')$data=$data['merges'];
    23851                $i++;
    23952                foreach($data AS $key=>$value){
     
    24962
    25063// Désinscription en masse des abonnées
    251 function desinscription_batch_spip($id_liste,$ids,$timestamp_desabo){
    252        
    253         foreach($ids as $id){
    254                 $val=array('statut'=>'a_valider','maj'=>$timestamp_desabo[$id],'date_syncro'=>$timestamp_desabo[$id]);
    255                 sql_updateq('spip_auteurs_listes',$val,'id_liste='.$id_liste);
     64function desinscription_batch_spip($id_liste_spip,$desabonnements){
     65       
     66        foreach($desabonnements as $id_auteur=>$timestamp){
     67                $val=array('statut'=>'a_valider','maj'=>$timestamp,'date_syncro'=>$timestamp);
     68                sql_updateq('spip_auteurs_listes',$val,'id_liste='.$id_liste_spip.' AND id_auteur='.$id_auteur);
    25669                }
    25770        return;
     
    25972       
    26073// Inscription en masse dans spip
    261 function inscription_batch_spip($id_liste_spip,$batch){
    262        
    263         foreach($ids as $id){
    264                 $val=array('statut'=>'a_valider','maj'=>$timestamp_desabo[$id],'date_syncro'=>$timestamp_desabo[$id]);
    265                 sql_updateq('spip_auteurs_listes',$val,'id_liste='.$id_liste);
     74function inscription_batch_spip($id_liste_spip,$abonnements){
     75        //pour ecrire_config
     76        include_spip('inc/config');
     77        $malinglists=lire_config('squirrel_chimp/mailinglists');
     78        $id_liste_mc=$malinglists[$id_liste_spip];
     79
     80        foreach($abonnements as $id_auteur=>$donnees){
     81               
     82                $update='';
     83                if(intval($id_auteur)){         
     84                        $val=array('statut'=>'valide','maj'=>$donnees['timestamp'],'date_syncro'=>$donnees['timestamp']);
     85                        $update=sql_updateq('spip_auteurs_listes',$val,'id_liste='.$id_liste_spip.' AND id_auteur='.$id_auteur);
     86                        }
     87                else{
     88                        $id_auteur=sql_getfetsel('id_auteur','spip_auteurs','email='.sql_quote($donnees['email']));
     89                        spip_log($id_auteur, 'slcp');
     90                        // l'auteur existe
     91                        if($id_auteur){
     92                                spip_log('update 1', 'slcp');
     93                                //On actualise si il a déjà été insscrit à la mailinglist
     94                                $test=sql_getfetsel('maj','spip_auteurs_listes','id_liste='.$id_liste_spip.' AND id_auteur='.$id_auteur);
     95                                spip_log($test, 'slcp');
     96                                $val=array('statut'=>'valide','maj'=>$donnees['timestamp'],'date_syncro'=>$donnees['timestamp']);
     97                                if($test){
     98                                        sql_updateq('spip_auteurs_listes',$val,'id_liste='.$id_liste_spip.' AND id_auteur='.$id_auteur);
     99                                        }
     100                                //Sinon on le rajoute dans les listes
     101                                else{
     102                                        spip_log($id_liste_spip, 'slcp');
     103                                        $val['id_liste']=$id_liste_spip;
     104                                        $val['id_auteur']=$id_auteur;
     105                                        $val['date_inscription']=$donnees['timestamp'];
     106                                        sql_insertq('spip_auteurs_listes',$val);
     107                                        }
     108                                }
     109                        else{
     110                                spip_log('2', 'slcp');
     111                                // On cherche les infos du membre mailchimp
     112                                $member_info=membres_liste_info_mc($api,$id_liste_mc,$donnees['email']);
     113                               
     114                                // On cherche la correpsondance des champs
     115                                $champs=donnees_sync_simple($id_liste,$member_info['data'],'mc');
     116
     117                                $champs=donnees_sync_simple($id_liste,$member_info['data'],'mc');
     118                               
     119                                $lang=$member_info['data'][0]['language']?$member_info['data'][0]['language']:lire_config('langue_site');
     120                                $champs_additionnels=array(
     121                                        'email'=>$donnees['email'],
     122                                        'statut'=>'6forum',
     123                                        'maj'=>$donnees['timestamp'],
     124                                        'date_syncro'=>$donnees['timestamp'],
     125                                        'format'=>$member_info['data'][0]['email_type'],
     126                                        'lang'=>$lang,
     127                                        'id_mailchimp'=>$member_info['data'][0]['id'],
     128                                        );
     129
     130                                $champs_sync=$champs[1];
     131                                if(!$champs_sync['nom']){
     132                                        $explode=explode('@',$donnees['email']);
     133                                        $champs_sync['nom']=$explode[0];
     134                                        }
     135                                                                                                       
     136                                //On actualise la bd
     137                                $champs=array_merge($champs_sync,$champs_additionnels);
     138                                $id_auteur=sql_insertq('spip_auteurs',$champs);
     139                               
     140                                $valeurs=array(
     141                                                'id_auteur'=>$id_auteur,
     142                                                'id_liste'=>$id_liste_spip,
     143                                                'id_mailchimp'=>$member_info['data'][0]['id'],                                         
     144                                                'statut'=>'valide',
     145                                                'maj'=>$donnees['timestamp'],
     146                                                'date_inscription'=>$donnees['timestamp'],
     147                                                'date_syncro'=>$donnees['timestamp'],
     148                                                'format'=>$member_info['data'][0]['email_type'],                                                                                               
     149                                                );                                             
     150                                sql_insertq('spip_auteurs_listes',$valeurs);
     151                                $id_auteur=''; 
     152
     153                                }
     154                        }
    266155                }
    267156        return;
     
    300189 */
    301190 
    302 function membres_liste_info_mc($api='',$id_liste,$email=''){
     191function membres_liste_info_mc($api='',$id_liste,$email){
     192
    303193        //pour ecrire_config
    304194        include_spip('inc/config');
     
    311201                $api = new MCAPI($apikey);             
    312202                }
    313        
     203
    314204        $retval = $api->listMemberInfo($id_liste,$email);
    315 //spip_log($retval, 'slcp');
     205       
     206        if ($api->errorCode){
     207
     208        echo "Unable to load listMemberInfo()!\n";
     209
     210        echo "\tCode=".$api->errorCode."\n";
     211
     212        echo "\tMsg=".$api->errorMessage."\n";
     213
     214}
    316215
    317216        return $retval;
     
    336235                $api = new MCAPI($apikey);             
    337236                }
    338        
     237
    339238        $retval = $api->listBatchUnsubscribe($api,$id_liste,$email,$delete_member,$send_goodby,$send_notify);
     239
    340240//spip_log($retval, 'slcp');
    341241
     
    367267       
    368268}
    369 
    370 
    371 
    372 
    373 
    374 
    375269?>
  • _plugins_/squirrels_love_chimps_lists_plus/trunk/sclp_pipelines.php

    r59220 r59243  
    66// Ajoute le foormulaire abonnement à la ficher auteurs
    77function sclp_affiche_milieu($flux){
     8                       
    89        switch($flux['args']['exec']) {
    9                
    1010                case 'auteur_infos':
     11                        $flux['args']['editer_abonnements']=_request('editer_abonnements');
    1112                        include_spip('inc/filtres_images');     
     13                        $deplier=_request('editer_abonnements')?true:false;
    1214                        $image=extraire_attribut(image_reduire(find_in_path('images/letter_64.png'),24),'src');         
    13                         $contenu= recuperer_fond('prive/squelettes/affiche_milieu/auteur_listes',$flux['args']);
    14                         $flux["data"] .= cadre_depliable($image,strtoupper(_T('sclp:gerer_abonnements_listes')),'auto',$contenu,'gerer_abonnements_listes','e');   
     15                        $contenu= recuperer_fond('prive/squelettes/affiche_milieu/auteur_listes',$flux['args'],array('ajax'=>true));
     16                        $flux["data"] .= cadre_depliable($image,strtoupper(_T('sclp:gerer_abonnements_listes')),$deplier,$contenu,'gerer_abonnements_listes','e');   
    1517                        break;
    1618        }
Note: See TracChangeset for help on using the changeset viewer.