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? && thread.can_be_read_by?(user) && user == creator
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? &&\
    ((user == creator && thread.config.can_delete_own_comments && \
    thread.can_be_read_by?(user) && (!is_deleted? || editor == user)) &&\
    (thread.comments.last == self || thread.config.can_delete_old_comments))) ||\
    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? &&\
    ((user == creator && thread.config.can_edit_own_comments && thread.can_be_read_by?(user)) ||\
    (thread.can_be_edited_by?(user) && thread.config.admin_can_edit_comments)) &&\
    (thread.comments.last == self || thread.config.can_edit_old_comments)
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)
  (thread.can_be_read_by?(user) && \
    (!is_deleted? || thread.config.deleted_comments_are_visible)) ||\
    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? && thread.can_be_read_by?(user) && user != creator
end

#delete_by(user) ⇒ Object



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

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



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

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

#is_deleted?Boolean

Returns:

  • (Boolean)


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

def is_deleted?
  !deleted_at.blank?
end

#is_modified?Boolean

Returns:

  • (Boolean)


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

def is_modified?
  !editor.nil?
end

#is_votable?Boolean

Returns:

  • (Boolean)


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

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

#timestampObject



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

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

#undelete_by(user) ⇒ Object



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

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