source: spip-zone/_plugins_/formidable_importer_reponses/trunk/formulaires/importer_formulaire_reponses.php @ 103256

Last change on this file since 103256 was 103256, checked in by kent1@…, 4 years ago

Sans logs

File size: 4.4 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) {
5        return;
6}
7
8include_spip('inc/formidable');
9include_spip('inc/config');
10
11function formulaires_importer_formulaire_reponses_charger($id_formulaire = 0) {
12        $contexte                  = array();
13        $contexte['id_formulaire'] = intval($id_formulaire);
14
15        return $contexte;
16}
17
18function formulaires_importer_formulaire_reponses_verifier($id_formulaire = 0) {
19        $erreurs = array();
20        return $erreurs;
21}
22
23function formulaires_importer_formulaire_reponses_traiter($id_formulaire = 0) {
24        $retours         = array();
25        $statut_reponses = _request('statut_reponses');
26        $ok = false;
27        if (isset($_FILES) && isset($_FILES['fichier']) && !$_FILES['fichier']['error']) {
28                $type_import = _request('type_import');
29                $fichier = $_FILES['fichier']['tmp_name'];
30                if (_request('type_import') == 'csv') {
31                        $res = importer_formulaires_reponses($id_formulaire, $fichier, ',', $statut_reponses);
32                        $retours = $res;
33                }
34        }
35
36        if (!$res) {
37                $retours['editable']       = 1;
38                $retours['message_erreur'] = _T('formidable:info_aucune_reponse');
39        }
40
41        return $retours;
42}
43
44/**
45 * Importer toutes les réponses du fichier
46 * @param integer $id_formulaire
47 * @return unknown_type
48 */
49function importer_formulaires_reponses($id_formulaire, $fichier, $delim = ',', $statut_reponses = 'publie') {
50        // on ne fait des choses seulements si le formulaire existe et qu'il a des enregistrements
51        if ($id_formulaire > 0
52                and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = ' . $id_formulaire)) {
53                include_spip('inc/saisies');
54                include_spip('inc/filtres');
55                $reponses_completes = array();
56                // Charger la fonction inc_importer_csv de bonux
57                $importer_csv = charger_fonction('importer_csv', 'inc');
58                $reponses = $importer_csv($fichier, true);
59
60                if (is_array($reponses) and count($reponses) >= 1) {
61                        $saisies = saisies_lister_par_nom(unserialize($formulaire['saisies']), false);
62                        $saisies_nom = array();
63                        $saisies_obligatoires = array();
64                        foreach ($saisies as $nom => $saisie) {
65                                if ($saisie['saisie'] != 'explication') {    // on exporte tous les champs sauf explications
66                                        $saisies_nom[] = $saisie['options']['nom'];
67                                        if ($saisie['options']['obligatoire'] == 'on') {
68                                                $saisies_obligatoires[] = $saisie['options']['nom'];
69                                        }
70                                }
71                        }
72                        foreach ($saisies_obligatoires as $champ) {
73                                if (!isset($reponses[0][$champ])) {
74                                        $retours = array(
75                                                'message_erreur' => _T('formidable_importerreponse:message_champ_obligatoire_non_dispo', array('champ' => $champ)),
76                                                'editable' => ' '
77                                        );
78                                        return $retours;
79                                }
80                        }
81
82                        include_spip('inc/acces');
83                        // On parcourt chaque réponse
84                        foreach ($reponses as $reponse) {
85                                $info_reponse = array(
86                                        'id_formulaire' => $id_formulaire,
87                                        'cookie' => creer_uniqid()
88                                );
89                                // Est-ce qu'il y a un auteur avec un nom
90                                if (isset($reponse['id_auteur'])) {
91                                        $info_reponse['id_auteur'] = intval($reponse['id_auteur']);
92                                        unset($reponse['id_auteur']);
93                                } else {
94                                        $info_reponse['id_auteur'] = $GLOBALS['visiteur_session']['id_auteur'];
95                                }
96                                if (isset($reponse['date'])) {
97                                        $info_reponse['date'] = $reponse['date'];
98                                        unset($reponse['date']);
99                                } else {
100                                        $info_reponse['date'] = date('Y-m-d H:i:s');
101                                }
102                                if (isset($reponse['ip'])) {
103                                        $info_reponse['ip'] = $reponse['ip'];
104                                        unset($reponse['ip']);
105                                }
106                                $info_reponse['statut'] = $statut_reponses;
107                                $id_formulaires_reponse = sql_insertq(
108                                        'spip_formulaires_reponses',
109                                        $info_reponse
110                                );
111
112                                $insertions = array();
113                                foreach ($saisies_nom as $saisie) {
114                                        if (isset($reponse[$saisie])) {
115                                                $insertions[] = array(
116                                                        'id_formulaires_reponse' => $id_formulaires_reponse,
117                                                        'nom' => $saisie,
118                                                        'valeur' => is_array($reponse[$saisie]) ? serialize($reponse[$saisie]) : $reponse[$saisie]
119                                                );
120                                        }
121                                }
122                                if (count($insertions) > 0) {
123                                        sql_insertq_multi(
124                                                'spip_formulaires_reponses_champs',
125                                                $insertions
126                                        );
127                                }
128                        }
129                        $retours = array(
130                                'message_ok' => _T('formidable_importerreponse:message_insertions_nb', array('nb' => count($reponses))),
131                                'editable' => ' '
132                        );
133                        return $retours;
134                } else {
135                        $retours = array(
136                                'message_erreur' => _T('formidable_importerreponse:message_fichier_sans_reponse'),
137                                'editable' => ' '
138                        );
139                        return $retours;
140                }
141        } else {
142                $retours = array(
143                        'message_erreur' => _T('formidable_importerreponse:message_formulaire_inexistant'),
144                        'editable' => ' '
145                );
146                return $retours;
147        }
148}
Note: See TracBrowser for help on using the repository browser.