OSDN Git Service

t#31056:add diff import
[pettanr/pettanr.git] / app / models / comic.rb
index 107c094..c60e519 100644 (file)
@@ -15,17 +15,21 @@ class Comic < ActiveRecord::Base
     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
@@ -70,7 +74,7 @@ class Comic < ActiveRecord::Base
   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
@@ -81,11 +85,11 @@ class Comic < ActiveRecord::Base
     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
   
@@ -102,11 +106,23 @@ class Comic < ActiveRecord::Base
   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