|
- # Redmine - project management software
- # Copyright (C) 2006-2013 Jean-Philippe Lang
- #
- # This program is free software; you can redistribute it and/or
- # modify it under the terms of the GNU General Public License
- # as published by the Free Software Foundation; either version 2
- # of the License, or (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
- class Comment < ActiveRecord::Base
- require 'net/http'
- require 'json'
- include Redmine::SafeAttributes
- include ApplicationHelper
- has_many_kindeditor_assets :assets, :dependent => :destroy
-
- has_many :ActivityNotifies,:as => :activity, :dependent => :destroy
- # 课程/项目 消息
- 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 :praise_tread, as: :praise_tread_object, dependent: :destroy
- has_one :praise_tread_cache, as: :object, dependent: :destroy
- acts_as_event :datetime => :updated_on,
- :description => :comments,
- :type => 'news',
- :title=>Proc.new {|o| "RE: #{o.commented.title}" },
- :url => Proc.new {|o| {:controller => 'news', :action => 'show', :id => o.commented.id} }
-
- acts_as_tree :counter_cache => :comments_count, :order => "#{Comment.table_name}.created_on ASC"
- belongs_to :commented, :polymorphic => true, :counter_cache => true,:touch => true
- belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
- validates_presence_of :commented, :author, :comments
- safe_attributes 'comments','parent_id','reply_id','comments_count'
- after_create :act_as_system_message, :act_as_student_score,:update_cache_add #:send_mail,
- before_destroy :update_cache_delete
- after_destroy :down_course_score
-
- def act_as_system_message
- #ws = WechatService.new
- if self.commented.course
- if self.author_id != self.commented.author_id
- self.course_messages << CourseMessage.new(:user_id => self.commented.author_id, :course_id => self.commented.course.id, :viewed => false)
- # count = ShieldWechatMessage.where("container_type='User' and container_id=#{self.commented.author_id} and shield_type='Course' and shield_id=#{self.commented.course.id}").count
- # if count == 0
- # content = strip_html self.comments.html_safe, 200
- # ws.comment_template self.commented.author_id, "course_notice", self.id, "#{l(:label_notice_comment_template)}", self.author.try(:realname), format_time(self.created_on), content
- # end
- end
- else # 项目相关
- # if self.author_id != self.commented.author_id
- # self.forge_messages << ForgeMessage.new(:user_id => self.commented.author_id, :project_id => self.commented.project.id, :viewed => false)
- # #content = strip_html self.comments.html_safe, 200
- # #ws.comment_template self.commented.author_id, "blog_comment", self.id, "#{l(:label_news_comment_template)}", self.author.try(:realname), format_time(self.created_on), content
- # end
- end
- end
-
- def send_mail
- if self.commented.is_a?(News) && Setting.notified_events.include?('news_comment_added')
- Mailer.run.news_comment_added(self)
- end
- end
- after_destroy :delete_kindeditor_assets
-
- # Time 2015-03-31 09:15:06
- # Author lizanle
- # Description 删除对应评论的图片资源
- def delete_kindeditor_assets
- delete_kindeditor_assets_from_disk self.id,OwnerTypeHelper::COMMENT
- end
-
- def set_notify_id(notify_id)
- @notify_id= notify_id
- end
-
- def get_notify_id()
- return @notify_id
- end
-
- def set_notify_is_read(notify_is_read)
- @notify_is_read = notify_is_read
- end
-
- def get_notify_is_read()
- return @notify_is_read
- end
-
- # 课程成员得分(英雄榜)
- def act_as_student_score
- if self.commented.course
- course_member_score(self.commented.course.id, self.author_id, "NewReply")
- end
- end
-
- # 课程新闻数减少
- def down_course_score
- if self.commented.course
- down_course_score_num(self.commented.course.id, self.author_id, "NewReply")
- end
- end
-
- def creator_user
- self.author
- end
-
- def created_time
- self.created_on
- end
-
- def content_detail
- self.comments
- end
-
- #更新缓存二级回复
- def update_cache_add
- if self.commented_type == 'News'
- ReplyCache.update_news_replys_cache(self.commented_id,self,0)
- end
- end
-
- def update_cache_delete
- if self.commented_type == 'News'
- ReplyCache.update_news_replys_cache(self.commented_id,self,1)
- end
- CommentCache.delete_comment_cache(self.id)
- end
-
- end
|