diff -r bd595ad770fc -r 1c2f13fd785c web/enmi/Zend/Application/Resource/ResourceAbstract.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/enmi/Zend/Application/Resource/ResourceAbstract.php Thu Jan 20 19:30:54 2011 +0100 @@ -0,0 +1,161 @@ +setOptions($options); + } else if ($options instanceof Zend_Config) { + $this->setOptions($options->toArray()); + } + } + + /** + * Set options from array + * + * @param array $options Configuration for resource + * @return Zend_Application_Resource_ResourceAbstract + */ + public function setOptions(array $options) + { + if (array_key_exists('bootstrap', $options)) { + $this->setBootstrap($options['bootstrap']); + unset($options['bootstrap']); + } + + foreach ($options as $key => $value) { + if (in_array(strtolower($key), $this->_skipOptions)) { + continue; + } + + $method = 'set' . strtolower($key); + if (method_exists($this, $method)) { + $this->$method($value); + } + } + + $this->_options = $this->mergeOptions($this->_options, $options); + + return $this; + } + + /** + * Retrieve resource options + * + * @return array + */ + public function getOptions() + { + return $this->_options; + } + + /** + * Merge options recursively + * + * @param array $array1 + * @param mixed $array2 + * @return array + */ + public function mergeOptions(array $array1, $array2 = null) + { + if (is_array($array2)) { + foreach ($array2 as $key => $val) { + if (is_array($array2[$key])) { + $array1[$key] = (array_key_exists($key, $array1) && is_array($array1[$key])) + ? $this->mergeOptions($array1[$key], $array2[$key]) + : $array2[$key]; + } else { + $array1[$key] = $val; + } + } + } + return $array1; + } + + /** + * Set the bootstrap to which the resource is attached + * + * @param Zend_Application_Bootstrap_Bootstrapper $bootstrap + * @return Zend_Application_Resource_Resource + */ + public function setBootstrap(Zend_Application_Bootstrap_Bootstrapper $bootstrap) + { + $this->_bootstrap = $bootstrap; + return $this; + } + + /** + * Retrieve the bootstrap to which the resource is attached + * + * @return null|Zend_Application_Bootstrap_Bootstrapper + */ + public function getBootstrap() + { + return $this->_bootstrap; + } +}