summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2009-09-07 21:09:52 -0700
committerBharat Mediratta <bharat@menalto.com>2009-09-07 21:09:52 -0700
commit78a42d9b8397e36bdd2a84e1fd6b4f49f0873b78 (patch)
treee02fcc189e0cc6accce7910e3e7d067b5595499b /modules
parentf28353f4e1c573a33dc1c3375585ab040f8be2fc (diff)
1. Actually set the slug to the new value in the controllers.
2. Fix up an issue where we were crashing if there were no conflicting rows 3. Amend Item_Model so that if you change the slug, it flushes the cache for all children
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);
}