Class: Entry

Inherits:
ApplicationRecord show all
Includes:
HasOwner
Defined in:
app/models/entry.rb

Constant Summary collapse

PER_PAGE =
10

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.community_privaciesObject



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

def self.community_privacies
  [Entry.privacies[:generally_accessible], Entry.privacies[:visible_to_community]]
end

.creation_parametersObject



58
59
60
# File 'app/models/entry.rb', line 58

def self.creation_parameters
  entity_parameters # + %i(community_id)
end

.entity_parametersObject



53
54
55
56
# File 'app/models/entry.rb', line 53

def self.entity_parameters
  for_image = %i(image image_name image_author_name image_author_link)
  for_image + %i(lead title body slug privacy show_name source source_link)
end

.page_for_administration(page) ⇒ Object

Parameters:

  • page (Integer)


33
34
35
# File 'app/models/entry.rb', line 33

def self.page_for_administration(page)
  not_deleted.with_privacy(Entry.community_privacies).recent.page(page).per(PER_PAGE)
end

.page_for_owner(user, page) ⇒ Object

Parameters:

  • user (User)
  • page (Integer)


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

def self.page_for_owner(user, page)
  owned_by(user).not_deleted.recent.page(page).per(PER_PAGE)
end

.page_for_visitors(user, page) ⇒ Object

Parameters:

  • user (User)
  • page (Integer)


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

def self.page_for_visitors(user, page)
  not_deleted.with_privacy(Entry.privacy_for_user(user)).recent.page(page).per(PER_PAGE)
end

.privacy_for_user(user) ⇒ Object

Parameters:

  • user (User)


63
64
65
# File 'app/models/entry.rb', line 63

def self.privacy_for_user(user)
  user.is_a?(User) ? Entry.community_privacies : Entry.privacies[:generally_accessible]
end

Instance Method Details

#can_be_reposted_by?(user) ⇒ Boolean

Parameters:

  • user (User)

Returns:

  • (Boolean)


68
69
70
# File 'app/models/entry.rb', line 68

def can_be_reposted_by?(user)
  generally_accessible? && UserPrivilege.user_in_group?(user, :editors)
end

#commentable_by?(user) ⇒ Boolean

Parameters:

  • user (User)

Returns:

  • (Boolean)


110
111
112
# File 'app/models/entry.rb', line 110

def commentable_by?(user)
  user.is_a? User
end

#editable_by?(user) ⇒ Boolean

Returns:

  • (Boolean)


105
106
107
# File 'app/models/entry.rb', line 105

def editable_by?(user)
  owned_by?(user) || (UserPrivilege.user_has_privilege?(user, :administrator) && visible_to?(user))
end

#generally_accessible_to?(user) ⇒ Boolean

Is entry visible to user as generally accessible entry?

Parameters:

  • user (User|nil)

    who tries to see the entry

Returns:

  • (Boolean)


85
86
87
# File 'app/models/entry.rb', line 85

def generally_accessible_to?(user)
  user.nil? || user.is_a?(User)
end

#visible_to?(user) ⇒ Boolean

Is entry visible to user?

Parameters:

  • user (User|nil)

    who tries to see the entry

Returns:

  • (Boolean)


76
77
78
79
# File 'app/models/entry.rb', line 76

def visible_to?(user)
  method = "#{self.privacy}_to?".to_sym
  respond_to?(method) ? send(method, user) : owned_by?(user)
end

#visible_to_community_to?(user) ⇒ Boolean

Is entry visible to user as entry for community?

Parameters:

  • user (User|nil)

    who tries to see the entry

Returns:

  • (Boolean)


93
94
95
# File 'app/models/entry.rb', line 93

def visible_to_community_to?(user)
  user.is_a? User
end

#visible_to_followees_to?(user) ⇒ Boolean

Is entry visible to user as entry for followees?

Parameters:

  • user (User|nil)

    who tries to see the entry

Returns:

  • (Boolean)


101
102
103
# File 'app/models/entry.rb', line 101

def visible_to_followees_to?(user)
  owned_by?(user) || (self.user.is_a?(User) && self.user.follows?(user))
end