r7687 - in spip/ecrire: . action inc

Author: esj@rezo.net
Date: 2006-10-23 15:24:36 +0200 (lun, 23 oct 2006)
New Revision: 7687

Log:
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).

Modified:
   spip/ecrire/action/purger.php
   spip/ecrire/action/tester.php
   spip/ecrire/inc/filtres.php
   spip/ecrire/inc/filtres_images.php
   spip/ecrire/inc/flock.php
   spip/ecrire/inc/logos.php
   spip/ecrire/inc/maintenance.php
   spip/ecrire/inc/math.php
   spip/ecrire/inc/utils.php
   spip/ecrire/inc_version.php

Details: http://trac.rezo.net/trac/spip/changeset/7687