diff --git a/e107_handlers/e107_class.php b/e107_handlers/e107_class.php
index ed2630881..45676e2dc 100644
--- a/e107_handlers/e107_class.php
+++ b/e107_handlers/e107_class.php
@@ -163,6 +163,7 @@ class e107
'e_model' => '{e_HANDLER}model_class.php',
'e_news_item' => '{e_HANDLER}news_class.php',
'e_news_tree' => '{e_HANDLER}news_class.php',
+ 'e_object' => '{e_HANDLER}model_class.php',
'e_online' => '{e_HANDLER}online_class.php',
'e_parse' => '{e_HANDLER}e_parse_class.php',
'e_parse_shortcode' => '{e_HANDLER}shortcode_handler.php',
diff --git a/e107_handlers/e_parse_class.php b/e107_handlers/e_parse_class.php
index 956839e9d..48e82470b 100644
--- a/e107_handlers/e_parse_class.php
+++ b/e107_handlers/e_parse_class.php
@@ -2162,25 +2162,10 @@ class e_parse
/**
* Data model for e_parse::simpleParse()
- *
+ * NEW - not inherits core e_object
*/
-class e_vars
+class e_vars extends e_object
{
- /**
- * @var array
- */
- private $vars;
-
- /**
- * Constructor
- *
- * @param array $array [optional] initial data
- */
- public function __construct($array = array())
- {
- $this->setVars($array);
- }
-
/**
* Get data array
*
@@ -2188,38 +2173,30 @@ class e_vars
*/
public function getVars()
{
- return $this->vars;
+ return $this->getData();
}
/**
* Set array data
*
* @param array $array
- * @param boolean $empty true (default) override old data, false - merge with existing data
* @return e_vars
*/
- public function setVars(array $array, $empty = true)
+ public function setVars(array $array)
{
- if($empty) { $this->emptyVars(); }
-
- foreach($array as $key => $val)
- {
- $this->vars[$key] = $val;
- }
-
+ $this->setData($array);
return $this;
}
/**
* Add array data to the object (merge with existing)
- * Convenient proxy to setVars methods
*
* @param array $array
- * @return
+ * @return e_vars
*/
public function addVars(array $array)
{
- $this->setVars($array, false);
+ $this->addData($array);
}
/**
@@ -2229,7 +2206,7 @@ class e_vars
*/
public function emptyVars()
{
- $this->vars = array();
+ $this->removeData();
return $this;
}
@@ -2240,7 +2217,7 @@ class e_vars
*/
public function isEmpty()
{
- return empty($this->vars);
+ return $this->hasData();
}
/**
@@ -2250,60 +2227,17 @@ class e_vars
*/
public function isVar($key)
{
- return isset($this->vars[$key]);
+ return $this->is($key);
}
-
+
/**
- * Magic setter
- *
- * @param string $key
- * @param mixed $value
+ * No need of object conversion, optional cloning
+ * @param boolean $clone return current object clone
+ * @return e_vars
*/
- public function __set($key, $value)
+ public function toSc($clone = false)
{
- // Unset workaround - PHP < 5.1.0
- if(null === $value) unset($this->vars[$key]);
- else $this->vars[$key] = $value;
- }
-
- /**
- * Magic getter
- *
- * @param string $key
- * @return mixed value or null if key not found
- */
- public function __get($key)
- {
- if(isset($this->vars[$key]))
- {
- return $this->vars[$key];
- }
-
- return null;
- }
-
- /**
- * Magic method to check if given data key is set.
- * Triggered on myKey);
- * NOTE: works on PHP 5.1.0+
- *
- * @param string $key
- * @return boolean
- */
- public function __isset($key)
- {
- return $this->isVar($key);
- }
-
- /**
- * Magic method to unset given data key.
- * Triggered on myKey);
- * NOTE: works on PHP 5.1.0+
- *
- * @param string $key
- */
- public function __unset($key)
- {
- unset($this->vars[$key]);
+ if($clone) return clone $this;
+ return $this;
}
}
diff --git a/e107_handlers/model_class.php b/e107_handlers/model_class.php
index 46c32116c..c8fdffc16 100644
--- a/e107_handlers/model_class.php
+++ b/e107_handlers/model_class.php
@@ -128,6 +128,15 @@ class e_object
return (isset($this->_data[$key]) ? $this->_data[$key] : $default);
}
+ /**
+ * Get object data
+ * @return array
+ */
+ public function getData()
+ {
+ return $this->_data;
+ }
+
/**
* Overwrite data in the object for a single field.
*
@@ -140,6 +149,53 @@ class e_object
$this->_data[$key] = $value;
return $this;
}
+
+ /**
+ * Set object data
+ * @return e_object
+ */
+ public function setData($data)
+ {
+ $this->_data = $data;
+ return $this;
+ }
+
+ /**
+ * Update object data
+ * @return e_object
+ */
+ public function addData($data)
+ {
+ foreach($data as $key => $val)
+ {
+ $this->set($key, $val);
+ }
+ return $this;
+ }
+
+ /**
+ * Remove object data key
+ *
+ * @param string $key
+ * @param mixed $value
+ * @return e_object
+ */
+ public function remove($key, $value)
+ {
+ unset($this->_data[$key]);
+ return $this;
+ }
+
+ /**
+ * Reset object data key
+ *
+ * @return e_object
+ */
+ public function removeData()
+ {
+ $this->_data = array();
+ return $this;
+ }
/**
* Check if key is set
@@ -161,6 +217,15 @@ class e_object
return (isset($this->_data[$key]) && !empty($this->_data[$key]));
}
+ /**
+ * Check if object has data
+ * @return boolean
+ */
+ public function hasData()
+ {
+ return !empty($this->_data);
+ }
+
/**
* Set parameter array
* @param array $params
@@ -226,6 +291,15 @@ class e_object
return (isset($this->_params[$key]) ? $this->_params[$key] : $default);
}
+ /**
+ * Convert object data to simple shortcodes (e_vars object)
+ * @return string
+ */
+ public function toSc()
+ {
+ return new e_vars($this->_data);
+ }
+
/**
* Convert object data to array
* @return string
@@ -278,6 +352,61 @@ class e_object
{
return $this->toString(false);
}
+
+ /**
+ * Magic setter
+ * Triggered on e.g. myKey = 'someValue';
+ *
+ * @param string $key
+ * @param mixed $value
+ */
+ public function __set($key, $value)
+ {
+ // Unset workaround - PHP < 5.1.0
+ if(null === $value) $this->remove($key);
+ else $this->set($key, $value);
+ }
+
+ /**
+ * Magic getter
+ * Triggered on e.g. myKey);
+ * @param string $key
+ * @return mixed value or null if key not found
+ */
+ public function __get($key)
+ {
+ if($this->is($key))
+ {
+ return $this->get($key);
+ }
+
+ return null;
+ }
+
+ /**
+ * Magic method to check if given data key is set.
+ * Triggered on myKey);
+ * NOTE: works on PHP 5.1.0+
+ *
+ * @param string $key
+ * @return boolean
+ */
+ public function __isset($key)
+ {
+ return $this->is($key);
+ }
+
+ /**
+ * Magic method to unset given data key.
+ * Triggered on myKey);
+ * NOTE: works on PHP 5.1.0+
+ *
+ * @param string $key
+ */
+ public function __unset($key)
+ {
+ $this->remove($key);
+ }
}
/**