* Renamed PostReport to Report * Added report button to SPV * Updated rspec refs diaspora/diaspora#4732 refs diaspora/diaspora#4710 refs diaspora/diaspora#4711 refs diaspora/diaspora#4517
67 lines
1.7 KiB
Ruby
67 lines
1.7 KiB
Ruby
class ReportController < ApplicationController
|
|
before_filter :authenticate_user!
|
|
before_filter :redirect_unless_admin, :except => [:create]
|
|
|
|
def index
|
|
@report = Report.where(reviewed: false).all
|
|
end
|
|
|
|
def update
|
|
if Report.where(post_type: params[:type]).exists?(post_id: params[:id])
|
|
mark_as_reviewed
|
|
end
|
|
redirect_to :action => :index and return
|
|
end
|
|
|
|
def destroy
|
|
if (params[:type].eql? "post")
|
|
if Post.exists?(params[:id])
|
|
delete_post
|
|
end
|
|
elsif (params[:type].eql? "comment")
|
|
if Comment.exists?(params[:id])
|
|
delete_comment
|
|
end
|
|
end
|
|
redirect_to :action => :index and return
|
|
end
|
|
|
|
def create
|
|
code = 400
|
|
username = current_user.username
|
|
post = Report.new(
|
|
:post_id => params[:id],
|
|
:post_type => params[:type],
|
|
:user_id => username,
|
|
:text => params[:text])
|
|
unless Report.where("post_id = ? AND post_type = ?", params[:id], params[:type]).exists?(user_id: username)
|
|
result = post.save
|
|
code = 200 if result
|
|
end
|
|
render :nothing => true, :status => code
|
|
end
|
|
|
|
private
|
|
def delete_post
|
|
post = Post.find(params[:id])
|
|
current_user.retract(post)
|
|
mark_as_reviewed
|
|
flash[:notice] = I18n.t 'report.status.destroyed'
|
|
end
|
|
|
|
def delete_comment
|
|
comment = Comment.find(params[:id])
|
|
#current_user.retract(comment)
|
|
comment.destroy
|
|
mark_as_reviewed
|
|
flash[:notice] = I18n.t 'report.status.destroyed'
|
|
end
|
|
|
|
def mark_as_reviewed
|
|
posts = Report.where("post_id = ? AND post_type = ?", params[:id], params[:type])
|
|
posts.each do |post|
|
|
post.update_attributes(reviewed: true)
|
|
end
|
|
flash[:notice] = I18n.t 'report.status.marked'
|
|
end
|
|
end
|