source: spip-zone/_plugins_/profils/trunk/inc/importer_csv_profil.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: 1.6 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) {
4        return;
5}
6
7function inc_importer_csv_profil_dist($id_profil, $profil, $envoyer_notification) {
8        // À partir de chaque colonne, on va générer les request nécessaires pour lancer le traitement du formulaire
9        $champs_auteur = array();
10        $champs_organisation = array();
11        $champs_contact = array();
12        $champs_coordonnees = array();
13       
14        foreach ($profil as $champ => $valeur) {
15                // Si c'est bien un objet attendu
16                if (preg_match('%^(auteur|organisation|contact)_%', $champ, $trouver)) {
17                        $objet = $trouver[1];
18                        $champ = str_replace($objet.'_', '', $champ);
19                       
20                        // Si c'est une coordonnée pour cet objet
21                        if (
22                                preg_match('%^(adresses|numeros|emails)_%', $champ, $trouver)
23                                and $coordonnee = $trouver[1]
24                                and $champ = str_replace($coordonnee.'_', '', $champ)
25                                and preg_match('%^([a-zA-Z0-9]+?)_%', $champ, $trouver)
26                                and is_string($type = $trouver[1])
27                                and $champ = str_replace($type.'_', '', $champ)
28                        ) {
29                                if ($type == '0') {
30                                        $type = 0;
31                                }
32                               
33                                $champs_coordonnees[$objet][$coordonnee][$type][$champ] = $valeur;
34                        }
35                        // Sinon on met directement la valeur pour cet objet
36                        else {
37                                ${"champs_$objet"}[$champ] = $valeur;
38                        }
39                }
40        }
41       
42        // On place tout ça en request
43        set_request('auteur', $champs_auteur);
44        set_request('organisation', $champs_organisation);
45        set_request('contact', $champs_contact);
46        set_request('coordonnees', $champs_coordonnees);
47        set_request('envoyer_notification', $envoyer_notification);
48       
49        $traiter = charger_fonction('traiter', 'formulaires/profil');
50        $retours = $traiter('new', $id_profil, '', true); // On force en mode admin pour être sûr, car dans des jobs
51}
Note: See TracBrowser for help on using the repository browser.