1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-06 14:46:56 +02:00

e_tree_model: onLoad call inside loadFromArray method;

Tree total result value now cached as well
This commit is contained in:
secretr
2010-05-02 13:34:05 +00:00
parent dd2c62202d
commit e78f6578fe

View File

@@ -2221,14 +2221,36 @@ class e_tree_model extends e_model
return $this->_cache_string; return $this->_cache_string;
} }
protected function _setCacheData()
{
if(!$this->isCacheEnabled())
{
return $this;
}
e107::getCache()->set_sys(
$this->getCacheString(true),
$this->toString(false, null, $this->getParam('nocount') ? false : true),
$this->_cache_force,
false
);
return $this;
}
protected function _loadFromArray($array) protected function _loadFromArray($array)
{ {
if(isset($array['total']))
{
$this->setTotal((integer) $array['total']);
unset($array['total']);
}
$class_name = $this->getParam('model_class', 'e_model'); $class_name = $this->getParam('model_class', 'e_model');
$tree = array(); $tree = array();
foreach ($array as $id => $data) foreach ($array as $id => $data)
{ {
$tree[$id] = new $class_name($data); $tree[$id] = new $class_name($data);
$this->_onLoad($tree[$id]);
} }
$this->setTree($tree, true); $this->setTree($tree, true);
} }
@@ -2432,9 +2454,10 @@ class e_tree_model extends e_model
/** /**
* Convert model object to array * Convert model object to array
* @param boolean $total include total results property
* @return array object data * @return array object data
*/ */
public function toArray() public function toArray($total = false)
{ {
return $this->getData(); return $this->getData();
$ret = array(); $ret = array();
@@ -2442,6 +2465,7 @@ class e_tree_model extends e_model
{ {
$ret[$id] = $model->toArray(); $ret[$id] = $model->toArray();
} }
if($total) $ret['total'] = $this->getTotal();
return $ret; return $ret;
} }
@@ -2449,16 +2473,17 @@ class e_tree_model extends e_model
* Convert object data to a string * Convert object data to a string
* *
* @param boolean $AddSlashes * @param boolean $AddSlashes
* @param string $key optional, if set method will return corresponding value as a string * @param string $node_id optional, if set method will return corresponding value as a string
* @param boolean $total include total results property
* @return string * @return string
*/ */
public function toString($AddSlashes = true, $node_id = null) public function toString($AddSlashes = true, $node_id = null, $total = false)
{ {
if (null !== $node_id && $this->isNode($node_id)) if (null !== $node_id && $this->isNode($node_id))
{ {
return $this->getNode($node_id)->toString($AddSlashes); return $this->getNode($node_id)->toString($AddSlashes);
} }
return (string) e107::getArrayStorage()->WriteArray($this->toArray(), $AddSlashes); return (string) e107::getArrayStorage()->WriteArray($this->toArray($total), $AddSlashes);
} }
} }