8eef3aad8fe6a4b6b389ca0cb7b1d25a906ffee9
[lhc/web/www.git] / www / plugins-dist / sites / formulaires / editer_site.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2020 *
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'un site
15 *
16 * @package SPIP\Sites\Formulaires
17 **/
18
19 if (!defined("_ECRIRE_INC_VERSION")) {
20 return;
21 }
22
23 include_spip('inc/actions');
24 include_spip('inc/editer');
25 include_spip('inc/filtres'); // pour vider_url()
26
27 /**
28 * Chargement du formulaire d'édition d'un site
29 *
30 * @uses formulaires_editer_objet_charger()
31 *
32 * @param int|string $id_syndic
33 * Identifiant du site. 'new' pour un nouveau site.
34 * @param int $id_rubrique
35 * Identifiant de la rubrique parente (si connue)
36 * @param string $retour
37 * URL de redirection après le traitement
38 * @param int $lier_trad
39 * Identifiant éventuel d'un site source de traduction
40 * @param string $config_fonc
41 * Nom de la fonction ajoutant des configurations particulières au formulaire
42 * @param array $row
43 * Valeurs de la ligne SQL du mot, si connu
44 * @param string $hidden
45 * Contenu HTML ajouté en même temps que les champs cachés du formulaire.
46 * @return array
47 * Environnement du formulaire
48 **/
49 function formulaires_editer_site_charger_dist(
50 $id_syndic = 'new',
51 $id_rubrique = 0,
52 $retour = '',
53 $lier_trad = 0,
54 $config_fonc = 'sites_edit_config',
55 $row = array(),
56 $hidden = ''
57 ) {
58 $valeurs = formulaires_editer_objet_charger('site', $id_syndic, $id_rubrique, $lier_trad, $retour, $config_fonc, $row,
59 $hidden);
60 # pour recuperer le logo issu d'analyse auto
61 $valeurs['logo'] = '';
62 $valeurs['format_logo'] = '';
63
64 if (test_formulaire_inclus_par_modele()) {
65 if (intval($id_syndic) and !autoriser('modifier', 'site', intval($id_syndic))) {
66 $valeurs['editable'] = '';
67 }
68 }
69
70 return $valeurs;
71 }
72
73 /**
74 * Identifier le formulaire en faisant abstraction des paramètres qui
75 * ne représentent pas l'objet edité
76 *
77 * @param int|string $id_syndic
78 * Identifiant du site. 'new' pour un nouveau site.
79 * @param int $id_rubrique
80 * Identifiant de la rubrique parente (si connue)
81 * @param string $retour
82 * URL de redirection après le traitement
83 * @param int $lier_trad
84 * Identifiant éventuel d'un site 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 du mot, 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_site_identifier_dist(
95 $id_syndic = 'new',
96 $id_rubrique = 0,
97 $retour = '',
98 $lier_trad = 0,
99 $config_fonc = 'sites_edit_config',
100 $row = array(),
101 $hidden = ''
102 ) {
103 return serialize(array(intval($id_syndic), $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 site, si connu
111 * return array
112 * Configuration pour le formulaire
113 */
114 function sites_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'] = false;
122
123 return $config;
124 }
125
126 /**
127 * Vérifications du formulaire d'édition de site
128 *
129 * @uses formulaires_editer_objet_verifier()
130 *
131 * @param int|string $id_syndic
132 * Identifiant du site. 'new' pour un nouveau site.
133 * @param int $id_rubrique
134 * Identifiant de la rubrique parente (si connue)
135 * @param string $retour
136 * URL de redirection après le traitement
137 * @param int $lier_trad
138 * Identifiant éventuel d'un site 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 du mot, 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_site_verifier_dist(
149 $id_syndic = 'new',
150 $id_rubrique = 0,
151 $retour = '',
152 $lier_trad = 0,
153 $config_fonc = 'sites_edit_config',
154 $row = array(),
155 $hidden = ''
156 ) {
157 include_spip('inc/filtres');
158 include_spip('inc/site');
159 $oblis = array('nom_site', 'url_site', 'id_parent');
160 // Envoi depuis le formulaire d'analyse automatique d'un site
161 if (_request('ajoute_url_auto') and strlen(vider_url($u = _request('url_auto')))) {
162 if ($auto = analyser_site($u)) {
163 // Si pas de logo, on va le chercher dans le ou les feeds
164 if (isset($auto['url_syndic'])
165 && !(isset($auto['logo']) and $auto['logo'])
166 && ($auto['url_syndic'] != _request('ajouter_url_auto'))
167 && preg_match(',^select: (.+),', $auto['url_syndic'], $regs)
168 ) {
169 $url_syndic = str_replace('select: ', '', $auto['url_syndic']);
170 $feeds = explode(' ', $regs[1]);
171 foreach ($feeds as $feed) {
172 if (($auto_syndic = analyser_site($feed)) && isset($auto_syndic['format_logo'])) {
173 $auto['format_logo'] = $auto_syndic['format_logo'];
174 $auto['logo'] = $auto_syndic['logo'];
175 break;
176 }
177 }
178 }
179 foreach ($auto as $k => $v) {
180 set_request($k, $v);
181 }
182 $erreurs['verif_url_auto'] = _T('sites:texte_referencement_automatique_verifier', array('url' => $u));
183 $erreurs['message_erreur'] = '';
184 } else {
185 $erreurs['url_auto'] = _T('sites:avis_site_introuvable');
186 }
187 } else {
188 // auto-renseigner le titre si il n'existe pas
189 // d'abord a partir du descriptif en coupant
190 titre_automatique('nom_site', array('descriptif'));
191 // et sinon l'url du site, sans couper
192 titre_automatique('nom_site', array('url_site'), 255);
193 $erreurs = formulaires_editer_objet_verifier('site', $id_syndic, $oblis);
194 }
195
196 return $erreurs;
197 }
198
199 /**
200 * Traitements du formulaire d'édition de site
201 *
202 * @uses formulaires_editer_objet_traiter()
203 *
204 * @param int|string $id_syndic
205 * Identifiant du site. 'new' pour un nouveau site.
206 * @param int $id_rubrique
207 * Identifiant de la rubrique parente (si connue)
208 * @param string $retour
209 * URL de redirection après le traitement
210 * @param int $lier_trad
211 * Identifiant éventuel d'un site source de traduction
212 * @param string $config_fonc
213 * Nom de la fonction ajoutant des configurations particulières au formulaire
214 * @param array $row
215 * Valeurs de la ligne SQL du mot, si connu
216 * @param string $hidden
217 * Contenu HTML ajouté en même temps que les champs cachés du formulaire.
218 * @return array
219 * Erreurs du formulaire
220 */
221 function formulaires_editer_site_traiter_dist(
222 $id_syndic = 'new',
223 $id_rubrique = 0,
224 $retour = '',
225 $lier_trad = 0,
226 $config_fonc = 'sites_edit_config',
227 $row = array(),
228 $hidden = ''
229 ) {
230 // netoyer les entrees
231 if (!is_null(_request('url_site'))) {
232 set_request('url_site', vider_url(_request('url_site')));
233 }
234
235 return formulaires_editer_objet_traiter('site', $id_syndic, $id_rubrique, $lier_trad, $retour, $config_fonc, $row,
236 $hidden);
237 }