".((int)$member_id)." AND b.dup_id IS NULL AND b.travel_date_end > (now() - interval '${db_days} days') AND b.id IN (".implode(",",$ids).") ORDER BY b.travel_date DESC"; file_put_contents("/home/savvy/tmp/popularByRange-${member_id}-${days}.sql",$q); $r = pg_query($db, $q); if ($r && pg_num_rows($r)) { $result = []; while ($f=pg_fetch_assoc($r)) { $result[] = $f; } return [$result, NULL]; } return [NULL,pg_last_error()]; } public function popularByRangeAndTime($db, $member_id, $days, $ids, $time, $time_delta=self::TIME_DELTA) { $db_time = strtotime($time); $db_days = date("w",$db_time) + (int)$days; $db_time_delta = (int)$time_delta; // Ranges $dh = 60*date("G")+date("i"); $d1 = $dh - $db_time_delta; $d2 = $dh + $db_time_delta; $q = "SELECT c.* FROM (SELECT b.*, 60*date_part('hour', b.travel_date)+date_part('minute',b.travel_date) AS dm FROM trackedemail_item a, parsedemail_item b WHERE a.id=b.trackedemail_item_id AND a.member_id<>".((int)$member_id)." AND b.dup_id IS NULL AND b.travel_date_end > (now() - interval '${db_days} days') AND b.id IN (".implode(",",$ids).")) AS c WHERE c.dm>=${d1} AND c.dm<=${d2} ORDER BY c.travel_date DESC"; file_put_contents("/home/savvy/tmp/popularByRangeAndTime-${member_id}-${days}.sql",$q); $r = pg_query($db, $q); if ($r && pg_num_rows($r)) { $result = []; while ($f=pg_fetch_assoc($r)) { $result[] = $f; } return [$result, NULL]; } return [NULL,pg_last_error()]; } */ protected function popularRadiusLocationsMock() { return [ [ "location_end" => "0101000020E6100000892650C4A2985EC0C029070EC3CE4240", "location_start" => "0101000020E61000004A5B012A419E5EC066A4390DACE34240", "num" => 100 ], [ "location_end" => "0101000020E61000007F3CAA5013995EC0A6D590B8C7CE4240", "location_start" => "0101000020E61000004A5B012A419E5EC066A4390DACE34240", "num" => 50 ], [ "location_end" => "0101000020E610000023707F89D3985EC098A02BB6EECE4240", "location_start" => "0101000020E61000008B02D8DB419E5EC03360DA8184E34240", "num" => 10 ] ]; } } // vi:ts=2