diff options
author | Bharat Mediratta <bharat@menalto.com> | 2009-09-10 10:28:43 -0700 |
---|---|---|
committer | Bharat Mediratta <bharat@menalto.com> | 2009-09-10 10:28:43 -0700 |
commit | 752c85711659eb7f83e6556665175266db8f24f5 (patch) | |
tree | 92fb88c313205b70c6bc8a1cd100c57d6f8c48cc | |
parent | b550a060450923b5c02d531d33785b5c9eb0d3e9 (diff) |
Rename ORM_MPTT::is_descendant() to ORM_MPTT::contains() to make the
API a little clearer. Write a test for it, too.
-rw-r--r-- | modules/gallery/libraries/ORM_MPTT.php | 4 | ||||
-rw-r--r-- | modules/gallery/tests/ORM_MPTT_Test.php | 13 | ||||
-rw-r--r-- | modules/gallery/views/move_tree.html.php | 4 | ||||
-rw-r--r-- | modules/organize/controllers/organize.php | 2 | ||||
-rw-r--r-- | modules/organize/views/organize_tree.html.php | 2 |
5 files changed, 19 insertions, 6 deletions
diff --git a/modules/gallery/libraries/ORM_MPTT.php b/modules/gallery/libraries/ORM_MPTT.php index 9b3e1f2b..83d2445c 100644 --- a/modules/gallery/libraries/ORM_MPTT.php +++ b/modules/gallery/libraries/ORM_MPTT.php @@ -110,7 +110,7 @@ class ORM_MPTT_Core extends ORM { * @param ORM $target * @return boolean */ - function is_descendant($target) { + function contains($target) { return ($this->left_ptr <= $target->left_ptr && $this->right_ptr >= $target->right_ptr); } @@ -212,7 +212,7 @@ class ORM_MPTT_Core extends ORM { * @return ORM_MTPP */ function move_to($target) { - if ($this->is_descendant($target)) { + if ($this->contains($target)) { throw new Exception("@todo INVALID_TARGET can't move item inside itself"); } diff --git a/modules/gallery/tests/ORM_MPTT_Test.php b/modules/gallery/tests/ORM_MPTT_Test.php index f77f1f34..a749542b 100644 --- a/modules/gallery/tests/ORM_MPTT_Test.php +++ b/modules/gallery/tests/ORM_MPTT_Test.php @@ -97,6 +97,19 @@ class ORM_MPTT_Test extends Unit_Test_Case { $album1_2->children()->select_list()); } + public function cant_move_parent_into_own_subtree_test() { + $album1 = album::create(item::root(), "move_to_test", "move_to_test"); + $album2 = album::create($album1, "move_to_test", "move_to_test"); + $album3 = album::create($album2, "move_to_test", "move_to_test"); + + try { + $album1->move_to($album3); + $self->assert_true(false, "We should be unable to move an item inside its own hierarchy"); + } catch (Exception $e) { + // pass + } + } + public function parent_test() { $root = ORM::factory("item", 1); $album = self::create_item_and_add_to_parent($root); diff --git a/modules/gallery/views/move_tree.html.php b/modules/gallery/views/move_tree.html.php index 623f80ee..e629e1bb 100644 --- a/modules/gallery/views/move_tree.html.php +++ b/modules/gallery/views/move_tree.html.php @@ -1,6 +1,6 @@ <?php defined("SYSPATH") or die("No direct script access.") ?> <?= $parent->thumb_img(array(), 25); ?> -<? if (!access::can("edit", $parent) || $source->is_descendant($parent)): ?> +<? if (!access::can("edit", $parent) || $source->contains($parent)): ?> <a href="javascript:load_tree('<?= $parent->id ?>',1)"> <?= html::clean($parent->title) ?> <?= t("(locked)") ?> </a> <? else: ?> <a href="javascript:load_tree('<?= $parent->id ?>',0)"> <?= html::clean($parent->title) ?></a> @@ -9,7 +9,7 @@ <? foreach ($children as $child): ?> <li id="node_<?= $child->id ?>" class="node"> <?= $child->thumb_img(array(), 25); ?> - <? if (!access::can("edit", $child) || $source->is_descendant($child)): ?> + <? if (!access::can("edit", $child) || $source->contains($child)): ?> <a href="javascript:load_tree('<?= $child->id ?>',1)"> <?= html::clean($child->title) ?> <?= t("(locked)") ?></a> <? else: ?> <a href="javascript:load_tree('<?= $child->id ?>',0)"> <?= html::clean($child->title) ?> </a> diff --git a/modules/organize/controllers/organize.php b/modules/organize/controllers/organize.php index 1fec6c9b..4639777c 100644 --- a/modules/organize/controllers/organize.php +++ b/modules/organize/controllers/organize.php @@ -47,7 +47,7 @@ class Organize_Controller extends Controller { $target_album = ORM::factory("item", $target_album_id); foreach ($this->input->post("source_ids") as $source_id) { $source = ORM::factory("item", $source_id); - if (!$source->is_descendant($target_album_)) { + if (!$source->contains($target_album)) { item::move($source, $target_album); } } diff --git a/modules/organize/views/organize_tree.html.php b/modules/organize/views/organize_tree.html.php index c0c23f94..e5d91c04 100644 --- a/modules/organize/views/organize_tree.html.php +++ b/modules/organize/views/organize_tree.html.php @@ -9,7 +9,7 @@ </span> <ul> <? foreach ($album->children(null, 0, array("type" => "album")) as $child): ?> - <? if ($selected && $child->is_descendant($selected)): ?> + <? if ($selected && $child->contains($selected)): ?> <?= View::factory("organize_tree.html", array("selected" => $selected, "album" => $child)); ?> <? else: ?> <li class="gOrganizeAlbum ui-icon-left <?= access::can("edit", $child) ? "" : "gViewOnly" ?>" |