diff options
author | Nathan Kinkade <nkinkade@nkinka.de> | 2010-07-08 00:29:37 +0000 |
---|---|---|
committer | Nathan Kinkade <nkinkade@nkinka.de> | 2010-07-08 00:29:37 +0000 |
commit | c83650d83ad8b1f4bda30cac2ae8efa6e1c97287 (patch) | |
tree | 482cf980e87cd7c80c28a89bb9395eba6b53026f /modules/comment/controllers/admin_comments.php | |
parent | a0b0b415515bff5f9edd43d373e8e78f3b3f8e4d (diff) | |
parent | 9d66783f47636153bf3661d1d89e694dd5188c36 (diff) |
Merge branch 'master' of git://github.com/gallery/gallery3
Diffstat (limited to 'modules/comment/controllers/admin_comments.php')
-rw-r--r-- | modules/comment/controllers/admin_comments.php | 121 |
1 files changed, 20 insertions, 101 deletions
diff --git a/modules/comment/controllers/admin_comments.php b/modules/comment/controllers/admin_comments.php index 68794638..fda3873c 100644 --- a/modules/comment/controllers/admin_comments.php +++ b/modules/comment/controllers/admin_comments.php @@ -18,116 +18,35 @@ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ class Admin_Comments_Controller extends Admin_Controller { - private static $items_per_page = 20; - public function index() { - // Get rid of old deleted/spam comments once in a while - db::build() - ->delete("comments") - ->where("state", "IN", array("deleted", "spam")) - ->where("updated", "<", "UNIX_TIMESTAMP() - 86400 * 7") - ->execute(); - - // Redirect to the appropriate queue - url::redirect("admin/comments/queue/unpublished"); - } - - public function menu_labels() { - $menu = $this->_menu($this->_counts()); - print json_encode(array((string) $menu->get("unpublished")->label, - (string) $menu->get("published")->label, - (string) $menu->get("spam")->label, - (string) $menu->get("deleted")->label)); - } - - public function queue($state) { - $page = max(Input::instance()->get("page"), 1); - $view = new Admin_View("admin.html"); - $view->page_title = t("Manage comments"); + $view->page_title = t("Comment settings"); $view->content = new View("admin_comments.html"); - $view->content->counts = $this->_counts(); - $view->content->menu = $this->_menu($view->content->counts); - $view->content->state = $state; - $view->content->comments = ORM::factory("comment") - ->order_by("created", "DESC") - ->where("state", "=", $state) - ->limit(self::$items_per_page, ($page - 1) * self::$items_per_page) - ->find_all(); - $view->content->pager = new Pagination(); - $view->content->pager->initialize( - array("query_string" => "page", - "total_items" => $view->content->counts->$state, - "items_per_page" => self::$items_per_page, - "style" => "classic")); - + $view->content->form = $this->_get_admin_form(); print $view; } - private function _menu($counts) { - return Menu::factory("root") - ->append(Menu::factory("link") - ->id("unpublished") - ->label(t2("Awaiting Moderation (%count)", - "Awaiting Moderation (%count)", - $counts->unpublished)) - ->url(url::site("admin/comments/queue/unpublished"))) - ->append(Menu::factory("link") - ->id("published") - ->label(t2("Approved (%count)", - "Approved (%count)", - $counts->published)) - ->url(url::site("admin/comments/queue/published"))) - ->append(Menu::factory("link") - ->id("spam") - ->label(t2("Spam (%count)", - "Spam (%count)", - $counts->spam)) - ->url(url::site("admin/comments/queue/spam"))) - ->append(Menu::factory("link") - ->id("deleted") - ->label(t2("Recently Deleted (%count)", - "Recently Deleted (%count)", - $counts->deleted)) - ->url(url::site("admin/comments/queue/deleted"))); - } - - private function _counts() { - $counts = new stdClass(); - $counts->unpublished = 0; - $counts->published = 0; - $counts->spam = 0; - $counts->deleted = 0; - foreach (db::build() - ->select("state") - ->select(array("c" => 'COUNT("*")')) - ->from("comments") - ->group_by("state") - ->execute() as $row) { - $counts->{$row->state} = $row->c; - } - return $counts; - } - - public function set_state($id, $state) { + public function save() { access::verify_csrf(); - - $comment = ORM::factory("comment", $id); - $orig = clone $comment; - if ($comment->loaded()) { - $comment->state = $state; - $comment->save(); - } + $form = $this->_get_admin_form(); + $form->validate(); + module::set_var("comment", "access_permissions", + $form->comment_settings->access_permissions->value); + message::success(t("Comment settings updated")); + url::redirect("admin/comments"); } - public function delete_all_spam() { - access::verify_csrf(); - - db::build() - ->delete("comments") - ->where("state", "=", "spam") - ->execute(); - url::redirect("admin/comments/queue/spam"); + private function _get_admin_form() { + $form = new Forge("admin/comments/save", "", "post", + array("id" => "g-comments-admin-form")); + $comment_settings = $form->group("comment_settings")->label(t("Permissions")); + $comment_settings->dropdown("access_permissions") + ->label(t("Who can leave comments?")) + ->options(array("everybody" => t("Everybody"), + "registered_users" => t("Only registered users"))) + ->selected(module::get_var("comment", "access_permissions")); + $comment_settings->submit("save")->value(t("Save")); + return $form; } } |