Changeset 75818 in spip-zone


Ignore:
Timestamp:
Sep 13, 2013, 3:44:24 PM (6 years ago)
Author:
cy_altern@…
Message:

preparation de l'integration des auteurs: filtrer pour ne pas traiter les admins complets

Location:
_plugins_/csv2spip/dev_spip3
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/csv2spip/dev_spip3/formulaires/csv2spip_importation.html

    r74174 r75818  
    2626                [(#SAISIE{oui_non,maj_utilisateur}
    2727                {label=<:csv2spip:mettre_a_jour_utilisateurs_existants:>})]
     28
     29                 [(#SAISIE{radio,type_maj}
     30                    {label=<:csv2spip:type_maj_label:>}
     31                    {datas=#ARRAY{
     32                                                ajouter,<:csv2spip:type_maj_ajouter:>,
     33                                                remplacer,<:csv2spip:type_maj_remplacer:>
     34                                                }
     35                                        })]
    2836            </fieldset>
    2937            </li>
  • _plugins_/csv2spip/dev_spip3/formulaires/csv2spip_importation.php

    r75805 r75818  
    77        "fichier_csv"                => "",
    88        "maj_utilisateur"            => "",
     9        "type_maj"                   => "ajouter",
    910        "abs_redac"                  => "",
    1011        "abs_admin"                  => "",
     
    5152    $traitement_article_efface = _request('traitement_article_efface');
    5253    $nom_rubrique_archive = _request('nom_rubrique_archive');
     54    $type_maj=_request('type_maj');
    5355
    5456    // recuperation de l'id de la rubrique parent des rubriques admins
     
    9193    $fichiercsv= fopen($destination, "r");
    9294    $i=0;
     95   
     96        // correspondance statut spip / statut csv
     97        $Tcorrespondances = array('administrateur'=>'0minirezo', 'redacteur'=>'1comite', 'visiteur'=>'6forum');
     98           
     99        // tableau de tous les admins
     100        $result = sql_select(array('login', 'email'), 'spip_auteurs', array('statut = "0minirezo"'));
     101        while ($r = sql_fetch($result)) {
     102                $Tadmin_tous[] = $r['login'];
     103                if ($r['email'] AND $r['email'] != '')
     104                        $Tadmin_tous[] = $r['email'];
     105        }
     106        // tableau des admins restreints
     107        $from = array(
     108                "spip_auteurs AS auteurs",
     109                "spip_auteurs_liens AS liens");
     110        $where = array(
     111                "auteurs.statut = '0minirezo'",
     112                "liens.objet = 'rubrique'",
     113                "liens.id_auteur = auteurs.id_auteur",
     114                '(login!="" OR email!="")');
     115        $result = sql_select(array('login', 'email'),$from, $where);
     116        while ($r = sql_fetch($result)) {
     117                $Tadmin_restreint[] = $r['login'];
     118                if ($r['email'] AND $r['email'] != '')
     119                        $Tadmin_restreint[] = $r['email'];
     120        }
     121        // tableau admins complets
     122        $Tadmin_complet = array_diff($Tadmin_tous, $Tadmin_restreint);
     123
     124        // traiter fichier CSV
    93125    while (($data= fgetcsv($fichiercsv,"~")) !== FALSE){
    94126       // petit hack car fgetcsv ne reconnait pas le ~ comme séparateur !!!
     
    112144                        }
    113145           } else {
    114                         // correspondance statut spip / statut csv
    115                         $Tcorrespondances = array('administrateur'=>'0minirezo', 'redacteur'=>'1comite', 'visiteur'=>'5forum');
    116146                        for ($j = 0; $j < $nombre_elements; $j++) {
    117                                 if ($data[$num_login] OR $data[$num_email]) {   //creation du tableau contenant l'ensemble des données à importer
     147                                // on ne veut pas les auteurs du CSV ayant login ou mail égal à celui d'un admin complet
     148                                if (($data[$num_login] AND !in_array($data[$num_login], $Tadmin_complet))
     149                                        OR ($data[$num_email] AND !in_array($data[$num_email], $Tadmin_complet))
     150                                ) {     // creation du tableau contenant l'ensemble des données à importer
    118151                                   if ($Tcorrespondances[$data[$num_statut]] == '6forum')
    119152                                                $tableau_csv_visiteurs[$data[$num_login]?$data[$num_login]:$data[$num_email]][$en_tete[$j]] = $data[$j];
     
    136169    fclose($fichiercsv);
    137170    unlink($destination);
    138    
     171
     172    // tableau CSV total
     173    $tableau_csv_total = array_merge($tableau_csv_visiteurs, $tableau_csv_redacs, $tableau_csv_admins);
     174
    139175
    140176    //récupération des auteurs de la bdd en 3 array
     
    165201    }
    166202
     203    // tableau BDD total
     204    $tableau_bdd_total = array_merge($visiteur_bdd, $redacteur_bdd, $admin_restreint_bdd);
     205
    167206        // traitement rubriques admin
    168207    // construction du tableau de correspondance nom_rubrique avec leur id
     
    174213        }
    175214
     215        // traitement zones
     216    // construction du tableau de correspondance nom_zone avec leur id
     217    $tableau_bdd_zones_admins = array();
     218    $result = sql_select(array('id_zone', 'titre'), 'spip_zones');
     219    while ($row = sql_fetch($result)){
     220                $tableau_bdd_zones_admins[$row['id_zone']] = strtolower($row['titre']);
     221        }
    176222
    177223        // créer les rubriques admins du csv n'existant pas et les indexer
     
    185231        }
    186232
     233        // PARTIE I : maj ou ajout des auteurs
     234        // cas 1 : ajout
     235        if (!$maj_utilisateur) {
     236                $tableau_nouveaux_auteurs = csv2spip_diff_nouveaux($tableau_csv_total, $tableau_bdd_total);
     237        }
     238
     239
     240       
    187241
    188242    // PARTIE II : Suppresions des absents (changer le statut des auteurs en 5.poubelle)  avec 3 choix pour la gestion des articles associés
     
    239293 * générer l"array des id auteurs absents à supprimer
    240294 * @param $Tbdd: l'array indexé login/mail extrait de la base
    241  * @param $Tfich: l'array indexé login/mail extrait du csv
     295 * @param $Tcsv: l'array indexé login/mail extrait du csv
    242296 * @return l'array des id_auteurs
    243297 */
    244 function csv2spip_diff_absents($Tbdd, $Tfich){
     298function csv2spip_diff_absents($Tbdd, $Tcsv){
    245299        $Tid = array();
    246         $T = array_diff_key($Tbdd, $Tfich);
     300        $T = array_diff_key($Tbdd, $Tcsv);
    247301        foreach ($T as $val)
    248302                $Tid[] = $val['id_auteur'];
     
    250304        return $Tid;
    251305}
     306
     307/*
     308 * générer l"array des logins ou mails n'existant pas encore dans la base
     309 * @param $Tbdd: l'array indexé login/mail extrait de la base
     310 * @param $Tcsv: l'array indexé login/mail extrait du csv
     311 * @return l'array des logins ou mails
     312 */
     313function csv2spip_diff_nouveaux($Tcsv, $Tbdd){
     314        $Tid = array();
     315        $T = array_diff_key($Tcsv, $Tbdd);
     316        return $T;
     317}
     318
     319
     320/*
     321 * ajout d'un utilisateur
     322 * @param array associatif : nom_champ : valeur
     323 */
     324
     325function csv2spip_ajout_utilisateur($tableau){
     326       
     327}
     328         
     329
    252330
    253331/*
  • _plugins_/csv2spip/dev_spip3/lang/csv2spip_fr.php

    r74116 r75818  
    3434    'mise_a_jour_utilisateur' => 'Mise à jour des utilisateurs existant déja dans SPIP :',
    3535    'maj_infoperso' => 'Mise à jour des infos personnelles (mail, pseudo, pass):',
     36    'type_maj_remplacer'=>'Remplacer',
     37    'type_maj_ajouter'=>'Ajouter',
     38    'type_maj_label'=>'Gestion des rubriques administrées et des zones d\'accès des utilisateurs',
    3639
    3740    'nom_champs'=>'Sélectionnez les champs que vous souhaitez exporter',
Note: See TracChangeset for help on using the changeset viewer.