app/models/spud_post.rb in spud_blog-0.8.12 vs app/models/spud_post.rb in spud_blog-0.8.13
- old
+ new
@@ -6,19 +6,27 @@
:join_table => 'spud_post_categories_posts',
:foreign_key => 'spud_post_id'
belongs_to :author, :class_name => 'SpudUser', :foreign_key => 'spud_user_id'
has_many :comments, :class_name => 'SpudPostComment'
has_many :spud_permalinks,:as => :attachment
+ has_many :spud_post_sites, :dependent => :destroy
scope :publicly, where('visible = true AND published_at <= ?', Time.now.utc).order('published_at desc')
scope :future_posts, where('visible = true AND published_at > ?', Time.now.utc)
validates_presence_of :title, :content, :published_at, :spud_user_id, :url_name
validates_uniqueness_of :url_name
before_validation :set_url_name
+
+ after_save :set_spud_site_ids
- attr_accessible :is_news,:published_at,:title,:content,:spud_user_id,:url_name,:visible,:comments_enabled,:meta_keywords,:meta_description,:category_ids
+ attr_accessible :is_news,:published_at,:title,:content,:spud_user_id,:url_name,:visible,:comments_enabled,:meta_keywords,:meta_description,:category_ids, :spud_site_ids
+ attr_accessor :spud_site_ids
+ def self.for_spud_site(spud_site_id)
+ return joins(:spud_post_sites).where(:spud_post_sites => {:spud_site_id => spud_site_id})
+ end
+
def self.public_posts(page, per_page)
return where('visible = ? AND published_at <= ?', true,Time.now.utc).order('published_at desc').includes(:categories).paginate(:page => page, :per_page => per_page)
end
def self.public_blog_posts(page, per_page)
@@ -98,11 +106,38 @@
def is_private?
return !is_public?
end
+ # Spud site ids getter
+ def spud_site_ids
+ if @spud_site_ids.nil?
+ @spud_site_ids = spud_post_sites.collect{ |site| site.spud_site_id }
+ end
+ return @spud_site_ids
+ end
+
+ # Spud site ids setter
+ def spud_site_ids=(site_ids)
+ if site_ids.is_a?(Array)
+ @spud_site_ids = site_ids.collect{ |id| id.to_i }
+ else
+ raise 'Site ids must be an Array'
+ end
+ end
+
private
def set_url_name
self.url_name = "#{self.published_at.strftime('%Y-%m-%d')}-#{self.title.parameterize}"
+ end
+
+ def set_spud_site_ids
+ if Spud::Core.multisite_mode_enabled
+ _spud_post_sites = []
+ self.spud_site_ids.each do |site_id|
+ _spud_post_sites << SpudPostSite.new(:spud_post_id => id, :spud_site_id => site_id)
+ end
+ self.spud_post_sites = _spud_post_sites
+ end
end
end
\ No newline at end of file