Commit | Line | Data |
---|---|---|
c495c100 P |
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 | define("_ECRIRE_INC_VERSION", "1"); | |
16 | ||
17 | # compatibilite anciennes versions | |
18 | # si vous n'avez aucun fichier .php3, redefinissez a "" | |
19 | # ca fera foncer find_in_path | |
20 | @define('_EXTENSION_PHP', '.php3'); | |
21 | #@define('_EXTENSION_PHP', ''); | |
22 | ||
23 | # le nom du repertoire ecrire/ | |
24 | @define('_DIR_RESTREINT_ABS', 'ecrire/'); | |
25 | # sommes-nous dans ecrire/ ? | |
26 | @define('_DIR_RESTREINT', | |
27 | (!@is_dir(_DIR_RESTREINT_ABS) ? "" : _DIR_RESTREINT_ABS)); | |
28 | # ou inversement ? | |
29 | @define('_DIR_RACINE', _DIR_RESTREINT ? '' : '../'); | |
30 | ||
31 | // nombre de repertoires depuis la racine | |
32 | $profondeur_url = _DIR_RESTREINT ? 0 : 1; | |
33 | ||
34 | # le chemin http (relatif) vers les bibliotheques JavaScript | |
35 | define('_DIR_JAVASCRIPT', (_DIR_RACINE . 'dist/javascript/')); | |
36 | ||
37 | // Icones | |
38 | # le chemin http (relatif) vers les images standard | |
39 | define('_DIR_IMG_PACK', (_DIR_RACINE . 'dist/images/')); | |
40 | # le chemin des vignettes de type de document | |
41 | define('_DIR_IMG_ICONES_DIST', _DIR_RACINE . "dist/vignettes/"); | |
42 | # le chemin des icones de la barre d'edition des formulaires | |
43 | define('_DIR_IMG_ICONES_BARRE', _DIR_RACINE . "dist/icones_barre/"); | |
44 | ||
45 | # le chemin php (absolu) vers les images standard (pour hebergement centralise) | |
46 | define('_ROOT_IMG_PACK', dirname(dirname(__FILE__)) . '/dist/images/'); | |
47 | define('_ROOT_IMG_ICONES_DIST', dirname(dirname(__FILE__)) . '/dist/vignettes/'); | |
48 | ||
49 | ||
50 | # Le nom des 4 repertoires modifiables par les scripts lances par httpd | |
51 | # Par defaut ces 4 noms seront suffixes par _DIR_RACINE (cf plus bas) | |
52 | # mais on peut les mettre ailleurs et changer completement les noms | |
53 | ||
54 | # le nom du repertoire des fichiers Temporaires Inaccessibles par http:// | |
55 | define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/"); | |
56 | # le nom du repertoire des fichiers Temporaires Accessibles par http:// | |
57 | define('_NOM_TEMPORAIRES_ACCESSIBLES', "local/"); | |
58 | # le nom du repertoire des fichiers Permanents Inaccessibles par http:// | |
59 | define('_NOM_PERMANENTS_INACCESSIBLES', "config/"); | |
60 | # le nom du repertoire des fichiers Permanents Accessibles par http:// | |
61 | define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/"); | |
62 | ||
63 | // Le nom du fichier de personnalisation | |
64 | define('_NOM_CONFIG', 'mes_options'); | |
65 | ||
66 | // Son emplacement absolu si on le trouve | |
67 | ||
68 | if (@file_exists($f = _DIR_RESTREINT . _NOM_CONFIG . '.php') | |
69 | OR (_EXTENSION_PHP | |
70 | AND @file_exists($f = _DIR_RESTREINT . _NOM_CONFIG . _EXTENSION_PHP)) | |
71 | OR (@file_exists($f = _DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES . _NOM_CONFIG . '.php'))) { | |
72 | define('_FILE_OPTIONS', $f); | |
73 | } else define('_FILE_OPTIONS', ''); | |
74 | ||
75 | // *** Fin des define *** // | |
76 | ||
77 | // | |
78 | // *** Parametrage par defaut de SPIP *** | |
79 | // | |
80 | // Les globales qui suivent peuvent etre modifiees | |
81 | // dans le fichier de personnalisation indique ci-dessus. | |
82 | // Il suffit de copier les lignes ci-dessous, et ajouter le marquage de debut | |
83 | // et fin de fichier PHP ("< ?php" et "? >", sans les espaces) | |
84 | // Ne pas les rendre indefinies. | |
85 | ||
86 | // Prefixe des tables dans la base de donnees | |
87 | // (a modifier pour avoir plusieurs sites SPIP dans une seule base) | |
88 | $table_prefix = "spip"; | |
89 | ||
90 | // Prefixe et chemin des cookies | |
91 | // (a modifier pour installer des sites SPIP dans des sous-repertoires) | |
92 | $cookie_prefix = "spip"; | |
93 | $cookie_path = ""; | |
94 | ||
95 | // Dossier des squelettes | |
96 | // (a modifier si l'on veut passer rapidement d'un jeu de squelettes a un autre) | |
97 | $dossier_squelettes = ""; | |
98 | ||
99 | // faut-il autoriser SPIP a compresser les pages a la volee quand le | |
100 | // navigateur l'accepte (valable pour apache >= 1.3 seulement) ? | |
101 | $auto_compress = true; | |
102 | ||
103 | // Pour le javascript, trois modes : parano (-1), prive (0), ok (1) | |
104 | // parano le refuse partout, ok l'accepte partout | |
105 | // le mode par defaut le signale en rouge dans l'espace prive | |
106 | $filtrer_javascript = 0; | |
107 | // PS: dans les forums, petitions, flux syndiques... c'est *toujours* securise | |
108 | ||
109 | // Type d'URLs | |
110 | // 'page': spip.php?article123 [c'est la valeur par defaut pour SPIP 1.9] | |
111 | // 'html': article123.html | |
112 | // 'propres': Titre-de-l-article <http://lab.spip.net/spikini/UrlsPropres> | |
113 | // 'propres2' : Titre-de-l-article.html (base sur 'propres') | |
114 | // 'standard': article.php3?id_article=123 [urls SPIP < 1.9] | |
115 | $type_urls = 'page'; | |
116 | ||
117 | ||
118 | // | |
119 | // On note le numero IP du client dans la variable $ip | |
120 | // | |
121 | ($ip = @$_SERVER['HTTP_X_FORWARDED_FOR']) OR $ip = @$_SERVER['REMOTE_ADDR']; | |
122 | ||
123 | // Pour renforcer la privacy, decommentez la ligne ci-dessous (ou recopiez-la | |
124 | // dans le fichier config/mes_options) : SPIP ne pourra alors conserver aucun | |
125 | // numero IP, ni temporairement lors des visites (pour gerer les statistiques | |
126 | // ou dans spip.log), ni dans les forums (responsabilite) | |
127 | # $ip = substr(md5($ip),0,16); | |
128 | ||
129 | // Creation des images avec ImageMagick : definir la constante de facon | |
130 | // a preciser le chemin du binaire et les options souhaitees. Par defaut : | |
131 | // define('_CONVERT_COMMAND', 'convert'); | |
132 | // define('_RESIZE_COMMAND', _CONVERT_COMMAND.' -quality 85 -resize %xx%y! %src %dest'); | |
133 | ||
134 | // Creation des vignettes avec netpbm/pnmscale | |
135 | // Note: plus facile a installer par FTP, | |
136 | // voir http://gallery.menalto.com/modules.php?op=modload&name=GalleryFAQ&file=index&myfaq=yes&id_cat=2#43 | |
137 | // par defaut : | |
138 | // define('_PNMSCALE_COMMAND', 'pnmscale'); | |
139 | ||
140 | // faut-il passer les connexions MySQL en mode debug ? | |
141 | $mysql_debug = false; | |
142 | ||
143 | // faut-il faire des connexions completes rappelant le nom du serveur et/ou de | |
144 | // la base MySQL ? (utile si vos squelettes appellent d'autres bases MySQL) | |
145 | // (A desactiver en cas de soucis de connexion chez certains hebergeurs) | |
146 | // Note: un test a l'installation peut aussi avoir desactive | |
147 | // $mysql_rappel_nom_base directement dans le fichier inc_connect | |
148 | $mysql_rappel_connexion = true; | |
149 | $mysql_rappel_nom_base = true; | |
150 | ||
151 | // faut-il afficher en rouge les chaines non traduites ? | |
152 | $test_i18n = false; | |
153 | ||
154 | // gestion des extras (voir inc_extra pour plus d'informations) | |
155 | $champs_extra = false; | |
156 | $champs_extra_proposes = false; | |
157 | ||
158 | // faut-il ignorer l'authentification par auth http/remote_user ? | |
159 | $ignore_auth_http = false; | |
160 | $ignore_remote_user = true; # methode obsolete et risquee | |
161 | ||
162 | // Faut-il "invalider" les caches quand on depublie ou modifie un article ? | |
163 | # NB: cette option ne concerne pas les forums et petitions qui sont toujours | |
164 | # invalidants. (fonctionnalite experimentale : decommenter ci-dessous) | |
165 | #$invalider_caches = 'id_article,id_breve,id_rubrique,id_syndic'; | |
166 | $invalider_caches = ''; | |
167 | ||
168 | // Autre approche : tout invalider si modif | |
169 | // Si votre site a des problemes de performance face a une charge tres elevee, | |
170 | // il est recommande de mettre cette globale a false (dans mes_options). | |
171 | $derniere_modif_invalide = true; | |
172 | ||
173 | // Quota : la variable $quota_cache, si elle est > 0, indique la taille | |
174 | // totale maximale desiree des fichiers contenus dans le CACHE/ ; | |
175 | // ce quota n'est pas "dur", il ne s'applique qu'une fois par heure et | |
176 | // fait redescendre le cache a la taille voulue ; valeur en Mo | |
177 | // Si la variable vaut 0 aucun quota ne s'applique | |
178 | $quota_cache = 10; | |
179 | ||
180 | // | |
181 | // Serveurs externes | |
182 | // | |
183 | # aide en ligne | |
184 | $home_server = 'http://www.spip.net'; | |
185 | $help_server = $home_server . '/aide'; | |
186 | # TeX | |
187 | $tex_server = 'http://math.spip.org/tex.php'; | |
188 | # MathML (pas pour l'instant: manque un bon convertisseur) | |
189 | // $mathml_server = 'http://arno.rezo.net/tex2mathml/latex.php'; | |
190 | ||
191 | // Produire du TeX ou du MathML ? | |
192 | $traiter_math = 'tex'; | |
193 | ||
194 | // Appliquer un indenteur XHTML aux espaces public et/ou prive ? | |
195 | $xhtml = false; | |
196 | $xml_indent = false; | |
197 | ||
198 | // Vignettes de previsulation des referers | |
199 | // dans les statistiques | |
200 | // 3 de trouves, possibilite de switcher | |
201 | // - Thumbshots.org: le moins instrusif, quand il n'a pas, il renvoit un pixel vide | |
202 | // - Girafa semble le plus complet, bicoz renvoit toujours la page d'accueil; mais avertissement si pas de preview | |
203 | // - Alexa, equivalent Thumbshots, avec vignettes beaucoup plus grandes mais avertissement si pas de preview | |
204 | // Pour Alexa, penser a indiquer l'url du site dans l'id. | |
205 | // Dans Alexa, si on supprimer size=small, alors vignettes tres grandes | |
6458e8be | 206 | $source_vignettes = "http://api.thumbalizr.com/?url=http://"; |
7f881ea4 | 207 | // $source_vignettes = "http://msnsearch.srv.girafa.com/srv/i?s=MSNSEARCH&r=http://"; |
c495c100 P |
208 | // $source_vignettes = "http://pthumbnails.alexa.com/image_server.cgi?id=www.monsite.net&size=small&url=http://"; |
209 | ||
210 | $formats_logos = array ('gif', 'jpg', 'png'); | |
211 | ||
212 | // Controler les dates des item dans les flux RSS ? | |
213 | $controler_dates_rss = true; | |
214 | ||
215 | // | |
216 | // Pipelines & plugins | |
217 | // | |
218 | # les pipeline standards (traitements derivables aka points d'entree) | |
219 | # ils seront compiles par la suite | |
220 | # note: un pipeline non reference se compile aussi, mais uniquement | |
221 | # lorsqu'il est rencontre | |
222 | // http://doc.spip.org/@Tuto-Se-servir-des-points-d-entree | |
223 | $spip_pipeline = array( | |
224 | 'affichage_final' => '|f_surligne|f_tidy|f_admin', # cf. public/assembler | |
225 | 'affiche_droite' => '', | |
226 | 'affiche_gauche' => '', | |
227 | 'affiche_milieu' => '', | |
228 | 'ajouter_boutons' => '', | |
229 | 'ajouter_onglets' => '', | |
230 | 'body_prive' => '', | |
231 | 'exec_init' => '', | |
232 | 'header_prive' => '|f_jQuery', | |
233 | 'insert_head' => '|f_jQuery', | |
234 | 'mots_indexation' => '', | |
235 | 'nettoyer_raccourcis_typo' => '', | |
236 | 'pre_propre' => '|extraire_multi', | |
237 | 'post_propre' => '', | |
238 | 'pre_typo' => '|extraire_multi', | |
239 | 'post_typo' => '|quote_amp', | |
240 | 'pre_edition' => '|premiere_revision', | |
241 | 'post_edition' => '|nouvelle_revision', | |
242 | 'pre_syndication' => '', | |
243 | 'post_syndication' => '', | |
244 | 'pre_indexation' => '', | |
245 | 'requete_dico' => '', | |
246 | 'agenda_rendu_evenement' => '', | |
247 | 'taches_generales_cron' => '', | |
248 | 'calculer_rubriques' => '' | |
249 | ); | |
250 | ||
251 | # pour activer #INSERT_HEAD sur tous les squelettes, qu'ils aient ou non | |
252 | # la balise, decommenter la ligne ci-dessous (+ supprimer tmp/charger_pipelines) | |
253 | # $spip_pipeline['affichage_final'] .= '|f_insert_head'; | |
254 | ||
255 | # la matrice standard (fichiers definissant les fonctions a inclure) | |
256 | $spip_matrice = array (); | |
257 | # les plugins a activer | |
258 | $plugins = array(); // voir le contenu du repertoire /plugins/ | |
259 | # les surcharges de include_spip() | |
260 | $surcharges = array(); // format 'inc_truc' => '/plugins/chose/inc_truc2.php' | |
261 | ||
262 | // Masquer les warning | |
263 | error_reporting(E_ALL ^ E_NOTICE); | |
264 | ||
265 | // Variables du compilateur de squelettes | |
266 | ||
267 | $exceptions_des_tables = array(); | |
268 | $tables_principales = array(); | |
269 | $table_des_tables = array(); | |
270 | $tables_auxiliaires = array(); | |
271 | $table_primary = array(); | |
272 | $table_date = array(); | |
273 | $tables_jointures = array(); | |
274 | $tables_des_serveurs_sql['localhost'] = &$tables_principales; | |
275 | ||
276 | // Experimental : pour supprimer systematiquement l'affichage des numeros | |
277 | // de classement des titres, recopier la ligne suivante dans mes_options : | |
278 | # $table_des_traitements['TITRE'][]= 'typo(supprimer_numero(%s))'; | |
279 | ||
280 | // Droits d'acces maximum par defaut | |
281 | @umask(0); | |
282 | ||
283 | // Version courante de SPIP | |
284 | // Stockee sous forme de nombre decimal afin de faciliter les comparaisons | |
285 | // (utilise pour les modifs de la base de donnees) | |
286 | ||
287 | // version de la base | |
288 | $spip_version = 1.927; | |
289 | ||
290 | // version de spip en chaine | |
291 | // et en numerique a incrementer sur les evolutions qui cassent la compatibilite descendante | |
292 | // 1.xxyy : xx00 versions stables publiees, xxyy versions de dev | |
293 | // (ce qui marche pour yy ne marchera pas forcement sur une version plus ancienne) | |
294 | // type nouvelles fonctionnalites, deplacement de fonctions ... | |
295 | $spip_version_affichee = '1.9.2d'; | |
296 | $spip_version_code = 1.9208; | |
297 | ||
298 | // ** Securite ** | |
299 | $auteur_session = $connect_statut = $connect_toutes_rubriques = $hash_recherche = $hash_recherche_strict = ''; | |
300 | $connect_id_rubrique = array(); | |
301 | ||
302 | // *** Fin des globales *** // | |
303 | ||
304 | // | |
305 | // Definitions des fonctions (charge aussi inc/flock) | |
306 | // | |
307 | ||
308 | require_once(_DIR_RESTREINT . 'inc/utils.php'); | |
309 | ||
310 | // Definition personnelles eventuelles | |
311 | ||
312 | if (_FILE_OPTIONS) include_once _FILE_OPTIONS; | |
313 | ||
314 | // | |
315 | // INITIALISER LES REPERTOIRES NON PARTAGEABLES ET LES CONSTANTES | |
316 | // | |
317 | // mais l'inclusion precedente a peut-etre deja appelee cette fonction | |
318 | // ou a defini certaines des constantes que cette fontion doit definir | |
319 | // ===> on execute en neutralisant les messages d'erreur | |
320 | ||
321 | @spip_initialisation( | |
322 | (_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES), | |
323 | (_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES), | |
324 | (_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES), | |
325 | (_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES) | |
326 | ); | |
327 | ||
328 | // chargement des plugins : doit arriver en dernier | |
329 | // car dans les plugins on peut inclure inc-version | |
330 | // qui ne sera pas execute car _ECRIRE_INC_VERSION est defini | |
331 | // donc il faut avoir tout fini ici avant de charger les plugins | |
332 | ||
333 | if (@is_readable(_DIR_TMP."charger_plugins_options.php")){ | |
334 | // chargement optimise precompile | |
335 | include_once(_DIR_TMP."charger_plugins_options.php"); | |
336 | } else { | |
337 | include_spip('inc/plugin'); | |
338 | // generer les fichiers php precompiles | |
339 | // de chargement des plugins et des pipelines | |
340 | verif_plugin(); | |
341 | if (@is_readable(_DIR_TMP."charger_plugins_options.php")){ | |
342 | include_once(_DIR_TMP."charger_plugins_options.php"); | |
343 | } | |
344 | else | |
345 | spip_log("generation de charger_plugins_options.php impossible; pipeline desactives"); | |
346 | } | |
347 | ||
348 | define('_OUTILS_DEVELOPPEURS',false); | |
349 | ||
350 | // charger systematiquement inc/autoriser dans l'espace restreint | |
351 | if (!_DIR_RESTREINT) | |
352 | include_spip('inc/autoriser'); | |
353 | // | |
354 | // Installer Spip si pas installe... sauf si justement on est en train | |
355 | // | |
356 | if (!(_FILE_CONNECT | |
357 | OR autoriser_sans_cookie(_request('exec')) | |
358 | OR _request('action') == 'cookie' | |
359 | OR _request('action') == 'test_dirs')) { | |
360 | ||
361 | // Si on peut installer, on lance illico | |
362 | if (!_DIR_RESTREINT) { | |
363 | include_spip('inc/headers'); | |
364 | redirige_par_entete(generer_url_ecrire("install")); | |
365 | } else { | |
366 | // Si on est dans le site public, dire que qq s'en occupe | |
367 | include_spip('inc/minipres'); | |
368 | include_spip('inc/lang'); | |
369 | utiliser_langue_visiteur(); | |
370 | echo minipres(_T('info_travaux_titre'), "<p style='text-align: center;'>"._T('info_travaux_texte')."</p>"); | |
371 | exit; | |
372 | } | |
373 | // autrement c'est une install ad hoc (spikini...), on sait pas faire | |
374 | } | |
375 | ||
376 | // | |
377 | // Reglage de l'output buffering : si possible, generer une sortie | |
378 | // compressee pour economiser de la bande passante ; sauf dans l'espace | |
379 | // prive car sinon ca rame a l'affichage (a revoir...) | |
380 | // | |
381 | ||
382 | // si un buffer est deja ouvert, stop | |
383 | if (_DIR_RESTREINT AND _request('action')===NULL AND $flag_ob AND strlen(ob_get_contents())==0 AND !headers_sent()) { | |
384 | @header("Vary: Cookie, Accept-Encoding"); | |
385 | ||
386 | if ( | |
387 | $GLOBALS['auto_compress'] | |
388 | && (phpversion()<>'4.0.4') | |
389 | && function_exists("ob_gzhandler") | |
390 | // special bug de proxy | |
391 | && !(isset($GLOBALS['HTTP_VIA']) AND preg_match(",NetCache|Hasd_proxy,i", $GLOBALS['HTTP_VIA'])) | |
392 | // special bug Netscape Win 4.0x | |
393 | && !preg_match(",Mozilla/4\.0[^ ].*Win,i", $GLOBALS['HTTP_USER_AGENT']) | |
394 | // special bug Apache2x | |
395 | && !preg_match(",Apache(-[^ ]+)?/2,i", $GLOBALS['SERVER_SOFTWARE']) | |
396 | // test suspendu: http://article.gmane.org/gmane.comp.web.spip.devel/32038/ | |
397 | #&& !($GLOBALS['flag_sapi_name'] AND preg_match(",^apache2,", @php_sapi_name())) | |
398 | // si la compression est deja commencee, stop | |
399 | && !@ini_get("zlib.output_compression") | |
400 | && !@ini_get("output_handler") | |
401 | && !isset($GLOBALS['var_mode']) # bug avec le debugueur qui appelle ob_end_clean() | |
402 | ) | |
403 | ob_start('ob_gzhandler'); | |
404 | } | |
405 | else | |
406 | @header("Vary: Cookie"); | |
407 | ||
408 | // Vanter notre art de la composition typographique | |
409 | // La globale $spip_header_silencieux permet de rendre le header minimal pour raisons de securite | |
410 | define('_HEADER_COMPOSED_BY', "Composed-By: SPIP"); | |
411 | ||
412 | if (!headers_sent()) | |
413 | if (!isset($GLOBALS['spip_header_silencieux']) OR !$GLOBALS['spip_header_silencieux']) | |
414 | @header(_HEADER_COMPOSED_BY . " $spip_version_affichee @ www.spip.net" . (isset($GLOBALS['meta']['plugin_header'])?(" + ".$GLOBALS['meta']['plugin_header']):"")); | |
415 | else // header minimal | |
416 | @header(_HEADER_COMPOSED_BY . " @ www.spip.net"); | |
417 | ||
418 | # spip_log($_SERVER['REQUEST_METHOD'].' '.self() . ' - '._FILE_CONNECT); | |
419 | ||
420 | ?> |