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)


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

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)


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

def can_be_deleted_by?(user)
  (!thread.is_closed? && (!is_deleted? || editor == user) &&\
    (is_latest? || 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)


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

def can_be_edited_by?(user)
  (!thread.is_closed? && !is_deleted? &&\
    (is_latest? || 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)


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

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)


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

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)


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

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



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

def created_timestamp
  config = thread.config
  "#{config.comment_create_verb_past.capitalize} on " + \
    created_at.strftime(config.timestamp_format)
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



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

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)


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

def is_deleted?
  !deleted_at.blank?
end

#is_latest?Boolean

Returns:

  • (Boolean)


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

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

#is_modified?Boolean

Returns:

  • (Boolean)


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

def is_modified?
  !editor.nil?
end

#is_votable?Boolean

Returns:

  • (Boolean)


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

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



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

#updated_timestampObject



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

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