OSDN Git Service

temp
[pettanr/pettanr.git] / lib / content.rb
1 class Pettanr::Content < Pettanr::Item
2   self.abstract_class = true
3   # ClassMethods
4   
5   def self.mylist_where me
6     ''
7   end
8   
9   def self.mylist_order
10     ''
11   end
12   
13   def self.himlist_where anyone
14     ''
15   end
16   
17   def self.himlist_order
18     ''
19   end
20   
21   def self.mylist me, page = 1, page_size = self.default_page_size
22     self.where(self.mylist_where(me)).includes(self.list_opt).order(self.mylist_order).offset((page -1) * page_size).limit(page_size)
23   end
24   
25   def self.himlist anyone, operators, page = 1, page_size = self.default_page_size
26     where_str = if operators.admin?
27       self.list_where
28     else
29       self.himlist_where(anyone)
30     end
31     self.where(where_str).includes(self.list_opt).order(self.mylist_order).offset((page -1) * page_size).limit(page_size)
32   end
33   
34   def self.mylist_paginate me, page = 1, page_size = self.default_page_size
35     Kaminari.paginate_array(
36       Array.new(self.where(self.mylist_where(me)
37     ).includes(self.list_opt).count, nil)).page(page).per(page_size)
38   end
39   
40   def self.himlist_paginate anyone, operators, page = 1, page_size = self.default_page_size
41     where_str = if operators.admin?
42       self.list_where
43     else
44       self.himlist_where(anyone)
45     end
46     Kaminari.paginate_array(
47       Array.new(self.where(where_str)
48     ).includes(self.list_opt).count, nil)).page(page).per(page_size)
49   end
50   
51   def self.edit content_id, operators
52     content = self.find content_id, self.show_opt
53     raise ActiveRecord::Forbidden unless content.own?(operators)
54     content
55   end
56   
57   #InstanceMethods
58   
59   def visible? operators
60     super
61     return true if self.own?(operators)
62     true
63   end
64   
65   def own? operators
66     return false unless operators.author
67     self.author_id == operators.author.id
68   end
69   
70 end
71