Skip to content
Extraits de code Groupes Projets
  1. oct. 03, 2007
  2. oct. 02, 2007
  3. oct. 01, 2007
  4. sept. 30, 2007
    • Fil's avatar
    • esj's avatar
      Multi-base: suite au problème posé dans [10460] sur la possibilité depuis... · 976a3bc4
      esj a rédigé
      Multi-base: suite au problème posé dans [10460] sur la possibilité depuis [10457] d'avoir dans un unique répertoire tous les fichiers de connexions de sites partageant les mes sources, la spécification de ces fichiers, telle que décrite dans [10113] (et reprise dans [10183] et http://www.spip-contrib.net/MultiBase) subit une modification. Sont introduites deux constantes _DIR_CONNECT et _DIR_CHMOD, indiquant les répertoires où figureront le fichier décrivant la connexion et celui décrivant les droits des fichiers, en plus des constantes FILE_CONNECT_INS et FILE_CHMOD_INS. Par défaut, ces valeurs conservent le nommage habituel en {{{config/connect.php}}} et {{{config/chmod.php}}}. Lorsqu'on le référence une base externe ''A'', SPIP va à présent chercher le fichier nommé par l'expression {{{ _DIR_CONNECT . }}} ''A'' {{{ . '.php' }}}, autrement dit {{{config/}}}A{{{.php}}}. Par rapport à la spécification précédente, le préfixe {{{connect}}} a donc disparu, ce qui résoud le problème posé dans [10460].
      
      Pour avoir dans un même répertoire tous les fichiers de connexion de sites mutualisés (et un autre pour les sauvegardes, un autre pour les Logs et un autre pour les droits), sans oublier de provoquer la vérification des droits sur les répertoires lors des installations, on peut utiliser le schéma de mutualisation suivant:
      
      {{{
      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  . '/dist/:' .
      			_DIR_RACINE .'Ajouts/' . $table_prefix  . '/:' .
      			_DIR_RACINE .'dist/:' .
      			_DIR_RACINE .'dist/javascript/:' .
      			_DIR_RESTREINT);
      
      		$pi = $e . _NOM_PERMANENTS_INACCESSIBLES;
      		$pa = $e . _NOM_PERMANENTS_ACCESSIBLES;
      		$ti = $e . _NOM_TEMPORAIRES_INACCESSIBLES;
      		$ta = $e . _NOM_TEMPORAIRES_ACCESSIBLES;
      
      		$pig = _DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES;
      		$tig = _DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES;
      
      		define('_DIR_DUMP', $tig . 'dump/');
      		define('_DIR_LOG', $tig . 'log/');
      		define('_DIR_CONNECT', $pig . 'connect/');
      		define('_DIR_CHMOD', $pig . 'chmod/');
      		define('_FILE_CONNECT_INS', $table_prefix);
      		define('_FILE_CHMOD_INS', $table_prefix);
      		define('_FILE_LOG_SUFFIX', '_' . $table_prefix . '.log');
      
      		$GLOBALS['test_dirs'] =
      		  array($pa, $ta, $ti, $pig, $tig,
      			_DIR_DUMP, _DIR_LOG, _DIR_CONNECT, _DIR_CHMOD);
      
      		spip_initialisation($pi, $pa, $ti, $ta);
      }}}
      
      Seront donc créés à la racine {{{config/connect, config/chmod, tmp/log, tmp/dump}}}, le premier contenant ''A''.php pour la connexion à la base ''A'' etc.
      976a3bc4
    • Fil's avatar
      plein de modifs de langues, desole du retard · 03f9a4b4
      Fil a rédigé
      03f9a4b4
    • esj's avatar
      Commentaires obsolètes et includes prématurés. · e5132f60
      esj a rédigé
      e5132f60
    • esj's avatar
      Multibase: [10457] ne fournissait en fait le service décrit que pour le site à... · 8be78982
      esj a rédigé
      Multibase: [10457] ne fournissait en fait le service décrit que pour le site à la racine vers les sites ajoutés, mais pas pour les sites ajoutés entre eux.  C'est à présent le cas. Mais l'usage du préfixe {{{connect}}} est à nouveau obligatoire, ce qui est un peu dommage. A améliorer.
      8be78982
  5. sept. 29, 2007
    • Christian Lefebvre's avatar
      autodoc · 6af38f8e
      Christian Lefebvre a rédigé
      6af38f8e
    • esj's avatar
      Multi-base: ajout de 3 constantes {{{_DIR_LOH, _FILE_LOG, _FILE_LOG_SUFFIX}}}... · 14f0ae75
      esj a rédigé
      Multi-base: ajout de 3 constantes {{{_DIR_LOH, _FILE_LOG, _FILE_LOG_SUFFIX}}} pour mettre où on veut les fichiers de logs, particuilèrement en mode mutualisé.
      
      Par exemple, la mutualisation suivante dans mes_options.php:
      
      {{{
      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  . '/dist/:' .
      			_DIR_RACINE .'Ajouts/' . $table_prefix  . '/:' .
      			_DIR_RACINE .'dist/:' .
      			_DIR_RACINE .'dist/javascript/:' .
      			_DIR_RESTREINT);
      
      		define('_FILE_CONNECT_INS', 'connect' . $table_prefix);
      		define('_FILE_CHMOD_INS', 'chmod' . $table_prefix);
      		define('_FILE_LOG_SUFFIX', "_$table_prefix" . '.log');
      		define('_DIR_LOG', _DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES);
      		spip_initialisation(
      			(_DIR_RACINE /* $e */ . _NOM_PERMANENTS_INACCESSIBLES),
      			($e . _NOM_PERMANENTS_ACCESSIBLES),
      			($e . _NOM_TEMPORAIRES_INACCESSIBLES),
      			($e . _NOM_TEMPORAIRES_ACCESSIBLES)
      		       );
      }}}
      
      mettra dans le répertoire {{{config}}} de la racine les fichiers de connexions et les fichiers de log (spip et sql) de tout les sites partageant les sources de la racine. Plus besoin de circuler dans ses répertoires pour surveiller plusieurs sites.
      
      
      14f0ae75
    • esj's avatar
      Multi-base; rappel_nom_base et surcharche de FILE_CONNECT_INS · 0c2d20db
      esj a rédigé
      Un excès de zèle dans l'abstraction SQL avait rendu inopérant le test  du besoin de rappeler le nom de la base, c'est réparé.
      
      Par ailleurs les constantes FILE_CONNECT_INS et FILE_CHMOD_INS changent légèrement de rôles afin d'évacuer quelques constantes écrites en dur dans le code, qui empêchaient des sites mutualisés de partager un même répertoire pour leur ''permanents inaccessibles''. C'est chose faite à présent, ce qui permet à chaque site mutualisé de visualiser les bases des autres en utilisant le paramètre d'URL {{{connect}}} (cf. [10183]) sans avoir à recopier leur fichier {{{connect.php}}}.
      
      Par exemple, la mutualisation suivante dans mes_options.php:
      
      {{{
      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  . '/dist/:' .
      			_DIR_RACINE .'Ajouts/' . $table_prefix  . '/:' .
      			_DIR_RACINE .'dist/:' .
      			_DIR_RACINE .'dist/javascript/:' .
      			_DIR_RESTREINT);
      
      		define('_FILE_CONNECT_INS', 'connect' . $table_prefix);
      		define('_FILE_CHMOD_INS', 'chmod' . $table_prefix);
      		spip_initialisation(
      			(_DIR_RACINE /* $e */ . _NOM_PERMANENTS_INACCESSIBLES),
      			($e . _NOM_PERMANENTS_ACCESSIBLES),
      			($e . _NOM_TEMPORAIRES_INACCESSIBLES),
      			($e . _NOM_TEMPORAIRES_ACCESSIBLES)
      		       );
      }}}
      
      mettra dans le répertoire {{{config///}} de la racine les fichiers {{{connectA.php}}}, {{{connectB.php}}}, ... des différents sous-répertoires du répertoire {{{Ajout}}}, une URL de A pouvant ainsi contenir {{{connect=B}}} et inversement dès que les deux sites sont installés.
      0c2d20db
    • esj's avatar
      Intégrer le renouvellement de l'alea à l'initialisation des meta pour éviter... · 12ef44ca
      esj a rédigé
      Intégrer le renouvellement de l'alea à l'initialisation des meta pour éviter de refaire deux fois suite le cache dans ce cas là.
      
      Se servir de la différence entre sql_serveur et spip_query (si serveur non configuré, pas d'erreur fatale avec la 2e) pour éviter des redondances de tests, surtout impliquant les lourdeurs autour de FILE_CONNECT et FILE_CONNECT_INS.
      12ef44ca
    • esj's avatar
      Suite de [10440]: en simulant un verrou dans ecrire_meta et effacer_meta on... · 62c0d13a
      esj a rédigé
      Suite de [10440]: en simulant un verrou dans ecrire_meta et effacer_meta on est à présent certain que l'appel de init_metas est synchrone avec la base au démarrage du script. L'hypothèse d'un commutation de processus provoquant ultérieurement un changement de la table des meta n'a pas à être prise en compte car le script a commencé son action sur un état de cette table  qu'il doit respecter jusqu'au bout. En conséquence il n'y a aucune raison de faire plusieurs appels à lire_meta() pendant une exécution, ses appels hors initialisation disparaissent.
      62c0d13a
  6. sept. 28, 2007
Chargement en cours