|
|
|
@ -35,8 +35,9 @@ class Message < ActiveRecord::Base
|
|
|
|
|
# 课程动态
|
|
|
|
|
has_many :course_acts, :class_name => 'CourseActivity',:as =>:course_act ,:dependent => :destroy
|
|
|
|
|
# end
|
|
|
|
|
# 课程消息
|
|
|
|
|
# 课程/项目 消息
|
|
|
|
|
has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy
|
|
|
|
|
has_many :forge_messages, :class_name => 'ForgeMessage', :as => :forge_message, :dependent => :destroy
|
|
|
|
|
#end
|
|
|
|
|
|
|
|
|
|
has_many :ActivityNotifies,:as => :activity, :dependent => :destroy
|
|
|
|
@ -73,7 +74,7 @@ class Message < ActiveRecord::Base
|
|
|
|
|
after_update :update_messages_board
|
|
|
|
|
after_destroy :reset_counters!,:down_user_score,:delete_kindeditor_assets
|
|
|
|
|
|
|
|
|
|
after_create :act_as_activity,:act_as_course_activity,:be_user_score,:act_as_forge_activity, :act_as_course_message, :send_mail
|
|
|
|
|
after_create :act_as_activity,:act_as_course_activity,:be_user_score,:act_as_forge_activity, :act_as_system_message, :send_mail
|
|
|
|
|
#before_save :be_user_score
|
|
|
|
|
|
|
|
|
|
scope :visible, lambda {|*args|
|
|
|
|
@ -198,58 +199,48 @@ class Message < ActiveRecord::Base
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# 课程讨论区添加消息
|
|
|
|
|
# 课程讨论区添加消息:
|
|
|
|
|
# 老师发帖所有人都能收到消息
|
|
|
|
|
# 学生发帖,有人回复则给该学生消息,没回复则不给其它人发送消息
|
|
|
|
|
# 帖子被回复的可以收到消息通知
|
|
|
|
|
def act_as_course_message
|
|
|
|
|
# 项目讨论区添加消息:
|
|
|
|
|
# 主贴项目成员都能收到
|
|
|
|
|
# 回帖:帖子的发布人收到
|
|
|
|
|
def act_as_system_message
|
|
|
|
|
if self.course
|
|
|
|
|
if self.parent_id.nil? #主贴
|
|
|
|
|
if self.parent_id.nil? # 主贴
|
|
|
|
|
self.course.members.each do |m|
|
|
|
|
|
if self.author.allowed_to?(:as_teacher, self.course) # 老师
|
|
|
|
|
if m.user_id != self.author_id # 自己的帖子不给自己发送消息
|
|
|
|
|
self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.board.course_id, :viewed => false)
|
|
|
|
|
end
|
|
|
|
|
if self.author.allowed_to?(:as_teacher, self.course) && m.user_id != self.author_id # 老师 自己的帖子不给自己发送消息
|
|
|
|
|
self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.board.course_id, :viewed => false)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
else # 回帖
|
|
|
|
|
#if self.author.allowed_to?(:as_teacher, self.course) # 老师
|
|
|
|
|
self.course.members.each do |m|
|
|
|
|
|
if m.user_id == Message.find(self.parent_id).author_id && m.user_id != self.author_id # 只针对主贴回复,回复自己的帖子不发消息
|
|
|
|
|
self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.board.course_id, :viewed => false)
|
|
|
|
|
end
|
|
|
|
|
self.course.members.each do |m|
|
|
|
|
|
if m.user_id == Message.find(self.parent_id).author_id && m.user_id != self.author_id # 只针对主贴回复,回复自己的帖子不发消息
|
|
|
|
|
self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.board.course_id, :viewed => false)
|
|
|
|
|
end
|
|
|
|
|
#end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
else # 项目相关
|
|
|
|
|
if self.parent_id.nil? # 主贴
|
|
|
|
|
self.project.members.each do |m|
|
|
|
|
|
if m.user_id != self.author_id
|
|
|
|
|
self.forge_messages << ForgeMessage.new(:user_id => m.user_id, :project_id => self.board.project_id, :viewed => false)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
else # 回帖
|
|
|
|
|
self.project.members.each do |m|
|
|
|
|
|
if m.user_id == Message.find(self.parent_id).author_id && m.user_id != self.author_id # 只针对主贴回复,回复自己的帖子不发消息
|
|
|
|
|
self.forge_messages << ForgeMessage.new(:user_id => m.user_id, :project_id => self.board.project_id, :viewed => false)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
# if self.author.allowed_to?(:as_teacher, self.course) # 如果发帖人是老师
|
|
|
|
|
# self.course.members.each do |m|
|
|
|
|
|
# if self.parent_id.nil? # 主贴
|
|
|
|
|
# if m.user_id != self.author_id # 自己的帖子不给自己发送消息
|
|
|
|
|
# self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.board.course_id, :viewed => false)
|
|
|
|
|
# end
|
|
|
|
|
# else # 回帖只针对主贴发送消息
|
|
|
|
|
# if m.user_id == Message.find(self.parent_id).author_id
|
|
|
|
|
# self.course_messages << CourseMessage.new(:user_id => self.parent_id, :course_id => self.board.course_id, :viewed => false)
|
|
|
|
|
# end
|
|
|
|
|
# end
|
|
|
|
|
# end
|
|
|
|
|
# else # 学生只针对主贴回复
|
|
|
|
|
# unless self.parent_id.nil?
|
|
|
|
|
# self.course.members.each do |m|
|
|
|
|
|
# if m.user_id == Message.find(self.parent_id).author_id && m.user_id != self.author_id # 只针对主贴回复,回复自己的帖子不发消息
|
|
|
|
|
# self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.board.course_id, :viewed => false)
|
|
|
|
|
# end
|
|
|
|
|
# end
|
|
|
|
|
# end
|
|
|
|
|
# end
|
|
|
|
|
#end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
#更新用户分数 -by zjc
|
|
|
|
|
def be_user_score
|
|
|
|
|
#新建message且无parent的为发帖
|
|
|
|
|
|
|
|
|
|
if self.parent_id.nil? && !self.board.project.nil?
|
|
|
|
|
UserScore.joint(:post_message, self.author,nil,self, { message_id: self.id })
|
|
|
|
|
update_memo_number(self.author,1)
|
|
|
|
|