Version 2 — Octobre 2009 — 41.207.xx.xx
Si vous gérez une mutualisation de SPIP et que vous souhaitez proposer en plus à vos utilisateurs l’application Gallery2 pour leurs photos (via le plugin Gallery2 pour SPIP), il est possible de mutualiser le noyau de Gallery afin de pouvoir proposer une instance de Gallery par site SPIP.
On suppose la situation suivante sur un serveur ayant une mutualisation de SPIP en mode « domaines différents » ou « sous-domaines » :
Il est donc nécessaire de gérer la connexion à la base de données et au répertoire des photos utilisé par l’application Gallery en fonction du domaine/sous-domaine via lequel on s’y connecte : http://mon-instance-spip.tld/gallery doit renvoyer les données de la base gallery_nom_instance et les photos stockées dans /var/www/mutu/site/mon-instance-spip.tld/g2_photos alors que http://l-autre-spip.tld/gallery doit renvoyer les données de la base gallery_l_autre et les photos stockées dans /var/www/mutu/site/l-autre-spip.tld/g2_photos.
Pour cela on peut procéder de la manière suivante :
if (!isset($gallery) || !method_exists($gallery, 'setConfig')) { ...
) ajouter :
// choper le nom de domaine sans l'éventuel www. initial
$ndd = (strpos($_SERVER['SERVER_NAME'],'www.') === ? substr(4, $_SERVER['SERVER_NAME']) : $_SERVER['SERVER_NAME']);
// inclure le fichier de connection spécifique de l'instance mutu ...si il existe!
if (@file_exists('/var/www/mutu/sites/'.$ndd.'/g2_photos/g2_connect.php'))
include_once('/var/www/mutu/sites/'.$ndd.'/g2_photos/g2_connect.php');
else {
header("HTTP/1.0 404 Not Found");
die();
}
$storeConfig['type'] = 'mysqli';
$storeConfig['hostname'] = 'localhost';
$storeConfig['schema'] = '';
$storeConfig['tablePrefix'] = 'g2_';
$storeConfig['columnPrefix'] = 'g_';
$storeConfig['usePersistentConnections'] = false;
//$storeConfig['database'] = 'gallery_mon_instance';
//$storeConfig['username'] = 'utilisateur_MySQL';
//$storeConfig['password'] = 'pass_MySQL';
$storeConfig['database'] = $Tmutus_infos['db'];
$storeConfig['username'] = $Tmutus_infos['db_user'];
$storeConfig['password'] = $Tmutus_infos['db_pass'];
$gallery->setConfig('storage.config', $storeConfig);
//$gallery->setConfig('baseUri', 'http://frank.spip/gallery/main.php');
$gallery->setConfig('baseUri', $Tmutus_infos['baseUri']);
<?php
// fichier de connexion de Gallery pour mon-instance-spip.tld
// Prevent direct access to g2_connect.php.
if (!isset($gallery) || !method_exists($gallery, 'setConfig')) exit;
// générer l'array des données de connexion spécifiques de l'instance de mutu
$Tmutus_infos = array(
'data.gallery.base' => '/var/www/mutu/sites/mon-instance-spip.tld/g2_photos',
'db' => 'gallery_mon_instance',
'db_user' => 'utilisateur_MySQL',
'db_pass' => 'pass_MySQL',
'baseUri' => 'http://mon-instance-spip.tld/gallery/main.php'
);
?>
Pour bien faire les choses, on ajoutera un modèle de ce fichier dans la copie du dossier g2_photos fait à l’étape 3...
Pour créer une instance de Gallery pour un SPIP il faudra donc :