Comment ajouter beaucoup d’auteurs en même temps

Plugin « Importer des auteurs » v-0.5

Utile pour une migration, un ajout en nombre de nouveaux auteurs etc...

On a parfois besoin d’ajouter un grand nombre de rédacteurs. Ce plugin
le permet simplement depuis un fichier de type csv (Comat Separated Value) placé dans ecrire/data

Notes : il est vivement conseillé de sauvegarder la table spip_auteurs avant cette manipulation. Sachez également qu’une contribution similaire est disponible sur Spip-contrib. Il s’agit de Gestion des auteurs (anciennement csv2spip).

Réalisé à la base pour un SPIP 1.6, je l’ai modifié pour une version 1.9.1 et packagé en plugin.

Ce que fait le plugin

  • Création des auteurs avec les informations standards : nom (signature), email, bio (non testé avec des longues bio), PGP, nom du site, adresse du site, statut et éventuellement identifiant et mot de passe (sinon, ces informations sont générées par le plugin) ;
  • Si l’identifiant n’est pas précisé dans le fichier .csv, génération d’un identifiant à partir du nom. Le script supprime les caractères spéciaux, espace ect... Par exemple Yves TANNIER devient yvestannie (10 caractères maxi). Cette fonction peux facilement être réécrite ;
  • Vérifie qu’il n’y a pas de doublon au niveau de l’identifiant. Si doublon il y a, l’utilisateur n’est pas ajouté et la ligne du tableau récapitulatif affiche le message « déjà enregistré » ;
  • Si le mot de passe n’est pas précisé dans le fichier csv, génération d’un mot de passe aléatoire. Cette fonction peux facilement être réécrite. Il est également possible d’avoir un mot de passe identique au login généré par le script ;
  • Récapitulatif des enregistrements sous forme d’un tableau HTML et
    éventuellement d’un autre fichier csv contenant les nouveaux identifiants et mots de passe. A utiliser copier-coller pour réaliser votre publipostage !

Installation

L’installation ce fait comme tout les plugins. Je n’ai pas ajouté de bouton dans l’interface privé vu qu’on ne l’utilise pas tous les jours. L’accès se fait donc par l’url : http://www.monsite.com/ecrire/?exec=auteurs_import

Ce plugin est noté en version « expérimental » mais déjà testé avec succès en production.

Plugin « Importer des auteurs »
A mettre dans le répertoire « plugins »

Format du fichier CSV

Votre fichier doit donc être un fichier de format CSV (Commat Separated Value). Le caractère de séparation des champs doit être le « ; » (il est cependant possible de le préciser au chargement). Les champs ne doivent pas être entourés par des guillemets.

Pour la création de ce fichier, utilisez plutôt le logiciel libre OpenOffice Calc que Excel. Ce dernier ne réalise pas correctement la conversion en format CSV simple et standard et risque de vous poser quelques soucis.

Le fichier doit donc ressembler à ça si, une fois crée avec OpenOffice, vous l’éditez avec un simple éditeur de texte :

TANNIER Yves;webmaster;yves@mondomaine.tld;mon super site;http://www.grafactory.net/blog/;pgp;1comite;
LINUS Torvald;noyo;linus@linux.org;site web;http://www.linux.org;;1comite;

La dernière valeur correspond au niveau de rédaction : « 1comite » représente un niveau rédacteur. « 0minirezo » pour un administrateur.

Il est possible d’ajouter une 8e et une 9e colonne qui contiendront
respectivement les identifiants et les mots de passe de vos
utilisateurs si vous ne souhaitez pas que le plugin les génère lui même.

TANNIER Yves;webmaster;yves@mondomaine.tld;mon super site;http://www.grafactory.net/blog/;pgp;1comite;identifiant;motdepasse;
LINUS Torvald;noyo;linus@linux.org;site web;http://www.linux.org;;1comite;monlogin;monpass;

Il est primordial de respecter l’ordre des champs et d’avoir dans tous les cas les 7 premières (donc jusqu’au statut) colonnes même vide ! Je vous conseille de créer une première ligne avec les entêtes des colonnes, puis de la
supprimer avant l’enregistrement de votre fichier CSV définitif.

