/** * converts raw data to config values of defined type * * @TODO support array contents conversion * @TODO support interceptors * * @param mixed $_rawData * @param string $_name * @return mixed */ protected function _rawToConfig($_rawData, $_name) { if ($_rawData === null) { return $_rawData; } $definition = self::getDefinition($_name); if (!$definition) { return is_array($_rawData) ? new Tinebase_Config_Struct($_rawData) : $_rawData; } if ($definition['type'] === self::TYPE_OBJECT && isset($definition['class']) && @class_exists($definition['class'])) { return new $definition['class'](is_array($_rawData) ? $_rawData : array()); } switch ($definition['type']) { case self::TYPE_INT: return (int) $_rawData; case self::TYPE_BOOL: return $_rawData === "true" || (bool) (int) $_rawData; case self::TYPE_STRING: return (string) $_rawData; case self::TYPE_FLOAT: return (double) $_rawData; case self::TYPE_ARRAY: return (array) $_rawData; case self::TYPE_DATETIME: return new DateTime($_rawData); case self::TYPE_KEYFIELD_CONFIG: $options = isset($definition['options']) || array_key_exists('options', $definition) ? (array) $definition['options'] : array(); $options['appName'] = $this->_appName; return Tinebase_Config_KeyField::create($_rawData, $options); default: return is_array($_rawData) ? new Tinebase_Config_Struct($_rawData) : $_rawData; } }
/** * converts raw data to config values of defined type * * @TODO support array contents conversion * @TODO support interceptors * @TODO find a place for defaults of definition * * @param mixed $_rawData * @param string $_name * @return mixed */ protected function _rawToConfig($_rawData, $_name) { $definition = self::getDefinition($_name); // // config.inc.php overwrites all other rawData // $configFileSection = $this->_getConfigFileSection($_name); // if ($configFileSection) { // $_rawData = $configFileSection[$_name]; // } if (!$definition) { return is_array($_rawData) ? new Tinebase_Config_Struct($_rawData) : $_rawData; } // // get default from definition if needed // if (is_string($_rawData) && $_rawData == Tinebase_Model_Config::NOTSET) { // if (array_key_exists('default', $definition)) { // $_rawData = $definition['default']; // } // } if ($definition['type'] === self::TYPE_OBJECT && isset($definition['class']) && @class_exists($definition['class'])) { return new $definition['class']($_rawData); } switch ($definition['type']) { case self::TYPE_INT: return (int) $_rawData; case self::TYPE_STRING: return (string) $_rawData; case self::TYPE_FLOAT: return (double) $_rawData; case self::TYPE_DATETIME: return new DateTime($_rawData); case self::TYPE_KEYFIELD: return Tinebase_Config_KeyField::create($_rawData, array_key_exists('options', $definition) ? (array) $definition['options'] : array()); default: return is_array($_rawData) ? new Tinebase_Config_Struct($_rawData) : $_rawData; } }
/** * converts raw data to config values of defined type * * @TODO support array contents conversion * @TODO support interceptors * * @param mixed $_rawData * @param string $_name * @return mixed */ protected function _rawToConfig($_rawData, $_name) { $definition = self::getDefinition($_name); if (!$definition) { return is_array($_rawData) ? new Tinebase_Config_Struct($_rawData) : $_rawData; } if ($definition['type'] === self::TYPE_OBJECT && isset($definition['class']) && @class_exists($definition['class'])) { return new $definition['class']($_rawData != "null" ? $_rawData : array()); } switch ($definition['type']) { case self::TYPE_INT: return (int) $_rawData; case self::TYPE_BOOL: return (bool) (int) $_rawData; case self::TYPE_STRING: return (string) $_rawData; case self::TYPE_FLOAT: return (double) $_rawData; case self::TYPE_DATETIME: return new DateTime($_rawData); case self::TYPE_KEYFIELD: return Tinebase_Config_KeyField::create($_rawData, isset($definition['options']) || array_key_exists('options', $definition) ? (array) $definition['options'] : array()); default: return is_array($_rawData) ? new Tinebase_Config_Struct($_rawData) : $_rawData; } }