1
0
mirror of synced 2024-12-14 07:06:04 +03:00

nested plugin functionality added

This commit is contained in:
zYne 2007-11-13 22:28:37 +00:00
parent edfd9f6506
commit 8e1f157882
7 changed files with 38 additions and 25 deletions

View File

@ -1183,7 +1183,11 @@ class Doctrine_Export extends Doctrine_Connection_Module
$plugins[] = $plugin; $plugins[] = $plugin;
$plugins = array_merge($plugins, $this->getAllPlugins($plugin->getOption('pluginTable'))); $pluginTable = $plugin->getOption('pluginTable');
if ($pluginTable instanceof Doctrine_Table) {
$plugins = array_merge($plugins, $this->getAllPlugins($pluginTable));
}
} }
return $plugins; return $plugins;

View File

@ -38,6 +38,7 @@ class Doctrine_I18n extends Doctrine_Plugin
'generateFiles' => false, 'generateFiles' => false,
'table' => false, 'table' => false,
'pluginTable' => false, 'pluginTable' => false,
'children' => array(),
); );
/** /**
@ -123,6 +124,8 @@ class Doctrine_I18n extends Doctrine_Plugin
$this->_options['pluginTable']->bindQueryPart('indexBy', 'lang'); $this->_options['pluginTable']->bindQueryPart('indexBy', 'lang');
$this->generateChildDefinitions();
return true; return true;
} }
} }

View File

@ -91,6 +91,11 @@ class Doctrine_Plugin
return $this; return $this;
} }
public function addChild(Doctrine_Template $template)
{
$this->_options['children'][] = $template;
}
/** /**
* returns all options and their associated values * returns all options and their associated values
* *
@ -101,6 +106,17 @@ class Doctrine_Plugin
return $this->_options; return $this->_options;
} }
public function generateChildDefinitions()
{
foreach ($this->_options['children'] as $child) {
$this->_options['pluginTable']->addTemplate(get_class($child), $child);
$child->setTable($this->_options['pluginTable']);
$child->setUp();
}
}
/** /**
* generates foreign keys for the plugin table based on the owner table * generates foreign keys for the plugin table based on the owner table
* *

View File

@ -85,6 +85,14 @@ class Doctrine_Template extends Doctrine_Record_Abstract
return $this->_invoker; return $this->_invoker;
} }
public function addChild(Doctrine_Template $template)
{
$this->_plugin->addChild($template);
return $this;
}
public function getPlugin() public function getPlugin()
{ {
return $this->_plugin; return $this->_plugin;

View File

@ -32,8 +32,6 @@
*/ */
class Doctrine_Template_I18n extends Doctrine_Template class Doctrine_Template_I18n extends Doctrine_Template
{ {
protected $_translation;
/** /**
* __construct * __construct
* *
@ -44,21 +42,6 @@ class Doctrine_Template_I18n extends Doctrine_Template
{ {
$this->_plugin = new Doctrine_I18n($options); $this->_plugin = new Doctrine_I18n($options);
} }
/**
* translation
*
* sets or retrieves the current translation language
*
* @return Doctrine_Record this object
*/
public function translation($language = null)
{
$this->_translation = $language;
return $this->_translation;
}
/** /**
* setUp * setUp
* *

View File

@ -35,8 +35,6 @@ class Doctrine_Template_Searchable extends Doctrine_Template
public function __construct(array $options) public function __construct(array $options)
{ {
$this->_plugin = new Doctrine_Search($options); $this->_plugin = new Doctrine_Search($options);
} }
public function getPlugin() public function getPlugin()

View File

@ -47,4 +47,5 @@ class Doctrine_Template_Versionable extends Doctrine_Template
{ {
return $this->_plugin; return $this->_plugin;
} }
} }