/**
 * 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;
}
Example #2
0
$t_filter = current_user_get_bug_filter();
if ($t_filter === false) {
    $t_filter = filter_get_default();
}
$t_sort = $t_filter['sort'];
$t_dir = $t_filter['dir'];
$t_icon_path = config_get('icon_path');
$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]);