source: spip-zone/_plugins_/coordonnees/trunk/formulaires/editer_adresse.php @ 99581

Last change on this file since 99581 was 99581, checked in by toutati@…, 3 years ago

On change province par etat_federal avant que quelqu'un·e update !

File size: 8.2 KB
Line 
1<?php
2/**
3 * Gestion du formulaire de d'édition d'une adresse
4 *
5 * @plugin     Coordonnees
6 * @copyright  2014
7 * @author     Marcimat / Ateliers CYM
8 * @licence    GNU/GPL
9 * @package    SPIP\Coordonnees\Formulaires
10 */
11if (!defined('_ECRIRE_INC_VERSION')) return;
12
13include_spip('inc/actions');
14include_spip('inc/editer');
15
16/**
17 * Definition des saisies du formulaire
18 *
19 * @param int|string $id_adresse
20 *     Identifiant de l'adresse. 'new' pour une nouvelle adresse.
21 * @param string $retour
22 *     URL de redirection après le traitement
23 * @param string $associer_objet
24 *     Éventuel `objet|x` indiquant de lier l'adresse créée à cet objet,
25 *     tel que `article|3`
26 * @return array
27 *     Tableau des saisies
28 */
29function formulaires_editer_adresse_saisies_dist($id_adresse = 'new', $retour = '', $associer_objet = '') {
30        $saisies = array(
31                array(
32                        'saisie' => 'input',
33                        'options' => array(
34                                'nom' => 'titre',
35                                'label' => _T('coordonnees:label_titre'),
36                                'placeholder' => _T('coordonnees:placeholder_titre_adresse')
37                        )
38                ),
39                array(
40                        'saisie' => 'input',
41                        'options' => array(
42                                'nom' => 'voie',
43                                'label' => _T('coordonnees:label_voie')
44                        )
45                ),
46                array(
47                        'saisie' => 'input',
48                        'options' => array(
49                                'nom' => 'complement',
50                                'label' => _T('coordonnees:label_complement'),
51                                'placeholder' => _T('coordonnees:placeholder_complement_adresse')
52                        )
53                ),
54                array(
55                        'saisie' => 'input',
56                        'options' => array(
57                                'nom' => 'boite_postale',
58                                'label' => _T('coordonnees:label_boite_postale'),
59                        )
60                ),
61                array(
62                        'saisie' => 'input',
63                        'options' => array(
64                                'nom' => 'code_postal',
65                                'label' => _T('coordonnees:label_code_postal')
66                        ),
67                        // decommenter ces lignes quand les codes postaux
68                        // internationaux seront pris en compte par 'verifier'
69                        /*'verifier' => array (
70                                'type' => 'code_postal'
71                        )*/
72                ),
73                array(
74                        'saisie' => 'input',
75                        'options' => array(
76                                'nom' => 'region',
77                                'label' => _T('coordonnees:label_region')
78                        )
79                ),
80                array(
81                        'saisie' => 'input',
82                        'options' => array(
83                                'nom' => 'ville',
84                                'label' => _T('coordonnees:label_ville')
85                        )
86                ),
87                array(
88                        'saisie' => 'input',
89                        'options' => array(
90                                'nom' => 'etat_federal',
91                                'label' => _T('coordonnees:label_etat_federal')
92                        )
93                ),
94                array(
95                        'saisie' => 'pays',
96                        'options' => array(
97                                'nom' => 'pays',
98                                'label' => _T('coordonnees:label_pays'),
99                                'obligatoire' => 'oui',
100                                'class' => 'chosen',
101                                'defaut' => 'FR',
102                                'code_pays' => 'oui'
103                        )
104                ),
105        );
106
107        // si on associe l'adresse à un objet, rajouter la saisie 'type'
108        if($associer_objet) {
109                $saisie_type = array(
110                        array(
111                        'saisie' => 'type_adresse',
112                        'options' => array(
113                                'nom' => 'type',
114                                'label' => _T('coordonnees:label_type_adresse'),
115                                )
116                        )
117                );
118                $saisies = array_merge($saisie_type, $saisies);
119        }
120
121        return $saisies;
122}
123
124/**
125 * Identifier le formulaire en faisant abstraction des paramètres qui ne représentent pas l'objet edité
126 *
127 * @param int|string $id_adresse
128 *     Identifiant de l'adresse. 'new' pour une nouvelle adresse.
129 * @param string $retour
130 *     URL de redirection après le traitement
131 * @param string $associer_objet
132 *     Éventuel `objet|x` indiquant de lier l'adresse créée à cet objet,
133 *     tel que `article|3`
134 * @param int $lier_trad
135 *     Identifiant éventuel d'une adresse source d'une traduction
136 * @param string $config_fonc
137 *     Nom de la fonction ajoutant des configurations particulières au formulaire
138 * @param array $row
139 *     Valeurs de la ligne SQL de l'adresse, si connu
140 * @param string $hidden
141 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
142 * @return string
143 *     Hash du formulaire
144 */
145function formulaires_editer_adresse_identifier_dist($id_adresse = 'new', $retour = '', $associer_objet = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
146        return serialize(array(intval($id_adresse), $associer_objet));
147}
148
149/**
150 * Chargement du formulaire d'édition d'une adresse
151 *
152 * Déclarer les champs postés et y intégrer les valeurs par défaut
153 *
154 * @uses formulaires_editer_objet_charger()
155 *
156 * @param int|string $id_adresse
157 *     Identifiant de l'adresse. 'new' pour une nouvelle adresse.
158 * @param string $retour
159 *     URL de redirection après le traitement
160 * @param string $associer_objet
161 *     Éventuel `objet|x` indiquant de lier l'adresse créée à cet objet,
162 *     tel que `article|3`
163 * @param int $lier_trad
164 *     Identifiant éventuel d'une adresse source d'une traduction
165 * @param string $config_fonc
166 *     Nom de la fonction ajoutant des configurations particulières au formulaire
167 * @param array $row
168 *     Valeurs de la ligne SQL de l'adresse, si connu
169 * @param string $hidden
170 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
171 * @return string
172 *     Hash du formulaire
173 */
174function formulaires_editer_adresse_charger_dist($id_adresse = 'new', $retour = '', $associer_objet = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
175        $valeurs = formulaires_editer_objet_charger('adresse', $id_adresse, '', $lier_trad, $retour, $config_fonc, $row, $hidden);
176
177        // valeur de la saisie "type" dans la table de liens
178        if ($associer_objet) {
179                list($objet, $id_objet) = explode('|', $associer_objet);
180                $valeurs['type'] = sql_getfetsel('type', 'spip_adresses_liens', 'objet='.sql_quote($objet).' AND id_objet='.intval($id_objet).' AND id_adresse='.intval($id_adresse));
181        }
182
183        return $valeurs;
184}
185
186/**
187 * Vérifications du formulaire d'édition d'une adresse
188 *
189 * Vérifier les champs postés et signaler d'éventuelles erreurs
190 *
191 * @uses formulaires_editer_objet_verifier()
192 *
193 * @param int|string $id_adresse
194 *     Identifiant de l'adresse. 'new' pour une nouvelle adresse.
195 * @param string $retour
196 *     URL de redirection après le traitement
197 * @param string $associer_objet
198 *     Éventuel `objet|x` indiquant de lier l'adresse créée à cet objet,
199 *     tel que `article|3`
200 * @param int $lier_trad
201 *     Identifiant éventuel d'une adresse source d'une traduction
202 * @param string $config_fonc
203 *     Nom de la fonction ajoutant des configurations particulières au formulaire
204 * @param array $row
205 *     Valeurs de la ligne SQL de l'adresse, si connu
206 * @param string $hidden
207 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
208 * @return string
209 *     Hash du formulaire
210 */
211function formulaires_editer_adresse_verifier_dist($id_adresse = 'new', $retour = '', $associer_objet = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
212        // verification generique
213        $erreurs = formulaires_editer_objet_verifier('adresse', $id_adresse);
214
215        return $erreurs;
216}
217
218/**
219 * Traitement du formulaire d'édition d'une adresse
220 *
221 * Traiter les champs postés
222 *
223 * @uses formulaires_editer_objet_traiter()
224 *
225 * @param int|string $id_adresse
226 *     Identifiant de l'adresse. 'new' pour une nouvelle adresse.
227 * @param string $retour
228 *     URL de redirection après le traitement
229 * @param string $associer_objet
230 *     Éventuel `objet|x` indiquant de lier l'adresse créée à cet objet,
231 *     tel que `article|3`
232 * @param int $lier_trad
233 *     Identifiant éventuel d'une adresse source d'une traduction
234 * @param string $config_fonc
235 *     Nom de la fonction ajoutant des configurations particulières au formulaire
236 * @param array $row
237 *     Valeurs de la ligne SQL de l'adresse, si connu
238 * @param string $hidden
239 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
240 * @return string
241 *     Hash du formulaire
242 */
243function formulaires_editer_adresse_traiter_dist($id_adresse = 'new', $retour = '', $associer_objet = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
244        $res = formulaires_editer_objet_traiter('adresse', $id_adresse, '', $lier_trad, $retour, $config_fonc, $row, $hidden);
245
246        // Un lien a prendre en compte ?
247        if ($associer_objet and $id_adresse = $res['id_adresse']) {
248                list($objet, $id_objet) = explode('|', $associer_objet);
249                if ($objet and $id_objet == intval($id_objet)) {
250                        include_spip('action/editer_liens');
251                        objet_associer(array('adresse' => $id_adresse), array($objet => $id_objet), array('type' => _request('type')));
252                        if (isset($res['redirect'])) {
253                                $res['redirect'] = parametre_url($res['redirect'], 'id_adresse', '', '&');
254                        }
255                }
256        }
257        return $res;
258
259}
Note: See TracBrowser for help on using the repository browser.