/** * Initialise bug action group api * @param string $p_action Custom action to run. * @return void */ function bug_group_action_init($p_action) { $t_valid_actions = bug_group_action_get_commands(current_user_get_accessible_projects()); $t_action = strtoupper($p_action); if (!isset($t_valid_actions[$t_action]) && !isset($t_valid_actions['EXT_' . $t_action])) { trigger_error(ERROR_GENERIC, ERROR); } $t_include_file = config_get_global('absolute_path') . 'bug_actiongroup_' . $p_action . '_inc.php'; if (!file_exists($t_include_file)) { trigger_error(ERROR_GENERIC, ERROR); } else { require_once $t_include_file; } }
/** * List projects that the current user has access to. * * @param integer $p_project_id The current project id or null to use cookie. * @param bool $p_include_all_projects true: include "All Projects", otherwise false. * @param mixed $p_filter_project_id The id of a project to exclude or null. * @param string $p_trace The current project trace, identifies the sub-project via a path from top to bottom. * @return void */ function print_project_option_list($p_project_id = null, $p_include_all_projects = true, $p_filter_project_id = null, $p_trace = false) { $t_project_ids = current_user_get_accessible_projects(); project_cache_array_rows($t_project_ids); if ($p_include_all_projects) { echo '<option value="' . ALL_PROJECTS . '"'; if ($p_project_id !== null) { check_selected((int) $p_project_id, ALL_PROJECTS); } echo '>' . lang_get('all_projects') . '</option>' . "\n"; } $t_project_count = count($t_project_ids); for ($i = 0; $i < $t_project_count; $i++) { $t_id = $t_project_ids[$i]; if ($t_id != $p_filter_project_id) { echo '<option value="' . $t_id . '"'; if ($p_project_id !== null) { check_selected((int) $p_project_id, $t_id); } echo '>' . string_attribute(project_get_field($t_id, 'name')) . '</option>' . "\n"; print_subproject_option_list($t_id, $p_project_id, $p_filter_project_id, $p_trace, array()); } } }
/** * MantisBT Core API's */ require_once 'core.php'; require_api('authentication_api.php'); require_api('constant_inc.php'); require_api('current_user_api.php'); require_api('gpc_api.php'); require_api('html_api.php'); require_api('lang_api.php'); require_api('print_api.php'); require_api('string_api.php'); auth_ensure_user_authenticated(); $f_ref = string_sanitize_url(gpc_get_string('ref', '')); if (count(current_user_get_accessible_projects()) == 1) { $t_project_ids = current_user_get_accessible_projects(); $t_project_id = (int) $t_project_ids[0]; if (count(current_user_get_accessible_subprojects($t_project_id)) == 0) { $t_ref_urlencoded = string_url($f_ref); print_header_redirect("set_project.php?project_id={$t_project_id}&ref={$t_ref_urlencoded}", true); /* print_header_redirect terminates script execution */ } } html_page_top(lang_get('select_project_button')); ?> <!-- Project Select Form BEGIN --> <div id="select-project-div" class="form-container"> <form id="select-project-form" method="post" action="set_project.php"> <?php # CSRF protection not required here - form does not result in modifications
function print_extended_project_browser($p_trace = array(), $p_project_id = null) { project_cache_all(); $t_project_ids = current_user_get_accessible_projects(); echo '<script type="text/javascript" language="JavaScript">' . "\n"; echo "<!--\n"; echo "var subprojects = new Object();\n"; echo 'function unescapeHTML(html) {' . "\n"; echo ' var htmlNode = document.createElement("DIV");' . "\n"; echo ' htmlNode.innerHTML = html;' . "\n"; echo ' if(htmlNode.innerText)' . "\n"; echo ' return htmlNode.innerText; // IE' . "\n"; echo ' return htmlNode.textContent; // FF' . "\n"; echo '} ' . "\n"; $t_projects = array(); $t_project_count = count($t_project_ids); for ($i = 0; $i < $t_project_count; $i++) { $t_id = $t_project_ids[$i]; echo 'subprojects[\'' . $t_id . '\'] = new Object();' . "\n"; $t_name = project_get_field($t_id, 'name'); $c_name = addslashes(str_replace(array("\r", "\n"), '', $t_name)); echo 'subprojects[\'' . $t_id . '\'][\'' . $t_id . '\'] = \'' . $c_name . '\';' . "\n"; $t_projects[$t_id] = $t_name; print_extended_project_browser_subproject_javascript($t_id); } echo "\n"; echo 'function setProject(projectVal) {' . "\n"; echo "\t" . 'var spInput = document.form_set_project.project_id;' . "\n"; echo "\t" . 'spInput.options.length = 0' . "\n"; echo "\t" . 'if (projectVal == "' . ALL_PROJECTS . '") {' . "\n"; echo "\t\t" . 'spInput.options[0] = new Option(\'' . lang_get('all_projects') . '\', \'' . ALL_PROJECTS . '\');' . "\n"; echo "\t" . '} else {' . "\n"; echo "\t\t" . 'var i = 0;' . "\n"; echo "\t\t" . 'var project = subprojects[ projectVal ];' . "\n"; echo "\t\t" . 'for ( var sp in project ) {' . "\n"; echo "\t\t\t" . 'spInput.options[ i++ ] = new Option( unescapeHTML(project[sp]), sp );' . "\n"; echo "\t\t" . '}' . "\n"; echo "\t" . '}' . "\n"; echo '}' . "\n"; echo '// --></script>' . "\n"; echo '<select name="top_id" onChange="setProject(this.value); document.form_set_project.submit()" class="small">' . "\n"; echo '<option value="' . ALL_PROJECTS . '"'; echo check_selected($p_project_id, ALL_PROJECTS); echo '>' . lang_get('all_projects') . '</option>' . "\n"; foreach ($t_projects as $t_id => $t_name) { $c_name = string_attribute($t_name); echo '<option value="' . $t_id . '"'; echo check_selected($p_project_id, $t_id); echo '>' . $c_name . '</option>' . "\n"; } echo '</select>' . "\n"; if (0 === count($p_trace)) { $t_top_id = ALL_PROJECTS; } else { $t_top_id = $p_trace[0]; $t_trace_str = join(';', $p_trace); } echo '<select name="project_id" onChange="document.form_set_project.submit()" class="small-subprojects"></select>' . "\n"; echo '<script type="text/javascript" language="JavaScript">' . "\n"; echo '<!--' . "\n"; echo 'document.form_set_project.top_id.value = \'' . $t_top_id . '\';' . "\n"; echo 'setProject(' . $t_top_id . ');' . "\n"; echo 'document.form_set_project.project_id.value = \'' . $t_trace_str . '\';' . "\n"; echo '// --></script>' . "\n"; }
/** * Display html form to edit account preferences * * @param integer $p_user_id A valid user identifier. * @param boolean $p_error_if_protected Whether to error if the account is protected. * @param boolean $p_accounts_menu Display account preferences menu. * @param string $p_redirect_url Redirect URI. * @return void */ function edit_account_prefs($p_user_id = null, $p_error_if_protected = true, $p_accounts_menu = true, $p_redirect_url = '') { if (null === $p_user_id) { $p_user_id = auth_get_current_user_id(); } $t_redirect_url = $p_redirect_url; if (is_blank($t_redirect_url)) { $t_redirect_url = 'account_prefs_page.php'; } # protected account check if (user_is_protected($p_user_id)) { if ($p_error_if_protected) { trigger_error(ERROR_PROTECTED_ACCOUNT, ERROR); } else { return; } } $t_pref = user_pref_get($p_user_id); # Account Preferences Form BEGIN ?> <div id="account-prefs-update-div" class="form-container"> <form id="account-prefs-update-form" method="post" action="account_prefs_update.php"> <fieldset> <legend><span><?php echo lang_get('default_account_preferences_title'); ?> </span></legend> <?php echo form_security_field('account_prefs_update'); ?> <input type="hidden" name="user_id" value="<?php echo $p_user_id; ?> " /> <input type="hidden" name="redirect_url" value="<?php echo $t_redirect_url; ?> " /> <?php if ($p_accounts_menu) { print_account_menu('account_prefs_page.php'); } ?> <div class="field-container"> <label for="default-project-id"><span><?php echo lang_get('default_project'); ?> </span></label> <span class="select"> <select id="default-project-id" name="default_project"> <?php # Count number of available projects $t_projects = current_user_get_accessible_projects(); $t_num_proj = count($t_projects); if ($t_num_proj == 1) { $t_num_proj += count(current_user_get_accessible_subprojects($t_projects[0])); } # Don't display "All projects" in selection list if there is only 1 print_project_option_list((int) $t_pref->default_project, $t_num_proj != 1); ?> </select> </span> <span class="label-style"></span> </div> <div class="field-container"> <label for="refresh-delay"><span><?php echo lang_get('refresh_delay'); ?> </span></label> <span class="input"><input id="refresh-delay" type="text" name="refresh_delay" size="4" maxlength="4" value="<?php echo $t_pref->refresh_delay; ?> " /> <?php echo lang_get('minutes'); ?> </span> <span class="label-style"></span> </div> <div class="field-container"> <label for="redirect-delay"><span><?php echo lang_get('redirect_delay'); ?> </span></label> <span class="input"><input id="redirect-delay" type="text" name="redirect_delay" size="4" maxlength="3" value="<?php echo $t_pref->redirect_delay; ?> " /> <?php echo lang_get('seconds'); ?> </span> <span class="label-style"></span> </div> <fieldset class="field-container"> <legend><span><?php echo lang_get('bugnote_order'); ?> </span></legend> <span class="radio"><input id="bugnote-order-desc" type="radio" name="bugnote_order" value="DESC" <?php check_checked($t_pref->bugnote_order, 'DESC'); ?> /></span> <label for="bugnote-order-desc"><span><?php echo lang_get('bugnote_order_desc'); ?> </span></label> <span class="radio"><input id="bugnote-order-asc" type="radio" name="bugnote_order" value="ASC" <?php check_checked($t_pref->bugnote_order, 'ASC'); ?> /></span> <label for="bugnote-order-asc"><span><?php echo lang_get('bugnote_order_asc'); ?> </span></label> <span class="label-style"></span> </fieldset> <?php if (ON == config_get('enable_email_notification')) { ?> <fieldset class="field-container"> <legend><label for="email-on-new"><?php echo lang_get('email_on_new'); ?> </label></legend> <span class="checkbox"><input id="email-on-new" type="checkbox" name="email_on_new" <?php check_checked((int) $t_pref->email_on_new, ON); ?> /></span> <label for="email-on-new-min-severity" class="email-on-severity-label"><span><?php echo lang_get('with_minimum_severity'); ?> </span></label> <span class="select email-on-severity"> <select id="email-on-new-min-severity" name="email_on_new_min_severity"> <option value="<?php echo OFF; ?> "><?php echo lang_get('any'); ?> </option> <option disabled="disabled">-----</option> <?php print_enum_string_option_list('severity', (int) $t_pref->email_on_new_min_severity); ?> </select> </span> <span class="label-style"></span> </fieldset> <fieldset class="field-container"> <legend><label for="email-on-assigned"><?php echo lang_get('email_on_assigned'); ?> </label></legend> <span class="checkbox"><input id="email-on-assigned" type="checkbox" name="email_on_assigned" <?php check_checked((int) $t_pref->email_on_assigned, ON); ?> /></span> <label for="email-on-assigned-min-severity" class="email-on-severity-label"><span><?php echo lang_get('with_minimum_severity'); ?> </span></label> <span class="select email-on-severity"> <select id="email-on-assigned-min-severity" name="email_on_assigned_min_severity"> <option value="<?php echo OFF; ?> "><?php echo lang_get('any'); ?> </option> <option disabled="disabled">-----</option> <?php print_enum_string_option_list('severity', (int) $t_pref->email_on_assigned_min_severity); ?> </select> </span> <span class="label-style"></span> </fieldset> <fieldset class="field-container"> <legend><label for="email-on-feedback"><?php echo lang_get('email_on_feedback'); ?> </label></legend> <span class="checkbox"><input id="email-on-feedback" type="checkbox" name="email_on_feedback" <?php check_checked((int) $t_pref->email_on_feedback, ON); ?> /></span> <label for="email-on-feedback-min-severity" class="email-on-severity-label"><span><?php echo lang_get('with_minimum_severity'); ?> </span></label> <span class="select email-on-severity"> <select id="email-on-feedback-min-severity" name="email_on_feedback_min_severity"> <option value="<?php echo OFF; ?> "><?php echo lang_get('any'); ?> </option> <option disabled="disabled">-----</option> <?php print_enum_string_option_list('severity', (int) $t_pref->email_on_feedback_min_severity); ?> </select> </span> <span class="label-style"></span> </fieldset> <fieldset class="field-container"> <legend><label for="email-on-resolved"><?php echo lang_get('email_on_resolved'); ?> </label></legend> <span class="checkbox"><input id="email-on-resolved" type="checkbox" name="email_on_resolved" <?php check_checked((int) $t_pref->email_on_resolved, ON); ?> /></span> <label for="email-on-resolved-min-severity" class="email-on-severity-label"><span><?php echo lang_get('with_minimum_severity'); ?> </span></label> <span class="select email-on-severity"> <select id="email-on-resolved-min-severity" name="email_on_resolved_min_severity"> <option value="<?php echo OFF; ?> "><?php echo lang_get('any'); ?> </option> <option disabled="disabled">-----</option> <?php print_enum_string_option_list('severity', (int) $t_pref->email_on_resolved_min_severity); ?> </select> </span> <span class="label-style"></span> </fieldset> <fieldset class="field-container"> <legend><label for="email-on-closed"><?php echo lang_get('email_on_closed'); ?> </label></legend> <span class="checkbox"><input id="email-on-closed" type="checkbox" name="email_on_closed" <?php check_checked((int) $t_pref->email_on_closed, ON); ?> /></span> <label for="email-on-closed-min-severity" class="email-on-severity-label"><span><?php echo lang_get('with_minimum_severity'); ?> </span></label> <span class="select email-on-severity"> <select id="email-on-closed-min-severity" name="email_on_closed_min_severity"> <option value="<?php echo OFF; ?> "><?php echo lang_get('any'); ?> </option> <option disabled="disabled">-----</option> <?php print_enum_string_option_list('severity', (int) $t_pref->email_on_closed_min_severity); ?> </select> </span> <span class="label-style"></span> </fieldset> <fieldset class="field-container"> <legend><label for="email-on-reopened"><?php echo lang_get('email_on_reopened'); ?> </label></legend> <span class="checkbox"><input id="email-on-reopened" type="checkbox" name="email_on_reopened" <?php check_checked((int) $t_pref->email_on_reopened, ON); ?> /></span> <label for="email-on-reopened-min-severity" class="email-on-severity-label"><span><?php echo lang_get('with_minimum_severity'); ?> </span></label> <span class="select email-on-severity"> <select id="email-on-reopened-min-severity" name="email_on_reopened_min_severity"> <option value="<?php echo OFF; ?> "><?php echo lang_get('any'); ?> </option> <option disabled="disabled">-----</option> <?php print_enum_string_option_list('severity', (int) $t_pref->email_on_reopened_min_severity); ?> </select> </span> <span class="label-style"></span> </fieldset> <fieldset class="field-container"> <legend><label for="email-on-bugnote-added"><?php echo lang_get('email_on_bugnote_added'); ?> </label></legend> <span class="checkbox"><input id="email-on-bugnote-added" type="checkbox" name="email_on_bugnote" <?php check_checked((int) $t_pref->email_on_bugnote, ON); ?> /></span> <label for="email-on-bugnote-min-severity" class="email-on-severity-label"><span><?php echo lang_get('with_minimum_severity'); ?> </span></label> <span class="select email-on-severity"> <select id="email-on-bugnote-min-severity" name="email_on_bugnote_min_severity"> <option value="<?php echo OFF; ?> "><?php echo lang_get('any'); ?> </option> <option disabled="disabled">-----</option> <?php print_enum_string_option_list('severity', (int) $t_pref->email_on_bugnote_min_severity); ?> </select> </span> <span class="label-style"></span> </fieldset> <fieldset class="field-container"> <legend><label for="email-on-status"><?php echo lang_get('email_on_status_change'); ?> </label></legend> <span class="checkbox"><input id="email-on-status" type="checkbox" name="email_on_status" <?php check_checked((int) $t_pref->email_on_status, ON); ?> /></span> <label for="email-on-status-min-severity" class="email-on-severity-label"><span><?php echo lang_get('with_minimum_severity'); ?> </span></label> <span class="select email-on-severity"> <select id="email-on-status-min-severity" name="email_on_status_min_severity"> <option value="<?php echo OFF; ?> "><?php echo lang_get('any'); ?> </option> <option disabled="disabled">-----</option> <?php print_enum_string_option_list('severity', (int) $t_pref->email_on_status_min_severity); ?> </select> </span> <span class="label-style"></span> </fieldset> <fieldset class="field-container"> <legend><label for="email-on-priority-change"><?php echo lang_get('email_on_priority_change'); ?> </label></legend> <span class="checkbox"><input id="email-on-priority-change" type="checkbox" name="email_on_priority" <?php check_checked((int) $t_pref->email_on_priority, ON); ?> /></span> <label for="email-on-priority-min-severity" class="email-on-severity-label"><span><?php echo lang_get('with_minimum_severity'); ?> </span></label> <span class="select email-on-severity"> <select id="email-on-priority-min-severity" name="email_on_priority_min_severity"> <option value="<?php echo OFF; ?> "><?php echo lang_get('any'); ?> </option> <option disabled="disabled">-----</option> <?php print_enum_string_option_list('severity', (int) $t_pref->email_on_priority_min_severity); ?> </select> </span> <span class="label-style"></span> </fieldset> <div class="field-container"> <label for="email-bugnote-limit"><span><?php echo lang_get('email_bugnote_limit'); ?> </span></label> <span class="input"><input id="email-bugnote-limit" type="text" name="email_bugnote_limit" maxlength="2" size="2" value="<?php echo $t_pref->email_bugnote_limit; ?> " /></span> <span class="label-style"></span> </div> <?php } else { ?> <input type="hidden" name="email_on_new" value="<?php echo $t_pref->email_on_new; ?> " /> <input type="hidden" name="email_on_assigned" value="<?php echo $t_pref->email_on_assigned; ?> " /> <input type="hidden" name="email_on_feedback" value="<?php echo $t_pref->email_on_feedback; ?> " /> <input type="hidden" name="email_on_resolved" value="<?php echo $t_pref->email_on_resolved; ?> " /> <input type="hidden" name="email_on_closed" value="<?php echo $t_pref->email_on_closed; ?> " /> <input type="hidden" name="email_on_reopened" value="<?php echo $t_pref->email_on_reopened; ?> " /> <input type="hidden" name="email_on_bugnote" value="<?php echo $t_pref->email_on_bugnote; ?> " /> <input type="hidden" name="email_on_status" value="<?php echo $t_pref->email_on_status; ?> " /> <input type="hidden" name="email_on_priority" value="<?php echo $t_pref->email_on_priority; ?> " /> <input type="hidden" name="email_on_new_min_severity" value="<?php echo $t_pref->email_on_new_min_severity; ?> " /> <input type="hidden" name="email_on_assigned_min_severity" value="<?php echo $t_pref->email_on_assigned_min_severity; ?> " /> <input type="hidden" name="email_on_feedback_min_severity" value="<?php echo $t_pref->email_on_feedback_min_severity; ?> " /> <input type="hidden" name="email_on_resolved_min_severity" value="<?php echo $t_pref->email_on_resolved_min_severity; ?> " /> <input type="hidden" name="email_on_closed_min_severity" value="<?php echo $t_pref->email_on_closed_min_severity; ?> " /> <input type="hidden" name="email_on_reopened_min_severity" value="<?php echo $t_pref->email_on_reopened_min_severity; ?> " /> <input type="hidden" name="email_on_bugnote_min_severity" value="<?php echo $t_pref->email_on_bugnote_min_severity; ?> " /> <input type="hidden" name="email_on_status_min_severity" value="<?php echo $t_pref->email_on_status_min_severity; ?> " /> <input type="hidden" name="email_on_priority_min_severity" value="<?php echo $t_pref->email_on_priority_min_severity; ?> " /> <input type="hidden" name="email_bugnote_limit" value="<?php echo $t_pref->email_bugnote_limit; ?> " /> <?php } ?> <div class="field-container"> <label for="timezone"><span><?php echo lang_get('timezone'); ?> </span></label> <span class="select"> <select id="timezone" name="timezone"> <?php print_timezone_option_list($t_pref->timezone ? $t_pref->timezone : config_get_global('default_timezone')); ?> </select> </span> <span class="label-style"></span> </div> <div class="field-container"> <label for="language"><span><?php echo lang_get('language'); ?> </span></label> <span class="select"> <select id="language" name="language"> <?php print_language_option_list($t_pref->language); ?> </select> </span> <span class="label-style"></span> </div> <?php event_signal('EVENT_ACCOUNT_PREF_UPDATE_FORM', array($p_user_id)); ?> <span class="submit-button"><input type="submit" class="button" value="<?php echo lang_get('update_prefs_button'); ?> " /></span> </fieldset> </form> </div> <div id="account-prefs-reset-div" class="form-container"> <form id="account-prefs-reset-form" method="post" action="account_prefs_reset.php"> <fieldset> <?php echo form_security_field('account_prefs_reset'); ?> <input type="hidden" name="user_id" value="<?php echo $p_user_id; ?> " /> <input type="hidden" name="redirect_url" value="<?php echo $t_redirect_url; ?> " /> <span class="submit-button"><input type="submit" class="button" value="<?php echo lang_get('reset_prefs_button'); ?> " /></span> </fieldset> </form> </div> <?php }
function print_project_menu_bar() { $t_project_ids = current_user_get_accessible_projects(); print '<table class="width100" cellspacing="0">'; print '<tr>'; print '<td class="menu">'; print '<a href="set_project.php?project_id=' . ALL_PROJECTS . '">' . lang_get('all_projects') . '</a>'; foreach ($t_project_ids as $t_id) { print " | <a href=\"set_project.php?project_id={$t_id}\">" . string_display(project_get_field($t_id, 'name')) . '</a>'; print_subproject_menu_bar($t_id, $t_id . ';'); } print '</td>'; print '</tr>'; print '</table>'; }
echo lang_get('versions'); ?> </td> <?php //echo $t_orcttab; ?> </tr> <?php //PARAMS $p_projects = null; $p_level = 0; $p_cache = null; if (null == $p_projects) { $t_project_id = helper_get_current_project(); if (ALL_PROJECTS == $t_project_id) { $p_projects = current_user_get_accessible_projects(); } else { $p_projects = array($t_project_id); } } foreach ($p_projects as $t_project) { ?> <!-- PROJECTS --> <?php $t_project_name = str_repeat("» ", $p_level) . project_get_name($t_project); ?> <tr valign="top"> <td class="category"><?php echo $t_project_name; ?> </td>
/** * print bug counts by project * @todo check p_cache - static? * * @param array $p_projects Array of project id's. * @param integer $p_level Indicates the depth of the project within the sub-project hierarchy. * @param array $p_cache Summary cache. * @return void */ function summary_print_by_project(array $p_projects = array(), $p_level = 0, array $p_cache = null) { $t_project_id = helper_get_current_project(); if (empty($p_projects)) { if (ALL_PROJECTS == $t_project_id) { $p_projects = current_user_get_accessible_projects(); } else { $p_projects = array($t_project_id); } } # Retrieve statistics one time to improve performance. if (null === $p_cache) { $t_query = 'SELECT project_id, status, COUNT( status ) AS bugcount FROM {bug} GROUP BY project_id, status'; $t_result = db_query($t_query); $p_cache = array(); $t_resolved_val = config_get('bug_resolved_status_threshold'); $t_closed_val = config_get('bug_closed_status_threshold'); while ($t_row = db_fetch_array($t_result)) { $t_project_id = $t_row['project_id']; $t_status = $t_row['status']; $t_bugcount = $t_row['bugcount']; if ($t_closed_val <= $t_status) { if (isset($p_cache[$t_project_id]['closed'])) { $p_cache[$t_project_id]['closed'] += $t_bugcount; } else { $p_cache[$t_project_id]['closed'] = $t_bugcount; } } else { if ($t_resolved_val <= $t_status) { if (isset($p_cache[$t_project_id]['resolved'])) { $p_cache[$t_project_id]['resolved'] += $t_bugcount; } else { $p_cache[$t_project_id]['resolved'] = $t_bugcount; } } else { if (isset($p_cache[$t_project_id]['open'])) { $p_cache[$t_project_id]['open'] += $t_bugcount; } else { $p_cache[$t_project_id]['open'] = $t_bugcount; } } } } } foreach ($p_projects as $t_project) { $t_name = str_repeat('» ', $p_level) . project_get_name($t_project); $t_pdata = isset($p_cache[$t_project]) ? $p_cache[$t_project] : array('open' => 0, 'resolved' => 0, 'closed' => 0); $t_bugs_open = isset($t_pdata['open']) ? $t_pdata['open'] : 0; $t_bugs_resolved = isset($t_pdata['resolved']) ? $t_pdata['resolved'] : 0; $t_bugs_closed = isset($t_pdata['closed']) ? $t_pdata['closed'] : 0; $t_bugs_total = $t_bugs_open + $t_bugs_resolved + $t_bugs_closed; summary_helper_print_row(string_display_line($t_name), $t_bugs_open, $t_bugs_resolved, $t_bugs_closed, $t_bugs_total); if (count(project_hierarchy_get_subprojects($t_project)) > 0) { $t_subprojects = current_user_get_accessible_subprojects($t_project); if (count($t_subprojects) > 0) { summary_print_by_project($t_subprojects, $p_level + 1, $p_cache); } } } }
/** * Print the menu bar with a list of projects to which the user has access * @return null */ function print_project_menu_bar() { $t_project_ids = current_user_get_accessible_projects(); echo '<table class="width100" cellspacing="0">'; echo '<tr>'; echo '<td class="menu">'; echo '<a href="' . helper_mantis_url('set_project.php?project_id=' . ALL_PROJECTS) . '">' . lang_get('all_projects') . '</a>'; foreach ($t_project_ids as $t_id) { echo ' | <a href="' . helper_mantis_url('set_project.php?project_id=' . $t_id) . '">' . string_html_specialchars(project_get_field($t_id, 'name')) . '</a>'; print_subproject_menu_bar($t_id, $t_id . ';'); } echo '</td>'; echo '</tr>'; echo '</table>'; }
/** * Get a distinct array of categories accessible to the current user for * the specified projects. If no project is specified, use the current project. * If the current project is ALL_PROJECTS get all categories for all accessible projects. * For all cases, get global categories and subproject categories according to configured inheritance settings. * @param mixed $p_project_id A specific project or null * @return array A unique array of category names */ function category_get_filter_list( $p_project_id = null ) { if( null === $p_project_id ) { $t_project_id = helper_get_current_project(); } else { $t_project_id = $p_project_id; } if( $t_project_id == ALL_PROJECTS ) { $t_project_ids = current_user_get_accessible_projects(); } else { $t_project_ids = array( $t_project_id ); } $t_subproject_ids = array(); foreach( $t_project_ids as $t_project_id ) { $t_subproject_ids = array_merge( $t_subproject_ids, current_user_get_all_accessible_subprojects( $t_project_id ) ); } $t_project_ids = array_merge( $t_project_ids, $t_subproject_ids ); $t_categories = array(); foreach( $t_project_ids AS $t_id ) { $t_categories = array_merge( $t_categories, category_get_all_rows( $t_id ) ); } $t_unique = array(); foreach( $t_categories AS $t_category ) { if( !in_array( $t_category['name'], $t_unique ) ) { $t_unique[] = $t_category['name']; } } return $t_unique; }
function summary_print_by_project($p_projects = null, $p_level = 0, $p_cache = null) { $t_mantis_bug_table = config_get('mantis_bug_table'); $t_mantis_project_table = config_get('mantis_project_table'); $t_project_id = helper_get_current_project(); if (null == $p_projects) { if (ALL_PROJECTS == $t_project_id) { $p_projects = current_user_get_accessible_projects(); } else { $p_projects = array($t_project_id); } } # Retrieve statistics one time to improve performance. if (null === $p_cache) { $query = "SELECT project_id, status, COUNT( status ) AS count\n\t\t\t\t\tFROM {$t_mantis_bug_table}\n\t\t\t\t\tGROUP BY project_id, status"; $result = db_query($query); $p_cache = array(); $t_resolved_val = RESOLVED; $t_closed_val = CLOSED; while ($row = db_fetch_array($result)) { extract($row, EXTR_PREFIX_ALL, 'v'); if ($t_closed_val <= $v_status) { if (isset($p_cache[$v_project_id]['closed'])) { $p_cache[$v_project_id]['closed'] += $v_count; } else { $p_cache[$v_project_id]['closed'] = $v_count; } } else { if ($t_resolved_val <= $v_status) { if (isset($p_cache[$v_project_id]['resolved'])) { $p_cache[$v_project_id]['resolved'] += $v_count; } else { $p_cache[$v_project_id]['resolved'] = $v_count; } } else { if (isset($p_cache[$v_project_id]['open'])) { $p_cache[$v_project_id]['open'] += $v_count; } else { $p_cache[$v_project_id]['open'] = $v_count; } } } } } foreach ($p_projects as $t_project) { $t_name = str_repeat("» ", $p_level) . project_get_name($t_project); $t_pdata = isset($p_cache[$t_project]) ? $p_cache[$t_project] : array('open' => 0, 'resolved' => 0, 'closed' => 0); $t_bugs_open = isset($t_pdata['open']) ? $t_pdata['open'] : 0; $t_bugs_resolved = isset($t_pdata['resolved']) ? $t_pdata['resolved'] : 0; $t_bugs_closed = isset($t_pdata['closed']) ? $t_pdata['closed'] : 0; $t_bugs_total = $t_bugs_open + $t_bugs_resolved + $t_bugs_closed; summary_helper_print_row($t_name, $t_bugs_open, $t_bugs_resolved, $t_bugs_closed, $t_bugs_total); $t_subprojects = current_user_get_accessible_subprojects($t_project); if (count($t_subprojects) > 0) { summary_print_by_project($t_subprojects, $p_level + 1, $p_cache); } } }
function edit_account_prefs($p_user_id = null, $p_error_if_protected = true, $p_accounts_menu = true, $p_redirect_url = '') { if (null === $p_user_id) { $p_user_id = auth_get_current_user_id(); } $t_redirect_url = $p_redirect_url; if (is_blank($t_redirect_url)) { $t_redirect_url = 'account_prefs_page.php'; } # protected account check if (user_is_protected($p_user_id)) { if ($p_error_if_protected) { trigger_error(ERROR_PROTECTED_ACCOUNT, ERROR); } else { return; } } # prefix data with u_ $t_pref = user_pref_get($p_user_id); # Account Preferences Form BEGIN ?> <br /> <div align="center"> <form method="post" action="account_prefs_update.php"> <?php echo form_security_field('account_prefs_update'); ?> <input type="hidden" name="user_id" value="<?php echo $p_user_id; ?> " /> <input type="hidden" name="redirect_url" value="<?php echo $t_redirect_url; ?> " /> <table class="width75" cellspacing="1"> <tr> <td class="form-title"> <?php echo lang_get('default_account_preferences_title'); ?> </td> <td class="right"> <?php if ($p_accounts_menu) { print_account_menu('account_prefs_page.php'); } ?> </td> </tr> <tr <?php echo helper_alternate_class(); ?> > <td class="category" width="50%"> <?php echo lang_get('default_project'); ?> </td> <td width="50%"> <select name="default_project"> <?php # Count number of available projects $t_projects = current_user_get_accessible_projects(); $t_num_proj = count($t_projects); if ($t_num_proj == 1) { $t_num_proj += count(current_user_get_accessible_subprojects($t_projects[0])); } # Don't display "All projects" in selection list if there is only 1 print_project_option_list($t_pref->default_project, $t_num_proj != 1); ?> </select> </td> </tr> <tr <?php echo helper_alternate_class(); ?> > <td class="category"> <?php echo lang_get('refresh_delay'); ?> </td> <td> <input type="text" name="refresh_delay" size="4" maxlength="4" value="<?php echo $t_pref->refresh_delay; ?> " /> <?php echo lang_get('minutes'); ?> </td> </tr> <tr <?php echo helper_alternate_class(); ?> > <td class="category"> <?php echo lang_get('redirect_delay'); ?> </td> <td> <input type="text" name="redirect_delay" size="4" maxlength="3" value="<?php echo $t_pref->redirect_delay; ?> " /> <?php echo lang_get('seconds'); ?> </td> </tr> <tr <?php echo helper_alternate_class(); ?> > <td class="category"> <?php echo lang_get('bugnote_order'); ?> </td> <td> <label><input type="radio" name="bugnote_order" value="ASC" <?php check_checked($t_pref->bugnote_order, 'ASC'); ?> /><?php echo lang_get('bugnote_order_asc'); ?> </label> <label><input type="radio" name="bugnote_order" value="DESC" <?php check_checked($t_pref->bugnote_order, 'DESC'); ?> /><?php echo lang_get('bugnote_order_desc'); ?> </label> </td> </tr> <?php if (ON == config_get('enable_email_notification')) { ?> <tr <?php echo helper_alternate_class(); ?> > <td class="category"> <?php echo lang_get('email_on_new'); ?> </td> <td> <input type="checkbox" name="email_on_new" <?php check_checked($t_pref->email_on_new, ON); ?> /> <?php echo lang_get('with_minimum_severity'); ?> <select name="email_on_new_min_severity"> <option value="<?php echo OFF; ?> "><?php echo lang_get('any'); ?> </option> <option disabled="disabled">-----</option> <?php print_enum_string_option_list('severity', $t_pref->email_on_new_min_severity); ?> </select> </td> </tr> <tr <?php echo helper_alternate_class(); ?> > <td class="category"> <?php echo lang_get('email_on_assigned'); ?> </td> <td> <input type="checkbox" name="email_on_assigned" <?php check_checked($t_pref->email_on_assigned, ON); ?> /> <?php echo lang_get('with_minimum_severity'); ?> <select name="email_on_assigned_min_severity"> <option value="<?php echo OFF; ?> "><?php echo lang_get('any'); ?> </option> <option disabled="disabled">-----</option> <?php print_enum_string_option_list('severity', $t_pref->email_on_assigned_min_severity); ?> </select> </td> </tr> <tr <?php echo helper_alternate_class(); ?> > <td class="category"> <?php echo lang_get('email_on_feedback'); ?> </td> <td> <input type="checkbox" name="email_on_feedback" <?php check_checked($t_pref->email_on_feedback, ON); ?> /> <?php echo lang_get('with_minimum_severity'); ?> <select name="email_on_feedback_min_severity"> <option value="<?php echo OFF; ?> "><?php echo lang_get('any'); ?> </option> <option disabled="disabled">-----</option> <?php print_enum_string_option_list('severity', $t_pref->email_on_feedback_min_severity); ?> </select> </td> </tr> <tr <?php echo helper_alternate_class(); ?> > <td class="category"> <?php echo lang_get('email_on_resolved'); ?> </td> <td> <input type="checkbox" name="email_on_resolved" <?php check_checked($t_pref->email_on_resolved, ON); ?> /> <?php echo lang_get('with_minimum_severity'); ?> <select name="email_on_resolved_min_severity"> <option value="<?php echo OFF; ?> "><?php echo lang_get('any'); ?> </option> <option disabled="disabled">-----</option> <?php print_enum_string_option_list('severity', $t_pref->email_on_resolved_min_severity); ?> </select> </td> </tr> <tr <?php echo helper_alternate_class(); ?> > <td class="category"> <?php echo lang_get('email_on_closed'); ?> </td> <td> <input type="checkbox" name="email_on_closed" <?php check_checked($t_pref->email_on_closed, ON); ?> /> <?php echo lang_get('with_minimum_severity'); ?> <select name="email_on_closed_min_severity"> <option value="<?php echo OFF; ?> "><?php echo lang_get('any'); ?> </option> <option disabled="disabled">-----</option> <?php print_enum_string_option_list('severity', $t_pref->email_on_closed_min_severity); ?> </select> </td> </tr> <tr <?php echo helper_alternate_class(); ?> > <td class="category"> <?php echo lang_get('email_on_reopened'); ?> </td> <td> <input type="checkbox" name="email_on_reopened" <?php check_checked($t_pref->email_on_reopened, ON); ?> /> <?php echo lang_get('with_minimum_severity'); ?> <select name="email_on_reopened_min_severity"> <option value="<?php echo OFF; ?> "><?php echo lang_get('any'); ?> </option> <option disabled="disabled">-----</option> <?php print_enum_string_option_list('severity', $t_pref->email_on_reopened_min_severity); ?> </select> </td> </tr> <tr <?php echo helper_alternate_class(); ?> > <td class="category"> <?php echo lang_get('email_on_bugnote_added'); ?> </td> <td> <input type="checkbox" name="email_on_bugnote" <?php check_checked($t_pref->email_on_bugnote, ON); ?> /> <?php echo lang_get('with_minimum_severity'); ?> <select name="email_on_bugnote_min_severity"> <option value="<?php echo OFF; ?> "><?php echo lang_get('any'); ?> </option> <option disabled="disabled">-----</option> <?php print_enum_string_option_list('severity', $t_pref->email_on_bugnote_min_severity); ?> </select> </td> </tr> <tr <?php echo helper_alternate_class(); ?> > <td class="category"> <?php echo lang_get('email_on_status_change'); ?> </td> <td> <input type="checkbox" name="email_on_status" <?php check_checked($t_pref->email_on_status, ON); ?> /> <?php echo lang_get('with_minimum_severity'); ?> <select name="email_on_status_min_severity"> <option value="<?php echo OFF; ?> "><?php echo lang_get('any'); ?> </option> <option disabled="disabled">-----</option> <?php print_enum_string_option_list('severity', $t_pref->email_on_status_min_severity); ?> </select> </td> </tr> <tr <?php echo helper_alternate_class(); ?> > <td class="category"> <?php echo lang_get('email_on_priority_change'); ?> </td> <td> <input type="checkbox" name="email_on_priority" <?php check_checked($t_pref->email_on_priority, ON); ?> /> <?php echo lang_get('with_minimum_severity'); ?> <select name="email_on_priority_min_severity"> <option value="<?php echo OFF; ?> "><?php echo lang_get('any'); ?> </option> <option disabled="disabled">-----</option> <?php print_enum_string_option_list('severity', $t_pref->email_on_priority_min_severity); ?> </select> </td> </tr> <tr <?php echo helper_alternate_class(); ?> > <td class="category"> <?php echo lang_get('email_bugnote_limit'); ?> </td> <td> <input type="text" name="email_bugnote_limit" maxlength="2" size="2" value="<?php echo $t_pref->email_bugnote_limit; ?> " /> </td> </tr> <?php } else { ?> <input type="hidden" name="email_on_new" value="<?php echo $t_pref->email_on_new; ?> " /> <input type="hidden" name="email_on_assigned" value="<?php echo $t_pref->email_on_assigned; ?> " /> <input type="hidden" name="email_on_feedback" value="<?php echo $t_pref->email_on_feedback; ?> " /> <input type="hidden" name="email_on_resolved" value="<?php echo $t_pref->email_on_resolved; ?> " /> <input type="hidden" name="email_on_closed" value="<?php echo $t_pref->email_on_closed; ?> " /> <input type="hidden" name="email_on_reopened" value="<?php echo $t_pref->email_on_reopened; ?> " /> <input type="hidden" name="email_on_bugnote" value="<?php echo $t_pref->email_on_bugnote; ?> " /> <input type="hidden" name="email_on_status" value="<?php echo $t_pref->email_on_status; ?> " /> <input type="hidden" name="email_on_priority" value="<?php echo $t_pref->email_on_priority; ?> " /> <input type="hidden" name="email_on_new_min_severity" value="<?php echo $t_pref->email_on_new_min_severity; ?> " /> <input type="hidden" name="email_on_assigned_min_severity" value="<?php echo $t_pref->email_on_assigned_min_severity; ?> " /> <input type="hidden" name="email_on_feedback_min_severity" value="<?php echo $t_pref->email_on_feedback_min_severity; ?> " /> <input type="hidden" name="email_on_resolved_min_severity" value="<?php echo $t_pref->email_on_resolved_min_severity; ?> " /> <input type="hidden" name="email_on_closed_min_severity" value="<?php echo $t_pref->email_on_closed_min_severity; ?> " /> <input type="hidden" name="email_on_reopened_min_severity" value="<?php echo $t_pref->email_on_reopened_min_severity; ?> " /> <input type="hidden" name="email_on_bugnote_min_severity" value="<?php echo $t_pref->email_on_bugnote_min_severity; ?> " /> <input type="hidden" name="email_on_status_min_severity" value="<?php echo $t_pref->email_on_status_min_severity; ?> " /> <input type="hidden" name="email_on_priority_min_severity" value="<?php echo $t_pref->email_on_priority_min_severity; ?> " /> <input type="hidden" name="email_bugnote_limit" value="<?php echo $t_pref->email_bugnote_limit; ?> " /> <?php } ?> <tr <?php echo helper_alternate_class(); ?> > <td class="category"> <?php echo lang_get('timezone'); ?> </td> <td> <select name="timezone"> <?php print_timezone_option_list($t_pref->timezone ? $t_pref->timezone : config_get_global('default_timezone')); ?> </select> </td> </tr> <tr <?php echo helper_alternate_class(); ?> > <td class="category"> <?php echo lang_get('language'); ?> </td> <td> <select name="language"> <?php print_language_option_list($t_pref->language); ?> </select> </td> </tr> <?php event_signal('EVENT_ACCOUNT_PREF_UPDATE_FORM', array($p_user_id)); ?> <tr> <td colspan="2" class="center"> <input type="submit" class="button" value="<?php echo lang_get('update_prefs_button'); ?> " /> </td> </tr> </table> </form> </div> <br /> <div class="border center"> <form method="post" action="account_prefs_reset.php"> <?php echo form_security_field('account_prefs_reset'); ?> <input type="hidden" name="user_id" value="<?php echo $p_user_id; ?> " /> <input type="hidden" name="redirect_url" value="<?php echo $t_redirect_url; ?> " /> <input type="submit" class="button" value="<?php echo lang_get('reset_prefs_button'); ?> " /> </form> </div> <?php }
function print_project_option_list($p_project_id = null, $p_include_all_projects = true, $p_filter_project_id = null, $p_trace = false) { project_cache_all(); $t_project_ids = current_user_get_accessible_projects(); if ($p_include_all_projects) { print '<option value="' . ALL_PROJECTS . '"'; check_selected($p_project_id, ALL_PROJECTS); print '>' . lang_get('all_projects') . '</option>' . "\n"; } $t_project_count = count($t_project_ids); for ($i = 0; $i < $t_project_count; $i++) { $t_id = $t_project_ids[$i]; if ($t_id != $p_filter_project_id) { print "<option value=\"{$t_id}\""; check_selected($p_project_id, $t_id); print '>' . string_display(project_get_field($t_id, 'name')) . '</option>' . "\n"; print_subproject_option_list($t_id, $p_project_id, $p_filter_project_id, $p_trace); } } }