Skip to content

Commit

Permalink
Revise REST resources to use new Rest::resolve_members().
Browse files Browse the repository at this point in the history
  • Loading branch information
shadlaws committed Jun 13, 2013
1 parent cfb90d1 commit 4177e6b
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 97 deletions.
22 changes: 5 additions & 17 deletions modules/gallery/classes/Gallery/Controller/Rest/Item.php
Expand Up @@ -307,23 +307,11 @@ public static function put_members($id, $params) {
throw Rest_Exception::factory(400, array("members" => "cannot_reorder"));
}

// Get the ids of all of the album's children.
$child_ids = array_keys(
DB::select("id")
->from("items")
->where("parent_id", "=", $item->id)
->execute()
->as_array("id"));

// Check if all the members have valid types and ids, and build our array of weights => ids.
$members_array = array();
foreach ($params["members"] as $m_weight => $member) {
list ($m_type, $m_id, $m_params) = Rest::resolve($member);
if (($m_type != "item") || !in_array($m_id, $child_ids)) {
throw Rest_Exception::factory(400, array("members" => "invalid"));
}
$members_array[$m_weight] = $m_id;
}
// Resolve our members list into an array of weights => ids.
$members_array = Rest::resolve_members($param["members"],
function($type, $id, $param, $data) {
return (($type == "item") && (ORM::factory("Item", $id)->parent_id == $data));
}, $item->id);

// Sort members by their weights (given by their keys).
ksort($members_array);
Expand Down
40 changes: 10 additions & 30 deletions modules/tag/classes/Tag/Controller/Rest/ItemTags.php
Expand Up @@ -100,21 +100,11 @@ static function put_members($id, $params) {
$item = ORM::factory("Item", $id);
Access::required("edit", $item);

// Check if all the members have valid types and ids, and build our array of names.
$tag_names = array();
foreach ($params["members"] as $member) {
list ($m_type, $m_id, $m_params) = Rest::resolve($member);
if ($m_type != "tag") {
throw Rest_Exception::factory(400, array("members" => "invalid"));
}

$tag = ORM::factory("Tag", $m_id);
if (!$tag->loaded()) {
throw Rest_Exception::factory(400, array("members" => "invalid"));
}

$tag_names[] = $tag->name;
}
// Resolve our members list into an array of tag names.
$tag_names = Rest::resolve_members($params["members"],
function($type, $id, $params) {
return ($type == "tag") ? ORM::factory("Tag", $id)->name : false;
});

// Clear all tags from the item, then add the new set.
Tag::clear_all($item);
Expand All @@ -131,21 +121,11 @@ static function post_members($id, $params) {
$item = ORM::factory("Item", $id);
Access::required("edit", $item);

// Check if all the members have valid types and ids, and build our array of names.
$tag_names = array();
foreach ($params["members"] as $member) {
list ($m_type, $m_id, $m_params) = Rest::resolve($member);
if ($m_type != "tag") {
throw Rest_Exception::factory(400, array("members" => "invalid"));
}

$tag = ORM::factory("Tag", $m_id);
if (!$tag->loaded()) {
throw Rest_Exception::factory(400, array("members" => "invalid"));
}

$tag_names[] = $tag->name;
}
// Resolve our members list into an array of tag names.
$tag_names = Rest::resolve_members($params["members"],
function($type, $id, $params) {
return ($type == "tag") ? ORM::factory("Tag", $id)->name : false;
});

// Add the tags to the item.
foreach ($tag_names as $tag_name) {
Expand Down
62 changes: 12 additions & 50 deletions modules/tag/classes/Tag/Controller/Rest/TagItems.php
Expand Up @@ -95,21 +95,12 @@ static function put_members($id, $params) {
throw Rest_Exception::factory(404);
}

// Check if all the members have valid types and ids, and build our array of items.
$items = array();
foreach ($params["members"] as $member) {
list ($m_type, $m_id, $m_params) = Rest::resolve($member);
if ($m_type != "item") {
throw Rest_Exception::factory(400, array("members" => "invalid"));
}

$item = ORM::factory("Item", $m_id);
if (!$item->loaded()) {
throw Rest_Exception::factory(400, array("members" => "invalid"));
}

$items[] = $item;
}
// Resolve our members list into an array of item models.
$items = Rest::resolve_members($params["members"],
function($type, $id, $params) {
$item = ORM::factory("Item", $id);
return (($type == "item") && $item->loaded()) ? $item : false;
});

// Clear all items from the tag, then add the new set.
Tag::remove_items($tag);
Expand All @@ -129,48 +120,19 @@ static function post_members($id, $params) {
throw Rest_Exception::factory(404);
}

// Check if all the members have valid types and ids, and build our array of items.
$items = array();
foreach ($params["members"] as $member) {
list ($m_type, $m_id, $m_params) = Rest::resolve($member);
if ($m_type != "item") {
throw Rest_Exception::factory(400, array("members" => "invalid"));
}

$item = ORM::factory("Item", $m_id);
if (!$item->loaded()) {
throw Rest_Exception::factory(400, array("members" => "invalid"));
}
Access::required("edit", $item);

$items[] = $item;
}
// Resolve our members list into an array of item models.
$items = Rest::resolve_members($params["members"],
function($type, $id, $params) {
$item = ORM::factory("Item", $id);
return (($type == "item") && $item->loaded()) ? $item : false;
});

// Add the tag to the items.
foreach ($items as $item) {
Tag::add($item, $tag->name);
}
}

/* @todo: add back in deprecated tag_item post.
static function post($request) {
$tag = Rest::resolve($request->params->entity->tag);
$item = Rest::resolve($request->params->entity->item);
Access::required("view", $item);
if (!$tag->loaded()) {
throw HTTP_Exception::factory(404);
}
Tag::add($item, $tag->name);
return array(
"url" => Rest::url("tag_item", $tag, $item),
"members" => array(
"tag" => Rest::url("tag", $tag),
"item" => Rest::url("item", $item)));
}
*/

/**
* DELETE the tag. This is only for admins.
* @see Controller_Rest_Tag::delete()
Expand Down

0 comments on commit 4177e6b

Please sign in to comment.