getLogger(); $siteId_parameter_name = sfConfig::get( 'app_multisites_siteid_parameter', 'siteId'); $siteId = $context->getRequest()->getParameter($siteId_parameter_name); //$siteId = $request->getParameter($siteId_parameter_name); $log->debug( 'multiSitesController->dispatch() found siteId: '.$siteId ); if( isset($siteId) && $siteId!='' ) { $this->hackTemplateDirs( $siteId ); } parent::dispatch(); } protected function debug($msg) { if( sfConfig::get('sf_logging_enabled') ) { //$this->getContext()->getLogger()->debug($msg); $this->context->getLogger()->debug($msg); } } /** * Modification de la config pour ajouter des chemins pour trouver les templates/decorators pour le siteId. * * Permet d'ajouter un chemin pour les templates des modules en fonction du siteId * @param $siteId */ protected function hackTemplateDirs( $siteId ) { $multisites_private_folder = sfConfig::get('app_multisites_private_folder'); $this->debug( 'multisites_private_folder: '.$multisites_private_folder ); // // Calcul le chemin des templates du module pour le siteId // $siteModuleTemplatesDir = $multisites_private_folder.'/s'.$siteId.'/'.sfConfig::get('sf_app').'/modules'; // // Hack la config pour ajouter le chemin des templates du module pour le siteId // ajout le path à la config 'sf_module_dirs' $this->debug( 'add '.$siteModuleTemplatesDir.' to config sf_module_dirs' ); $dirs = sfConfig::get('sf_module_dirs', array() ); $dirs[$siteModuleTemplatesDir] = true; sfConfig::set('sf_module_dirs', $dirs ); // // Hack la config pour le template (decorator) de l'application // Pour ce template, Symfony n'offre pas de tableaux, c'est une simple chaîne // Du coup, on doit vérifier s'il y a surcharge mais nous n'avons pas toute les données, il manque le nom et l'extension du template. // Alors pour cette surcharge, si le folder existe alors il y a surcharge !! // C'est pas très souple, mais bon, c'est toujours ça en attendant mieux... // sf_app_template_dir //$this->debug( 'sf_app_template_dir : '.svar_dump(sfConfig::get('sf_app_template_dir')) ); //$this->debug( 'replace '.$siteModuleTemplatesDir.' to config sf_module_dirs' ); $siteDecoratorsDir = $multisites_private_folder.'/s'.$siteId.'/'.sfConfig::get('sf_app').'/templates'; if( is_readable($siteDecoratorsDir) ) { $this->debug( 'set config sf_app_template_dir with : '.$siteDecoratorsDir ); sfConfig::set('sf_app_template_dir', $siteDecoratorsDir ); } } }