A propos du code source du plugin

Notez que j’ai essayé de commenter assez précisément le code source de
ce plugin afin de permettre à toutes personnes ayant quelques
connaissances en PHP de modifier le code en fonction de ces besoins.

On retrouvera notamment en début de code :

  • des variables qui peuvent être modifiées
  • une fonction faireLogin de génération du login qui peut être réécrite
  • une fonction MDP de génération du mot de passe qui peut également réécrite.

Note complémentaire

  • ne vérifie pas la validité syntaxique de l’adresse email
  • n’utilise pas la fonction de génération de mot de passe de SPIP (pas trouvé).

Note de l’équipe de Spip-Contrib

Cet article est publié avec les précisions suivantes :
-  ce plugin touche à la sécurité de votre site, attention au niveau de compétence requis (voir les mots clefs), ce plugin n’est clairement pas destiné a des débutants
-  il faut vraiment tester qu’il n’est pas possible par une fausse manipulation d’effacer les comptes 0minirezo (admins)
-  il est vivement déconseillé d’utiliser ce plugin sans avoir *vraiment* les moyens et l’habitude de bidouiller avec phpmyadmin. En effet les conséquence d’une erreur peuvent vite devenir ingérable autrement. Par exemple si l’on créé 150 ou 1000 auteurs avec ce plugin, s’il y a un problème, alors il est difficile de corriger l’erreur en quelques clics si l’on utilise que l’interface SPIP d’admin du site ...
-  cette contrib est quand même validée pour qu’il y ait plus de retours d’expériences ... merci d’avance de témoigner de vos essais sur ce forum

Discussion

9 discussions

  • A noter que pour les versions de SPIP > 1.9 il y a
    https://contrib.spip.net/Plugin-csv2auteurs-gestion-des-auteurs-a-partir-de

    (on ne le trouve pas si l’on cherche « import » ou « auteur » sur « Rechercher et ajouter des plugins »)

    Répondre à ce message

  • 3

    Bonjour Yves,
    Avec ton plug-in tu ouvres une piste à une idée que j’ai en tête depuis quelques semaines, c’est à dire pourvoir importer des articles à la louche. Est-ce qu’il y aurait moyen d’adapter ton plug-in pour importer en masse des articles encoder sous la même forme (csv) ?
    Je ne suis absolument pas un virtuose du code php, html et autres languages nécessaire alors je fais appel aux « codeurs fous » arpentant le site.

    Bonne journée,

    Nicolas

    • Oui, ca serait possible... Mais il faut le développer ;)

      Je n’ai personnellement pas le temps pour l’instant pour me lancer dans ce genre de chose. De plus, je pense qu’il serait plus intéressant de pouvoir créer des articles à partir de glissé/déposé de documents OpenOffice. S’orienter plutôt vers les traitements XML donc :)

      ++

    • erational a commencé un plug-in qui s’appelle mass_import pour importer beaucoup d’articles à la fois :

      -  le plugin mass_import sur la zone
      -  ancienne documentation de mass import

      il reste à écrire la documentation et standardiser les entrées pour recevoir du csv, xml, ...

    • François Daniel Giezendanner

      Bonjour,

      Est-il prévu d’adapter ce plugin pour SPIP 2.0.x puis 2.1

      Cordailement

      FDG

    Répondre à ce message

  • J’ai réglé mon problème grâce aux messages précédents.

    Il faut ajouter un ; à la fin des lignes. Sinon, le mot de passe comprend un saut de ligne... Et la connexion ne fonctionne donc pas.

    Répondre à ce message

  • Merci pour ce plugin qui marche presque parfaitement sur mon Spip 1.9.2.

    Le seul problème, c’est que le mot de passe ne semble pas enregistré correctement. car les utilisateurs que j’importe en spécifant leur login et leur mot de passe ne peuvent pas se connecter.

    Le login est correct mais pas le mot de passe.

    A l’aide.

    Répondre à ce message

  • Pourrais-t-on m’expliquer comment de ce plugin pour la version Spip 2.O.2 ?

    En essayant de l’installer, j’obtiens une page grise avec encadré blanc disant :

    Erreur...
    Fichier auteurs_import introuvable

    Merci par avance pour votre aide.

    Répondre à ce message

  • 7

    Bonsoir

    J’ai utilisé ce plugin pour créer 30 comptes en partant d’un csv contenant login et mot de passe existants (pour ne pas avoir à faire retenir de nouveaux identifiants aux utilisateurs).

    Si les logins sont bien les mêmes, les mots de passe ne marchent pas.

    Avez vous eu un retour semblable ?

    Pourquoi ne pas mettre un bouton dans l’espace privé ? Je suis amené à importer des utilisateurs régulièrement tout au long de l’année.

    — 
    Patrick

    • Bonjour,

      Quand vous dites « ne marchent pas ». C’est qu’il est impossible de se loguer après l’importation avec les mots de passe du csv ?

      Je n’ai pas eu d’autres retour sur ce problème.

      Concernant un bouton dans l’espace privé, ce n’est pas prévu. Ceci étant, un petit bookmark dans le navigateur pourra faire l’affaire ;)

      Si le problème des mots de passe persiste, envoyez moi un exemple de csv que je regarde.

      ++ Yves

    • Bonjour

      En effet ! Le login est le bon puisqu’il diffère parfois du simple nom (nom+première lettre du prénom en cas d’homonymie) ; l’auteur est reconnu ; mais quand j’entre le mot de passe, on me dit qu’il n’est pas bon. Le problème est que je ne peux pas voir (ou alors je ne sais pas faire) quel est le mot de passe que Spip a dans ses tables. mais j’imagine que c’est un mdp crée par le plugin.

      Bien entendu si je change le mot de passe et que je mets celui de mon csv, ça passe. Certes je peux modifier mes 30 comptes mais je comptais utiliser aussi ce plugin sur un autre Spip où j’ai environ 200 comptes à créer...

      Je n’ai pas le csv ici (lundi matin je pourrai vous le donner) mais il n’a rien de bien original : j’ai respecté vos indications et les deux dernières colonnes sont : login ;motdepasse

      — 
      Patrick

    • Je me réponds à moi même, l’asile n’est pas loin...

      Cela m’a fait tilt quand j’ai relu mon précédent message. Que ce soit Excel ou Calc, aucun ne met de point-virgule après le dernier champ.

      Or pour mettre les colonnes en ordre c’est plus facile avec Excel ou Calc. J’ai retenté un import en ajoutant le point virgule à la fin avec le blocnote et ça passe.

      N’est-ce d’ailleurs pas un tout petit défaut du plugin car j’importe souvent des csv qui n’ont jamais de point-virgule à la fin pourtant tout se passe bien.

      — 
      Patrick

    • Je vais jetter un oeil sur cette histoire de point-virgule à la fin des fichiers... de mémoire, je fais un explode sur le point-virgule. Ce qui ne devrait pas poser de problème si il n’y a pas de «  ; » à la fin...

      Je regarde ça dans le WE.

    • Bonjour

      Pour ne pas avoir à ajouter le ; à la fin de mes 250 lignes, j’ai tout simplement inventé un champ supplémentaire avec « vide » dedans.
      Puis en ouvrant le fichier avec BlocNotes ou Kedit remplacer « vide » par un vrai vide et le tour est joué.

      Merci

      — 
      Patrick

    • Yves Tannier

      Arf ! Je suis désolé. beaucoup de boulot en ce moment mais les améliorations sont sur ma « todo list ».

      Yves

    • J’ai identifié le même problème.
      Spip 1.9.2c et dernier version du plugin.
      La manip de Patrick fonctionne à merveille.
      Attention également bien désactiver l’option guillemets (« ») pour encadrer les champs lors de l’export en cvs.
      Sinon un grand merci à l’auteur. J’ai pu entré plus de 300 adhérents sur un site restreint, mot de passe compris sans le faire à la main !

    Répondre à ce message

  • 2

    bonjour
    je teste le plug in (Version : 0.5 | expérimental)
    sur un site 1.9.2c
    mon fichier csv est correct ; l’import se passe bien, j’ai bien la fenêtre résultat qui apparait et si je vérifie avec PHpMyAdmin, les enregistrements sont bien créez dans la table spip_auteurs
    mais je ne vois pas les auteurs dans l’administration de spip ? aurais je louper quelquechose ?

    • Bonjour

      même problème que jacques mais je ne comprend pas pourquoi ?

      Quelqu’un pourrait ’il m’aider ?

      merci

    • jacques

      je me suis apercu qu’il y avait un retour à la ligne en trop dans le champ ’statut de l’auteur", et donc l’auteur n’est pas reconnu par spip même s’il est présent dans la base, pour éviter cela il faut utiliser la syntaxe complète : par exemple pour mes auteurs visiteurs je termine la ligne avec tout les champs, même vide, ce qui donne

       ;6forum ; ; ;

    Répondre à ce message

  • Bonjour à tous,

    J’ai vainement tenté de créer un répertoire « plugins » pour y voir celui-ci et me suis donc résigné à copier l’exécutable dans le répertoire ecrire/exec : si je pouvais être éclairé à ce sujet...
    pour info:Le fichier csv respecte les caractères accentués lorsqu’on le sauve au moyen de notepad en format UTF-8.
    J’ai ajouté un champ « bidon » pour éviter le problème du point-virgule et ai supprimé la génération du login et du mot de passe pour utiliser ceux de ma table d’importation.
    Tout fonctionne comme je le désirais.
    Un grand merci pour un SPIP installé dans l’urgence : école oblige !

    Répondre à ce message

  • 2

    Bonjour,

    merci pour ce plugin qui me sera indispensable pour enregistrer mes élèves sur mon site (quelque 120 auteurs à créer...). Je l’ai testé, il marche très bien.

    Un détail cependant : en modifiant le fichier auteurs_import pour l’adapter à mes besoins, j’ai cru remarquer qu’il y avait une erreur dans le code pour le cas où le login et le mot de passe existeraient déjà : j’ai l’impression que les variables sont récupérées dans la mauvaise colonne. Je peux cependant me tromper, je n’y connais rien en php, c’est donc à vérifier.

    Un deuxième détail : les accents ne sont pas gérés dans le nom de l’utilisateur. C’est irritant parce que c’est lui qui est affiché sur la page d’accueil (par exemple un utilisateur nommé « élève » s’affiche ainsi : «  ?l ?ve ». C’est très simple à corriger, il faut juste faire attention à ne changer la variable $nom qu’après son utilisation pour le création du login...

    Je suis en train d’essayer d’adapter ce plugin pour qu’il soit compatible avec le plugin acces_groupes qui m’est bien utile, mes élèves n’ayant pas accès aux mêmes parties du site selon leur classe (je souhaiterais donc ajouter une colonne « classe » de façon à ce que l’utilisateur soit automatiquement inscrit dans le groupe de sa classe), mais là j’ai plus de mal : je ne comprends pas vraiment la structure des tables créées par ce dernier plugin. Mais c’est une autre histoire.

    Merci encore,

    Erwan

    • Yves Tannier

      Bonjour,

      Merci pour ce retour. Je ne vois pas où serait l’erreur dont tu parles. Peux-tu être plus précis et me préciser les numéros de ligne ?

      Concernant l’accentuation, il faut utiliser le même interclassement que celui de la base de données pour le fichier CSV. Si la base est en utf8 -> fichier csv en utf8.

      @+
      Yves

    • Les lignes suspectes :

      // si il y a une colonne 8 alors c'est le login
                      if(isset($liste[7]) && !empty($liste[7])) {
                          $login = $liste[7];
                      }
      
                      // si il y a une colonne 9 alors c'est le mot de passe
                      if(isset($liste[8]) && !empty($liste[8])) {
                          $new_pass = $liste[8];
                      }

      Il me semble qu’il y a erreur sur le numéro des colonnes, non ? pour moi le login était dans la colonne 7, le mot de passe dans la 8...

      Pour l’accentuation j’ai bidouillé un truc, je ne sais pas ce que signifie « interclassement » ;)

      J’ai finalement réussi (non sans mal) à ajouter quelques lignes à ce plugin pour qu’il tienne compte du plugin « accès restreint par groupes » que j’ai installé sur mon site.

      Merci encore,

      Erwan

    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