[SPIP] ~maj v2.1.25-->2.1.26
[velocampus/web/www.git] / www / ecrire / inc_version.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2014 *
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 # compatibilite anciennes versions
20 # si vous n'avez aucun fichier .php3, redefinissez a ""
21 # ne concerne que le fichier mes_options.php3
22 define('_EXTENSION_PHP', '.php3');
23 #define('_EXTENSION_PHP', '');
24 #mettre a true pour compatibilite PHP3
25 define('_FEED_GLOBALS', false);
26 # compat php < 5.1
27 if (!isset($_SERVER['REQUEST_TIME'])) $_SERVER['REQUEST_TIME'] = time();
28
29 # le nom du repertoire ecrire/
30 define('_DIR_RESTREINT_ABS', 'ecrire/');
31 # sommes-nous dans ecrire/ ?
32 define('_DIR_RESTREINT',
33 (!is_dir(_DIR_RESTREINT_ABS) ? "" : _DIR_RESTREINT_ABS));
34 # ou inversement ?
35 define('_DIR_RACINE', _DIR_RESTREINT ? '' : '../');
36
37 # chemins absolus
38 define('_ROOT_RACINE', dirname(dirname(__FILE__)).'/');
39 define('_ROOT_CWD', getcwd().'/');
40 define('_ROOT_RESTREINT', _ROOT_CWD . _DIR_RESTREINT);
41
42 // Icones
43 # nom du dossier images
44 define('_NOM_IMG_PACK', 'images/');
45 # le chemin http (relatif) vers les images standard
46 define('_DIR_IMG_PACK', (_DIR_RACINE . 'prive/' . _NOM_IMG_PACK));
47 # le chemin des vignettes de type de document
48 define('_DIR_IMG_ICONES_DIST', _DIR_RACINE . "prive/vignettes/");
49
50 # le chemin php (absolu) vers les images standard (pour hebergement centralise)
51 define('_ROOT_IMG_PACK', dirname(dirname(__FILE__)) . '/prive/' . _NOM_IMG_PACK);
52 define('_ROOT_IMG_ICONES_DIST', dirname(dirname(__FILE__)) . '/prive/vignettes/');
53
54 # le nom du repertoire des bibliotheques JavaScript
55 define('_JAVASCRIPT', 'javascript/'); // utilisable avec #CHEMIN et find_in_path
56 define('_DIR_JAVASCRIPT', (_DIR_RACINE . 'prive/' . _JAVASCRIPT));
57
58 # Le nom des 4 repertoires modifiables par les scripts lances par httpd
59 # Par defaut ces 4 noms seront suffixes par _DIR_RACINE (cf plus bas)
60 # mais on peut les mettre ailleurs et changer completement les noms
61
62 # le nom du repertoire des fichiers Temporaires Inaccessibles par http://
63 define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/");
64 # le nom du repertoire des fichiers Temporaires Accessibles par http://
65 define('_NOM_TEMPORAIRES_ACCESSIBLES', "local/");
66 # le nom du repertoire des fichiers Permanents Inaccessibles par http://
67 define('_NOM_PERMANENTS_INACCESSIBLES', "config/");
68 # le nom du repertoire des fichiers Permanents Accessibles par http://
69 define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/");
70
71 // Le nom du fichier de personnalisation
72 define('_NOM_CONFIG', 'mes_options');
73
74 // Son emplacement absolu si on le trouve
75 if (@file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . _NOM_CONFIG . '.php')
76 OR (@file_exists($f = _ROOT_RESTREINT . _NOM_CONFIG . '.php'))
77 OR (_EXTENSION_PHP AND @file_exists($f = _ROOT_RESTREINT . _NOM_CONFIG . _EXTENSION_PHP))) {
78 define('_FILE_OPTIONS', $f);
79 } else define('_FILE_OPTIONS', '');
80
81 // les modules par defaut pour la traduction.
82 // Constante utilisee par le compilateur et le decompilateur
83 // sa valeur etant traitee par inc_traduire_dist
84
85 define('MODULES_IDIOMES', 'public/spip/ecrire');
86
87 // *** Fin des define *** //
88
89
90 // Inclure l'ecran de securite
91 if (!defined('_ECRAN_SECURITE')
92 AND @file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . 'ecran_securite.php'))
93 include $f;
94
95
96 /*
97 * detecteur de robot d'indexation
98 * utilise en divers endroits, centralise ici
99 */
100 if (!defined('_IS_BOT'))
101 define('_IS_BOT',
102 isset($_SERVER['HTTP_USER_AGENT'])
103 AND preg_match(',bot|slurp|crawler|spider|webvac|yandex,i',
104 $_SERVER['HTTP_USER_AGENT'])
105 );
106
107
108 //
109 // *** Parametrage par defaut de SPIP ***
110 //
111 // Les globales qui suivent peuvent etre modifiees
112 // dans le fichier de personnalisation indique ci-dessus.
113 // Il suffit de copier les lignes ci-dessous, et ajouter le marquage de debut
114 // et fin de fichier PHP ("< ?php" et "? >", sans les espaces)
115 // Ne pas les rendre indefinies.
116
117 # comment on logge, defaut 4 tmp/spip.log de 100k, 0 ou 0 suppriment le log
118 $nombre_de_logs = 4;
119 $taille_des_logs = 100;
120
121 // Prefixe des tables dans la base de donnees
122 // (a modifier pour avoir plusieurs sites SPIP dans une seule base)
123 $table_prefix = "spip";
124
125 // Prefixe des cookies
126 // (a modifier pour installer des sites SPIP dans des sous-repertoires)
127 $cookie_prefix = "spip";
128
129 // Dossier des squelettes
130 // (a modifier si l'on veut passer rapidement d'un jeu de squelettes a un autre)
131 $dossier_squelettes = "";
132
133 // Pour le javascript, trois modes : parano (-1), prive (0), ok (1)
134 // parano le refuse partout, ok l'accepte partout
135 // le mode par defaut le signale en rouge dans l'espace prive
136 // Si < 1, les fichiers SVG sont traites s'ils emanent d'un redacteur
137 $filtrer_javascript = 0;
138 // PS: dans les forums, petitions, flux syndiques... c'est *toujours* securise
139
140 // Type d'URLs
141 // 'page': spip.php?article123 [c'est la valeur par defaut pour SPIP 2.0]
142 // 'html': article123.html
143 // 'propres': Titre-de-l-article
144 // 'propres2' : Titre-de-l-article.html (base sur 'propres')
145 // 'arbo' : /article/Titre
146 $type_urls = 'page'; // 'page' => surcharge possible par configuration
147
148 #la premiere date dans le menu deroulant de date de publication
149 # null: automatiquement (affiche les 8 dernieres annees)
150 # 0: affiche un input libre
151 # 1997: le menu commence a 1997 jusqu'a annee en cours
152 $debut_date_publication = null;
153
154
155
156 //
157 // On note le numero IP du client dans la variable $ip
158 //
159 if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
160 if (isset($_SERVER['REMOTE_ADDR'])) $ip = $_SERVER['REMOTE_ADDR'];
161
162 // Pour renforcer la privacy, decommentez la ligne ci-dessous (ou recopiez-la
163 // dans le fichier config/mes_options) : SPIP ne pourra alors conserver aucun
164 // numero IP, ni temporairement lors des visites (pour gerer les statistiques
165 // ou dans spip.log), ni dans les forums (responsabilite)
166 # $ip = substr(md5($ip),0,16);
167
168
169 // faut-il faire des connexions completes rappelant le nom du serveur et/ou de
170 // la base MySQL ? (utile si vos squelettes appellent d'autres bases MySQL)
171 // (A desactiver en cas de soucis de connexion chez certains hebergeurs)
172 // Note: un test a l'installation peut aussi avoir desactive
173 // $mysql_rappel_nom_base directement dans le fichier inc_connect
174 $mysql_rappel_connexion = true;
175 $mysql_rappel_nom_base = true;
176
177 // faut-il afficher en rouge les chaines non traduites ?
178 $test_i18n = false;
179
180 // faut-il ignorer l'authentification par auth http/remote_user ?
181 $ignore_auth_http = false;
182 $ignore_remote_user = true; # methode obsolete et risquee
183
184 // Invalider les caches a chaque modification du contenu ?
185 // Si votre site a des problemes de performance face a une charge tres elevee,
186 // vous pouvez mettre cette globale a false (dans mes_options).
187 $derniere_modif_invalide = true;
188
189 // Quota : la variable $quota_cache, si elle est > 0, indique la taille
190 // totale maximale desiree des fichiers contenus dans le cache ; ce quota n'est
191 // pas "dur" : si le site necessite un espace plus important, il le prend
192 $quota_cache = 10;
193
194 //
195 // Serveurs externes
196 //
197 # aide en ligne
198 $home_server = 'http://www.spip.net';
199 $help_server = array($home_server . '/aide');
200 # glossaire pour raccourci [?X]. Aussi: [?X#G] et definir glossaire_G
201 $url_glossaire_externe = "http://@lang@.wikipedia.org/wiki/%s";
202
203 # TeX
204 $tex_server = 'http://math.spip.org/tex.php';
205 # MathML (pas pour l'instant: manque un bon convertisseur)
206 // $mathml_server = 'http://arno.rezo.net/tex2mathml/latex.php';
207
208 // Produire du TeX ou du MathML ?
209 $traiter_math = 'tex';
210
211 // Appliquer un indenteur XHTML aux espaces public et/ou prive ?
212 $xhtml = false;
213 $xml_indent = false;
214
215 // Vignettes de previsulation des referers
216 // dans les statistiques
217 // 2 de trouves, possibilite de switcher
218 // - Alexa, equivalent Thumbshots, avec vignettes beaucoup plus grandes mais avertissement si pas de preview
219 // Pour Alexa, penser a indiquer l'url du site dans l'id.
220 // Dans Alexa, si on supprimer size=small, alors vignettes tres grandes
221 // - apercite.fr : on conserve exactement la même expression pour insérer l'url du site
222 $source_vignettes = "http://www.apercite.fr/api/apercite/120x90/oui/oui/http://";
223 // $source_vignettes = "http://pthumbnails.alexa.com/image_server.cgi?id=www.monsite.net&size=small&url=http://";
224
225 $formats_logos = array ('gif', 'jpg', 'png');
226
227 // Controler les dates des item dans les flux RSS ?
228 $controler_dates_rss = true;
229
230 // bardee de variables de personnalisation pour la typo (cf inc/texte)
231 // class_spip : savoir si on veut class="spip" sur p i strong & li
232 // class_spip_plus : class="spip" sur les ul ol h3 hr quote table...
233 // la difference c'est que des css specifiques existent pour les seconds
234 //
235 $class_spip = ''; /*' class="spip"'*/
236 $class_spip_plus = ' class="spip"';
237 $toujours_paragrapher = true;
238 $ligne_horizontale = "\n<hr$class_spip_plus />\n";
239 $debut_intertitre = "\n<h3$class_spip_plus>";
240 $fin_intertitre = "</h3>\n";
241 $debut_gras = "<strong$class_spip>";
242 $fin_gras = '</strong>';
243 $debut_italique = "<i$class_spip>";
244 $fin_italique = '</i>';
245 $ouvre_ref = '&nbsp;[';
246 $ferme_ref = ']';
247 $ouvre_note = '[';
248 $ferme_note = '] ';
249 $les_notes = '';
250 $compt_note = 0;
251 $notes_vues = array();
252
253
254 //
255 // Pipelines & plugins
256 //
257 # les pipeline standards (traitements derivables aka points d'entree)
258 # ils seront compiles par la suite
259 # note: un pipeline non reference se compile aussi, mais uniquement
260 # lorsqu'il est rencontre
261 // http://doc.spip.org/@Tuto-Se-servir-des-points-d-entree
262 $spip_pipeline = array(
263 'accueil_encours' => '',
264 'accueil_gadgets' => '',
265 'accueil_informations' => '',
266 # cf. public/assembler
267 'affichage_final' => '|f_surligne|f_tidy|f_admin',
268 'affichage_entetes_final' => '',
269 'afficher_fiche_objet'=>'',
270 'afficher_config_objet' => '',
271 'afficher_contenu_objet' => '',
272 'afficher_nombre_objets_associes_a' => '',
273 'affiche_droite' => '',
274 'affiche_gauche' => '',
275 'affiche_milieu' => '',
276 'affiche_enfants' => '',
277 'affiche_hierarchie' => '',
278 'affiche_formulaire_login' => '|auth_formulaire_login',
279 'afficher_revision_objet'=>'',
280 'alertes_auteur' => '',
281 'base_admin_repair' => '',
282 'boite_infos' => 'f_boite_infos',
283 'ajouter_boutons' => '',
284 'ajouter_onglets' => '',
285 'body_prive' => '',
286 'configurer_liste_metas'=>'',
287 'compter_contributions_auteur'=>'',
288 'declarer_tables_interfaces'=>'',
289 'declarer_tables_principales'=>'',
290 'declarer_tables_auxiliaires'=>'',
291 'declarer_tables_objets_surnoms' => '',
292 'declarer_type_surnoms' => '',
293 'declarer_url_objets' => '',
294 'definir_session' => '',
295 'delete_tables' => '',
296 'delete_statistiques' => '',
297 'exec_init' => '',
298 'formulaire_charger' => '',
299 'formulaire_verifier' => '',
300 'formulaire_traiter' => '',
301 'formulaire_admin' => '',
302 'header_prive' => '|f_jQuery',
303 'insert_head' => '|f_jQuery',
304 'insert_head_css' => '',
305 'jquery_plugins' => '',
306 # 'insert_js' => '',
307 'lister_tables_noerase' => '',
308 'lister_tables_noexport' => '',
309 'lister_tables_noimport' => '',
310 'libelle_association_mots' => '',
311 # 'verifie_js_necessaire' => '',
312 'mots_indexation' => '',
313 'nettoyer_raccourcis_typo' => '',
314 'objet_compte_enfants' => '',
315 'optimiser_base_disparus' => '',
316 'page_indisponible' => '',
317 'pre_boucle' => '',
318 'post_boucle' => '',
319 'post_image_filtrer' => '',
320 'pre_propre' => 'traiter_poesie|traiter_retours_chariots',
321 'pre_liens' => '|traiter_raccourci_liens|traiter_raccourci_glossaire
322 |traiter_raccourci_ancre',
323 'post_propre' => '',
324 'pre_typo' => '',
325 'post_typo' => '|quote_amp',
326 'pre_edition' => '|premiere_revision',
327 'post_edition' => '|nouvelle_revision',
328 'pre_insertion' => '',
329 'post_insertion' => '',
330 'pre_syndication' => '',
331 'post_syndication' => '',
332 'pre_indexation' => '',
333 'requete_dico' => '',
334 'rubrique_encours' => '',
335 'agenda_rendu_evenement' => '',
336 'taches_generales_cron' => '',
337 'calculer_rubriques' => '',
338 'autoriser' => '',
339 'notifications' => '',
340 'notifications_envoyer_mails' => '',
341 'editer_contenu_objet' => '',
342 'arbo_creer_chaine_url' => '|urls_arbo_creer_chaine_url',
343 'propres_creer_chaine_url' => '|urls_propres_creer_chaine_url',
344 'rechercher_liste_des_champs' => '',
345 'rechercher_liste_des_jointures' => '',
346 'recuperer_fond' => '',
347 'styliser' => '||styliser_par_rubrique|styliser_par_langue',
348 'trig_calculer_prochain_postdate' => '',
349 'trig_calculer_langues_rubriques' => '',
350 'trig_propager_les_secteurs' => '',
351 'trig_supprimer_objets_lies' => '',
352 );
353
354 # la matrice standard (fichiers definissant les fonctions a inclure)
355 $spip_matrice = array ();
356 # les plugins a activer
357 $plugins = array(); // voir le contenu du repertoire /plugins/
358 # les surcharges de include_spip()
359 $surcharges = array(); // format 'inc_truc' => '/plugins/chose/inc_truc2.php'
360
361 // Variables du compilateur de squelettes
362
363 $exceptions_des_tables = array();
364 $tables_principales = array();
365 $table_des_tables = array();
366 $tables_auxiliaires = array();
367 $table_primary = array();
368 $table_date = array();
369 $table_titre = array();
370 $tables_jointures = array();
371
372 // Liste des statuts.
373 $liste_des_statuts = array(
374 "info_administrateurs" => '0minirezo',
375 "info_redacteurs" =>'1comite',
376 "info_visiteurs" => '6forum',
377 "info_statut_site_4" => '5poubelle'
378 );
379
380 $liste_des_etats = array(
381 'texte_statut_en_cours_redaction' => 'prepa',
382 'texte_statut_propose_evaluation' => 'prop',
383 'texte_statut_publie' => 'publie',
384 'texte_statut_poubelle' => 'poubelle',
385 'texte_statut_refuse' => 'refuse'
386 );
387
388 $liste_des_forums = array(
389 'bouton_radio_modere_posteriori' => 'pos',
390 'bouton_radio_modere_priori' => 'pri',
391 'bouton_radio_modere_abonnement' => 'abo',
392 'info_pas_de_forum' => 'non'
393 );
394
395 // liste des methodes d'authentifications
396 $liste_des_authentifications = array(
397 'spip'=>'spip',
398 'ldap'=>'ldap'
399 );
400
401 // Experimental : pour supprimer systematiquement l'affichage des numeros
402 // de classement des titres, recopier la ligne suivante dans mes_options :
403 # $table_des_traitements['TITRE'][]= 'typo(supprimer_numero(%s), "TYPO", $connect)';
404
405 // Droits d'acces maximum par defaut
406 @umask(0);
407
408 // numero de branche, utilise par les plugins
409 // pour specifier les versions de SPIP necessaire
410 // il faut s'en tenir a un nombre de decimales fixe ex : 2.0.0, 2.0.0-dev, 2.0.0-beta, 2.0.0-beta2
411 $spip_version_branche = "2.1.26";
412 // version des signatures de fonctions PHP
413 // (= numero SVN de leur derniere modif cassant la compatibilite et/ou necessitant un recalcul des squelettes)
414 $spip_version_code = 15375;
415 // version de la base SQL (= numero SVN de sa derniere modif, a verifier dans le fichier ecrire/maj/sv10000.php)
416 $spip_version_base = 15830;
417
418 // version de l'interface a la base
419 $spip_sql_version = 1;
420
421 // version de spip en chaine
422 // 1.xxyy : xx00 versions stables publiees, xxyy versions de dev
423 // (ce qui marche pour yy ne marchera pas forcement sur une version plus ancienne)
424 $spip_version_affichee = "$spip_version_branche";
425
426 // ** Securite **
427 $visiteur_session = $auteur_session = $connect_statut = $connect_toutes_rubriques = $hash_recherche = $hash_recherche_strict = $ldap_present ='';
428 $meta = $connect_id_rubrique = array();
429
430 // *** Fin des globales *** //
431
432 //
433 // Charger les fonctions liees aux serveurs Http et Sql.
434 //
435 require_once _ROOT_RESTREINT . 'inc/utils.php';
436 require_once _ROOT_RESTREINT . 'base/connect_sql.php';
437
438 // Definition personnelles eventuelles
439
440 if (_FILE_OPTIONS) include_once _FILE_OPTIONS;
441
442 // Masquer les warning
443 if (!defined('E_DEPRECATED')) define('E_DEPRECATED', 8192);
444 define('SPIP_ERREUR_REPORT', E_ALL ^ E_NOTICE ^ E_DEPRECATED);
445 error_reporting(SPIP_ERREUR_REPORT);
446
447 // Initialisations critiques non surchargeables par les plugins
448 // INITIALISER LES REPERTOIRES NON PARTAGEABLES ET LES CONSTANTES
449 // (charge aussi inc/flock)
450 //
451 // mais l'inclusion precedente a peut-etre deja appele cette fonction
452 // ou a defini certaines des constantes que cette fonction doit definir
453 // ===> on execute en neutralisant les messages d'erreur
454
455 @spip_initialisation_core(
456 (_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES),
457 (_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES),
458 (_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES),
459 (_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES)
460 );
461
462
463 // chargement des plugins : doit arriver en dernier
464 // car dans les plugins on peut inclure inc-version
465 // qui ne sera pas execute car _ECRIRE_INC_VERSION est defini
466 // donc il faut avoir tout fini ici avant de charger les plugins
467
468 if (@is_readable(_CACHE_PLUGINS_OPT) AND @is_readable(_CACHE_PLUGINS_PATH)){
469 // chargement optimise precompile
470 include_once(_CACHE_PLUGINS_OPT);
471 } else {
472 @spip_initialisation_suite();
473 include_spip('inc/plugin');
474 // generer les fichiers php precompiles
475 // de chargement des plugins et des pipelines
476 actualise_plugins_actifs();
477 }
478 // Initialisations non critiques surchargeables par les plugins
479 @spip_initialisation_suite();
480
481 if (!defined('_OUTILS_DEVELOPPEURS'))
482 define('_OUTILS_DEVELOPPEURS',false);
483
484 // charger systematiquement inc/autoriser dans l'espace restreint
485 if (test_espace_prive())
486 include_spip('inc/autoriser');
487 //
488 // Installer Spip si pas installe... sauf si justement on est en train
489 //
490 if (!(_FILE_CONNECT
491 OR autoriser_sans_cookie(_request('exec'))
492 OR _request('action') == 'cookie'
493 OR _request('action') == 'converser'
494 OR _request('action') == 'test_dirs')) {
495
496 // Si on peut installer, on lance illico
497 if (test_espace_prive()) {
498 include_spip('inc/headers');
499 redirige_url_ecrire("install");
500 } else {
501 // Si on est dans le site public, dire que qq s'en occupe
502 include_spip('inc/minipres');
503 utiliser_langue_visiteur();
504 echo minipres(_T('info_travaux_titre'), "<p style='text-align: center;'>"._T('info_travaux_texte')."</p>");
505 exit;
506 }
507 // autrement c'est une install ad hoc (spikini...), on sait pas faire
508 }
509
510 // Vanter notre art de la composition typographique
511 // La globale $spip_header_silencieux permet de rendre le header minimal pour raisons de securite
512 define('_HEADER_COMPOSED_BY', "Composed-By: SPIP");
513
514 if (!headers_sent())
515 @header("Vary: Cookie, Accept-Encoding");
516 if (!isset($GLOBALS['spip_header_silencieux']) OR !$GLOBALS['spip_header_silencieux'])
517 @header(_HEADER_COMPOSED_BY . " $spip_version_affichee @ www.spip.net" . (isset($GLOBALS['meta']['plugin_header'])?(" + ".str_replace(',', ', ', $GLOBALS['meta']['plugin_header'])):""));
518 else // header minimal
519 @header(_HEADER_COMPOSED_BY . " @ www.spip.net");
520
521 # spip_log($_SERVER['REQUEST_METHOD'].' '.self() . ' - '._FILE_CONNECT);
522
523 ?>