discourse/app/controllers/post_action_users_controlle...

43 lines
1.2 KiB
Ruby

require_dependency 'discourse'
class PostActionUsersController < ApplicationController
def index
params.require(:post_action_type_id)
params.require(:id)
post_action_type_id = params[:post_action_type_id].to_i
page = params[:page].to_i
page_size = (params[:limit] || 200).to_i
finder = Post.where(id: params[:id].to_i)
finder = finder.with_deleted if guardian.is_staff?
post = finder.first
guardian.ensure_can_see!(post)
post_actions = post.post_actions.where(post_action_type_id: post_action_type_id)
.includes(:user)
.offset(page * page_size)
.order('post_actions.created_at asc')
.limit(page_size)
if !guardian.can_see_post_actors?(post.topic, post_action_type_id)
if !current_user
raise Discourse::InvalidAccess
end
post_actions = post_actions.where(user_id: current_user.id)
end
action_type = PostActionType.types.key(post_action_type_id)
total_count = post["#{action_type}_count"]
data = { post_action_users: serialize_data(post_actions.to_a, PostActionUserSerializer) }
if total_count > page_size
data[:total_rows_post_action_users] = total_count
end
render_json_dump(data)
end
end