48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
# class Tag < ProtoTag
 | 
						|
#   belongs_to :module_app
 | 
						|
 | 
						|
# end
 | 
						|
 | 
						|
class Tag
 | 
						|
  include Mongoid::Document
 | 
						|
  include Mongoid::Timestamps
 | 
						|
  include Impressionist::Impressionable
 | 
						|
  
 | 
						|
  is_impressionable :counter_cache => { :column_name => :view_count }
 | 
						|
  
 | 
						|
  field :key
 | 
						|
  field :view_count, :type => Integer, :default => 0
 | 
						|
  field :cloud_view_count, :type => Integer, :default => 0
 | 
						|
 | 
						|
  #field :cloud_amper,:type: Integer,:default=> 0 
 | 
						|
 | 
						|
  def self.sorted_for_cloud
 | 
						|
    tags = {}
 | 
						|
    self.all.each{ |tag|
 | 
						|
      tags.merge!({tag => self.get_impressionist(tag)})
 | 
						|
    }
 | 
						|
    if !tags.blank?
 | 
						|
      sorted_tags = tags.sort{|a,b| a[1]<=>b[1]}.reverse
 | 
						|
      sorted_tags[0][1] = :hot1
 | 
						|
      offset = (sorted_tags.size - 1) / 3
 | 
						|
      i = 1
 | 
						|
      class_i = 2
 | 
						|
      sorted_tags[1..-1].collect!{ |x|
 | 
						|
        x[1] = "hot#{class_i}"
 | 
						|
        i == offset ? i = 1 : i += 1 if class_i < 4
 | 
						|
        class_i += 1 if i == offset && class_i < 4
 | 
						|
      }
 | 
						|
      sorted_tags
 | 
						|
    else
 | 
						|
      []
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  protected
 | 
						|
  
 | 
						|
  def self.get_impressionist(item_tag = self)
 | 
						|
    item_tag.impressions.where(:created_at.gte=> 14.days.ago,:created_at.lte => Time.now).count
 | 
						|
  end
 | 
						|
 | 
						|
end
 |