/ */ class P4Cms_Record_Config extends P4Cms_Record { protected static $_fileContentField = 'config'; protected static $_fields = array( 'config' => array( 'accessor' => 'getConfig', 'mutator' => 'setConfig' ) ); /** * Get the configuration object for this record. * * This returns a Zend_Config object which can contain any * configuration information the user of the record chooses * to store. * * @param string $key Optional key to retrieve from the config * @param string $default Optional default value if the $key value is null. * @return Zend_Config the configuration object. */ public function getConfig($key = null, $default = null) { $config = $this->_getValue('config'); // convert config to zend_config if necessary. if (!$config instanceof Zend_Config) { $config = is_array($config) ? $config : array(); $config = new Zend_Config($config, true); $this->_setValue('config', $config); } // if user requests a specific config option, return it. if (isset($key)) { return $config->get($key) ? $config->get($key) : $default; } return $config; } /** * Get the configuration object as an array. * * @return array the configuration in array form. */ public function getConfigAsArray() { return $this->getConfig()->toArray(); } /** * Set the configuration object for this record. * This does not save the configuration. You must * call save() to store the configuration persistently. * * @param Zend_Config|array|null $config the config object or null to clear. * @return P4Cms_Record_Config provides fluent interface. * @throws InvalidArgumentException if the config object is invalid. */ public function setConfig($config) { if (is_array($config)) { $config = new Zend_Config($config); } if (!$config instanceof Zend_Config && $config !== null) { throw new InvalidArgumentException( "Cannot set configuration. Configuration is not a valid Zend_Config object." ); } $this->_setValue('config', $config); return $this; } /** * Set the configuration from an array. * * @param array $config the configuration to set in array form. * @return P4Cms_Record_Config provides fluent interface. * @throws InvalidArgumentException if the config argument is not an array. */ public function setConfigFromArray($config) { if (!is_array($config)) { throw new InvalidArgumentException( "Cannot set configuration. Configuration is not an array." ); } return $this->setConfig(new Zend_Config($config)); } /** * Save this record. * Extends parent to convert Zend_Config to an array. * * @param string $description optional - a description of the change. * @return P4Cms_Record provides a fluent interface */ public function save($description = null) { // ensure config is in array form. $config = $this->_getValue('config'); if ($config instanceof Zend_Config) { $this->_setValue('config', $config->toArray()); } // let parent do the rest. parent::save($description); return $this; } }