summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/gallery/controllers/albums.php36
-rw-r--r--modules/gallery/controllers/movies.php36
-rw-r--r--modules/gallery/controllers/photos.php36
-rw-r--r--modules/gallery/models/item.php13
4 files changed, 67 insertions, 54 deletions
diff --git a/modules/gallery/controllers/albums.php b/modules/gallery/controllers/albums.php
index 732a1789..b7a9f339 100644
--- a/modules/gallery/controllers/albums.php
+++ b/modules/gallery/controllers/albums.php
@@ -172,24 +172,25 @@ class Albums_Controller extends Items_Controller {
$form->edit_item->dirname->value != $album->name ||
$form->edit_item->slug->value != $album->slug) {
// Make sure that there's not a conflict
- $row = Database::instance()
- ->select(array("name", "slug"))
- ->from("items")
- ->where("parent_id", $album->parent_id)
- ->where("id <>", $album->id)
- ->open_paren()
- ->where("name", $form->edit_item->dirname->value)
- ->orwhere("slug", $form->edit_item->slug->value)
- ->close_paren()
- ->get()
- ->current();
- if ($row->name == $form->edit_item->dirname->value) {
- $form->edit_item->dirname->add_error("name_conflict", 1);
+ if ($row = Database::instance()
+ ->select(array("name", "slug"))
+ ->from("items")
+ ->where("parent_id", $album->parent_id)
+ ->where("id <>", $album->id)
+ ->open_paren()
+ ->where("name", $form->edit_item->dirname->value)
+ ->orwhere("slug", $form->edit_item->slug->value)
+ ->close_paren()
+ ->get()
+ ->current()) {
+ if ($row->name == $form->edit_item->dirname->value) {
+ $form->edit_item->dirname->add_error("name_conflict", 1);
+ }
+ if ($row->slug == $form->edit_item->slug->value) {
+ $form->edit_item->slug->add_error("slug_conflict", 1);
+ }
+ $valid = false;
}
- if ($row->slug == $form->edit_item->slug->value) {
- $form->edit_item->slug->add_error("slug_conflict", 1);
- }
- $valid = false;
}
}
@@ -201,6 +202,7 @@ class Albums_Controller extends Items_Controller {
if ($album->id != 1) {
$album->rename($form->edit_item->dirname->value);
}
+ $album->slug = $form->edit_item->slug->value;
$album->save();
module::event("item_edit_form_completed", $album, $form);
diff --git a/modules/gallery/controllers/movies.php b/modules/gallery/controllers/movies.php
index 2ba6bb5b..c549dbf8 100644
--- a/modules/gallery/controllers/movies.php
+++ b/modules/gallery/controllers/movies.php
@@ -75,30 +75,32 @@ class Movies_Controller extends Items_Controller {
if ($form->edit_item->filename->value != $photo->name ||
$form->edit_item->slug->value != $photo->slug) {
// Make sure that there's not a name or slug conflict
- $row = Database::instance()
- ->select(array("name", "slug"))
- ->from("items")
- ->where("parent_id", $photo->parent_id)
- ->where("id <>", $photo->id)
- ->open_paren()
- ->where("name", $form->edit_item->filename->value)
- ->orwhere("slug", $form->edit_item->slug->value)
- ->close_paren()
- ->get()
- ->current();
- if ($row->name == $form->edit_item->filename->value) {
- $form->edit_item->filename->add_error("name_conflict", 1);
+ if ($row = Database::instance()
+ ->select(array("name", "slug"))
+ ->from("items")
+ ->where("parent_id", $photo->parent_id)
+ ->where("id <>", $photo->id)
+ ->open_paren()
+ ->where("name", $form->edit_item->filename->value)
+ ->orwhere("slug", $form->edit_item->slug->value)
+ ->close_paren()
+ ->get()
+ ->current()) {
+ if ($row->name == $form->edit_item->filename->value) {
+ $form->edit_item->filename->add_error("name_conflict", 1);
+ }
+ if ($row->slug == $form->edit_item->slug->value) {
+ $form->edit_item->slug->add_error("slug_conflict", 1);
+ }
+ $valid = false;
}
- if ($row->slug == $form->edit_item->slug->value) {
- $form->edit_item->slug->add_error("slug_conflict", 1);
- }
- $valid = false;
}
}
if ($valid) {
$photo->title = $form->edit_item->title->value;
$photo->description = $form->edit_item->description->value;
+ $photo->slug = $form->edit_item->slug->value;
$photo->rename($form->edit_item->filename->value);
$photo->save();
module::event("item_edit_form_completed", $photo, $form);
diff --git a/modules/gallery/controllers/photos.php b/modules/gallery/controllers/photos.php
index 159501c0..959097b2 100644
--- a/modules/gallery/controllers/photos.php
+++ b/modules/gallery/controllers/photos.php
@@ -67,30 +67,32 @@ class Photos_Controller extends Items_Controller {
if ($form->edit_item->filename->value != $photo->name ||
$form->edit_item->slug->value != $photo->slug) {
// Make sure that there's not a name or slug conflict
- $row = Database::instance()
- ->select(array("name", "slug"))
- ->from("items")
- ->where("parent_id", $photo->parent_id)
- ->where("id <>", $photo->id)
- ->open_paren()
- ->where("name", $form->edit_item->filename->value)
- ->orwhere("slug", $form->edit_item->slug->value)
- ->close_paren()
- ->get()
- ->current();
- if ($row->name == $form->edit_item->filename->value) {
- $form->edit_item->filename->add_error("name_conflict", 1);
+ if ($row = Database::instance()
+ ->select(array("name", "slug"))
+ ->from("items")
+ ->where("parent_id", $photo->parent_id)
+ ->where("id <>", $photo->id)
+ ->open_paren()
+ ->where("name", $form->edit_item->filename->value)
+ ->orwhere("slug", $form->edit_item->slug->value)
+ ->close_paren()
+ ->get()
+ ->current()) {
+ if ($row->name == $form->edit_item->filename->value) {
+ $form->edit_item->filename->add_error("name_conflict", 1);
+ }
+ if ($row->slug == $form->edit_item->slug->value) {
+ $form->edit_item->slug->add_error("slug_conflict", 1);
+ }
+ $valid = false;
}
- if ($row->slug == $form->edit_item->slug->value) {
- $form->edit_item->slug->add_error("slug_conflict", 1);
- }
- $valid = false;
}
}
if ($valid) {
$photo->title = $form->edit_item->title->value;
$photo->description = $form->edit_item->description->value;
+ $photo->slug = $form->edit_item->slug->value;
$photo->rename($form->edit_item->filename->value);
$photo->save();
module::event("item_edit_form_completed", $photo, $form);
diff --git a/modules/gallery/models/item.php b/modules/gallery/models/item.php
index ed1294e4..a2c49154 100644
--- a/modules/gallery/models/item.php
+++ b/modules/gallery/models/item.php
@@ -329,11 +329,18 @@ 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_cache = null;
} else if ($column == "slug") {
- // Clear the relative url as it is no longer valid.
- $this->relative_url_cache = null;
+ if ($this->slug != $value) {
+ // Clear the relative url cache for this item and all children
+ $this->relative_url_cache = null;
+ if ($this->is_album()) {
+ Database::instance()
+ ->update("items",
+ array("relative_url_cache" => null),
+ array("left_ptr >" => $this->left_ptr, "right_ptr <" => $this->right_ptr));
+ }
+ }
}
parent::__set($column, $value);
}