/**
  * @param WP_Query $query
  */
 public function filter_the_query($query)
 {
     if (!$this->is_issue_archive($query)) {
         return;
     }
     // Project is context dependent, not saved in the filter
     $project_slug = get_query_var('issue_project');
     if ($project_slug) {
         $project = BuggyPress_Project::get_by_slug($project_slug);
         if ($project) {
             $query->query_vars['meta_query'][] = array('key' => BuggyPress_Issue::META_KEY_PROJECT, 'value' => $project->get_id());
         }
     }
     $filter = $this->get_current_filter();
     if ($status = $filter->get_status('slug')) {
         $query->query_vars['tax_query'][] = array('taxonomy' => 'issue_status', 'field' => 'slug', 'terms' => $status, 'operator' => 'IN');
     }
     if ($type = $filter->get_type('slug')) {
         $query->query_vars['tax_query'][] = array('taxonomy' => 'issue_type', 'field' => 'slug', 'terms' => $type, 'operator' => 'IN');
     }
     if ($priority = $filter->get_priority('slug')) {
         $query->query_vars['tax_query'][] = array('taxonomy' => 'issue_priority', 'field' => 'slug', 'terms' => $priority, 'operator' => 'IN');
     }
     if ($resolution = $filter->get_resolution('slug')) {
         $query->query_vars['tax_query'][] = array('taxonomy' => 'issue_resolution', 'field' => 'slug', 'terms' => $resolution, 'operator' => 'IN');
     }
     // TODO: assignee, tags, created, updated, due date
     // TODO: sorting
     // TODO: save the query as a post
     // TODO: track the user's saved queries
 }
 /**
  * @param array $args
  * @return BuggyPress_Form_IssueNew
  */
 private function get_form($args = array())
 {
     $defaults = array('project_slug' => '');
     $args = wp_parse_args($args, $defaults);
     $issue = new BuggyPress_Issue(0);
     if (!empty($args['project_slug'])) {
         $project = BuggyPress_Project::get_by_slug($args['project_slug']);
         if ($project) {
             $issue->set_project_id($project->get_id());
         }
     }
     $form = new BuggyPress_Form_IssueNew($issue);
     $form = apply_filters('buggypress_new_issue_form', $form, $args);
     return $form;
 }
 private static function register_meta_boxes()
 {
     self::$mb_permissions = add_flightless_meta_box(self::POST_TYPE, 'BuggyPress_MB_Permissions');
     self::$mb_members = add_flightless_meta_box(self::POST_TYPE, 'BuggyPress_MB_Members');
 }