|
|
|
@ -36,6 +36,8 @@ class Message < ActiveRecord::Base
|
|
|
|
|
has_many :forge_acts, :class_name => 'ForgeActivity',:as =>:forge_act ,:dependent => :destroy
|
|
|
|
|
# 课程动态
|
|
|
|
|
has_many :course_acts, :class_name => 'CourseActivity',:as =>:course_act ,:dependent => :destroy
|
|
|
|
|
has_many :user_acts, :class_name => 'UserActivity',:as =>:user_act ,:dependent => :destroy
|
|
|
|
|
|
|
|
|
|
# end
|
|
|
|
|
# 课程/项目 消息
|
|
|
|
|
has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy
|
|
|
|
@ -74,9 +76,9 @@ class Message < ActiveRecord::Base
|
|
|
|
|
validates_length_of :subject, :maximum => 255
|
|
|
|
|
validate :cannot_reply_to_locked_topic, :on => :create
|
|
|
|
|
|
|
|
|
|
after_create :add_author_as_watcher, :reset_counters!
|
|
|
|
|
after_update :update_messages_board
|
|
|
|
|
after_destroy :reset_counters!,:down_user_score,:delete_kindeditor_assets
|
|
|
|
|
after_create :add_author_as_watcher, :reset_counters!, :add_boards_count
|
|
|
|
|
after_update :update_messages_board, :update_activity
|
|
|
|
|
after_destroy :reset_counters!,:down_user_score,:delete_kindeditor_assets, :decrease_boards_count
|
|
|
|
|
|
|
|
|
|
after_create :act_as_activity,:act_as_course_activity,:be_user_score,:act_as_forge_activity, :act_as_system_message, :send_mail, :act_as_student_score, :act_as_at_message
|
|
|
|
|
#before_save :be_user_score
|
|
|
|
@ -125,6 +127,20 @@ class Message < ActiveRecord::Base
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# 发帖精辟更新发帖总数
|
|
|
|
|
def add_boards_count
|
|
|
|
|
if self.project
|
|
|
|
|
# 讨论区
|
|
|
|
|
if self.parent_id.nil?
|
|
|
|
|
count = self.project.boards_count + 1
|
|
|
|
|
self.project.update_attribute(:boards_count, count)
|
|
|
|
|
else # 回复
|
|
|
|
|
count = self.project.boards_reply_count + 1
|
|
|
|
|
self.project.update_attribute(:boards_reply_count, count)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def reset_counters!
|
|
|
|
|
if parent && parent.id
|
|
|
|
|
Message.update_all({:last_reply_id => parent.children.maximum(:id)}, {:id => parent.id})
|
|
|
|
@ -180,6 +196,13 @@ class Message < ActiveRecord::Base
|
|
|
|
|
def get_notify_is_read()
|
|
|
|
|
return @notify_is_read
|
|
|
|
|
end
|
|
|
|
|
#动态的更新
|
|
|
|
|
def update_activity
|
|
|
|
|
update_course_activity(self.class, self.id)
|
|
|
|
|
update_user_activity(self.class, self.id)
|
|
|
|
|
update_forge_activity(self.class, self.id)
|
|
|
|
|
update_org_activity(self.class, self.id)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
|
@ -303,6 +326,20 @@ class Message < ActiveRecord::Base
|
|
|
|
|
delete_kindeditor_assets_from_disk self.id,OwnerTypeHelper::MESSAGE
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# 删除帖子的时候更新帖子总数, 删除回复的时候总数不减少
|
|
|
|
|
def decrease_boards_count
|
|
|
|
|
if self.project && self.parent_id.nil?
|
|
|
|
|
# 讨论区
|
|
|
|
|
if self.parent_id.nil?
|
|
|
|
|
count = self.project.boards_count - 1
|
|
|
|
|
self.project.update_attribute(:boards_count, count)
|
|
|
|
|
else # 回复
|
|
|
|
|
count = self.project.boards_reply_count - 1
|
|
|
|
|
self.project.update_attribute(:boards_reply_count, count)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# 课程成员得分(英雄榜)
|
|
|
|
|
def act_as_student_score
|
|
|
|
|
if self.course
|
|
|
|
|