getContext()->getLogger()->debug($msg); } } public function execute($filterChain) { if( $this->isFirstCall() ) { } // // Retrouve le siteId // $siteId_parameter_name = $this->getParameter('site_id_parameter_name', 'siteId'); $siteId = $this->getContext()->getRequest()->getParameter($siteId_parameter_name); //$siteId = $request->getParameter($siteId_parameter_name); $this->debug( 'multiSitesFilter found siteId: '.$siteId ); if( isset($siteId) && $siteId!='' ) { $this->hackTemplateDirectories( $siteId ); } // Execute next filter $filterChain->execute(); } /** * Modification de la config pour ajouter des chemins pour trouver les templates/decorators. * * Permet d'ajouter un chemin pour les templates des modules en fonction du siteId * @param $siteId */ protected function hackTemplateDirectories( $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 ); } } }