class ModAction < ApplicationRecord belongs_to :creator, :class_name => "User" before_validation :initialize_creator, :on => :create #####DIVISIONS##### #Groups: 0-999 #Individual: 1000-1999 #####Actions##### #Create: 0 #Update: 1 #Delete: 2 #Undelete: 3 #Ban: 4 #Unban: 5 #Misc: 6-19 enum category: { user_delete: 2, user_ban: 4, user_unban: 5, user_name_change: 6, user_level_change: 7, user_approval_privilege: 8, user_upload_privilege: 9, user_account_upgrade: 19, user_feedback_update: 21, user_feedback_delete: 22, post_delete: 42, post_undelete: 43, post_ban: 44, post_unban: 45, post_permanent_delete: 46, post_move_favorites: 47, pool_delete: 62, pool_undelete: 63, artist_ban: 184, artist_unban: 185, comment_update: 81, comment_delete: 82, forum_topic_delete: 202, forum_topic_undelete: 203, forum_topic_lock: 206, forum_post_update: 101, forum_post_delete: 102, tag_alias_create: 120, tag_alias_update: 121, tag_implication_create: 140, tag_implication_update: 141, ip_ban_create: 160, ip_ban_delete: 162, mass_update: 1000, bulk_revert: 1001, other: 2000 } def self.search(params) q = super q = q.search_attributes(params, :creator, :category) q = q.text_attribute_matches(:description, params[:description_matches]) q.apply_default_order(params) end def filtered_description if (ip_ban_create? || ip_ban_delete?) && !CurrentUser.user.is_moderator? description.gsub(/(created|deleted) ip ban for .*/, "\\1 ip ban") else description end end def category_id self.class.categories[category] end def method_attributes super + [:category_id] end def serializable_hash(*args) super(*args).merge("description" => filtered_description) end def self.log(desc, cat = :other) create(:description => desc,:category => categories[cat]) end def initialize_creator self.creator_id = CurrentUser.id end end