/** * Convert a timestamp to a DateTime string * @param integer $p_timestamp Integer value to format as date time string. * @return string */ static function newDateTimeString($p_timestamp) { if ($p_timestamp == null || date_is_null($p_timestamp)) { return null; } return date('c', (int) $p_timestamp); }
static function newDateTimeString($p_timestamp) { if ($p_timestamp == null || date_is_null($p_timestamp)) { return null; } else { if (function_exists('timestamp_to_iso8601')) { return timestamp_to_iso8601($p_timestamp, false); } else { return date('c', (int) $p_timestamp); } } }
/** * Print header for the specified project version. * @param array $p_version_row Array containing project version data. * @return void */ function print_version_header(array $p_version_row) { $t_project_id = $p_version_row['project_id']; $t_version_id = $p_version_row['id']; $t_version_name = $p_version_row['version']; $t_project_name = project_get_field($t_project_id, 'name'); $t_release_title = '<a href="roadmap_page.php?project_id=' . $t_project_id . '">' . string_display_line($t_project_name) . '</a> - <a href="roadmap_page.php?version_id=' . $t_version_id . '">' . string_display_line($t_version_name) . '</a>'; $t_version_timestamp = $p_version_row['date_order']; if (config_get('show_roadmap_dates') && !date_is_null($t_version_timestamp)) { $t_scheduled_release_date = ' (' . lang_get('scheduled_release') . ' ' . string_display_line(date(config_get('short_date_format'), $t_version_timestamp)) . ')'; } else { $t_scheduled_release_date = ''; } echo '<tt>'; echo '<br />', $t_release_title, $t_scheduled_release_date, lang_get('word_separator'); print_bracket_link('view_all_set.php?type=1&temporary=y&' . FILTER_PROPERTY_PROJECT_ID . '=' . $t_project_id . '&' . filter_encode_field_and_value(FILTER_PROPERTY_TARGET_VERSION, $t_version_name), lang_get('view_bugs_link')); echo '<br />'; $t_release_title_without_hyperlinks = $t_project_name . ' - ' . $t_version_name . $t_scheduled_release_date; echo utf8_str_pad('', utf8_strlen($t_release_title_without_hyperlinks), '='), '<br />'; }
/** * Get due date for a given bug * @param BugData $p_bug A BugData object. * @return soapval the value to be encoded as the due date */ function mci_issue_get_due_date(BugData $p_bug) { $t_value = null; if (access_has_bug_level(config_get('due_date_view_threshold'), $p_bug->id) && !date_is_null($p_bug->due_date)) { $t_value = $p_bug->due_date; } return SoapObjectsFactory::newDateTimeVar($t_value); }
?> " /> </td> </tr> <tr <?php echo helper_alternate_class(); ?> > <td class="category"> <?php echo lang_get('date_order'); ?> </td> <td> <input type="text" id="date_order" name="date_order" size="32" value="<?php echo date_is_null($t_version->date_order) ? '' : string_attribute(date(config_get('calendar_date_format'), $t_version->date_order)); ?> " /> <?php date_print_calendar(); date_finish_calendar('date_order', 'trigger'); ?> </td> </tr> <tr <?php echo helper_alternate_class(); ?> > <td class="category"> <?php echo lang_get('description');
/** * Check if a given bug is overdue * @param int p_bug_id integer representing bug id * @return bool true if bug is overdue, false otherwise * @access public * @uses database_api.php */ function bug_is_overdue($p_bug_id) { $t_due_date = bug_get_field($p_bug_id, 'due_date'); if (!date_is_null($t_due_date)) { $t_now = db_now(); if ($t_now > $t_due_date) { if (!bug_is_resolved($p_bug_id)) { return true; } } } return false; }
/** * * @param BugData $bug * @return soapval the value to be encoded as the due date */ function mci_issue_get_due_date( $p_bug ) { if ( access_has_bug_level( config_get( 'due_date_view_threshold' ), $p_bug->id ) && !date_is_null( $p_bug->due_date ) ) { return new soapval( 'due_date', 'xsd:dateTime', timestamp_to_iso8601( $p_bug->due_date ) ); } else { return new soapval( 'due_date','xsd:dateTime', null ); } }
print_manage_menu( 'manage_proj_ver_edit_page.php' ); ?> <div id="manage-proj-version-update-div" class="form-container"> <form id="manage-proj-version-update-form" method="post" action="manage_proj_ver_update.php"> <fieldset> <legend><span><?php echo lang_get( 'edit_project_version_title' ) ?></span></legend> <?php echo form_security_field( 'manage_proj_ver_update' ) ?> <input type="hidden" name="version_id" value="<?php echo string_attribute( $t_version->id ) ?>" /> <div class="field-container <?php echo helper_alternate_class_no_attribute(); ?>"> <label for="proj-version-new-version"><span><?php echo lang_get( 'version' ) ?></span></label> <span class="input"><input type="text" id="proj-version-new-version" name="new_version" size="32" maxlength="64" value="<?php echo string_attribute( $t_version->version ) ?>" /></span> <span class="label-style"></span> </div> <div class="field-container <?php echo helper_alternate_class_no_attribute(); ?>"> <label for="proj-version-date-order"><span><?php echo lang_get( 'date_order' ) ?></span></label> <span class="input"><input type="text" id="proj-version-date-order" name="date_order" class="datetime" size="32" value="<?php echo (date_is_null( $t_version->date_order ) ? '' : string_attribute( date( config_get( 'calendar_date_format' ), $t_version->date_order ) ) ) ?>" /></span> <span class="label-style"></span> </div> <div class="field-container <?php echo helper_alternate_class_no_attribute(); ?>"> <label for="proj-version-description"><span><?php echo lang_get( 'description' ) ?></span></label> <span class="textarea"><textarea id="proj-version-description" name="description" cols="60" rows="5"><?php echo string_attribute( $t_version->description ) ?></textarea></span> <span class="label-style"></span> </div> <div class="field-container <?php echo helper_alternate_class_no_attribute(); ?>"> <label for="proj-version-released"><span><?php echo lang_get( 'released' ) ?></span></label> <span class="checkbox"><input type="checkbox" id="proj-version-released" name="released" <?php check_checked( $t_version->released, VERSION_RELEASED ); ?> /></span> <span class="label-style"></span> </div> <div class="field-container <?php echo helper_alternate_class_no_attribute(); ?>"> <label for="proj-version-obsolete"><span><?php echo lang_get( 'obsolete' ) ?></span></label> <span class="checkbox"><input type="checkbox" id="proj-version-obsolete" name="obsolete" <?php check_checked( $t_version->obsolete, true ); ?> /></span>
<td> <select <?php echo helper_get_tab_index(); ?> id="priority" name="priority"> <?php print_enum_string_option_list('priority', $f_priority); ?> </select> </td> </tr> <?php } if ($t_show_due_date) { $t_date_to_display = ''; if (!date_is_null($f_due_date)) { $t_date_to_display = date(config_get('calendar_date_format'), $f_due_date); } ?> <tr> <th class="category"> <label for="due_date"><?php print_documentation_link('due_date'); ?> </label> </th> <td> <?php echo '<input ' . helper_get_tab_index() . ' type="text" id="due_date" name="due_date" class="datetime" size="20" maxlength="16" value="' . $t_date_to_display . '" />'; ?> </td>
function print_date($edit_page, $version) { echo '<td>'; if ($edit_page) { echo '<label for="proj-version-date-order">'; echo '<span class="input">'; echo '<input type="text" id="proj-version-date-order" name="date_order[]" class="datetime" size="15" value="' . (date_is_null($version['date_order']) ? '' : string_attribute(date(config_get('calendar_date_format'), $version['date_order']))) . '" />'; echo '</span>'; echo '</label>'; } else { echo date_is_null($version['date_order']) ? '' : string_attribute(date(config_get('calendar_date_format'), $version['date_order'])); } echo '</td>'; }
/** * return the due date column * @param BugData $p_bug A BugData object. * @return string * @access public */ function csv_format_due_date(BugData $p_bug) { static $s_date_format = null; if ($s_date_format === null) { $s_date_format = config_get('short_date_format'); } $t_value = ''; if (!date_is_null($p_bug->due_date) && access_has_bug_level(config_get('due_date_view_threshold'), $p_bug->id)) { $t_value = date($s_date_format, $p_bug->due_date); } return csv_escape_string($t_value); }
/** * @param $version */ function print_version_deadline($version) { echo '<td>'; echo plugin_lang_get('versview_deadline'); echo '</td>'; echo '<td>'; echo date_is_null($version->date_order) ? '' : string_attribute(date(config_get('calendar_date_format'), $version->date_order)); echo '</td>'; }
/** * Gets the formatted due date. * @param BugData $p_bug A bug object. * @return string The formatted due date. */ function excel_format_due_date(BugData $p_bug) { $t_value = ''; if (!date_is_null($p_bug->due_date) && access_has_bug_level(config_get('due_date_view_threshold'), $p_bug->id)) { $t_value = date(config_get('short_date_format'), $p_bug->due_date); } return excel_prepare_string($t_value); }
/** * Prints all available versions into the document head * * @param $versions * @param $act_version */ public function print_doc_head_versions($versions, $act_version) { $specmanagement_database_api = new specmanagement_database_api(); foreach ($versions as $version) { $type_string = $specmanagement_database_api->get_type_string($specmanagement_database_api->get_type_by_version($version['id'])); if (strlen($type_string) > 0) { $same_version = $act_version->id == $version['id']; echo '<tr>'; $this->print_doc_head_version_col($same_version, date_is_null($version['date_order']) ? '' : string_attribute(date(config_get('calendar_date_format'), $version['date_order']))); $this->print_doc_head_version_col($same_version, version_full_name($version['id'])); if ($same_version) { $this->print_doc_head_version_col($same_version, ''); } else { $change_button_string = '<form method="post" name="form_set_source" action="' . plugin_page('changes') . '">' . '<input type="hidden" name="version_other" value="' . $version['id'] . '" />' . '<input type="hidden" name="version_my" value="' . $act_version->id . '" />' . '<input type="submit" name="formSubmit" class="button" value="' . plugin_lang_get('head_changes') . '"/>' . '</form>'; $this->print_doc_head_version_col($same_version, $change_button_string); } $show_button_string = '<form method="post" name="form_set_source" action="' . plugin_page('editor') . '">' . '<input type="hidden" name="version_id" value="' . $version['id'] . '" />' . '<input type="submit" name="formSubmit" class="button" value="' . plugin_lang_get('head_view') . '"/>' . '</form>'; $this->print_doc_head_version_col($same_version, $show_button_string); echo '</tr>'; } } }
$t_os = string_display_line($t_bug->os); $t_os_version = string_display_line($t_bug->os_build); $t_is = string_display_line($t_bug->os); $t_status = string_display_line(get_enum_element('status', $t_bug->status)); $t_priority = string_display_line(get_enum_element('priority', $t_bug->priority)); $t_resolution = string_display_line(get_enum_element('resolution', $t_bug->resolution)); $t_product_build = string_display_line($t_bug->build); $t_projection = string_display_line(get_enum_element('projection', $t_bug->projection)); $t_eta = string_display_line(get_enum_element('eta', $t_bug->eta)); $t_summary = string_display_line_links(bug_format_summary($f_bug_id, SUMMARY_FIELD)); $t_description = string_display_links($t_bug->description); $t_steps_to_reproduce = string_display_links($t_bug->steps_to_reproduce); $t_additional_information = string_display_links($t_bug->additional_information); $t_view_state = $t_show_view_state ? get_enum_element('view_state', $t_bug->view_state) : ''; if ($t_show_due_date) { if (!date_is_null($t_bug->due_date)) { $t_due_date = date(config_get('normal_date_format'), $t_bug->due_date); } else { $t_due_date = ''; } } $t_product_version = $t_show_product_version ? string_display_line(prepare_version_string($t_bug->project_id, version_get_id($t_bug->version, $t_bug->project_id))) : ''; $t_target_version = $t_show_target_version ? string_display_line(prepare_version_string($t_bug->project_id, version_get_id($t_bug->target_version, $t_bug->project_id))) : ''; $t_fixed_in_version = $t_show_fixed_in_version ? string_display_line(prepare_version_string($t_bug->project_id, version_get_id($t_bug->fixed_in_version, $t_bug->project_id))) : ''; html_page_top1(bug_format_summary($f_bug_id, SUMMARY_CAPTION)); html_head_end(); html_body_begin(); echo '<br />'; echo '<table class="width100" cellspacing="1">'; echo '<tr>'; echo '<td class="form-title" colspan="6">';
echo lang_get('actions'); ?> </td> </tr> <?php } foreach ($t_versions as $t_version) { if ($t_version['project_id'] != $f_project_id) { $t_inherited = true; } else { $t_inherited = false; } $t_name = version_full_name($t_version['id'], $t_inherited, $f_project_id); $t_released = $t_version['released']; $t_obsolete = $t_version['obsolete']; if (!date_is_null($t_version['date_order'])) { $t_date_formatted = date(config_get('complete_date_format'), $t_version['date_order']); } else { $t_date_formatted = ' '; } ?> <!-- Repeated Info Rows --> <tr <?php echo helper_alternate_class(); ?> > <td> <?php echo string_display($t_name); ?> </td>
/** * @param $amount_stat_columns * @param $print_flag * @param $show_zero_issues * @param $versions */ function print_tablebody($amount_stat_columns, $print_flag, $show_zero_issues, $versions) { $specmanagement_database_api = new specmanagement_database_api(); $specmanagement_print_api = new specmanagement_print_api(); echo '<tbody>'; for ($version_index = 0; $version_index < count($versions); $version_index++) { $version = $versions[$version_index]; $version_spec_bug_ids = $specmanagement_database_api->get_version_spec_bugs($version['version']); if (is_null($version_spec_bug_ids) && !$show_zero_issues) { continue; } $version_deadline = date_is_null($version['date_order']) ? '' : string_attribute(date(config_get('calendar_date_format'), $version['date_order'])); $timeleft = time() - $version['date_order']; $unsolved_bug_duration = null; $add_rel_duration = 0; $status_process = null; $uncertainty_bug_ids = array(); $add_rel_uncertainty_bug_ids = array(); $sum_duration = 0; $uncertainty_status_process = null; $unsolved_bug_finished_date = null; $null_issues_flag = true; if (!is_null($version_spec_bug_ids)) { $unsolveld_bug_ids = get_unsolved_issues($version_spec_bug_ids); $unsolved_bug_duration = $specmanagement_database_api->get_bug_array_duration($unsolveld_bug_ids); $rel_based_data = calculate_rel_based_data($unsolveld_bug_ids); $add_rel_duration = $rel_based_data[0]; $add_rel_uncertainty_bug_ids = $rel_based_data[1]; $sum_duration = $unsolved_bug_duration + $add_rel_duration; $status_process = 100 * round(1 - count($unsolveld_bug_ids) / count($version_spec_bug_ids), 2); $uncertainty_bug_ids = get_uncertainty_issues($unsolveld_bug_ids); $uncertainty_status_process = 100 * round(count($uncertainty_bug_ids) / count($version_spec_bug_ids), 2); $null_issues_flag = false; } $time_delay = calc_time_delay($timeleft, $sum_duration); $specmanagement_print_api->printRow(); print_version($version); print_date($version_deadline, $time_delay[0]); print_issue_amount($amount_stat_columns, $print_flag, $version, $version_spec_bug_ids, $null_issues_flag); print_process($status_process, $null_issues_flag); print_duration($sum_duration, $add_rel_duration, $null_issues_flag); print_uncertainty($uncertainty_bug_ids, $add_rel_uncertainty_bug_ids, $uncertainty_status_process, $null_issues_flag); //print_information( $version, $null_issues_flag, $time_delay[1] ); echo '</tr>'; } echo '</tbody>'; }
/** * Print column content for column overdue * * @param BugData $p_bug bug object * @param int $p_columns_target see COLUMNS_TARGET_* in constant_inc.php * @return null * @access public */ function print_column_overdue($p_bug, $p_columns_target = COLUMNS_TARGET_VIEW_PAGE) { global $t_icon_path; echo '<td class="column-overdue">'; if (access_has_bug_level(config_get('due_date_view_threshold'), $p_bug->id) && !date_is_null($p_bug->due_date) && bug_is_overdue($p_bug->id)) { $t_overdue_text = lang_get('overdue'); $t_overdue_text_hover = $t_overdue_text . '. Due date was: ' . string_display_line(date(config_get('short_date_format'), $p_bug->due_date)); echo '<img src="' . $t_icon_path . 'overdue.png" alt="' . $t_overdue_text . '" title="' . $t_overdue_text_hover . '" />'; } else { echo ' '; } echo '</td>'; }
/** * Build the bug raw data visible for specified user to be translated and sent by email to the user * (Filter the bug data according to user access level) * return array with bug data. See usage in email_format_bug_message(...) * @param integer $p_user_id A user identifier. * @param integer $p_bug_id A bug identifier. * @param string $p_message_id A message identifier. * @return array */ function email_build_visible_bug_data($p_user_id, $p_bug_id, $p_message_id) { # Override current user with user to construct bug data for. # This is to make sure that APIs that check against current user (e.g. relationship) work correctly. $t_current_user_id = current_user_set($p_user_id); $t_project_id = bug_get_field($p_bug_id, 'project_id'); $t_user_access_level = user_get_access_level($p_user_id, $t_project_id); $t_user_bugnote_order = user_pref_get_pref($p_user_id, 'bugnote_order'); $t_user_bugnote_limit = user_pref_get_pref($p_user_id, 'email_bugnote_limit'); $t_row = bug_get_extended_row($p_bug_id); $t_bug_data = array(); $t_bug_data['email_bug'] = $p_bug_id; if ($p_message_id !== 'email_notification_title_for_action_bug_deleted') { $t_bug_data['email_bug_view_url'] = string_get_bug_view_url_with_fqdn($p_bug_id); } if (access_compare_level($t_user_access_level, config_get('view_handler_threshold'))) { if (0 != $t_row['handler_id']) { $t_bug_data['email_handler'] = user_get_name($t_row['handler_id']); } else { $t_bug_data['email_handler'] = ''; } } $t_bug_data['email_reporter'] = user_get_name($t_row['reporter_id']); $t_bug_data['email_project_id'] = $t_row['project_id']; $t_bug_data['email_project'] = project_get_field($t_row['project_id'], 'name'); $t_category_name = category_full_name($t_row['category_id'], false); $t_bug_data['email_category'] = $t_category_name; $t_tag_rows = tag_bug_get_attached($p_bug_id); if (!empty($t_tag_rows) && access_compare_level($t_user_access_level, config_get('tag_view_threshold'))) { $t_bug_data['email_tag'] = ''; foreach ($t_tag_rows as $t_tag) { $t_bug_data['email_tag'] .= $t_tag['name'] . ', '; } $t_bug_data['email_tag'] = trim($t_bug_data['email_tag'], ', '); } $t_bug_data['email_date_submitted'] = $t_row['date_submitted']; $t_bug_data['email_last_modified'] = $t_row['last_updated']; if (!date_is_null($t_row['due_date']) && access_compare_level($t_user_access_level, config_get('due_date_view_threshold'))) { $t_bug_data['email_due_date'] = date(config_get('short_date_format'), $t_row['due_date']); } $t_bug_data['email_status'] = $t_row['status']; $t_bug_data['email_severity'] = $t_row['severity']; $t_bug_data['email_priority'] = $t_row['priority']; $t_bug_data['email_reproducibility'] = $t_row['reproducibility']; $t_bug_data['email_resolution'] = $t_row['resolution']; $t_bug_data['email_fixed_in_version'] = $t_row['fixed_in_version']; if (!is_blank($t_row['target_version']) && access_compare_level($t_user_access_level, config_get('roadmap_view_threshold'))) { $t_bug_data['email_target_version'] = $t_row['target_version']; } $t_bug_data['email_summary'] = $t_row['summary']; $t_bug_data['email_description'] = $t_row['description']; $t_bug_data['email_additional_information'] = $t_row['additional_information']; $t_bug_data['email_steps_to_reproduce'] = $t_row['steps_to_reproduce']; $t_bug_data['set_category'] = '[' . $t_bug_data['email_project'] . '] ' . $t_category_name; $t_bug_data['custom_fields'] = custom_field_get_linked_fields($p_bug_id, $t_user_access_level); $t_bug_data['bugnotes'] = bugnote_get_all_visible_bugnotes($p_bug_id, $t_user_bugnote_order, $t_user_bugnote_limit, $p_user_id); # put history data if (ON == config_get('history_default_visible') && access_compare_level($t_user_access_level, config_get('view_history_threshold'))) { $t_bug_data['history'] = history_get_raw_events_array($p_bug_id, $p_user_id); } # Sponsorship Information if (config_get('enable_sponsorship') == ON && access_has_bug_level(config_get('view_sponsorship_total_threshold'), $p_bug_id, $p_user_id)) { $t_sponsorship_ids = sponsorship_get_all_ids($p_bug_id); $t_bug_data['sponsorship_total'] = sponsorship_get_amount($t_sponsorship_ids); if (access_has_bug_level(config_get('view_sponsorship_details_threshold'), $p_bug_id, $p_user_id)) { $t_bug_data['sponsorships'] = array(); foreach ($t_sponsorship_ids as $t_id) { $t_bug_data['sponsorships'][] = sponsorship_get($t_id); } } } $t_bug_data['relations'] = relationship_get_summary_text($p_bug_id); current_user_set($t_current_user_id); return $t_bug_data; }