/**
 * Set the most recent ordering for a query.
 * @param QUERY $query
 * @param string $type
 * @access private
 */
function project_query_order_by_recent($query, $type)
{
    switch ($type) {
        case 'change':
            $query->set_order('chng.time_applied DESC, entry.time_created DESC');
            break;
        case 'job':
            $query->set_order('entry.state, (closer_id = 0) DESC, job.status ASC, job.priority DESC, job.time_closed DESC, entry.time_created DESC');
            break;
        default:
            $query->set_order('entry.type, entry.time_created DESC');
            break;
    }
}
 /**
  * Modify the query to navigate.
  * @param QUERY $query
  * @access private
  */
 protected function _adjust_query($query)
 {
     $calendar = read_var('calendar');
     $first_day = read_var('first_day');
     $last_day = read_var('last_day');
     $folder = $this->_entry->parent_folder();
     if ($calendar) {
         $this->page->location->append("Calendar", "view_calendar.php?id={$folder->id}");
     }
     if ($first_day) {
         $day = $this->app->make_date_time($first_day, Date_time_iso);
         $url = new URL($this->env->url(Url_part_no_host_path));
         $url->replace_argument('id', $folder->id);
         $url->replace_name_and_extension('view_journals.php');
         $this->page->location->append($folder->format_date($day), $url->as_text());
         $query->set_days($first_day, $last_day);
     }
     $query->set_order('date ASC');
     parent::_adjust_query($query);
 }
/**
 * Adds restrictions for finding only closed jobs.
 * @param QUERY $query
 * @access private
 */
function restrict_to_closed($query)
{
    $query->restrict("closer_id <> 0");
    $query->set_order('time_closed DESC');
    $query->store_order_as_recent();
}
 /**
  * Apply the desired sorting for RSS.
  * Called from {@link prepare_query()}.
  * @param QUERY $query
  * @access private
  */
 protected function _prepare_sort($query)
 {
     $query->set_order('entry.time_created DESC');
 }