summaryrefslogtreecommitdiff
path: root/modules/gallery
diff options
context:
space:
mode:
Diffstat (limited to 'modules/gallery')
-rw-r--r--modules/gallery/models/item.php6
-rw-r--r--modules/gallery/tests/Item_Model_Test.php10
2 files changed, 16 insertions, 0 deletions
diff --git a/modules/gallery/models/item.php b/modules/gallery/models/item.php
index e4ff0bfb..9706d61f 100644
--- a/modules/gallery/models/item.php
+++ b/modules/gallery/models/item.php
@@ -71,6 +71,12 @@ class Item_Model extends ORM_MPTT {
}
public function delete() {
+ if ($this->id == 1) {
+ $v = new Validation(array("id"));
+ $v->add_error("id", "cant_delete_root_album");
+ ORM_Validation_Exception::handle_validation($this->table_name, $v);
+ }
+
$old = clone $this;
module::event("item_before_delete", $this);
diff --git a/modules/gallery/tests/Item_Model_Test.php b/modules/gallery/tests/Item_Model_Test.php
index 1e77076a..eb9ecc99 100644
--- a/modules/gallery/tests/Item_Model_Test.php
+++ b/modules/gallery/tests/Item_Model_Test.php
@@ -336,4 +336,14 @@ class Item_Model_Test extends Gallery_Unit_Test_Case {
}
$this->assert_true(false, "Shouldn't get here");
}
+
+ public function cant_delete_root_album_test() {
+ try {
+ item::root()->delete();
+ } catch (ORM_Validation_Exception $e) {
+ $this->assert_same(array("id" => "cant_delete_root_album"), $e->validation->errors());
+ return; // pass
+ }
+ $this->assert_true(false, "Shouldn't get here");
+ }
}