summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/helpers/core_installer.php1
-rw-r--r--core/models/item.php22
-rw-r--r--installer/install.sql5
3 files changed, 17 insertions, 11 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);
}
diff --git a/installer/install.sql b/installer/install.sql
index 62240b50..2891df0f 100644
--- a/installer/install.sql
+++ b/installer/install.sql
@@ -142,6 +142,7 @@ CREATE TABLE {items} (
`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',
@@ -153,7 +154,7 @@ CREATE TABLE {items} (
KEY `random` (`rand_key`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;
-INSERT INTO {items} VALUES (NULL,NULL,UNIX_TIMESTAMP(),'',NULL,1,1,1,NULL,NULL,NULL,0,NULL,NULL,1,2,NULL,NULL,1,'Gallery','album',UNIX_TIMESTAMP(),0,NULL,NULL,'weight','ASC',1,1,1);
+INSERT INTO {items} VALUES (NULL,NULL,UNIX_TIMESTAMP(),'',NULL,1,1,1,NULL,NULL,NULL,0,NULL,NULL,1,2,NULL,NULL,1,'Gallery','album',UNIX_TIMESTAMP(),0,NULL,NULL,NULL,'weight','ASC',1,1,1);
DROP TABLE IF EXISTS {items_tags};
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
@@ -332,4 +333,4 @@ CREATE TABLE {vars} (
UNIQUE KEY `module_name` (`module_name`,`name`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;
-INSERT INTO {vars} VALUES (1,'core','active_site_theme','default'),(2,'core','active_admin_theme','admin_default'),(3,'core','page_size','9'),(4,'core','thumb_size','200'),(5,'core','resize_size','640'),(6,'core','default_locale','en_US'),(7,'core','blocks_dashboard_sidebar','a:4:{i:1712034437;a:2:{i:0;s:4:\"core\";i:1;s:11:\"block_adder\";}i:283628656;a:2:{i:0;s:4:\"core\";i:1;s:5:\"stats\";}i:1436662733;a:2:{i:0;s:4:\"core\";i:1;s:13:\"platform_info\";}i:1831514378;a:2:{i:0;s:4:\"core\";i:1;s:12:\"project_news\";}}'),(8,'core','blocks_dashboard_center','a:4:{i:186640350;a:2:{i:0;s:4:\"core\";i:1;s:7:\"welcome\";}i:1060186635;a:2:{i:0;s:4:\"core\";i:1;s:12:\"photo_stream\";}i:769529551;a:2:{i:0;s:4:\"core\";i:1;s:11:\"log_entries\";}i:1182339620;a:2:{i:0;s:7:\"comment\";i:1;s:15:\"recent_comments\";}}'),(9,'core','version','3.0 pre-beta svn'),(10,'core','choose_default_tookit','1'),(11,'comment','spam_caught','0');
+INSERT INTO {vars} VALUES (1,'core','active_site_theme','default'),(2,'core','active_admin_theme','admin_default'),(3,'core','page_size','9'),(4,'core','thumb_size','200'),(5,'core','resize_size','640'),(6,'core','default_locale','en_US'),(7,'core','blocks_dashboard_sidebar','a:4:{i:1229952929;a:2:{i:0;s:4:\"core\";i:1;s:11:\"block_adder\";}i:837192806;a:2:{i:0;s:4:\"core\";i:1;s:5:\"stats\";}i:1511984720;a:2:{i:0;s:4:\"core\";i:1;s:13:\"platform_info\";}i:784311393;a:2:{i:0;s:4:\"core\";i:1;s:12:\"project_news\";}}'),(8,'core','blocks_dashboard_center','a:4:{i:1049359538;a:2:{i:0;s:4:\"core\";i:1;s:7:\"welcome\";}i:84529933;a:2:{i:0;s:4:\"core\";i:1;s:12:\"photo_stream\";}i:1690694961;a:2:{i:0;s:4:\"core\";i:1;s:11:\"log_entries\";}i:728059697;a:2:{i:0;s:7:\"comment\";i:1;s:15:\"recent_comments\";}}'),(9,'core','version','3.0 pre-beta svn'),(10,'core','choose_default_tookit','1'),(11,'comment','spam_caught','0');