/** * Use a standard filter to get issues associated with the specified user. * * @param string $p_username Logged in user name. * @param string $p_password Login password. * @param integer $p_project_id Id of project to filter on, or ALL_PROJECTS. * @param string $p_filter_type The name of the filter to apply * "assigned" - target user specified - issues assigned to target user that are not resolved. * "assigned" - target user 0 - unassigned issues that are not resolved. * "reported" - target user specified - issues reported by user. * "reported" - target user 0 - will throw. * "monitored" - target user specified - issues monitored by user. * "monitored" - target user 0 - issues not monitored. * @param object $p_target_user AccountData for target user, can include id, name, or both. * @param integer $p_page_number The page to return (1 based). * @param integer $p_per_page Number of issues per page. * @return array a page of matching issues. */ function mc_project_get_issues_for_user($p_username, $p_password, $p_project_id, $p_filter_type, $p_target_user, $p_page_number, $p_per_page) { $t_user_id = mci_check_login($p_username, $p_password); if ($t_user_id === false) { return mci_soap_fault_login_failed(); } if ($p_project_id != ALL_PROJECTS && !project_exists($p_project_id)) { return SoapObjectsFactory::newSoapFault('Client', 'Project \'' . $p_project_id . '\' does not exist.'); } if (!mci_has_readonly_access($t_user_id, $p_project_id)) { return mci_soap_fault_access_denied($t_user_id); } $t_lang = mci_get_user_lang($t_user_id); $t_orig_page_number = $p_page_number < 1 ? 1 : $p_page_number; $t_page_count = 0; $t_bug_count = 0; $t_target_user_id = mci_get_user_id($p_target_user); $t_show_sticky = true; if (strcasecmp($p_filter_type, 'assigned') == 0) { $t_filter = filter_create_assigned_to_unresolved($p_project_id, $t_target_user_id); } else { if (strcasecmp($p_filter_type, 'reported') == 0) { # target id 0 for reporter doesn't make sense. if ($t_target_user_id == 0) { return SoapObjectsFactory::newSoapFault('Client', 'Target user id must be specified for \'reported\' filter.'); } $t_filter = filter_create_reported_by($p_project_id, $t_target_user_id); } else { if (strcasecmp($p_filter_type, 'monitored') == 0) { $t_filter = filter_create_monitored_by($p_project_id, $t_target_user_id); } else { return SoapObjectsFactory::newSoapFault('Client', 'Unknown filter type \'' . $p_filter_type . '\'.'); } } } $t_rows = filter_get_bug_rows($p_page_number, $p_per_page, $t_page_count, $t_bug_count, $t_filter, $p_project_id, $t_target_user_id, $t_show_sticky); $t_result = array(); # the page number was moved back, so we have exceeded the actual page number, see bug #12991 if ($t_orig_page_number > $p_page_number) { return $t_result; } foreach ($t_rows as $t_issue_data) { $t_result[] = mci_issue_data_as_array($t_issue_data, $t_user_id, $t_lang); } return $t_result; }
$t_update_bug_threshold = config_get('update_bug_threshold'); $t_bug_resolved_status_threshold = config_get('bug_resolved_status_threshold'); $t_hide_status_default = config_get('hide_status_default'); $t_default_show_changed = config_get('default_show_changed'); $c_filter['assigned'] = filter_create_assigned_to_unresolved(helper_get_current_project(), $t_current_user_id); $url_link_parameters['assigned'] = FILTER_PROPERTY_HANDLER_ID . '=' . $t_current_user_id . '&' . FILTER_PROPERTY_HIDE_STATUS . '=' . $t_bug_resolved_status_threshold; $c_filter['recent_mod'] = array(FILTER_PROPERTY_CATEGORY_ID => array('0' => META_FILTER_ANY), FILTER_PROPERTY_SEVERITY => array('0' => META_FILTER_ANY), FILTER_PROPERTY_STATUS => array('0' => META_FILTER_ANY), FILTER_PROPERTY_HIGHLIGHT_CHANGED => $t_default_show_changed, FILTER_PROPERTY_REPORTER_ID => array('0' => META_FILTER_ANY), FILTER_PROPERTY_HANDLER_ID => array('0' => META_FILTER_ANY), FILTER_PROPERTY_RESOLUTION => array('0' => META_FILTER_ANY), FILTER_PROPERTY_BUILD => array('0' => META_FILTER_ANY), FILTER_PROPERTY_VERSION => array('0' => META_FILTER_ANY), FILTER_PROPERTY_HIDE_STATUS => array('0' => META_FILTER_NONE), FILTER_PROPERTY_MONITOR_USER_ID => array('0' => META_FILTER_ANY)); $url_link_parameters['recent_mod'] = FILTER_PROPERTY_HIDE_STATUS . '=none'; $c_filter['reported'] = filter_create_reported_by(helper_get_current_project(), $t_current_user_id); $url_link_parameters['reported'] = FILTER_PROPERTY_REPORTER_ID . '=' . $t_current_user_id . '&' . FILTER_PROPERTY_HIDE_STATUS . '=' . $t_hide_status_default; $c_filter['resolved'] = array(FILTER_PROPERTY_CATEGORY_ID => array('0' => META_FILTER_ANY), FILTER_PROPERTY_SEVERITY => array('0' => META_FILTER_ANY), FILTER_PROPERTY_STATUS => array('0' => $t_bug_resolved_status_threshold), FILTER_PROPERTY_HIGHLIGHT_CHANGED => $t_default_show_changed, FILTER_PROPERTY_REPORTER_ID => array('0' => META_FILTER_ANY), FILTER_PROPERTY_HANDLER_ID => array('0' => META_FILTER_ANY), FILTER_PROPERTY_RESOLUTION => array('0' => META_FILTER_ANY), FILTER_PROPERTY_BUILD => array('0' => META_FILTER_ANY), FILTER_PROPERTY_VERSION => array('0' => META_FILTER_ANY), FILTER_PROPERTY_HIDE_STATUS => array('0' => $t_hide_status_default), FILTER_PROPERTY_MONITOR_USER_ID => array('0' => META_FILTER_ANY)); $url_link_parameters['resolved'] = FILTER_PROPERTY_STATUS . '=' . $t_bug_resolved_status_threshold . '&' . FILTER_PROPERTY_HIDE_STATUS . '=' . $t_bug_resolved_status_threshold; $c_filter['unassigned'] = filter_create_assigned_to_unresolved(helper_get_current_project(), 0); $url_link_parameters['unassigned'] = FILTER_PROPERTY_HANDLER_ID . '=[none]' . '&' . FILTER_PROPERTY_HIDE_STATUS . '=' . $t_hide_status_default; # TODO: check. handler value looks wrong $c_filter['monitored'] = filter_create_monitored_by(helper_get_current_project(), $t_current_user_id); $url_link_parameters['monitored'] = FILTER_PROPERTY_MONITOR_USER_ID . '=' . $t_current_user_id . '&' . FILTER_PROPERTY_HIDE_STATUS . '=' . $t_hide_status_default; $c_filter['feedback'] = array(FILTER_PROPERTY_CATEGORY_ID => array('0' => META_FILTER_ANY), FILTER_PROPERTY_SEVERITY => array('0' => META_FILTER_ANY), FILTER_PROPERTY_STATUS => array('0' => config_get('bug_feedback_status')), FILTER_PROPERTY_HIGHLIGHT_CHANGED => $t_default_show_changed, FILTER_PROPERTY_REPORTER_ID => array('0' => $t_current_user_id), FILTER_PROPERTY_HANDLER_ID => array('0' => META_FILTER_ANY), FILTER_PROPERTY_RESOLUTION => array('0' => META_FILTER_ANY), FILTER_PROPERTY_BUILD => array('0' => META_FILTER_ANY), FILTER_PROPERTY_VERSION => array('0' => META_FILTER_ANY), FILTER_PROPERTY_HIDE_STATUS => array('0' => $t_hide_status_default), FILTER_PROPERTY_MONITOR_USER_ID => array('0' => META_FILTER_ANY)); $url_link_parameters['feedback'] = FILTER_PROPERTY_REPORTER_ID . '=' . $t_current_user_id . '&' . FILTER_PROPERTY_STATUS . '=' . config_get('bug_feedback_status') . '&' . FILTER_PROPERTY_HIDE_STATUS . '=' . $t_hide_status_default; $c_filter['verify'] = array(FILTER_PROPERTY_CATEGORY_ID => array('0' => META_FILTER_ANY), FILTER_PROPERTY_SEVERITY => array('0' => META_FILTER_ANY), FILTER_PROPERTY_STATUS => array('0' => $t_bug_resolved_status_threshold), FILTER_PROPERTY_HIGHLIGHT_CHANGED => $t_default_show_changed, FILTER_PROPERTY_REPORTER_ID => array('0' => $t_current_user_id), FILTER_PROPERTY_HANDLER_ID => array('0' => META_FILTER_ANY), FILTER_PROPERTY_RESOLUTION => array('0' => META_FILTER_ANY), FILTER_PROPERTY_BUILD => array('0' => META_FILTER_ANY), FILTER_PROPERTY_VERSION => array('0' => META_FILTER_ANY), FILTER_PROPERTY_HIDE_STATUS => array('0' => $t_hide_status_default), FILTER_PROPERTY_MONITOR_USER_ID => array('0' => META_FILTER_ANY)); $url_link_parameters['verify'] = FILTER_PROPERTY_REPORTER_ID . '=' . $t_current_user_id . '&' . FILTER_PROPERTY_STATUS . '=' . $t_bug_resolved_status_threshold; $c_filter['my_comments'] = array(FILTER_PROPERTY_CATEGORY_ID => array('0' => META_FILTER_ANY), FILTER_PROPERTY_SEVERITY => array('0' => META_FILTER_ANY), FILTER_PROPERTY_STATUS => array('0' => META_FILTER_ANY), FILTER_PROPERTY_HIGHLIGHT_CHANGED => $t_default_show_changed, FILTER_PROPERTY_REPORTER_ID => array('0' => META_FILTER_ANY), FILTER_PROPERTY_HANDLER_ID => array('0' => META_FILTER_ANY), FILTER_PROPERTY_RESOLUTION => array('0' => META_FILTER_ANY), FILTER_PROPERTY_BUILD => array('0' => META_FILTER_ANY), FILTER_PROPERTY_VERSION => array('0' => META_FILTER_ANY), FILTER_PROPERTY_HIDE_STATUS => array('0' => $t_hide_status_default), FILTER_PROPERTY_MONITOR_USER_ID => array('0' => META_FILTER_ANY), FILTER_PROPERTY_NOTE_USER_ID => array('0' => META_FILTER_MYSELF)); $url_link_parameters['my_comments'] = FILTER_PROPERTY_NOTE_USER_ID . '=' . META_FILTER_MYSELF . '&' . FILTER_PROPERTY_HIDE_STATUS . '=' . $t_hide_status_default; $rows = filter_get_bug_rows($f_page_number, $t_per_page, $t_page_count, $t_bug_count, $c_filter[$t_box_title]); # Improve performance by caching category data in one pass if (helper_get_current_project() == 0) { $t_categories = array(); foreach ($rows as $t_row) { $t_categories[] = $t_row->category_id; } category_cache_array_rows(array_unique($t_categories));