diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/helpers/core_installer.php | 1 | ||||
-rw-r--r-- | core/models/item.php | 22 |
2 files changed, 14 insertions, 9 deletions
diff --git a/core/helpers/core_installer.php b/core/helpers/core_installer.php index 9f7c3f22..55306eaa 100644 --- a/core/helpers/core_installer.php +++ b/core/helpers/core_installer.php @@ -75,6 +75,7 @@ class core_installer { `view_count` int(9) default 0, `width` int(9) default NULL, `rand_key` float default NULL, + `relative_path_cache` varchar(255) default NULL, `sort_column` varchar(64) default NULL, `sort_order` char(4) default 'ASC', `weight` int(9) NOT NULL default 0, diff --git a/core/models/item.php b/core/models/item.php index 940eeab7..5b989b0c 100644 --- a/core/models/item.php +++ b/core/models/item.php @@ -19,7 +19,6 @@ */ class Item_Model extends ORM_MPTT { protected $children = 'items'; - private $relative_path = null; private $view_restrictions = null; protected $sorting = array(); @@ -137,12 +136,16 @@ class Item_Model extends ORM_MPTT { $original_thumb_path = $this->thumb_path(); parent::move_to($target, true); - $this->relative_path = null; + $this->relative_path_cache = null; rename($original_path, $this->file_path()); if ($this->is_album()) { @rename(dirname($original_resize_path), dirname($this->resize_path())); @rename(dirname($original_thumb_path), dirname($this->thumb_path())); + Database::instance() + ->update("items", + array("relative_path_cache" => null), + array("left >" => $this->left, "right <" => $this->right)); } else { @rename($original_resize_path, $this->resize_path()); @rename($original_thumb_path, $this->thumb_path()); @@ -250,21 +253,22 @@ class Item_Model extends ORM_MPTT { * @return string */ public function relative_path() { - if (empty($this->relative_path)) { + if (!isset($this->relative_path_cache)) { $paths = array(); foreach (Database::instance() ->select("name") ->from("items") - ->where("`left` <= {$this->left}") - ->where("`right` >= {$this->right}") - ->where("id <> 1") + ->where("left <=", $this->left) + ->where("right >=", $this->right) + ->where("id <>", 1) ->orderby("left", "ASC") ->get() as $row) { $paths[] = $row->name; } - $this->relative_path = implode($paths, "/"); + $this->relative_path_cache = implode($paths, "/"); + $this->save(); } - return $this->relative_path; + return $this->relative_path_cache; } /** @@ -290,7 +294,7 @@ class Item_Model extends ORM_MPTT { public function __set($column, $value) { if ($column == "name") { // Clear the relative path as it is no longer valid. - $this->relative_path = null; + $this->relative_path_cache = null; } parent::__set($column, $value); } |