vrfs-775: added comments; minor code tweaks

This commit is contained in:
Jonathan Kolyer 2013-11-27 22:32:13 -06:00
parent ece8873e6e
commit 01242f3c40
1 changed files with 22 additions and 16 deletions

View File

@ -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"])