Class: Commontator::Comment

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/commontator/comment.rb

Instance Method Summary collapse

Instance Method Details

#can_be_created_by?(user) ⇒ Boolean

Access Control #

Returns:

  • (Boolean)


80
81
82
83
# File 'app/models/commontator/comment.rb', line 80

def can_be_created_by?(user)
  user == creator && !user.nil? && user.is_commontator &&\
  !thread.is_closed? && thread.can_be_read_by?(user)
end

#can_be_deleted_by?(user) ⇒ Boolean

Returns:

  • (Boolean)


94
95
96
97
98
99
100
101
102
103
104
# File 'app/models/commontator/comment.rb', line 94

def can_be_deleted_by?(user)
  mod_perm = thread.config.moderator_permissions.to_sym
  return true if thread.can_be_edited_by?(user) &&\
                 (mod_perm == :e ||\
                   mod_perm == :d)
  comment_del = thread.config.comment_deletion.to_sym
  !thread.is_closed? && (!is_deleted? || editor == user) &&\
  user == creator && comment_del != :n &&\
  (is_latest? || comment_del == :a) &&\
  thread.can_be_read_by?(user)
end

#can_be_edited_by?(user) ⇒ Boolean

Returns:

  • (Boolean)


85
86
87
88
89
90
91
92
# File 'app/models/commontator/comment.rb', line 85

def can_be_edited_by?(user)
  return true if thread.can_be_edited_by?(user) &&\
                 thread.config.moderator_permissions.to_sym == :e
  comment_edit = thread.config.comment_editing.to_sym
  !thread.is_closed? && !is_deleted? && user == creator &&\
  comment_edit != :n && (is_latest? || comment_edit == :a) &&\
  thread.can_be_read_by?(user)
end

#can_be_voted_on?Boolean

Returns:

  • (Boolean)


106
107
108
109
# File 'app/models/commontator/comment.rb', line 106

def can_be_voted_on?
  !thread.is_closed? && !is_deleted? &&\
  thread.config.comment_voting.to_sym != :n && is_votable?
end

#can_be_voted_on_by?(user) ⇒ Boolean

Returns:

  • (Boolean)


111
112
113
114
# File 'app/models/commontator/comment.rb', line 111

def can_be_voted_on_by?(user)
  !user.nil? && user.is_commontator && user != creator &&\
  thread.can_be_read_by?(user) && can_be_voted_on?
end

#created_timestampObject



65
66
67
68
# File 'app/models/commontator/comment.rb', line 65

def created_timestamp
  I18n.t 'commontator.comment.status.created_at',
         created_at: I18n.l(created_at, format: :commontator)
end

#delete_by(user) ⇒ Object



51
52
53
54
55
56
# File 'app/models/commontator/comment.rb', line 51

def delete_by(user)
  return false if is_deleted?
  self.deleted_at = Time.now
  self.editor = user
  self.save
end

#get_vote_by(user) ⇒ Object



37
38
39
40
# File 'app/models/commontator/comment.rb', line 37

def get_vote_by(user)
  return nil unless is_votable? && !user.nil? && user.is_commontator
  votes_for.where(voter_type: user.class.name, voter_id: user.id).first
end

#is_deleted?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'app/models/commontator/comment.rb', line 47

def is_deleted?
  !deleted_at.blank?
end

#is_latest?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'app/models/commontator/comment.rb', line 26

def is_latest?
  thread.comments.last == self
end

#is_modified?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'app/models/commontator/comment.rb', line 22

def is_modified?
  !editor.nil?
end

#is_votable?Boolean

Returns:

  • (Boolean)


30
31
32
33
34
35
# File 'app/models/commontator/comment.rb', line 30

def is_votable?
  return true if acts_as_votable_initialized
  return false unless self.class.respond_to?(:acts_as_votable)
  self.class.acts_as_votable
  self.class.acts_as_votable_initialized = true
end

#undelete_by(user) ⇒ Object



58
59
60
61
62
63
# File 'app/models/commontator/comment.rb', line 58

def undelete_by(user)
  return false unless is_deleted?
  self.deleted_at = nil
  self.editor = user
  self.save
end

#update_cached_votes(vote_scope = nil) ⇒ Object



42
43
44
45
# File 'app/models/commontator/comment.rb', line 42

def update_cached_votes(vote_scope = nil)
  self.update_column(:cached_votes_up, count_votes_up(true))
  self.update_column(:cached_votes_down, count_votes_down(true))
end

#updated_timestampObject



70
71
72
73
74
# File 'app/models/commontator/comment.rb', line 70

def updated_timestamp
  I18n.t 'commontator.comment.status.updated_at',
         editor_name: Commontator.commontator_name(editor || creator),
         updated_at: I18n.l(updated_at, format: :commontator)
end