discourse/app/controllers/admin/flags_controller.rb

96 lines
2.3 KiB
Ruby
Raw Normal View History

require 'flag_query'
2013-02-05 14:16:51 -05:00
class Admin::FlagsController < Admin::AdminController
2017-09-08 16:47:49 -04:00
def self.flags_per_page
10
end
2013-02-07 10:45:24 -05:00
def index
2013-05-12 21:09:03 -04:00
# we may get out of sync, fix it here
PostAction.update_flagged_posts_count
2017-09-08 16:47:49 -04:00
2017-09-11 16:44:20 -04:00
posts, topics, users, post_actions = FlagQuery.flagged_posts_report(
2017-09-08 16:47:49 -04:00
current_user,
filter: params[:filter],
offset: params[:offset].to_i,
topic_id: params[:topic_id],
2017-09-11 16:44:20 -04:00
per_page: Admin::FlagsController.flags_per_page,
rest_api: params[:rest_api].present?
2017-09-08 16:47:49 -04:00
)
2013-05-12 21:09:03 -04:00
if posts.blank?
render json: { posts: [], topics: [], users: [] }
2013-02-05 14:16:51 -05:00
else
2017-09-11 16:44:20 -04:00
if params[:rest_api]
render_json_dump(
{
flagged_posts: posts,
topics: serialize_data(topics, FlaggedTopicSerializer),
users: serialize_data(users, FlaggedUserSerializer),
post_actions: post_actions
},
rest_serializer: true,
meta: {
types: {
disposed_by: 'user'
}
}
)
else
render_json_dump(
posts: posts,
topics: serialize_data(topics, FlaggedTopicSerializer),
users: serialize_data(users, FlaggedUserSerializer)
)
end
2013-02-05 14:16:51 -05:00
end
end
def agree
2014-08-04 16:48:04 -04:00
params.permit(:id, :action_on_post)
post = Post.find(params[:id])
post_action_type = PostAction.post_action_type_for_post(post.id)
2014-08-04 16:48:04 -04:00
keep_post = params[:action_on_post] == "keep"
delete_post = params[:action_on_post] == "delete"
restore_post = params[:action_on_post] == "restore"
2014-08-04 16:48:04 -04:00
PostAction.agree_flags!(post, current_user, delete_post)
if delete_post
PostDestroyer.new(current_user, post).destroy
elsif restore_post
PostDestroyer.new(current_user, post).recover
2014-08-04 16:48:04 -04:00
elsif !keep_post
PostAction.hide_post!(post, post_action_type)
end
2014-08-04 16:48:04 -04:00
render body: nil
2013-02-05 14:16:51 -05:00
end
def disagree
params.permit(:id)
post = Post.find(params[:id])
2014-08-04 16:48:04 -04:00
PostAction.clear_flags!(post, current_user)
2014-08-04 16:48:04 -04:00
post.unhide!
2014-08-04 16:48:04 -04:00
render body: nil
end
def defer
params.permit(:id, :delete_post)
post = Post.find(params[:id])
2014-08-04 16:48:04 -04:00
PostAction.defer_flags!(post, current_user, params[:delete_post])
2014-08-04 16:48:04 -04:00
PostDestroyer.new(current_user, post).destroy if params[:delete_post]
2014-08-04 16:48:04 -04:00
render body: nil
end
2013-02-05 14:16:51 -05:00
end