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