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

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

1) On force le mot de passe à non vide, afin d'autoriser les gens à le changer ! 2) On corrige tous les anciens profils avec pass non vide aussi. 3) On ajoute une nouvelle option pour les admins, leur permettant d'envoyer une notification aux gens quand ça créé un nouveau compte, aussi bien par le formulaire unitaire que par l'importation CSV. 4) Au passage on corrige une erreur SQL pour la suppression des coordonnées : seulement quand c'était une existante, pas new… => On passe en 1.5, en plus avec les modifs de tcharlss juste avant sur l'affichage.

File size: 2.4 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                array(
29                        'saisie' => 'case',
30                        'options' => array(
31                                'nom' => 'envoyer_notification',
32                                'label_case' => _T('profil:envoyer_notification_label_case'),
33                                'pleine_largeur' => 'oui',
34                        ),
35                ),
36                'options' => array(
37                        'texte_submit' => _T('bouton_upload'),
38                        'inserer_debut' => '<h3 class="titrem">'._T('profil:importer_titre').'</h3>'
39                ),
40        );
41       
42        return $saisies;
43}
44
45function formulaires_importer_profils_traiter_dist($id_profil){
46        $retours = array();
47        $jobs = 0;
48        $jobs_erreurs = 0;
49       
50        $fichier = $_FILES['fichier']['tmp_name'];
51        $importer_csv = charger_fonction('importer_csv', 'inc/');
52        $envoyer_notification = _request('envoyer_notification') ? true : false;
53       
54        // Si on récupère bien un tableau
55        if (is_array($profils = $importer_csv($fichier, true))){
56                foreach ($profils as $profil){
57                        // On cherche rapidement un truc pertinent à mettre
58                        if (isset($profil['auteur_nom']) and $profil['auteur_nom']) {
59                                $nom = $profil['auteur_nom'];
60                        }
61                        elseif (isset($profil['auteur_email']) and $profil['auteur_email']) {
62                                $nom = $profil['auteur_email'];
63                        }
64                        elseif (isset($profil['organisation_nom']) and $profil['organisation_nom']) {
65                                $nom = $profil['organisation_nom'];
66                        }
67                        elseif (isset($profil['contact_nom']) and $profil['contact_nom']) {
68                                $nom = $profil['contact_nom'];
69                        }
70                        else {
71                                $nom = '???';
72                        }
73                        // On ajoute la tâche d'import
74                        if (job_queue_add(
75                                'importer_csv_profil',
76                                'Importer le profil "'.$nom.'"',
77                                array($id_profil, $profil, $envoyer_notification),
78                                'inc/'
79                        ) > 0){
80                                $jobs++;
81                        }
82                        else{
83                                $jobs_erreurs++;
84                        }
85                }
86        }
87       
88        if (!$jobs_erreurs){
89                $retours['message_ok'] = "Lancement de $jobs importations de profils dans la liste des travaux.";
90        }
91        else{
92                $retours['message_erreur'] = "$jobs importations lancées avec succès MAIS $jobs_erreurs n’ont pas pu être lancées !";
93        }
94       
95        return $retours;
96}
Note: See TracBrowser for help on using the repository browser.