Dépôt officiel du core SPIP * Anciennement présent sur svn://trac.rezo.net/spip * Les plugins-dist faisant partie de la distribution SPIP sont présents dans https://git.spip.net/SPIP/[nom du plugin dist]
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

594 lines
19 KiB

<?php
21 years ago
18 years ago
/***************************************************************************\
* SPIP, Système de publication pour l'internet *
18 years ago
* *
* Copyright © avec tendresse depuis 2001 *
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James *
18 years ago
* *
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. *
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
18 years ago
\***************************************************************************/
/**
* Initialisation de SPIP
*
* @package SPIP\Core\Chargement
**/
18 years ago
if (defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Indique que SPIP est chargé
*
* Cela permet des tests de sécurités pour les fichiers PHP
* de SPIP et des plugins qui peuvent vérifier que SPIP est chargé
* et donc que les fichiers ne sont pas appelés en dehors de l'usage de SPIP
*/
define('_ECRIRE_INC_VERSION', "1");
21 years ago
# masquer les eventuelles erreurs sur les premiers define
error_reporting(E_ALL ^ E_NOTICE);
/** version PHP minimum exigee (cf. inc/utils) */
define('_PHP_MIN', '7.3.0');
if (!defined('_DIR_RESTREINT_ABS')) {
/** le nom du repertoire ecrire/ */
define('_DIR_RESTREINT_ABS', 'ecrire/');
}
11 years ago
/** Chemin relatif pour aller dans ecrire
* vide si on est dans ecrire, 'ecrire/' sinon */
define('_DIR_RESTREINT',
(!is_dir(_DIR_RESTREINT_ABS) ? "" : _DIR_RESTREINT_ABS));
11 years ago
/** Chemin relatif pour aller à la racine */
define('_DIR_RACINE', _DIR_RESTREINT ? '' : '../');
/** chemin absolu vers la racine */
define('_ROOT_RACINE', dirname(__DIR__) . '/');
/** chemin absolu vers le repertoire de travail */
define('_ROOT_CWD', getcwd() . '/');
/** chemin absolu vers ecrire */
define('_ROOT_RESTREINT', _ROOT_CWD . _DIR_RESTREINT);
// Icones
if (!defined('_NOM_IMG_PACK')) {
/** Nom du dossier images */
define('_NOM_IMG_PACK', 'images/');
}
/** le chemin http (relatif) vers les images standard */
define('_DIR_IMG_PACK', (_DIR_RACINE . 'prive/' . _NOM_IMG_PACK));
Fusion des fonctions spip_initialisation et spip_intialisation_parametree. Suite à quelques essais (pas toujours réussis il est vrai) et échanges divers, l'installation de Spip, notamment en mutualisé, repose à présent sur les symboles suivants: - plusieurs constantes _DIR_* au début de inc_version définissent les répertoires où se trouvent les sources, considérées comme inaccessibles en écriture car partageable par plusieurs sites. - ensuite, plusieurs constantes _NOM_* définissent le nom (relatif) des fichiers et répertoires propres et indispensables à chaque site utilisant Spip, savoir define('_NOM_CONFIG', 'mes_options'); define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/"); define('_NOM_TEMPORAIRES_ACCESSIBLES', "var/"); define('_NOM_PERMANENTS_INACCESSIBLES', "etc/"); define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/"); var/ comportant les images réduites créé dynamiquement tmp/ jouant le role d'ecrire/data et comportant egalement CACHE/ etc/ jouant le role de ecrire/ en tant que repertoire accessible en écriture. - inc_version ne définit plus de fontions, mais charge immédiatement inc/utils qui à l'inverse ne fait que définir des fonctions. - inc_version charge ensuite le fichier ecrire/mes_options.php (pour compatibilité) ou etc/mes_options (préférable aujourd'hui); - enfin, il appelle la fonction d'initialisation ainsi: @spip_initialisation( (_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES), (_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES) ); ce qui va définir les 4 répertoires accessibles en écriture à la racine du site, et initialiser toutes les autres constantes (notamment _SPIP_CHMOD). - toutefois l'inclusion de mes_options peut neutraliser cet appel soit partiellement (en définissant quelques unes des constantes normalement définies par spip_initialisation qui ne pourra plus agir dessus) soit totalement (en appelant lui-meme spip_initialisation avec d'autres arguments que ceux ci-dessus). Une application typique est de mettre dans ecrire/mes_options.php (ou etc/mes_otpions.php) les lignes suivantes: define('_SPIP_CHMOD', 0770); if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) { if (is_dir($e = _DIR_RACINE . 'Ajouts/' . $r[1]. '/')) { $cookie_prefix = $table_prefix = $r[1]; define('_SPIP_PATH', _DIR_RACINE . 'Ajouts/' . $table_prefix . '/:' . _DIR_RACINE.':'. _DIR_RACINE .'dist/:' . _DIR_RESTREINT); spip_initialisation( ($e . _NOM_PERMANENTS_INACCESSIBLES), ($e . _NOM_PERMANENTS_ACCESSIBLES), ($e . _NOM_TEMPORAIRES_INACCESSIBLES), ($e . _NOM_TEMPORAIRES_ACCESSIBLES) ); if (is_readable($e .= _NOM_CONFIG . '.php')) include($e); } } La première ligne réduit l'accès aux répertoires et fichiers créés par le serveur http à ce seul serveur. A partir de l'URL du script appelé, les lignes suivantes déduisent un nom qui doit etre le nom d'un sous-répertoire Ajouts dans l'installation de Spip. L'exécution de ce script commence donc par déclarer les 4 sous-répertoires spécifiques au site, ainsi que le préfixe de ses table SQL. Au cas où existerait un fichier etc/mes_options pour ce site spécifique, celui est également chargé. L'utilisation des constantes _NOM_* permet donc de disposer d'un ensemble de répertoires et fichiers qui n'ont meme pas à savoir s'ils utilisent une installation mutualisée ou non de Spip. ATTENTION: il faut bien voir que les fonctions de inc/utils ne seront vraiment utilisables qu'après appel de spip_initialisation, car les constantes qu'elles utilisent (_DIR_TMP, _DIR_IMG etc) ne sont pas encore définies à l'entrée de mes_options (c'est justement ce qui permet de les personnaliser).
17 years ago
/** le chemin php (absolu) vers les images standard (pour hebergement centralise) */
define('_ROOT_IMG_PACK', dirname(__DIR__) . '/prive/' . _NOM_IMG_PACK);
Fusion des fonctions spip_initialisation et spip_intialisation_parametree. Suite à quelques essais (pas toujours réussis il est vrai) et échanges divers, l'installation de Spip, notamment en mutualisé, repose à présent sur les symboles suivants: - plusieurs constantes _DIR_* au début de inc_version définissent les répertoires où se trouvent les sources, considérées comme inaccessibles en écriture car partageable par plusieurs sites. - ensuite, plusieurs constantes _NOM_* définissent le nom (relatif) des fichiers et répertoires propres et indispensables à chaque site utilisant Spip, savoir define('_NOM_CONFIG', 'mes_options'); define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/"); define('_NOM_TEMPORAIRES_ACCESSIBLES', "var/"); define('_NOM_PERMANENTS_INACCESSIBLES', "etc/"); define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/"); var/ comportant les images réduites créé dynamiquement tmp/ jouant le role d'ecrire/data et comportant egalement CACHE/ etc/ jouant le role de ecrire/ en tant que repertoire accessible en écriture. - inc_version ne définit plus de fontions, mais charge immédiatement inc/utils qui à l'inverse ne fait que définir des fonctions. - inc_version charge ensuite le fichier ecrire/mes_options.php (pour compatibilité) ou etc/mes_options (préférable aujourd'hui); - enfin, il appelle la fonction d'initialisation ainsi: @spip_initialisation( (_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES), (_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES) ); ce qui va définir les 4 répertoires accessibles en écriture à la racine du site, et initialiser toutes les autres constantes (notamment _SPIP_CHMOD). - toutefois l'inclusion de mes_options peut neutraliser cet appel soit partiellement (en définissant quelques unes des constantes normalement définies par spip_initialisation qui ne pourra plus agir dessus) soit totalement (en appelant lui-meme spip_initialisation avec d'autres arguments que ceux ci-dessus). Une application typique est de mettre dans ecrire/mes_options.php (ou etc/mes_otpions.php) les lignes suivantes: define('_SPIP_CHMOD', 0770); if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) { if (is_dir($e = _DIR_RACINE . 'Ajouts/' . $r[1]. '/')) { $cookie_prefix = $table_prefix = $r[1]; define('_SPIP_PATH', _DIR_RACINE . 'Ajouts/' . $table_prefix . '/:' . _DIR_RACINE.':'. _DIR_RACINE .'dist/:' . _DIR_RESTREINT); spip_initialisation( ($e . _NOM_PERMANENTS_INACCESSIBLES), ($e . _NOM_PERMANENTS_ACCESSIBLES), ($e . _NOM_TEMPORAIRES_INACCESSIBLES), ($e . _NOM_TEMPORAIRES_ACCESSIBLES) ); if (is_readable($e .= _NOM_CONFIG . '.php')) include($e); } } La première ligne réduit l'accès aux répertoires et fichiers créés par le serveur http à ce seul serveur. A partir de l'URL du script appelé, les lignes suivantes déduisent un nom qui doit etre le nom d'un sous-répertoire Ajouts dans l'installation de Spip. L'exécution de ce script commence donc par déclarer les 4 sous-répertoires spécifiques au site, ainsi que le préfixe de ses table SQL. Au cas où existerait un fichier etc/mes_options pour ce site spécifique, celui est également chargé. L'utilisation des constantes _NOM_* permet donc de disposer d'un ensemble de répertoires et fichiers qui n'ont meme pas à savoir s'ils utilisent une installation mutualisée ou non de Spip. ATTENTION: il faut bien voir que les fonctions de inc/utils ne seront vraiment utilisables qu'après appel de spip_initialisation, car les constantes qu'elles utilisent (_DIR_TMP, _DIR_IMG etc) ne sont pas encore définies à l'entrée de mes_options (c'est justement ce qui permet de les personnaliser).
17 years ago
if (!defined('_JAVASCRIPT')) {
/** Nom du repertoire des bibliotheques JavaScript */
define('_JAVASCRIPT', 'javascript/');
} // utilisable avec #CHEMIN et find_in_path
/** le nom du repertoire des bibliotheques JavaScript du prive */
define('_DIR_JAVASCRIPT', (_DIR_RACINE . 'prive/' . _JAVASCRIPT));
Fusion des fonctions spip_initialisation et spip_intialisation_parametree. Suite à quelques essais (pas toujours réussis il est vrai) et échanges divers, l'installation de Spip, notamment en mutualisé, repose à présent sur les symboles suivants: - plusieurs constantes _DIR_* au début de inc_version définissent les répertoires où se trouvent les sources, considérées comme inaccessibles en écriture car partageable par plusieurs sites. - ensuite, plusieurs constantes _NOM_* définissent le nom (relatif) des fichiers et répertoires propres et indispensables à chaque site utilisant Spip, savoir define('_NOM_CONFIG', 'mes_options'); define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/"); define('_NOM_TEMPORAIRES_ACCESSIBLES', "var/"); define('_NOM_PERMANENTS_INACCESSIBLES', "etc/"); define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/"); var/ comportant les images réduites créé dynamiquement tmp/ jouant le role d'ecrire/data et comportant egalement CACHE/ etc/ jouant le role de ecrire/ en tant que repertoire accessible en écriture. - inc_version ne définit plus de fontions, mais charge immédiatement inc/utils qui à l'inverse ne fait que définir des fonctions. - inc_version charge ensuite le fichier ecrire/mes_options.php (pour compatibilité) ou etc/mes_options (préférable aujourd'hui); - enfin, il appelle la fonction d'initialisation ainsi: @spip_initialisation( (_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES), (_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES) ); ce qui va définir les 4 répertoires accessibles en écriture à la racine du site, et initialiser toutes les autres constantes (notamment _SPIP_CHMOD). - toutefois l'inclusion de mes_options peut neutraliser cet appel soit partiellement (en définissant quelques unes des constantes normalement définies par spip_initialisation qui ne pourra plus agir dessus) soit totalement (en appelant lui-meme spip_initialisation avec d'autres arguments que ceux ci-dessus). Une application typique est de mettre dans ecrire/mes_options.php (ou etc/mes_otpions.php) les lignes suivantes: define('_SPIP_CHMOD', 0770); if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) { if (is_dir($e = _DIR_RACINE . 'Ajouts/' . $r[1]. '/')) { $cookie_prefix = $table_prefix = $r[1]; define('_SPIP_PATH', _DIR_RACINE . 'Ajouts/' . $table_prefix . '/:' . _DIR_RACINE.':'. _DIR_RACINE .'dist/:' . _DIR_RESTREINT); spip_initialisation( ($e . _NOM_PERMANENTS_INACCESSIBLES), ($e . _NOM_PERMANENTS_ACCESSIBLES), ($e . _NOM_TEMPORAIRES_INACCESSIBLES), ($e . _NOM_TEMPORAIRES_ACCESSIBLES) ); if (is_readable($e .= _NOM_CONFIG . '.php')) include($e); } } La première ligne réduit l'accès aux répertoires et fichiers créés par le serveur http à ce seul serveur. A partir de l'URL du script appelé, les lignes suivantes déduisent un nom qui doit etre le nom d'un sous-répertoire Ajouts dans l'installation de Spip. L'exécution de ce script commence donc par déclarer les 4 sous-répertoires spécifiques au site, ainsi que le préfixe de ses table SQL. Au cas où existerait un fichier etc/mes_options pour ce site spécifique, celui est également chargé. L'utilisation des constantes _NOM_* permet donc de disposer d'un ensemble de répertoires et fichiers qui n'ont meme pas à savoir s'ils utilisent une installation mutualisée ou non de Spip. ATTENTION: il faut bien voir que les fonctions de inc/utils ne seront vraiment utilisables qu'après appel de spip_initialisation, car les constantes qu'elles utilisent (_DIR_TMP, _DIR_IMG etc) ne sont pas encore définies à l'entrée de mes_options (c'est justement ce qui permet de les personnaliser).
17 years ago
# Le nom des 4 repertoires modifiables par les scripts lances par httpd
# Par defaut ces 4 noms seront suffixes par _DIR_RACINE (cf plus bas)
# mais on peut les mettre ailleurs et changer completement les noms
if (!defined('_NOM_TEMPORAIRES_INACCESSIBLES')) {
/** Nom du repertoire des fichiers Temporaires Inaccessibles par http:// */
define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/");
}
if (!defined('_NOM_TEMPORAIRES_ACCESSIBLES')) {
/** Nom du repertoire des fichiers Temporaires Accessibles par http:// */
define('_NOM_TEMPORAIRES_ACCESSIBLES', "local/");
}
if (!defined('_NOM_PERMANENTS_INACCESSIBLES')) {
/** Nom du repertoire des fichiers Permanents Inaccessibles par http:// */
define('_NOM_PERMANENTS_INACCESSIBLES', "config/");
}
if (!defined('_NOM_PERMANENTS_ACCESSIBLES')) {
/** Nom du repertoire des fichiers Permanents Accessibles par http:// */
define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/");
}
Fusion des fonctions spip_initialisation et spip_intialisation_parametree. Suite à quelques essais (pas toujours réussis il est vrai) et échanges divers, l'installation de Spip, notamment en mutualisé, repose à présent sur les symboles suivants: - plusieurs constantes _DIR_* au début de inc_version définissent les répertoires où se trouvent les sources, considérées comme inaccessibles en écriture car partageable par plusieurs sites. - ensuite, plusieurs constantes _NOM_* définissent le nom (relatif) des fichiers et répertoires propres et indispensables à chaque site utilisant Spip, savoir define('_NOM_CONFIG', 'mes_options'); define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/"); define('_NOM_TEMPORAIRES_ACCESSIBLES', "var/"); define('_NOM_PERMANENTS_INACCESSIBLES', "etc/"); define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/"); var/ comportant les images réduites créé dynamiquement tmp/ jouant le role d'ecrire/data et comportant egalement CACHE/ etc/ jouant le role de ecrire/ en tant que repertoire accessible en écriture. - inc_version ne définit plus de fontions, mais charge immédiatement inc/utils qui à l'inverse ne fait que définir des fonctions. - inc_version charge ensuite le fichier ecrire/mes_options.php (pour compatibilité) ou etc/mes_options (préférable aujourd'hui); - enfin, il appelle la fonction d'initialisation ainsi: @spip_initialisation( (_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES), (_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES) ); ce qui va définir les 4 répertoires accessibles en écriture à la racine du site, et initialiser toutes les autres constantes (notamment _SPIP_CHMOD). - toutefois l'inclusion de mes_options peut neutraliser cet appel soit partiellement (en définissant quelques unes des constantes normalement définies par spip_initialisation qui ne pourra plus agir dessus) soit totalement (en appelant lui-meme spip_initialisation avec d'autres arguments que ceux ci-dessus). Une application typique est de mettre dans ecrire/mes_options.php (ou etc/mes_otpions.php) les lignes suivantes: define('_SPIP_CHMOD', 0770); if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) { if (is_dir($e = _DIR_RACINE . 'Ajouts/' . $r[1]. '/')) { $cookie_prefix = $table_prefix = $r[1]; define('_SPIP_PATH', _DIR_RACINE . 'Ajouts/' . $table_prefix . '/:' . _DIR_RACINE.':'. _DIR_RACINE .'dist/:' . _DIR_RESTREINT); spip_initialisation( ($e . _NOM_PERMANENTS_INACCESSIBLES), ($e . _NOM_PERMANENTS_ACCESSIBLES), ($e . _NOM_TEMPORAIRES_INACCESSIBLES), ($e . _NOM_TEMPORAIRES_ACCESSIBLES) ); if (is_readable($e .= _NOM_CONFIG . '.php')) include($e); } } La première ligne réduit l'accès aux répertoires et fichiers créés par le serveur http à ce seul serveur. A partir de l'URL du script appelé, les lignes suivantes déduisent un nom qui doit etre le nom d'un sous-répertoire Ajouts dans l'installation de Spip. L'exécution de ce script commence donc par déclarer les 4 sous-répertoires spécifiques au site, ainsi que le préfixe de ses table SQL. Au cas où existerait un fichier etc/mes_options pour ce site spécifique, celui est également chargé. L'utilisation des constantes _NOM_* permet donc de disposer d'un ensemble de répertoires et fichiers qui n'ont meme pas à savoir s'ils utilisent une installation mutualisée ou non de Spip. ATTENTION: il faut bien voir que les fonctions de inc/utils ne seront vraiment utilisables qu'après appel de spip_initialisation, car les constantes qu'elles utilisent (_DIR_TMP, _DIR_IMG etc) ne sont pas encore définies à l'entrée de mes_options (c'est justement ce qui permet de les personnaliser).
17 years ago
/** Le nom du fichier de personnalisation */
if (!defined('_NOM_CONFIG')) {
define('_NOM_CONFIG', 'mes_options');
}
Fusion des fonctions spip_initialisation et spip_intialisation_parametree. Suite à quelques essais (pas toujours réussis il est vrai) et échanges divers, l'installation de Spip, notamment en mutualisé, repose à présent sur les symboles suivants: - plusieurs constantes _DIR_* au début de inc_version définissent les répertoires où se trouvent les sources, considérées comme inaccessibles en écriture car partageable par plusieurs sites. - ensuite, plusieurs constantes _NOM_* définissent le nom (relatif) des fichiers et répertoires propres et indispensables à chaque site utilisant Spip, savoir define('_NOM_CONFIG', 'mes_options'); define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/"); define('_NOM_TEMPORAIRES_ACCESSIBLES', "var/"); define('_NOM_PERMANENTS_INACCESSIBLES', "etc/"); define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/"); var/ comportant les images réduites créé dynamiquement tmp/ jouant le role d'ecrire/data et comportant egalement CACHE/ etc/ jouant le role de ecrire/ en tant que repertoire accessible en écriture. - inc_version ne définit plus de fontions, mais charge immédiatement inc/utils qui à l'inverse ne fait que définir des fonctions. - inc_version charge ensuite le fichier ecrire/mes_options.php (pour compatibilité) ou etc/mes_options (préférable aujourd'hui); - enfin, il appelle la fonction d'initialisation ainsi: @spip_initialisation( (_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES), (_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES) ); ce qui va définir les 4 répertoires accessibles en écriture à la racine du site, et initialiser toutes les autres constantes (notamment _SPIP_CHMOD). - toutefois l'inclusion de mes_options peut neutraliser cet appel soit partiellement (en définissant quelques unes des constantes normalement définies par spip_initialisation qui ne pourra plus agir dessus) soit totalement (en appelant lui-meme spip_initialisation avec d'autres arguments que ceux ci-dessus). Une application typique est de mettre dans ecrire/mes_options.php (ou etc/mes_otpions.php) les lignes suivantes: define('_SPIP_CHMOD', 0770); if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) { if (is_dir($e = _DIR_RACINE . 'Ajouts/' . $r[1]. '/')) { $cookie_prefix = $table_prefix = $r[1]; define('_SPIP_PATH', _DIR_RACINE . 'Ajouts/' . $table_prefix . '/:' . _DIR_RACINE.':'. _DIR_RACINE .'dist/:' . _DIR_RESTREINT); spip_initialisation( ($e . _NOM_PERMANENTS_INACCESSIBLES), ($e . _NOM_PERMANENTS_ACCESSIBLES), ($e . _NOM_TEMPORAIRES_INACCESSIBLES), ($e . _NOM_TEMPORAIRES_ACCESSIBLES) ); if (is_readable($e .= _NOM_CONFIG . '.php')) include($e); } } La première ligne réduit l'accès aux répertoires et fichiers créés par le serveur http à ce seul serveur. A partir de l'URL du script appelé, les lignes suivantes déduisent un nom qui doit etre le nom d'un sous-répertoire Ajouts dans l'installation de Spip. L'exécution de ce script commence donc par déclarer les 4 sous-répertoires spécifiques au site, ainsi que le préfixe de ses table SQL. Au cas où existerait un fichier etc/mes_options pour ce site spécifique, celui est également chargé. L'utilisation des constantes _NOM_* permet donc de disposer d'un ensemble de répertoires et fichiers qui n'ont meme pas à savoir s'ils utilisent une installation mutualisée ou non de Spip. ATTENTION: il faut bien voir que les fonctions de inc/utils ne seront vraiment utilisables qu'après appel de spip_initialisation, car les constantes qu'elles utilisent (_DIR_TMP, _DIR_IMG etc) ne sont pas encore définies à l'entrée de mes_options (c'est justement ce qui permet de les personnaliser).
17 years ago
// Son emplacement absolu si on le trouve
if (@file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . _NOM_CONFIG . '.php')
or (@file_exists($f = _ROOT_RESTREINT . _NOM_CONFIG . '.php'))
) {
/** Emplacement absolu du fichier d'option */
Fusion des fonctions spip_initialisation et spip_intialisation_parametree. Suite à quelques essais (pas toujours réussis il est vrai) et échanges divers, l'installation de Spip, notamment en mutualisé, repose à présent sur les symboles suivants: - plusieurs constantes _DIR_* au début de inc_version définissent les répertoires où se trouvent les sources, considérées comme inaccessibles en écriture car partageable par plusieurs sites. - ensuite, plusieurs constantes _NOM_* définissent le nom (relatif) des fichiers et répertoires propres et indispensables à chaque site utilisant Spip, savoir define('_NOM_CONFIG', 'mes_options'); define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/"); define('_NOM_TEMPORAIRES_ACCESSIBLES', "var/"); define('_NOM_PERMANENTS_INACCESSIBLES', "etc/"); define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/"); var/ comportant les images réduites créé dynamiquement tmp/ jouant le role d'ecrire/data et comportant egalement CACHE/ etc/ jouant le role de ecrire/ en tant que repertoire accessible en écriture. - inc_version ne définit plus de fontions, mais charge immédiatement inc/utils qui à l'inverse ne fait que définir des fonctions. - inc_version charge ensuite le fichier ecrire/mes_options.php (pour compatibilité) ou etc/mes_options (préférable aujourd'hui); - enfin, il appelle la fonction d'initialisation ainsi: @spip_initialisation( (_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES), (_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES) ); ce qui va définir les 4 répertoires accessibles en écriture à la racine du site, et initialiser toutes les autres constantes (notamment _SPIP_CHMOD). - toutefois l'inclusion de mes_options peut neutraliser cet appel soit partiellement (en définissant quelques unes des constantes normalement définies par spip_initialisation qui ne pourra plus agir dessus) soit totalement (en appelant lui-meme spip_initialisation avec d'autres arguments que ceux ci-dessus). Une application typique est de mettre dans ecrire/mes_options.php (ou etc/mes_otpions.php) les lignes suivantes: define('_SPIP_CHMOD', 0770); if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) { if (is_dir($e = _DIR_RACINE . 'Ajouts/' . $r[1]. '/')) { $cookie_prefix = $table_prefix = $r[1]; define('_SPIP_PATH', _DIR_RACINE . 'Ajouts/' . $table_prefix . '/:' . _DIR_RACINE.':'. _DIR_RACINE .'dist/:' . _DIR_RESTREINT); spip_initialisation( ($e . _NOM_PERMANENTS_INACCESSIBLES), ($e . _NOM_PERMANENTS_ACCESSIBLES), ($e . _NOM_TEMPORAIRES_INACCESSIBLES), ($e . _NOM_TEMPORAIRES_ACCESSIBLES) ); if (is_readable($e .= _NOM_CONFIG . '.php')) include($e); } } La première ligne réduit l'accès aux répertoires et fichiers créés par le serveur http à ce seul serveur. A partir de l'URL du script appelé, les lignes suivantes déduisent un nom qui doit etre le nom d'un sous-répertoire Ajouts dans l'installation de Spip. L'exécution de ce script commence donc par déclarer les 4 sous-répertoires spécifiques au site, ainsi que le préfixe de ses table SQL. Au cas où existerait un fichier etc/mes_options pour ce site spécifique, celui est également chargé. L'utilisation des constantes _NOM_* permet donc de disposer d'un ensemble de répertoires et fichiers qui n'ont meme pas à savoir s'ils utilisent une installation mutualisée ou non de Spip. ATTENTION: il faut bien voir que les fonctions de inc/utils ne seront vraiment utilisables qu'après appel de spip_initialisation, car les constantes qu'elles utilisent (_DIR_TMP, _DIR_IMG etc) ne sont pas encore définies à l'entrée de mes_options (c'est justement ce qui permet de les personnaliser).
17 years ago
define('_FILE_OPTIONS', $f);
} else {
define('_FILE_OPTIONS', '');
}
Fusion des fonctions spip_initialisation et spip_intialisation_parametree. Suite à quelques essais (pas toujours réussis il est vrai) et échanges divers, l'installation de Spip, notamment en mutualisé, repose à présent sur les symboles suivants: - plusieurs constantes _DIR_* au début de inc_version définissent les répertoires où se trouvent les sources, considérées comme inaccessibles en écriture car partageable par plusieurs sites. - ensuite, plusieurs constantes _NOM_* définissent le nom (relatif) des fichiers et répertoires propres et indispensables à chaque site utilisant Spip, savoir define('_NOM_CONFIG', 'mes_options'); define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/"); define('_NOM_TEMPORAIRES_ACCESSIBLES', "var/"); define('_NOM_PERMANENTS_INACCESSIBLES', "etc/"); define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/"); var/ comportant les images réduites créé dynamiquement tmp/ jouant le role d'ecrire/data et comportant egalement CACHE/ etc/ jouant le role de ecrire/ en tant que repertoire accessible en écriture. - inc_version ne définit plus de fontions, mais charge immédiatement inc/utils qui à l'inverse ne fait que définir des fonctions. - inc_version charge ensuite le fichier ecrire/mes_options.php (pour compatibilité) ou etc/mes_options (préférable aujourd'hui); - enfin, il appelle la fonction d'initialisation ainsi: @spip_initialisation( (_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES), (_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES) ); ce qui va définir les 4 répertoires accessibles en écriture à la racine du site, et initialiser toutes les autres constantes (notamment _SPIP_CHMOD). - toutefois l'inclusion de mes_options peut neutraliser cet appel soit partiellement (en définissant quelques unes des constantes normalement définies par spip_initialisation qui ne pourra plus agir dessus) soit totalement (en appelant lui-meme spip_initialisation avec d'autres arguments que ceux ci-dessus). Une application typique est de mettre dans ecrire/mes_options.php (ou etc/mes_otpions.php) les lignes suivantes: define('_SPIP_CHMOD', 0770); if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) { if (is_dir($e = _DIR_RACINE . 'Ajouts/' . $r[1]. '/')) { $cookie_prefix = $table_prefix = $r[1]; define('_SPIP_PATH', _DIR_RACINE . 'Ajouts/' . $table_prefix . '/:' . _DIR_RACINE.':'. _DIR_RACINE .'dist/:' . _DIR_RESTREINT); spip_initialisation( ($e . _NOM_PERMANENTS_INACCESSIBLES), ($e . _NOM_PERMANENTS_ACCESSIBLES), ($e . _NOM_TEMPORAIRES_INACCESSIBLES), ($e . _NOM_TEMPORAIRES_ACCESSIBLES) ); if (is_readable($e .= _NOM_CONFIG . '.php')) include($e); } } La première ligne réduit l'accès aux répertoires et fichiers créés par le serveur http à ce seul serveur. A partir de l'URL du script appelé, les lignes suivantes déduisent un nom qui doit etre le nom d'un sous-répertoire Ajouts dans l'installation de Spip. L'exécution de ce script commence donc par déclarer les 4 sous-répertoires spécifiques au site, ainsi que le préfixe de ses table SQL. Au cas où existerait un fichier etc/mes_options pour ce site spécifique, celui est également chargé. L'utilisation des constantes _NOM_* permet donc de disposer d'un ensemble de répertoires et fichiers qui n'ont meme pas à savoir s'ils utilisent une installation mutualisée ou non de Spip. ATTENTION: il faut bien voir que les fonctions de inc/utils ne seront vraiment utilisables qu'après appel de spip_initialisation, car les constantes qu'elles utilisent (_DIR_TMP, _DIR_IMG etc) ne sont pas encore définies à l'entrée de mes_options (c'est justement ce qui permet de les personnaliser).
17 years ago
if (!defined('MODULES_IDIOMES')) {
/**
* Modules par défaut pour la traduction.
*
* Constante utilisée par le compilateur et le décompilateur
* sa valeur etant traitée par inc_traduire_dist
*/
define('MODULES_IDIOMES', 'public|spip|ecrire');
}
13 years ago
Fusion des fonctions spip_initialisation et spip_intialisation_parametree. Suite à quelques essais (pas toujours réussis il est vrai) et échanges divers, l'installation de Spip, notamment en mutualisé, repose à présent sur les symboles suivants: - plusieurs constantes _DIR_* au début de inc_version définissent les répertoires où se trouvent les sources, considérées comme inaccessibles en écriture car partageable par plusieurs sites. - ensuite, plusieurs constantes _NOM_* définissent le nom (relatif) des fichiers et répertoires propres et indispensables à chaque site utilisant Spip, savoir define('_NOM_CONFIG', 'mes_options'); define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/"); define('_NOM_TEMPORAIRES_ACCESSIBLES', "var/"); define('_NOM_PERMANENTS_INACCESSIBLES', "etc/"); define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/"); var/ comportant les images réduites créé dynamiquement tmp/ jouant le role d'ecrire/data et comportant egalement CACHE/ etc/ jouant le role de ecrire/ en tant que repertoire accessible en écriture. - inc_version ne définit plus de fontions, mais charge immédiatement inc/utils qui à l'inverse ne fait que définir des fonctions. - inc_version charge ensuite le fichier ecrire/mes_options.php (pour compatibilité) ou etc/mes_options (préférable aujourd'hui); - enfin, il appelle la fonction d'initialisation ainsi: @spip_initialisation( (_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES), (_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES) ); ce qui va définir les 4 répertoires accessibles en écriture à la racine du site, et initialiser toutes les autres constantes (notamment _SPIP_CHMOD). - toutefois l'inclusion de mes_options peut neutraliser cet appel soit partiellement (en définissant quelques unes des constantes normalement définies par spip_initialisation qui ne pourra plus agir dessus) soit totalement (en appelant lui-meme spip_initialisation avec d'autres arguments que ceux ci-dessus). Une application typique est de mettre dans ecrire/mes_options.php (ou etc/mes_otpions.php) les lignes suivantes: define('_SPIP_CHMOD', 0770); if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) { if (is_dir($e = _DIR_RACINE . 'Ajouts/' . $r[1]. '/')) { $cookie_prefix = $table_prefix = $r[1]; define('_SPIP_PATH', _DIR_RACINE . 'Ajouts/' . $table_prefix . '/:' . _DIR_RACINE.':'. _DIR_RACINE .'dist/:' . _DIR_RESTREINT); spip_initialisation( ($e . _NOM_PERMANENTS_INACCESSIBLES), ($e . _NOM_PERMANENTS_ACCESSIBLES), ($e . _NOM_TEMPORAIRES_INACCESSIBLES), ($e . _NOM_TEMPORAIRES_ACCESSIBLES) ); if (is_readable($e .= _NOM_CONFIG . '.php')) include($e); } } La première ligne réduit l'accès aux répertoires et fichiers créés par le serveur http à ce seul serveur. A partir de l'URL du script appelé, les lignes suivantes déduisent un nom qui doit etre le nom d'un sous-répertoire Ajouts dans l'installation de Spip. L'exécution de ce script commence donc par déclarer les 4 sous-répertoires spécifiques au site, ainsi que le préfixe de ses table SQL. Au cas où existerait un fichier etc/mes_options pour ce site spécifique, celui est également chargé. L'utilisation des constantes _NOM_* permet donc de disposer d'un ensemble de répertoires et fichiers qui n'ont meme pas à savoir s'ils utilisent une installation mutualisée ou non de Spip. ATTENTION: il faut bien voir que les fonctions de inc/utils ne seront vraiment utilisables qu'après appel de spip_initialisation, car les constantes qu'elles utilisent (_DIR_TMP, _DIR_IMG etc) ne sont pas encore définies à l'entrée de mes_options (c'est justement ce qui permet de les personnaliser).
17 years ago
// *** Fin des define *** //
// Inclure l'ecran de securite
if (!defined('_ECRAN_SECURITE')
and @file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . 'ecran_securite.php')
) {
include $f;
}
/*
* Détecteur de robot d'indexation
*/
if (!defined('_IS_BOT')) {
define('_IS_BOT',
isset($_SERVER['HTTP_USER_AGENT'])
and preg_match(
// mots generiques
',bot|slurp|crawler|spider|webvac|yandex|'
// MSIE 6.0 est un botnet 99,9% du temps, on traite donc ce USER_AGENT comme un bot
. 'MSIE 6\.0|'
// UA plus cibles
. '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'
. ',i', (string)$_SERVER['HTTP_USER_AGENT'])
);
}
if (!defined('_IS_CLI')) {
define('_IS_CLI',
!isset($_SERVER['HTTP_HOST'])
and !strlen($_SERVER['DOCUMENT_ROOT'])
and !empty($_SERVER['argv'])
and empty($_SERVER['REQUEST_METHOD'])
);
}
// *** Parametrage par defaut de SPIP ***
//
Fusion des fonctions spip_initialisation et spip_intialisation_parametree. Suite à quelques essais (pas toujours réussis il est vrai) et échanges divers, l'installation de Spip, notamment en mutualisé, repose à présent sur les symboles suivants: - plusieurs constantes _DIR_* au début de inc_version définissent les répertoires où se trouvent les sources, considérées comme inaccessibles en écriture car partageable par plusieurs sites. - ensuite, plusieurs constantes _NOM_* définissent le nom (relatif) des fichiers et répertoires propres et indispensables à chaque site utilisant Spip, savoir define('_NOM_CONFIG', 'mes_options'); define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/"); define('_NOM_TEMPORAIRES_ACCESSIBLES', "var/"); define('_NOM_PERMANENTS_INACCESSIBLES', "etc/"); define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/"); var/ comportant les images réduites créé dynamiquement tmp/ jouant le role d'ecrire/data et comportant egalement CACHE/ etc/ jouant le role de ecrire/ en tant que repertoire accessible en écriture. - inc_version ne définit plus de fontions, mais charge immédiatement inc/utils qui à l'inverse ne fait que définir des fonctions. - inc_version charge ensuite le fichier ecrire/mes_options.php (pour compatibilité) ou etc/mes_options (préférable aujourd'hui); - enfin, il appelle la fonction d'initialisation ainsi: @spip_initialisation( (_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES), (_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES) ); ce qui va définir les 4 répertoires accessibles en écriture à la racine du site, et initialiser toutes les autres constantes (notamment _SPIP_CHMOD). - toutefois l'inclusion de mes_options peut neutraliser cet appel soit partiellement (en définissant quelques unes des constantes normalement définies par spip_initialisation qui ne pourra plus agir dessus) soit totalement (en appelant lui-meme spip_initialisation avec d'autres arguments que ceux ci-dessus). Une application typique est de mettre dans ecrire/mes_options.php (ou etc/mes_otpions.php) les lignes suivantes: define('_SPIP_CHMOD', 0770); if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) { if (is_dir($e = _DIR_RACINE . 'Ajouts/' . $r[1]. '/')) { $cookie_prefix = $table_prefix = $r[1]; define('_SPIP_PATH', _DIR_RACINE . 'Ajouts/' . $table_prefix . '/:' . _DIR_RACINE.':'. _DIR_RACINE .'dist/:' . _DIR_RESTREINT); spip_initialisation( ($e . _NOM_PERMANENTS_INACCESSIBLES), ($e . _NOM_PERMANENTS_ACCESSIBLES), ($e . _NOM_TEMPORAIRES_INACCESSIBLES), ($e . _NOM_TEMPORAIRES_ACCESSIBLES) ); if (is_readable($e .= _NOM_CONFIG . '.php')) include($e); } } La première ligne réduit l'accès aux répertoires et fichiers créés par le serveur http à ce seul serveur. A partir de l'URL du script appelé, les lignes suivantes déduisent un nom qui doit etre le nom d'un sous-répertoire Ajouts dans l'installation de Spip. L'exécution de ce script commence donc par déclarer les 4 sous-répertoires spécifiques au site, ainsi que le préfixe de ses table SQL. Au cas où existerait un fichier etc/mes_options pour ce site spécifique, celui est également chargé. L'utilisation des constantes _NOM_* permet donc de disposer d'un ensemble de répertoires et fichiers qui n'ont meme pas à savoir s'ils utilisent une installation mutualisée ou non de Spip. ATTENTION: il faut bien voir que les fonctions de inc/utils ne seront vraiment utilisables qu'après appel de spip_initialisation, car les constantes qu'elles utilisent (_DIR_TMP, _DIR_IMG etc) ne sont pas encore définies à l'entrée de mes_options (c'est justement ce qui permet de les personnaliser).
17 years ago
// Les globales qui suivent peuvent etre modifiees
// dans le fichier de personnalisation indique ci-dessus.
// Il suffit de copier les lignes ci-dessous, et ajouter le marquage de debut
// et fin de fichier PHP ("< ?php" et "? >", sans les espaces)
// Ne pas les rendre indefinies.
21 years ago
global
$nombre_de_logs,
$taille_des_logs,
$table_prefix,
$cookie_prefix,
$dossier_squelettes,
$filtrer_javascript,
$type_urls,
$debut_date_publication,
$ip,
$mysql_rappel_connexion,
$mysql_rappel_nom_base,
$test_i18n,
$ignore_auth_http,
$ignore_remote_user,
$derniere_modif_invalide,
$home_server,
$help_server,
$url_glossaire_externe,
$tex_server,
$traiter_math,
$xhtml,
$xml_indent,
$source_vignettes,
$formats_logos,
$controler_dates_rss,
$spip_pipeline,
$spip_matrice,
$plugins,
$surcharges,
$exceptions_des_tables,
$tables_principales,
$table_des_tables,
$tables_auxiliaires,
$table_primary,
$table_date,
$table_titre,
$tables_jointures,
$liste_des_statuts,
$liste_des_etats,
$liste_des_authentifications,
$spip_version_branche,
$spip_version_code,
$spip_version_base,
$spip_sql_version,
$spip_version_affichee,
$visiteur_session,
$auteur_session,
$connect_statut,
$connect_toutes_rubriques,
$hash_recherche,
$hash_recherche_strict,
$ldap_present,
$meta,
$connect_id_rubrique,
$puce;
# comment on logge, defaut 4 tmp/spip.log de 100k, 0 ou 0 suppriment le log
$nombre_de_logs = 4;
$taille_des_logs = 100;
// Definir les niveaux de log
defined('_LOG_HS') || define('_LOG_HS', 0);
defined('_LOG_ALERTE_ROUGE') || define('_LOG_ALERTE_ROUGE', 1);
defined('_LOG_CRITIQUE') || define('_LOG_CRITIQUE', 2);
defined('_LOG_ERREUR') || define('_LOG_ERREUR', 3);
defined('_LOG_AVERTISSEMENT') || define('_LOG_AVERTISSEMENT', 4);
defined('_LOG_INFO_IMPORTANTE') || define('_LOG_INFO_IMPORTANTE', 5);
defined('_LOG_INFO') || define('_LOG_INFO', 6);
defined('_LOG_DEBUG') || define('_LOG_DEBUG', 7);
// on peut definir _LOG_FILTRE_GRAVITE dans mes_options.php
21 years ago
// Prefixe des tables dans la base de donnees
// (a modifier pour avoir plusieurs sites SPIP dans une seule base)
$table_prefix = "spip";
// Prefixe des cookies
// (a modifier pour installer des sites SPIP dans des sous-repertoires)
$cookie_prefix = "spip";
// Dossier des squelettes
// (a modifier si l'on veut passer rapidement d'un jeu de squelettes a un autre)
$dossier_squelettes = "";
// Pour le javascript, trois modes : parano (-1), prive (0), ok (1)
// parano le refuse partout, ok l'accepte partout
// le mode par defaut le signale en rouge dans l'espace prive
// Si < 1, les fichiers SVG sont traites s'ils emanent d'un redacteur
$filtrer_javascript = 0;
// PS: dans les forums, petitions, flux syndiques... c'est *toujours* securise
// Type d'URLs
// inc/utils.php sélectionne le type 'page' (spip.php?article123) en l'absence
// d'autre configuration stockée en $GLOBALS['meta']['type_urls]
// Pour les autres types: voir urls_etendues
// $type_urls n'a plus de valeur par défaut en 3.1 mais permet de forcer une
// configuration d'urls dans les fichiers d'options.
#la premiere date dans le menu deroulant de date de publication
# null: automatiquement (affiche les 8 dernieres annees)
# 0: affiche un input libre
# 1997: le menu commence a 1997 jusqu'a annee en cours
$debut_date_publication = null;
//
// Prendre en compte les entetes HTTP_X_FORWARDED_XX
//
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO']==='https'){
if (empty($_SERVER['HTTP_X_FORWARDED_HOST'])) {
$_SERVER['HTTP_X_FORWARDED_HOST'] = $_SERVER['HTTP_HOST'];
}
if (empty($_SERVER['HTTP_X_FORWARDED_PORT'])) {
$_SERVER['HTTP_X_FORWARDED_PORT'] = 443;
}
}
if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])){
if (isset($_SERVER['HTTP_X_FORWARDED_PORT']) and is_numeric($_SERVER['HTTP_X_FORWARDED_PORT'])){
$_SERVER['SERVER_PORT'] = $_SERVER['HTTP_X_FORWARDED_PORT'];
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO']==='https'){
$_SERVER['HTTPS'] = 'on';
if (isset($_SERVER['REQUEST_SCHEME'])) {
$_SERVER['REQUEST_SCHEME'] = 'https';
}
}
}
$host = $_SERVER['HTTP_X_FORWARDED_HOST'];
if (strpos($host,',')!==false){
$h = explode(',',$host);
$host = trim(reset($h));
}
// securite sur le contenu de l'entete
$host = strtr($host, "<>?\"\{\}\$'` \r\n", '____________');
$_SERVER['HTTP_HOST'] = $host;
}
//
// On note le numero IP du client dans la variable $ip
//
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
if (strpos($ip,',')!==false){
$ip = explode(',',$ip);
$ip = reset($ip);
}
// ecraser $_SERVER['REMOTE_ADDR'] si elle est en localhost
if (isset($_SERVER['REMOTE_ADDR']) AND $_SERVER['REMOTE_ADDR']==='127.0.0.1'){
$_SERVER['REMOTE_ADDR'] = $ip;
}
}
if (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
// Pour renforcer la privacy, decommentez la ligne ci-dessous (ou recopiez-la
// dans le fichier config/mes_options) : SPIP ne pourra alors conserver aucun
// numero IP, ni temporairement lors des visites (pour gerer les statistiques
// ou dans spip.log), ni dans les forums (responsabilite)
# $ip = substr(md5($ip),0,16);
// faut-il faire des connexions Mysql rappelant le nom de la base MySQL ?
// (utile si vos squelettes appellent d'autres bases MySQL)
// (A desactiver en cas de soucis de connexion chez certains hebergeurs)
// Note: un test a l'installation peut aussi avoir desactive
// $mysql_rappel_nom_base directement dans le fichier inc_connect
$mysql_rappel_nom_base = true;
// faut-il afficher en rouge les chaines non traduites ?
$test_i18n = false;
// faut-il ignorer l'authentification par auth http/remote_user ?
$ignore_auth_http = false;
$ignore_remote_user = true; # methode obsolete et risquee
20 years ago
// Invalider les caches a chaque modification du contenu ?
// Si votre site a des problemes de performance face a une charge tres elevee,
// vous pouvez mettre cette globale a false (dans mes_options).
$derniere_modif_invalide = true;
//
// Serveurs externes
//
# Serveur de documentation officielle
$home_server = 'https://www.spip.net';
# glossaire pour raccourci [?X]. Aussi: [?X#G] et definir glossaire_G
$url_glossaire_externe = "https://@lang@.wikipedia.org/wiki/%s";
# TeX
$tex_server = 'https://math.spip.org/tex.php';
# MathML (pas pour l'instant: manque un bon convertisseur)
// $mathml_server = 'http://arno.rezo.net/tex2mathml/latex.php';
// Produire du TeX ou du MathML ?
$traiter_math = 'tex';
// Appliquer un indenteur XHTML aux espaces public et/ou prive ?
$xhtml = false;
$xml_indent = false;
$formats_logos = array('jpg', 'png', 'svg', 'gif', 'webp');
// Controler les dates des item dans les flux RSS ?
$controler_dates_rss = true;
//
// Pipelines & plugins
//
# les pipeline standards (traitements derivables aka points d'entree)
# ils seront compiles par la suite
# note: un pipeline non reference se compile aussi, mais uniquement
# lorsqu'il est rencontre
// https://programmer.spip.net/-Les-pipelines-
$spip_pipeline = array();
# la matrice standard (fichiers definissant les fonctions a inclure)
$spip_matrice = array();
# les plugins a activer
$plugins = array(); // voir le contenu du repertoire /plugins/
# les surcharges de include_spip()
$surcharges = array(); // format 'inc_truc' => '/plugins/chose/inc_truc2.php'
// Variables du compilateur de squelettes
$exceptions_des_tables = array();
$tables_principales = array();
$table_des_tables = array();
$tables_auxiliaires = array();
$table_primary = array();
$table_date = array();
$table_titre = array();
$tables_jointures = array();
// Liste des statuts.
$liste_des_statuts = array(
"info_administrateurs" => '0minirezo',
"info_redacteurs" => '1comite',
"info_visiteurs" => '6forum',
"texte_statut_poubelle" => '5poubelle'
);
$liste_des_etats = array(
'texte_statut_en_cours_redaction' => 'prepa',
'texte_statut_propose_evaluation' => 'prop',
'texte_statut_publie' => 'publie',
'texte_statut_poubelle' => 'poubelle',
'texte_statut_refuse' => 'refuse'
);
// liste des methodes d'authentifications
$liste_des_authentifications = array(
'spip' => 'spip',
'ldap' => 'ldap'
);
// Experimental : pour supprimer systematiquement l'affichage des numeros
// de classement des titres, recopier la ligne suivante dans mes_options :
# $table_des_traitements['TITRE'][]= 'typo(supprimer_numero(%s), "TYPO", $connect)';
// Droits d'acces maximum par defaut
@umask(0);
// numero de branche, utilise par les plugins
// pour specifier les versions de SPIP necessaires
// 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
$spip_version_branche = "4.1.0-dev";
define('_SPIP_VERSION_ID', 41000);
define('_SPIP_EXTRA_VERSION', '-dev');
// cette version dev accepte tous les plugins compatible avec la version ci-dessous
// a supprimer en phase beta/rc/release
define('_DEV_VERSION_SPIP_COMPAT',"4.0.99");
// version des signatures de fonctions PHP
// (= date de leur derniere modif cassant la compatibilite et/ou necessitant un recalcul des squelettes)
$spip_version_code = 20210708;
// version de la base SQL (= Date + numero incremental a 2 chiffres YYYYMMDDXX)
$spip_version_base = 2021021800;
Introduction d'un gestionnaire de version d'interface SQL. Afin de prévenir les désagréments d'éventuels changements de spécification, l'interface de SPIP aux serveurs SQL inrègre d'emblée un gestionnaire de versions, permettant à une même connexcion SQL d'être exploitée {simultanément} par plusieurs versions des fonctions d'abstraction. Et également fourni un script rendant automatiquement compatibles des extensions fondées sur d'anciennes versions de l'interface. Principe. Toutes les fonctions de l'interface sont définies dans le fichier (((ecrire/base/abstract_sql))), se nomment {{{sql_}}}{X} et sont les seules à se nommées ainsi. Elles se connectent toutes en appelant une fonction dont le premier argument est le numéro de version de l'interface. Le jour où une nouvelle version de (((ecrire/base/abstract_sql))) apparaitra nécessaire, la version courante sera renommée {{{abstract_sql_}}}{{N}}, et le Sed suivant lui sera appliqué ({{{N}}} désigne le numéro de version): {{{ s/\(sql_[A-Za-z_0-9 ]*\)/\1_N/ }}} En appliquant également ce script aux extensions de SPIP fondées sur cette version, on leur permettra d'en appeler ses fonctions, qui seront chargées sans collision de noms, le Sed ayant préfixé le noms des anciennes avec leur numéro de version. Il faudra juste rajouter une instruction {{{include}}} portant sur le fichier {{{abstract_sql_}}}{{N}}. Ce service repose sur la réservation des noms commençant par {{{sql_}}} aux seules fonctions d'interface, grâce aux renommages effectués en [9916] [9918] et [9919]. Les extensions de SPIP doivent respecter cette contrainte s'ils veulent en bénéficier. Le présent dépot consiste en une reconception de la sructure de données décrivant une connexion, afin d'associer plusieurs jeux de fonction à une même connexion.
15 years ago
// version de l'interface a la base
$spip_sql_version = 1;
// version de spip en chaine
// 1.xxyy : xx00 versions stables publiees, xxyy versions de dev
// (ce qui marche pour yy ne marchera pas forcement sur une version plus ancienne)
$spip_version_affichee = "$spip_version_branche";
// ** Securite **
$visiteur_session = $auteur_session = $connect_statut = $connect_toutes_rubriques = $hash_recherche = $hash_recherche_strict = $ldap_present = '';
$meta = $connect_id_rubrique = array();
Fusion des fonctions spip_initialisation et spip_intialisation_parametree. Suite à quelques essais (pas toujours réussis il est vrai) et échanges divers, l'installation de Spip, notamment en mutualisé, repose à présent sur les symboles suivants: - plusieurs constantes _DIR_* au début de inc_version définissent les répertoires où se trouvent les sources, considérées comme inaccessibles en écriture car partageable par plusieurs sites. - ensuite, plusieurs constantes _NOM_* définissent le nom (relatif) des fichiers et répertoires propres et indispensables à chaque site utilisant Spip, savoir define('_NOM_CONFIG', 'mes_options'); define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/"); define('_NOM_TEMPORAIRES_ACCESSIBLES', "var/"); define('_NOM_PERMANENTS_INACCESSIBLES', "etc/"); define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/"); var/ comportant les images réduites créé dynamiquement tmp/ jouant le role d'ecrire/data et comportant egalement CACHE/ etc/ jouant le role de ecrire/ en tant que repertoire accessible en écriture. - inc_version ne définit plus de fontions, mais charge immédiatement inc/utils qui à l'inverse ne fait que définir des fonctions. - inc_version charge ensuite le fichier ecrire/mes_options.php (pour compatibilité) ou etc/mes_options (préférable aujourd'hui); - enfin, il appelle la fonction d'initialisation ainsi: @spip_initialisation( (_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES), (_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES) ); ce qui va définir les 4 répertoires accessibles en écriture à la racine du site, et initialiser toutes les autres constantes (notamment _SPIP_CHMOD). - toutefois l'inclusion de mes_options peut neutraliser cet appel soit partiellement (en définissant quelques unes des constantes normalement définies par spip_initialisation qui ne pourra plus agir dessus) soit totalement (en appelant lui-meme spip_initialisation avec d'autres arguments que ceux ci-dessus). Une application typique est de mettre dans ecrire/mes_options.php (ou etc/mes_otpions.php) les lignes suivantes: define('_SPIP_CHMOD', 0770); if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) { if (is_dir($e = _DIR_RACINE . 'Ajouts/' . $r[1]. '/')) { $cookie_prefix = $table_prefix = $r[1]; define('_SPIP_PATH', _DIR_RACINE . 'Ajouts/' . $table_prefix . '/:' . _DIR_RACINE.':'. _DIR_RACINE .'dist/:' . _DIR_RESTREINT); spip_initialisation( ($e . _NOM_PERMANENTS_INACCESSIBLES), ($e . _NOM_PERMANENTS_ACCESSIBLES), ($e . _NOM_TEMPORAIRES_INACCESSIBLES), ($e . _NOM_TEMPORAIRES_ACCESSIBLES) ); if (is_readable($e .= _NOM_CONFIG . '.php')) include($e); } } La première ligne réduit l'accès aux répertoires et fichiers créés par le serveur http à ce seul serveur. A partir de l'URL du script appelé, les lignes suivantes déduisent un nom qui doit etre le nom d'un sous-répertoire Ajouts dans l'installation de Spip. L'exécution de ce script commence donc par déclarer les 4 sous-répertoires spécifiques au site, ainsi que le préfixe de ses table SQL. Au cas où existerait un fichier etc/mes_options pour ce site spécifique, celui est également chargé. L'utilisation des constantes _NOM_* permet donc de disposer d'un ensemble de répertoires et fichiers qui n'ont meme pas à savoir s'ils utilisent une installation mutualisée ou non de Spip. ATTENTION: il faut bien voir que les fonctions de inc/utils ne seront vraiment utilisables qu'après appel de spip_initialisation, car les constantes qu'elles utilisent (_DIR_TMP, _DIR_IMG etc) ne sont pas encore définies à l'entrée de mes_options (c'est justement ce qui permet de les personnaliser).
17 years ago
// *** Fin des globales *** //
//
// Charger les fonctions liees aux serveurs Http et Sql.
//
require_once _ROOT_RESTREINT . 'inc/utils.php';
require_once _ROOT_RESTREINT . 'base/connect_sql.php';
Fusion des fonctions spip_initialisation et spip_intialisation_parametree. Suite à quelques essais (pas toujours réussis il est vrai) et échanges divers, l'installation de Spip, notamment en mutualisé, repose à présent sur les symboles suivants: - plusieurs constantes _DIR_* au début de inc_version définissent les répertoires où se trouvent les sources, considérées comme inaccessibles en écriture car partageable par plusieurs sites. - ensuite, plusieurs constantes _NOM_* définissent le nom (relatif) des fichiers et répertoires propres et indispensables à chaque site utilisant Spip, savoir define('_NOM_CONFIG', 'mes_options'); define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/"); define('_NOM_TEMPORAIRES_ACCESSIBLES', "var/"); define('_NOM_PERMANENTS_INACCESSIBLES', "etc/"); define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/"); var/ comportant les images réduites créé dynamiquement tmp/ jouant le role d'ecrire/data et comportant egalement CACHE/ etc/ jouant le role de ecrire/ en tant que repertoire accessible en écriture. - inc_version ne définit plus de fontions, mais charge immédiatement inc/utils qui à l'inverse ne fait que définir des fonctions. - inc_version charge ensuite le fichier ecrire/mes_options.php (pour compatibilité) ou etc/mes_options (préférable aujourd'hui); - enfin, il appelle la fonction d'initialisation ainsi: @spip_initialisation( (_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES), (_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES) ); ce qui va définir les 4 répertoires accessibles en écriture à la racine du site, et initialiser toutes les autres constantes (notamment _SPIP_CHMOD). - toutefois l'inclusion de mes_options peut neutraliser cet appel soit partiellement (en définissant quelques unes des constantes normalement définies par spip_initialisation qui ne pourra plus agir dessus) soit totalement (en appelant lui-meme spip_initialisation avec d'autres arguments que ceux ci-dessus). Une application typique est de mettre dans ecrire/mes_options.php (ou etc/mes_otpions.php) les lignes suivantes: define('_SPIP_CHMOD', 0770); if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) { if (is_dir($e = _DIR_RACINE . 'Ajouts/' . $r[1]. '/')) { $cookie_prefix = $table_prefix = $r[1]; define('_SPIP_PATH', _DIR_RACINE . 'Ajouts/' . $table_prefix . '/:' . _DIR_RACINE.':'. _DIR_RACINE .'dist/:' . _DIR_RESTREINT); spip_initialisation( ($e . _NOM_PERMANENTS_INACCESSIBLES), ($e . _NOM_PERMANENTS_ACCESSIBLES), ($e . _NOM_TEMPORAIRES_INACCESSIBLES), ($e . _NOM_TEMPORAIRES_ACCESSIBLES) ); if (is_readable($e .= _NOM_CONFIG . '.php')) include($e); } } La première ligne réduit l'accès aux répertoires et fichiers créés par le serveur http à ce seul serveur. A partir de l'URL du script appelé, les lignes suivantes déduisent un nom qui doit etre le nom d'un sous-répertoire Ajouts dans l'installation de Spip. L'exécution de ce script commence donc par déclarer les 4 sous-répertoires spécifiques au site, ainsi que le préfixe de ses table SQL. Au cas où existerait un fichier etc/mes_options pour ce site spécifique, celui est également chargé. L'utilisation des constantes _NOM_* permet donc de disposer d'un ensemble de répertoires et fichiers qui n'ont meme pas à savoir s'ils utilisent une installation mutualisée ou non de Spip. ATTENTION: il faut bien voir que les fonctions de inc/utils ne seront vraiment utilisables qu'après appel de spip_initialisation, car les constantes qu'elles utilisent (_DIR_TMP, _DIR_IMG etc) ne sont pas encore définies à l'entrée de mes_options (c'est justement ce qui permet de les personnaliser).
17 years ago
// Definition personnelles eventuelles
if (_FILE_OPTIONS) {
include_once _FILE_OPTIONS;
}
if (!defined('SPIP_ERREUR_REPORT')) {
/** Masquer les warning */
define('SPIP_ERREUR_REPORT', E_ALL ^ E_NOTICE ^ E_DEPRECATED);
}
error_reporting(SPIP_ERREUR_REPORT);
15 years ago
// Initialisations critiques non surchargeables par les plugins
Fusion des fonctions spip_initialisation et spip_intialisation_parametree. Suite à quelques essais (pas toujours réussis il est vrai) et échanges divers, l'installation de Spip, notamment en mutualisé, repose à présent sur les symboles suivants: - plusieurs constantes _DIR_* au début de inc_version définissent les répertoires où se trouvent les sources, considérées comme inaccessibles en écriture car partageable par plusieurs sites. - ensuite, plusieurs constantes _NOM_* définissent le nom (relatif) des fichiers et répertoires propres et indispensables à chaque site utilisant Spip, savoir define('_NOM_CONFIG', 'mes_options'); define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/"); define('_NOM_TEMPORAIRES_ACCESSIBLES', "var/"); define('_NOM_PERMANENTS_INACCESSIBLES', "etc/"); define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/"); var/ comportant les images réduites créé dynamiquement tmp/ jouant le role d'ecrire/data et comportant egalement CACHE/ etc/ jouant le role de ecrire/ en tant que repertoire accessible en écriture. - inc_version ne définit plus de fontions, mais charge immédiatement inc/utils qui à l'inverse ne fait que définir des fonctions. - inc_version charge ensuite le fichier ecrire/mes_options.php (pour compatibilité) ou etc/mes_options (préférable aujourd'hui); - enfin, il appelle la fonction d'initialisation ainsi: @spip_initialisation( (_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES), (_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES) ); ce qui va définir les 4 répertoires accessibles en écriture à la racine du site, et initialiser toutes les autres constantes (notamment _SPIP_CHMOD). - toutefois l'inclusion de mes_options peut neutraliser cet appel soit partiellement (en définissant quelques unes des constantes normalement définies par spip_initialisation qui ne pourra plus agir dessus) soit totalement (en appelant lui-meme spip_initialisation avec d'autres arguments que ceux ci-dessus). Une application typique est de mettre dans ecrire/mes_options.php (ou etc/mes_otpions.php) les lignes suivantes: define('_SPIP_CHMOD', 0770); if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) { if (is_dir($e = _DIR_RACINE . 'Ajouts/' . $r[1]. '/')) { $cookie_prefix = $table_prefix = $r[1]; define('_SPIP_PATH', _DIR_RACINE . 'Ajouts/' . $table_prefix . '/:' . _DIR_RACINE.':'. _DIR_RACINE .'dist/:' . _DIR_RESTREINT); spip_initialisation( ($e . _NOM_PERMANENTS_INACCESSIBLES), ($e . _NOM_PERMANENTS_ACCESSIBLES), ($e . _NOM_TEMPORAIRES_INACCESSIBLES), ($e . _NOM_TEMPORAIRES_ACCESSIBLES) ); if (is_readable($e .= _NOM_CONFIG . '.php')) include($e); } } La première ligne réduit l'accès aux répertoires et fichiers créés par le serveur http à ce seul serveur. A partir de l'URL du script appelé, les lignes suivantes déduisent un nom qui doit etre le nom d'un sous-répertoire Ajouts dans l'installation de Spip. L'exécution de ce script commence donc par déclarer les 4 sous-répertoires spécifiques au site, ainsi que le préfixe de ses table SQL. Au cas où existerait un fichier etc/mes_options pour ce site spécifique, celui est également chargé. L'utilisation des constantes _NOM_* permet donc de disposer d'un ensemble de répertoires et fichiers qui n'ont meme pas à savoir s'ils utilisent une installation mutualisée ou non de Spip. ATTENTION: il faut bien voir que les fonctions de inc/utils ne seront vraiment utilisables qu'après appel de spip_initialisation, car les constantes qu'elles utilisent (_DIR_TMP, _DIR_IMG etc) ne sont pas encore définies à l'entrée de mes_options (c'est justement ce qui permet de les personnaliser).
17 years ago
// INITIALISER LES REPERTOIRES NON PARTAGEABLES ET LES CONSTANTES
// (charge aussi inc/flock)
//
// mais l'inclusion precedente a peut-etre deja appele cette fonction
// ou a defini certaines des constantes que cette fonction doit definir
Fusion des fonctions spip_initialisation et spip_intialisation_parametree. Suite à quelques essais (pas toujours réussis il est vrai) et échanges divers, l'installation de Spip, notamment en mutualisé, repose à présent sur les symboles suivants: - plusieurs constantes _DIR_* au début de inc_version définissent les répertoires où se trouvent les sources, considérées comme inaccessibles en écriture car partageable par plusieurs sites. - ensuite, plusieurs constantes _NOM_* définissent le nom (relatif) des fichiers et répertoires propres et indispensables à chaque site utilisant Spip, savoir define('_NOM_CONFIG', 'mes_options'); define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/"); define('_NOM_TEMPORAIRES_ACCESSIBLES', "var/"); define('_NOM_PERMANENTS_INACCESSIBLES', "etc/"); define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/"); var/ comportant les images réduites créé dynamiquement tmp/ jouant le role d'ecrire/data et comportant egalement CACHE/ etc/ jouant le role de ecrire/ en tant que repertoire accessible en écriture. - inc_version ne définit plus de fontions, mais charge immédiatement inc/utils qui à l'inverse ne fait que définir des fonctions. - inc_version charge ensuite le fichier ecrire/mes_options.php (pour compatibilité) ou etc/mes_options (préférable aujourd'hui); - enfin, il appelle la fonction d'initialisation ainsi: @spip_initialisation( (_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES), (_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES), (_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES) ); ce qui va définir les 4 répertoires accessibles en écriture à la racine du site, et initialiser toutes les autres constantes (notamment _SPIP_CHMOD). - toutefois l'inclusion de mes_options peut neutraliser cet appel soit partiellement (en définissant quelques unes des constantes normalement définies par spip_initialisation qui ne pourra plus agir dessus) soit totalement (en appelant lui-meme spip_initialisation avec d'autres arguments que ceux ci-dessus). Une application typique est de mettre dans ecrire/mes_options.php (ou etc/mes_otpions.php) les lignes suivantes: define('_SPIP_CHMOD', 0770); if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) { if (is_dir($e = _DIR_RACINE . 'Ajouts/' . $r[1]. '/')) { $cookie_prefix = $table_prefix = $r[1]; define('_SPIP_PATH', _DIR_RACINE . 'Ajouts/' . $table_prefix . '/:' . _DIR_RACINE.':'. _DIR_RACINE .'dist/:' . _DIR_RESTREINT); spip_initialisation( ($e . _NOM_PERMANENTS_INACCESSIBLES), ($e . _NOM_PERMANENTS_ACCESSIBLES), ($e . _NOM_TEMPORAIRES_INACCESSIBLES), ($e . _NOM_TEMPORAIRES_ACCESSIBLES) ); if (is_readable($e .= _NOM_CONFIG . '.php')) include($e); } } La première ligne réduit l'accès aux répertoires et fichiers créés par le serveur http à ce seul serveur. A partir de l'URL du script appelé, les lignes suivantes déduisent un nom qui doit etre le nom d'un sous-répertoire Ajouts dans l'installation de Spip. L'exécution de ce script commence donc par déclarer les 4 sous-répertoires spécifiques au site, ainsi que le préfixe de ses table SQL. Au cas où existerait un fichier etc/mes_options pour ce site spécifique, celui est également chargé. L'utilisation des constantes _NOM_* permet donc de disposer d'un ensemble de répertoires et fichiers qui n'ont meme pas à savoir s'ils utilisent une installation mutualisée ou non de Spip. ATTENTION: il faut bien voir que les fonctions de inc/utils ne seront vraiment utilisables qu'après appel de spip_initialisation, car les constantes qu'elles utilisent (_DIR_TMP, _DIR_IMG etc) ne sont pas encore définies à l'entrée de mes_options (c'est justement ce qui permet de les personnaliser).
17 years ago
// ===> on execute en neutralisant les messages d'erreur
spip_initialisation_core(
(_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES),
(_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES),
(_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES),
(_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES)
);
// chargement des plugins : doit arriver en dernier
// car dans les plugins on peut inclure inc-version
// qui ne sera pas execute car _ECRIRE_INC_VERSION est defini
// donc il faut avoir tout fini ici avant de charger les plugins
if (@is_readable(_CACHE_PLUGINS_OPT) and @is_readable(_CACHE_PLUGINS_PATH)) {
// chargement optimise precompile
include_once(_CACHE_PLUGINS_OPT);
} else {
spip_initialisation_suite();
include_spip('inc/plugin');
// generer les fichiers php precompiles
// de chargement des plugins et des pipelines
actualise_plugins_actifs();
}
15 years ago
// Initialisations non critiques surchargeables par les plugins
spip_initialisation_suite();
if (!defined('_LOG_FILTRE_GRAVITE')) {
/** niveau maxi d'enregistrement des logs */
define('_LOG_FILTRE_GRAVITE', _LOG_INFO_IMPORTANTE);
}
if (!defined('_OUTILS_DEVELOPPEURS')) {
/** Activer des outils pour développeurs ? */
define('_OUTILS_DEVELOPPEURS', false);
}
// charger systematiquement inc/autoriser dans l'espace restreint
if (test_espace_prive()) {
include_spip('inc/autoriser');
}
//
// Installer Spip si pas installe... sauf si justement on est en train
//
if (!(_FILE_CONNECT
or autoriser_sans_cookie(_request('exec'))
or _request('action') == 'cookie'
or _request('action') == 'converser'
or _request('action') == 'test_dirs')
) {
// Si on peut installer, on lance illico
if (test_espace_prive()) {
include_spip('inc/headers');
redirige_url_ecrire("install");
} else {
// Si on est dans le site public, dire que qq s'en occupe
include_spip('inc/minipres');
utiliser_langue_visiteur();
echo minipres(_T('info_travaux_titre'), "<p style='text-align: center;'>" . _T('info_travaux_texte') . "</p>", array('status' => 503));
exit;
}
// autrement c'est une install ad hoc (spikini...), on sait pas faire
}
// memoriser un tri sessionne eventuel
if (isset($_REQUEST['var_memotri'])
and $t = $_REQUEST['var_memotri']
and (strncmp($t, 'trisession', 10) == 0 or strncmp($t, 'senssession', 11) == 0)
) {
if (!function_exists('session_set')) {