3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
6 * Copyright (c) 2001-2019 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
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 \***************************************************************************/
14 * Gestion du formulaire de d'édition d'un site
16 * @package SPIP\Sites\Formulaires
19 if (!defined("_ECRIRE_INC_VERSION")) {
23 include_spip('inc/actions');
24 include_spip('inc/editer');
25 include_spip('inc/filtres'); // pour vider_url()
28 * Chargement du formulaire d'édition d'un site
30 * @uses formulaires_editer_objet_charger()
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
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.
47 * Environnement du formulaire
49 function formulaires_editer_site_charger_dist(
54 $config_fonc = 'sites_edit_config',
58 $valeurs = formulaires_editer_objet_charger('site', $id_syndic, $id_rubrique, $lier_trad, $retour, $config_fonc, $row,
60 # pour recuperer le logo issu d'analyse auto
61 $valeurs['logo'] = '';
62 $valeurs['format_logo'] = '';
68 * Identifier le formulaire en faisant abstraction des paramètres qui
69 * ne représentent pas l'objet edité
71 * @param int|string $id_syndic
72 * Identifiant du site. 'new' pour un nouveau site.
73 * @param int $id_rubrique
74 * Identifiant de la rubrique parente (si connue)
75 * @param string $retour
76 * URL de redirection après le traitement
77 * @param int $lier_trad
78 * Identifiant éventuel d'un site source de traduction
79 * @param string $config_fonc
80 * Nom de la fonction ajoutant des configurations particulières au formulaire
82 * Valeurs de la ligne SQL du mot, si connu
83 * @param string $hidden
84 * Contenu HTML ajouté en même temps que les champs cachés du formulaire.
88 function formulaires_editer_site_identifier_dist(
93 $config_fonc = 'sites_edit_config',
97 return serialize(array(intval($id_syndic), $lier_trad));
101 * Choix par défaut des options de présentation
104 * Valeurs de la ligne SQL d'un site, si connu
106 * Configuration pour le formulaire
108 function sites_edit_config($row) {
111 $config = $GLOBALS['meta'];
112 $config['lignes'] = 8;
113 $config['langue'] = $spip_lang;
115 $config['restreint'] = false;
121 * Vérifications du formulaire d'édition de site
123 * @uses formulaires_editer_objet_verifier()
125 * @param int|string $id_syndic
126 * Identifiant du site. 'new' pour un nouveau site.
127 * @param int $id_rubrique
128 * Identifiant de la rubrique parente (si connue)
129 * @param string $retour
130 * URL de redirection après le traitement
131 * @param int $lier_trad
132 * Identifiant éventuel d'un site source de traduction
133 * @param string $config_fonc
134 * Nom de la fonction ajoutant des configurations particulières au formulaire
136 * Valeurs de la ligne SQL du mot, si connu
137 * @param string $hidden
138 * Contenu HTML ajouté en même temps que les champs cachés du formulaire.
140 * Erreurs du formulaire
142 function formulaires_editer_site_verifier_dist(
147 $config_fonc = 'sites_edit_config',
151 include_spip('inc/filtres');
152 include_spip('inc/site');
153 $oblis = array('nom_site', 'url_site', 'id_parent');
154 // Envoi depuis le formulaire d'analyse automatique d'un site
155 if (_request('ajoute_url_auto') and strlen(vider_url($u = _request('url_auto')))) {
156 if ($auto = analyser_site($u)) {
157 // Si pas de logo, on va le chercher dans le ou les feeds
158 if (isset($auto['url_syndic'])
159 && !(isset($auto['logo']) and $auto['logo'])
160 && ($auto['url_syndic'] != _request('ajouter_url_auto'))
161 && preg_match(',^select: (.+),', $auto['url_syndic'], $regs)
163 $url_syndic = str_replace('select: ', '', $auto['url_syndic']);
164 $feeds = explode(' ', $regs[1]);
165 foreach ($feeds as $feed) {
166 if (($auto_syndic = analyser_site($feed)) && isset($auto_syndic['format_logo'])) {
167 $auto['format_logo'] = $auto_syndic['format_logo'];
168 $auto['logo'] = $auto_syndic['logo'];
173 foreach ($auto as $k => $v) {
176 $erreurs['verif_url_auto'] = _T('sites:texte_referencement_automatique_verifier', array('url' => $u));
177 $erreurs['message_erreur'] = '';
179 $erreurs['url_auto'] = _T('sites:avis_site_introuvable');
182 // auto-renseigner le titre si il n'existe pas
183 // d'abord a partir du descriptif en coupant
184 titre_automatique('nom_site', array('descriptif'));
185 // et sinon l'url du site, sans couper
186 titre_automatique('nom_site', array('url_site'), 255);
187 $erreurs = formulaires_editer_objet_verifier('site', $id_syndic, $oblis);
194 * Traitements du formulaire d'édition de site
196 * @uses formulaires_editer_objet_traiter()
198 * @param int|string $id_syndic
199 * Identifiant du site. 'new' pour un nouveau site.
200 * @param int $id_rubrique
201 * Identifiant de la rubrique parente (si connue)
202 * @param string $retour
203 * URL de redirection après le traitement
204 * @param int $lier_trad
205 * Identifiant éventuel d'un site source de traduction
206 * @param string $config_fonc
207 * Nom de la fonction ajoutant des configurations particulières au formulaire
209 * Valeurs de la ligne SQL du mot, si connu
210 * @param string $hidden
211 * Contenu HTML ajouté en même temps que les champs cachés du formulaire.
213 * Erreurs du formulaire
215 function formulaires_editer_site_traiter_dist(
220 $config_fonc = 'sites_edit_config',
224 // netoyer les entrees
225 if (!is_null(_request('url_site'))) {
226 set_request('url_site', vider_url(_request('url_site')));
229 return formulaires_editer_objet_traiter('site', $id_syndic, $id_rubrique, $lier_trad, $retour, $config_fonc, $row,