app/models/sb_post.rb in community_engine-3.0.0 vs app/models/sb_post.rb in community_engine-3.2.0

- old
+ new

@@ -1,22 +1,22 @@ class SbPost < ActiveRecord::Base - acts_as_activity :user, :if => Proc.new{|record| record.user } #don't record an activity if there's no user + acts_as_activity :user, :if => Proc.new{|record| record.user } #don't record an activity if there's no user include Rakismet::Model rakismet_attrs :author => :username, :comment_type => 'comment', :content => :body, :user_ip => :author_ip - + belongs_to :forum, :counter_cache => true belongs_to :user, :counter_cache => true belongs_to :topic, :counter_cache => true format_attribute :body before_create { |r| r.forum_id = r.topic.forum_id } - after_create { |r| + after_create { |r| Topic.where('id = ?', r.topic_id) .update_all(['replied_at = ?, replied_by = ?, last_post_id = ?', r.created_at, r.user_id, r.id]) } - after_destroy { |r| + after_destroy { |r| t = Topic.find(r.topic_id) Topic.where('id = ?', t.id).update_all(['replied_at = ?, replied_by = ?, last_post_id = ?', t.sb_posts.recent.last.created_at, t.sb_posts.recent.last.user_id, t.sb_posts.recent.last.id]) if t.sb_posts.recent.last } validates_presence_of :user_id, :unless => Proc.new{|record| configatron.allow_anonymous_forum_posting } @@ -25,42 +25,46 @@ validates_presence_of :author_ip, :unless => Proc.new{|record| record.user} #log ip unless logged in validates_presence_of :body, :topic after_create :monitor_topic - after_create :notify_monitoring_users - + after_create :notify_monitoring_users + scope :with_query_options, lambda { select('sb_posts.*, topics.title as topic_title, forums.name as forum_name') .joins('inner join topics on sb_posts.topic_id = topics.id inner join forums on topics.forum_id = forums.id') .order('sb_posts.created_at desc') } scope :recent, -> { order('sb_posts.created_at ASC') } - validate :check_spam - + validate :check_spam + def monitor_topic - return unless user + return unless user monitorship = Monitorship.where(:user_id => self.user.id, :topic_id => self.topic.id).first_or_initialize if monitorship.new_record? monitorship.update_attribute :active, true end end - + def notify_monitoring_users topic.notify_of_new_post(self) end - + def editable_by?(user) user && (user.id == user_id || user.admin? || user.moderator_of?(topic.forum_id)) end - + def username user ? user.login : (author_name.blank? ? :anonymous.l : author_name) end - + def check_spam if configatron.has_key?(:akismet_key) && self.spam? self.errors.add(:base, :comment_spam_error.l) end - end - + end + + def dom_id + ['sb_posts', id].join('-') + end + end