From bc6ff6903d0af06e0702848d97210c3cb317b4d9 Mon Sep 17 00:00:00 2001 From: zYne Date: Tue, 31 Jul 2007 21:59:45 +0000 Subject: [PATCH] added base plugin class --- lib/Doctrine/Plugin.php | 79 ++++++++++++++++++++++++++++ lib/Doctrine/Template/Searchable.php | 13 +++-- 2 files changed, 87 insertions(+), 5 deletions(-) create mode 100644 lib/Doctrine/Plugin.php diff --git a/lib/Doctrine/Plugin.php b/lib/Doctrine/Plugin.php new file mode 100644 index 000000000..03c71e862 --- /dev/null +++ b/lib/Doctrine/Plugin.php @@ -0,0 +1,79 @@ +. + */ + +/** + * Doctrine_Plugin + * + * @author Konsta Vesterinen + * @package Doctrine + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @version $Revision$ + * @category Object Relational Mapping + * @link www.phpdoctrine.com + * @since 1.0 + */ +class Doctrine_Plugin +{ + /** + * @var array $_options an array of plugin specific options + */ + protected $_options = array(); + /** + * returns the value of an option + * + * @param $option the name of the option to retrieve + * @return mixed the value of the option + */ + public function getOption($name) + { + if ( ! isset($this->_options[$name])) { + throw new Doctrine_Plugin_Exception('Unknown option ' . $name); + } + + return $this->_options[$name]; + } + /** + * sets given value to an option + * + * @param $option the name of the option to be changed + * @param $value the value of the option + * @return Doctrine_Plugin this object + */ + public function setOption($name, $value) + { + if ( ! isset($this->_options[$name])) { + throw new Doctrine_Plugin_Exception('Unknown option ' . $name); + } + + $this->_options[$name] = $value; + + return $this; + } + /** + * returns all options and their associated values + * + * @return array all options as an associative array + */ + public function getOptions() + { + return $this->_options; + } +} diff --git a/lib/Doctrine/Template/Searchable.php b/lib/Doctrine/Template/Searchable.php index 26d1f8e52..25c289953 100644 --- a/lib/Doctrine/Template/Searchable.php +++ b/lib/Doctrine/Template/Searchable.php @@ -40,12 +40,15 @@ class Doctrine_Template_Searchable extends Doctrine_Template } public function setUp() { - $this->_search->buildDefinition($this->_table); - $id = $this->_table->getIdentifier(); - $name = $this->_table->getComponentName() . 'Index'; + $name = $this->_table->getComponentName(); + $className = $this->_search->getOption('className'); - $this->_search->setOption('className', $name); + if (strpos($className, '%CLASS%') !== false) { + $this->_search->setOption('className', str_replace('%CLASS%', $name, $className)); + $className = $this->_search->getOption('className'); + } + $this->_search->buildDefinition($this->_table); foreach ((array) $id as $column) { $foreign[] = strtolower($this->_table->getComponentName() . '_' . $column); @@ -53,7 +56,7 @@ class Doctrine_Template_Searchable extends Doctrine_Template $foreign = (count($foreign) > 1) ? $foreign : current($foreign); - $this->hasMany($name, array('local' => $id, 'foreign' => $foreign)); + $this->hasMany($className, array('local' => $id, 'foreign' => $foreign)); $this->addListener(new Doctrine_Search_Listener($this->_search)); }