Changeset 96446 in spip-zone
- Timestamp:
- Apr 4, 2016, 11:09:07 AM (5 years ago)
- Location:
- _plugins_/csv2auteurs/trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/csv2auteurs/trunk/formulaires/csv2auteurs_exportation.php
r82832 r96446 2 2 if (!defined('_ECRIRE_INC_VERSION')) return; 3 3 4 function formulaires_csv2auteurs_exportation_charger_dist(){ 5 $nom_champs=csv2auteurs_exportation(); 6 $valeurs = array( 7 "choix_statut"=>"6forum", 8 "nom_champs" => $nom_champs, 9 ); 4 function formulaires_csv2auteurs_exportation_charger_dist() { 5 $nom_champs = csv2auteurs_exportation(); 6 $valeurs = array( "choix_statut" => "6forum", "nom_champs" => $nom_champs ); 10 7 //var_dump($nom_champs); 11 8 12 return $valeurs;9 return $valeurs; 13 10 } 14 11 15 function formulaires_csv2auteurs_exportation_verifier_dist() {12 function formulaires_csv2auteurs_exportation_verifier_dist() { 16 13 $erreurs = array(); 17 14 // seuls les webmestres ont le droit d'utiliser cet outil! 18 if ($GLOBALS['visiteur_session']['webmestre'] != 'oui') {15 if ($GLOBALS['visiteur_session']['webmestre'] != 'oui') 19 16 $erreurs['message_erreur'] = _T('csv2auteurs:non_autorise'); 20 } 17 21 18 return $erreurs; 22 19 } 23 20 24 function formulaires_csv2auteurs_exportation_traiter_dist() {21 function formulaires_csv2auteurs_exportation_traiter_dist() { 25 22 $nom_champs = _request('nom_champs'); 26 23 $choix_statut = _request('choix_statut'); 27 24 $retour = $login_restreint = array(); 25 $correspondances_statuts = array( "0minirezo" => "administrateur", "1comite" => "redacteur", "6forum" => "visiteur"); 28 26 29 27 // creation du nom du fichier 30 28 $date_du_jour=date(Y_m_d); 31 29 $nom_fichier_csv = $date_du_jour.'_export_table_auteurs.csv'; 32 33 $statut = array( 34 "0minirezo" => "administrateur", 35 "1comite" => "redacteur", 36 "6forum" => "visiteur", 37 ); 30 38 31 // récupération des données dans la tables spip_auteurs que l'on place dans le champ "ss_groupe" 39 32 // Ecriture de la premiere ligne d'entete 40 foreach ($nom_champs as $entete) {41 $tableau_csv[0][$entete] =$entete;42 } 33 foreach ($nom_champs as $entete) 34 $tableau_csv[0][$entete] = $entete; 35 43 36 // ajout de l'admin restreint 44 $tableau_csv[0]["ss_groupe"] ="ss_groupe";37 $tableau_csv[0]["ss_groupe"] = "ss_groupe"; 45 38 // ajout de l'acces restreint s'il existe 46 if (test_plugin_actif("accesrestreint")) 47 $tableau_csv[0]["zone"]="zone"; 48 $i=1; 39 if (test_plugin_actif ("accesrestreint")) 40 $tableau_csv[0]["zone"] = "zone"; 49 41 50 42 // création d'un array contenant tous les logins des admins restreints 51 if(in_array("0minirezo",$choix_statut)){ 52 $r = sql_select("DISTINCT auteur.login AS login",array("spip_auteurs AS auteur","spip_auteurs_liens AS liens"),array("auteur.statut='0minirezo'","liens.id_auteur=auteur.id_auteur","liens.objet='rubrique'")); 53 while($row = sql_fetch($r)){ 54 $login_restreint[]=$row['login']; 55 } 43 $i = 1; 44 if (in_array("0minirezo", $choix_statut)) { 45 $r = sql_select("DISTINCT auteur.login AS login", 46 array("spip_auteurs AS auteur","spip_auteurs_liens AS liens"), 47 array("auteur.statut='0minirezo'","liens.id_auteur=auteur.id_auteur","liens.objet='rubrique'") 48 ); 49 while ($row = sql_fetch($r)) 50 $login_restreint[] = $row['login']; 56 51 } 57 52 58 if ($res = sql_select('*', 'spip_auteurs AS auteur')) {59 while ($row = sql_fetch($res)) {53 if ($res = sql_select('*', 'spip_auteurs AS auteur')) { 54 while ($row = sql_fetch($res)) { 60 55 // test les statuts demandés 61 if (in_array($row[statut], $choix_statut)){56 if (in_array($row[statut], $choix_statut)) { 62 57 // si c'est un admin, on ne selectionne que les admins restreints !!! 63 if ((($row['statut'] == "0minirezo") AND (in_array($row['login'],$login_restreint))) OR $row['statut']=="1comite" OR $row['statut'] == "6forum"){ 58 if ((($row['statut'] == "0minirezo") AND (in_array($row['login'], $login_restreint))) 59 OR $row['statut'] == "1comite" 60 OR $row['statut'] == "6forum") { 64 61 // Prise en compte de tous les champs selectionnés 65 foreach ($nom_champs as $nom_champ){62 foreach ($nom_champs as $nom_champ) { 66 63 // Prise en compte du champ statut 67 if ($nom_champ == "statut"){ 68 $tableau_csv[$i]["statut"] = $statut[$row[statut]]; 69 }else { 64 if ($nom_champ == "statut") { 65 $tableau_csv[$i]["statut"] = $correspondances_statuts[$row['statut']]; 66 } 67 else { 70 68 $tableau_csv[$i][$nom_champ]=$row[$nom_champ]; 71 69 } 72 } ;70 } 73 71 // on selectionne les noms des rubriques pour les admins restreints 74 if($res2 = sql_select( 75 array( 76 "rub.titre AS titre"), 77 array( 78 "spip_rubriques AS rub", 72 if ($res2 = sql_select( 73 array("rub.titre AS titre"), 74 array("spip_rubriques AS rub", 79 75 "spip_auteurs_liens AS lien"), 80 array( 81 "rub.id_rubrique = lien.id_objet", 82 "lien.id_auteur = $row[id_auteur]", 76 array("rub.id_rubrique = lien.id_objet", 77 "lien.id_auteur = ".$row['id_auteur'], 83 78 "lien.objet = 'rubrique'") 84 79 )) { 85 86 80 $j=0; 87 81 while ($row2 = sql_fetch($res2)) { 88 $input[$row[ nom]][$j]=$row2[titre];82 $input[$row['nom']][$j] = $row2['titre']; 89 83 $j++; 90 84 } 91 if ($input[$row[ nom]]){92 $tableau_csv[$i]["ss_groupe"] =implode('|',$input[$row[nom]]);85 if ($input[$row['nom']]) { 86 $tableau_csv[$i]["ss_groupe"] =implode('|',$input[$row['nom']]); 93 87 } 94 88 else 95 $tableau_csv[$i]["ss_groupe"]= ""; 96 } 97 // Prise en compte des zones restreintes : plugin acces restreint si le plugin est installe 98 if (test_plugin_actif("accesrestreint")){ 99 $k=0; 89 $tableau_csv[$i]["ss_groupe"] = ""; 90 } 91 // Prise en compte des zones restreintes : si le plugin est installe 92 if (test_plugin_actif ("accesrestreint")) { 100 93 if ($res3 = sql_select( 101 array( 102 "rub.titre AS titre"), 103 array( 104 "spip_zones_liens AS zone_auteur", 105 "spip_zones_liens AS zone_rubrique", 106 "spip_rubriques AS rub"), 107 array( 108 "zone_auteur.id_zone = zone_rubrique.id_zone", 109 "zone_auteur.objet='auteur' AND zone_auteur.id_objet =$row[id_auteur]", 110 "zone_rubrique.objet='rubrique'AND zone_rubrique.id_objet = rub.id_rubrique") 111 )) { 112 while ($row3 = sql_fetch($res3)){ 113 $zones[$row[nom]][$k]=$row3[titre]; 114 $tableau_csv[$i]["zone"]=implode('|',$zones[$row[nom]]); 115 $k++; 116 117 } 118 } 94 array("zones.titre AS titre"), 95 array("spip_zones_liens AS liens", "spip_zones AS zones"), 96 array("liens.objet = 'auteur'", 97 "liens.id_objet = ".$row['id_auteur'], 98 "liens.id_zone = zones.id_zone") 99 )) { 100 while ($row3 = sql_fetch($res3)) { 101 $zones[$row['nom']][] = $row3['titre']; 102 $tableau_csv[$i]['zone'] = implode('|',$zones[$row['nom']]); 103 } 104 } 119 105 } 120 106 … … 143 129 return $retour; 144 130 } 145 function csv2auteurs_exportation(){146 131 132 // fonction pour récupérer un array avec les noms de schamps de la table spip_auteurs 133 function csv2auteurs_exportation() { 147 134 //récupération des noms des champs 148 135 $nom_champs= array(); … … 150 137 $desc = sql_showtable('spip_auteurs',true); 151 138 foreach ($desc[field] as $cle => $valeur) 152 $nom_champs[$cle] ="-> $cle";153 foreach ($champ_supprimer as $cle) {139 $nom_champs[$cle] = "-> $cle"; 140 foreach ($champ_supprimer as $cle) { 154 141 unset($nom_champs[$cle]); 155 142 } -
_plugins_/csv2auteurs/trunk/formulaires/csv2auteurs_importation.php
r81148 r96446 19 19 ); 20 20 21 return $valeurs;21 return $valeurs; 22 22 } 23 23 … … 35 35 } else { 36 36 //Transfert réussi 37 if ($_FILES['fichier_csv']['error'] > 0) $erreurs['fichier_csv'] = _T('csv2auteurs:transfert'); 37 if ($_FILES['fichier_csv']['error'] > 0) 38 $erreurs['fichier_csv'] = _T('csv2auteurs:transfert'); 38 39 //Taille max du fichier csv < 2Mo 39 40 $maxsize=1000000; 40 if ($_FILES['fichier_csv']['size'] > $maxsize) $erreurs['fichier_csv'] =_T('csv2auteurs:taille'); 41 if ($_FILES['fichier_csv']['size'] > $maxsize) 42 $erreurs['fichier_csv'] =_T('csv2auteurs:taille'); 41 43 //Extension csv 42 44 $extensions_valides = array( 'csv','txt' ); 43 45 $extension_upload = strtolower( substr( strrchr($_FILES['fichier_csv']['name'], '.') ,1) ); 44 if (!in_array($extension_upload,$extensions_valides)) $erreurs['fichier_csv'] = _T('csv2auteurs:extension'); 46 if (!in_array($extension_upload,$extensions_valides)) 47 $erreurs['fichier_csv'] = _T('csv2auteurs:extension'); 45 48 } 46 49 //Il y a des erreurs … … 52 55 53 56 function formulaires_csv2auteurs_importation_traiter_dist(){ 57 $retour = array(); 54 58 $maj_utilisateur = _request('maj_utilisateur'); 55 59 $abs_redacs = _request('abs_redac'); … … 62 66 $type_maj=_request('type_maj'); 63 67 64 // recuperation de l'id de la rubrique parent des rubriques admins 65 $id_rubrique_parent_admin = _request('rubrique_parent'); 66 $id_rubrique_parent_admin = explode('|',$id_rubrique_parent_admin[0]); 67 $id_rubrique_parent_admin = $id_rubrique_parent_admin[1]; 68 // recuperation de l'id de la rubrique parent des rubriques admins 69 // NB: le sélecteur de rubrique retourne un champ rubrique_parent[] avec une valeur du style "rubrique|17" 70 if (is_array(_request('rubrique_parent'))) { 71 $id_rubrique_parent_admin = _request('rubrique_parent'); 72 $id_rubrique_parent_admin = explode('|',$id_rubrique_parent_admin[0]); 73 $id_rubrique_parent_admin = $id_rubrique_parent_admin[1]; 74 } 75 else 76 $id_rubrique_parent_admin = 0; 68 77 69 78 //récupération de l'id de la rubrique parent archive 70 $id_rubrique_parent_archive = _request('rubrique_parent_archive'); 71 $id_rubrique_parent_archive = explode('|',$id_rubrique_parent_archive[0]); 72 $id_rubrique_parent_archive = $id_rubrique_parent_archive[1]; 73 74 $retour = array(); 79 if (is_array(_request('rubrique_parent_archive'))) { 80 $id_rubrique_parent_archive = _request('rubrique_parent_archive'); 81 $id_rubrique_parent_archive = explode('|',$id_rubrique_parent_archive[0]); 82 $id_rubrique_parent_archive = $id_rubrique_parent_archive[1]; 83 } 84 else 85 $id_rubrique_parent_archive = 0; 75 86 76 87 include_spip('action/editer_rubrique'); … … 91 102 $destination = _DIR_TMP.basename($tmp_name); 92 103 $resultat = move_uploaded_file($tmp_name,$destination); 93 if (!$resultat) {104 if (!$resultat) 94 105 $retour['message_erreur'] = _T('csv2auteurs:transfert'); 95 } else{96 $retour['message_ok'] = _T('csv2auteurs: bravo');97 }106 else 107 $retour['message_ok'] = _T('csv2auteurs:chargement_fichier_CSV_OK', array('nom_fichier' => $_FILES['fichier_csv']['name'])); 108 98 109 99 110 // transformation du fichier csv en 4 array : … … 105 116 $tableau_csv_visiteurs = $tableau_csv_redacs = $tableau_csv_admins = array(); 106 117 $tableau_csv_rubriques_admins = array(); 107 $fichiercsv= fopen($destination, "r"); 108 $i=0; 109 110 // correspondance statut spip / statut csv 111 $Tcorrespondances = array('administrateur'=>'0minirezo', 'redacteur'=>'1comite', 'visiteur'=>'6forum', 'poubelle' => '5poubelle'); 118 $fichiercsv = fopen($destination, "r"); 119 120 // correspondance statut spip / statut csv (+ admettre les status spip ou les status abrégés dans le CSV) 121 $Tcorrespondances = array('administrateur'=>'0minirezo', 'redacteur'=>'1comite', 'rédacteur'=>'1comite', 'visiteur'=>'6forum', 'poubelle' => '5poubelle', 122 '0minirezo'=>'0minirezo', '1comite'=>'1comite', '6forum'=>'6forum', '5poubelle' => '5poubelle', 123 'admin'=>'0minirezo', 'redac'=>'1comite', 'visit'=>'6forum', 'poub' => '5poubelle'); 112 124 113 125 // tableau de tous les admins … … 127 139 'login!=""'); 128 140 $result = sql_select(array('login'),$from, $where); 129 while ($r = sql_fetch($result)) {141 while ($r = sql_fetch($result)) 130 142 $Tadmin_restreint[] = $r['login']; 131 }143 132 144 // tableau admins complets 133 145 $Tadmin_complet = array_diff($Tadmin_tous, $Tadmin_restreint); 134 // traiter fichier CSV 146 147 148 // traiter le fichier CSV 149 $i = 0; 135 150 $num_statut = $num_login = -1; 136 while (($data = fgetcsv($fichiercsv,"$separateur")) !== FALSE){151 while (($data = fgetcsv($fichiercsv, "$separateur")) !== FALSE){ 137 152 // petit hack car fgetcsv ne reconnait pas le ~ comme séparateur !!! 138 $data = implode("$separateur", $data);139 $data = explode("$separateur", $data);153 $data = implode("$separateur", $data); 154 $data = explode("$separateur", $data); 140 155 $nombre_elements = count($data); 141 if ($i==0) { 156 157 // régler le problème des champs CSV avec des espaces qui trainent en début ou fin de chaine 158 $data = array_map('trim', $data); 159 160 // Récupération de la ligne d'entete 161 if ($i == 0) { 142 162 for ($j = 0; $j < $nombre_elements; $j++) { 143 $en_tete[$j] = strtolower($data[$j]); //Récupération de la ligne d'entete163 $en_tete[$j] = strtolower($data[$j]); 144 164 if ($en_tete[$j] == 'statut') 145 165 $num_statut = $j; … … 153 173 } 154 174 else { 175 // on ne veut pas les auteurs du CSV ayant un login égal à celui d'un admin complet 176 if (in_array($data[$num_login], $Tadmin_complet)) { 177 $retour['message_ok'] .= '<br />'._T('csv2auteurs:login_idem_admin_non_traite', array('login_refuse' => $data[$num_login])); 178 continue; 179 } 155 180 for ($j = 0; $j < $nombre_elements; $j++) { 156 // on ne veut pas les auteurs du CSV ayant login égal à celui d'un admin complet157 181 if (($data[$num_login] AND !in_array($data[$num_login], $Tadmin_complet))) { 158 182 // creation du tableau contenant l'ensemble des données à importer 159 183 if ($Tcorrespondances[strtolower($data[$num_statut])] == '6forum') 160 184 $tableau_csv_visiteurs[$data[$num_login]][$en_tete[$j]] = $en_tete[$j] == "statut" ? "6forum" : $data[$j]; 185 161 186 if ($Tcorrespondances[strtolower($data[$num_statut])] == '1comite') 162 187 $tableau_csv_redacs[$data[$num_login]][$en_tete[$j]] = $en_tete[$j] == "statut" ? "1comite" : $data[$j]; 188 163 189 if ($Tcorrespondances[strtolower($data[$num_statut])] == '0minirezo') { 164 190 $tableau_csv_admins[$data[$num_login]][$en_tete[$j]] = $en_tete[$j] == "statut" ? "0minirezo" : $data[$j]; 191 // récup des rubriques pour les admins restreints 165 192 if ($en_tete[$j] == 'ss_groupe' AND $data[$j]) { 166 193 $Trub = explode('|', $data[$j]); 167 foreach ($Trub as $rub)194 foreach ($Trub as $rub) 168 195 if (!in_array($rub, $tableau_csv_rubriques_admins)) 169 196 $tableau_csv_rubriques_admins[] = $rub; … … 177 204 fclose($fichiercsv); 178 205 unlink($destination); 206 $retour['message_ok'] .= '<br />'._T('csv2auteurs:nbe_auteurs_a_traiter', array('nb_auteurs' => $i - 1)); 179 207 180 208 // tableau CSV total 181 209 $tableau_csv_total = $tableau_csv_visiteurs + $tableau_csv_redacs + $tableau_csv_admins; 182 // echo "<pre>";183 // print_r($tableau_csv_visiteurs);184 // echo "admi";185 // print_r($tableau_csv_admins);186 // echo "red";187 // print_r($tableau_csv_redacs);188 // print_r($tableau_csv_total);die;189 210 190 211 //spip_log("tableau csv total","csvspip"); … … 198 219 // $admin_restreint_bdd 199 220 // la cle de chaque tableau est le login 200 $poubelle_bdd=$visiteur_bdd=$redacteur_bdd=$admin_restreint_bdd=array(); 201 /* $poubelle_bdd_req = sql_allfetsel('*', 'spip_auteurs',array('statut="5poubelle"','(login!="")')); 202 foreach ($poubelle_bdd_req as $key) { 203 $poubelle_bdd[$key['login']]=$key; 204 } 205 */ 206 $visiteur_bdd_req = sql_allfetsel('*', 'spip_auteurs',array('statut="6forum"','(login!="")')); 221 $poubelle_bdd = $visiteur_bdd = $redacteur_bdd = $admin_restreint_bdd = array(); 222 $visiteur_bdd_req = sql_allfetsel('*', 'spip_auteurs', array('statut="6forum"','(login!="")')); 207 223 foreach ($visiteur_bdd_req as $key) { 208 $visiteur_bdd[$key['login']] =$key;209 } 210 $redacteur_bdd_req 224 $visiteur_bdd[$key['login']] = $key; 225 } 226 $redacteur_bdd_req = sql_allfetsel('*', 'spip_auteurs', array('statut="1comite"','(login!="")')); 211 227 foreach ($redacteur_bdd_req as $key) { 212 $redacteur_bdd[$key['login']] =$key;228 $redacteur_bdd[$key['login']] = $key; 213 229 } 214 230 //on récupère seulement les admins restreints !!! … … 221 237 "liens.id_auteur = auteurs.id_auteur", 222 238 '(login!="")'); 223 $admin_restreint_bdd_req 239 $admin_restreint_bdd_req = sql_allfetsel("DISTINCT auteurs.*" ,$from, $where); 224 240 foreach ($admin_restreint_bdd_req as $key) { 225 $admin_restreint_bdd[$key['login']] =$key;241 $admin_restreint_bdd[$key['login']] = $key; 226 242 } 227 243 … … 234 250 $tableau_bdd_rubriques_admins = array(); 235 251 $result = sql_select(array('id_rubrique', 'titre'), 'spip_rubriques'); 236 while ($row = sql_fetch($result)) {252 while ($row = sql_fetch($result)) { 237 253 $tableau_bdd_rubriques_admins[$row['id_rubrique']] = strtolower($row['titre']); 238 254 } … … 241 257 // construction du tableau de correspondance nom_zone avec leur id 242 258 $tableau_bdd_zones_admins = array(); 243 if (test_plugin_actif("accesrestreint")) {259 if (test_plugin_actif("accesrestreint")) { 244 260 $result = sql_select(array('id_zone', 'titre'), 'spip_zones'); 245 while ($row = sql_fetch($result)) {261 while ($row = sql_fetch($result)) { 246 262 $tableau_bdd_zones_admins[$row['id_zone']] = strtolower($row['titre']); 247 263 } 248 264 } 249 spip_log($tableau_bdd_zones_admins,"csvspip"); 265 // spip_log($tableau_bdd_zones_admins,"csvspip"); 266 250 267 // créer les rubriques admins du csv n'existant pas et les indexer 251 foreach($tableau_csv_rubriques_admins as $id_rub=>$rub){ 252 if (!in_array(strtolower($rub), $tableau_bdd_rubriques_admins)) { 253 $set = array('titre'=>$rub); 268 // le champ ss_groupe du fichier CSV peut contenir le titre ou l'id de la rubrique 269 // pour la création il faut un titre 270 $nb_rub_crees = 0; 271 foreach ($tableau_csv_rubriques_admins as $num_rub => $rub) { 272 if (!in_array(strtolower($rub), $tableau_bdd_rubriques_admins) AND !is_numeric($rub)) { 273 $set = array('titre' => $rub); 254 274 $id_rub = rubrique_inserer($id_rubrique_parent_admin); 255 275 rubrique_modifier($id_rub, $set); 256 276 $tableau_bdd_rubriques_admins[$id_rub] = strtolower($rub); 257 } 258 } 277 $nb_rub_crees++; 278 } 279 } 280 if ($nb_rub_crees > 0) 281 $retour['message_ok'] .= '<br />'._T('csv2auteurs:nbe_rubriques_admin_crees', array('nb_rubriques' => $nb_rub_crees)); 259 282 260 283 //Récuperer les champs de la table auteurs 261 $Tnom_champs_bdd =array();284 $Tnom_champs_bdd = array(); 262 285 $desc = sql_showtable('spip_auteurs',true); 263 286 foreach ($desc['field'] as $cle => $valeur) … … 285 308 if ($type_maj == 'remplacer' AND test_plugin_actif("accesrestreint")) { 286 309 // suppression des liens des rubriques administrées 287 objet_dissocier(array("auteur" =>array_values($tableau_maj_auteurs_id)), array("rubrique"=>"*"));310 objet_dissocier(array("auteur" => array_values($tableau_maj_auteurs_id)), array("rubrique" => "*")); 288 311 // suppression des zones des auteurs 289 312 zone_lier('',"auteur",array_values($tableau_maj_auteurs_id),'del'); 290 } 291 //spip_log("table zone admin","csvspip"); 292 293 //spip_log($tableau_bdd_zones_admins,"csvspip"); 313 $retour['message_ok'] .= '<br />'._T('csv2auteurs:raz_rubriques_admins_zones'); 314 } 294 315 295 316 // maj des données des auteurs 296 foreach($tableau_maj_auteurs as $login => $Tauteur) 297 csv2auteurs_ajout_utilisateur($login, $Tauteur, $Tnom_champs_bdd, $Tcorrespondances, $tableau_bdd_rubriques_admins, $tableau_bdd_zones_admins, $tableau_maj_auteurs_id[$login]); 298 299 /* 300 echo '<br><pre>'; 301 var_dump($tableau_maj_auteurs_id); 302 */ 303 304 } 305 317 $ret = ''; 318 foreach ($tableau_maj_auteurs as $login => $Tauteur) { 319 $ret = csv2auteurs_ajout_utilisateur($login, $Tauteur, $Tnom_champs_bdd, $Tcorrespondances, $tableau_bdd_rubriques_admins, $tableau_bdd_zones_admins, $tableau_maj_auteurs_id[$login]); 320 if ($ret != '') 321 $retour['message_ok'] .= $ret; 322 } 323 $retour['message_ok'] .= '<br />'._T('csv2auteurs:nb_auteurs_maj', array('nb_auteurs_maj' => count($tableau_maj_auteurs))); 324 } 306 325 307 326 // dans tous les cas ajout des nouveaux 308 foreach($tableau_nouveaux_auteurs as $login => $Tauteur) 309 csv2auteurs_ajout_utilisateur($login,$Tauteur,$Tnom_champs_bdd,$Tcorrespondances, $tableau_bdd_rubriques_admins, $tableau_bdd_zones_admins); 310 311 312 313 314 315 316 // PARTIE II : Suppressions des absents (changer le statut des auteurs en 5.poubelle) avec 3 choix pour la gestion des articles associés 327 $ret = ''; 328 foreach ($tableau_nouveaux_auteurs as $login => $Tauteur) { 329 $ret = csv2auteurs_ajout_utilisateur($login,$Tauteur,$Tnom_champs_bdd,$Tcorrespondances, $tableau_bdd_rubriques_admins, $tableau_bdd_zones_admins); 330 if ($ret != '') 331 $retour['message_ok'] .= $ret; 332 } 333 $retour['message_ok'] .= '<br />'._T('csv2auteurs:nb_auteurs_crees', array('nb_auteurs_crees' => count($tableau_nouveaux_auteurs))); 334 335 336 // PARTIE II : Suppressions des absents (changer le statut des auteurs en 5poubelle) avec 3 choix pour la gestion des articles associés 317 337 // 1. ras 318 338 // 2. supprimer les articles … … 320 340 321 341 // Si choix3 : transferer les articles , création de la rubrique d'archive (en tenant compte d'une rubrique parent) 322 if ($traitement_article_efface == "transferer_articles"){323 if (!$id_rubrique_archive = sql_fetsel('id_rubrique','spip_rubriques',array('titre ="'.$nom_rubrique_archive.'"',"id_parent=$id_rubrique_parent_archive"))){342 if ($traitement_article_efface == "transferer_articles") { 343 if (!$id_rubrique_archive = sql_fetsel('id_rubrique','spip_rubriques',array('titre ="'.$nom_rubrique_archive.'"',"id_parent=$id_rubrique_parent_archive"))) { 324 344 $objet = 'rubrique'; 325 $set = array('titre' =>$nom_rubrique_archive);326 $id_rubrique_archive = objet_inserer($objet, $id_rubrique_parent_archive);345 $set = array('titre' => $nom_rubrique_archive); 346 $id_rubrique_archive = objet_inserer($objet, $id_rubrique_parent_archive); 327 347 objet_modifier($objet, $id_rubrique_archive, $set); 348 $retour['message_ok'] .= '<br />'._T('csv2auteurs:rubrique_archive_cree', array('titre_rubrique_archive' => $nom_rubrique_archive)); 328 349 } 329 350 } … … 341 362 $Tnot_in[] = $Tid_auteur['id_auteur']; 342 363 $not_in = sql_in('id_auteur', $Tnot_in, 'NOT'); 364 343 365 // récupérer les auteurs à la poubelle sans articles 344 366 $Tabs_poubelle = sql_allfetsel('id_auteur', 'spip_auteurs',array('statut="5poubelle"', $not_in)); … … 349 371 $in = sql_in('id_auteur', $Ta_suppr); 350 372 sql_delete('spip_auteurs', $in); 373 if (count($Tabs_poubelle) > 0) 374 $retour['message_ok'] .= '<br />'._T('csv2auteurs:nb_auteurs_poubelle_effaces', array('nb_auteurs_poubelle_effaces' => count($Tabs_poubelle))); 351 375 } 352 // $Tid_poubelle = csv2auteurs_diff_absents($poubelle_bdd); 353 // csv2auteurs_supprimer_auteurs($Tid_poubelle, '5poubelle', $traitement_article_efface,$id_rubrique_parent_archive); 354 376 377 // utilitaire pour récupérer un array simple avec les id_auteurs à partir du résultat du sql_allfetsel('id_auteur'...) 378 function recup_id($Tid_obj) { return $Tid_obj['id_auteur']; } 379 355 380 if ($abs_visiteurs) { 356 381 $Tid_visiteurs = csv2auteurs_diff_absents($visiteur_bdd, $tableau_csv_visiteurs); 357 csv2auteurs_supprimer_auteurs($Tid_visiteurs, '6forum', $traitement_article_efface,$id_rubrique_parent_archive); 382 // faire le ménage: pour la suppression on récupère aussi les visiteurs sans login 383 $Tid_visiteurs_nologin = sql_allfetsel('id_auteur', 'spip_auteurs', array('statut="6forum"', 'login = ""')); 384 $Tid_visiteurs = $Tid_visiteurs + array_map('recup_id', $Tid_visiteurs_nologin); 385 csv2auteurs_supprimer_auteurs($Tid_visiteurs, '6forum', $traitement_article_efface, $id_rubrique_parent_archive); 386 if (count($Tid_visiteurs) > 0) 387 $retour['message_ok'] .= '<br />'._T('csv2auteurs:nb_visiteurs_effaces', array('nb_visiteurs_effaces' => count($Tid_visiteurs))); 358 388 } 359 389 if ($abs_redacs) { 360 390 $Tid_redacs = csv2auteurs_diff_absents($redacteur_bdd, $tableau_csv_redacs); 391 // faire le ménage: pour la suppression on récupère aussi les redacteurs sans login 392 $Tid_redacs_nologin = sql_allfetsel('id_auteur', 'spip_auteurs', array('statut="1comite"', 'login = ""')); 393 $Tid_redacs = $Tid_redacs + array_map('recup_id', $Tid_redacs_nologin); 361 394 csv2auteurs_supprimer_auteurs($Tid_redacs, '1comite',$traitement_article_efface,$id_rubrique_parent_archive); 395 if (count($Tid_redacs) > 0) 396 $retour['message_ok'] .= '<br />'._T('csv2auteurs:nb_auteurs_effaces', array('nb_auteurs_effaces' => count($Tid_redacs))); 362 397 } 363 398 if ($abs_admins) { 364 399 $Tid_admins = csv2auteurs_diff_absents($admin_restreint_bdd, $tableau_csv_admins); 365 400 csv2auteurs_supprimer_auteurs($Tid_admins, '0minirezo',$traitement_article_efface,$id_rubrique_parent_archive); 366 } 367 368 // PARTIE III : maj des existants 369 // 1. ras 370 // 2. supprimer les articles 371 // 3. transferer les articles dans une rubrique d'archivage 372 373 374 /* 375 echo '<pre>$visiteur_bdd'; 376 var_dump($visiteur_bdd); 377 echo '<br>$redacteur_bdd:'; 378 var_dump($redacteur_bdd); 379 echo '<br>$admin_restreint'; 380 var_dump($admin_restreint); 381 echo '</pre>'; 382 die; 383 */ 384 385 386 // $retour['redirect'] = 'index.php?exec=csv2auteurs'; 401 if (count($Tid_admins) > 0) 402 $retour['message_ok'] .= '<br />'._T('csv2auteurs:nb_admins_restreints_effaces', array('nb_admins_restreints_effaces' => count($Tid_admins))); 403 } 404 405 387 406 return $retour; 388 407 } … … 394 413 * @return l'array des id_auteurs 395 414 */ 396 function csv2auteurs_diff_absents($Tbdd, $Tcsv=array()) {415 function csv2auteurs_diff_absents($Tbdd, $Tcsv=array()) { 397 416 $Tid = array(); 398 417 $T = array_diff_key($Tbdd, $Tcsv); … … 409 428 * @param array associatif CSV: Tauteur_csv nom_champ : valeur 410 429 */ 411 function csv2auteurs_ajout_utilisateur($login, $Tauteur_csv,$Tnom_champs_bdd,$Tcorrespondances, $tableau_bdd_rubriques_admins, $tableau_bdd_zones_admins, $id_auteur=0){430 function csv2auteurs_ajout_utilisateur($login, $Tauteur_csv, $Tnom_champs_bdd, $Tcorrespondances, $tableau_bdd_rubriques_admins, $tableau_bdd_zones_admins, $id_auteur=0) { 412 431 $set = $Tzones = $Trubadmin = array(); 413 foreach($Tauteur_csv as $champ => $valeur){ 414 if($champ == "ss_groupe"){ 432 $retour = ''; 433 434 foreach ($Tauteur_csv as $champ => $valeur) { 435 // gestion des rubriques administrées par l'utilisateur 436 // la rubrique peut être désignée par son titre ou son id_rubrique 437 if ($champ == "ss_groupe") { 415 438 $T = explode('|',$valeur); 416 foreach($T as $rub){ 417 $Trubadmin[] = array_search(strtolower($rub),$tableau_bdd_rubriques_admins); 439 foreach ($T as $rub) { 440 if (is_numeric($rub) AND array_key_exists($rub, $tableau_bdd_rubriques_admins)) 441 $Trubadmin[] = $rub; 442 elseif ($id_r = array_search(strtolower($rub), $tableau_bdd_rubriques_admins)) 443 $Trubadmin[] = $id_r; 444 // à priori on ne passe ici que si la rubrique est sous forme numérique mais ne correspondant pas à un id_rubrique existant 445 elseif ($rub != '') 446 $retour .= '<br />'._T('csv2auteurs:rubrique_admin_pas_trouvee', array('rub_pas_trouvee' => $rub, 'login_auteur' => $login)); 418 447 } 419 448 } 420 if($champ == "zone"){ 449 450 // gestion des zones de l'utilisateur 451 if ($champ == "zone") { 421 452 $T = explode('|',$valeur); 422 foreach($T as $zone){ 423 $Tzones[] = array_search(trim(rtrim(strtolower($zone))),$tableau_bdd_zones_admins); 453 foreach ($T as $zone) { 454 // pour la liste des zones on accepte soit le titre de la zone soit son id_zone 455 if (intval($zone) == $zone AND array_key_exists($zone, $tableau_bdd_zones_admins)) 456 $Tzones[] = $zone; 457 elseif ($id_z = array_search(trim(rtrim(strtolower($zone))), $tableau_bdd_zones_admins)) 458 $Tzones[] = $id_z; 459 elseif ($zone != '') 460 $retour .= '<br />'._T('csv2auteurs:zone_pas_trouvee', array('zone_pas_trouvee' => $zone, 'login_auteur' => $login)); 424 461 } 425 //spip_log("tzone de id_auteur $id_auteur","csvspip"); 426 //spip_log($Tzones,"csvspip"); 427 428 } 429 if(in_array($champ,$Tnom_champs_bdd)){ 430 $set[$champ] = ($champ == "statut" AND array_key_exists($valeur,$Tcorrespondances)) ? $Tcorrespondances[$valeur] : $valeur; 431 } 432 } 433 434 //inserer l'auteur si il n'y a pas d'id_auteur transmis 462 } 463 464 // gestion de tous autres champs (y compris extras) 465 if (in_array($champ, $Tnom_champs_bdd)) { 466 $set[$champ] = ($champ == "statut" AND array_key_exists($valeur, $Tcorrespondances)) ? $Tcorrespondances[$valeur] : $valeur; 467 } 468 } 469 // si l'utilisateur est 0minirezo mais qu'il n'a pas de rubrique à administrer, le dégrader en redacteur 470 if ($set['statut'] == '0minirezo' AND count($Trubadmin) == 0) { 471 $set['statut'] = '1comite'; 472 $retour .= '<br />'._T('csv2auteurs:admin_sans_rub', array('login_auteur' => $login)); 473 } 474 475 //créer l'auteur si il n'y a pas d'id_auteur transmis 435 476 if (!$id_auteur) 436 477 $id_auteur = auteur_inserer(); 437 478 438 479 // remplir les champs ou les maj 439 auteur_modifier($id_auteur, $set);480 auteur_modifier($id_auteur, $set); 440 481 441 482 //liaison des rubriques 442 if (count($Trubadmin) AND $set["statut"] == "0minirezo")443 objet_associer(array("auteur" =>$id_auteur),array("rubrique"=>$Trubadmin));483 if (count($Trubadmin) AND $set["statut"] == "0minirezo") 484 objet_associer(array("auteur" => $id_auteur), array("rubrique" => $Trubadmin)); 444 485 445 486 //liaison des zones 446 if(count($Tzones) AND test_plugin_actif("accesrestreint") AND test_plugin_actif("accesrestreint")) 447 zone_lier($Tzones, 'auteur', $id_auteur, 'add'); 448 487 if (count($Tzones) AND test_plugin_actif("accesrestreint") AND test_plugin_actif("accesrestreint")) 488 zone_lier($Tzones, 'auteur', $id_auteur, 'add'); 489 490 return $retour; 449 491 } 450 492 … … 464 506 $objet = 'auteur'; 465 507 $set = array('statut'=>'5poubelle'); 466 foreach ($Tid as $id) {508 foreach ($Tid as $id) { 467 509 $Tarticles = sql_allfetsel('id_objet', 'spip_auteurs_liens', array('id_auteur='.$id, 'objet="article"')); 468 510 … … 479 521 // supprimer les articles 480 522 $table_idarticle = array(); 481 if ($traitement == 'supprimer_articles') {523 if ($traitement == 'supprimer_articles') { 482 524 objet_dissocier(array('id_auteur'=>$id), array('article'=>$Tarticles)); 483 525 foreach ($Tarticles as $idarticle) { … … 488 530 } 489 531 // deplacer les articles dans la rubrique d'archivage 490 if ($traitement == 'transferer_articles') {491 foreach ($Tarticles as $idarticle)532 if ($traitement == 'transferer_articles') { 533 foreach ($Tarticles as $idarticle) 492 534 objet_modifier('article', $idarticle['id_objet'], array('id_parent'=>$id_rubrique_archive)); 493 535 } 494 536 } 495 537 496 if (test_plugin_actif("accesrestreint")) {538 if (test_plugin_actif("accesrestreint")) { 497 539 // suppression des zones de l'auteur 498 540 $Tzones = sql_allfetsel('id_zone', 'spip_zones_liens', array('id_objet='.$id, 'objet="auteur"')); -
_plugins_/csv2auteurs/trunk/lang/csv2auteurs_fr.php
r81148 r96446 1 1 <?php 2 2 $GLOBALS[$GLOBALS['idx_lang']] = array( 3 3 // A 4 4 'abs_redac' => 'Rédacteurs absents', 5 5 'abs_admin' => 'Administrateurs restreints absents', … … 11 11 'auteur_nouveau'=>'supprimer les auteurs et attribuer leurs articles à l\'auteur', 12 12 'avenir_auteurs'=>'Traitement des comptes supprimés pour les auteurs d\'articles :', 13 13 'admin_sans_rub' => '<strong class="erreur">Attention !</strong> l\'administrateur restreint <strong>@login_auteur@</strong> n\'a pas de rubrique associée: son compte est rétrogradé en rédacteur.', 14 15 // B 14 16 'bravo' => 'Bravo !!', 15 17 18 // C 16 19 'creation_rubrique' => 'Création de rubriques pour les sous-groupes administrateurs:', 17 20 'creer_rubrique' => 'Créer une rubrique par sous-groupe d\'admins:', … … 20 23 'choix_statut'=> 'Choisissez les types de statut que vous désirez exporter', 21 24 'champ_manquant' => 'Les champs : login, statut et email sont obligatoires !!', 25 'chargement_fichier_CSV_OK' => 'Chargement du fichier <strong>@nom_fichier@</strong>: OK', 22 26 27 // D 23 28 'delimiteur'=>'Choisissez le type de délimiteur que vous désirer pour créer votre fichier csv', 24 29 30 // E 25 31 'envoyer'=>'Lancer la moulinette', 26 32 'erreurs' => 'Votre saisie contient des erreurs !', … … 28 34 'exporter'=>'Exporter', 29 35 36 // F 30 37 'fichier_uploader' => 'Fichier à téléverser', 31 38 39 // I 32 40 'importer'=>'Importer', 41 42 // L 43 'login_idem_admin_non_traite' => '<strong class="erreur">Attention!</strong> Le compte ayant pour login <strong>@login_refuse@</strong> n\'a pas été traité car cet identifiant est celui d\'un administrateur complet', 33 44 45 // M 34 46 'mettre_a_jour_utilisateurs_existants' => 'Mettre à jour les utilisateurs existants :', 35 47 'mise_a_jour_utilisateur' => 'Mise à jour des utilisateurs existant déja dans SPIP :', … … 39 51 'type_maj_label'=>'Gestion des rubriques administrées et des zones d\'accès des utilisateurs existants', 40 52 53 // N 41 54 'nom_champs'=>'Sélectionnez les champs que vous souhaitez exporter', 42 55 'nom_rubrique_archive'=>'Nom de la rubrique d\'archives :', … … 44 57 'non_autorise' => 'Seuls les webmestres ont le droit d\'utiliser csv2auteurs: veuillez vous reconnecter avec un compte adapté', 45 58 'nouveau_separateur' => 'Le nouveau séparateur de champs est : @separateur@', 46 59 'nbe_auteurs_a_traiter' => 'Nombre de comptes utilisateurs à traiter: @nb_auteurs@', 60 'nbe_rubriques_admin_crees' => 'Nombre de rubriques créées pour les admins restreints: @nb_rubriques@', 61 'nb_auteurs_maj' => 'Nombre de comptes utilisateurs mis à jour: @nb_auteurs_maj@', 62 'nb_auteurs_crees' => 'Nombre de nouveaux utilisateurs créés: @nb_auteurs_crees@', 63 'nb_auteurs_poubelle_effaces' => 'Nombre d\'utilisateurs à la poubelle supprimés: @nb_auteurs_poubelle_effaces@', 64 'nb_visiteurs_effaces' => 'Nombre de visiteurs supprimés: @nb_visiteurs_effaces@', 65 'nb_auteurs_effaces' => 'Nombre de rédacteurs supprimés: @nb_auteurs_effaces@', 66 'nb_admins_restreints_effaces' => 'Nombre d\'admins restreints supprimés: @nb_admins_restreints_effaces@', 67 68 // O 47 69 'obligatoire' => 'Ce champs est obligatoire !', 48 70 71 // P 49 72 'parametres_fichier_csv' => 'Paramètres du fichier CSV', 50 73 'presentation_formulaire' => 'CSV2AUTEURS : gestion des utilisateurs de SPIP à partir de fichiers CSV', … … 52 75 'passage_poubelle' => 'passer à la poubelle', 53 76 77 // R 54 78 'redacteurs' => 'Rédacteurs', 55 79 'rubrique_defaut' => 'Rubrique par défaut des admins restreints:', … … 57 81 'rubrique_parent'=>'Choisissez la rubrique parente', 58 82 'rien_faire' => 'Ne rien faire', 83 'rubrique_archive_cree' => 'La rubrique <strong>@titre_rubrique_archive@</strong> a été créée pour archiver les articles auteurs supprimés', 84 'raz_rubriques_admins_zones' => 'Remise à zéro des rubriques administrées et des zones d\'accès restreint pour les utilisateurs existant', 85 'rubrique_admin_pas_trouvee' => '<strong class="erreur">Attention !</strong> auteur admin restreint <strong>@login_auteur@</strong>: la rubrique <strong>@rub_pas_trouvee@</strong> n\'existe pas.', 59 86 87 // S 60 88 'suppression_absents' => 'Suppression des absents:', 61 89 'suppression_article_efface' => 'Traitement des articles des auteurs effacés :', … … 64 92 'separateur' => 'Choix du caractère de séparation de champs', 65 93 66 94 // T 67 95 'transfert' => 'Erreur lors du transfert !', 68 96 'transferer_articles' => 'Transférer les articles dans une rubrique d\'archives: ', 69 97 'taille' => 'Le fichier est trop gros !', 70 98 99 // V 71 100 'visiteurs' => 'Visiteurs', 72 101 'virgule'=>'virgule ","', 73 102 'vidage_poubelle' => 'Vider la poubelle', 103 104 // Z 105 'zone_pas_trouvee' => '<strong class="erreur">Attention !</strong> auteur @login_auteur@: la zone <strong>@zone_pas_trouvee@</strong> n\'existe pas.', 74 106 ); 75 107 ?>
Note: See TracChangeset
for help on using the changeset viewer.