summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/helpers/core_installer.php1
-rw-r--r--core/models/item.php22
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);
}