csv2spip : gestion des utilisateurs de SPIP à partir de fichiers CSV

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Si vous devez gérer un SPIP avec de très nombreux utilisateurs rédacteurs et/ou administrateurs de rubriques, que de surcroît ces utilisateurs ont un « turn-over » rapide, alors csv2spip est fait pour vous !

Les nouveautés de la version 2.2 sont signalées par un : [v2.2]

Objectifs :

Cette « moulinette » à été conçue pour permettre de gérer les utilisateurs d’un SPIP de collège ou lycée avec les contraintes suivantes :
-  tous les élèves doivent êtres rédacteurs (le système à été testé sur des établissements de + de 1000 élèves et 90 profs).
-  le SPIP doit contenir une rubrique pour chaque discipline de l’établissement (Français, Anglais, Maths...) et tous les profs d’une discipline doivent êtres administrateurs de la rubrique de leur discipline. La création et la gestion des administrateurs de rubrique doit donc être automatisée elle aussi.
-  les élèves restent 3 ou 4 ans dans l’établissement : à chaque rentrée scolaire il faut supprimer les comptes de ceux qui sont partis et créer ceux de nouveaux arrivants. De plus, selon les établissements, les mots de passe des élèves doivent pouvoir êtres modifiés à chaque rentrée scolaire.
-  le login et le mot de passe des élèves et des profs doit être identique à celui qu’ils utilisent pour se logger sur le réseau de leur établissement : ces infos doivent donc êtres récupérées à partir d’une base de donnée indépendante de SPIP [1]
. Pour une compatibilité large, elles seront stockées dans un fichier de type CSV , manipulable avec n’importe quel tableur.
-  contrainte supplémentaire : tous les articles des élèves qui quittent l’établissement (qui seront donc supprimés) doivent êtres archivés afin de sortir de l’arborescence principale du SPIP.

L’idée de base était donc de « squizzer » le gestionnaire des utilisateurs de SPIP (qui se serait tapé le boulot de saisir tous les comptes un par un ???) et d’utiliser une extraction de la base de donnée des utilisateurs sous forme d’un fichier CSV pour ensuite la réinjecter dans les tables MySQL de SPIP en utilisant un script php qui permet de gérer les fonctions supplémentaires (cryptage du mot de passe, création des rubriques, des administrateurs de rubrique, effacement des anciens utilisateurs...).

Téléchargement de la dernière version :

csv2spip version 2.2

version la plus récente : csv2spip_v2.2

Installation à partir du package csv2spip.zip :

0. faites une SAUVEGARDE de votre SPIP AVANT toute utilisation de csv2spip !!! En utilisant cet outil, vous assumez le fait que les choses peuvent mal se passer et que serez peut être obligé de restaurer votre base de donnée...

1. décompactez csv2spip, copiez csv2spip.php, csv2spip_modele.csv et ce fichier (csv2spip_lisez_moi.txt) dans le répertoire /ecrire de votre spip

2. copiez csv2spip-24.gif dans /ecrire/img_pack

