+ def self.page prm = nil
+ page = prm.to_i
+ page = 1 if page < 1
+ page
+ end
+
+ def self.page_size prm = self.default_page_size
+ page_size = prm.to_i
+ page_size = self.max_page_size if page_size > self.max_page_size
+ page_size = self.default_page_size if page_size < 1
+ page_size
+ end
+
+ def self.list page = 1, page_size = self.default_page_size
+ opt = {}
+ opt.merge!(self.list_opt)
+ opt.merge!({:limit => page_size, :offset => (page -1) * page_size}) if page_size > 0
+ opt.merge!({:order => 'updated_at desc'})
+ ResourcePicture.find(:all, opt)
+ end
+
+ def self.list_opt
+ {:include => {:license => {}, :artist => {}, :picture => {}} }
+ end
+
+ def self.list_json_opt
+ {:include => {:license => {}, :artist => {}, :picture => {}} }
+ end
+
+ def self.mylist ar, page = 1, page_size = Author.default_resource_picture_page_size
+ opt = {}
+ opt.merge!(ResourcePicture.list_opt)
+ opt.merge!({:limit => page_size, :offset => (page -1) * page_size}) if page_size > 0
+ opt.merge!({:conditions => ['resource_pictures.artist_id = ?', ar.id], :order => 'resource_pictures.updated_at desc'})
+ ResourcePicture.find(:all, opt)
+ end
+
+ def self.show rid, roles
+ opt = {}
+ opt.merge!(self.show_opt)
+ r = ResourcePicture.find(rid, opt)
+ raise ActiveRecord::Forbidden unless r.visible?(roles)
+ r
+ end
+
+ def self.show_opt
+ {:include => {:license => {}, :artist => {}, :picture => {}} }
+ end
+
+ def self.show_json_opt
+ {:include => {:license => {}, :artist => {}, :picture => {}} }
+ end
+
+ def self.edit rid, ar
+ opt = {}
+ opt.merge!(self.show_opt)
+ r = ResourcePicture.find(rid, opt)
+ raise ActiveRecord::Forbidden unless r.own?(ar)
+ r
+ end
+
+ def new_picture imager
+ pc = Picture.new
+ pc.supply_default
+ pc.overwrite self
+ r = pc.store imager
+ return pc if r
+ self.errors.add :base, Picture.model_name.human + I18n.t('errors.not_create')
+ false
+ end
+
+ def store imager
+ return false unless imager
+ res = false
+ self.overwrite self.original_picture
+ ResourcePicture.transaction do
+ self.original_picture.published_at = Time.now
+ self.original_picture.stopped_at = nil
+ raise ActiveRecord::Rollback unless self.original_picture.save
+ pc = self.new_picture imager
+ if pc
+ self.picture_id = pc.id
+ if res = self.save
+ res = self.store_picture_with_gif(imager)
+ end
+ else
+ end
+ raise ActiveRecord::Rollback unless res