diff --git a/e107_handlers/model_class.php b/e107_handlers/model_class.php index 409123119..3fab5d071 100644 --- a/e107_handlers/model_class.php +++ b/e107_handlers/model_class.php @@ -9,8 +9,8 @@ * e107 Base Model * * $Source: /cvs_backup/e107_0.8/e107_handlers/model_class.php,v $ - * $Revision: 1.6 $ - * $Date: 2009-09-04 15:27:28 $ + * $Revision: 1.7 $ + * $Date: 2009-09-04 17:04:14 $ * $Author: secretr $ */ @@ -661,7 +661,7 @@ class e_model { if(is_array($key)) { - if($strict && '_data_structure' !== $data_src) + if($strict) { foreach(array_keys($key) as $k) { diff --git a/e107_handlers/pref_class.php b/e107_handlers/pref_class.php index 8e096a380..733b51016 100644 --- a/e107_handlers/pref_class.php +++ b/e107_handlers/pref_class.php @@ -9,8 +9,8 @@ * e107 Preference Handler * * $Source: /cvs_backup/e107_0.8/e107_handlers/pref_class.php,v $ - * $Revision: 1.18 $ - * $Date: 2009-09-04 15:27:28 $ + * $Revision: 1.19 $ + * $Date: 2009-09-04 17:04:15 $ * $Author: secretr $ */ @@ -90,7 +90,8 @@ class e_pref extends e_model } /** - * Advanced getter - $pref_name is parsed (multidimensional arrays support), alias of {@link e_model::getData()} + * Advanced getter - $pref_name could be path in format 'pref1/pref2/pref3' (multidimensional arrays support), + * alias of {@link e_model::getData()} * If $pref_name is empty, all data array will be returned * * @param string $pref_name @@ -105,7 +106,8 @@ class e_pref extends e_model /** * Simple getter - $pref_name is not parsed (no multidimensional arrays support), alias of {@link e_model::get()} - * + * This is the prefered (performance wise) method when simple preference is retrieved + * * @param string $pref_name * @param mixed $default * @return mixed @@ -116,8 +118,9 @@ class e_pref extends e_model } /** - * Advanced setter - $pref_name is parsed (multidimensional arrays support) - * Object data reseting is not allowed, adding new pref is allowed + * Advanced setter - $pref_name could be path in format 'pref1/pref2/pref3' (multidimensional arrays support) + * If $pref_name is array, it'll be merged with existing preference data, non existing preferences will be added as well + * * @param string|array $pref_name * @param mixed $value * @return e_pref @@ -149,8 +152,9 @@ class e_pref extends e_model } /** - * Advanced setter - $pref_name is parsed (multidimensional arrays support) - * Object data reseting is not allowed, adding new pref is controlled by $strict parameter + * Advanced setter - $pref_name could be path in format 'pref1/pref2/pref3' (multidimensional arrays support) + * Object data reseting is not allowed, adding new preferences is controlled by $strict parameter + * * @param string|array $pref_name * @param mixed $value * @param boolean $strict true - update only, false - same as setPref() @@ -183,7 +187,7 @@ class e_pref extends e_model } /** - * Simple setter - $pref_name is not parsed (no multidimensional arrays support) + * Simple setter - $pref_name is not parsed (no multidimensional arrays support) * Adding new pref is allowed * * @param string $pref_name @@ -234,6 +238,7 @@ class e_pref extends e_model /** * Add new (single) preference (ONLY if doesn't exist) + * No multidimensional arrays support * * @see addData() * @param string $pref_name @@ -242,16 +247,18 @@ class e_pref extends e_model */ public function add($pref_name, $value) { - if(empty($pref_name)) + if(empty($pref_name) || !is_string($pref_name)) { return $this; } - $this->addData((string) $pref_name, $value); + + $this->addData($pref_name, $value); return $this; } /** * Add new preference or preference array (ONLY if it/they doesn't exist) + * $pref_name could be path in format 'pref1/pref2/pref3' * * @see addData() * @param string|array $pref_name @@ -266,6 +273,7 @@ class e_pref extends e_model /** * Remove single preference + * $pref_name is not parsed as a path * * @see e_model::remove() * @param string $pref_name @@ -286,6 +294,7 @@ class e_pref extends e_model /** * Remove single preference (parse $pref_name) + * $pref_name could be path in format 'pref1/pref2/pref3' * * @see removeData() * @param string $pref_name @@ -318,8 +327,8 @@ class e_pref extends e_model } /** - * Disallow public use of setData() - * Update only possible + * Disallow public use of e_model::setData() + * Only data merge possible * * @param string|array $pref_name * @param mixed $value @@ -499,7 +508,7 @@ class e_pref extends e_model { $this->data_has_changed = false; //reset status - if($this->set_backup === true) + if($this->set_backup === true && !empty($this->pref_cache)) { if($this->serial_bc) { @@ -563,7 +572,7 @@ class e_pref extends e_model } /** - * Store data to a server cache file + * Convert data to a string and store it to a server cache file * If $cache_string is an array, it'll be converted to a string * If $save is string, it'll be used for building the cache filename * @@ -588,6 +597,20 @@ class e_pref extends e_model return $this; } + /** + * Clear preferences cache + * + * @param object $cache_name [optional] + * @return e_pref + */ + public function clearPrefCache($cache_name = '') + { + $this->pref_cache = ''; + ecache::clear_sys('Config_'.(!empty($cache_name) ? $cache_name : $this->alias)); + + return $this; + } + /** * Set $set_backup option *