source: spip-zone/_plugins_/csv2spip/trunk/exec/csv2spip.php @ 104337

Last change on this file since 104337 was 104337, checked in by spip.franck@…, 4 years ago
File size: 46.2 KB
Line 
1<?php
2/* csv2spip est un plugin pour créer/modifier les visiteurs, rédacteurs et administrateurs restreints d'un SPIP à partir de fichiers CSV
3*                                               VERSION : 3.1 => plugin pour spip 2.*
4*
5* Auteur : cy_altern
6
7* Ce programme est un logiciel libre distribue sous licence GNU/GPL.
8
9**/
10if (!defined("_ECRIRE_INC_VERSION")) return;
11
12define('_LOGO_CSV2SPIP', _DIR_PLUGIN_CSV2SPIP."/img_pack/csv2spip-24.gif");
13
14include_spip('auth/sha256.inc');
15include_spip('inc/csv2spip_import');
16
17// a partir de SPIP 2.1 il faut crypter les pass en sha256 a l place du md5 des version precedentes
18// commit de creation de la version 2.1: 14864 cf
19// https://core.spip.net/projects/spip/repository/revisions/14864
20
21function csv2spip_crypt_pass($input) {                 
22        global $spip_version_code;
23    if ($spip_version_code < 14864)
24                return md5($input);
25        else return sha256($input);
26}
27
28
29function exec_csv2spip() {
30        global $spip_version_code;
31
32        include_spip('inc/autoriser');
33        if(!autoriser('webmestre')) {
34                include_spip('inc/minipres');
35                echo minipres();
36        }
37        else {
38                $commencer_page = charger_fonction('commencer_page', 'inc');
39        echo $commencer_page(_T('csvspip:titre_page'));
40                echo "\r\n<style type=\"text/css\">                             
41                        \r\n.Cerreur { background-color: #f33; display: block; padding: 10px; }
42                        \r\n.Cok { width: 47%; background-color: #ddd; display: block; padding: 10px; }
43                        \r\n.Tpetit { font-size: 75%; }
44                        \r\n.ss_cadre { background-color: #eee; margin: 5px; padding: 5px; }
45                        \r\n</style>";
46                         
47                echo gros_titre(_T('csvspip:titre_page'), '',false);
48                echo debut_grand_cadre(true);
49
50                echo debut_gauche('',true);
51                echo debut_boite_info(true);
52                echo "<strong>"._T('csvspip:titre_info')."</strong><br /><br />";
53                echo "\r\n"._T('csvspip:help_info');
54
55                if ($_FILES['userfile']['name'] != '') { 
56                        echo "<br /><br /><a href=\"".$PHP_SELF."?exec=csv2spip\"><img src=\"".find_in_path('images/cal-today.gif')."\"> "._T('csvspip:retour_saisie')."</a>";
57                }                               
58                echo fin_boite_info(true);
59                echo debut_droite('',true);
60                                         
61                if (empty($_FILES['userfile']['name']))
62                        csv2spip_formulaire();
63                elseif ($_FILES['userfile']['error'] != 0) { 
64                        echo debut_cadre_couleur(_LOGO_CSV2SPIP, true, "", _T('csvspip:titre_etape1'));
65                                echo "<br><span class=\"Cerreur\">"._T('csvspip:err_etape1.1_debut').$_FILES['userfile']['tmp_name']._T('csvspip:err_etape1.1_fin').$_FILES['userfile']['error']."</span>";
66                        echo fin_cadre_couleur(true);
67                }
68                else {
69// Etape 1 : analyser le fichier
70                        echo debut_cadre_couleur(_LOGO_CSV2SPIP, true, "", _T('csvspip:titre_etape1'));
71                        echo "<br />"._T('csvspip:ok_etape1'). $_FILES['userfile']['name']."<br />";
72                        echo fin_cadre_couleur(true);
73                        $f = $_FILES['userfile']['tmp_name'];
74                        $res = csv2spip_analyse(csv2spip_normalise($f));
75
76// Etape 2 : transfert des données vers une table SQL temporaire
77                        if (is_string($res))
78                                echo debut_cadre_couleur(_LOGO_CSV2SPIP, true, "", _T('csvspip:titre_etape2')), "<br /><span class=\"Cerreur\">", $res, "</span>", fin_cadre_couleur(true);
79                        else {
80                        // creer la table temporaire avec les champs n'existant pas dans spip_auteurs
81                                $spip_tmp_csv2spip = array(
82                                        "id"          => "INT(11) NOT NULL AUTO_INCREMENT", 
83                                        "id_spip"     => "INT(11) NOT NULL",
84                                        "groupe"      => "TEXT NOT NULL", 
85                                        "ss_groupe"   => "TEXT NOT NULL",
86                                        "prenom"      => "TEXT NOT NULL");
87                        // completer avec les champs de la table spip_auteurs a partir de la recuperation de sa structure
88                                $Tchamps_exclus = array('id_auteur', 'low_sec', 'maj', 'htpass', 'en_ligne', 'alea_actuel', 'alea_futur', 'cookie_oubli');
89                                $trouver_table = charger_fonction('trouver_table', 'base');
90                                $desc_auteurs = $trouver_table('spip_auteurs');
91                                $Tchamps = $desc_auteurs['field'];
92                                foreach ($Tchamps as $champ=>$desc) {
93                                        if (!in_array($champ, $Tchamps_exclus))
94                                                $spip_tmp_csv2spip[$champ] = str_ireplace('CHARACTER SET utf8 COLLATE utf8_bin', '', $desc);
95                                }
96/*                              // champs homonymes a la table auteur
97                                // a terme, prendre la declaration de celle-ci
98                                "login"           => "TEXT NOT NULL",
99                                "nom"         => "TEXT NOT NULL",
100                                "pass"        => "TEXT NOT NULL",
101                                "email"       => "TEXT NOT NULL",
102                                "bio"         => "TEXT NOT NULL",
103                                "source"          => "TEXT NOT NULL"
104                                                 );
105echo '<br>table tmp:<pre>';
106        var_dump($spip_tmp_csv2spip);
107echo '</pre>';
108*/
109                                $spip_tmp_csv2spip_key = array(
110                                                         "PRIMARY KEY"  => "id"
111                                                         );
112                                $create = sql_create('spip_tmp_csv2spip', $spip_tmp_csv2spip, $spip_tmp_csv2spip_key, true, true);
113                                echo debut_cadre_couleur(_LOGO_CSV2SPIP, true, "", _T('csvspip:titre_etape2')), "<br />", _T('info_auteurs_nombre'), ' ', count($res) , fin_cadre_couleur(true);
114                                if (!$create) {
115                                        echo _T('csvspip:err_etape2.2');
116                                        exit;
117                                }
118
119                                foreach($res as $insert) 
120                                  // ignorer les lignes vides rencontrees
121                                  if (is_array($insert))
122                                        sql_insertq('spip_tmp_csv2spip', $insert);
123
124                // Passer aux etapes suivantes
125                                csv2spip_etapes();
126
127                // Fin: suppresion de la table temporaire
128        //                      sql_drop_table('spip_tmp_csv2spip');
129                        }
130                }
131
132                echo fin_grand_cadre(true),fin_page();
133        }
134}
135
136// Formulaire de saisie du fichier CSV et des options de config         
137function csv2spip_formulaire() {
138        echo "<script language=\"JavaScript\"> ";
139        echo "   function aff_masq(id_elem, vis) { ";
140        echo "          vis == 0 ? s_vis = 'none' : s_vis = 'block'; ";
141        echo "          document.getElementById(id_elem).style.display = s_vis; ";
142        echo "          this.checked = 'checked'; ";
143        echo "  }";
144        echo "</script>";
145
146        // debut_cadre_formulaire();
147        echo "\r\n<form name=\"csv2spip\" enctype=\"multipart/form-data\" action=\"".$PHP_SELF."?exec=csv2spip\" method=\"post\" onsubmit=\"return (verifSaisie());\">";
148        echo debut_cadre_couleur("cal-today.gif", true, "", _T('csvspip:titre_choix_fichier'));
149        echo "<strong>"._T('csvspip:choix_fichier')."</strong><input name=\"userfile\" type=\"file\">";
150        echo "<br><br /><strong>"._T('csvspip:nom_groupe_redac')."</strong><input type=\"text\" name=\"groupe_redacs\" value=\"REDACTEURS\">";
151        echo "<br><br /><strong>"._T('csvspip:nom_groupe_admin')."</strong><input type=\"text\" name=\"groupe_admins\" value=\"ADMINS\">";
152        echo "<br><br /><strong>"._T('csvspip:nom_groupe_visit')."</strong><input type=\"text\" name=\"groupe_visits\" value=\"VISITEURS\">";
153        echo "<br><span style=\"font-size: 10px;\">"._T('csvspip:help_nom_groupe_admin')."</span>";             
154        echo fin_cadre_couleur(true);
155
156        echo debut_cadre_couleur("mot-cle-24.gif", true, "", _T('csvspip:options_maj'));
157        echo "<strong>"._T('csvspip:maj_utils')."</strong>";
158        echo _T('csvspip:oui')."<input type=\"radio\" name=\"maj_gene\" value=\"1\"  checked=\"checked\" onClick=\"aff_masq('maj_avance', 1);\">"; 
159        echo "<input type=\"radio\" name=\"maj_gene\" value=\"0\" onClick=\"aff_masq('maj_avance', 0);\">"._T('csvspip:non');
160        echo "<div id=\"maj_avance\" class=\"ss_cadre\">";
161        echo "<br /><strong>"._T('csvspip:maj_mdp')."</strong>"; 
162        echo _T('csvspip:oui')."<input type=\"radio\" name=\"maj_mdp\" value=\"1\"  checked=\"checked\">"; 
163        echo "<input type=\"radio\" name=\"maj_mdp\" value=\"0\">"._T('csvspip:non');
164
165        echo "<br /><br /><img src=\"".find_in_path('images/admin-12.gif')."\" alt=\"admins uniquement\"> <strong>"._T('csvspip:maj_rub_adm')."</strong>";
166        echo "<input type=\"radio\" name=\"maj_rub_adm\" value=\"1\" checked=\"checked\">"._T('csvspip:oui');   
167        echo "<input type=\"radio\" name=\"maj_rub_adm\" value=\"0\">"._T('csvspip:non'); 
168        echo "<br /><span style=\"font-size: 10px;\">"._T('csvspip:help_maj_rub_adm')."</span><br>"; 
169        echo "</div>";                           
170        echo fin_cadre_couleur(true);
171
172        echo debut_cadre_couleur(_DIR_PLUGIN_CSV2SPIP."/img_pack/supprimer_utilisateurs-24.gif", true, "", _T('csvspip:suppr_absents'));
173        echo "<strong>"._T('csvspip:suppr_utilis')."</strong><ul style=\"padding: 0px; margin: 0px 0px 0px 30px;\">";
174        echo "<li style=\"list-style-image: url('".find_in_path('images/redac-12.gif')."');\">"._T('csvspip:suppr_redac')."";
175        echo _T('csvspip:oui')."<input type=\"radio\" name=\"eff_redac\" value=\"1\" onClick=\"aff_masq('archi', 1);\">";
176        echo "<input type=\"radio\" name=\"eff_redac\" value=\"0\" checked=\"checked\" onClick=\"if (document.csv2spip.eff_admin[1].checked == true) { aff_masq('archi', 0) };\">"._T('csvspip:non');
177        echo "</li>";
178        echo "<li style=\"list-style-image: url('".find_in_path('images/admin-12.gif')."');\">"._T('csvspip:suppr_admin');
179        echo _T('csvspip:oui')."<input type=\"radio\" name=\"eff_admin\" value=\"1\" onClick=\"aff_masq('archi', 1);\">";
180        echo "<input type=\"radio\" name=\"eff_admin\" value=\"0\" checked=\"checked\" onClick=\"if (document.csv2spip.eff_redac[1].checked == true) { aff_masq('archi', 0) };\">"._T('csvspip:non'); 
181        echo "</li>";
182        echo "<li style=\"list-style-image: url('".find_in_path('images/visit-12.gif')."');\">"._T('csvspip:suppr_visit')."";
183        echo _T('csvspip:oui')."<input type=\"radio\" name=\"eff_visit\" value=\"1\" >";
184        echo "<input type=\"radio\" name=\"eff_visit\" value=\"0\" checked=\"checked\" >"._T('csvspip:non');
185        echo "</li>";                           
186        echo "</ul><span style=\"font-size: 10px;\">"._T('csvspip:help_suppr_redac')."</span><br>"; 
187        echo "<div style=\"display: none\" id=\"archi\" class=\"ss_cadre\"><br /><strong>"._T('csvspip:suprr_articles')."</strong>";
188        echo _T('csvspip:oui')."<input type=\"radio\" name=\"supprimer_articles\" value=\"1\" onClick=\"aff_masq('transfert', 0);\">";   
189        echo "<input type=\"radio\" name=\"supprimer_articles\" value=\"0\" checked=\"checked\" onClick=\"aff_masq('transfert', 1);\">"._T('csvspip:non'); 
190        echo "<div id=\"transfert\" class=\"ss_cadre\"><br><strong>"._T('csvspip:transfert_archive')."</strong>";
191        echo "<input type=\"radio\" name=\"archivage\" value=\"1\" checked=\"checked\" onClick=\"aff_masq('rub_transfert', 1);\">"._T('csvspip:oui');   
192        echo "<input type=\"radio\" name=\"archivage\" value=\"0\" onClick=\"aff_masq('rub_transfert', 0);\">"._T('csvspip:non'); 
193        echo "<div id=\"rub_transfert\" class=\"ss_cadre\"><br>";
194        $sql9 = sql_query("SELECT COUNT(*) AS nb_rubriques FROM spip_rubriques");
195        $data9 = sql_fetch($sql9);
196        $nb_rubriques = $data9['nb_rubriques'];
197        $annee = date("Y"); 
198        echo "<strong>"._T('csvspip:nom_rubrique_archives')."</strong>";
199        echo "<input type=\"text\" name=\"rub_archivage\" value=\"Archives annee ".($annee - 1).'-'.$annee."\" style=\"width: 200px;\">";
200        echo "";
201        if ($nb_rubriques > 0) {               
202                echo"<br><br><strong>"._T('csvspip:choix_parent_archive')."</strong>"; 
203                $sql10 = sql_query("SELECT id_rubrique, titre, id_secteur FROM spip_rubriques ORDER BY titre");
204                echo "<select name=\"rub_parent_archivage\">";
205                echo "<option value=\"0,0\" selected=\"selected\">"._T('csvspip:racine_site')."</option>";
206                       
207                while ($data10 = sql_fetch($sql10)) { 
208                        echo "<option value=\"".$data10['id_rubrique'].",".$data10['id_secteur']."\">".$data10['titre']."</option>";
209                }                                                                               
210                echo "</select><br>";
211        }
212        else { 
213                echo "<br>"._T('csvspip:pas_de_rubriques')."<br>";
214        }               
215        echo "</div></div>";
216        echo "<br><br><strong>"._T('csvspip:traitement_supprimes')."</strong><br>";
217        echo "<input type=\"radio\" name=\"auteurs_poubelle\" value=\"1\">"._T('csvspip:auteurs_poubelle')."  <br>"; 
218        echo "<input type=\"radio\" name=\"auteurs_poubelle\" value=\"0\" checked=\"checked\">"._T('csvspip:attribuer_articles'); 
219        echo "<input type=\"text\" name=\"nom_auteur_archives\" value=\"archives".($annee - 1)."-".$annee."\">"._T('csvspip:passe_egale_login');
220        echo "</div>";
221        echo fin_cadre_couleur(true);
222
223        echo debut_cadre_couleur("rubrique-24.gif", true, "", _T('csvspip:creation_rubriques'));
224        //                       echo "<h3>"._T('csvspip:creation_rubriques')."</h3>";
225        echo "<strong>"._T('csvspip:rubrique_ss_groupes')."</strong>"; 
226        echo _T('csvspip:oui')."<input type=\"radio\" name=\"rub_prof\" value=\"1\" checked=\"checked\" onClick=\"aff_masq('rub_adm', 1);\">";   
227        echo "<input type=\"radio\" name=\"rub_prof\" value=\"0\" onClick=\"aff_masq('rub_adm', 0);\">"._T('csvspip:non');
228        echo "<br><span style=\"font-size: 10px;\">"._T('csvspip:profs_admins')."</span>";
229        echo "<br /><div id=\"rub_adm\" class=\"ss_cadre\">";
230        if ($nb_rubriques > 0) {               
231                echo "<br /><strong>"._T('csvspip:choix_parent_rubriques')."</strong>"; 
232                echo "<select name=\"rub_parent\">";
233                echo "<option value=\"0,0\" selected=\"selected\">"._T('csvspip:racine_site')."</option>";
234                $sql10 = sql_query("SELECT id_rubrique, titre, id_secteur FROM spip_rubriques ORDER BY titre");
235                while ($data10 = sql_fetch($sql10)) { 
236                        echo "<option value=\"".$data10['id_rubrique'].",".$data10['id_secteur']."\">".$data10['titre']."</option>";
237                }
238                echo "</select>";
239        }
240        else { 
241                echo "<br>"._T('csvspip:pas_de_rubriques');
242        }               
243        echo "<br /><br /><strong>"._T('csvspip:article_rubrique')."</strong>"; 
244        echo _T('csvspip:oui')."<input type=\"radio\" name=\"art_rub\" value=\"1\">";   
245        echo "<input type=\"radio\" name=\"art_rub\" value=\"0\" checked=\"checked\">"._T('csvspip:non');
246        echo "<br><span style=\"font-size: 10px;\">"._T('csvspip:help_articles')."</span>";
247        echo "<br /></div>";
248        echo "<br /><div id=\"rub_adm_defaut\">";
249        echo "<strong>"._T('csvspip:choix_rub_admin_defaut')."</strong>";
250        echo "<input type=\"text\" name=\"rub_admin_defaut\" value=\""._T('csvspip:nom_rub_admin_defaut')."\" style=\"width: 200px;\">";
251        echo "<br><span style=\"font-size: 10px;\">"._T('csvspip:help_rub_admin_defaut')."</span>";
252        if ($nb_rubriques > 0) {
253                echo "<br/><br/><strong>"._T('csvspip:choix_parent_rub_admin_defaut')."</strong>"; 
254                echo "<select name=\"rub_parent_admin_defaut\">";
255                echo "<option value=\"0,0\" selected=\"selected\">"._T('csvspip:racine_site')."</option>";
256                $sql108 = sql_query("SELECT id_rubrique, titre, id_secteur FROM spip_rubriques ORDER BY titre");
257                while ($data108 = sql_fetch($sql108)) { 
258                        echo "<option value=\"".$data108['id_rubrique'].",".$data108['id_secteur']."\">".$data108['titre']."</option>";
259                }       
260                echo "</select><br />";
261        }
262        else { 
263                echo "<br>"._T('csvspip:pas_de_rubriques')."<br>";
264        }               
265        echo "</div>"; 
266        echo fin_cadre_couleur(true);
267
268        echo "<input type=\"submit\" value=\""._T('csvspip:lancer')."\" style=\"background-color: #FF8000; font-weight: bold; font-size: 14px;\">";
269        echo "</form><br><br />";
270
271        echo debut_cadre_trait_couleur("fiche-perso-24.gif", true, "", _T('csvspip:titre_help')); 
272        // inclure le fichier help de la langue
273        $code_langue = (!$GLOBALS['spip_lang'] ? lire_meta("langue_site") : $GLOBALS['spip_lang']);
274        if (!find_in_path(_DIR_PLUGIN_CSV2SPIP.'lang/csvspip_help_'.$code_langue.'.php')) $code_langue = 'fr';
275        include(_DIR_PLUGIN_CSV2SPIP.'lang/csvspip_help_'.$code_langue.'.php');
276        echo "<a href=\""._DIR_PLUGIN_CSV2SPIP."tests_csv2spip/csv2spip_modele.csv\">csv2spip_modele.csv</a>";
277        echo fin_cadre_trait_couleur(true);
278           
279}
280                 
281
282// TRAITEMENT DES DONNEES ENVOYEES PAR LE FORMULAIRE DE SAISIE
283
284function csv2spip_etapes()
285{
286        $Tauteurs_rubriques = 'spip_auteurs_rubriques';
287        $Tarticles =  'spip_articles';
288        $Tauteurs_articles = 'spip_auteurs_articles';
289               
290        $err_total = 0;
291
292// étape 3 : si nécessaire création des rubriques pour les admins restreints et des groupes pour accesgroupes
293        $_POST['groupe_admins'] != '' ? $groupe_admins = strtolower($_POST['groupe_admins']) : $groupe_admins = '-1';
294        $_POST['groupe_visits'] != '' ? $groupe_visits = strtolower($_POST['groupe_visits']) : $groupe_visits = '-1';
295        $_POST['groupe_redacs'] != '' ? $groupe_redacs = strtolower($_POST['groupe_redacs']) : $groupe_redacs = '-1';
296        echo debut_cadre_couleur(_LOGO_CSV2SPIP, true, "", _T('csvspip:titre_etape3'));
297       
298// étape 3.1 : création des rubriques pour les admins restreints
299        if ($_POST['rub_prof'] == 1 AND $groupe_admins != '-1') {
300                $Terr_rub = array();
301                $Tres_rub = array();
302                $date_rub_ec = date("Y-m-j H:i:s");
303                $Tch_rub = explode(',', $_POST['rub_parent']);
304                $rubrique_parent = $Tch_rub[0];
305                $secteur = $Tch_rub[1];
306                $sql8 = sql_select('ss_groupe', 'spip_tmp_csv2spip', "LOWER(groupe) = '$groupe_admins' AND ss_groupe != ''", "ss_groupe");
307                if(true) {
308                        while ($data8 = sql_fetch($sql8)) {
309                                $rubrique_ec = $data8['ss_groupe']; 
310                                $sql7 = sql_query("SELECT COUNT(*) AS rub_existe FROM spip_rubriques WHERE titre = '$rubrique_ec' LIMIT 1");
311                                $data7 = sql_fetch($sql7);
312                                if ($data7['rub_existe'] > 0) {
313//print '<br>etape3 : rubrique '.$rubrique_ec.' existe';
314                                        continue;
315                                }
316                                sql_query("INSERT INTO spip_rubriques (id_rubrique, id_parent, titre, id_secteur, statut, date) VALUES ('', '$rubrique_parent', '$rubrique_ec', '$secteur', 'publie', '$date_rub_ec')" );
317                                if (mysql_error() != '') {
318                                        $Terr_rub[] = array('ss_groupe' => $rubrique_ec, 'erreur' => mysql_error());
319                                }
320                                else {
321                                        $Tres_rub[] = $rubrique_ec;
322                                }
323                        }
324                }
325        }               
326        if (count($Terr_rub) > 0) { 
327                echo "<br><span class=\"Cerreur\">"._T('csvspip:err_etape3.1');
328                foreach ($Terr_rub as $er) {
329                        echo "<br>"._T('csvspip:rubrique').$er['ss_groupe']._T('csvspip:erreur').$er['erreur'];
330                }
331                echo "</span>";
332                $err_total ++;
333        }               
334        else {
335                echo "<br>"._T('csvspip:ok_etape3.1_debut').count($Tres_rub)._T('csvspip:ok_etape3.1_fin')."<br>";
336        }
337       
338        // gestion de la rubrique par défaut des admins restreints
339        if ($groupe_admins != '-1') {
340           // création de la rubrique par défaut au besoin
341                $where = ($_POST['rub_prof'] == 0) ? '' : " AND ss_groupe = ''";
342                if (sql_countsel('spip_tmp_csv2spip', "LOWER(groupe) = '$groupe_admins'$where")) {
343                        $date_rub_defaut = date("Y-m-j H:i:s");
344                        $Tch_rub_defaut = explode(',', $_POST['rub_parent_admin_defaut']);
345                        $rubrique_parent_defaut = $Tch_rub_defaut[0];
346                        $secteur_defaut = $Tch_rub_defaut[1];
347                        $rubrique_defaut = ($_POST['rub_admin_defaut'] != '' ? $_POST['rub_admin_defaut'] : _T('csvspip:nom_rub_admin_defaut') );
348                        $sq21 = sql_query("SELECT COUNT(*) AS rub_existe FROM spip_rubriques WHERE titre = '$rubrique_defaut' LIMIT 1");
349                        $rows21 = sql_fetch($sq21);
350                        if ($rows21['rub_existe'] < 1) {
351                                sql_query("INSERT INTO spip_rubriques (id_rubrique, id_parent, titre, id_secteur, statut, date)
352                                                        VALUES ('', '$rubrique_parent_defaut', '$rubrique_defaut', '$secteur_defaut', 'prive', '$date_rub_defaut')" );
353                                if (mysql_error() != '') {
354                                        echo "<br><span class=\"Cerreur\">"._T('csvspip:err_cree_rub_defaut').mysql_error()."</span>";
355                                        $err_total ++;
356                                }
357                                else {
358                                        echo "<br>"._T('csvspip:ok_cree_rub_defaut').$rubrique_defaut."<br />";
359                                        $id_rub_admin_defaut = mysql_insert_id();
360                                }
361                        }
362                        else {
363                                $sql1001 = sql_query("SELECT id_rubrique FROM spip_rubriques WHERE titre = '$rubrique_defaut' LIMIT 1");
364                                $rows1001 = sql_fetch($sql1001);
365                                $id_rub_admin_defaut = $rows1001['id_rubrique'];
366                        }
367                }
368        }
369        echo fin_cadre_couleur(true);
370       
371// étape 4 : intégration des rédacteurs, des visiteurs et des administrateurs                                                   
372        // redacteurs
373        $Tres_nvx = array();
374        $Terr_nvx = array();
375        $Tres_maj = array();
376        $Terr_maj = array();
377        $Tres_eff = array();
378        $Terr_eff = array();
379        $Tres_poub = array();
380        $Terr_poub = array();
381        $TresR_ss_grpe = array();
382        $TerrR_ss_grpe = array();
383        $TerrR_eff_accesgroupes = array();
384       
385        // admins
386        $TresA_nvx = array();
387        $TerrA_nvx = array();
388        $TresA_maj = array();
389        $TerrA_maj = array();
390        $TresA_eff = array();
391        $TerrA_eff = array();
392        $TresA_ss_grpe = array();
393        $TerrA_ss_grpe = array();
394        $TerrA_eff_accesgroupes = array();
395        $TerrA_eff_rub_admins = array();
396       
397        // visiteurs
398        $TresV_nvx = array();
399        $TerrV_nvx = array();
400        $TresV_maj = array();
401        $TerrV_maj = array();
402        $TresV_eff = array();
403        $TerrV_eff = array();
404        $TresV_ss_grpe = array();
405        $TerrV_ss_grpe = array();
406        $TerrV_eff_accesgroupes = array();
407       
408        // communs
409        $Tres_maj_grpacces = array();
410        $Terr_maj_grpacces = array();
411        $Tres_maj_rub_admin = array();
412        $Terr_maj_rub_admin = array();
413       
414        include_spip('action/editer_auteur');
415
416        // LA boucle : gère 1 à 1 les utilisateurs de spip_tmp_csv2spip en fonction des options => TOUS !
417        $sql157 = sql_select('*', "spip_tmp_csv2spip");
418        while ($data157 = sql_fetch($sql157)) {
419//              $champs = $data157;
420                $champs = array();
421echo '<br>data157: <pre>';
422var_dump($data157);
423echo '</pre>';
424                $groupe = strtolower($data157['groupe']);
425                $ss_groupe = $data157['ss_groupe'];
426                $login = $data157['login'];
427
428/*
429                unset($champs['id']);
430                unset($champs['id_spip']);
431                unset($champs['nom']);
432                unset($champs['ss_groupe']);
433                unset($champs['groupe']);
434                unset($champs['prenom']);
435*/             
436                $champs['pass'] = csv2spip_crypt_pass($data157['pass']);
437        $champs['login'] = $data157['login'];
438        $nom = ($data157['nom'] == '' ? $data157['login'] : $data157['nom']);
439echo '<br>login: '.$login.' nom157: |'.$data157['nom'].'| nom: '.$nom;       
440                $champs['nom'] = strtoupper($nom).' '.ucfirst(strtolower($data157['prenom']));
441                $champs['statut'] = ($groupe == $groupe_admins)  ?'0minirezo' : (($groupe != $groupe_visits) ?  '1comite' : '6forum');
442//              $champs['alea_actuel'] = '';
443//              $champs['alea_futur'] = '';
444                $champs['bio'] = $data157['bio'];
445
446                $id_spip = sql_getfetsel('id_auteur', 'spip_auteurs', "LOWER(login) = " . sql_quote(strtolower($login)));
447               
448        // 4.1 : l'utilisateur n'est pas inscrit dans la base spip_auteurs
449                if (!$id_spip) {
450/*                  $id_spip = insert_auteur('spip_auteurs');
451                        auteurs_set($id_spip, $champs);
452                        if ($id_spip) {
453*/
454// KISS: inserer l'auteur directement
455                    if ($id_spip = sql_insertq('spip_auteurs', $champs)) {
456                                // insertion de l'id_spip dans la base tmp
457                                sql_updateq('spip_tmp_csv2spip', array('id_spip' => $id_spip), "id=" . $data157['id']);
458                        $groupe != $groupe_admins ? ($groupe != $groupe_visits ? $Tres_nvx[] = $login: $TresV_nvx[] = $login) : $TresA_nvx[] = $login;
459                    }
460                    else {
461                                $groupe != $groupe_admins ? ($groupe != $groupe_visits ? $Terr_nvx[] = array('login' => $login, 'erreur' => mysql_error()) : $TerrV_nvx[] = array('login' => $login, 'erreur' => mysql_error()) ) :  $TerrA_nvx[] = array('login' => $login, 'erreur' => mysql_error());
462                }
463                }
464                else {
465                       
466// 4.2 : l'utilisateur est déja inscrit dans la base spip_auteurs
467                        sql_updateq('spip_tmp_csv2spip', array('id_spip' => $id_spip), "id=" . $data157['id']);
468
469                        // faut il faire la maj des existants ?
470                        if ($_POST['maj_gene'] == 1) {
471                               
472// 4.2.1 faire la maj des infos perso si nécessaire
473                                if ($_POST['maj_mdp'] == 1) {
474                                        sql_updateq('spip_auteurs', $champs, "id_auteur = $id_spip");
475                                        if (mysql_error() == '') {
476                                                $groupe != $groupe_admins ? ($groupe != $groupe_visits ? $Tres_maj[] = $login : $TresV_maj[] = $login) : $TresA_maj[] = $login;
477                                        }
478                                        else {
479                                                $groupe != $groupe_admins ? ($groupe != $groupe_visits ? $Terr_maj[] = array('login' => $login, 'erreur' => mysql_error()) : $TerrV_maj[] = array('login' => $login, 'erreur' => mysql_error())) : $TerrA_maj[] = array('login' => $login, 'erreur' => mysql_error());
480                                        }
481                                }
482
483// 4.2.3 suppression des droits sur les rubriques administrées si nécessaire
484                                if ($_POST['maj_rub_adm'] == 1 AND $statut == '0minirezo') {
485                                        sql_query("DELETE FROM $Tauteurs_rubriques WHERE id_auteur = $id_spip");
486                                        if (mysql_error() == '') {
487                                                $Tres_maj_rub_admin[] = $login;
488                                        }
489                                        else {
490                                                $Terr_maj_rub_admin[] = array('login' => $login, 'erreur' => mysql_error());
491                                        }
492                                }
493                        }
494        }
495        }  // fin du while traitant les comptes 1 à 1
496
497        // Mettre a jour les fichiers .htpasswd et .htpasswd-admin
498        include_spip("inc/acces");
499        ecrire_acces();
500
501// 4.4 : gestion des suppressions
502    // VERSION 2.3 de effacer les absents
503        $ch_maj = 0;
504        $eff_absv = 0;
505        $eff_absr = 0;
506        $eff_absa = 0;
507        if ($_POST['eff_visit'] == 1) {
508        //                                       $ch_maj = 1;
509                $eff_absv = 1;
510        }
511        if ($_POST['eff_redac'] == 1) {
512                $ch_maj = 1;
513                $eff_absr = 1;
514        }
515        if ($_POST['eff_admin'] == 1) {
516                $ch_maj = 1;
517                $eff_absa = 1;
518        }
519
520    // paramétrage auteur et dossier d'archive
521        if ($ch_maj !== 0) {
522                  // si auteurs supprimés (pas de poubelle), récupérer l'id du rédacteur affecté aux archives + si nécessaire, créer cet auteur (groupe = poubelle)
523                if ($_POST['auteurs_poubelle'] != 1) {
524                        $nom_auteur_archives = $_POST['nom_auteur_archives'];
525                        $sql615 = sql_query("SELECT id_auteur FROM spip_auteurs WHERE login = '$nom_auteur_archives' LIMIT 1");
526                        if (sql_count($sql615) > 0) {
527                                $data615 = sql_fetch($sql615);
528                                $id_auteur_archives = $data615['id_auteur'];
529                        }
530                        else {
531                                sql_query("INSERT INTO spip_auteurs (id_auteur, nom, login, pass, statut) VALUES ('', '$nom_auteur_archives', '$nom_auteur_archives', '$nom_auteur_archives', '5poubelle')");
532                                $id_auteur_archives = mysql_insert_id();
533                        }
534                        $nom_rub_archivesR = $nom_auteur_archives;
535                        $id_rub_parent_archivesA = $nom_auteur_archives;
536                        $id_rub_parent_archivesR = $id_auteur_archives;
537                        $nom_rub_archivesA = $nom_auteur_archives;
538                        $id_auteur_archivesA = $id_auteur_archives;
539                        $nom_auteur_archivesR = $nom_auteur_archives;
540                        $id_auteur_archivesR = $id_auteur_archives;
541                               
542                // si archivage, récup de l'id de la rubrique archive + si nécessaire, créer la rubrique                                               
543                        if ($_POST['supprimer_articles'] != 1 AND $_POST['archivage'] != 0) {
544                                $supprimer_articlesr = 0;
545                                $supprimer_articlesa = 0;
546                                $archivager =1;
547                                $archivagea = 1;
548                                         
549                                $nom_rub_archives = $_POST['rub_archivage'];
550                        // $_POST['rub_parent_archivage'] de la forme : "id_rubrique,id_secteur"
551                                $Tids_parent_rub_archives = explode(',', $_POST['rub_parent_archivage']);
552                                $id_rub_parent_archives = $Tids_parent_rub_archives[0];
553                                $id_sect_parent_archives = $Tids_parent_rub_archives[1];
554                                $date_rub_archives = date("Y-m-j H:i:s");
555                                $sql613 = sql_query("SELECT id_rubrique, id_secteur FROM spip_rubriques WHERE titre = '$nom_rub_archives' AND id_parent = '$id_rub_parent_archives' LIMIT 1");
556                                if (sql_count($sql613) > 0) {
557                                        $data613 = sql_fetch($sql613);
558                                        $id_rub_archives = $data613['id_rubrique'];
559                                }
560                                else {
561                                        sql_query("INSERT INTO spip_rubriques (id_rubrique, id_parent, titre, id_secteur, statut, date) VALUES ('', '$id_rub_parent_archives', '$nom_rub_archives', '$id_sect_parent_archives', 'publie', '$date_rub_archives')" );
562                                        $id_rub_archives = mysql_insert_id();
563                                }
564                        }
565                }
566        }
567                                                                               
568// 4.4.1 : traitement des visiteurs actuels de la base spip_auteurs => si effacer les absV = OK
569        if ($eff_absv == 1) {
570                $sql1471 = sql_query("SELECT COUNT(*) AS nb_redacsV FROM spip_auteurs WHERE statut = '6forum'");
571                $data1471 = sql_fetch($sql1471);
572                if ($data1471['nb_redacsV'] > 0) {
573                  // pas de poubelle pour les visiteurs => suppression puisque pas d'articles
574                        $sql1591 = sql_query("SELECT id_auteur, login FROM spip_auteurs WHERE statut = '6forum'");
575                        while ($data1591 = sql_fetch($sql1591)) {
576                                $login_sp = strtolower($data1591['login']);
577                                $id_auteur_ec = $data1591['id_auteur'];
578                                if (!sql_countsel('spip_tmp_csv2spip',"LOWER(nom) = '$login_sp'")) {
579         // l'utilisateur n'est pas dans le fichier CSV importé => le supprimer
580                                        sql_query("DELETE FROM spip_auteurs WHERE id_auteur = '$id_auteur_ec' AND statut = '6forum' LIMIT 1");
581                                        if (mysql_error() == 0) {
582                                                $TresV_eff[] = $login;
583                                        }
584                                        else {
585                                                $TerrV_eff[] = array('id_auteur' => $id_auteur_ec, 'erreur' => mysql_error());
586                                        }
587                                }
588                        }
589                  // optimisation de la table après les effacements
590                        sql_query("OPTIMIZE TABLE spip_auteurs");
591                }       
592        }
593       
594// 4.4.2 : traitement des rédacteurs actuels de la base spip_auteurs => si effacer les absents redac = OK
595        if ($eff_absr == 1) {
596                $sql147 = sql_query("SELECT COUNT(*) AS nb_redacsR FROM spip_auteurs WHERE statut = '1comite'");
597                $data147 = sql_fetch($sql147);
598                if ($data147['nb_redacsR'] > 0) {
599                  // si archivage, récup de l'id de la rubrique archive + si nécessaire, créer la rubrique                                             
600                        if ($supprimer_articlesr != 1 AND $archivager != 0) {
601                                $nom_rub_archivesR = $rub_archivager;
602                                $sql613 = sql_query("SELECT id_rubrique, id_secteur FROM spip_rubriques WHERE titre = '$nom_rub_archivesR' AND id_parent = '$id_rub_parent_archivesR' LIMIT 1");
603                                if (sql_count($sql613) > 0) {
604                                        $data613 = sql_fetch($sql613);
605                                        $id_rub_archivesR = $data613['id_rubrique'];
606                                }
607                                else {
608                                        sql_query("INSERT INTO spip_rubriques (id_rubrique, id_parent, titre, id_secteur, statut, date) VALUES ('', '$id_rub_parent_archivesR', '$nom_rub_archivesR', '$id_sect_parent_archivesR', 'publie', '$date_rub_archivesR')" );
609                                        $id_rub_archivesR = mysql_insert_id();
610                                }
611                        }
612                        $sql159 = sql_query("SELECT id_auteur, login FROM spip_auteurs WHERE statut = '1comite' AND bio != 'archive'");
613                        $cteur_articles_deplacesR = 0;
614                        $cteur_articles_supprimesR = 0;
615                        $cteur_articles_modif_auteurR = 0;
616                        while ($data159 = sql_fetch($sql159)) {
617                        $login_sp = strtolower($data159['login']);
618                                $id_auteur_ec = $data159['id_auteur'];
619                          // l'utilisateur n'est pas dans le fichier CSV importé => le supprimer
620                        if (sql_countsel('spip_tmp_csv2spip', "nom = '$login_sp'")) {
621                                  // traitement éventuel des articles de l'auteur à supprimer
622                                        $sql757 = sql_query("SELECT COUNT(*) AS nb_articles_auteur FROM $Tauteurs_articles WHERE id_auteur = '$id_auteur_ec'");
623                                        $data757 = sql_fetch($sql757);
624//print '<br><br>id_auteur = '.$id_auteur_ec;
625//print '<br>nb_articles_auteur = '.$data757['nb_articles_auteur'];
626//print '<br>$supprimer_articlesr = '.$supprimer_articlesr;
627//print '<br>$archivager = '.$archivager;
628                                        if ($data757['nb_articles_auteur'] > 0) {
629                                                if ($supprimer_articlesr != 1) {
630                                                        if ($archivager != 0) {
631                                                                $sql612 = sql_query("SELECT id_article FROM $Tauteurs_articles WHERE id_auteur = $id_auteur_ec");
632                                                                if (sql_count($sql612) > 0) {
633//print '<br>départ UPDATE';
634                                                                        while ($data612 = sql_fetch($sql612)) {
635                                                                                $id_article_ec = $data612['id_article'];
636                                                                                sql_updateq("$Tarticles", array("id_rubrique" => '$id_rub_archivesR', "id_secteur" => '$id_sect_parent_archivesR'), "id_article = '$id_article_ec' LIMIT 1");
637                                                                                $cteur_articles_deplacesR ++;
638                                                                        }
639                                                                } 
640                                                                if ($auteurs_poubeller != 1) {
641                                                                        sql_updateq("$Tauteurs_articles", array("id_auteur" => '$id_auteur_archivesR'), "id_auteur = '$id_auteur_ec'");
642                                                                }                                                                                                                       
643                                                        }
644                                                }
645                                                else {
646                                                        $sql756 = sql_query("SELECT id_article FROM $Tauteurs_articles WHERE id_auteur = '$id_auteur_ec'");
647//print '<br>départ DELETE';
648                                                        while ($data756 = sql_fetch($sql756)) {
649                                                                $id_article_a_effac = $data756['id_article'];
650                                                                sql_query("DELETE FROM $Tarticles WHERE id_article = '$id_article_a_effac' LIMIT 1");
651                                                                $cteur_articles_supprimesR ++;
652                                                        }
653                                                        sql_query("DELETE FROM $Tauteurs_articles WHERE id_auteur = '$id_auteur_ec'");
654                                                }
655                                        }
656                                  // traitement des auteurs à effacer                                                                                           
657                                        if ($auteurs_poubeller != 1) {
658                                                sql_query("DELETE FROM spip_auteurs WHERE id_auteur = '$id_auteur_ec' AND statut = '1comite' LIMIT 1");
659                                                if (mysql_error() == 0) {
660                                                        $TresR_eff[] = $login;
661                                                }
662                                                else {
663                                                        $TerrR_eff[] = array('id_auteur' => $id_auteur_ec, 'erreur' => mysql_error());
664                                                }
665                                        }
666                                        else {
667                                                sql_updateq("spip_auteurs", array("statut" => '5poubelle'), "id_auteur = '$id_auteur_ec' LIMIT 1");
668                                                if (mysql_error() == 0) {
669                                                        $TresR_poub[] = $id_auteur_ec;
670                                                }
671                                                else {
672                                                        $TerrR_poub[] = array('id_auteur' => $id_auteur_ec, 'erreur' => mysql_error());
673                                                }
674                                        }
675                                }
676                        }
677                  // optimisation de la table après les effacements
678                        sql_query("OPTIMIZE TABLE spip_auteurs, $Tarticles, $Tauteurs_articles, $Taccesgroupes_auteurs");
679                }               
680        }
681// 4.4.3 : traitement des administrateurs restreints actuels de la base spip_auteurs => si effacer les absA = OK
682        if ($eff_absa == 1) {
683                $sql1473 = sql_query("SELECT COUNT(*) AS nb_redacsA FROM spip_auteurs
684                                                                 LEFT JOIN $Tauteurs_rubriques
685                                                                 ON $Tauteurs_rubriques.id_auteur = spip_auteurs.id_auteur
686                                                                 WHERE statut = '0minirezo'");
687        //echo '<br>mysql_error 1473 = '.mysql_error();
688                $data1473 = sql_fetch($sql1473);
689                if ($data1473['nb_redacsA'] > 0) {
690                        $sql1593 = sql_query("SELECT Tauteurs.id_auteur, Tauteurs.login FROM spip_auteurs AS Tauteurs, $Tauteurs_rubriques AS Tauteurs_rubriques WHERE statut = '0minirezo' AND Tauteurs.id_auteur = Tauteurs_rubriques.id_auteur");
691                        $cteur_articles_deplacesA = 0;
692                        $cteur_articles_supprimesA = 0;
693                        $cteur_articles_modif_auteurA = 0;
694                        while ($data1593 = sql_fetch($sql1593)) {
695                                $login_sp = strtolower($data1593['login']);
696                                $id_auteur_ec = $data1593['id_auteur'];
697                               
698        // l'utilisateur n'est pas dans le fichier CSV importé => le supprimer
699                                if (!sql_countsel('spip_tmp_csv2spip', "nom = '$login_sp'")) {
700                                  // traitement éventuel des articles de l'admin à supprimer
701                                        $sql7573 = sql_query("SELECT COUNT(*) AS nb_articles_auteur FROM $Tauteurs_articles WHERE id_auteur = '$id_auteur_ec'");
702                                        $data7573 = sql_fetch($sql7573);
703                                        if ($data7573['nb_articles_auteur'] > 0) {
704                                                if ($supprimer_articlesa != 1) {
705                                                        if ($archivagea != 0) {
706                                                                $sql6123 = sql_query("SELECT id_article FROM $Tauteurs_articles WHERE id_auteur = '$id_auteur_ec'");
707                                                                if (sql_count($sql6123) > 0) {
708                                                                        while ($data6123 = sql_fetch($sql6123)) {
709                                                                                $id_article_ec = $data6123['id_article'];
710                                                                                sql_updateq("$Tarticles", array("id_rubrique" => '$id_rub_archivesA', "id_secteur" => '$id_sect_parent_archivesA'), "id_article = '$id_article_ec' LIMIT 1");
711                                                                                $cteur_articles_deplacesA ++;
712                                                                        }
713                                                                }
714                                                                if ($auteurs_poubellea != 1) {
715                                                                        sql_updateq("$Tauteurs_articles", array("id_auteur" => '$id_auteur_archivesA'), "id_auteur = '$id_auteur_ec'");
716                                                                }                                                                                                                       
717                                                        }
718                                                }
719                                                else {
720                                                        $sql7563 = sql_query("SELECT id_article FROM $Tauteurs_articles WHERE id_auteur = '$id_auteur_ec'");
721                                                        while ($data7563 = sql_fetch($sql7563)) {
722                                                                $id_article_a_effac = $data7563['id_article'];
723                                                                sql_query("DELETE FROM $Tarticles WHERE id_article = '$id_article_a_effac' LIMIT 1");
724                                                                $cteur_articles_supprimesA ++;
725                                                        }
726                                                        sql_query("DELETE FROM $Tauteurs_articles WHERE id_auteur = '$id_auteur_ec'");
727                                                }
728                                        }
729                                        // traitement des admins à effacer                                                                                             
730                                        if ($auteurs_poubellea != 1) {
731                                                sql_query("DELETE FROM spip_auteurs WHERE id_auteur = '$id_auteur_ec' AND statut = '0minirezo' LIMIT 1");
732                                                if (mysql_error() == 0) {
733                                                        $TresA_eff[] = $login;
734
735                                                  // virer l'administation de toutes les rubriques pour cet admin
736                                                        sql_query("DELETE FROM $Tauteurs_rubriques WHERE id_auteur = $id_auteur_ec");
737                                                        if (mysql_error() != '') {
738                                                                $TerrA_eff_rub_admins[] = array('id_auteur' => $id_auteur_ec, 'erreur' => mysql_error());
739                                                        }
740                                                }
741                                                else {
742                                                        $TerrA_eff[] = array('id_auteur' => $id_auteur_ec, 'erreur' => mysql_error());
743                                                }
744                                        }
745                                        else {
746                                                sql_updateq("spip_auteurs", array("statut" => '5poubelle'), "id_auteur = '$id_auteur_ec' LIMIT 1");
747                                                if (mysql_error() == 0) {
748                                                        $TresA_poub[] = $id_auteur_ec;
749                                                }
750                                                else {
751                                                        $TerrA_poub[] = array('id_auteur' => $id_auteur_ec, 'erreur' => mysql_error());
752                                                }
753                                        }
754                                }
755                        }
756                  // optimisation de la table après les effacements
757                        sql_query("OPTIMIZE TABLE spip_auteurs, $Tarticles, $Tauteurs_articles, $Taccesgroupes_auteurs");
758                }
759        }   //   fin effacer les abs (4.4)  V 2.3
760       
761// résultats étape 4
762        echo debut_cadre_couleur(_LOGO_CSV2SPIP, true, "", _T('csvspip:titre_etape4'));
763        echo "<br>"._T('csvspip:etape4.1')."<br>";
764        if (count($TerrV_nvx) > 0) {           
765                echo "<span class=\"Cerreur\">"._T('csvspip:err_visit');
766                foreach ($TerrV_nvx as $Ven) { 
767                        echo _T('csvspip:utilisateur').$Ven['login']._T('csvspip: erreur').$Ven['erreur']."<br>";
768                }
769                echo "</span>";
770                $err_total ++;
771        }
772        else {
773                echo "<br>"._T('csvspip:creation').count($TresV_nvx)._T('csvspip:comptes_visit_ok')."<br>";                                                             
774        }
775        if (count($Terr_nvx) > 0) {             
776                echo "<span class=\"Cerreur\">"._T('csvspip:err_redac');
777                foreach ($Terr_nvx as $en) { 
778                        echo _T('csvspip:utilisateur').$en['login']._T('csvspip:erreur').$en['erreur']."<br>";
779                }                                       
780                echo "</span>";
781                $err_total ++;
782        }
783        else {
784                echo "<br>"._T('csvspip:creation').count($Tres_nvx)._T('csvspip:comptes_redac_ok')."<br>";                                       
785        }
786
787        if (count($TerrA_nvx) > 0) {           
788                echo "<span class=\"Cerreur\">"._T('csvspip:err_admin');
789                foreach ($TerrA_nvx as $Pen) { 
790                        echo _T('csvspip:utilisateur').$Pen['login']._T('csvspip: erreur').$Pen['erreur']."<br>";
791                }
792                echo "</span>";
793                $err_total ++;
794        }
795        else {
796                echo "<br>"._T('csvspip:creation').count($TresA_nvx)._T('csvspip:comptes_admin_ok')."<br>";                                                             
797        }
798       
799// 4.2 résultats maj des existants
800        if ($_POST['maj_gene'] == 1) {
801                echo "<br>"._T('csvspip:etape4.2')."<br>";
802                if ($_POST['maj_mdp'] == 1) {                                   
803                        echo "<br>"._T('csvspip:etape4.2.1')."<br>";
804                        if (count($TerrV_maj) > 0) {
805                                echo "<span class=\"Cerreur\">"._T('csvspip:err_visit');
806                                foreach ($TerrV_maj as $Vem) { 
807                                        echo _T('csvspip:visit').$Vem['login']._T('csvspip: erreur').$Vem['erreur']."<br>";
808                                }               
809                                echo "</span>";
810                                $err_total ++;
811                        }
812                        else {
813                                echo "<br />"._T('csvspip:ok_etape4.2.1').count($TresA_maj)._T('csvspip:comptes_visit_ok')."<br>";
814                        }                                       
815                        if (count($Terr_maj) > 0) {             
816                                echo "<span class=\"Cerreur\">"._T('csvspip:err_redac');
817                                foreach ($Terr_maj as $em) { 
818                                        echo _T('csvspip:redac').$em['login']._T('csvspip: erreur').$em['erreur']."<br>";
819                                }               
820                                echo "</span>";
821                                $err_total ++;
822                        }
823                        else {
824                                echo "<br>"._T('csvspip:ok_etape4.2.1').count($Tres_maj)._T('csvspip:comptes_redac_ok')."<br>";                                                 
825                        } 
826                        if (count($TerrA_maj) > 0) {
827                                echo "<span class=\"Cerreur\">"._T('csvspip:err_admin');
828                                foreach ($TerrA_maj as $Pem) { 
829                                        echo _T('csvspip:admin').$Pem['login']._T('csvspip: erreur').$Pem['erreur']."<br>";
830                                }               
831                                echo "</span>";
832                                $err_total ++;
833                        }
834                        else {
835                                echo "<br />"._T('csvspip:ok_etape4.2.1').count($TresA_maj)._T('csvspip:comptes_admin_ok')."<br>";
836                        }                                       
837                }
838                if ($_POST['maj_grpes_redac'] == 1 OR $_POST['maj_grpes_admin'] == 1 OR $_POST['maj_grpes_visit'] == 1) {
839                        echo "<br>"._T('csvspip:etape4.2.2')."<br>";
840                        if (count($Terr_maj_grpacces) > 0) {
841                                echo "<span class=\"Cerreur\">"._T('csvspip:err_maj_grpacces');
842                                foreach ($Terr_maj_grpacces as $Peg) { 
843                                        echo _T('csvspip:utilisateur').$Peg['login']._T('csvspip: erreur').$Peg['erreur']."<br>";
844                                }               
845                                echo "</span>";
846                                $err_total ++;
847                        }
848                        else {
849                                echo "<br />"._T('csvspip:ok_maj_grpacces').count($Tres_maj_grpacces)._T('csvspip:utilisateurs')."<br>";
850                        }
851                }
852                if ($_POST['maj_rub_adm'] == 1) {
853                        echo "<br>"._T('csvspip:etape4.2.3')."<br>";
854                        if (count($Terr_maj_rub_admin) > 0) {
855                                echo "<span class=\"Cerreur\">"._T('csvspip:err_maj_rub_adm');
856                                foreach ($Terr_maj_rub_admin as $Pera) { 
857                                        echo _T('csvspip:utilisateur').$Pera['login']._T('csvspip: erreur').$Pera['erreur']."<br>";
858                                }               
859                                echo "</span>";
860                                $err_total ++;
861                        }
862                        else {
863                                echo "<br />"._T('csvspip:ok_maj_rub_adm').count($Tres_maj_rub_admin)._T('csvspip:utilisateurs')."<br>";
864                        }
865                }
866        }
867
868// 4.4 résultats effacer les absents
869        if ($eff_absv == 1 OR $eff_absr == 1 OR $eff_absa == 1) {
870                echo "<br />"._T('csvspip:etape4.4')."<br>";
871        }
872 
873        // résultats effacer les visiteurs
874        if ($eff_absv == 1) {                                   
875                echo "<br />"._T('csvspip:etape4.4.1')."<br>";
876                if (count($TerrV_eff) > 0 OR count($TerrV_poub) > 0) { 
877                        echo "<span class=\"Cerreur\">"._T('csvspip:err_visit');
878                        foreach ($TerrV_eff as $Vee) {
879                                echo _T('csvspip:visit').$Vee['login']._T('csvspip: erreur').$Vee['erreur'];
880                        }       
881                        $err_total ++;
882                }
883                else { 
884                        echo "<br />"._T('csvspip:suppression_debut').count($TresV_eff)._T('csvspip:comptes_visit_ok')."<br>";
885                }
886        }                                       
887
888  // résultats effacer les redacteurs
889        if ($eff_absr == 1) { 
890                echo "<br />"._T('csvspip:etape4.4.2')."<br>";
891                if (count($TerrR_eff) > 0 OR count($TerrR_poub) >0) {
892                        echo "<span class=\"Cerreur\">"._T('csvspip:suppr_redac');
893                        foreach ($TerrR_eff as $ee) { 
894                                echo '<br/>'._T('csvspip:redac').$ee['login']._T('csvspip: erreur').' '.$ee['erreur'];
895                        }
896                        echo "<span class=\"Cerreur\">"._T('csvspip:redac_poubelle');
897                        foreach ($TerrR_poub as $ep) { 
898                                echo '<br/>'._T('csvspip:redac').$ep['login']._T('csvspip: erreur').' '.$ep['erreur'];
899                        }
900                        $err_total ++;
901                }
902                else { 
903                        echo "<br />"._T('csvspip:suppression_debut').count($TresR_eff)._T('csvspip:comptes_redac_ok')."<br>";
904                        echo "<br />"._T('csvspip:poubelle_debut').count($TresR_poub)._T('csvspip:comptes_redac_ok')."<br>";
905                }
906                if ($archivager != 0) {
907                        echo "<br />"._T('csvspip:archivage_debut').$cteur_articles_deplacesR._T('csvspip:archivage_fin').$nom_rub_archivesR;
908                } 
909                if ($supprimer_articlesr == 1) {
910                        echo "<br />"._T('csvspip:suppression_debut').$cteur_articles_supprimesR._T('csvspip:suppression_fin')."<br>";
911                }
912        }                                       
913
914  // résultats effacer les admins
915        if ($eff_absa == 1) {                   
916                echo "<br />"._T('csvspip:etape4.4.3')."<br>";
917                if (count($TerrA_eff) > 0 OR count($TerrA_poub) >0) {
918                        echo "<span class=\"Cerreur\">"._T('csvspip:suppr_redac');
919                        foreach ($TerrA_eff as $Aee) { 
920                                echo "<br />"._T('csvspip:admin').$Aee['login']._T('csvspip: erreur').' '.$Aee['erreur'];
921                        }
922                        echo "<span class=\"Cerreur\">"._T('csvspip:redac_poubelle');
923                        foreach ($TerrA_poub as $Aep) { 
924                                echo "<br />"._T('csvspip:admin').$Aep['login']._T('csvspip: erreur').' '.$Aep['erreur'];
925                        }
926                        $err_total ++;
927                }
928                else { 
929                        echo "<br />"._T('csvspip:suppression_debut').count($TresA_eff)._T('csvspip:comptes_admin_ok')."<br>";
930                        echo "<br />"._T('csvspip:poubelle_debut').count($TresA_poub)._T('csvspip:comptes_admin_ok')."<br>";
931                }
932                if ($archivagea != 0) {
933                        echo "<br />"._T('csvspip:archivage_debut').$cteur_articles_deplacesA._T('csvspip:archivage_fin').$nom_rub_archivesA;
934                } 
935                if ($supprimer_articlesa == 1) {
936                        echo "<br />"._T('csvspip:suppression_debut').$cteur_articles_supprimesA._T('csvspip:suppression_fin')."<br>";
937                }
938
939                if (count ($TerrA_eff_rub_admins) > 0) {
940                        echo "<span class=\"Cerreur\">"._T('csvspip:suppr_redac');
941                        foreach ($TerrA_eff_rub_admins as $Aer) { 
942                                echo _T('csvspip:err_eff_adm_rub').$Aer['login']._T('csvspip: erreur').$Aer['erreur'];
943                        }
944                        echo "</span>";
945                        $err_total ++;                                                 
946                }
947        }   // fin effacer les absents V 2.3
948        echo fin_cadre_couleur(true);                   
949
950// étape 5 : si nécessaire intégration des admins comme administrateurs restreints de la rubrique de leur sous-groupe
951        //$id_rub_admin_defaut
952        if ($groupe_admins != '-1') {
953                $Terr_adm_rub = array();
954                $Tres_adm_rub = array();
955                $sql54 = sql_select("ss_groupe, nom, id_spip", "spip_tmp_csv2spip", "LOWER(groupe) = '$groupe_admins'");
956                while ($data54 = sql_fetch($sql54)) {
957                        $login_adm_ec = strtolower($data54['nom']);
958                        $id_adm_ec = $data54['id_spip'];
959                        if ($_POST['rub_prof'] == 1) {
960                                if ($data54['ss_groupe'] != '') {
961                                        $ss_grpe_ec = $data54['ss_groupe'];
962                                        $sql55 = sql_query("SELECT id_rubrique FROM spip_rubriques WHERE titre = '$ss_grpe_ec' LIMIT 1");
963                                        $data55 = sql_fetch($sql55);
964                                        $id_rubrique_adm_ec = $data55['id_rubrique'];                                                                                   
965                                }
966                                else {
967                                        $id_rubrique_adm_ec = $id_rub_admin_defaut;
968                                        $ss_grpe_ec = '';
969                                }
970                        }
971                        $sql57 = sql_query("SELECT COUNT(*) AS existe_adm_rub FROM $Tauteurs_rubriques WHERE id_auteur = '$id_adm_ec' AND id_rubrique = '$id_rubrique_adm_ec' LIMIT 1");
972                        $data57 = sql_fetch($sql57);
973                        if ($data57['existe_adm_rub'] == 0) {
974//print '<br>rubrique $ss_grpe_ec = '.$ss_grpe_ec.' $id_rubrique_adm_ec = '.$id_rubrique_adm_ec.'$id_adm_ec = '.$id_adm_ec;                                                             
975                                sql_query("INSERT INTO $Tauteurs_rubriques (id_auteur, id_rubrique) VALUES ('$id_adm_ec', '$id_rubrique_adm_ec')");
976                                if (mysql_error() != '') {
977                                        $Terr_adm_rub[] = array('login' => $login_adm_ec, 'rubrique' => $ss_grpe_ec, 'erreur' => mysql_error());
978                                }
979                                else {
980                                        $Tres_adm_rub[] = $login_adm_ec;
981                                }
982                        }
983                }
984                echo debut_cadre_couleur(_LOGO_CSV2SPIP, true, "", _T('csvspip:titre_etape5'));
985//                                               echo "<h2>"._T('csvspip:titre_etape5')."</h2>";
986                if (count($Terr_adm_rub) > 0) {
987                        echo "<span class=\"Cerreur\">"._T('csvspip:err_admin_rubrique');
988                        foreach ($Terr_adm_rub as $ear) { 
989                                echo _T('csvspip:admin').$ear['login']._T('csvspip:rubrique_').$ear['rubrique']._T('csvspip: erreur').$ear['erreur']."<br>";
990                        }       
991                        echo "</span>";
992                        $err_total ++;
993                }
994                else {
995                        echo 'Attribution d\'une sous-rubrique pour '.count($Tres_adm_rub).' administrateurs restreints = OK<br>';
996                }
997                echo fin_cadre_couleur(true);
998        }
999       
1000// Etape 6 : si nécessaire création d'un article par rubrique                                   
1001        if ($_POST['art_rub'] == 1 AND $_POST['rub_prof'] == 1) {
1002                $Terr_art_rub = array();
1003                $Tres_art_rub = array();
1004                $sql57 = sql_select('ss_groupe, nom', "spip_tmp_csv2spip", "groupe = '$groupe_admins' AND ss_groupe != ''", "ss_groupe");
1005                while ($data57 = sql_fetch($sql57)) {
1006                        $titre_rub_ec = $data57['ss_groupe'];
1007                        $sql58 = sql_query("SELECT id_rubrique, id_parent, id_secteur FROM spip_rubriques WHERE titre = '$titre_rub_ec' AND id_parent = '$rubrique_parent' LIMIT 1");
1008                        $data58 = sql_fetch($sql58);
1009                        $id_rub_ec = $data58['id_rubrique'];
1010                        $id_parent_ec = $data58['id_parent'];
1011                        $id_sect_ec = $data58['id_secteur'];
1012                        $date_ec = date("Y-m-d H:i:s");
1013                        $titre_ec = 'Bienvenue dans la rubrique '.$titre_rub_ec;
1014                        $sql432 = sql_query("SELECT id_article FROM $Tarticles WHERE id_rubrique = '$id_rub_ec' AND titre = '$titre_ec' LIMIT 1");
1015                        if (sql_count($sql432) < 1) {
1016                                $data432 = sql_fetch($sql432);
1017                                sql_query("INSERT INTO $Tarticles (id_article, id_rubrique, id_secteur, titre, date, statut ) VALUES ('', '$id_rub_ec', '$id_sect_ec', '$titre_ec', '$date_ec', 'publie')");
1018                                if (mysql_error() != '') {
1019                                        $Terr_art_rub[] = array('rubrique' => $titre_rub_ec, 'erreur' => mysql_error());
1020                                }
1021                                else {
1022                                        $Tres_art_rub[] = $titre_rub_ec;
1023                                }
1024                        }
1025                }
1026                echo debut_cadre_couleur(_LOGO_CSV2SPIP, true, "", _T('csvspip:titre_etape6'));
1027        //                                               echo "<h3>"._T('csvspip:titre_etape6')."</h3>";
1028                if (count($Terr_art_rub) > 0) {
1029                        echo "<span class=\"Cerreur\">"._T('csvspip:err_article');
1030                        foreach ($Terr_art_rub as $eart) { 
1031                                echo _T('csvspip:rubrique_').$eart['rubrique']._T('csvspip:erreur').$eart['erreur']."<br>";
1032                        }       
1033                        echo "</span>";
1034                        $err_total ++;
1035                }
1036                else {
1037                        echo _T('csvspip:ok_etape6_debut').count($Tres_art_rub)._T('csvspip:ok_etape6_fin')."<br>";
1038                }
1039                echo fin_cadre_couleur(true);
1040        }
1041}
1042
1043?>
Note: See TracBrowser for help on using the repository browser.