[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_www.git] / www / ecrire / inc_version.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2016 *
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 # masquer les eventuelles erreurs sur les premiers define
18 error_reporting(E_ALL ^ E_NOTICE);
19
20 # version PHP minimum exigee (cf. inc/utils)
21 define ('_PHP_MIN', '5.1.0');
22
23 # le nom du repertoire ecrire/
24 if (!defined('_DIR_RESTREINT_ABS')) 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 # chemins absolus
32 define('_ROOT_RACINE', dirname(dirname(__FILE__)).'/');
33 define('_ROOT_CWD', getcwd().'/');
34 define('_ROOT_RESTREINT', _ROOT_CWD . _DIR_RESTREINT);
35
36 // Icones
37 # nom du dossier images
38 if (!defined('_NOM_IMG_PACK')) define('_NOM_IMG_PACK', 'images/');
39 # le chemin http (relatif) vers les images standard
40 define('_DIR_IMG_PACK', (_DIR_RACINE . 'prive/' . _NOM_IMG_PACK));
41
42 # le chemin php (absolu) vers les images standard (pour hebergement centralise)
43 define('_ROOT_IMG_PACK', dirname(dirname(__FILE__)) . '/prive/' . _NOM_IMG_PACK);
44
45 # le nom du repertoire des bibliotheques JavaScript
46 if (!defined('_JAVASCRIPT')) define('_JAVASCRIPT', 'javascript/'); // utilisable avec #CHEMIN et find_in_path
47 define('_DIR_JAVASCRIPT', (_DIR_RACINE . 'prive/' . _JAVASCRIPT));
48
49 # Le nom des 4 repertoires modifiables par les scripts lances par httpd
50 # Par defaut ces 4 noms seront suffixes par _DIR_RACINE (cf plus bas)
51 # mais on peut les mettre ailleurs et changer completement les noms
52
53 # le nom du repertoire des fichiers Temporaires Inaccessibles par http://
54 if (!defined('_NOM_TEMPORAIRES_INACCESSIBLES')) define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/");
55 # le nom du repertoire des fichiers Temporaires Accessibles par http://
56 if (!defined('_NOM_TEMPORAIRES_ACCESSIBLES')) define('_NOM_TEMPORAIRES_ACCESSIBLES', "local/");
57 # le nom du repertoire des fichiers Permanents Inaccessibles par http://
58 if (!defined('_NOM_PERMANENTS_INACCESSIBLES')) define('_NOM_PERMANENTS_INACCESSIBLES', "config/");
59 # le nom du repertoire des fichiers Permanents Accessibles par http://
60 if (!defined('_NOM_PERMANENTS_ACCESSIBLES')) define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/");
61
62
63 // Le nom du fichier de personnalisation
64 if (!defined('_NOM_CONFIG')) define('_NOM_CONFIG', 'mes_options');
65
66 // Son emplacement absolu si on le trouve
67 if (@file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . _NOM_CONFIG . '.php')
68 OR (@file_exists($f = _ROOT_RESTREINT . _NOM_CONFIG . '.php'))) {
69 define('_FILE_OPTIONS', $f);
70 } else define('_FILE_OPTIONS', '');
71
72 // les modules par defaut pour la traduction.
73 // Constante utilisee par le compilateur et le decompilateur
74 // sa valeur etant traitee par inc_traduire_dist
75
76 if (!defined('MODULES_IDIOMES')) define('MODULES_IDIOMES', 'public|spip|ecrire');
77
78 // *** Fin des define *** //
79
80
81 // Inclure l'ecran de securite
82 if (!defined('_ECRAN_SECURITE')
83 AND @file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . 'ecran_securite.php'))
84 include $f;
85
86 /*
87 * Détecteur de robot d'indexation
88 */
89 if (!defined('_IS_BOT')){
90 define('_IS_BOT',
91 isset($_SERVER['HTTP_USER_AGENT'])
92 AND preg_match(
93 // mots generiques
94 ',bot|slurp|crawler|spider|webvac|yandex|'
95 // MSIE 6.0 est un botnet 99,9% du temps, on traite donc ce USER_AGENT comme un bot
96 . 'MSIE 6\.0|'
97 // UA plus cibles
98 . '80legs|accoona|AltaVista|ASPSeek|Baidu|Charlotte|EC2LinkFinder|eStyle|facebook|flipboard|hootsuite|FunWebProducts|Google|Genieo|INA dlweb|InfegyAtlas|Java VM|LiteFinder|Lycos|MetaURI|Moreover|Rambler|Scooter|ScrubbyBloglines|Yahoo|Yeti'
99 . ',i', (string)$_SERVER['HTTP_USER_AGENT'])
100 );
101 }
102
103 //
104 // *** Parametrage par defaut de SPIP ***
105 //
106 // Les globales qui suivent peuvent etre modifiees
107 // dans le fichier de personnalisation indique ci-dessus.
108 // Il suffit de copier les lignes ci-dessous, et ajouter le marquage de debut
109 // et fin de fichier PHP ("< ?php" et "? >", sans les espaces)
110 // Ne pas les rendre indefinies.
111
112 # comment on logge, defaut 4 tmp/spip.log de 100k, 0 ou 0 suppriment le log
113 $nombre_de_logs = 4;
114 $taille_des_logs = 100;
115
116 // Definir les niveaux de log
117 defined('_LOG_HS') || define('_LOG_HS', 0);
118 defined('_LOG_ALERTE_ROUGE') || define('_LOG_ALERTE_ROUGE', 1);
119 defined('_LOG_CRITIQUE') || define('_LOG_CRITIQUE', 2);
120 defined('_LOG_ERREUR') || define('_LOG_ERREUR', 3);
121 defined('_LOG_AVERTISSEMENT') || define('_LOG_AVERTISSEMENT', 4);
122 defined('_LOG_INFO_IMPORTANTE') || define ('_LOG_INFO_IMPORTANTE', 5);
123 defined('_LOG_INFO') || define('_LOG_INFO', 6);
124 defined('_LOG_DEBUG') || define('_LOG_DEBUG', 7);
125
126 // on peut definir _LOG_FILTRE_GRAVITE dans mes_options.php
127
128 // Prefixe des tables dans la base de donnees
129 // (a modifier pour avoir plusieurs sites SPIP dans une seule base)
130 $table_prefix = "spip";
131
132 // Prefixe des cookies
133 // (a modifier pour installer des sites SPIP dans des sous-repertoires)
134 $cookie_prefix = "spip";
135
136 // Dossier des squelettes
137 // (a modifier si l'on veut passer rapidement d'un jeu de squelettes a un autre)
138 $dossier_squelettes = "";
139
140 // Pour le javascript, trois modes : parano (-1), prive (0), ok (1)
141 // parano le refuse partout, ok l'accepte partout
142 // le mode par defaut le signale en rouge dans l'espace prive
143 // Si < 1, les fichiers SVG sont traites s'ils emanent d'un redacteur
144 $filtrer_javascript = 0;
145 // PS: dans les forums, petitions, flux syndiques... c'est *toujours* securise
146
147 // Type d'URLs
148 // 'page': spip.php?article123 [c'est la valeur par defaut pour SPIP 2.0]
149 // 'html': article123.html
150 // 'propres': Titre-de-l-article
151 // 'propres2' : Titre-de-l-article.html (base sur 'propres')
152 // 'arbo' : /article/Titre
153 $type_urls = 'page'; // 'page' => surcharge possible par configuration
154
155 #la premiere date dans le menu deroulant de date de publication
156 # null: automatiquement (affiche les 8 dernieres annees)
157 # 0: affiche un input libre
158 # 1997: le menu commence a 1997 jusqu'a annee en cours
159 $debut_date_publication = null;
160
161
162
163 //
164 // On note le numero IP du client dans la variable $ip
165 //
166 if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
167 if (isset($_SERVER['REMOTE_ADDR'])) $ip = $_SERVER['REMOTE_ADDR'];
168
169 // Pour renforcer la privacy, decommentez la ligne ci-dessous (ou recopiez-la
170 // dans le fichier config/mes_options) : SPIP ne pourra alors conserver aucun
171 // numero IP, ni temporairement lors des visites (pour gerer les statistiques
172 // ou dans spip.log), ni dans les forums (responsabilite)
173 # $ip = substr(md5($ip),0,16);
174
175
176 // faut-il faire des connexions completes rappelant le nom du serveur et/ou de
177 // la base MySQL ? (utile si vos squelettes appellent d'autres bases MySQL)
178 // (A desactiver en cas de soucis de connexion chez certains hebergeurs)
179 // Note: un test a l'installation peut aussi avoir desactive
180 // $mysql_rappel_nom_base directement dans le fichier inc_connect
181 $mysql_rappel_connexion = true;
182 $mysql_rappel_nom_base = true;
183
184 // faut-il afficher en rouge les chaines non traduites ?
185 $test_i18n = false;
186
187 // faut-il ignorer l'authentification par auth http/remote_user ?
188 $ignore_auth_http = false;
189 $ignore_remote_user = true; # methode obsolete et risquee
190
191 // Invalider les caches a chaque modification du contenu ?
192 // Si votre site a des problemes de performance face a une charge tres elevee,
193 // vous pouvez mettre cette globale a false (dans mes_options).
194 $derniere_modif_invalide = true;
195
196 // Quota : la variable $quota_cache, si elle est > 0, indique la taille
197 // totale maximale desiree des fichiers contenus dans le cache ; ce quota n'est
198 // pas "dur" : si le site necessite un espace plus important, il le prend
199 $quota_cache = 10;
200
201 //
202 // Serveurs externes
203 //
204 # aide en ligne
205 $home_server = 'http://www.spip.net';
206 $help_server = array($home_server . '/aide');
207 # glossaire pour raccourci [?X]. Aussi: [?X#G] et definir glossaire_G
208 $url_glossaire_externe = "http://@lang@.wikipedia.org/wiki/%s";
209
210 # TeX
211 $tex_server = 'http://math.spip.org/tex.php';
212 # MathML (pas pour l'instant: manque un bon convertisseur)
213 // $mathml_server = 'http://arno.rezo.net/tex2mathml/latex.php';
214
215 // Produire du TeX ou du MathML ?
216 $traiter_math = 'tex';
217
218 // Appliquer un indenteur XHTML aux espaces public et/ou prive ?
219 $xhtml = false;
220 $xml_indent = false;
221
222 // Vignettes de previsulation des referers
223 // dans les statistiques
224 // 2 de trouves, possibilite de switcher
225 // - Alexa, equivalent Thumbshots, avec vignettes beaucoup plus grandes mais avertissement si pas de preview
226 // Pour Alexa, penser a indiquer l'url du site dans l'id.
227 // Dans Alexa, si on supprimer size=small, alors vignettes tres grandes
228 // - apercite.fr : on conserve exactement la même expression pour insérer l'url du site
229 $source_vignettes = "http://www.apercite.fr/api/apercite/120x90/oui/oui/http://";
230 // $source_vignettes = "http://pthumbnails.alexa.com/image_server.cgi?id=www.monsite.net&size=small&url=http://";
231
232 $formats_logos = array ('gif', 'jpg', 'png');
233
234 // Controler les dates des item dans les flux RSS ?
235 $controler_dates_rss = true;
236
237
238 //
239 // Pipelines & plugins
240 //
241 # les pipeline standards (traitements derivables aka points d'entree)
242 # ils seront compiles par la suite
243 # note: un pipeline non reference se compile aussi, mais uniquement
244 # lorsqu'il est rencontre
245 // http://doc.spip.org/@Tuto-Se-servir-des-points-d-entree
246 $spip_pipeline = array();
247
248 # la matrice standard (fichiers definissant les fonctions a inclure)
249 $spip_matrice = array ();
250 # les plugins a activer
251 $plugins = array(); // voir le contenu du repertoire /plugins/
252 # les surcharges de include_spip()
253 $surcharges = array(); // format 'inc_truc' => '/plugins/chose/inc_truc2.php'
254
255 // Variables du compilateur de squelettes
256
257 $exceptions_des_tables = array();
258 $tables_principales = array();
259 $table_des_tables = array();
260 $tables_auxiliaires = array();
261 $table_primary = array();
262 $table_date = array();
263 $table_titre = array();
264 $tables_jointures = array();
265
266 // Liste des statuts.
267 $liste_des_statuts = array(
268 "info_administrateurs" => '0minirezo',
269 "info_redacteurs" =>'1comite',
270 "info_visiteurs" => '6forum',
271 "texte_statut_poubelle" => '5poubelle'
272 );
273
274 $liste_des_etats = array(
275 'texte_statut_en_cours_redaction' => 'prepa',
276 'texte_statut_propose_evaluation' => 'prop',
277 'texte_statut_publie' => 'publie',
278 'texte_statut_poubelle' => 'poubelle',
279 'texte_statut_refuse' => 'refuse'
280 );
281
282 // liste des methodes d'authentifications
283 $liste_des_authentifications = array(
284 'spip'=>'spip',
285 'ldap'=>'ldap'
286 );
287
288 // Experimental : pour supprimer systematiquement l'affichage des numeros
289 // de classement des titres, recopier la ligne suivante dans mes_options :
290 # $table_des_traitements['TITRE'][]= 'typo(supprimer_numero(%s), "TYPO", $connect)';
291
292 // Droits d'acces maximum par defaut
293 @umask(0);
294
295 // numero de branche, utilise par les plugins
296 // pour specifier les versions de SPIP necessaires
297 // il faut s'en tenir a un nombre de decimales fixe
298 // ex : 2.0.0, 2.0.0-dev, 2.0.0-beta, 2.0.0-beta2
299 $spip_version_branche = "3.0.25";
300 // version des signatures de fonctions PHP
301 // (= numero SVN de leur derniere modif cassant la compatibilite et/ou necessitant un recalcul des squelettes)
302 $spip_version_code = 17873;
303 // version de la base SQL (= numero SVN de sa derniere modif)
304 $spip_version_base = 19268;
305
306 // version de l'interface a la base
307 $spip_sql_version = 1;
308
309 // version de spip en chaine
310 // 1.xxyy : xx00 versions stables publiees, xxyy versions de dev
311 // (ce qui marche pour yy ne marchera pas forcement sur une version plus ancienne)
312 $spip_version_affichee = "$spip_version_branche";
313
314 // ** Securite **
315 $visiteur_session = $auteur_session = $connect_statut = $connect_toutes_rubriques = $hash_recherche = $hash_recherche_strict = $ldap_present ='';
316 $meta = $connect_id_rubrique = array();
317
318 // *** Fin des globales *** //
319
320 //
321 // Charger les fonctions liees aux serveurs Http et Sql.
322 //
323 require_once _ROOT_RESTREINT . 'inc/utils.php';
324 require_once _ROOT_RESTREINT . 'base/connect_sql.php';
325
326 // Definition personnelles eventuelles
327
328 if (_FILE_OPTIONS) {include_once _FILE_OPTIONS;}
329
330 // Masquer les warning
331 if (!defined('E_DEPRECATED')) define('E_DEPRECATED', 8192); // compatibilite PHP 5.3
332 if (!defined('SPIP_ERREUR_REPORT')) define('SPIP_ERREUR_REPORT', E_ALL ^ E_NOTICE ^ E_DEPRECATED);
333 error_reporting(SPIP_ERREUR_REPORT);
334
335 // Initialisations critiques non surchargeables par les plugins
336 // INITIALISER LES REPERTOIRES NON PARTAGEABLES ET LES CONSTANTES
337 // (charge aussi inc/flock)
338 //
339 // mais l'inclusion precedente a peut-etre deja appele cette fonction
340 // ou a defini certaines des constantes que cette fonction doit definir
341 // ===> on execute en neutralisant les messages d'erreur
342
343 spip_initialisation_core(
344 (_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES),
345 (_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES),
346 (_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES),
347 (_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES)
348 );
349
350
351 // chargement des plugins : doit arriver en dernier
352 // car dans les plugins on peut inclure inc-version
353 // qui ne sera pas execute car _ECRIRE_INC_VERSION est defini
354 // donc il faut avoir tout fini ici avant de charger les plugins
355
356 if (@is_readable(_CACHE_PLUGINS_OPT) AND @is_readable(_CACHE_PLUGINS_PATH)){
357 // chargement optimise precompile
358 include_once(_CACHE_PLUGINS_OPT);
359 } else {
360 spip_initialisation_suite();
361 include_spip('inc/plugin');
362 // generer les fichiers php precompiles
363 // de chargement des plugins et des pipelines
364 actualise_plugins_actifs();
365 }
366 // Initialisations non critiques surchargeables par les plugins
367 spip_initialisation_suite();
368
369 // niveau maxi d'enregistrement des logs
370 defined('_LOG_FILTRE_GRAVITE') || define('_LOG_FILTRE_GRAVITE', _LOG_INFO_IMPORTANTE);
371
372 if (!defined('_OUTILS_DEVELOPPEURS'))
373 define('_OUTILS_DEVELOPPEURS',false);
374
375 // charger systematiquement inc/autoriser dans l'espace restreint
376 if (test_espace_prive())
377 include_spip('inc/autoriser');
378 //
379 // Installer Spip si pas installe... sauf si justement on est en train
380 //
381 if (!(_FILE_CONNECT
382 OR autoriser_sans_cookie(_request('exec'))
383 OR _request('action') == 'cookie'
384 OR _request('action') == 'converser'
385 OR _request('action') == 'test_dirs')) {
386
387 // Si on peut installer, on lance illico
388 if (test_espace_prive()) {
389 include_spip('inc/headers');
390 redirige_url_ecrire("install");
391 } else {
392 // Si on est dans le site public, dire que qq s'en occupe
393 include_spip('inc/minipres');
394 utiliser_langue_visiteur();
395 echo minipres(_T('info_travaux_titre'), "<p style='text-align: center;'>"._T('info_travaux_texte')."</p>");
396 exit;
397 }
398 // autrement c'est une install ad hoc (spikini...), on sait pas faire
399 }
400
401
402 // Vanter notre art de la composition typographique
403 // La globale $spip_header_silencieux permet de rendre le header minimal pour raisons de securite
404 if (!defined('_HEADER_COMPOSED_BY')) define('_HEADER_COMPOSED_BY', "Composed-By: SPIP");
405 if (!headers_sent()) {
406 header("Vary: Cookie, Accept-Encoding");
407 if (!isset($GLOBALS['spip_header_silencieux']) OR !$GLOBALS['spip_header_silencieux'])
408 header(_HEADER_COMPOSED_BY . " $spip_version_affichee @ www.spip.net" . (isset($GLOBALS['meta']['plugin_header'])?(" + ".$GLOBALS['meta']['plugin_header']):""));
409 else // header minimal
410 header(_HEADER_COMPOSED_BY . " @ www.spip.net");
411 }
412
413 spip_log($_SERVER['REQUEST_METHOD'].' '.self() . ' - '._FILE_CONNECT,_LOG_DEBUG);
414
415 ?>