48e604d5e60bbc01c39cf18567211b6c03c8c553
[aidenligne_francais_universite.git] / ecrire / inc_version.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 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
206 $source_vignettes = "http://api.thumbalizr.com/?url=http://";
207 // $source_vignettes = "http://msnsearch.srv.girafa.com/srv/i?s=MSNSEARCH&r=http://";
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 ?>