/** * Returns an array of active filters * * @param array $options The options array * @return array */ public static function getActiveFilters($options) { $prj_id = Auth::getCurrentProject(); $filter_info = self::getFiltersInfo(); $return = array(); foreach ($filter_info as $filter_key => $filter) { $display = false; if (isset($filter['param']) && isset($options[$filter['param']])) { $filter_details = $options[$filter['param']]; } if (isset($filter['is_custom'])) { // custom fields $fld_id = $filter['fld_id']; if (!isset($options['custom_field'][$fld_id]) || empty($options['custom_field'][$fld_id])) { continue; } elseif ($filter['fld_type'] == 'date' && empty($options['custom_field'][$fld_id]['Year'])) { continue; } elseif ($filter['fld_type'] == 'integer') { if (!isset($options['custom_field'][$fld_id]['value']) || empty($options['custom_field'][$fld_id]['value'])) { continue; } else { $filter_details = $options['custom_field'][$fld_id]; switch ($filter_details['filter_type']) { case 'ge': $display = ev_gettext('%1$s or greater', $filter_details['value']); break; case 'le': $display = ev_gettext('%1$s or less', $filter_details['value']); break; case 'gt': $display = ev_gettext('Greater than %1$s', $filter_details['value']); break; case 'lt': $display = ev_gettext('Less than %1$s', $filter_details['value']); break; default: $display = $filter_details['value']; } } } elseif (in_array($filter['fld_type'], array('multiple', 'combo'))) { $display = implode(', ', Custom_Field::getOptions($fld_id, $options['custom_field'][$fld_id])); } else { $display = $options['custom_field'][$fld_id]; } } elseif (!isset($options[$filter['param']]) || empty($options[$filter['param']]) || in_array($filter_key, array('sort_order', 'sort_by', 'rows', 'search_type'))) { continue; } elseif (isset($filter['is_date']) && $filter['is_date'] == true) { if (!empty($filter_details['Year']) || isset($filter_details['time_period'])) { switch ($filter_details['filter_type']) { case 'in_past': $display = ev_gettext('In Past %1$s hours', $filter_details['time_period']); break; case 'null': $display = ev_gettext('Is NULL'); break; case 'between': $end = $options[$filter['param'] . '_end']; $display = ev_gettext('Is between %1$s-%2$s-%3$s AND %4$s-%5$s-%6$s', $filter_details['Year'], $filter_details['Month'], $filter_details['Day'], $end['Year'], $end['Month'], $end['Day']); break; case 'greater': $display = ev_gettext('Is greater than %1$s-%2$s-%3$s', $filter_details['Year'], $filter_details['Month'], $filter_details['Day']); break; case 'less': $display = ev_gettext('Is less than %1$s-%2$s-%3$s', $filter_details['Year'], $filter_details['Month'], $filter_details['Day']); } } } elseif ($filter['param'] == 'status') { $statuses = Status::getAssocStatusList($prj_id); $display = $statuses[$filter_details]; } elseif ($filter['param'] == 'category') { $categories = Category::getAssocList($prj_id); if (is_array($filter_details)) { $active_categories = array(); foreach ($filter_details as $category) { $active_categories[] = $categories[$category]; } $display = implode(', ', $active_categories); } else { $display = $categories[$filter_details]; } } elseif ($filter['param'] == 'priority') { $priorities = Priority::getAssocList($prj_id); $display = $priorities[$filter_details]; } elseif ($filter['param'] == 'severity') { $severities = Severity::getAssocList($prj_id); $display = $severities[$filter_details]; } elseif ($filter['param'] == 'users') { if ($filter_details == -1) { $display = ev_gettext('un-assigned'); } elseif ($filter_details == -2) { $display = ev_gettext('myself and un-assigned'); } elseif ($filter_details == -3) { $display = ev_gettext('myself and my group'); } elseif ($filter_details == -4) { $display = ev_gettext('myself, un-assigned and my group'); } elseif (substr($filter_details, 0, 3) == 'grp') { $display = ev_gettext('%1$s Group', Group::getName(substr($filter_details, 4))); } else { $display = User::getFullName($filter_details); } } elseif ($filter['param'] == 'hide_closed') { if ($filter_details == true) { $display = ev_gettext('Yes'); } } elseif ($filter['param'] == 'reporter') { $display = User::getFullName($filter_details); } elseif ($filter['param'] == 'release') { $display = Release::getTitle($filter_details); } elseif ($filter['param'] == 'customer_id') { try { $crm = CRM::getInstance($prj_id); $customer = $crm->getCustomer($filter_details); $display = $customer->getName(); } catch (CRMException $e) { $display = $filter_details; } } elseif ($filter['param'] == 'product') { $display = Product::getTitle($filter_details); } else { $display = $filter_details; } if ($display != false) { $return[$filter['title']] = array('value' => $display, 'remove_link' => 'list.php?view=clearandfilter&' . self::buildUrl($filter_info, $options, $filter_key, true)); } } return $return; }
/** * Returns the options associated with a specific field * * @param string $field_name The name of the field * @param integer $issue_id The ID of the issue * @return array An array of options for the specified field */ private static function getOptions($field_name, $issue_id) { $prj_id = Issue::getProjectID($issue_id); switch ($field_name) { case 'assignee': $users = Project::getUserAssocList($prj_id, 'active', User::ROLE_CUSTOMER); $current_assignees = Issue::getAssignedUserIDs($issue_id); foreach ($current_assignees as $usr_id) { if (!isset($users[$usr_id])) { $users[$usr_id] = User::getFullName($usr_id); } asort($users); } return $users; case 'priority': return Priority::getAssocList($prj_id); case 'severity': return Severity::getAssocList($prj_id); } return array(); }
} if (count($groups) > 0 && Auth::getCurrentRole() > User::getRoleID('Customer')) { foreach ($groups as $grp_id => $grp_name) { $assign_options["grp:{$grp_id}"] = ev_gettext('Group') . ': ' . $grp_name; } } $assign_options += $users; $list = Search::getListing($prj_id, $options, $pagerRow, $rows); $tpl->assign('list', $list['list']); $tpl->assign('list_info', $list['info']); $tpl->assign('csv_data', base64_encode(@$list['csv'])); $tpl->assign('match_modes', Search::getMatchModes()); $tpl->assign('supports_excerpts', Search::doesBackendSupportExcerpts()); $tpl->assign('columns', Display_Column::getColumnsToDisplay($prj_id, 'list_issues')); $tpl->assign('priorities', Priority::getAssocList($prj_id)); $tpl->assign('severities', Severity::getAssocList($prj_id)); $tpl->assign('status', Status::getAssocStatusList($prj_id)); $tpl->assign('assign_options', $assign_options); $tpl->assign('custom', Filter::getAssocList($prj_id)); $tpl->assign('csts', Filter::getListing(true)); $tpl->assign('active_filters', Filter::getActiveFilters($options)); $tpl->assign('categories', Category::getAssocList($prj_id)); $tpl->assign('releases', Release::getAssocList($prj_id, true)); $tpl->assign('reporters', Project::getReporters($prj_id)); $tpl->assign(array('products' => Product::getAssocList(false))); $prefs = Prefs::get($usr_id); $tpl->assign('refresh_rate', $prefs['list_refresh_rate'] * 60); $tpl->assign('refresh_page', 'list.php'); // items needed for bulk update tool if (Auth::getCurrentRole() > User::getRoleID('Developer')) { $tpl->assign('users', $users);
$statuses = Status::getAssocStatusList($prj_id, false); } if (!empty($details['iss_sta_id']) && empty($statuses[$details['iss_sta_id']])) { $statuses[$details['iss_sta_id']] = Status::getStatusTitle($details['iss_sta_id']); } $columns = array(0 => array(), 1 => array()); if (CRM::hasCustomerIntegration($prj_id) and !empty($details['iss_customer_id'])) { $columns[0][] = array('title' => 'Customer', 'field' => 'customer_0'); $columns[1][] = array('title' => 'Customer Contract', 'field' => 'customer_1'); } $categories = Category::getAssocList($prj_id); if (count($categories) > 0) { $columns[0][] = array('title' => ev_gettext('Category'), 'data' => $details['prc_title'], 'field' => 'category'); } $columns[0][] = array('title' => ev_gettext('Status'), 'data' => $details['sta_title'], 'data_bgcolor' => $details['status_color'], 'field' => 'status'); $severities = Severity::getAssocList($prj_id); if (count($severities) > 0) { $columns[0][] = array('title' => ev_gettext('Severity'), 'data' => $details['sev_title'], 'field' => 'severity'); } $priorities = Priority::getAssocList($prj_id); if (count($priorities) > 0 && (!isset($issue_fields_display['priority']) || $issue_fields_display['priority'] != false)) { if (isset($issue_fields_display['priority']['min_role']) && $issue_fields_display['priority']['min_role'] > User::getRoleID('Customer')) { $bgcolor = APP_INTERNAL_COLOR; } else { $bgcolor = ''; } $columns[0][] = array('title' => ev_gettext('Priority'), 'data' => $details['pri_title'], 'title_bgcolor' => $bgcolor, 'field' => 'priority'); } $releases = Release::getAssocList($prj_id); if (count($releases) > 0 && $role_id != User::getRoleID('Customer')) { $columns[0][] = array('title' => ev_gettext('Scheduled Release'), 'data' => $details['pre_title'], 'title_bgcolor' => APP_INTERNAL_COLOR);
// wouldn't make much sense to create a reminder for a 'Not Prioritized' // issue, so let's remove that as an option $priorities = array_flip(Priority::getAssocList($info['rem_prj_id'])); unset($priorities['Not Prioritized']); $tpl->assign('priorities', array_flip($priorities)); $tpl->assign('severities', Severity::getAssocList($info['rem_prj_id'])); $tpl->assign('products', Product::getAssocList()); } elseif (@$_GET['cat'] == 'change_rank') { Reminder::changeRank($_GET['id'], $_GET['rank']); } elseif (!empty($_GET['prj_id'])) { $tpl->assign('info', array('rem_prj_id' => $_GET['prj_id'])); $tpl->assign('issues', Reminder::getIssueAssocListByProject($_GET['prj_id'])); // wouldn't make much sense to create a reminder for a 'Not Prioritized' // issue, so let's remove that as an option $priorities = array_flip(Priority::getAssocList($_GET['prj_id'])); unset($priorities['Not Prioritized']); $tpl->assign('priorities', array_flip($priorities)); $tpl->assign('severities', Severity::getAssocList($_GET['prj_id'])); $tpl->assign('products', Product::getAssocList()); // only show customers and support levels if the selected project really needs it $project_has_customer_integration = CRM::hasCustomerIntegration($_GET['prj_id']); $tpl->assign('project_has_customer_integration', $project_has_customer_integration); if ($project_has_customer_integration) { $crm = CRM::getInstance($_GET['prj_id']); $tpl->assign('customers', $crm->getCustomerAssocList()); $tpl->assign('support_levels', $crm->getSupportLevelAssocList()); } } $tpl->assign('project_list', Project::getAll()); $tpl->assign('list', Reminder::getAdminList()); $tpl->displayTemplate();