Mise en route du suivi.
[aidenligne_francais_universite.git] / ecrire / inc / config.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2007 *
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 if (!defined("_ECRIRE_INC_VERSION")) return;
15 include_spip('inc/meta');
16
17 //
18 // Appliquer les valeurs par defaut pour les options non initialisees
19 //
20 // http://doc.spip.org/@init_config
21 function init_config() {
22 // langue par defaut du site = langue d'installation (cookie spip_lang) sinon francais
23 if (!$lang = $GLOBALS['spip_lang'])
24 $lang = 'fr';
25
26 $liste_meta = array(
27 'nom_site' => _T('info_mon_site_spip'),
28 'descriptif_site' => '',
29 'activer_breves' => 'oui',
30 'config_precise_groupes' => 'non',
31 'mots_cles_forums' => 'non',
32 'articles_surtitre' => 'oui',
33 'articles_soustitre' => 'oui',
34 'articles_descriptif' => 'oui',
35 'articles_chapeau' => 'oui',
36 'articles_ps' => 'oui',
37 'articles_redac' => 'non',
38 'articles_mots' => 'oui',
39 'post_dates' => 'oui',
40 'articles_urlref' => 'non',
41 'creer_preview' => 'non',
42 'taille_preview' => 150,
43 'articles_modif' => 'non',
44
45 'activer_sites' => 'oui',
46 'proposer_sites' => 0,
47 'activer_syndic' => 'oui',
48 'visiter_sites' => 'non',
49 'moderation_sites' => 'non',
50
51 'forums_publics' => 'posteriori',
52 'accepter_inscriptions' => 'non',
53 'accepter_visiteurs' => 'non',
54 'prevenir_auteurs' => 'non',
55 'suivi_edito' => 'non',
56 'quoi_de_neuf' => 'non',
57 'forum_prive_admin' => 'non',
58
59 'activer_moteur' => 'oui',
60 'articles_versions' => 'non',
61 'articles_ortho' => 'non',
62 'preview' => 'non',
63 'activer_statistiques' => 'oui',
64
65 'documents_article' => 'oui',
66 'documents_rubrique' => 'non',
67 'charset' => _DEFAULT_CHARSET,
68 'syndication_integrale' => 'oui',
69
70 'creer_htpasswd' => 'non',
71 'creer_htaccess' => 'non',
72
73 'langue_site' => $lang,
74
75 'multi_articles' => 'non',
76 'multi_rubriques' => 'non',
77 'multi_secteurs' => 'non',
78 'gerer_trad' => 'non',
79 'langues_multilingue' => $GLOBALS['all_langs']
80 );
81 while (list($nom, $valeur) = each($liste_meta)) {
82 if (!$GLOBALS['meta'][$nom]) {
83 ecrire_meta($nom, $valeur);
84 $modifs = true;
85 }
86 }
87
88 if (isset($GLOBALS['meta']['nouvelle_install']) && $GLOBALS['meta']['nouvelle_install'] == 'oui') {
89 effacer_meta('nouvelle_install');
90 $modifs = true;
91 }
92
93 if ($modifs) ecrire_metas();
94
95 calculer_langues_utilisees();
96 }
97
98
99 // http://doc.spip.org/@avertissement_config
100 function avertissement_config() {
101 global $spip_lang_right, $spip_lang_left;
102 $texte = debut_boite_info(true);
103
104 $texte .= "\n<div class='verdana2' style='text-align: justify'>
105 <p style='text-align: center'><b>"._T('avis_attention')."</b></p>";
106 $texte .= http_img_pack("warning.gif", (_T('avis_attention')),
107 "width='48' height='48' style='float: $spip_lang_right; padding-$spip_lang_left: 10px;'");
108 $texte .= _T('texte_inc_config');
109 $texte .= "</div>";
110 $texte .= fin_boite_info(true);
111 $texte .= "<p>&nbsp;</p>\n";
112
113 return $texte;
114 }
115
116
117 // http://doc.spip.org/@bouton_radio
118 function bouton_radio($nom, $valeur, $titre, $actif = false, $onClick="") {
119 static $id_label = 0;
120
121 if (strlen($onClick) > 0) $onClick = " onclick=\"$onClick\"";
122 $texte = "<input type='radio' name='$nom' value='$valeur' id='label_$id_label'$onClick";
123 if ($actif) {
124 $texte .= ' checked="checked"';
125 $titre = '<b>'.$titre.'</b>';
126 }
127 $texte .= " /> <label for='label_$id_label'>$titre</label>\n";
128 $id_label++;
129 return $texte;
130 }
131
132
133 // http://doc.spip.org/@afficher_choix
134 function afficher_choix($nom, $valeur_actuelle, $valeurs, $sep = "<br />") {
135 while (list($valeur, $titre) = each($valeurs)) {
136 $choix[] = bouton_radio($nom, $valeur, $titre, $valeur == $valeur_actuelle);
137 }
138 return "\n".join($sep, $choix);
139 }
140
141
142 //
143 // Gestion des modifs
144 //
145
146 // http://doc.spip.org/@appliquer_modifs_config
147 function appliquer_modifs_config() {
148 global $email_webmaster, $descriptif_site, $email_envoi, $post_dates, $tester_proxy, $test_proxy, $http_proxy, $activer_moteur;
149 global $forums_publics, $forums_publics_appliquer;
150 global $charset, $charset_custom, $langues_auth;
151 global $retour_proxy;
152
153 if (_request('adresse_site'))
154 $_POST['adresse_site'] = preg_replace(",/?\s*$,", "", _request('adresse_site'));
155
156 // Purger les squelettes si un changement de meta les affecte
157 if ($post_dates AND ($post_dates != $GLOBALS['meta']["post_dates"]))
158 $purger_skel = true;
159 if ($forums_publics AND ($forums_publics != $GLOBALS['meta']["forums_publics"]))
160 $purger_skel = true;
161
162 // Appliquer les changements de moderation forum
163 // forums_publics_appliquer : futur, saufnon, tous
164 $accepter_forum = substr($forums_publics,0,3);
165 if ($forums_publics_appliquer == 'saufnon')
166 spip_query("UPDATE spip_articles SET accepter_forum='$accepter_forum' WHERE accepter_forum != 'non'");
167 else if ($forums_publics_appliquer == 'tous')
168 spip_query("UPDATE spip_articles SET accepter_forum='$accepter_forum'");
169
170 if ($accepter_forum == 'abo')
171 ecrire_meta('accepter_visiteurs', 'oui');
172
173 // Test du proxy : $tester_proxy est le bouton "submit"
174
175 // http_proxy : ne pas prendre en compte la modif si le password est '****'
176 if (preg_match(',:\*\*\*\*@,', $http_proxy))
177 $http_proxy = $GLOBALS['meta']['http_proxy'];
178
179 $retour_proxy = '';
180 if ($tester_proxy) {
181 if (!$test_proxy) {
182 $retour_proxy = _T('info_adresse_non_indiquee');
183 } else {
184 include_spip('inc/distant');
185 $page = recuperer_page($test_proxy, true);
186 if ($page)
187 $retour_proxy = "<p>"._T('info_proxy_ok')."</p>\n<tt>".couper(entites_html($page),300)."</tt>";
188 else
189 $retour_proxy = _T('info_impossible_lire_page', array('test_proxy' => $test_proxy))." <tt>".no_password_proxy_url($http_proxy)."</tt>.".aide('confhttpproxy');
190 }
191 }
192
193 // Activer le moteur : dresser la liste des choses a indexer
194 if ($activer_moteur == 'oui' AND ($activer_moteur != $GLOBALS['meta']["activer_moteur"])) {
195 include_spip('inc/indexation');
196 creer_liste_indexation();
197 }
198
199 if ($langues_auth) {
200 set_request('langues_multilingue', join($langues_auth, ","));
201 }
202
203 if (isset($email_webmaster))
204 ecrire_meta("email_webmaster", $email_webmaster);
205 if (isset($email_envoi))
206 ecrire_meta("email_envoi", $email_envoi);
207 if ($charset == 'custom') $charset = $charset_custom;
208
209 $liste_meta = array(
210 'nom_site',
211 'adresse_site',
212 'descriptif_site',
213
214 'activer_breves',
215 'config_precise_groupes',
216 'mots_cles_forums',
217 'articles_surtitre',
218 'articles_soustitre',
219 'articles_descriptif',
220 'articles_chapeau',
221 'articles_ps',
222 'articles_redac',
223 'articles_mots',
224 'post_dates',
225 'articles_urlref',
226 'creer_preview',
227 'taille_preview',
228 'articles_modif',
229
230 'activer_sites',
231 'proposer_sites',
232 'activer_syndic',
233 'visiter_sites',
234 'moderation_sites',
235 'http_proxy',
236
237 'forums_publics',
238 'accepter_inscriptions',
239 'accepter_visiteurs',
240 'prevenir_auteurs',
241 'suivi_edito',
242 'adresse_suivi',
243 'adresse_suivi_inscription',
244 'quoi_de_neuf',
245 'adresse_neuf',
246 'jours_neuf',
247 'forum_prive_admin',
248
249 'activer_moteur',
250 'articles_versions',
251 'articles_ortho',
252 'preview',
253 'activer_statistiques',
254
255 'documents_article',
256 'documents_rubrique',
257 'syndication_integrale',
258
259 'charset',
260 'multi_articles',
261 'multi_rubriques',
262 'multi_secteurs',
263 'gerer_trad',
264 'langues_multilingue'
265 );
266 // Modification du reglage accepter_inscriptions => vider le cache
267 // (pour repercuter la modif sur le panneau de login)
268 if (isset($GLOBALS['accepter_inscriptions'])
269 AND ($GLOBALS['accepter_inscriptions']
270 != $GLOBALS['meta']['accepter_inscriptions'])) {
271 include_spip('inc/invalideur');
272 suivre_invalideur("1"); # tout effacer
273 }
274
275 foreach($liste_meta as $i)
276 if (!(_request($i)===NULL))
277 ecrire_meta($i, _request($i));
278
279 // langue_site : la globale est mangee par inc_version
280 if ($lang = $GLOBALS['changer_langue_site']) {
281 $lang2 = $GLOBALS['spip_lang'];
282 if (changer_langue($lang)) {
283 ecrire_meta('langue_site', $lang);
284 changer_langue($lang2);
285 }
286 }
287
288 ecrire_metas();
289
290 // modifs de secu (necessitent une authentification ftp)
291 $liste_meta = array(
292 'creer_htpasswd',
293 'creer_htaccess'
294 );
295 while (list(,$i) = each($liste_meta))
296 if (isset($GLOBALS[$i]) AND ($GLOBALS[$i] != $GLOBALS['meta'][$i]))
297 $modif_secu=true;
298 if ($modif_secu) {
299 $admin = _T('info_modification_parametres_securite');
300 include_spip('inc/admin');
301 debut_admin($_POST['exec'], $admin);
302 reset($liste_meta);
303 while (list(,$i) = each($liste_meta))
304 if (isset($GLOBALS[$i])) ecrire_meta($i, $GLOBALS[$i]);
305 ecrire_metas();
306 fin_admin($admin);
307 }
308
309 if ($purger_skel) {
310 include_spip('inc/invalideur');
311 purger_repertoire(_DIR_SKELS);
312 }
313 }
314
315 // Ne pas afficher la partie 'password' du proxy
316 // http://doc.spip.org/@no_password_proxy_url
317 function no_password_proxy_url($http_proxy) {
318 if ($p = @parse_url($http_proxy)
319 AND $p['pass']) {
320 $p['pass'] = '****';
321 $http_proxy = glue_url($p);
322 }
323 return $http_proxy;
324 }
325
326
327 // Function glue_url : le pendant de parse_url
328 // http://doc.spip.org/@glue_url
329 function glue_url ($url){
330 if (!is_array($url)){
331 return false;
332 }
333 // scheme
334 $uri = (!empty($url['scheme'])) ? $url['scheme'].'://' : '';
335 // user & pass
336 if (!empty($url['user'])){
337 $uri .= $url['user'].':'.$url['pass'].'@';
338 }
339 // host
340 $uri .= $url['host'];
341 // port
342 $port = (!empty($url['port'])) ? ':'.$url['port'] : '';
343 $uri .= $port;
344 // path
345 $uri .= $url['path'];
346 // fragment or query
347 if (isset($url['fragment'])){
348 $uri .= '#'.$url['fragment'];
349 } elseif (isset($url['query'])){
350 $uri .= '?'.$url['query'];
351 }
352 return $uri;
353 }
354
355 ?>