_show("updates", t("Recent changes")); } public function popular() { print $this->_show("popular", t("Most viewed")); } private function _show($album) { $page_size = module::get_var("gallery", "page_size", 9); $page = Input::instance()->get("page", "1"); $album_defn = unserialize(module::get_var("dynamic", $album)); $display_limit = $album_defn->limit; $children_count = ORM::factory("item") ->viewable() ->where("type", "!=", "album") ->count_all(); if (!empty($display_limit)) { $children_count = min($children_count, $display_limit); } $offset = ($page - 1) * $page_size; $max_pages = max(ceil($children_count / $page_size), 1); // Make sure that the page references a valid offset if ($page < 1 || ($children_count && $page > ceil($children_count / $page_size))) { throw new Kohana_404_Exception(); } $template = new Theme_View("page.html", "collection", "dynamic"); $template->set_global("page", $page); $template->set_global("page_size", $page_size); $template->set_global("max_pages", $max_pages); $template->set_global("children", ORM::factory("item") ->viewable() ->where("type", "!=", "album") ->order_by($album_defn->key_field, "DESC") ->find_all($page_size, $offset)); $template->set_global("children_count", $children_count); $template->content = new View("dynamic.html"); $template->content->title = t($album_defn->title); print $template; } }