[SPIP] v3.2.7-->v3.2.9
[lhc/web/www.git] / www / prive / formulaires / editer_article.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2019 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 /**
14 * Gestion du formulaire de d'édition d'article
15 *
16 * @package SPIP\Core\Articles\Formulaires
17 **/
18
19 if (!defined('_ECRIRE_INC_VERSION')) {
20 return;
21 }
22
23 include_spip('inc/actions');
24 include_spip('inc/editer');
25
26 /**
27 * Chargement du formulaire d'édition d'article
28 *
29 * @uses formulaires_editer_objet_charger()
30 *
31 * @param int|string $id_article
32 * Identifiant de l'article. 'new' pour une nouvel article.
33 * @param int $id_rubrique
34 * Identifiant de la rubrique parente
35 * @param string $retour
36 * URL de redirection après le traitement
37 * @param int $lier_trad
38 * Identifiant éventuel d'un article source de traduction
39 * @param string $config_fonc
40 * Nom de la fonction ajoutant des configurations particulières au formulaire
41 * @param array $row
42 * Valeurs de la ligne SQL de l'article, si connu
43 * @param string $hidden
44 * Contenu HTML ajouté en même temps que les champs cachés du formulaire.
45 * @return array
46 * Environnement du formulaire
47 **/
48 function formulaires_editer_article_charger_dist(
49 $id_article = 'new',
50 $id_rubrique = 0,
51 $retour = '',
52 $lier_trad = 0,
53 $config_fonc = 'articles_edit_config',
54 $row = array(),
55 $hidden = ''
56 ) {
57 $valeurs = formulaires_editer_objet_charger(
58 'article',
59 $id_article,
60 $id_rubrique,
61 $lier_trad,
62 $retour,
63 $config_fonc,
64 $row,
65 $hidden
66 );
67
68 if (test_formulaire_inclus_par_modele()) {
69 if (intval($id_article) and !autoriser('modifier', 'article', intval($id_article))) {
70 $valeurs['editable'] = '';
71 }
72 }
73
74 // il faut enlever l'id_rubrique car la saisie se fait sur id_parent
75 // et id_rubrique peut etre passe dans l'url comme rubrique parent initiale
76 // et sera perdue si elle est supposee saisie
77 return $valeurs;
78 }
79
80 /**
81 * Identifier le formulaire en faisant abstraction des paramètres qui
82 * ne représentent pas l'objet édité
83 *
84 * @param int|string $id_article
85 * Identifiant de l'article. 'new' pour une nouvel article.
86 * @param int $id_rubrique
87 * Identifiant de la rubrique parente
88 * @param string $retour
89 * URL de redirection après le traitement
90 * @param int $lier_trad
91 * Identifiant éventuel d'un article source de traduction
92 * @param string $config_fonc
93 * Nom de la fonction ajoutant des configurations particulières au formulaire
94 * @param array $row
95 * Valeurs de la ligne SQL de l'article, si connu
96 * @param string $hidden
97 * Contenu HTML ajouté en même temps que les champs cachés du formulaire.
98 * @return string
99 * Hash du formulaire
100 */
101 function formulaires_editer_article_identifier_dist(
102 $id_article = 'new',
103 $id_rubrique = 0,
104 $retour = '',
105 $lier_trad = 0,
106 $config_fonc = 'articles_edit_config',
107 $row = array(),
108 $hidden = ''
109 ) {
110 return serialize(array(intval($id_article), $lier_trad));
111 }
112
113 /**
114 * Choix par défaut des options de présentation
115 *
116 * @param array $row
117 * Valeurs de la ligne SQL d'un article, si connu
118 * return array
119 * Configuration pour le formulaire
120 */
121 function articles_edit_config($row) {
122 global $spip_lang;
123
124 $config = $GLOBALS['meta'];
125 $config['lignes'] = 8;
126 $config['langue'] = $spip_lang;
127
128 $config['restreint'] = ($row['statut'] == 'publie');
129
130 return $config;
131 }
132
133 /**
134 * Vérifications du formulaire d'édition d'article
135 *
136 * @uses formulaires_editer_objet_verifier()
137 *
138 * @param int|string $id_article
139 * Identifiant de l'article. 'new' pour une nouvel article.
140 * @param int $id_rubrique
141 * Identifiant de la rubrique parente
142 * @param string $retour
143 * URL de redirection après le traitement
144 * @param int $lier_trad
145 * Identifiant éventuel d'un article source de traduction
146 * @param string $config_fonc
147 * Nom de la fonction ajoutant des configurations particulières au formulaire
148 * @param array $row
149 * Valeurs de la ligne SQL de l'article, si connu
150 * @param string $hidden
151 * Contenu HTML ajouté en même temps que les champs cachés du formulaire.
152 * @return array
153 * Erreurs du formulaire
154 **/
155 function formulaires_editer_article_verifier_dist(
156 $id_article = 'new',
157 $id_rubrique = 0,
158 $retour = '',
159 $lier_trad = 0,
160 $config_fonc = 'articles_edit_config',
161 $row = array(),
162 $hidden = ''
163 ) {
164 // auto-renseigner le titre si il n'existe pas
165 titre_automatique('titre', array('descriptif', 'chapo', 'texte'));
166 // on ne demande pas le titre obligatoire : il sera rempli a la volee dans editer_article si vide
167 $erreurs = formulaires_editer_objet_verifier('article', $id_article, array('id_parent'));
168 // si on utilise le formulaire dans le public
169 if (!function_exists('autoriser')) {
170 include_spip('inc/autoriser');
171 }
172 if (!isset($erreurs['id_parent'])
173 and !autoriser('creerarticledans', 'rubrique', _request('id_parent'))
174 ) {
175 $erreurs['id_parent'] = _T('info_creerdansrubrique_non_autorise');
176 }
177
178 return $erreurs;
179 }
180
181 /**
182 * Traitements du formulaire d'édition d'article
183 *
184 * @uses formulaires_editer_objet_traiter()
185 *
186 * @param int|string $id_article
187 * Identifiant de l'article. 'new' pour une nouvel article.
188 * @param int $id_rubrique
189 * Identifiant de la rubrique parente
190 * @param string $retour
191 * URL de redirection après le traitement
192 * @param int $lier_trad
193 * Identifiant éventuel d'un article source de traduction
194 * @param string $config_fonc
195 * Nom de la fonction ajoutant des configurations particulières au formulaire
196 * @param array $row
197 * Valeurs de la ligne SQL de l'article, si connu
198 * @param string $hidden
199 * Contenu HTML ajouté en même temps que les champs cachés du formulaire.
200 * @return array
201 * Retours des traitements
202 **/
203 function formulaires_editer_article_traiter_dist(
204 $id_article = 'new',
205 $id_rubrique = 0,
206 $retour = '',
207 $lier_trad = 0,
208 $config_fonc = 'articles_edit_config',
209 $row = array(),
210 $hidden = ''
211 ) {
212 // ici on ignore changer_lang qui est poste en cas de trad,
213 // car l'heuristique du choix de la langue est pris en charge par article_inserer
214 // en fonction de la config du site et de la rubrique choisie
215 set_request('changer_lang');
216
217 return formulaires_editer_objet_traiter(
218 'article',
219 $id_article,
220 $id_rubrique,
221 $lier_trad,
222 $retour,
223 $config_fonc,
224 $row,
225 $hidden
226 );
227 }