self.author_id = au.id
end
- def own? author
- return false unless author
- self.author_id == author.id
- end
-
- def visible? author
- self.visible > 0 or self.own?(author)
+ def own? roles
+ roles = [roles] unless roles.respond_to?(:each)
+ au = Comic.get_author_from_roles roles
+ return false unless au
+ self.author_id == au.id
end
- def disp_visible
- visible == 1 ? 'O' : 'X'
+ def visible? roles
+ if MagicNumber['run_mode'] == 0
+ return false unless guest_role_check(roles)
+ else
+ return false unless reader_role_check(roles)
+ end
+ return true if self.own?(roles)
+ self.visible > 0
end
def self.default_page_size
end
def self.list_json_opt
- {:include => {:stories => {:panel => {}}, :author => {}}}
+ {:include => {:stories => {:include => {:panel => {}}}, :author => {}}}
end
def self.mylist au, page = 1, page_size = Author.default_comic_page_size
Comic.find(:all, opt)
end
- def self.show cid, au
+ def self.show cid, roles
opt = {}
opt.merge!(Comic.show_opt)
res = Comic.find(cid, opt)
- raise ActiveRecord::Forbidden unless res.visible?(au)
+ raise ActiveRecord::Forbidden unless res.visible?(roles)
res
end
end
def self.show_json_opt
- {:include => {:stories => {:panel => {}}, :author => {}}}
+ {:include => {:stories => {:include => {:panel => {}}}, :author => {}}}
end
def self.visible_count
Comic.count 'visible > 0'
end
+ def destroy_with_story
+ res = false
+ Comic.transaction do
+ self.stories.each do |story|
+ raise ActiveRecord::Rollback unless story.destroy
+ end
+ raise ActiveRecord::Rollback unless self.destroy
+ res = true
+ end
+ res
+ end
+
end