search('ApplicationConfigFile'); if ($appConfigFileResource == false) { throw new Zend_Tool_Project_Exception('A project with an application config file is required to use this provider.'); } $appConfigFilePath = $appConfigFileResource->getPath(); $config = new Zend_Config_Ini($appConfigFilePath, null, array('skipExtends' => true, 'allowModifications' => true)); if (!isset($config->{$section})) { throw new Zend_Tool_Project_Exception('The config does not have a ' . $section . ' section.'); } $currentSection = $config->{$section}; if (!isset($currentSection->resources)) { $currentSection->resources = array(); } $configResources = $currentSection->resources; if (!isset($configResources->layout)) { $configResources->layout = array(); } $layout = $configResources->layout; $layout->layoutPath = 'APPLICATION_PATH "layouts/scripts"'; $writer = new Zend_Config_Writer_Ini(array( 'config' => $config, 'filename' => $appConfigFilePath )); $writer->write(); } public static function createResource(Zend_Tool_Project_Profile $profile, $layoutName = 'layout') { $applicationDirectory = $profile->search('applicationDirectory'); $layoutDirectory = $applicationDirectory->search('layoutsDirectory'); if ($layoutDirectory == false) { $layoutDirectory = $applicationDirectory->createResource('layoutsDirectory'); } $layoutScriptsDirectory = $layoutDirectory->search('layoutScriptsDirectory'); if ($layoutScriptsDirectory == false) { $layoutScriptsDirectory = $layoutDirectory->createResource('layoutScriptsDirectory'); } $layoutScriptFile = $layoutScriptsDirectory->search('layoutScriptFile', array('layoutName' => 'layout')); if ($layoutScriptFile == false) { $layoutScriptFile = $layoutScriptsDirectory->createResource('layoutScriptFile', array('layoutName' => 'layout')); } return $layoutScriptFile; } public function enable() { $profile = $this->_loadProfile(self::NO_PROFILE_THROW_EXCEPTION); self::prepareApplicationConfig($profile); $layoutScriptFile = self::createResource($profile); $layoutScriptFile->create(); $this->_registry->getResponse()->appendContent( 'Layouts have been enabled, and a default layout created at ' . $layoutScriptFile->getPath() ); $this->_registry->getResponse()->appendContent('A layout entry has been added to the application config file.'); } public function disable() { } }