url); access::required("view", $item); if (isset($request->params->name)) { $where[] = array("name", "=", $request->params->name); } else { $where = array(); } $children = array(); foreach ($item->children($where) as $child) { $children[] = url::abs_site("rest/gallery/" . $child->relative_url()); } return rest::reply(array("resource" => $item->as_array(), "members" => $children)); } static function put($request) { $item = rest::resolve($request->url); access::required("edit", $item); $params = $request->params; foreach (array("captured", "description", "slug", "sort_column", "sort_order", "title", "view_count", "weight") as $key) { if (isset($params->$key)) { $item->$key = $params->$key; } } $item->save(); return rest::reply(array("url" => url::abs_site("/rest/gallery/" . $item->relative_url()))); } static function post($request) { $parent = rest::resolve($request->url); access::required("edit", $parent); $params = $request->params; switch ($params->type) { case "album": $item = album::create( $parent, $params->name, isset($params->title) ? $params->title : $name, isset($params->description) ? $params->description : null); break; case "photo": $item = photo::create( $parent, $request->file, $params->name, isset($params->title) ? $params->title : $name, isset($params->description) ? $params->description : null); break; default: throw new Rest_Exception("Invalid type: $args->type", 400); } return rest::reply(array("url" => url::abs_site("/rest/gallery/" . $item->relative_url()))); } static function delete($request) { $item = rest::resolve($request->url); access::required("edit", $item); $item->delete(); return rest::reply(); } static function resolve($path) { return url::get_item_from_uri($path); } }