summaryrefslogtreecommitdiff
path: root/modules/comment/controllers/admin_comments.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules/comment/controllers/admin_comments.php')
-rw-r--r--modules/comment/controllers/admin_comments.php121
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;
}
}