3. Faites une copie de sauvegarde de /ecrire/auteurs.php3 (en auteurs-dist.php3 par exemple) puis éditez le fichier auteurs.php3 et ajoutez la ligne ci-dessous juste après la ligne qui doit débuter par le code suivant : icone_horizontale(_T(’icone_informations_personnelles’)... (aux alentours de la ligne 62)

ligne à ajouter :
icone_horizontale(’Importation de rédacteurs depuis un fichier CSV’, ’csv2spip.php’, « csv2spip-24.gif », « csv2spip-24.gif ») ;

bouton supplémentaire dans les raccourcis

Remarque pour les contempteurs de la « non-intrusion » dans le code source de SPIP pour cause de complication des upgrades de versions :
cette étape n’est pas indispensable, elle permet simplement d’ajouter un raccourci vers l’outils csv2spip dans l’interface d’administration des auteurs.
Alternativement vous pouvez vous passer de ce lien en appelant directement le fichier /ecrire/csv2spip.php dans votre navigateur.
A titre d’exemple vous disposez dans ce package d’une copie du fichier auteurs.php3 obtenu (auteurs-modifie_csv2spip.php3) => vous pouvez utiliser directement cette copie pour remplacer votre fichier auteurs.php3 si la version de votre SPIP est 1.8

4. rendez-vous dans /ecrire/auteurs.php3 en administrateur (général ou rubrique) pour avoir accès à l’outil et aux explications sur le format du fichier CSV à utiliser

5. Conditions d’utilisation : cet outil à été testé sur les versions 1.6, 1.7 et 1.8 de SPIP avec un fichier CSV contenant près de 1000 utilisateurs (874 élèves, 98 profs répartis dans 16 disciplines), sur des serveurs apache sous Linux et sous Windows => à priori vous ne devriez pas rencontrer de problèmes si votre fichier CSV est correctement formé...

Utilisation :

L’interface de saisie du fichier CSV propose un certain nombre d’options qui sont directement commentées : voir la capture d’écran ci-dessous :

interface de saisie toutes options visibles

Un système de gestion des erreurs est intégré pour chaque étape et affiche un résumé à la fin du processus. Si tout se passe bien vous devriez obtenir quelque chose d’équivalent à la capture d’écran suivante :

Résumé généré à la fin du processus

Caractéristiques du fichier CSV des utilisateurs à importer :

Ce fichier sera fabriqué à partir du fichier d’extraction des comptes de IACA ou d’un fichier CSV équivalent.
Rappel : un fichier CSV (Comma Separator Value) correspond à un fichier tableur enregistré au format texte. Chaque ligne de ce fichier correspond à une ligne du tableur, les données des cellules de cette ligne étant séparées par un séparateur (ici c’est le «  ; »). On peut donc fabriquer un tel fichier avec n’importe quel tableur (OOo Calc par ex) en sélectionnant le format .csv ou .txt comme format d’enregistrement. Vu qu’il s’agit d’un format texte, il est également possible de le créer/modifier avec un simple éditeur de texte (bloc-note par ex).

[v2.2] Pour éviter les multiples retours d’utilisateurs ayant des problèmes avec la gestion de l’ordre des colonnes du fichier CSV, à partir de la version 2.2 il FAUT ajouter une ligne en tête du fichier qui permet de repérer les données de chaque colonne. Les noms de champs à utiliser dans cette première ligne sont les suivants :

« login »  prenom »  groupe »  ss_groupe »  pass »  email »  pseudo_spip »

L’utilisation de cette première ligne permet de pouvoir mettre les colonnes dans n’importe quel ordre dans le fichier CSV, la moulinette fonctionnera quand même.

Pour le fichier csv2spip_modele.csv fourni comme exemple, cela donne :

login prenom groupe ss_groupe pass email pseudo_spip
Bidule Marcel ELEVES 3D sdzzdbczke mbidule@monprovid.truc Big Marcel
Doe John PROFS Education Civique kfbskfb djohn@ac-Ilederé.fr M. Doe
Duchemin ELEVES olnlnhh
Dugenou Zazie ELEVES danslmetro zaz@oups.chose
etc...

Détails :

  • « login » = obligatoire (le login dans spip). Attention : le login est sensible à la casse (Majuscules/minuscules).
  • « prenom » : facultatif
  • « groupe » = le groupe principal de chaque utilisateur (« PROFS » ou « ELEVES » pour IACA). Ce champ permet de séparer les utilisateurs qui seront rédateurs (groupe ELEVES par défaut mais REDACTEUR sera plus adapté si vous n’avez pas de contraintes liées à l’import d’un fichier venant d’une autre application) de ceux qui seront administrateurs de rubriques (groupe PROFS par défaut). Si ce champs est vide, les utilisateurs seront rédacteurs.
  • « ss_groupe » : le sous-groupe
    • pour les élèves = la classe (facultatif)
    • pour les administrateurs c’est le nom de la rubrique qu’ils administreront. Sous IACA : la discipline pour les profs. Ce champ est obligatoire si on veut la création automatique des rubriques par sous-groupe et que les membres du sous-groupe en soient administrateurs
  • « pass » : le mot de passe (si il est vide, le login sera utilisé comme mot de passe)
  • « email » : facultatif, nécessaire si on souhaite que les utilisateurs aient leur mail déclaré dans SPIP
  • « pseudo_spip » : facultatif, permet de spécifier un nom d’auteur SPIP différent de celui composé automatiquement par « prenom LOGIN »
  • séparateur de champ :  ; (point-virgule)
  • valeurs encadrées par des «  (guillemets doubles) (vous n’êtes pas obligé d’encadrer les valeurs par des » mais si vous voulez éviter les problèmes, c’est plus sûr...)
  • séparateur de ligne : \r\n (sauts de lignes utilisé par OOo Calc par défaut) sous Windows, \n sous Linux (dans les 2 cas c’est le séparateur standard du système, à priori vous n’avez pas à vous en soucier)

Remarques :
On suppose que la gestion des doublons de noms est assurée en amont : si vous créez le fichier csv à la main, vous devrez vous assurer que chaque utilisateur à un nom unique !

Spécifique IACA : si les profs ne sont pas regroupés par discipline dans IACA (en tant que sous-groupes) il faudra éditer le fichier avec un tableur (OOo Calc par ex) pour ajouter celles-ci dans la colonne sous-groupe. En revanche, si les groupes de disciplines sont générés par IACA, il faudra éditer le fichier et faire un « Rechercher / Remplacer » pour supprimer les préfixes « D_ » qui précèdent chaque nom de groupe de profs afin d’éviter que les rubriques de disciplines dans le SPIP n’aient ce préfixe.

modèle de fichier CSV

Un modèle de fichier CSV : csv2spip_modele.csv

Utilisation « autonome » de csv2spip.php

Il est possible d’utiliser csv2spip en tant que fichier autonome (c’est à dire à l’extérieur du répertoire /ecrire du spip) ou en tant que plug-in dans un autre CMS.

Pour cela il faudra éditer le début du fichier csv2spip.php et procéder aux modifications pour activer l’option 1 et définir les paramètres de votre base de donnée, ce qui doit donner un code qui ressemble à ça (exemple pour une installation standard sur un easyphp de test) :

/* csv2spip est un outil pour créer/modifier les rédacteurs et administrateurs restreints d'un SPIP à partir de fichiers CSV
*	 	VERSION : 2.1
*
*	 CONFIGURATION :
*	2 options: csv2spip indépendant OU csv2spip intégré dans le /ecrire du SPIP
*	ATTENTION !!! il y à une ligne à modifier en fonction de l'option en fin de ce fichier !!!
*
* OPTION 1 :  => csv2spip est indépendant des fichier  de SPIP 
*	pour changer d'option :
*	 - déplacez le * / situé après la ligne OPTION 2... pour le mettre après la ligne // FIN OPTION 2
*	 - déplacez le * / situé après la ligne // FIN OPTION 1 pour le mettre juste après cette ligne 
*
*/         // CONFIG : ICI VIENT LE * / POUR L'OPTION 1 ACTIVE 

// PARAMETRES DE CONNECTION A LA BASE SPIP :

  // PARAMETRES A RENSEIGNER 
  $host="127.0.0.1"; // adresse du serveur de base de donnée
  $user="root";	 // login de d'un utilisateur ayant accès à cette table 
  $pwd="";    // mot de passe pour accès à la base
  $base_site = "webtice"; // le nom de la base de donnée contenant les tables spip
  $prefix_tables_SPIP = 'spip';	// le préfixe des tables spip (à modifier si vous l'avez configuré dans inc_version.php3 ou mes_options.php3 lors de l'installation de votre SPIP)

 // FIN PARAMETRES A RENSEIGNER	

	
  global $host;
  global $pwd;
  global $user;
  global $base_site;

  function ak_connect($base) {    				
      $db=mysql_connect($GLOBALS["host"], $GLOBALS["user"], $GLOBALS["pwd"]); 
      mysql_select_db($base,$db);
   }
   ak_connect($base_site);	// !!! ne pas oublier mysql_close();  en fin de chaque page qui lance ce fichier !!!
	
  function fin_page() {	 // fct remplaçant celle de SPIP pour le bas de la page
     print '</body></html>'; 
  } 
?>
<html>
  <head>

    <title> csv2spip : générer automatiquement des comptes dans un SPIP à partir d'un fichier CSV</title>
  </head>
  <body>
<?
// FIN OPTION 1


/* OPTION 2 : INTEGRATION DU FICHIER DE CONFIG DE SPIP
*   => csv2spip intégré dans la partie privée du SPIP
         // CONFIG : ICI VIENT LE * / POUR L'OPTION 2 ACTIVE

  include_once ("inc_version.php3");
  $prefix_tables_SPIP = $table_prefix;	 // $table_prefix définie dans ecrire/inc_version.php3 (qui appelle mes_options.php3 s'il existe)
 
    include ("inc.php3");
    include_ecrire ("inc_acces.php3");
		
    if ($connect_statut != '0minirezo') {	?>
<script language="JavaScript">
  alert("Cet outil est réservé aux administrateurs\nVeuillez vous reconnecter avec un compte adapté";
  document.location.href = "auteurs.php3";
</script>
<?  exit();
  }
  if ($visiteurs == "oui") {

     debut_page(_T('titre_page_auteurs'), "documents", "redacteurs");
     $retour .= '&visiteurs=oui';
  } 
  else {
  debut_page(_T('info_auteurs_par_tri', array('partri' => $partri)),"documents","redacteurs");
    }		 ?>

</center> <!-- ça c'est pour etre OK avec le <center> ouvert en fin inc_presentation.php  -->

<? 	
// FIN OPTION 2		

*/         // CONFIG : ICI VIENT LE * / POUR L'OPTION 1 ACTIVE

// 

/* FIN CONFIGURATION			*/

To do :


-  La gestion des mises à jour des administrateurs de rubriques

Notes

[1csv2spip à été développé dans le cas d’une base utilisateur présente sur un ActiveDirectory Windows 2000/2003 géré par le système IACA (tel que préconisé par la cellule TICE du rectorat de l’académie d’Aix-Marseille). Dans cette situation, le serveur ActiveDirectory (réseau local de l’établissement avec un firewall paranoïaque) ne pouvant communiquer avec le serveur SPIP qui est hébergé sur le serveur académique (réseau internet), il n’est pas possible d’utiliser le mode d’authentification par LDAP de SPIP.

Discussion

5 discussions

  • 2

    bonjour, débutant en spip je ne trouve pas le fichier auteur-mofifié dans le package cela m’aurait bien aidé !!!

    • cy_altern

      désolé mais cette version de csv2spip (spécifique de spip 1.8) n’est plus maintenue depuis fort longtemps vu qu’elle a été remplacée par la version plugin pour être compatible avec spip > 1.8. : voir http://www.spip-contrib.net/Plugin-...
      Méfie toi que si tu essaie d’utiliser cette version avec un spip version 1.9* tu vas avoir des problèmes graves...

    • oui j’ai bien compris le problème mais le truc c’est que j’administre un site un peu modifié qui est sur le spip1.8 et je n’arrive pasà modifier auteurs.php donc je cherche ce fichier « tout fait »

      merci de la mise en garde .... mon autre solution serait de migrer le 1.8 en 1.9 et d’utiliser les plugins mais je n’ai pas envie de tout casser !!!!

      en tout cas merci de ta réponse

    Répondre à ce message

  • 4

    Bonjour,

    Cette « moulinette » est-elle compatible avec Spip 1.9 ? (la modif de auteur.php me donne des erreurs).

    Y a t’il une évolution vers un plugins 1.9 prévue ?

    merci d’avance.

    FabriceC69
    Prof de technologie

    • J’ai réalisé un plugin pour 1.9 qui fait un peu la même chose. Il est dans l’espace privé de spip-contrib en attente de validation : http://www.spip-contrib.net/ecrire/?exec=articles&id_article=1434

    • bonne idée, ceci dit le passage en plugin de csv2spip est le prochain point de ma TO DO...

      Par ailleurs il me semble qu’il n’y a pas totalement doublonnage entre ces 2 contribs puisque la tienne gère TOUS les champs de la table spip_auteurs alors que csv2spip est plutôt orienté sur la génération des rubriques pour les admins restreints et la gestion des « bascules années » (archivage des contenus, mise à jour des auteurs..)

      Si ça t’intéresse, je peux mettre sur la zone les développements en cours de la version 3.0 qui donnera une foultitude de possibilités (restriction des admins pouvant utiliser csv2spip, mise à jour des admins restreints, intégration de données par auteurs dans d’autres tables...) mais je te préviens, c’est 4 000 lignes de code en cours de débogage... :-)

      Dans l’idée, on pourrait peut être regrouper nos efforts pour ne présenter qu’un seul plugin destiné à intégrer les auteurs en masse...

    • Ma contribution est en effet beaucoup plus basique que la tienne et je pense donc aussi qu’elles sont complémentaires. A moins que dans ta todo list pour le passage en 1.9 tu intégres une fonction de « création simplifiée » qui permettrait de fusionner « l’esprit » de nos deux plugins.

      Le plus simple pourrait-être, par exemple, d’intégrer l’idée de mon plugin dans un sous menu de ton plugin ?

      à bientôt ;)

    Répondre à ce message

  • 1

    Bonjour,
    Est-il possible de donner à un administrateur plusieurs sous rubrique à administrer ?
    Par exemple, sa rubrique disciplinaire + la rubrique calendrier + la rubrique voyage ...

    • En l’état actuel : non, pas automatiquement lors de la création des comptes par csv2spip. En effet la rubrique attribuée à un admin restreint correspond au champ « ss-groupe » de l’utilisateur et comme celui-ci est unique il ne peux y avoir qu’une seule rubrique attribuée par admin.

      En revanche rien ne t’empêche d’ajouter « à la main » (via l’interface standard de gestion d’un auteur) ces rubriques supplémentaires pour chaque admin.

      Remarque : cette version pour spip 1.8.* n’évoluera plus vu que la version plugin pour spip 1.9.* la remplace.

    Répondre à ce message

  • 2

    Bonjour, excellente contribution mais est-elle compatible avec spip 1.9.1 ?
    Merci

    • non, cette version n’est PAS compatible avec spip 1.9... Mais elle est en cours de « pluginisation » : d’ici quelques jours ça devrait être fait, donc un peu de patience, ça arrive !

    Répondre à ce message

  • 1

    Merci pour cette super contribution facile à installer .
    Il me reste une petite question concernant la création des admin restreints qui n’est pas automatique :
    les admins sont créés mais pas en restreints . Aurais- je raté une étape ?

    • Je poursuis mes recherches : en fouinant un peu dans le code php, je me suis rendu compte que lle nom spip était transformé en minuscules pour le traitement . J’ai modifié mon fichier csv en ne laissant que des minuscules pour ce champ et là tout marche comme je le voulais . J’ai directement la création de mes admin restreints avec la responsabilité de leur rubrique . C’est TIP TOP ! Merci encore .

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom