source: spip-zone/_plugins_/profils/trunk/formulaires/importer_profils.php @ 111029

Last change on this file since 111029 was 111029, checked in by rastapopoulos@…, 14 months ago

Nouvelle fonctionnalité : il est possible d'importer un CSV normalisé avec tous les champs d'un profil, donc de plusieurs objets différents à la fois, auteur, orga, coordonnées, etc, et ça crée alors les profils en cascade, et tous les objets de chaque profil ! À priori ça gère aussi quand vous avez des champs extras, comme tout le reste de ce plugin, mais pour l'instant le seul truc que ça ne gère pas, c'est s'il y a des champs extras à valeurs multiples, checkboxes etc, car il faudrait gérer leur liste de valeurs séparées par des virgules dans sa case du CSV par exemple. Mais ça va venir. / En corrolaire, un autre formulaire permet ou plutôt permettra d'exporter tous les profils d'un même type. Pour l'instant ça n'exporte que les colonnes du CSV, ce qui est déjà pas mal car ça permet d'avoir dynamiquement le template de CSV de n'importe quel profil, sans avoir à le créer soi-même !

File size: 2.1 KB
Line 
1<?php
2/**
3 * Gestion du formulaire de d'importer de profils depuis un tableur
4 *
5 * @plugin     Profils
6 * @copyright  2018
7 * @author     Les Développements Durables
8 * @licence    GNU/GPL
9 * @package    SPIP\Profils\Formulaires
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) {
13        return;
14}
15
16function formulaires_importer_profils_saisies_dist($id_profil) {
17        $saisies = array(
18                array(
19                        'saisie' => 'input',
20                        'options' => array(
21                                'nom' => 'fichier',
22                                'type' => 'file',
23                                'label' => 'CSV',
24                                'obligatoire' => 'oui',
25                                'pleine_largeur' => 'oui',
26                        ),
27                ),
28                'options' => array(
29                        'texte_submit' => _T('bouton_upload'),
30                        'inserer_debut' => '<h3 class="titrem">'._T('profil:importer_titre').'</h3>'
31                ),
32        );
33       
34        return $saisies;
35}
36
37function formulaires_importer_profils_traiter_dist($id_profil){
38        $retours = array();
39        $jobs = 0;
40        $jobs_erreurs = 0;
41       
42        $fichier = $_FILES['fichier']['tmp_name'];
43        $importer_csv = charger_fonction('importer_csv', 'inc/');
44       
45        // Si on récupère bien un tableau
46        if (is_array($profils = $importer_csv($fichier, true))){
47                foreach ($profils as $profil){
48                        // On cherche rapidement un truc pertinent à mettre
49                        if (isset($profil['auteur_nom']) and $profil['auteur_nom']) {
50                                $nom = $profil['auteur_nom'];
51                        }
52                        elseif (isset($profil['auteur_email']) and $profil['auteur_email']) {
53                                $nom = $profil['auteur_email'];
54                        }
55                        elseif (isset($profil['organisation_nom']) and $profil['organisation_nom']) {
56                                $nom = $profil['organisation_nom'];
57                        }
58                        elseif (isset($profil['contact_nom']) and $profil['contact_nom']) {
59                                $nom = $profil['contact_nom'];
60                        }
61                        else {
62                                $nom = '???';
63                        }
64                        // On ajoute la tâche d'import
65                        if (job_queue_add(
66                                'importer_csv_profil',
67                                'Importer le profil "'.$nom.'"',
68                                array($id_profil, $profil),
69                                'inc/'
70                        ) > 0){
71                                $jobs++;
72                        }
73                        else{
74                                $jobs_erreurs++;
75                        }
76                }
77        }
78       
79        if (!$jobs_erreurs){
80                $retours['message_ok'] = "Lancement de $jobs importations de profils dans la liste des travaux.";
81        }
82        else{
83                $retours['message_erreur'] = "$jobs importations lancées avec succès MAIS $jobs_erreurs n’ont pas pu être lancées !";
84        }
85       
86        return $retours;
87}
Note: See TracBrowser for help on using the repository browser.