|
|
@ -235,24 +235,24 @@ function entry_date($entry, $user) { |
|
|
|
|
|
|
|
function default_drink_options() { |
|
|
|
return [ |
|
|
|
'Coffee', |
|
|
|
'Beer', |
|
|
|
'Cocktail', |
|
|
|
'Tea', |
|
|
|
'Mimosa', |
|
|
|
'Latte', |
|
|
|
'Champagne' |
|
|
|
['title'=>'Coffee','subtitle'=>'','type'=>'drink'], |
|
|
|
['title'=>'Beer','subtitle'=>'','type'=>'drink'], |
|
|
|
['title'=>'Cocktail','subtitle'=>'','type'=>'drink'], |
|
|
|
['title'=>'Tea','subtitle'=>'','type'=>'drink'], |
|
|
|
['title'=>'Mimosa','subtitle'=>'','type'=>'drink'], |
|
|
|
['title'=>'Latte','subtitle'=>'','type'=>'drink'], |
|
|
|
['title'=>'Champagne','subtitle'=>'','type'=>'drink'] |
|
|
|
]; |
|
|
|
} |
|
|
|
|
|
|
|
function default_food_options() { |
|
|
|
return [ |
|
|
|
'Burrito', |
|
|
|
'Banana', |
|
|
|
'Pizza', |
|
|
|
'Soup', |
|
|
|
'Tacos', |
|
|
|
'Mac and Cheese' |
|
|
|
['title'=>'Burrito','subtitle'=>'','type'=>'eat'], |
|
|
|
['title'=>'Banana','subtitle'=>'','type'=>'eat'], |
|
|
|
['title'=>'Pizza','subtitle'=>'','type'=>'eat'], |
|
|
|
['title'=>'Soup','subtitle'=>'','type'=>'eat'], |
|
|
|
['title'=>'Tacos','subtitle'=>'','type'=>'eat'], |
|
|
|
['title'=>'Mac and Cheese','subtitle'=>'','type'=>'eat'] |
|
|
|
]; |
|
|
|
} |
|
|
|
|
|
|
@ -274,7 +274,8 @@ function query_user_nearby_options($type, $user_id, $latitude, $longitude) { |
|
|
|
GROUP BY content, round(gc_distance(latitude, longitude, :latitude, :longitude) / '.$bin_size.') /* group by 1km buckets */ |
|
|
|
ORDER BY round(gc_distance(latitude, longitude, :latitude, :longitude) / '.$bin_size.'), COUNT(1) DESC /* order by distance and frequency */ |
|
|
|
) AS tmp |
|
|
|
WHERE num > 2 /* only include things that have been used more than 2 times in this bucket */ |
|
|
|
WHERE num >= 1 /* only include things that have been used more than 2 times in this bucket */ |
|
|
|
AND dist < 1000 |
|
|
|
GROUP BY content /* group by name again */ |
|
|
|
ORDER BY SUM(num) DESC /* order by overall frequency */ |
|
|
|
LIMIT 6 |
|
|
@ -394,48 +395,35 @@ function get_entry_options($user_id, $latitude=null, $longitude=null) { |
|
|
|
$longitude = $last_longitude; |
|
|
|
} |
|
|
|
|
|
|
|
$num_options = 6; |
|
|
|
|
|
|
|
if($latitude) { |
|
|
|
$drinks = query_user_nearby_options('drink', $user_id, $latitude, $longitude); |
|
|
|
} |
|
|
|
// If there's no nearby data (like if the user isn't including location) then return the most frequently used ones instead
|
|
|
|
if(count($drinks) == 0) { |
|
|
|
$drinks = query_user_frequent_options('drink', $user_id); |
|
|
|
if(count($drinks) < $num_options) { |
|
|
|
$frequent_drinks = query_user_frequent_options('drink', $user_id); |
|
|
|
$drinks = array_merge($drinks, $frequent_drinks); |
|
|
|
} |
|
|
|
// If there's less than 4 options available, fill the list with the default options
|
|
|
|
$num_options = 6; |
|
|
|
if(count($drinks) < 6) { |
|
|
|
$default = default_drink_options(); |
|
|
|
while(count($drinks) < 6) { |
|
|
|
$next = array_shift($default); |
|
|
|
if(!in_array(['title'=>$next,'type'=>'drink'], $drinks)) { |
|
|
|
$drinks[] = [ |
|
|
|
'title' => $next, |
|
|
|
'subtitle' => query_last_eaten($user_id, 'drink', $next), |
|
|
|
'type' => 'drink' |
|
|
|
]; |
|
|
|
} |
|
|
|
} |
|
|
|
if(count($drinks) < $num_options) { |
|
|
|
$default_drinks = default_drink_options(); |
|
|
|
$drinks = array_merge($drinks, $default_drinks); |
|
|
|
} |
|
|
|
$drinks = array_slice($drinks, 0, $num_options); |
|
|
|
|
|
|
|
if($latitude) { |
|
|
|
$food = query_user_nearby_options('eat', $user_id, $latitude, $longitude); |
|
|
|
} |
|
|
|
if(count($food) == 0) { |
|
|
|
$food = query_user_frequent_options('eat', $user_id); |
|
|
|
$frequent_food = query_user_frequent_options('eat', $user_id); |
|
|
|
$food = array_merge($food, $frequent_food); |
|
|
|
} |
|
|
|
if(count($food) < $num_options) { |
|
|
|
$default = default_food_options(); |
|
|
|
while(count($food) < $num_options) { |
|
|
|
$next = array_shift($default); |
|
|
|
if(!in_array(['title'=>$next,'type'=>'eat'], $food)) { |
|
|
|
$food[] = [ |
|
|
|
'title' => $next, |
|
|
|
'subtitle' => query_last_eaten($user_id, 'eat', $next), |
|
|
|
'type' => 'eat' |
|
|
|
]; |
|
|
|
} |
|
|
|
} |
|
|
|
$default_food = default_food_options(); |
|
|
|
$food = array_merge($food, $default_food); |
|
|
|
} |
|
|
|
$food = array_slice($food, 0, $num_options); |
|
|
|
|
|
|
|
|
|
|
|
$options = [ |
|
|
|