You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
3.5 KiB
108 lines
3.5 KiB
6 years ago
|
#encoding: utf-8
|
||
|
class BlogComment < ActiveRecord::Base
|
||
|
# attr_accessible :title, :body
|
||
|
require 'net/http'
|
||
|
require 'json'
|
||
|
include Redmine::SafeAttributes
|
||
|
belongs_to :blog
|
||
|
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
|
||
|
has_many :blog_messages, :class_name => 'BlogMessage', :as => :blog_message, :dependent => :destroy
|
||
|
|
||
|
acts_as_tree :counter_cache => :comments_count, :order => "#{BlogComment.table_name}.sticky desc ,#{BlogComment.table_name}.created_on ASC"
|
||
|
acts_as_attachable
|
||
|
belongs_to :last_reply, :class_name => 'BlogComment', :foreign_key => 'last_comment_id'
|
||
|
# 虚拟关联
|
||
|
has_many :user_acts, :class_name => 'UserAcivity',:as =>:act
|
||
|
has_many :praise_tread, as: :praise_tread_object, dependent: :destroy
|
||
|
has_one :praise_tread_cache, as: :object, dependent: :destroy
|
||
|
acts_as_watchable
|
||
|
|
||
|
validates_presence_of :title, :content
|
||
|
validates_length_of :title, :maximum => 255
|
||
|
#validate :cannot_reply_to_locked_comment, :on => :create
|
||
|
safe_attributes 'title', 'content',"sticky", "locked", "root_id", 'visits'
|
||
|
|
||
|
after_save :add_user_activity
|
||
|
after_update :update_activity
|
||
|
after_create :update_parent_time
|
||
|
before_destroy :destroy_user_activity
|
||
|
|
||
|
scope :like, lambda {|arg|
|
||
|
if arg.blank?
|
||
|
where(nil)
|
||
|
else
|
||
|
pattern = "%#{arg.to_s.strip.downcase}%"
|
||
|
where(" LOWER(title) LIKE :p ", :p => pattern)
|
||
|
end
|
||
|
}
|
||
|
|
||
|
#动态更新
|
||
|
def update_activity
|
||
|
user_activity = UserActivity.where("act_type='BlogComment' and act_id =?",self.id).first
|
||
|
if user_activity
|
||
|
user_activity.updated_at = Time.now
|
||
|
user_activity.save
|
||
|
end
|
||
|
end
|
||
|
|
||
|
#在个人动态里面增加当前动态
|
||
|
def add_user_activity
|
||
|
if self.parent_id.nil? #只有发博文才插入动态
|
||
|
user_activity = UserActivity.where("act_type = '#{self.class.to_s}' and act_id = '#{self.id}'").first
|
||
|
if user_activity
|
||
|
user_activity.save
|
||
|
else
|
||
|
user_activity = UserActivity.new
|
||
|
user_activity.act_id = self.id
|
||
|
user_activity.act_type = self.class.to_s
|
||
|
user_activity.container_type = "Blog"
|
||
|
user_activity.container_id = self.blog_id
|
||
|
user_activity.user_id = self.author_id
|
||
|
user_activity.save
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def destroy_user_activity
|
||
|
user_activity = UserActivity.where("act_type = '#{self.class.to_s}' and act_id = '#{self.id}'")
|
||
|
user_activity.destroy_all
|
||
|
end
|
||
|
def deleted_attach_able_by? user
|
||
|
(user && user.logged? && (self.author == user) ) || user.admin?
|
||
|
end
|
||
|
|
||
|
def update_parent_time
|
||
|
if !self.parent.nil?
|
||
|
self.root.update_attribute(:updated_on, self.updated_on)
|
||
|
end
|
||
|
end
|
||
|
def project
|
||
|
end
|
||
|
|
||
|
def creator_user
|
||
|
self.author
|
||
|
end
|
||
|
|
||
|
def created_time
|
||
|
self.created_at
|
||
|
end
|
||
|
|
||
|
def content_detail
|
||
|
self.content
|
||
|
end
|
||
|
|
||
|
#博客回复微信模板消息
|
||
|
# def blog_wechat_message
|
||
|
# ws = WechatService.new
|
||
|
# if self.parent_id.nil?
|
||
|
# self.author.watcher_users.each do |watcher|
|
||
|
# content = strip_html self.author.try(:realname) + " 发表了博客:" + self.title.html_safe, 200
|
||
|
# ws.message_update_template watcher.id, "blog_comment", self.id, "#{l(:label_new_blog_template)}", content, format_time(self.created_at)
|
||
|
# end
|
||
|
# else
|
||
|
# content = strip_html self.content.html_safe, 200
|
||
|
# ws.comment_template self.parent.author_id, "blog_comment", self.parent_id, "#{l(:label_blog_comment_template)}", self.author.try(:realname), format_time(self.created_at), content
|
||
|
# end
|
||
|
# end
|
||
|
end
|