source: spip-zone/_plugins_/pensebetes/trunk/formulaires/editer_pensebete.php @ 122839

Last change on this file since 122839 was 122839, checked in by vincent.callies@…, 15 months ago

Davantage de documentation du code (sans changement de programmation)

File size: 9.2 KB
Line 
1<?php
2/**
3 * Gestion du formulaire de d'édition de pensebete
4 *
5 * @plugin Pensebetes
6 * @copyright  2019
7 * @author     Vincent CALLIES
8 * @licence    GNU/GPL
9 * @package SPIP\Pensebetes\Formulaires
10 */
11
12if (!defined("_ECRIRE_INC_VERSION")) return;
13
14include_spip('inc/actions');
15include_spip('inc/editer');
16
17/**
18 * Chargement des valeurs de SAISIES
19 *
20 * Aide à la création du formulaire avec le plugin SAISIES
21 *
22 * @param string $icone_objet
23 *     pour afficher si nécessaire l'icône de l'objet auquel le pense-bête sera lié
24 *
25 */
26function mes_saisies_pensebete($icone_objet='') {
27
28$mes_saisies = array(
29  array( // le fieldset
30    'saisie' => 'fieldset',
31    'options' => array(
32      'nom' => 'le_pensebete',
33      'label' => _T('pensebete:info_le_pensebete'),
34      'icone' => 'pensebete-24',
35    ),
36    'saisies' => array( // les champs dans le fieldset
37       array( // champ id_pensebete (numéro unique du pense-bête)
38          'saisie' => 'hidden',
39          'options' => array(
40            'nom' => 'id_pensebete',
41           )
42      ),
43       array( // champ id_donneur (numéro identification auteur du pense-bête)
44          'saisie' => 'hidden',
45          'options' => array(
46             'nom' => 'id_donneur',
47           )
48      ),
49        array( // champ date (date de création du pense-bête)
50          'saisie' => 'hidden',
51          'options' => array(
52            'nom' => 'date',
53           )
54      ),
55        array( // champ associer_objet (A-t-on demandé que ce pense-bête soit associé à un objet )
56          'saisie' => 'hidden',
57          'options' => array(
58             'nom' => 'associer_objet',
59           )
60      ),
61        array( // champ id_receveur (numéro identification de l'auteur destinataire du pense-bête)
62          'saisie' => 'auteurs',
63          'options' => array(
64             'nom' => 'id_receveur',
65            'label' => _T('pensebete:label_receveur'),
66             'obligatoire'=>'oui',
67           )
68      ),
69      array( // champ titre : ligne de texte
70          'saisie' => 'input',
71          'options' => array(
72            'nom' => 'titre',
73            'label' => _T('pensebete:label_titre'),
74            'maxlength' => 17, // un titre court
75          ),
76                   'verifier' => array(
77                        'type' => 'taille',
78                        'options' => array ('min' => 0, 'max' => 17),
79                )
80     ),
81     array( // champ texte : un bloc de texte
82          'saisie' => 'textarea',
83          'options' => array(
84            'nom' => 'texte',
85            'label' => _T('pensebete:label_texte'),
86            'rows'=>3,'cols'=>60,'longueur_max'=>110, // un texte court
87           ),
88                   'verifier' => array(
89                        'type' => 'taille',
90                        'options' => array ('min' => 0, 'max' => 110)
91                ),
92      ),
93  ),
94 ),
95  array( // le fieldset
96    'saisie' => 'fieldset',
97    'options' => array(
98      'afficher_si'=> '@associer_objet@ != ""',
99      'nom' => 'lassociation',
100      'label' => _T('pensebete:info_lassociation'),
101      'icone' => $icone_objet,
102    ),
103    'saisies' => array( // les champs dans le second fieldset
104  array( // hors fieldset : association
105    'saisie' => 'oui_non',
106    'options' => array(
107      'nom' => 'c_associe',
108      'label' => _T('pensebete:texte_associer_pensebete'),
109'valeur_oui' => 'oui', 
110'valeur_non' => 'non',
111         )
112    ),
113   )
114  )
115);
116
117  return $mes_saisies;
118}
119
120
121/**
122 * Chargement du formulaire d'édition de pensebete
123 *
124 * Déclarer les champs postés et y intégrer les valeurs par défaut
125 *
126 * @param int|string $id_pensebete identifiant de l'objet ou 'new' si absent.
127 * @param int $id_rubrique identifiant de la rubrique.
128 * @param string $retour lien pour le retour.
129 * @param string $associer_objet
130 *     Éventuel 'objet|x' indiquant de lier le mot créé à cet objet,
131 *     tel que 'article|3'
132 * @param int $lier_trad
133 * @param string $config_fonc
134 * @param array $row
135 * @param array $hidden
136 * @uses formulaires_editer_objet_charger()
137 * @uses mes_saisies_pensebete()
138 *
139 */
140function formulaires_editer_pensebete_charger_dist($id_pensebete='new', $id_rubrique=0, $retour='', $associer_objet, $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
141        $valeurs = formulaires_editer_objet_charger('pensebete',$id_pensebete,$id_rubrique,$lier_trad,$retour,$config_fonc,$row,$hidden);
142
143        // Si nouveau et titre dans l'url : fixer le titre (à 17 caractères)
144        if ($id_pensebete == 'oui'
145                and strlen($titre = _request('titre'))
146        ) {
147                $valeurs['titre'] = substr ($titre,0,16);
148        }
149
150        // A-t-on demandé à ce que le pense-bête soit associé à un objet éditorial ?
151        if ($associer_objet) {
152                $valeurs['associer_objet']=$associer_objet;
153                list($objet, $id_objet) = explode('|', $associer_objet);
154                $icone_objet=chemin_image($objet);
155                $valeurs['c_associe']='oui';
156        } else
157                $valeurs['c_associe']='non';
158
159        // s'il n'y a pas d'id_donneur, donner l'id de l'auteur
160        if (empty($valeurs['id_donneur']))
161                $valeurs['id_donneur']=$GLOBALS['visiteur_session']['id_auteur'];
162        $valeurs['_mes_saisies'] = mes_saisies_pensebete($icone_objet);
163
164        return $valeurs;
165}
166
167/**
168 * Identifier le formulaire en faisant abstraction des parametres qui ne representent pas l'objet edite
169 *
170 * @param int|string $id_pensebete identifiant de l'objet ou 'new' si absent.
171 * @param int $id_rubrique identifiant de la rubrique.
172 * @param string $retour lien pour le retour.
173 * @param string $associer_objet
174 *     Éventuel 'objet|x' indiquant de lier le mot créé à cet objet,
175 *     tel que 'article|3'
176 * @param int $lier_trad
177 * @param string $config_fonc
178 * @param array $row
179 * @param array $hidden
180 */
181function formulaires_editer_pensebete_identifier_dist($id_pensebete='new', $id_rubrique=0, $retour='', $associer_objet, $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
182        return serialize(array(intval($id_pensebete), $associer_objet));
183}
184
185/**
186 * Vérification du formulaire d'édition de pensebete
187 *
188 * @param int|string $id_pensebete identifiant de l'objet ou 'new' si absent.
189 * @param int $id_rubrique identifiant de la rubrique.
190 * @param string $retour lien pour le retour.
191 * @param string $associer_objet
192 *     Éventuel 'objet|x' indiquant de lier le mot créé à cet objet,
193 *     tel que 'article|3'
194 * @param int $lier_trad
195 * @param string $config_fonc
196 * @param array $row
197 * @param array $hidden
198 * @uses formulaires_editer_objet_verifier()
199 * @uses saisies_verifier()
200 *
201 */
202function formulaires_editer_pensebete_verifier_dist($id_pensebete='new', $id_rubrique=0, $retour='', $associer_objet, $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
203
204        $erreurs = formulaires_editer_objet_verifier('pensebete', $id_pensebete);
205
206        // on va chercher le pipeline saisies_verifier() dans son fichier
207        include_spip('inc/saisies');
208 
209        // on charge les saisies
210        $mes_saisies = mes_saisies_pensebete();
211 
212        // saisies_verifier retourne un tableau des erreurs s'il y en a, sinon traiter() prend le relais
213        $erreurs = saisies_verifier($mes_saisies);
214
215        return $erreurs;
216}
217
218/**
219 * Traitement du formulaire d'édition de pensebete
220 *
221 * Le traitement effectue une mise à zéro de l'id_auteur pour éviter des associations considérées comme inutiles.
222 *
223 * @param int|string $id_pensebete identifiant de l'objet ou 'new' si absent.
224 * @param int $id_rubrique identifiant de la rubrique.
225 * @param string $retour lien pour le retour.
226 * @param string $associer_objet
227 *     Éventuel 'objet|x' indiquant de lier le mot créé à cet objet,
228 *     tel que 'article|3'
229 * @param int $lier_trad
230 * @param string $config_fonc
231 * @param array $row
232 * @param array $hidden
233 * @uses formulaires_editer_objet_traiter()
234 * @uses objet_associer()
235 *
236 */
237function formulaires_editer_pensebete_traiter_dist($id_pensebete='new', $id_rubrique=0, $retour='', $associer_objet, $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
238        // éviter que l'auteur soit associé au pense-bête.
239        set_request('id_auteur','');
240       
241        // rompre l'association si nécessaire           
242        if (_request('c_associe')=='non'){
243                set_request('associer_objet','');
244        } else { // on garde la donnée de redirection s'il y a une association
245                $redirect=_request('redirect');
246        }
247
248        // on traite les données
249        $retours = formulaires_editer_objet_traiter('pensebete',_request('id_pensebete'),$id_parent,$lier_trad,_request('retour'),_request('config_fonc'),_request('row'),_request('hidden'));
250       
251        // associer le pensebete à un objet
252        if (_request('associer_objet') AND $id_pensebete=$retours['id_pensebete']) {                   
253                if (intval(_request('associer_objet'))) {
254                                // compat avec l'appel de la forme ajouter_id_article
255                                $objet = 'article';
256                                $id_objet = intval(_request('associer_objet'));
257                } else {
258                                list($objet, $id_objet) = explode('|', _request('associer_objet'));
259                }
260                if ($objet and $id_objet and autoriser('modifier', $objet, $id_objet)) {
261                        include_spip('action/editer_liens');
262                        objet_associer( array('pensebete'=>$id_pensebete), array($objet=>$id_objet) );
263                        // rediriger vers l'objet
264                        if (isset($redirect)) {
265                                $retours['redirect'] = parametre_url($redirect, 'id_lien_ajoute', $id_pensebete, '&');
266                        }
267                        return $retours;
268                }
269                else
270                        return array('message_erreur'=>_T('pensebete:erreur_association'));
271        } // si remord par rapport à l'association à l'objet, rediriger vers le pense-bête
272        elseif (_request('c_associe')=='non')
273                $retours['redirect']=generer_url_ecrire('pensebete','id_pensebete='.$retours['id_pensebete']);
274
275        return $retours;       
276}
277
Note: See TracBrowser for help on using the repository browser.