* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * sfDoctrinePluginConfiguration Class * * @package symfony * @subpackage doctrine * @author Jonathan H. Wage * @version SVN: $Id: sfDoctrinePluginConfiguration.class.php 30445 2010-07-28 04:37:32Z Kris.Wallsmith $ */ class sfDoctrinePluginConfiguration extends sfPluginConfiguration { /** * @see sfPluginConfiguration */ public function initialize() { sfConfig::set('sf_orm', 'doctrine'); if (!sfConfig::get('sf_admin_module_web_dir')) { sfConfig::set('sf_admin_module_web_dir', '/sfDoctrinePlugin'); } if (sfConfig::get('sf_web_debug')) { require_once dirname(__FILE__).'/../lib/debug/sfWebDebugPanelDoctrine.class.php'; $this->dispatcher->connect('debug.web.load_panels', array('sfWebDebugPanelDoctrine', 'listenToAddPanelEvent')); } if (!class_exists('Doctrine_Core', false)) { require_once sfConfig::get('sf_doctrine_dir', realpath(dirname(__FILE__).'/../lib/vendor/doctrine')).'/Doctrine/Core.php'; } spl_autoload_register(array('Doctrine_Core', 'autoload')); $manager = Doctrine_Manager::getInstance(); $manager->setAttribute(Doctrine_Core::ATTR_EXPORT, Doctrine_Core::EXPORT_ALL); $manager->setAttribute(Doctrine_Core::ATTR_VALIDATE, Doctrine_Core::VALIDATE_NONE); $manager->setAttribute(Doctrine_Core::ATTR_RECURSIVE_MERGE_FIXTURES, true); $manager->setAttribute(Doctrine_Core::ATTR_AUTO_ACCESSOR_OVERRIDE, true); $manager->setAttribute(Doctrine_Core::ATTR_AUTOLOAD_TABLE_CLASSES, true); // apply default attributes $manager->setDefaultAttributes(); if (method_exists($this->configuration, 'configureDoctrine')) { $this->configuration->configureDoctrine($manager); } $this->dispatcher->notify(new sfEvent($manager, 'doctrine.configure')); // make sure the culture is intercepted $this->dispatcher->connect('user.change_culture', array('sfDoctrineRecord', 'listenToChangeCultureEvent')); } /** * Returns options for the Doctrine schema builder. * * @return array */ public function getModelBuilderOptions() { $options = array( 'generateBaseClasses' => true, 'generateTableClasses' => true, 'packagesPrefix' => 'Plugin', 'suffix' => '.class.php', 'baseClassesDirectory' => 'base', 'baseClassName' => 'sfDoctrineRecord', ); // for BC $options = array_merge($options, sfConfig::get('doctrine_model_builder_options', array())); // filter options through the dispatcher $options = $this->dispatcher->filter(new sfEvent($this, 'doctrine.filter_model_builder_options'), $options)->getReturnValue(); return $options; } /** * Returns a configuration array for the Doctrine CLI. * * @return array */ public function getCliConfig() { $config = array( 'data_fixtures_path' => array_merge(array(sfConfig::get('sf_data_dir').'/fixtures'), $this->configuration->getPluginSubPaths('/data/fixtures')), 'models_path' => sfConfig::get('sf_lib_dir').'/model/doctrine', 'migrations_path' => sfConfig::get('sf_lib_dir').'/migration/doctrine', 'sql_path' => sfConfig::get('sf_data_dir').'/sql', 'yaml_schema_path' => sfConfig::get('sf_config_dir').'/doctrine', ); // filter config through the dispatcher $config = $this->dispatcher->filter(new sfEvent($this, 'doctrine.filter_cli_config'), $config)->getReturnValue(); return $config; } }