get("path"); $id = $input->get("g2_itemId"); if ($id) { // Requests by id are either core.DownloadItem or // core.ShowItem requests. // Later versions of Gallery 2 don't specify g2_view if // it's the default (core.ShowItem). // And in some cases (bbcode, embedding) people are using // the id style URLs although URL rewriting is enabled. $where = array(array("g2_id", "=", $id)); $view = $input->get("g2_view"); if ($view) { $where[] = array("g2_url", "like", "%g2_view=$view%"); } // else: Assuming that the first search hit is sufficiently good. } else if ($path) { $where = array(array("g2_url", "=", $path)); } else { throw new Kohana_404_Exception(); } $g2_map = ORM::factory("g2_map") ->merge_where($where) ->find(); if (!$g2_map->loaded()) { throw new Kohana_404_Exception(); } $item = ORM::factory("item", $g2_map->g3_id); if (!$item->loaded()) { throw new Kohana_404_Exception(); } access::required("view", $item); // Redirect the user to the new url switch ($g2_map->resource_type) { case "thumbnail": url::redirect($item->thumb_url(true)); case "resize": url::redirect($item->resize_url(true)); case "file": case "full": url::redirect($item->file_url(true)); case "item": case "album": url::redirect($item->abs_url()); case "group": case "user": default: throw new Kohana_404_Exception(); } } }