Changeset 59801 in spip-zone


Ignore:
Timestamp:
Mar 27, 2012, 8:41:36 AM (7 years ago)
Author:
abelass@…
Message:

Possibilité de declarer les tables et les champs à utiliser pour la syncro Spip->Mailchimp

Location:
_plugins_/squirrels_love_chimps_lists
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/squirrels_love_chimps_lists/branches/1/formulaires/squirrel_chimp_lists_config.html

    r58831 r59801  
     1
    12<fieldset class="donnees_lists">
    23        <legend><:scl:gestion_listes:></legend>
     
    6162                                <label for="ml_act_actualise"><:scl:actualiser_mailinglists_actualise:></label>
    6263                        </div>                 
    63                        
    64 
    6564                </li>   
    6665        </ul>
     
    6867<fieldset class="donnees_lists_supp">
    6968        <legend><:scl:champs_supp:></legend>
    70 
    7169        <ul>
    7270                <li class="squirrel_chimp_mailinglists[ (#ENV**{erreurs}|table_valeur{mailinglist_actualiser}|oui)erreur]">
    7371                        <label><:scl:champs_supp_mapping:></label>
    7472
    75                         [(#CONFIG{squirrel_chimp/mailinglists}|oui)#SET{champs,#GET{apikey}|champs_listes{#CONFIG{squirrel_chimp/mailinglists}|array_keys}}]
     73
     74                        [(#CONFIG{squirrel_chimp/mailinglists}|oui)#SET{champs,#GET{apikey}|champs_listes{#CONFIG{squirrel_chimp/mailinglists}|array_keys}]
    7675                        #SET{champs_mailchimp,#GET{champs}|table_valeur{mailchimp}}
     76
     77                        <BOUCLE_champs_actifs(POUR){tableau #ENV{champs}}>
    7778                       
    78                         <BOUCLE_listes2(POUR){tableau #GET{champs}|table_valeur{spip}}>
     79                        <BOUCLE_listes2(POUR){tableau #VALEUR}>
    7980                                <div class="choix">
    8081                                        <b>[(#VALEUR)] (<:scl:champ_spip:>)</b>  #SET{name,#VALEUR}
     
    9091                                </div>
    9192                                </BOUCLE_champs>
    92                                
     93                       
    9394                        </BOUCLE_listes2>
     95                        </BOUCLE_champs_actifs>                         
    9496                </li>   
    9597        </ul>
     98</fieldset>
     99<fieldset class="champs_extras">
     100        <legend><:scl:declarer_champs_extras:></legend>
     101        <ul>
     102                <li class="squirrel_chimp_mailinglists[ (#ENV**{erreurs}|table_valeur{tables}|oui)erreur]">
     103                        <label for="tables"><:scl:tables_extras:></label>
     104                        <p class="explication"><:scl:tables_extras_explication:></p>
     105                        <div class="choix">
     106                                [
     107                                <span class='erreur'>(#ENV**{erreurs}|table_valeur{tables})</span>
     108                                ]
     109                                <input type="text" class="texte" style="size:98%" name="tables" id="tables" value='#ENV{tables,spip_auteurs}'/>
     110                        </div>
     111                </li>
     112               
     113                #SET{tables,#ENV{tables}|explode{','}}         
     114                <B_tables>                             
     115                <li class="squirrel_chimp_mailinglists[ (#ENV**{erreurs}|table_valeur{champs}|oui)erreur]">
     116                        <label for="champs"><:scl:champs_extras:></label>
     117                        <p class="explication"><:scl:champs_extras_explication:></p>
     118                        <div class="choix">
     119                        <dl>
     120                               
     121                        <BOUCLE_tables(POUR){tableau #GET{tables}}>
     122                                #SET{table,#VALEUR}
     123                                <B_champs>
     124                                <dt id="#VALEUR"><a href="##VALEUR" id="table_#VALEUR"class="champs">#VALEUR</a>[ (<:scl:champs_utilises:>: (#ENV{champs}|table_valeur{#GET{table}}|implode{','}))]</dt>
     125                                <div class="champs_details table_#VALEUR" >
     126                                <BOUCLE_champs(POUR){tableau #GET{champs}|table_valeur{spip}|table_valeur{tout}|table_valeur{#VALEUR}}>
     127                                        <dd><input type="checkbox" class="checkbox" name="champs[#GET{table}][#VALEUR]" id="champs_#VALEUR" value='#VALEUR' [(#ENV{champs}|table_valeur{#GET{table}}|table_valeur{#VALEUR}|=={#VALEUR}) checked="ckecked"] />
     128                                <label for="champs_#VALEUR">#VALEUR</label></dd>
     129                                </BOUCLE_champs>
     130                                </div> 
     131                                </B_champs>                                     
     132                        </BOUCLE_tables>
     133                                [
     134                                <span class='erreur'>(#ENV**{erreurs}|table_valeur{champs})</span>
     135                                ]
     136                        </div>
     137                </B_tables>             
     138        </ul>
     139</fieldset>
    96140        <div class="submit"><input name="sync_auteurs" value="<:scl:sync_auteurs:>" type="submit"></div>
    97 </fieldset>
    98 
    99141       
    100 [(#REM)<script type="text/javascript">
     142<script type="text/javascript">
    101143 $(document).ready(function(){
    102         $('.optin').hide();
     144         
     145        $('.champs_details').hide();             
     146                 
     147        $('a.champs').click(function() {
     148                var cible = this.id;   
     149                $('.' + cible).toggle();
     150        });     
    103151       
    104         if($('#ml_act_ajout').is(':checked')){
    105                 $('.optin').show();
    106         };
    107        
    108         $('#ml_act_ajout').click(function() {
    109          $('.optin').toggle();
    110         });     
    111152 });
    112 </script>               ]
     153</script>               
    113154
    114155
  • _plugins_/squirrels_love_chimps_lists/branches/1/formulaires/squirrel_chimp_lists_config_traiter.php

    r59264 r59801  
    33function formulaires_squirrel_chimp_lists_config_traiter_dist($valeurs){
    44        include_spip('squirrel_chimp_lists_fonctions');
     5        include_spip('inc/config');
     6       
    57       
    68        $valeurs['message_ok'] = _T('scl:enregistrement_ok');
     
    1517                // Composition du batch
    1618               
    17                 $batch=donnees_sync('','spip_auteurs','statut!="5poubelle"');
    18        
     19                $batch=donnees_sync('','','','spip_auteurs.statut!="5poubelle"');
     20               
    1921                // initialisation d'un objet mailchimp
    2022                $apiKey=lire_config('squirrel_chimp/apiKey');   
     
    4850                                        $log .= _T('scl:sync_code').$val['code']." <br/>\n";
    4951                                        $log .= _T('scl:sync_message').$val['message']." \n";
     52                                        }
    5053                                }
    51                                 }
    52                                
    5354                        $valeurs['message_ok'] = $log; 
    54                        
    5555                        }
    56 
    57                 }
    58        
     56                }               
    5957                // Pipeline pour intervenir dans le traitement de ce formulaire
    6058                $pipeline= pipeline('squirrel_chimp_lists_config_traiter',array(
     
    6361       
    6462       
    65                 if($pipeline)$objets=$pipeline['data'];         
     63                if($pipeline)$objets=$pipeline['data'];
     64               
     65
    6666       
    6767return $valeurs;
  • _plugins_/squirrels_love_chimps_lists/branches/1/inc/editer_auteur_traiter_listes.php

    r59312 r59801  
    2626                //on verifie que les parametres du plugin mailchimp sont initialisées
    2727                if ($apiKey){
    28                         spip_log(__LINE__,'squirrel_chimp');
    29                         spip_log($apiKey,'squirrel_chimp');
     28
     29                        spip_log('actualisation_auteur','squirrel_chimp_lists');
    3030
    3131                        // initialisation d'un objet mailchimp
     
    4242
    4343                        // compilation des informations à envoyer à MailChimp
    44                         $donnees_auteur=donnees_sync('','spip_auteurs','id_auteur='.$id_auteur);
     44                        $donnees_auteur=donnees_sync('','',$id_auteur);
     45                       
     46                        spip_log($donnees_auteur,'squirrel_chimp_lists');       
    4547                        $donnees_auteur=$donnees_auteur[1];
    4648                        $email=$donnees_auteur['EMAIL'];
     
    4951                        // Actualisation de la liste avec un nouvel auteur ou si activé actualisation des données si modification du profil
    5052                        if (($new AND $ajouter) OR (!$new AND $actualiser AND $statut!='5poubelle')){
    51                                 spip_log('ajouter ou actualiser','squirrel_chimp');
     53                                spip_log('ajouter ou actualiser','squirrel_chimp_lists');
    5254                               
    5355                                // By default this sends a confirmation email - you will not see new members
  • _plugins_/squirrels_love_chimps_lists/branches/1/lang/scl_fr.php

    r57501 r59801  
    1616       
    1717        //C
     18        'champs_extras' => 'Déclarez les champs à utiliser',
     19        'champs_extras_explication' => 'indiquez pour chaque table les champs à utliser',
     20        'champs_utilises' => 'Champs utilisés',
     21        'declarer_champs_extras' => 'Déclarer des champs SPIP supplémentaires',
     22        'declarer_champs_extras' => 'Déclarer des champs SPIP supplémentaires',
    1823        'champ_spip' => 'Champ SPIP',
    1924        'champs_supp' => 'Quels informations additionnelles de SPIP voulez-vous utiliser pour la synchronisation avec MailChimp (l\'email est toujours synchronisé)',
     
    7984       
    8085        // T
     86        'tables_extras' => 'Declarer les tables à utiliser',
     87        'tables_extras_explication' => 'Indiquez le(s)table(s) séparée(s) par virgule, chaque table declarée doit obligatoirement contenir un champ "id_auteur"',
    8188        'tout' => 'Toutes les listes',
    8289
  • _plugins_/squirrels_love_chimps_lists/branches/1/plugin.xml

    r59312 r59801  
    33        <auteur>[Spade->http://blog.spade.be/] et [Rainer M&#252;ller->http://www.mychacra.net]</auteur>
    44        <licence>GNU/GLP</licence>
    5         <version>1.3.0</version>
     5        <version>1.4.0</version>
    66        <licence>MIT</licence>
    77        <etat>test</etat>
  • _plugins_/squirrels_love_chimps_lists/branches/1/squirrel_chimp_lists_fonctions.php

    r59312 r59801  
    33if (!defined("_ECRIRE_INC_VERSION")) return;
    44
    5 /* filtre pour l'intégration Api Mailchimp
    6  * lists(string apikey, array filters, int start, int limit)
    7  * http://apidocs.mailchimp.com/api/1.3/lists.func.php
    8  */
    9 function recuperer_listes($apiKey,$filters='',$start='',$limit='100'){
    10        
    11         # API mailchimp
    12         include_spip('inc/1.3/MCAPI.class');
    13 
    14         //on verifie que les parametres du plugin mailchimp sont initialisées
    15         if ($apiKey){
    16                 spip_log(__LINE__,'squirrel_chimp');
    17                 spip_log($apiKey);
    18 
    19                 // initialisation d'un objet mailchimp
    20                 $api = new MCAPI($apiKey);
    21                
    22                 //récuperation des listes
    23                
    24                 $retval = $api->lists($filters,$start,$limit);
    25                
    26                 $return=array();
    27 
    28                 if ($api->errorCode){
    29                         $return['error'] .= "Unable to load lists()!";
    30                         $return['error'] .= "\n\tCode=".$api->errorCode;
    31                         $return['error'] .=  "\n\tMsg=".$api->errorMessage."\n";
    32                 } else {
    33                         $return['data'] = $retval['data'];
    34                         }
    35                 }
    36                  
    37                
    38         return $return;         
    39 }
     5
    406
    417//Retourne un array  pour filtrer les lists spip et utilisé par lists() de MailChimp
     
    4915        }
    5016
     17function tables_dispos(){
     18        include_spip('inc/config');
     19       
     20        // On cherche les tables à prendre en compte
     21
     22        $tables=explode(',',lire_config('squirrel_chimp/tables'));
     23        if(!$tables)$tables=array('spip_auteurs');     
     24               
     25        return $tables;
     26        }       
     27
    5128// filtre pour obtenir les champs spip à disposition
    52 function champs_spip($tables='spip_auteurs'){
    53        
    54         $champs_refuses=array(
    55                 "id_auteur","email","nom_site","nom_site","url_site","login","pass","low_sec","statut","maj","pgp","htpass","en_ligne","imessage","messagerie","alea_actuel","alea_futur","prefs","cookie_oubli","source","extra","webmestre","date_syncro","id_mailchimp","format"
    56                 );
    57        
     29function champs_spip(){
     30        include_spip('inc/config');     
     31        $tables=tables_dispos();
     32        $champs_extras=lire_config('squirrel_chimp/champs');
    5833        $trouver_table = charger_fonction('trouver_table','base');
    5934        $champs=array();
    60         if(!is_array($tables)){
    61                 $c=$trouver_table($tables);
    62                 $champs= array_keys($c['field']);
    63         }
    64         else{
    65                 foreach($tables AS $table){
    66                         $c=$trouver_table($table);     
    67                         $champs=array_merge($champs,array_keys($c['field']));
    68                         }
    69                 }
    70        
    71         return array_diff($champs,$champs_refuses);
     35
     36        foreach($tables AS $key=>$table){
     37                if($table){
     38                        $c=$trouver_table($table);
     39                        if(is_array($c['field']))$champs['tout'][$table]=array_keys($c['field']);
     40                        if($extras=$champs_extras[$table]){
     41                                $champs[$table]=$extras;
     42                                }
     43                        else{   
     44                                $table=$table?$table:0;
     45                                if(is_array($c['field']) AND count($c['field'])>0){
     46                                        $c=array_keys($c['field']);
     47                                        $champs[$table]=$c;     
     48                                        }       
     49                                }
     50                        $c='';
     51                        }
     52                }
     53        //echo serialize($champs);
     54        return $champs;
    7255        }
    7356
    7457// filtre pour obtenir un array de corresponance entre champs spip ,et champs MailChimp
    75 function champs_listes($apiKey,$listId,$tables='spip_auteurs',$multi=''){
     58function champs_listes($apiKey,$listId,$multi=''){
    7659       
    7760        $mapping= array();
     
    7962        // initialisation d'un objet mailchimp
    8063        $api = new MCAPI($apiKey);
    81  
     64
    8265        if(is_array($listId)){
    8366                foreach($listId AS $id){
     
    9073                else {
    9174                        if($multi) $mapping['mailchimp'][$listId]  = $api->listMergeVars($listId);
    92                         else $mapping['mailchimp']  = $api->listMergeVars($listId);            
    93                         }
    94        
    95         if($tables)$mapping['spip'] = champs_spip($tables);
     75                        else $mapping['mailchimp']  = $api->listMergeVars($listId);     
     76                        }
     77       
     78        $mapping['spip'] = champs_spip();
    9679       
    9780        return $mapping;
     
    9982}
    10083
     84// cherche les champs d'une table
     85/*
     86function champs_table($tables=''){
     87
     88
     89        $tables=tables_dispos($tables);
     90
     91        $champs_dispos=lire_config('squirrel_chimp/champs');
     92        echo serialize($champs);
     93        $champs=array();       
     94        if(is_array($tables)){
     95                        foreach($tables AS $table){
     96                        if($table)$champs[$table]=$champs_dispos[$table];
     97                        }
     98                }
     99        echo serialize($champs);
     100        return $champs;
     101       
     102        }*/
     103
    101104
    102105// Prépare les données pour la synchronisation
    103 function donnees_sync($id_liste='',$from='spip_auteurs',$where='',$groupby='',$orderby='',$limit='',$having='',$serveur='',$option=true){
    104        
    105         // Les champs spip à traiter
    106         $champs_sync=champs_pour_concordance($id_liste);
     106function donnees_sync($id_liste_spip='',$table='',$identifiant='',$where_add=''){
     107       
     108        //Les données de la configuration
     109        include_spip('inc/config');
     110
     111        $tables=tables_dispos();
     112        $champs_extras=lire_config('squirrel_chimp/champs');
     113
     114
     115        //Préparation de la requette
     116        $identifiant_defaut='id_auteur';
     117       
     118        $from=implode(',',$tables);     
     119
     120        $where_principal=$identifiant_principal.'='.$identifiant;
     121        $where_secondaire=array();     
     122        $champs=array();
     123        $i=0;
     124        foreach($tables AS $table){
     125                $i++;
     126                if($i==1)$table_principale=$table;
     127                else $where_secondaire[$i]=$table_principale.'.'.$identifiant_defaut.'='.$table.'.'.$identifiant_defaut;
     128                foreach($champs_extras[$table] as $champ){
     129                        $champs[$champ]=$table.'.'.$champ;
     130                        }
     131                }
     132               
     133        if(!$champs)$champs='*';               
     134        else $champs['email']='spip_auteurs.email';     
     135        $identifiant_joints=implode(' AND ',$where_secondaire);
     136        if($identifiant)$identifiant_principal=' AND '.$table_principale.'.'.$identifiant_defaut.'='.$identifiant;
     137        if($where_add)$identifiant_additionnel=' AND '.$where_add;
     138       
     139        $where=$identifiant_joints.$identifiant_principal.$identifiant_additionnel;
     140       
     141        spip_log($where,'squirrel_chimp_lists');       
     142       
     143        $champs=implode(',',$champs);
     144
     145
     146        // La concordance entre les champs
     147        $champs_sync=champs_pour_concordance($id_liste_spip);
     148
    107149       
    108150        // les utilisateurs spip
    109         $sql=sql_select(array_keys($champs_sync),$from,$where,$groupby,$orderby,$limit,$having,$serveur,$option);
     151        $sql=sql_select($champs,$from,$where,$groupby,$orderby,$limit,$having,$serveur,$option);
    110152       
    111153        // Préparation de l'array a envoyer à mailchimp
     
    137179}
    138180
     181/* filtre pour l'intégration Api Mailchimp
     182 * lists(string apikey, array filters, int start, int limit)
     183 * http://apidocs.mailchimp.com/api/1.3/lists.func.php
     184 */
     185function recuperer_listes($apiKey,$filters='',$start='',$limit='100'){
     186       
     187        # API mailchimp
     188        include_spip('inc/1.3/MCAPI.class');
     189
     190        //on verifie que les parametres du plugin mailchimp sont initialisées
     191        if ($apiKey){
     192                spip_log(__LINE__,'squirrel_chimp');
     193                spip_log($apiKey);
     194
     195                // initialisation d'un objet mailchimp
     196                $api = new MCAPI($apiKey);
     197               
     198                //récuperation des listes
     199               
     200                $retval = $api->lists($filters,$start,$limit);
     201               
     202                $return=array();
     203
     204                if ($api->errorCode){
     205                        $return['error'] .= "Unable to load lists()!";
     206                        $return['error'] .= "\n\tCode=".$api->errorCode;
     207                        $return['error'] .=  "\n\tMsg=".$api->errorMessage."\n";
     208                } else {
     209                        $return['data'] = $retval['data'];
     210                        }
     211                }
     212                 
     213               
     214        return $return;         
     215}
     216
    139217
    140218/*Inscription de la liste
     
    149227       
    150228        if ($api->errorCode){
    151                 spip_log(__LINE__,'squirrel_chimp');
     229                spip_log('inscription_liste','squirrel_chimp_lists');
    152230                $messageErreur = _T('scl:api_errorcode')."<br/><b>".$api->errorCode."</b><br/>".$api->errorMessage;
    153231                if (autoriser('defaut')){
    154                         spip_log(__LINE__,'squirrel_chimp');
     232
    155233                        $flux['data'] = array('message_erreur' => "Plugin Squirrels Love Chimps $messageErreur");
    156                         spip_log("Admin $messageErreur",'squirrel_chimp');
     234                        spip_log("Admin $messageErreur",'squirrel_chimp_lists');
    157235                        return $flux;
    158236                } // fin message pour admin
    159237                else {
    160                         spip_log(__LINE__,'squirrel_chimp');
     238                        spip_log(__LINE__,'squirrel_chimp_lists');
    161239                        // que le spiplog si on est juste un user
    162                         spip_log("$messageErreur",'squirrel_chimp');
     240                        spip_log("$messageErreur",'squirrel_chimp_lists');
    163241                        return $flux;
    164242                } // autoriser
     
    188266
    189267        if ($api->errorCode){
    190                 spip_log(__LINE__,'squirrel_chimp');
     268
    191269                $messageErreur = _T('scl:api_errorcode')."<br/><b>".$api->errorCode."</b><br/>".$api->errorMessage;
    192270                if (autoriser('defaut')){
    193                         spip_log(__LINE__,'squirrel_chimp');
     271
    194272                        $flux['data'] = array('message_erreur' => "Plugin mes_abonnes : $message_ok <br/> Plugin Mailchimp: $messageErreur");
    195                         spip_log("Admin $messageErreur",'squirrel_chimp');
     273                        spip_log("Admin $messageErreur",'squirrel_chimp_lists');
    196274                        return $flux;
    197275                } // fin message pour admin
    198276                else {
    199                         spip_log(__LINE__,'squirrel_chimp');
     277
    200278                        // que le spiplog si on est juste un user
    201                         spip_log(" $messageErreur",'squirrel_chimp');
     279                        spip_log(" $messageErreur",'squirrel_chimp_lists');
    202280                        return $flux;
    203281                } // autoriser
    204282        } else {
    205                 spip_log(__LINE__,'squirrel_chimp');
    206283                $message_ok .="<br>"._T('mailchimp:demande_desincription_ok', array('email' => "$email"));
    207284                $flux['data']['message_ok']=$message_ok ;
  • _plugins_/squirrels_love_chimps_lists/branches/1/squirrel_chimp_lists_pipelines.php

    r59312 r59801  
    1010        $valeurs=array(
    1111                        'config'=>array(
    12                                 0=>'mailinglists',
    13                                 1=>'ml_act_ajout',
    14                                 2=>'ml_opt_in',
    15                                 3=>'ml_act_enleve',
    16                                 4=>'ml_act_actualise',
    17                                 5=>'mapping',
    18                                
    19                                 ),
     12                        0=>'mailinglists',
     13                        1=>'tables',
     14                        2=>'ml_act_ajout',
     15                        3=>'ml_opt_in',
     16                        4=>'ml_act_enleve',
     17                        6=>'mapping',           
     18                        7=>'ml_act_actualise',
     19                        8=>'champs',
     20                        9=>'sync_auteurs'),
    2021                        'fichier_langue'=>'scl'
    2122                        );
     
    2425       
    2526
    26         $flux['data']['squirrel_chimp_lists']['config'][6]='sync_auteurs';
    2727       
    2828        return $flux;
  • _plugins_/squirrels_love_chimps_lists/trunk/formulaires/squirrel_chimp_lists_config.html

    r59768 r59801  
    107107                                <span class='erreur'>(#ENV**{erreurs}|table_valeur{tables})</span>
    108108                                ]
    109                                 <input type="text" class="texte" name="tables" id="tables" value='#ENV{tables,spip_auteurs}'/>
     109                                <input type="text" class="texte" style="size:98%" name="tables" id="tables" value='#ENV{tables,spip_auteurs}'/>
    110110                        </div>
    111111                </li>
  • _plugins_/squirrels_love_chimps_lists/trunk/formulaires/squirrel_chimp_lists_config_traiter.php

    r59768 r59801  
    1717                // Composition du batch
    1818               
    19                 $batch=donnees_sync('','spip_auteurs','statut!="5poubelle"');
    20        
     19                $batch=donnees_sync('','','','spip_auteurs.statut!="5poubelle"');
     20               
    2121                // initialisation d'un objet mailchimp
    2222                $apiKey=lire_config('squirrel_chimp/apiKey');   
  • _plugins_/squirrels_love_chimps_lists/trunk/inc/editer_auteur_traiter_listes.php

    r59312 r59801  
    2626                //on verifie que les parametres du plugin mailchimp sont initialisées
    2727                if ($apiKey){
    28                         spip_log(__LINE__,'squirrel_chimp');
    29                         spip_log($apiKey,'squirrel_chimp');
     28
     29                        spip_log('actualisation_auteur','squirrel_chimp_lists');
    3030
    3131                        // initialisation d'un objet mailchimp
     
    4242
    4343                        // compilation des informations à envoyer à MailChimp
    44                         $donnees_auteur=donnees_sync('','spip_auteurs','id_auteur='.$id_auteur);
     44                        $donnees_auteur=donnees_sync('','',$id_auteur);
     45                       
     46                        spip_log($donnees_auteur,'squirrel_chimp_lists');       
    4547                        $donnees_auteur=$donnees_auteur[1];
    4648                        $email=$donnees_auteur['EMAIL'];
     
    4951                        // Actualisation de la liste avec un nouvel auteur ou si activé actualisation des données si modification du profil
    5052                        if (($new AND $ajouter) OR (!$new AND $actualiser AND $statut!='5poubelle')){
    51                                 spip_log('ajouter ou actualiser','squirrel_chimp');
     53                                spip_log('ajouter ou actualiser','squirrel_chimp_lists');
    5254                               
    5355                                // By default this sends a confirmation email - you will not see new members
  • _plugins_/squirrels_love_chimps_lists/trunk/lang/scl_fr.php

    r59768 r59801  
    1717        //C
    1818        'champs_extras' => 'Déclarez les champs à utiliser',
    19         'champs_extras_explication' => 'indiquez pour chaque table le(s) champs extras de cette table, séparée(s) par virgule',
     19        'champs_extras_explication' => 'indiquez pour chaque table les champs à utliser',
    2020        'champs_utilises' => 'Champs utilisés',
    2121        'declarer_champs_extras' => 'Déclarer des champs SPIP supplémentaires',
     
    8585        // T
    8686        'tables_extras' => 'Declarer les tables à utiliser',
    87         'tables_extras_explication' => 'La table spip_auteurs est déjà déclaré- indiquez le(s) autres table(s), séparée(s) par virgule',
     87        'tables_extras_explication' => 'Indiquez le(s)table(s) séparée(s) par virgule, chaque table declarée doit obligatoirement contenir un champ "id_auteur"',
    8888        'tout' => 'Toutes les listes',
    8989
  • _plugins_/squirrels_love_chimps_lists/trunk/plugin.xml

    r59312 r59801  
    33        <auteur>[Spade->http://blog.spade.be/] et [Rainer M&#252;ller->http://www.mychacra.net]</auteur>
    44        <licence>GNU/GLP</licence>
    5         <version>1.3.0</version>
     5        <version>1.4.0</version>
    66        <licence>MIT</licence>
    77        <etat>test</etat>
  • _plugins_/squirrels_love_chimps_lists/trunk/squirrel_chimp_lists_fonctions.php

    r59768 r59801  
    1515        }
    1616
    17 function tables_dispos($tables=''){
     17function tables_dispos(){
    1818        include_spip('inc/config');
    1919       
    20         if($tables AND !is_array($tables))$tables=explode(',',$tables);
    2120        // On cherche les tables à prendre en compte
    22         $tables_extras=explode(',',lire_config('squirrel_chimp/tables'));
    23                        
    24         if($tables)$tables=array_merge($tables,$tables_extras);
    25         else $tables=$tables_extras;
    26        
    27        
     21
     22        $tables=explode(',',lire_config('squirrel_chimp/tables'));
    2823        if(!$tables)$tables=array('spip_auteurs');     
    29 
     24               
    3025        return $tables;
    3126        }       
    3227
    3328// filtre pour obtenir les champs spip à disposition
    34 function champs_spip($tables=''){
     29function champs_spip(){
    3530        include_spip('inc/config');     
    36         $tables=tables_dispos($tables);
     31        $tables=tables_dispos();
    3732        $champs_extras=lire_config('squirrel_chimp/champs');
    3833        $trouver_table = charger_fonction('trouver_table','base');
     
    6156
    6257// filtre pour obtenir un array de corresponance entre champs spip ,et champs MailChimp
    63 function champs_listes($apiKey,$listId,$tables='',$multi=''){
     58function champs_listes($apiKey,$listId,$multi=''){
    6459       
    6560        $mapping= array();
     
    8176                        }
    8277       
    83         $mapping['spip'] = champs_spip($tables);
     78        $mapping['spip'] = champs_spip();
    8479       
    8580        return $mapping;
     
    109104
    110105// Prépare les données pour la synchronisation
    111 function donnees_sync($id_liste='',$from='spip_auteurs',$where='',$groupby='',$orderby='',$limit='',$having='',$serveur='',$option=true){
    112        
    113         // Les champs spip à traiter
    114         $champs_sync=champs_pour_concordance($id_liste);
     106function donnees_sync($id_liste_spip='',$table='',$identifiant='',$where_add=''){
     107       
     108        //Les données de la configuration
     109        include_spip('inc/config');
     110
     111        $tables=tables_dispos();
     112        $champs_extras=lire_config('squirrel_chimp/champs');
     113
     114
     115        //Préparation de la requette
     116        $identifiant_defaut='id_auteur';
     117       
     118        $from=implode(',',$tables);     
     119
     120        $where_principal=$identifiant_principal.'='.$identifiant;
     121        $where_secondaire=array();     
     122        $champs=array();
     123        $i=0;
     124        foreach($tables AS $table){
     125                $i++;
     126                if($i==1)$table_principale=$table;
     127                else $where_secondaire[$i]=$table_principale.'.'.$identifiant_defaut.'='.$table.'.'.$identifiant_defaut;
     128                foreach($champs_extras[$table] as $champ){
     129                        $champs[$champ]=$table.'.'.$champ;
     130                        }
     131                }
     132               
     133        if(!$champs)$champs='*';               
     134        else $champs['email']='spip_auteurs.email';     
     135        $identifiant_joints=implode(' AND ',$where_secondaire);
     136        if($identifiant)$identifiant_principal=' AND '.$table_principale.'.'.$identifiant_defaut.'='.$identifiant;
     137        if($where_add)$identifiant_additionnel=' AND '.$where_add;
     138       
     139        $where=$identifiant_joints.$identifiant_principal.$identifiant_additionnel;
     140       
     141        spip_log($where,'squirrel_chimp_lists');       
     142       
     143        $champs=implode(',',$champs);
     144
     145
     146        // La concordance entre les champs
     147        $champs_sync=champs_pour_concordance($id_liste_spip);
     148
    115149       
    116150        // les utilisateurs spip
    117         $sql=sql_select(array_keys($champs_sync),$from,$where,$groupby,$orderby,$limit,$having,$serveur,$option);
     151        $sql=sql_select($champs,$from,$where,$groupby,$orderby,$limit,$having,$serveur,$option);
    118152       
    119153        // Préparation de l'array a envoyer à mailchimp
     
    193227       
    194228        if ($api->errorCode){
    195                 spip_log(__LINE__,'squirrel_chimp');
     229                spip_log('inscription_liste','squirrel_chimp_lists');
    196230                $messageErreur = _T('scl:api_errorcode')."<br/><b>".$api->errorCode."</b><br/>".$api->errorMessage;
    197231                if (autoriser('defaut')){
    198                         spip_log(__LINE__,'squirrel_chimp');
     232
    199233                        $flux['data'] = array('message_erreur' => "Plugin Squirrels Love Chimps $messageErreur");
    200                         spip_log("Admin $messageErreur",'squirrel_chimp');
     234                        spip_log("Admin $messageErreur",'squirrel_chimp_lists');
    201235                        return $flux;
    202236                } // fin message pour admin
    203237                else {
    204                         spip_log(__LINE__,'squirrel_chimp');
     238                        spip_log(__LINE__,'squirrel_chimp_lists');
    205239                        // que le spiplog si on est juste un user
    206                         spip_log("$messageErreur",'squirrel_chimp');
     240                        spip_log("$messageErreur",'squirrel_chimp_lists');
    207241                        return $flux;
    208242                } // autoriser
     
    232266
    233267        if ($api->errorCode){
    234                 spip_log(__LINE__,'squirrel_chimp');
     268
    235269                $messageErreur = _T('scl:api_errorcode')."<br/><b>".$api->errorCode."</b><br/>".$api->errorMessage;
    236270                if (autoriser('defaut')){
    237                         spip_log(__LINE__,'squirrel_chimp');
     271
    238272                        $flux['data'] = array('message_erreur' => "Plugin mes_abonnes : $message_ok <br/> Plugin Mailchimp: $messageErreur");
    239                         spip_log("Admin $messageErreur",'squirrel_chimp');
     273                        spip_log("Admin $messageErreur",'squirrel_chimp_lists');
    240274                        return $flux;
    241275                } // fin message pour admin
    242276                else {
    243                         spip_log(__LINE__,'squirrel_chimp');
     277
    244278                        // que le spiplog si on est juste un user
    245                         spip_log(" $messageErreur",'squirrel_chimp');
     279                        spip_log(" $messageErreur",'squirrel_chimp_lists');
    246280                        return $flux;
    247281                } // autoriser
    248282        } else {
    249                 spip_log(__LINE__,'squirrel_chimp');
    250283                $message_ok .="<br>"._T('mailchimp:demande_desincription_ok', array('email' => "$email"));
    251284                $flux['data']['message_ok']=$message_ok ;
  • _plugins_/squirrels_love_chimps_lists/trunk/squirrel_chimp_lists_pipelines.php

    r59768 r59801  
    1717                        6=>'mapping',           
    1818                        7=>'ml_act_actualise',
    19                         8=>'champs'),
     19                        8=>'champs',
     20                        9=>'sync_auteurs'),
    2021                        'fichier_langue'=>'scl'
    2122                        );
Note: See TracChangeset for help on using the changeset viewer.