Class: SimpleForum::Post

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/simple_forum/post.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.per_pageObject



45
46
47
# File 'app/models/simple_forum/post.rb', line 45

def self.per_page
  15
end

Instance Method Details

#deletable_by?(user, is_moderator = false) ⇒ Boolean

Returns:

  • (Boolean)


65
66
67
68
69
70
71
# File 'app/models/simple_forum/post.rb', line 65

def deletable_by?(user, is_moderator=false)
  return false if new_record?
  return false if is_deleted?
  is_moderator = forum.is_moderator?(user) if is_moderator.nil?
  return true if is_moderator
  created_at > SimpleForum.minutes_for_delete_post.minutes.ago && user == self.user
end

#editable_by?(user, is_moderator = false) ⇒ Boolean

Returns:

  • (Boolean)


57
58
59
60
61
62
63
# File 'app/models/simple_forum/post.rb', line 57

def editable_by?(user, is_moderator=false)
  return false if new_record?
  return false if is_deleted?
  is_moderator = forum.is_moderator?(user) if is_moderator.nil?
  return true if is_moderator
  created_at > SimpleForum.minutes_for_edit_post.minutes.ago && user == self.user
end

#is_deletedObject Also known as: is_deleted?



73
74
75
# File 'app/models/simple_forum/post.rb', line 73

def is_deleted
  !!deleted_at
end

#is_editedObject Also known as: is_edited?



79
80
81
# File 'app/models/simple_forum/post.rb', line 79

def is_edited
  !!edited_at
end

#mark_as_deleted_by(user) ⇒ Object



85
86
87
88
89
90
# File 'app/models/simple_forum/post.rb', line 85

def mark_as_deleted_by(user)
  return false unless deletable_by?(user, nil)
  self.deleted_at = Time.now
  self.deleted_by = user
  self.save
end

#on_pageObject



40
41
42
43
# File 'app/models/simple_forum/post.rb', line 40

def on_page
  before_count = topic.posts.where(["#{SimpleForum::Post.quoted_table_name}.created_at<?", created_at]).size
  [((before_count + 1).to_f / SimpleForum::Post.per_page).ceil.to_i, 1].max
end

#outputObject



49
50
51
# File 'app/models/simple_forum/post.rb', line 49

def output
  body.to_s.bbcode_to_html
end

#output_without_tagsObject



53
54
55
# File 'app/models/simple_forum/post.rb', line 53

def output_without_tags
  HTML::FullSanitizer.new.sanitize(output.gsub(/\<fieldset\>\<legend\>.*\<\/legend\>\<blockquote\>(.|\n)*\<\/blockquote\>/, ''))
end

#topic_must_not_be_closedObject



36
37
38
# File 'app/models/simple_forum/post.rb', line 36

def topic_must_not_be_closed
  errors.add(:base, I18n.t('simple_forum.errors.topic_is_close', :default => "Topic is closed.")) if topic && topic.is_closed?
end