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)


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

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

#can_be_deleted_by?(user) ⇒ Boolean

Returns:

  • (Boolean)


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

def can_be_deleted_by?(user)
  (!thread.is_closed? && (!is_deleted? || editor == user) &&\
    (thread.comments.last == self || thread.config.can_delete_old_comments) &&\
    user == creator && thread.config.can_delete_own_comments &&\
    thread.can_be_read_by?(user)) ||\
  thread.can_be_edited_by?(user)
end

#can_be_edited_by?(user) ⇒ Boolean

Returns:

  • (Boolean)


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

def can_be_edited_by?(user)
  (!thread.is_closed? && !is_deleted? &&\
    (thread.comments.last == self || thread.config.can_edit_old_comments) &&\
    user == creator && thread.config.can_edit_own_comments && thread.can_be_read_by?(user)) ||\
  (thread.config.admin_can_edit_comments && thread.can_be_edited_by?(user))
end

#can_be_read_by?(user) ⇒ Boolean

Access Control #

Returns:

  • (Boolean)


73
74
75
76
77
# File 'app/models/commontator/comment.rb', line 73

def can_be_read_by?(user)
  ((!is_deleted? || thread.config.deleted_comments_are_visible) &&\
    thread.can_be_read_by?(user)) ||\
  thread.can_be_edited_by?(user)
end

#can_be_voted_on?Boolean

Returns:

  • (Boolean)


98
99
100
# File 'app/models/commontator/comment.rb', line 98

def can_be_voted_on?
  !thread.is_closed? && is_votable? && !is_deleted? && thread.config.can_vote_on_comments
end

#can_be_voted_on_by?(user) ⇒ Boolean

Returns:

  • (Boolean)


102
103
104
# File 'app/models/commontator/comment.rb', line 102

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

#created_timestampObject



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

def created_timestamp
  config = thread.config
  "#{config.comment_create_verb_past.capitalize} on " + \
    created_at.strftime(config.timestamp_format)
end

#delete_by(user) ⇒ Object



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

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



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

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)


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

def is_deleted?
  !deleted_at.blank?
end

#is_modified?Boolean

Returns:

  • (Boolean)


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

def is_modified?
  !editor.nil?
end

#is_votable?Boolean

Returns:

  • (Boolean)


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

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



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

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

#updated_timestampObject



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

def updated_timestamp
  config = thread.config
  is_modified? ? ("Last #{config.comment_edit_verb_past} on " + \
    updated_at.strftime(config.timestamp_format)) : ''
end