params->urls)) { foreach (json_decode($request->params->urls) as $url) { $item = rest::resolve($url); if (access::can("view", $item)) { $items[] = items_rest::format_restful_item($item); } } } else if (isset($request->params->ancestor_for)) { $item = rest::resolve($request->params->ancestor_for); if (!access::can("view", $item)) { throw new Kohana_404_Exception(); } $items[] = items_rest::format_restful_item($item); while (($item = $item->parent()) != null) { array_unshift($items, items_rest::format_restful_item($item)); }; } return $items; } static function resolve($id) { $item = ORM::factory("item", $id); if (!access::can("view", $item)) { throw new Kohana_404_Exception(); } return $item; } private static function format_restful_item($item) { $item_rest = array("url" => rest::url("item", $item), "entity" => $item->as_restful_array(), "relationships" => rest::relationships("item", $item)); if ($item->type == "album") { $members = array(); foreach ($item->children() as $child) { $members[] = rest::url("item", $child); } $item_rest["members"] = $members; } return $item_rest; } }