Changeset 75986 in spip-zone


Ignore:
Timestamp:
Sep 20, 2013, 3:26:29 PM (8 years ago)
Author:
cy_altern@…
Message:

encore une journee de co-dev pour generer les comptes des nouveaux auteurs, gerer les auteurs de statut poubelle et gerer la suppression complete des auteurs sans articles

Location:
_plugins_/csv2spip/dev_spip3
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/csv2spip/dev_spip3/formulaires/csv2spip_exportation.php

    r75921 r75986  
    145145    $champ_supprimer = array(0,8,15,16,17,18,19);
    146146    $desc = sql_showtable('spip_auteurs',true);
    147     foreach ($desc[field] as $cle => $valeur) $nom_champs[$cle]="-> $cle";
     147    foreach ($desc[field] as $cle => $valeur)
     148                $nom_champs[$cle]="-> $cle";
    148149    foreach ($champ_supprimer as $cle){
    149150        unset($nom_champs[$cle]);
  • _plugins_/csv2spip/dev_spip3/formulaires/csv2spip_importation.html

    r75818 r75986  
    4848                [(#SAISIE{oui_non,abs_visiteur}
    4949                {label=<:csv2spip:abs_visiteur:>})]
     50
     51                [(#SAISIE{radio,abs_poubelle}
     52                {label=<:csv2spip:abs_poubelle:>}
     53                                {datas=#ARRAY{
     54                                        supprimer,<:csv2spip:supprimer_auteur:>,
     55                                        passage_poubelle,<:csv2spip:passage_poubelle:>
     56                                        }
     57                                })]                             
    5058
    5159                    [(#SAISIE{radio,traitement_article_efface}
  • _plugins_/csv2spip/dev_spip3/formulaires/csv2spip_importation.php

    r75818 r75986  
    1010        "abs_redac"                  => "",
    1111        "abs_admin"                  => "",
     12        "abs_poubelle"               => "supprimer",
    1213        "abs_visiteur"               => "",
    1314        "traitement_article_efface"  => "rien_faire",
     
    4950    $abs_admins = _request('abs_admin');
    5051    $abs_visiteurs = _request('abs_visiteur');
     52    $abs_poubelle = _request('abs_poubelle');
    5153    $suppression_article_efface = _request('suppression_article_efface');
    5254    $traitement_article_efface = _request('traitement_article_efface');
     
    5557
    5658    // recuperation de l'id de la rubrique parent des rubriques admins
    57     $id_rubrique_parent_admin = _request('id_rubrique_parent');
     59    $id_rubrique_parent_admin = _request('rubrique_parent');
    5860    $id_rubrique_parent_admin = explode('|',$id_rubrique_parent_admin[0]);
    5961    $id_rubrique_parent_admin = $id_rubrique_parent_admin[1];
    6062
    6163    //récupération de l'id de la rubrique parent archive
    62     $id_rubrique_parent_archive = _request('id_rubrique_parent_archive');
    63     $id_rubrique_parent_archive=explode('|',$id_rubrique_parent[0]);
    64     $id_rubrique_parent_archive=$id_rubrique_parent_archive[1];
     64    $id_rubrique_parent_archive = _request('rubrique_parent_archive');
     65    $id_rubrique_parent_archive = explode('|',$id_rubrique_parent_archive[0]);
     66    $id_rubrique_parent_archive = $id_rubrique_parent_archive[1];
    6567   
    6668    $retour = array();
    6769
    6870        include_spip('action/editer_rubrique');
    69         if ($abs_redacs OR $abs_admins OR $abs_visiteurs){
     71    if (test_plugin_actif("accesrestreint"))
     72                include_spip('action/editer_zone');
     73        include_spip('action/editer_auteur');
     74       
     75        if ($abs_redacs OR $abs_admins OR $abs_visiteurs OR $abs_poubelle == 'supprimer'){
    7076                include_spip('action/editer_objet');
    7177                include_spip('action/editer_liens');
     
    95101   
    96102        // correspondance statut spip / statut csv
    97         $Tcorrespondances = array('administrateur'=>'0minirezo', 'redacteur'=>'1comite', 'visiteur'=>'6forum');
     103        $Tcorrespondances = array('administrateur'=>'0minirezo', 'redacteur'=>'1comite', 'visiteur'=>'6forum', 'poubelle' => '5poubelle');
    98104           
    99105        // tableau de tous les admins
     
    105111        }
    106112        // tableau des admins restreints
     113        $Tadmin_restreint=array();
    107114        $from = array(
    108115                "spip_auteurs AS auteurs",
     
    174181
    175182
    176     //récupération des auteurs de la bdd en 3 array
    177     // $visiteur_bdd
     183    //récupération des auteurs de la bdd en 4 array
     184    // $poubelle_bdd = les auteurs à la poubelle
     185    // $visiteur_bdd = les visiteurs
    178186    // $redacteur_bdd
    179187    // $admin_restreint_bdd
    180188    // la cle de chaque tableau est le login et s'il n'existe pas le mail
     189    $poubelle_bdd=$visiteur_bdd=$redacteur_bdd=$admin_restreint_bdd=array();
     190    $poubelle_bdd_req        = sql_allfetsel('*', 'spip_auteurs',array('statut="5poubelle"','(login!="" OR email!="")'));   
     191    foreach ($poubelle_bdd_req as $key) {
     192        $poubelle_bdd[$key['login']?$key['login']:$key['email']]=$key;
     193    }   
    181194    $visiteur_bdd_req        = sql_allfetsel('*', 'spip_auteurs',array('statut="6forum"','(login!="" OR email!="")'));   
    182195    foreach ($visiteur_bdd_req as $key) {
     
    202215
    203216    // tableau BDD total
    204     $tableau_bdd_total = array_merge($visiteur_bdd, $redacteur_bdd, $admin_restreint_bdd);
     217    $tableau_bdd_total = array_merge($poubelle_bdd, $visiteur_bdd, $redacteur_bdd, $admin_restreint_bdd);
    205218
    206219        // traitement rubriques admin
     
    216229    // construction du tableau de correspondance nom_zone avec leur id
    217230    $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']);
     231        if (test_plugin_actif("accesrestreint")){
     232                $result = sql_select(array('id_zone', 'titre'), 'spip_zones');
     233                while ($row = sql_fetch($result)){
     234                        $tableau_bdd_zones_admins[$row['id_zone']] = strtolower($row['titre']);
     235                }
    221236        }
    222237
     
    227242                        $id_rub = rubrique_inserer($id_rubrique_parent_admin);
    228243                        rubrique_modifier($id_rub, $set);
    229                         $tableau_bdd_rubriques_admins[$id_rub] = $rub;
    230                 }
    231         }
    232 
     244                        $tableau_bdd_rubriques_admins[$id_rub] = strtolower($rub);
     245                }
     246        }
     247
     248        //Récuperer les champs de la table auteurs
     249        $Tnom_champs_bdd=array();
     250    $desc = sql_showtable('spip_auteurs',true);
     251    foreach ($desc['field'] as $cle => $valeur)
     252                $Tnom_champs_bdd[] = $cle;
     253
     254       
    233255        // PARTIE I : maj ou ajout des auteurs
    234256        // cas 1 : ajout
    235257        if (!$maj_utilisateur) {
    236258                $tableau_nouveaux_auteurs = csv2spip_diff_nouveaux($tableau_csv_total, $tableau_bdd_total);
     259                foreach($tableau_nouveaux_auteurs as $login => $Tauteur)
     260                        csv2spip_ajout_utilisateur($login,$Tauteur,$Tnom_champs_bdd,$Tcorrespondances, $tableau_bdd_rubriques_admins, $tableau_bdd_zones_admins);
    237261        }
    238262
     
    240264       
    241265
    242     // PARTIE II : Suppresions des absents (changer le statut des auteurs en 5.poubelle)  avec 3 choix pour la gestion des articles associés
     266    // PARTIE II : Suppressions des absents (changer le statut des auteurs en 5.poubelle)  avec 3 choix pour la gestion des articles associés
    243267    // 1. ras
    244268    // 2. supprimer les articles
     
    255279        }       
    256280   
     281    if ($abs_poubelle == 'supprimer') {         
     282                $Tid_poubelle = csv2spip_diff_absents($poubelle_bdd);
     283                csv2spip_supprimer_auteurs($Tid_poubelle, '5poubelle', $traitement_article_efface,$id_rubrique_parent_archive);
     284        }
    257285    if ($abs_visiteurs) {
    258                 $Tid_visiteurs = csv2spip_diff_absents($visiteur_bdd_par, $tableau_csv_visiteurs);
    259                 csv2spip_supprimer_auteurs($Tid_visiteurs, '6forum');
     286                $Tid_visiteurs = csv2spip_diff_absents($visiteur_bdd, $tableau_csv_visiteurs);
     287                csv2spip_supprimer_auteurs($Tid_visiteurs, '6forum', $traitement_article_efface,$id_rubrique_parent_archive);
    260288        }
    261289    if ($abs_redacs) {
    262290                $Tid_redacs = csv2spip_diff_absents($redacteur_bdd, $tableau_csv_redacs);
    263                 csv2spip_supprimer_auteurs($Tid_redacs, '1comite',$traitement_article_efface,$id_rubrique_archive);
     291                csv2spip_supprimer_auteurs($Tid_redacs, '1comite',$traitement_article_efface,$id_rubrique_parent_archive);
    264292        }
    265293    if ($abs_admins) {
    266294                $Tid_admins = csv2spip_diff_absents($admin_restreint_bdd, $tableau_csv_admins);
    267                 csv2spip_supprimer_auteurs($Tid_admins, '0minirezo',$traitement_article_efface,$id_rubrique_archive);
     295                csv2spip_supprimer_auteurs($Tid_admins, '0minirezo',$traitement_article_efface,$id_rubrique_parent_archive);
    268296        }
    269297
     
    296324 * @return l'array des id_auteurs
    297325 */
    298 function csv2spip_diff_absents($Tbdd, $Tcsv){
     326function csv2spip_diff_absents($Tbdd, $Tcsv=array()){
    299327        $Tid = array();
    300328        $T = array_diff_key($Tbdd, $Tcsv);
     
    320348/*
    321349 * ajout d'un utilisateur
    322  * @param array associatif : nom_champ : valeur
     350 * @param login de l'auteur
     351 * @param array associatif CSV: Tauteur_csv  nom_champ : valeur
    323352 */
    324 
    325 function csv2spip_ajout_utilisateur($tableau){
    326        
     353function csv2spip_ajout_utilisateur($login,$Tauteur_csv,$Tnom_champs_bdd,$Tcorrespondances, $tableau_bdd_rubriques_admins, $tableau_bdd_zones_admins){
     354echo '<br>login: '.$login;
     355        $set = $Tzones = $Trubadmin = array();
     356        foreach($Tauteur_csv as $champ => $valeur){
     357                if($champ == "ss_groupe"){
     358                        $T = explode('|',$valeur);
     359                        foreach($T as $rub){
     360                                $Trubadmin[] = array_search(strtolower($rub),$tableau_bdd_rubriques_admins);
     361                        }
     362                }
     363                if($champ == "zone"){
     364                        $T = explode('|',$valeur);
     365                        foreach($T as $zone){
     366                                $Tzones[] = array_search(strtolower($zone),$tableau_bdd_zones_admins);
     367                        }
     368
     369                }
     370                if(in_array($champ,$Tnom_champs_bdd)){
     371                        $set[$champ] = ($champ == "statut" AND array_key_exists($valeur,$Tcorrespondances)) ? $Tcorrespondances[$valeur] : $valeur;
     372                }
     373        }
     374        if ($set["login"] == "")
     375                $set["login"]=$login;
     376
     377
     378        //inserer l'auteur
     379        $id_auteur=auteur_inserer();
     380        auteur_modifier($id_auteur,$set);
     381
     382        //liaison des rubriques
     383        if(count($Trubadmin) AND $set["statut"] == "0minirezo")
     384                objet_associer(array("auteur"=>$id_auteur),array("rubrique"=>$Trubadmin));
     385               
     386        //liaison des zones
     387        if(count($Tzones) AND test_plugin_actif("accesrestreint"))
     388                zone_lier($Tzones, 'auteur', $id_auteur, 'add');
     389
    327390}
    328391         
     
    339402 *
    340403 */
    341 function csv2spip_supprimer_auteurs($Tid, $statut,$traitement="",$id_rubrique_archive=1) {
     404function csv2spip_supprimer_auteurs($Tid, $statut,$traitement="supprimer",$id_rubrique_archive=1) {
    342405        // passage à la poubelle
    343406        $objet = 'auteur';
    344407        $set = array('statut'=>'5poubelle');
    345408        foreach ($Tid as $id){
    346                 objet_modifier($objet, $id, $set);
     409                $Tarticles = sql_allfetsel('id_objet', 'spip_auteurs_liens', array('id_auteur='.$id, 'objet="article"'));
     410
     411                // auteur sans article et demande de suppression: suppression complète
     412                if (count($Tarticles) == 0 AND _request('abs_poubelle') == 'supprimer')
     413                        sql_delete('spip_auteurs', "id_auteur=$id");
     414                // passage à la poubelle
     415                else
     416                        objet_modifier($objet, $id, $set);
     417
     418                // traitement des articles de l'auteur
     419                if (count($Tarticles) != 0) {
     420
     421                        // supprimer les articles
     422                        $table_idarticle = array();
     423                        if ($traitement == 'supprimer_articles'){
     424                                objet_dissocier(array('id_auteur'=>$id), array('article'=>$Tarticles));
     425                                foreach ($Tarticles as $idarticle) {
     426                                        $table_idarticle[]=$idarticle['id_objet'];
     427                                }
     428                                $inarticle = join(',',$table_idarticle);
     429                                sql_delete('spip_articles', "id_article IN ($inarticle)");
     430                        }
     431                        // deplacer les articles dans la rubrique d'archivage
     432                        if ($traitement == 'transferer_articles'){
     433                                foreach($Tarticles as $idarticle)
     434                                        objet_modifier('article', $idarticle['id_objet'], array('id_parent'=>$id_rubrique_archive));
     435                        }
     436                }
     437                       
    347438                // suppression des zones de l'auteur
    348439                $Tzones = sql_allfetsel('id_zone', 'spip_zones_liens', array('id_objet='.$id, 'objet="auteur"'));
     
    355446                        objet_dissocier(array('id_auteur'=>$id), array('rubrique'=>$Trubriques));
    356447                }
    357                
    358                 // traitement des articles de l'auteur
    359                 if (in_array($statut, array('0minirezo','1comite'))){
    360                         $Tarticles = sql_allfetsel('id_objet', 'spip_auteurs_liens', array('id_auteur='.$id, 'objet="article"'));
    361                         // supprimer les articles
    362                         $table_idarticle = array();
    363                         if ($traitement == 'supprimer_articles'){
    364                                 objet_dissocier(array('id_auteur'=>$id), array('article'=>$Tarticles));
    365                 foreach ($Tarticles as $idarticle) {
    366                     $table_idarticle[]=$idarticle['id_objet'];
    367                 }
    368                                 $inarticle = join(',',$table_idarticle);
    369                                 sql_delete('spip_articles', "id_article IN ($inarticle)");
    370                         }
    371                         // deplacer les articles dans la rubrique d'archivage
    372                         if ($traitement == 'transferer_articles'){
    373                                 foreach($Tarticles as $idarticle)
    374                                         objet_modifier('article', $idarticle['id_objet'], array('id_parent'=>$id_rubrique_archive));
    375                         }
    376                 }
    377448        }
    378449}
  • _plugins_/csv2spip/dev_spip3/lang/csv2spip_fr.php

    r75818 r75986  
    55    'abs_admin' => 'Administrateurs restreints absents',
    66    'abs_visiteur' => 'Visiteurs absents',
     7    'abs_poubelle' => 'Traitement des auteurs absents sans articles',
    78    'administrateurs' => 'Administrateurs',
    89    'admin_a_zero' => 'Réinitialisation des rubriques administrées :',
     
    4748    'presentation_formulaire' => 'CSV2SPIP : gestion des utilisateurs de SPIP à partir de fichiers CSV',
    4849    'point_virgule'=>'Point-virgule ";"',
     50    'passage_poubelle' => 'passer à la poubelle',
    4951
    5052    'redacteurs' => 'Rédacteurs',
     
    5759    'suppression_article_efface' => 'Traitement des articles des auteurs effacés :',
    5860    'supprimer_articles' =>'Supprimer les articles des auteurs effacés',
     61    'supprimer_auteur' => 'suppression complète',
    5962   
    6063
     
    6568    'visiteurs' => 'Visiteurs',
    6669    'virgule'=>'virgule ","',
     70    'vidage_poubelle' => 'Vider la poubelle',
    6771);
    6872?>
Note: See TracChangeset for help on using the changeset viewer.