Changeset 59768 in spip-zone


Ignore:
Timestamp:
Mar 26, 2012, 7:20:58 PM (7 years ago)
Author:
abelass@…
Message:

declarer des tables et champs : la configuration

Location:
_plugins_/squirrels_love_chimps_lists/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/squirrels_love_chimps_lists/trunk/formulaires/squirrel_chimp_lists_config.html

    r58831 r59768  
     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" 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/trunk/formulaires/squirrel_chimp_lists_config_traiter.php

    r59264 r59768  
    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');
     
    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/trunk/lang/scl_fr.php

    r57501 r59768  
    1616       
    1717        //C
     18        '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',
     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' => 'La table spip_auteurs est déjà déclaré- indiquez le(s) autres table(s), séparée(s) par virgule',
    8188        'tout' => 'Toutes les listes',
    8289
  • _plugins_/squirrels_love_chimps_lists/trunk/squirrel_chimp_lists_fonctions.php

    r59312 r59768  
    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($tables=''){
     18        include_spip('inc/config');
     19       
     20        if($tables AND !is_array($tables))$tables=explode(',',$tables);
     21        // 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       
     28        if(!$tables)$tables=array('spip_auteurs');     
     29
     30        return $tables;
     31        }       
     32
    5133// 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        
     34function champs_spip($tables=''){
     35        include_spip('inc/config');     
     36        $tables=tables_dispos($tables);
     37        $champs_extras=lire_config('squirrel_chimp/champs');
    5838        $trouver_table = charger_fonction('trouver_table','base');
    5939        $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);
     40
     41        foreach($tables AS $key=>$table){
     42                if($table){
     43                        $c=$trouver_table($table);
     44                        if(is_array($c['field']))$champs['tout'][$table]=array_keys($c['field']);
     45                        if($extras=$champs_extras[$table]){
     46                                $champs[$table]=$extras;
     47                                }
     48                        else{   
     49                                $table=$table?$table:0;
     50                                if(is_array($c['field']) AND count($c['field'])>0){
     51                                        $c=array_keys($c['field']);
     52                                        $champs[$table]=$c;     
     53                                        }       
     54                                }
     55                        $c='';
     56                        }
     57                }
     58        //echo serialize($champs);
     59        return $champs;
    7260        }
    7361
    7462// filtre pour obtenir un array de corresponance entre champs spip ,et champs MailChimp
    75 function champs_listes($apiKey,$listId,$tables='spip_auteurs',$multi=''){
     63function champs_listes($apiKey,$listId,$tables='',$multi=''){
    7664       
    7765        $mapping= array();
     
    7967        // initialisation d'un objet mailchimp
    8068        $api = new MCAPI($apiKey);
    81  
     69
    8270        if(is_array($listId)){
    8371                foreach($listId AS $id){
     
    9078                else {
    9179                        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);
     80                        else $mapping['mailchimp']  = $api->listMergeVars($listId);     
     81                        }
     82       
     83        $mapping['spip'] = champs_spip($tables);
    9684       
    9785        return $mapping;
    9886       
    9987}
     88
     89// cherche les champs d'une table
     90/*
     91function champs_table($tables=''){
     92
     93
     94        $tables=tables_dispos($tables);
     95
     96        $champs_dispos=lire_config('squirrel_chimp/champs');
     97        echo serialize($champs);
     98        $champs=array();       
     99        if(is_array($tables)){
     100                        foreach($tables AS $table){
     101                        if($table)$champs[$table]=$champs_dispos[$table];
     102                        }
     103                }
     104        echo serialize($champs);
     105        return $champs;
     106       
     107        }*/
    100108
    101109
     
    137145}
    138146
     147/* filtre pour l'intégration Api Mailchimp
     148 * lists(string apikey, array filters, int start, int limit)
     149 * http://apidocs.mailchimp.com/api/1.3/lists.func.php
     150 */
     151function recuperer_listes($apiKey,$filters='',$start='',$limit='100'){
     152       
     153        # API mailchimp
     154        include_spip('inc/1.3/MCAPI.class');
     155
     156        //on verifie que les parametres du plugin mailchimp sont initialisées
     157        if ($apiKey){
     158                spip_log(__LINE__,'squirrel_chimp');
     159                spip_log($apiKey);
     160
     161                // initialisation d'un objet mailchimp
     162                $api = new MCAPI($apiKey);
     163               
     164                //récuperation des listes
     165               
     166                $retval = $api->lists($filters,$start,$limit);
     167               
     168                $return=array();
     169
     170                if ($api->errorCode){
     171                        $return['error'] .= "Unable to load lists()!";
     172                        $return['error'] .= "\n\tCode=".$api->errorCode;
     173                        $return['error'] .=  "\n\tMsg=".$api->errorMessage."\n";
     174                } else {
     175                        $return['data'] = $retval['data'];
     176                        }
     177                }
     178                 
     179               
     180        return $return;         
     181}
     182
    139183
    140184/*Inscription de la liste
  • _plugins_/squirrels_love_chimps_lists/trunk/squirrel_chimp_lists_pipelines.php

    r59312 r59768  
    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'),
    2020                        'fichier_langue'=>'scl'
    2121                        );
     
    2424       
    2525
    26         $flux['data']['squirrel_chimp_lists']['config'][6]='sync_auteurs';
    2726       
    2827        return $flux;
Note: See TracChangeset for help on using the changeset viewer.