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

Returns:

  • (Boolean)


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

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

#can_be_deleted_by?(user) ⇒ Boolean

Returns:

  • (Boolean)


99
100
101
102
103
104
105
106
# File 'app/models/commontator/comment.rb', line 99

def can_be_deleted_by?(user)
  return true if thread.can_be_edited_by?(user)
  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)


90
91
92
93
94
95
96
97
# File 'app/models/commontator/comment.rb', line 90

def can_be_edited_by?(user)
  return true if thread.config.moderators_can_edit_comments &&\
                 thread.can_be_edited_by?(user)
  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_read_by?(user) ⇒ Boolean

Access Control #

Returns:

  • (Boolean)


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

def can_be_read_by?(user)
  return true if thread.can_be_edited_by?(user)
  (!is_deleted? || !thread.config.hide_deleted_comments) &&\
  thread.can_be_read_by?(user)
end

#can_be_voted_on?Boolean

Returns:

  • (Boolean)


108
109
110
111
# File 'app/models/commontator/comment.rb', line 108

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

#can_be_voted_on_by?(user) ⇒ Boolean

Returns:

  • (Boolean)


113
114
115
116
# File 'app/models/commontator/comment.rb', line 113

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



62
63
64
65
# File 'app/models/commontator/comment.rb', line 62

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

#delete_by(user) ⇒ Object



48
49
50
51
52
53
# File 'app/models/commontator/comment.rb', line 48

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



39
40
41
42
# File 'app/models/commontator/comment.rb', line 39

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

#is_deleted?Boolean

Returns:

  • (Boolean)


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

def is_deleted?
  !deleted_at.blank?
end

#is_latest?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'app/models/commontator/comment.rb', line 28

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

#is_modified?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'app/models/commontator/comment.rb', line 24

def is_modified?
  !editor.nil?
end

#is_votable?Boolean

Returns:

  • (Boolean)


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

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



55
56
57
58
59
60
# File 'app/models/commontator/comment.rb', line 55

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

#updated_timestampObject



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

def updated_timestamp
  return '' if editor.nil?
  
  I18n.t 'commontator.comment.status.updated_at',
         :editor_name => editor.commontator_name,
         :updated_at => I18n.l(updated_at, :format => :commontator)
end