diff --git a/app/controllers/galleries_controller.rb b/app/controllers/galleries_controller.rb index 3108874..4712c3d 100644 --- a/app/controllers/galleries_controller.rb +++ b/app/controllers/galleries_controller.rb @@ -77,28 +77,11 @@ class GalleriesController < ApplicationController end def widget tags = OrbitHelper.widget_tags.empty? ? ["all"] : OrbitHelper.widget_tags - albums = Album.filter_by_widget_categories.filter_by_tags(tags) + album_ids = Album.filter_by_widget_categories.filter_by_tags(tags).pluck(:id) params = OrbitHelper.params counts = OrbitHelper.widget_data_count - - images = [] - total_images = 0 - if !albums.blank? - albums.each do |album| - total_images = total_images + album.album_images.count - end - counts = counts > total_images ? total_images : counts - abc = AlbumImage.count - counts = counts > abc ? abc : counts - while images.count < counts - albums.each do |album| - img = album.album_images.sample - if !images.include?(img) && img != nil - images << img - end - end - end - end + pipeline = [{'$match' => {album_id:{"$in"=>album_ids}}},{'$sort'=>{'_id'=>-1}},{ '$limit' => counts *5 }] + images = AlbumImage.collection.aggregate(pipeline).sample(counts) images = images.collect do |a| alt_text = (a.description.nil? || a.description == "" ? "gallery image" : a.description) {