/** * Restrict the query to the time frame. * @param QUERY $query */ public function prepare_query($query) { if (!$query) { $this->raise("'query' cannot be empty", 'prepare_query', 'TIME_FRAME_SELECTOR'); } switch ($this->period) { case Time_frame_recent: $query->set_limits(0, $this->num_in_recent); break; case Time_frame_today: $first = new DATE_TIME(mktime(0, 0, 0, date('n'), date('d'), date('Y'))); $last = new DATE_TIME(time()); $query->set_days($first->as_iso(), $last->as_iso()); break; case Time_frame_last_week: $now = time(); $last = new DATE_TIME($now); $first = new DATE_TIME($now - 86400 * 7); $query->set_days($first->as_iso(), $last->as_iso()); break; case Time_frame_last_month: $now = time(); $last = new DATE_TIME($now); $first = new DATE_TIME($now - 86400 * 30); $query->set_days($first->as_iso(), $last->as_iso()); break; case Time_frame_all: break; } if ($this->period != Time_frame_all) { $query->order_by_recent(); } }