本文整理汇总了PHP中Group::getAssocList方法的典型用法代码示例。如果您正苦于以下问题:PHP Group::getAssocList方法的具体用法?PHP Group::getAssocList怎么用?PHP Group::getAssocList使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Group
的用法示例。
在下文中一共展示了Group::getAssocList方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getColumnsToDisplay
/**
* Returns the columns that should be displayed for the specified page.
* This method will remove columns that should not be displayed, due to
* lack of customer integration or insufficient role.
*
* @param integer $prj_id The ID of the project.
* @param string $page The page to return columns for.
* @return array An array of columns that should be displayed.
*/
public static function getColumnsToDisplay($prj_id, $page)
{
static $returns;
// poor man's caching system
if (!empty($returns[$prj_id][$page])) {
return $returns[$prj_id][$page];
}
$current_role = Auth::getCurrentRole();
$data = self::getSelectedColumns($prj_id, $page);
$has_customer_integration = CRM::hasCustomerIntegration($prj_id);
$only_with_customers = array('iss_customer_id', 'support_level');
// remove groups if there are no groups in the system.
if (count(Group::getAssocList($prj_id)) < 1) {
unset($data['iss_grp_id']);
}
// remove category column if there are no categories in the system
if (count(Category::getAssocList($prj_id)) < 1) {
unset($data['prc_title']);
}
// remove custom fields column if there are no custom fields
if (count(Custom_Field::getFieldsToBeListed($prj_id)) < 1) {
unset($data['custom_fields']);
}
// remove customer field if user has a role of customer
if ($current_role == User::getRoleID('Customer')) {
unset($data['iss_customer_id']);
}
foreach ($data as $field => $info) {
// remove fields based on role
if ($info['min_role'] > $current_role) {
unset($data[$field]);
continue;
}
// remove fields based on customer integration
if (!$has_customer_integration && in_array($field, $only_with_customers)) {
unset($data[$field]);
continue;
}
// get title
$data[$field] = self::getColumnInfo($page, $field);
if (!isset($data[$field]['width'])) {
$data[$field]['width'] = '';
}
}
$returns[$prj_id][$page] = $data;
return $data;
}
示例2: catch
if (count($item) == 1) {
$email_details = Support::getEmailDetails(Email_Account::getAccountByEmail($item[0]), $item[0]);
$tpl->assign(array('issue_summary' => $email_details['sup_subject'], 'issue_description' => $email_details['seb_body']));
// also auto pre-fill the customer contact text fields
if (CRM::hasCustomerIntegration($prj_id)) {
$sender_email = Mail_Helper::getEmailAddress($email_details['sup_from']);
try {
$contact = $crm->getContactByEmail($sender_email);
$tpl->assign('contact_details', $contact->getDetails());
} catch (CRMException $e) {
}
}
}
}
}
$tpl->assign(array('cats' => Category::getAssocList($prj_id), 'priorities' => Priority::getAssocList($prj_id), 'severities' => Severity::getList($prj_id), 'users' => Project::getUserAssocList($prj_id, 'active', User::getRoleID('Customer')), 'releases' => Release::getAssocList($prj_id), 'custom_fields' => Custom_Field::getListByProject($prj_id, 'report_form'), 'max_attachment_size' => Attachment::getMaxAttachmentSize(), 'max_attachment_bytes' => Attachment::getMaxAttachmentSize(true), 'field_display_settings' => Project::getFieldDisplaySettings($prj_id), 'groups' => Group::getAssocList($prj_id), 'products' => Product::getList(false)));
$prefs = Prefs::get($usr_id);
$tpl->assign('user_prefs', $prefs);
$tpl->assign('zones', Date_Helper::getTimezoneList());
if (Auth::getCurrentRole() == User::getRoleID('Customer')) {
$crm = CRM::getInstance(Auth::getCurrentProject());
$customer_contact_id = User::getCustomerContactID($usr_id);
$contact = $crm->getContact($customer_contact_id);
$customer_id = Auth::getCurrentCustomerID();
$customer = $crm->getCustomer($customer_id);
// TODOCRM: Pull contacts via ajax when user selects contract
$tpl->assign(array('customer_id' => $customer_id, 'contact_id' => $customer_contact_id, 'customer' => $customer, 'contact' => $contact));
}
$clone_iss_id = isset($_GET['clone_iss_id']) ? (int) $_GET['clone_iss_id'] : null;
if ($clone_iss_id && Access::canCloneIssue($clone_iss_id, $usr_id)) {
$tpl->assign(Issue::getCloneIssueTemplateVariables($clone_iss_id));
示例3: elseif
}
$tpl->assign('info', $info);
}
if (!empty($_GET['field'])) {
$field_title = Reminder_Condition::getFieldTitle($_GET['field']);
if (Reminder_Condition::canFieldBeCompared($_GET['field'])) {
$tpl->assign(array('show_field_options' => 'yes', 'comparable_fields' => Reminder_Condition::getFieldAdminList(true)));
} elseif (strtolower($field_title) == 'status') {
$prj_id = Reminder::getProjectID($rem_id);
$tpl->assign(array('show_status_options' => 'yes', 'statuses' => Status::getAssocStatusList($prj_id)));
} elseif (strtolower($field_title) == 'category') {
$prj_id = Reminder::getProjectID($rem_id);
$tpl->assign(array('show_category_options' => 'yes', 'categories' => Category::getAssocList($prj_id)));
} elseif (strtolower($field_title) == 'group' || strtolower($field_title) == 'active group') {
$prj_id = Reminder::getProjectID($rem_id);
$tpl->assign(array('show_group_options' => 'yes', 'groups' => Group::getAssocList($prj_id)));
} else {
$tpl->assign('show_status_options', 'no');
}
if (@$_GET['cat'] != 'edit') {
$tpl->assign('info', array('rlc_rmf_id' => $_GET['field'], 'rlc_rmo_id' => '', 'rlc_value' => ''));
}
}
$tpl->assign('rem_id', $rem_id);
$tpl->assign('rma_id', $rma_id);
$tpl->assign('rem_title', Reminder::getTitle($rem_id));
$tpl->assign('rma_title', Reminder_Action::getTitle($rma_id));
$tpl->assign('fields', Reminder_Condition::getFieldAdminList());
$tpl->assign('operators', Reminder_Condition::getOperatorAdminList());
$tpl->assign('list', Reminder_Condition::getAdminList($rma_id));
$tpl->displayTemplate();
示例4: getListing
//.........这里部分代码省略.........
$sort_by = 'cf_sort.' . Custom_Field::getDBValueFieldNameByType($fld_details['fld_type']);
} else {
$sort_by = Misc::escapeString($options['sort_by']);
}
$stmt .= '
GROUP BY
iss_id
ORDER BY
' . $sort_by . ' ' . Misc::escapeString($options['sort_order']) . ',
iss_id DESC';
$total_rows = Pager::getTotalRows($stmt);
$stmt .= '
LIMIT
' . Misc::escapeInteger($max) . ' OFFSET ' . Misc::escapeInteger($start);
try {
$res = DB_Helper::getInstance()->getAll($stmt);
} catch (DbException $e) {
return array('list' => null, 'info' => null, 'csv' => null);
}
if (count($res) > 0) {
Issue::getAssignedUsersByIssues($res);
Time_Tracking::fillTimeSpentByIssues($res);
// need to get the customer titles for all of these issues...
if (CRM::hasCustomerIntegration($prj_id)) {
$crm = CRM::getInstance($prj_id);
$crm->processListIssuesResult($res);
}
Issue::formatLastActionDates($res);
Issue::getLastStatusChangeDates($prj_id, $res);
} elseif ($current_row > 0) {
// if there are no results, and the page is not the first page reset page to one and reload results
Auth::redirect("list.php?pagerRow=0&rows={$max}");
}
$groups = Group::getAssocList($prj_id);
$categories = Category::getAssocList($prj_id);
$column_headings = array();
$columns_to_display = Display_Column::getColumnsToDisplay($prj_id, 'list_issues');
foreach ($columns_to_display as $col_key => $column) {
if ($col_key == 'custom_fields' && count($custom_fields) > 0) {
foreach ($custom_fields as $fld_id => $fld_title) {
$column_headings['cstm_' . $fld_id] = $fld_title;
}
} else {
$column_headings[$col_key] = $column['title'];
}
}
$csv[] = @implode("\t", $column_headings);
if (@$options['hide_excerpts'] != 1 && self::doesBackendSupportExcerpts() == true) {
$excerpts = self::getFullTextExcerpts();
}
foreach ($res as &$row) {
$issue_id = $row['iss_id'];
$row['time_spent'] = Misc::getFormattedTime($row['time_spent']);
$row['iss_created_date'] = Date_Helper::getFormattedDate($row['iss_created_date']);
$row['iss_expected_resolution_date'] = Date_Helper::getSimpleDate($row['iss_expected_resolution_date'], false);
$row['excerpts'] = isset($excerpts[$issue_id]) ? $excerpts[$issue_id] : '';
$fields = array();
foreach (array_keys($columns_to_display) as $col_key) {
switch ($col_key) {
case 'pri_rank':
$col_key = 'pri_title';
break;
case 'assigned':
$col_key = 'assigned_users';
break;
case 'sta_rank':
示例5: date
$tpl->setTemplate('reports/stalled_issues.tpl.html');
Auth::checkAuthentication();
if (!Access::canAccessReports(Auth::getUserID())) {
echo 'Invalid role';
exit;
}
$prj_id = Auth::getCurrentProject();
if (count(@$_REQUEST['before']) < 1) {
$before = date('Y-m-d', time() - Date_Helper::MONTH);
} else {
$before = implode('-', $_REQUEST['before']);
}
if (count(@$_REQUEST['after']) < 1) {
$after = date('Y-m-d', time() - Date_Helper::YEAR);
} else {
$after = implode('-', $_REQUEST['after']);
}
if (empty($_REQUEST['sort_order'])) {
$_REQUEST['sort_order'] = 'ASC';
}
$data = Report::getStalledIssuesByUser($prj_id, @$_REQUEST['developers'], @$_REQUEST['status'], $before, $after, $_REQUEST['sort_order']);
$groups = Group::getAssocList($prj_id);
$assign_options = array();
if (count($groups) > 0 && Auth::getCurrentRole() > User::ROLE_CUSTOMER) {
foreach ($groups as $grp_id => $grp_name) {
$assign_options["grp:{$grp_id}"] = 'Group: ' . $grp_name;
}
}
$assign_options += Project::getUserAssocList($prj_id, 'active', User::ROLE_USER);
$tpl->assign(array('users' => $assign_options, 'before_date' => $before, 'after_date' => $after, 'data' => $data, 'developers' => @$_REQUEST['developers'], 'status_list' => Status::getAssocStatusList($prj_id), 'status' => @$_REQUEST['status'], 'sort_order' => $_REQUEST['sort_order']));
$tpl->displayTemplate();
示例6: array
if (!isset($issue_fields_display['percent_complete']) || $issue_fields_display['percent_complete'] != false) {
$columns[0][] = array('title' => ev_gettext('Percentage Complete'), 'data' => (empty($details['iss_percent_complete']) ? 0 : $details['iss_percent_complete']) . '%', 'field' => 'percentage_complete');
}
$columns[0][] = array('title' => ev_gettext('Reporter'), 'field' => 'reporter');
$products = Product::getAssocList(false);
if (count($products) > 0) {
$columns[0][] = array('title' => ev_gettext('Product'), 'field' => 'product');
$columns[0][] = array('title' => ev_gettext('Product Version'), 'field' => 'product_version');
}
$columns[0][] = array('title' => ev_gettext('Assignment'), 'data' => $details['assignments'], 'field' => 'assignment');
$columns[1][] = array('title' => ev_gettext('Notification List'), 'field' => 'notification_list');
$columns[1][] = array('title' => ev_gettext('Submitted Date'), 'data' => $details['iss_created_date']);
$columns[1][] = array('title' => ev_gettext('Last Updated Date'), 'data' => $details['iss_updated_date']);
$columns[1][] = array('title' => ev_gettext('Associated Issues'), 'field' => 'associated_issues');
if (!isset($issue_fields_display['expected_resolution']) || $issue_fields_display['expected_resolution'] != false) {
$columns[1][] = array('title' => ev_gettext('Expected Resolution Date'), 'field' => 'expected_resolution');
}
if (!isset($issue_fields_display['estimated_dev_time']) || $issue_fields_display['estimated_dev_time'] != false) {
$columns[1][] = array('title' => ev_gettext('Estimated Dev. Time'), 'data' => $details['iss_dev_time'] . empty($details['iss_dev_time']) ? '' : ' hours', 'field' => 'estimated_dev_time');
}
if ($role_id > User::getRoleID('Customer')) {
$columns[1][] = array('title' => ev_gettext('Duplicates'), 'field' => 'duplicates', 'title_bgcolor' => APP_INTERNAL_COLOR);
$columns[1][] = array('title' => ev_gettext('Authorized Repliers'), 'field' => 'authorized_repliers', 'title_bgcolor' => APP_INTERNAL_COLOR);
}
$groups = Group::getAssocList($prj_id);
if ($role_id > User::getRoleID('Customer') && count($groups) > 0) {
$columns[1][] = array('title' => ev_gettext('Group'), 'data' => isset($details['group']) ? $details['group']['grp_name'] : '', 'title_bgcolor' => APP_INTERNAL_COLOR);
}
$tpl->assign(array('subscribers' => Notification::getSubscribers($issue_id), 'categories' => $categories, 'priorities' => $priorities, 'severities' => $severities, 'status' => $statuses, 'releases' => $releases, 'resolutions' => Resolution::getAssocList(), 'users' => Project::getUserAssocList($prj_id, 'active', User::getRoleID('Customer')), 'one_week_ts' => time() + 7 * Date_Helper::DAY, 'groups' => Group::getAssocList($prj_id), 'current_year' => date('Y'), 'products' => Product::getList(false), 'grid' => $columns));
$tpl->assign('usr_role_id', User::getRoleByUser($usr_id, $prj_id));
$tpl->displayTemplate();
示例7:
$show_category = 0;
}
$cookie = Auth::getCookieInfo(APP_PROJECT_COOKIE);
if (!empty($auto_switched_from)) {
$tpl->assign(array("project_auto_switched" => 1, "old_project" => Project::getName($auto_switched_from)));
}
$setup = Setup::load();
$tpl->assign("allow_unassigned_issues", @$setup["allow_unassigned_issues"]);
$tpl->assign(array('next_issue' => @$sides['next'], 'previous_issue' => @$sides['previous'], 'subscribers' => Notification::getSubscribers($issue_id), 'custom_fields' => Custom_Field::getListByIssue($prj_id, $issue_id), 'files' => Attachment::getList($issue_id), 'emails' => Support::getEmailsByIssue($issue_id), 'zones' => Date_API::getTimezoneList(), 'users' => Project::getUserAssocList($prj_id, 'active', User::getRoleID('Customer')), 'ema_id' => Email_Account::getEmailAccount(), 'max_attachment_size' => Attachment::getMaxAttachmentSize(), 'show_releases' => $show_releases, 'show_category' => $show_category, 'categories' => Category::getAssocList($prj_id), 'quarantine' => Issue::getQuarantineInfo($issue_id)));
if ($role_id != User::getRoleID('customer')) {
if (@$_REQUEST['show_all_drafts'] == 1) {
$show_all_drafts = true;
} else {
$show_all_drafts = false;
}
if (Workflow::hasWorkflowIntegration($prj_id)) {
$statuses = Workflow::getAllowedStatuses($prj_id, $issue_id);
// if currently selected release is not on list, go ahead and add it.
} else {
$statuses = Status::getAssocStatusList($prj_id);
}
if (!empty($details['iss_sta_id']) && empty($statuses[$details['iss_sta_id']])) {
$statuses[$details['iss_sta_id']] = Status::getStatusTitle($details['iss_sta_id']);
}
$time_entries = Time_Tracking::getListing($issue_id);
$tpl->assign(array('notes' => Note::getListing($issue_id), 'is_user_assigned' => Issue::isAssignedToUser($issue_id, $usr_id), 'is_user_authorized' => Authorized_Replier::isUserAuthorizedReplier($issue_id, $usr_id), 'phone_entries' => Phone_Support::getListing($issue_id), 'phone_categories' => Phone_Support::getCategoryAssocList($prj_id), 'checkins' => SCM::getCheckinList($issue_id), 'time_categories' => Time_Tracking::getAssocCategories(), 'time_entries' => $time_entries['list'], 'total_time_spent' => $time_entries['total_time_spent'], 'impacts' => Impact_Analysis::getListing($issue_id), 'statuses' => $statuses, 'drafts' => Draft::getList($issue_id, $show_all_drafts), 'groups' => Group::getAssocList($prj_id)));
}
}
}
}
$tpl->displayTemplate();
示例8: getSpecializedHeaders
/**
* Generates the specialized headers for an email.
*
* @access public
* @param integer $issue_id The issue ID
* @param string $type The type of message this is
* @param string $headers The existing headers of this message.
* @param integer $sender_usr_id The id of the user sending this email.
* @return array An array of specialized headers
*/
function getSpecializedHeaders($issue_id, $type, $headers, $sender_usr_id)
{
$new_headers = array();
if (!empty($issue_id)) {
$prj_id = Issue::getProjectID($issue_id);
if (count(Group::getAssocList($prj_id)) > 0) {
// group issue is currently assigned too
$new_headers['X-Eventum-Group-Issue'] = Group::getName(Issue::getGroupID($issue_id));
// group of whoever is sending this message.
if (empty($sender_usr_id)) {
$new_headers['X-Eventum-Group-Replier'] = $new_headers['X-Eventum-Group-Issue'];
} else {
$new_headers['X-Eventum-Group-Replier'] = Group::getName(User::getGroupID($sender_usr_id));
}
// group of current assignee
$assignees = Issue::getAssignedUserIDs($issue_id);
if (empty($assignees[0])) {
$new_headers['X-Eventum-Group-Assignee'] = '';
} else {
$new_headers['X-Eventum-Group-Assignee'] = @Group::getName(User::getGroupID($assignees[0]));
}
}
if (Customer::hasCustomerIntegration($prj_id)) {
if (empty($support_levels)) {
$support_levels = Customer::getSupportLevelAssocList($prj_id);
}
$customer_id = Issue::getCustomerID($issue_id);
if (!empty($customer_id)) {
$customer_details = Customer::getDetails($prj_id, $customer_id);
$new_headers['X-Eventum-Customer'] = $customer_details['customer_name'];
}
if (count($support_levels) > 0) {
$new_headers['X-Eventum-Level'] = $support_levels[Customer::getSupportLevelID($prj_id, $customer_id)];
}
}
$new_headers['X-Eventum-Category'] = Category::getTitle(Issue::getCategory($issue_id));
$new_headers['X-Eventum-Project'] = Project::getName($prj_id);
}
$new_headers['X-Eventum-Type'] = $type;
return $new_headers;
}
示例9: list
}
// if we are dealing with just one message, use the subject line as the
// summary for the issue, and the body as the description
if (count($HTTP_GET_VARS["item"]) == 1) {
$email_details = Support::getEmailDetails(Email_Account::getAccountByEmail($HTTP_GET_VARS["item"][0]), $HTTP_GET_VARS["item"][0]);
$tpl->assign(array('issue_summary' => $email_details['sup_subject'], 'issue_description' => $email_details['message']));
// also auto pre-fill the customer contact text fields
if (Customer::hasCustomerIntegration($prj_id)) {
$sender_email = Mail_API::getEmailAddress($email_details['sup_from']);
list(, $contact_id) = Customer::getCustomerIDByEmails($prj_id, array($sender_email));
if (!empty($contact_id)) {
$tpl->assign("contact_details", Customer::getContactDetails($prj_id, $contact_id));
}
}
}
}
}
$tpl->assign(array("cats" => Category::getAssocList($prj_id), "priorities" => Priority::getAssocList($prj_id), "users" => Project::getUserAssocList($prj_id, 'active', User::getRoleID('Customer')), "releases" => Release::getAssocList($prj_id), "custom_fields" => Custom_Field::getListByProject($prj_id, 'report_form'), "max_attachment_size" => Attachment::getMaxAttachmentSize(), "field_display_settings" => Project::getFieldDisplaySettings($prj_id), "groups" => Group::getAssocList($prj_id)));
$setup = Setup::load();
$tpl->assign("allow_unassigned_issues", @$setup["allow_unassigned_issues"]);
$prefs = Prefs::get($usr_id);
$tpl->assign("user_prefs", $prefs);
$tpl->assign("zones", Date_API::getTimezoneList());
if (User::getRole(Auth::getCurrentRole()) == "Customer") {
$customer_contact_id = User::getCustomerContactID($usr_id);
$tpl->assign("contact_details", Customer::getContactDetails($prj_id, $customer_contact_id));
$customer_id = User::getCustomerID($usr_id);
$tpl->assign("contacts", Customer::getContactEmailAssocList($prj_id, $customer_id));
$tpl->assign(array("customer_id" => User::getCustomerID($usr_id), "contact_id" => User::getCustomerContactID($usr_id)));
}
$tpl->displayTemplate();
示例10: getSpecializedHeaders
/**
* Generates the specialized headers for an email.
*
* @param integer $issue_id The issue ID
* @param string $type The type of message this is
* @param string $headers The existing headers of this message.
* @param integer $sender_usr_id The id of the user sending this email.
* @return array An array of specialized headers
*/
public static function getSpecializedHeaders($issue_id, $type, $headers, $sender_usr_id)
{
$new_headers = array();
if (!empty($issue_id)) {
$prj_id = Issue::getProjectID($issue_id);
if (count(Group::getAssocList($prj_id)) > 0) {
// group issue is currently assigned too
$new_headers['X-Eventum-Group-Issue'] = Group::getName(Issue::getGroupID($issue_id));
// group of whoever is sending this message.
if (empty($sender_usr_id)) {
$new_headers['X-Eventum-Group-Replier'] = $new_headers['X-Eventum-Group-Issue'];
} else {
$new_headers['X-Eventum-Group-Replier'] = Group::getName(User::getGroupID($sender_usr_id));
}
// group of current assignee
$assignees = Issue::getAssignedUserIDs($issue_id);
if (empty($assignees[0])) {
$new_headers['X-Eventum-Group-Assignee'] = '';
} else {
$new_headers['X-Eventum-Group-Assignee'] = @Group::getName(User::getGroupID($assignees[0]));
}
}
if (CRM::hasCustomerIntegration($prj_id)) {
$crm = CRM::getInstance($prj_id);
try {
$customer = $crm->getCustomer(Issue::getCustomerID($issue_id));
$new_headers['X-Eventum-Customer'] = $customer->getName();
} catch (CustomerNotFoundException $e) {
}
try {
$contract = $crm->getContract(Issue::getContractID($issue_id));
$support_level = $contract->getSupportLevel();
if (is_object($support_level)) {
$new_headers['X-Eventum-Level'] = $support_level->getName();
}
} catch (ContractNotFoundException $e) {
}
}
// add assignee header
$new_headers['X-Eventum-Assignee'] = implode(',', User::getEmail(Issue::getAssignedUserIDs($issue_id)));
$new_headers['X-Eventum-Category'] = Category::getTitle(Issue::getCategory($issue_id));
$new_headers['X-Eventum-Project'] = Project::getName($prj_id);
$new_headers['X-Eventum-Priority'] = Priority::getTitle(Issue::getPriority($issue_id));
// handle custom fields
$cf_values = Custom_Field::getValuesByIssue($prj_id, $issue_id);
$cf_titles = Custom_Field::getFieldsToBeListed($prj_id);
foreach ($cf_values as $fld_id => $values) {
// skip empty titles
// TODO: why they are empty?
if (!isset($cf_titles[$fld_id])) {
continue;
}
// skip empty values
if (empty($values)) {
continue;
}
$cf_value = implode(', ', (array) $values);
// value could be empty after multivalued field join
if (empty($cf_value)) {
continue;
}
// convert spaces for header fields
$cf_title = str_replace(' ', '_', $cf_titles[$fld_id]);
$new_headers['X-Eventum-CustomField-' . $cf_title] = $cf_value;
}
}
$new_headers['X-Eventum-Type'] = $type;
return $new_headers;
}
示例11: getListing
/**
* Method used to get the list of issues to be displayed in the grid layout.
*
* @access public
* @param integer $prj_id The current project ID
* @param array $options The search parameters
* @param integer $current_row The current page number
* @param integer $max The maximum number of rows per page
* @return array The list of issues to be displayed
*/
function getListing($prj_id, $options, $current_row = 0, $max = 5, $get_reporter = FALSE)
{
if (strtoupper($max) == "ALL") {
$max = 9999999;
}
$start = $current_row * $max;
// get the current user's role
$usr_id = Auth::getUserID();
$role_id = User::getRoleByUser($usr_id, $prj_id);
// get any custom fields that should be displayed
$custom_fields = Custom_Field::getFieldsToBeListed($prj_id);
$stmt = "SELECT\n iss_id,\n iss_grp_id,\n iss_prj_id,\n iss_sta_id,\n iss_customer_id,\n iss_created_date,\n iss_updated_date,\n iss_last_response_date,\n iss_closed_date,\n iss_last_customer_action_date,\n iss_usr_id,\n iss_summary,\n pri_title,\n prc_title,\n sta_title,\n sta_color status_color,\n sta_id,\n iqu_status,\n grp_name `group`,\n pre_title,\n iss_last_public_action_date,\n iss_last_public_action_type,\n iss_last_internal_action_date,\n iss_last_internal_action_type,\n " . Issue::getLastActionFields() . ",\n IF(iss_last_internal_action_date > iss_last_public_action_date, 'internal', 'public') AS action_type,\n iss_private,\n CONCAT(en_firstname,' ', en_lastname) as usr_full_name,\n iss_percent_complete,\n iss_dev_time,\n iss_expected_resolution_date\n FROM\n (\n " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "issue,\n " . ETEL_USER_TABLE_NOSUB . "";
// join custom fields if we are searching by custom fields
if (is_array($options['custom_field']) && count($options['custom_field']) > 0) {
foreach ($options['custom_field'] as $fld_id => $search_value) {
if (empty($search_value)) {
continue;
}
$field = Custom_Field::getDetails($fld_id);
if ($field['fld_type'] == 'date' && (empty($search_value['Year']) || empty($search_value['Month']) || empty($search_value['Day']))) {
continue;
}
if ($field['fld_type'] == 'multiple') {
$search_value = Misc::escapeInteger($search_value);
foreach ($search_value as $cfo_id) {
$stmt .= ",\n" . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "issue_custom_field as cf" . $fld_id . '_' . $cfo_id . "\n";
}
} else {
$stmt .= ",\n" . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "issue_custom_field as cf" . $fld_id . "\n";
}
}
}
$stmt .= ")";
// check for the custom fields we want to sort by
if (strstr($options['sort_by'], 'custom_field') !== false) {
$fld_id = str_replace("custom_field_", '', $options['sort_by']);
$stmt .= "\n LEFT JOIN \n" . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "issue_custom_field as cf_sort\n ON\n (cf_sort.icf_iss_id = iss_id AND cf_sort.icf_fld_id = {$fld_id}) \n";
}
// START ETEL MODIFIED
if (!empty($options["show_authorized_issues"]) || $role_id <= User::getRoleID("Standard User") && Project::getSegregateReporters($prj_id)) {
$stmt .= "\n LEFT JOIN\n " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "issue_user_replier\n ON\n iur_iss_id=iss_id\n LEFT JOIN\n " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "issue_user\n ON\n isu_iss_id=iss_id";
} else {
if (!empty($options["users"])) {
$stmt .= "\n LEFT JOIN\n " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "issue_user\n ON\n isu_iss_id=iss_id";
}
}
// END ETEL MODIFIED
if (!empty($options["show_notification_list_issues"])) {
$stmt .= "\n LEFT JOIN\n " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "subscription\n ON\n sub_iss_id=iss_id";
}
$stmt .= "\n LEFT JOIN\n " . APP_DEFAULT_DB . ".`" . APP_TABLE_PREFIX . "group`\n ON\n iss_grp_id=grp_id\n LEFT JOIN\n " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "project_category\n ON\n iss_prc_id=prc_id\n LEFT JOIN\n " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "project_release\n ON\n iss_pre_id = pre_id\n LEFT JOIN\n " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "status\n ON\n iss_sta_id=sta_id\n LEFT JOIN\n " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "project_priority\n ON\n iss_pri_id=pri_id\n LEFT JOIN\n " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "issue_quarantine\n ON\n iss_id=iqu_iss_id AND\n (iqu_expiration > '" . Date_API::getCurrentDateGMT() . "' OR iqu_expiration IS NULL)\n WHERE\n iss_prj_id= " . Misc::escapeInteger($prj_id);
$stmt .= Issue::buildWhereClause($options);
//echo $stmt;
if (strstr($options["sort_by"], 'custom_field') !== false) {
$sort_by = 'cf_sort.icf_value';
} else {
$sort_by = Misc::escapeString($options["sort_by"]);
}
$stmt .= "\n GROUP BY\n iss_id\n ORDER BY\n " . $sort_by . " " . Misc::escapeString($options["sort_order"]) . ",\n iss_id DESC";
$total_rows = Pager::getTotalRows($stmt);
if ($max > 100) {
$max = 100;
}
$stmt .= "\n LIMIT\n " . Misc::escapeInteger($start) . ", " . Misc::escapeInteger($max);
$res = $GLOBALS["db_api"]->dbh->getAll($stmt, DB_FETCHMODE_ASSOC);
// echo $stmt;
if (PEAR::isError($res)) {
Error_Handler::logError(array($res->getMessage(), $res->getDebugInfo()), __FILE__, __LINE__);
return array("list" => "", "info" => "");
} else {
if (count($res) > 0) {
if ($get_reporter) {
Issue::getReportersByIssues($res);
}
Issue::getAssignedUsersByIssues($res);
Time_Tracking::getTimeSpentByIssues($res);
// need to get the customer titles for all of these issues...
if (Customer::hasCustomerIntegration($prj_id)) {
Customer::getCustomerTitlesByIssues($prj_id, $res);
}
Issue::formatLastActionDates($res);
Issue::getLastStatusChangeDates($prj_id, $res);
} elseif ($current_row > 0) {
// if there are no results, and the page is not the first page reset page to one and reload results
Auth::redirect(APP_RELATIVE_URL . "list.php?pagerRow=0&rows={$max}");
}
$groups = Group::getAssocList($prj_id);
$categories = Category::getAssocList($prj_id);
$column_headings = Issue::getColumnHeadings($prj_id);
if (count($custom_fields) > 0) {
//.........这里部分代码省略.........
示例12: array
if (@$HTTP_POST_VARS["cat"] == "update") {
$res = Issue::update($HTTP_POST_VARS["issue_id"]);
$tpl->assign("update_result", $res);
if (Issue::hasDuplicates($HTTP_POST_VARS["issue_id"])) {
$tpl->assign("has_duplicates", "yes");
}
}
$prj_id = Auth::getCurrentProject();
$setup = Setup::load();
$tpl->assign("allow_unassigned_issues", @$setup["allow_unassigned_issues"]);
// if currently selected release is in the past, manually add it to list
$releases = Release::getAssocList($prj_id);
if ($details["iss_pre_id"] != 0 && empty($releases[$details["iss_pre_id"]])) {
$releases = array($details["iss_pre_id"] => $details["pre_title"]) + $releases;
}
if (Workflow::hasWorkflowIntegration($prj_id)) {
$statuses = Workflow::getAllowedStatuses($prj_id, $issue_id);
// if currently selected release is not on list, go ahead and add it.
} else {
$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']);
}
$tpl->assign(array("subscribers" => Notification::getSubscribers($issue_id), "categories" => Category::getAssocList($prj_id), "priorities" => Priority::getAssocList($prj_id), "status" => $statuses, "releases" => $releases, "resolutions" => Resolution::getAssocList(), "users" => Project::getUserAssocList($prj_id, 'active', User::getRoleID('Customer')), "assoc_issues" => array_map("htmlspecialchars", array()), "one_week_ts" => time() + 7 * DAY, "allow_unassigned_issues" => @$setup["allow_unassigned_issues"], "groups" => Group::getAssocList($prj_id)));
$cookie = Auth::getCookieInfo(APP_PROJECT_COOKIE);
if (!empty($cookie['auto_switched_from'])) {
$tpl->assign(array("project_auto_switched" => 1, "old_project" => Project::getName($cookie['auto_switched_from'])));
}
}
$tpl->displayTemplate();