f02b1ef65e4b8b7b50f34ae2731ade695233a620
[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 // il faut enlever l'id_rubrique car la saisie se fait sur id_parent
68 // et id_rubrique peut etre passe dans l'url comme rubrique parent initiale
69 // et sera perdue si elle est supposee saisie
70 return $valeurs;
71 }
72
73 /**
74 * Identifier le formulaire en faisant abstraction des paramètres qui
75 * ne représentent pas l'objet édité
76 *
77 * @param int|string $id_article
78 * Identifiant de l'article. 'new' pour une nouvel article.
79 * @param int $id_rubrique
80 * Identifiant de la rubrique parente
81 * @param string $retour
82 * URL de redirection après le traitement
83 * @param int $lier_trad
84 * Identifiant éventuel d'un article source de traduction
85 * @param string $config_fonc
86 * Nom de la fonction ajoutant des configurations particulières au formulaire
87 * @param array $row
88 * Valeurs de la ligne SQL de l'article, si connu
89 * @param string $hidden
90 * Contenu HTML ajouté en même temps que les champs cachés du formulaire.
91 * @return string
92 * Hash du formulaire
93 */
94 function formulaires_editer_article_identifier_dist(
95 $id_article = 'new',
96 $id_rubrique = 0,
97 $retour = '',
98 $lier_trad = 0,
99 $config_fonc = 'articles_edit_config',
100 $row = array(),
101 $hidden = ''
102 ) {
103 return serialize(array(intval($id_article), $lier_trad));
104 }
105
106 /**
107 * Choix par défaut des options de présentation
108 *
109 * @param array $row
110 * Valeurs de la ligne SQL d'un article, si connu
111 * return array
112 * Configuration pour le formulaire
113 */
114 function articles_edit_config($row) {
115 global $spip_lang;
116
117 $config = $GLOBALS['meta'];
118 $config['lignes'] = 8;
119 $config['langue'] = $spip_lang;
120
121 $config['restreint'] = ($row['statut'] == 'publie');
122
123 return $config;
124 }
125
126 /**
127 * Vérifications du formulaire d'édition d'article
128 *
129 * @uses formulaires_editer_objet_verifier()
130 *
131 * @param int|string $id_article
132 * Identifiant de l'article. 'new' pour une nouvel article.
133 * @param int $id_rubrique
134 * Identifiant de la rubrique parente
135 * @param string $retour
136 * URL de redirection après le traitement
137 * @param int $lier_trad
138 * Identifiant éventuel d'un article source de traduction
139 * @param string $config_fonc
140 * Nom de la fonction ajoutant des configurations particulières au formulaire
141 * @param array $row
142 * Valeurs de la ligne SQL de l'article, si connu
143 * @param string $hidden
144 * Contenu HTML ajouté en même temps que les champs cachés du formulaire.
145 * @return array
146 * Erreurs du formulaire
147 **/
148 function formulaires_editer_article_verifier_dist(
149 $id_article = 'new',
150 $id_rubrique = 0,
151 $retour = '',
152 $lier_trad = 0,
153 $config_fonc = 'articles_edit_config',
154 $row = array(),
155 $hidden = ''
156 ) {
157 // auto-renseigner le titre si il n'existe pas
158 titre_automatique('titre', array('descriptif', 'chapo', 'texte'));
159 // on ne demande pas le titre obligatoire : il sera rempli a la volee dans editer_article si vide
160 $erreurs = formulaires_editer_objet_verifier('article', $id_article, array('id_parent'));
161 // si on utilise le formulaire dans le public
162 if (!function_exists('autoriser')) {
163 include_spip('inc/autoriser');
164 }
165 if (!isset($erreurs['id_parent'])
166 and !autoriser('creerarticledans', 'rubrique', _request('id_parent'))
167 ) {
168 $erreurs['id_parent'] = _T('info_creerdansrubrique_non_autorise');
169 }
170
171 return $erreurs;
172 }
173
174 /**
175 * Traitements du formulaire d'édition d'article
176 *
177 * @uses formulaires_editer_objet_traiter()
178 *
179 * @param int|string $id_article
180 * Identifiant de l'article. 'new' pour une nouvel article.
181 * @param int $id_rubrique
182 * Identifiant de la rubrique parente
183 * @param string $retour
184 * URL de redirection après le traitement
185 * @param int $lier_trad
186 * Identifiant éventuel d'un article source de traduction
187 * @param string $config_fonc
188 * Nom de la fonction ajoutant des configurations particulières au formulaire
189 * @param array $row
190 * Valeurs de la ligne SQL de l'article, si connu
191 * @param string $hidden
192 * Contenu HTML ajouté en même temps que les champs cachés du formulaire.
193 * @return array
194 * Retours des traitements
195 **/
196 function formulaires_editer_article_traiter_dist(
197 $id_article = 'new',
198 $id_rubrique = 0,
199 $retour = '',
200 $lier_trad = 0,
201 $config_fonc = 'articles_edit_config',
202 $row = array(),
203 $hidden = ''
204 ) {
205 // ici on ignore changer_lang qui est poste en cas de trad,
206 // car l'heuristique du choix de la langue est pris en charge par article_inserer
207 // en fonction de la config du site et de la rubrique choisie
208 set_request('changer_lang');
209
210 return formulaires_editer_objet_traiter(
211 'article',
212 $id_article,
213 $id_rubrique,
214 $lier_trad,
215 $retour,
216 $config_fonc,
217 $row,
218 $hidden
219 );
220 }