* limit the type to types in this list. eg, "type=photo,movie" */ static function get($request) { $items = array(); if (isset($request->params->urls)) { foreach (json_decode($request->params->urls) as $url) { if (isset($request->params->type)) { $types = explode(",", $request->params->type); } $item = rest::resolve($url); if (access::can("view", $item)) { if (isset($types)) { if (in_array($item->type, $types)) { $items[] = items_rest::_format_restful_item($item); } } else { $items[] = items_rest::_format_restful_item($item); } } } } else if (isset($request->params->ancestors_for)) { $item = rest::resolve($request->params->ancestors_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->viewable()->children() as $child) { $members[] = rest::url("item", $child); } $item_rest["members"] = $members; } return $item_rest; } }