vrfs-775: added comments; minor code tweaks
This commit is contained in:
parent
ece8873e6e
commit
01242f3c40
|
|
@ -114,49 +114,51 @@ module JamRuby
|
|||
end
|
||||
elsif current_user
|
||||
if current_user.lat.nil? || current_user.lng.nil?
|
||||
if params[:remote_ip]
|
||||
if geo = MaxMindGeo.ip_lookup(params[:remote_ip])
|
||||
latlng = [geo.lat, geo.lng] if geo.lat && geo.lng
|
||||
end
|
||||
if params[:remote_ip] && (geo = MaxMindGeo.ip_lookup(params[:remote_ip]))
|
||||
latlng = [geo.lat, geo.lng] if geo.lat && geo.lng
|
||||
end
|
||||
else
|
||||
latlng = [current_user.lat, current_user.lng]
|
||||
end
|
||||
distance = location_distance || M_MILES_DEFAULT
|
||||
elsif params[:remote_ip] && (geo = MaxMindGeo.ip_lookup(params[:remote_ip]))
|
||||
latlng = [geo.lat, geo.lng] if geo.lat && geo.lng
|
||||
end
|
||||
unless latlng.blank?
|
||||
if latlng.present?
|
||||
distance ||= location_distance || M_MILES_DEFAULT
|
||||
rel = rel.where(['lat IS NOT NULL AND lng IS NOT NULL'])
|
||||
.within(distance, :origin => latlng)
|
||||
end
|
||||
|
||||
sel_str = 'users.*'
|
||||
case ordering = self.musician_order_param(params)
|
||||
when :plays # FIXME: double counting?
|
||||
sel_str = "COUNT(records)+COUNT(sessions) AS play_count, #{sel_str}"
|
||||
rel = rel.joins("LEFT JOIN music_sessions AS sessions ON sessions.user_id = users.id")
|
||||
rel = rel.joins("LEFT JOIN recordings AS records ON records.owner_id = users.id")
|
||||
rel = rel.group("users.id")
|
||||
rel = rel.order("play_count DESC, users.created_at DESC")
|
||||
.joins("LEFT JOIN recordings AS records ON records.owner_id = users.id")
|
||||
.group("users.id")
|
||||
.order("play_count DESC, users.created_at DESC")
|
||||
when :followed
|
||||
sel_str = "COUNT(follows) AS search_follow_count, #{sel_str}"
|
||||
rel = rel.joins("LEFT JOIN users_followers AS follows ON follows.user_id = users.id")
|
||||
rel = rel.group("users.id")
|
||||
rel = rel.order("COUNT(follows) DESC, users.created_at DESC")
|
||||
.group("users.id")
|
||||
.order("COUNT(follows) DESC, users.created_at DESC")
|
||||
when :playing
|
||||
rel = rel.joins("LEFT JOIN connections ON connections.user_id = users.id")
|
||||
.where(['connections.aasm_state != ? AND connections.music_session_id IS NOT NULL',
|
||||
.where(['connections.music_session_id IS NOT NULL AND connections.aasm_state != ?',
|
||||
'expired'])
|
||||
.order("users.created_at DESC")
|
||||
end
|
||||
|
||||
rel = rel.select(sel_str)
|
||||
perpage = [params[:per_page] || M_PER_PAGE, 100].min
|
||||
perpage = [(params[:per_page] || M_PER_PAGE).to_i, 100].min
|
||||
page = [params[:page].to_i, 1].max
|
||||
rel = rel.paginate(:page => page, :per_page => perpage)
|
||||
rel.includes([:instruments, :followings, :friends])
|
||||
rel = rel.includes([:instruments, :followings, :friends])
|
||||
|
||||
objs = rel.all
|
||||
srch = Search.new
|
||||
srch.page_num, srch.page_count = page, rel.all.total_pages
|
||||
srch.musician_results_for_user(rel.all, current_user)
|
||||
srch.page_num, srch.page_count = page, objs.total_pages
|
||||
srch.musician_results_for_user(objs, current_user)
|
||||
end
|
||||
|
||||
RESULT_FOLLOW = :follows
|
||||
|
|
@ -174,6 +176,8 @@ module JamRuby
|
|||
if user
|
||||
@user_counters = results.inject({}) { |hh,val| hh[val.id] = []; hh }
|
||||
mids = "'#{@musicians.map(&:id).join("','")}'"
|
||||
|
||||
# this gets counts for each search result on friends/follows/records/sessions
|
||||
results.each do |uu|
|
||||
counters = { }
|
||||
counters[COUNT_FRIEND] = Friendship.where(:user_id => uu.id).count
|
||||
|
|
@ -183,6 +187,8 @@ module JamRuby
|
|||
@user_counters[uu.id] << counters
|
||||
end
|
||||
|
||||
# this section determines follow/like/friend status for each search result
|
||||
# so that action links can be activated or not
|
||||
rel = User.select("users.id AS uid")
|
||||
rel = rel.joins("LEFT JOIN users_followers AS follows ON follows.follower_id = '#{user.id}'")
|
||||
rel = rel.where(["users.id IN (#{mids}) AND follows.user_id = users.id"])
|
||||
|
|
|
|||
Loading…
Reference in New Issue