PageRenderTime 47ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/ecrire/inc_version.php

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