diff --git a/app/models/post_appeal.rb b/app/models/post_appeal.rb index 3c10f555b..686b0c8d7 100644 --- a/app/models/post_appeal.rb +++ b/app/models/post_appeal.rb @@ -11,6 +11,11 @@ class PostAppeal < ActiveRecord::Base attr_accessible :post_id, :post, :reason module SearchMethods + def reason_matches(query) + query = "*#{query}*" unless query =~ /\*/ + where("reason ILIKE ? ESCAPE E'\\\\'", query.to_escaped_for_sql_like) + end + def resolved joins(:post).where("posts.is_deleted = false and posts.is_flagged = false") end @@ -35,6 +40,10 @@ class PostAppeal < ActiveRecord::Base q = where("true") return q if params.blank? + if params[:reason_matches].present? + q = q.reason_matches(params[:reason_matches]) + end + if params[:creator_id].present? q = q.for_user(params[:creator_id].to_i) end diff --git a/app/models/post_flag.rb b/app/models/post_flag.rb index fe5692497..339b558ea 100644 --- a/app/models/post_flag.rb +++ b/app/models/post_flag.rb @@ -13,6 +13,11 @@ class PostFlag < ActiveRecord::Base attr_accessor :is_deletion module SearchMethods + def reason_matches(query) + query = "*#{query}*" unless query =~ /\*/ + where("reason ILIKE ? ESCAPE E'\\\\'", query.to_escaped_for_sql_like) + end + def resolved where("is_resolved = ?", true) end @@ -37,6 +42,10 @@ class PostFlag < ActiveRecord::Base q = where("true") return q if params.blank? + if params[:reason_matches].present? + q = q.reason_matches(params[:reason_matches]) + end + if params[:creator_id].present? && (CurrentUser.user.is_janitor? || params[:creator_id].to_i == CurrentUser.user.id) q = q.where("creator_id = ?", params[:creator_id].to_i) end diff --git a/app/views/post_appeals/_search.html.erb b/app/views/post_appeals/_search.html.erb index d87d0667b..11bf48eec 100644 --- a/app/views/post_appeals/_search.html.erb +++ b/app/views/post_appeals/_search.html.erb @@ -1,6 +1,15 @@ <%= form_tag(post_appeals_path, :method => :get, :class => "simple_form") do %> + + + + +