本文整理汇总了PHP中custom_field_get_linked_ids函数的典型用法代码示例。如果您正苦于以下问题:PHP custom_field_get_linked_ids函数的具体用法?PHP custom_field_get_linked_ids怎么用?PHP custom_field_get_linked_ids使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了custom_field_get_linked_ids函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: user_get_profile_row
} else {
$row = user_get_profile_row($t_bug_data->reporter_id, $t_bug_data->profile_id);
}
if (is_blank($t_bug_data->platform)) {
$t_bug_data->platform = $row['platform'];
}
if (is_blank($t_bug_data->os)) {
$t_bug_data->os = $row['os'];
}
if (is_blank($t_bug_data->os_build)) {
$t_bug_data->os_build = $row['os_build'];
}
}
helper_call_custom_function('issue_create_validate', array($t_bug_data));
# Validate the custom fields before adding the bug.
$t_related_custom_field_ids = custom_field_get_linked_ids($t_bug_data->project_id);
foreach ($t_related_custom_field_ids as $t_id) {
$t_def = custom_field_get_definition($t_id);
# Produce an error if the field is required but wasn't posted
if (!gpc_isset_custom_field($t_id, $t_def['type']) && $t_def['require_report']) {
error_parameters(lang_get_defaulted(custom_field_get_field($t_id, 'name')));
trigger_error(ERROR_EMPTY_FIELD, ERROR);
}
if (!custom_field_validate($t_id, gpc_get_custom_field("custom_field_{$t_id}", $t_def['type'], NULL))) {
error_parameters(lang_get_defaulted(custom_field_get_field($t_id, 'name')));
trigger_error(ERROR_CUSTOM_FIELD_INVALID_VALUE, ERROR);
}
}
# Allow plugins to pre-process bug data
$t_bug_data = event_signal('EVENT_REPORT_BUG_DATA', $t_bug_data);
# Ensure that resolved bugs have a handler
示例2: lang_get
# You need either global permissions or project-specific permissions to link
# custom fields
if (access_has_project_level(config_get('custom_field_link_threshold'), $f_project_id) && count(custom_field_get_ids()) > 0) {
?>
<br />
<div id="customfields" align="center">
<table class="width75" cellspacing="1">
<tr>
<td class="form-title" colspan="3">
<?php
echo lang_get('custom_fields_setup');
?>
</td>
</tr>
<?php
$t_custom_fields = custom_field_get_linked_ids($f_project_id);
if (count($t_custom_fields) > 0) {
?>
<tr class="row-category">
<td width="50%">
<?php
echo lang_get('custom_field');
?>
</td>
<td width="25%">
<?php
echo lang_get('custom_field_sequence');
?>
</td>
<td class="center" width="25%">
<?php
示例3: bug_group_action_get_commands
/**
* Get a list of bug group actions available to the current user for one or
* more projects.
* @param array $p_project_ids An array containing one or more project IDs.
* @return array
*/
function bug_group_action_get_commands(array $p_project_ids = null)
{
if ($p_project_ids === null || count($p_project_ids) == 0) {
$p_project_ids = array(ALL_PROJECTS);
}
$t_commands = array();
foreach ($p_project_ids as $t_project_id) {
if (!isset($t_commands['MOVE']) && access_has_project_level(config_get('move_bug_threshold', null, null, $t_project_id), $t_project_id)) {
$t_commands['MOVE'] = lang_get('actiongroup_menu_move');
}
if (!isset($t_commands['COPY']) && access_has_any_project(config_get('report_bug_threshold', null, null, $t_project_id))) {
$t_commands['COPY'] = lang_get('actiongroup_menu_copy');
}
if (!isset($t_commands['ASSIGN']) && access_has_project_level(config_get('update_bug_assign_threshold', null, null, $t_project_id), $t_project_id)) {
if (ON == config_get('auto_set_status_to_assigned', null, null, $t_project_id) && access_has_project_level(access_get_status_threshold(config_get('bug_assigned_status', null, null, $t_project_id), $t_project_id), $t_project_id)) {
$t_commands['ASSIGN'] = lang_get('actiongroup_menu_assign');
} else {
$t_commands['ASSIGN'] = lang_get('actiongroup_menu_assign');
}
}
if (!isset($t_commands['CLOSE']) && access_has_project_level(config_get('update_bug_status_threshold', null, null, $t_project_id), $t_project_id) && (access_has_project_level(access_get_status_threshold(config_get('bug_closed_status_threshold', null, null, $t_project_id), $t_project_id), $t_project_id) || access_has_project_level(config_get('allow_reporter_close', null, null, $t_project_id), $t_project_id))) {
$t_commands['CLOSE'] = lang_get('actiongroup_menu_close');
}
if (!isset($t_commands['DELETE']) && access_has_project_level(config_get('delete_bug_threshold', null, null, $t_project_id), $t_project_id)) {
$t_commands['DELETE'] = lang_get('actiongroup_menu_delete');
}
if (!isset($t_commands['RESOLVE']) && access_has_project_level(config_get('update_bug_status_threshold', null, null, $t_project_id), $t_project_id) && access_has_project_level(access_get_status_threshold(config_get('bug_resolved_status_threshold', null, null, $t_project_id), $t_project_id), $t_project_id)) {
$t_commands['RESOLVE'] = lang_get('actiongroup_menu_resolve');
}
if (!isset($t_commands['SET_STICKY']) && access_has_project_level(config_get('set_bug_sticky_threshold', null, null, $t_project_id), $t_project_id)) {
$t_commands['SET_STICKY'] = lang_get('actiongroup_menu_set_sticky');
}
if (!isset($t_commands['UP_PRIOR']) && access_has_project_level(config_get('update_bug_threshold', null, null, $t_project_id), $t_project_id)) {
$t_commands['UP_PRIOR'] = lang_get('actiongroup_menu_update_priority');
}
if (!isset($t_commands['EXT_UPDATE_SEVERITY']) && access_has_project_level(config_get('update_bug_threshold', null, null, $t_project_id), $t_project_id)) {
$t_commands['EXT_UPDATE_SEVERITY'] = lang_get('actiongroup_menu_update_severity');
}
if (!isset($t_commands['UP_STATUS']) && access_has_project_level(config_get('update_bug_status_threshold', null, null, $t_project_id), $t_project_id)) {
$t_commands['UP_STATUS'] = lang_get('actiongroup_menu_update_status');
}
if (!isset($t_commands['UP_CATEGORY']) && access_has_project_level(config_get('update_bug_threshold', null, null, $t_project_id), $t_project_id)) {
$t_commands['UP_CATEGORY'] = lang_get('actiongroup_menu_update_category');
}
if (!isset($t_commands['VIEW_STATUS']) && access_has_project_level(config_get('change_view_status_threshold', null, null, $t_project_id), $t_project_id)) {
$t_commands['VIEW_STATUS'] = lang_get('actiongroup_menu_update_view_status');
}
if (!isset($t_commands['EXT_UPDATE_PRODUCT_BUILD']) && config_get('enable_product_build', null, null, $t_project_id) == ON && access_has_project_level(config_get('update_bug_threshold', null, null, $t_project_id), $t_project_id)) {
$t_commands['EXT_UPDATE_PRODUCT_BUILD'] = lang_get('actiongroup_menu_update_product_build');
}
if (!isset($t_commands['EXT_ADD_NOTE']) && access_has_project_level(config_get('add_bugnote_threshold', null, null, $t_project_id), $t_project_id)) {
$t_commands['EXT_ADD_NOTE'] = lang_get('actiongroup_menu_add_note');
}
if (!isset($t_commands['EXT_ATTACH_TAGS']) && access_has_project_level(config_get('tag_attach_threshold', null, null, $t_project_id), $t_project_id)) {
$t_commands['EXT_ATTACH_TAGS'] = lang_get('actiongroup_menu_attach_tags');
}
if (!isset($t_commands['UP_FIXED_IN_VERSION']) && version_should_show_product_version($t_project_id) && access_has_project_level(config_get('update_bug_threshold', null, null, $t_project_id), $t_project_id)) {
$t_commands['UP_FIXED_IN_VERSION'] = lang_get('actiongroup_menu_update_fixed_in_version');
}
if (!isset($t_commands['UP_TARGET_VERSION']) && version_should_show_product_version($t_project_id) && access_has_project_level(config_get('roadmap_update_threshold', null, null, $t_project_id), $t_project_id)) {
$t_commands['UP_TARGET_VERSION'] = lang_get('actiongroup_menu_update_target_version');
}
$t_custom_field_ids = custom_field_get_linked_ids($t_project_id);
foreach ($t_custom_field_ids as $t_custom_field_id) {
if (!custom_field_has_write_access_to_project($t_custom_field_id, $t_project_id)) {
continue;
}
$t_custom_field_def = custom_field_get_definition($t_custom_field_id);
$t_command_id = 'custom_field_' . $t_custom_field_id;
$t_command_caption = sprintf(lang_get('actiongroup_menu_update_field'), lang_get_defaulted($t_custom_field_def['name']));
$t_commands[$t_command_id] = string_display($t_command_caption);
}
}
$t_custom_group_actions = config_get('custom_group_actions');
foreach ($t_custom_group_actions as $t_custom_group_action) {
# use label if provided to get the localized text, otherwise fallback to action name.
if (isset($t_custom_group_action['label'])) {
$t_commands[$t_custom_group_action['action']] = lang_get_defaulted($t_custom_group_action['label']);
} else {
$t_commands[$t_custom_group_action['action']] = lang_get_defaulted($t_custom_group_action['action']);
}
}
return $t_commands;
}
示例4: mc_project_get_custom_fields
/**
* Get the custom fields that belong to the specified project.
*
* @param string $p_username The name of the user trying to access the versions.
* @param string $p_password The password of the user.
* @param integer $p_project_id The id of the project to retrieve the custom fields for.
* @return Array representing a CustomFieldDefinitionDataArray structure.
*/
function mc_project_get_custom_fields($p_username, $p_password, $p_project_id)
{
$t_user_id = mci_check_login($p_username, $p_password);
if ($t_user_id === false) {
return mci_soap_fault_login_failed();
}
if (!project_exists($p_project_id)) {
return new soap_fault('Client', '', "Project '{$p_project_id}' does not exist.");
}
if (!mci_has_readonly_access($t_user_id, $p_project_id)) {
return mci_soap_fault_access_denied($t_user_id);
}
$t_result = array();
$t_related_custom_field_ids = custom_field_get_linked_ids($p_project_id);
foreach (custom_field_get_linked_ids($p_project_id) as $t_id) {
$t_def = custom_field_get_definition($t_id);
if (access_has_project_level($t_def['access_level_r'], $p_project_id)) {
$t_result[] = array('field' => array('id' => $t_def['id'], 'name' => $t_def['name']), 'type' => $t_def['type'], 'default_value' => $t_def['default_value'], 'possible_values' => $t_def['possible_values'], 'valid_regexp' => $t_def['valid_regexp'], 'access_level_r' => $t_def['access_level_r'], 'access_level_rw' => $t_def['access_level_rw'], 'length_min' => $t_def['length_min'], 'length_max' => $t_def['length_max'], 'display_report' => $t_def['display_report'], 'display_update' => $t_def['display_update'], 'display_resolved' => $t_def['display_resolved'], 'display_closed' => $t_def['display_closed'], 'require_report' => $t_def['require_report'], 'require_update' => $t_def['require_update'], 'require_resolved' => $t_def['require_resolved'], 'require_closed' => $t_def['require_closed']);
}
}
return $t_result;
}
示例5: columns_get_custom_fields
/**
* Get all custom_field columns for the current project / current user..
* @param int $p_project_id project id
* @return array array of columns
* @access public
*/
function columns_get_custom_fields($p_project_id = null)
{
# Add project custom fields to the array. Only add the ones for which the current user has at least read access.
if ($p_project_id === null) {
$t_project_id = helper_get_current_project();
} else {
$t_project_id = $p_project_id;
}
$t_related_custom_field_ids = custom_field_get_linked_ids($t_project_id);
foreach ($t_related_custom_field_ids as $t_id) {
if (!custom_field_has_read_access_by_project_id($t_id, $t_project_id)) {
continue;
}
$t_def = custom_field_get_definition($t_id);
$t_columns[] = 'custom_' . strtolower($t_def['name']);
}
return $t_columns;
}
示例6: project_copy_custom_fields
function project_copy_custom_fields($p_destination_id, $p_source_id)
{
$t_custom_field_ids = custom_field_get_linked_ids($p_source_id);
foreach ($t_custom_field_ids as $t_custom_field_id) {
if (!custom_field_is_linked($t_custom_field_id, $p_destination_id)) {
custom_field_link($t_custom_field_id, $p_destination_id);
$t_sequence = custom_field_get_sequence($t_custom_field_id, $p_source_id);
custom_field_set_sequence($t_custom_field_id, $p_destination_id, $t_sequence);
}
}
}
示例7: filter_draw_selection_area2
function filter_draw_selection_area2($p_page_number, $p_for_screen = true, $p_expanded = true)
{
$t_form_name_suffix = $p_expanded ? '_open' : '_closed';
$t_filter = current_user_get_bug_filter();
$t_filter = filter_ensure_valid_filter($t_filter);
$t_project_id = helper_get_current_project();
$t_page_number = (int) $p_page_number;
$t_view_type = $t_filter['_view_type'];
$t_tdclass = 'small-caption';
$t_trclass = 'row-category2';
$t_action = 'view_all_set.php?f=3';
if ($p_for_screen == false) {
$t_tdclass = 'print';
$t_trclass = '';
$t_action = 'view_all_set.php';
}
?>
<br />
<form method="post" name="filters<?php
echo $t_form_name_suffix;
?>
" id="filters_form<?php
echo $t_form_name_suffix;
?>
" action="<?php
print $t_action;
?>
">
<input type="hidden" name="type" value="1" />
<?php
if ($p_for_screen == false) {
print '<input type="hidden" name="print" value="1" />';
print '<input type="hidden" name="offset" value="0" />';
}
?>
<input type="hidden" name="page_number" value="<?php
print $t_page_number;
?>
" />
<input type="hidden" name="view_type" value="<?php
print $t_view_type;
?>
" />
<table class="width100" cellspacing="1">
<?php
$t_filter_cols = config_get('filter_custom_fields_per_row');
if ($p_expanded) {
$t_custom_cols = $t_filter_cols;
$t_current_user_access_level = current_user_get_access_level();
$t_accessible_custom_fields_ids = array();
$t_accessible_custom_fields_names = array();
$t_accessible_custom_fields_values = array();
$t_num_custom_rows = 0;
$t_per_row = 0;
if (ON == config_get('filter_by_custom_fields')) {
$t_custom_fields = custom_field_get_linked_ids($t_project_id);
foreach ($t_custom_fields as $t_cfid) {
$t_field_info = custom_field_cache_row($t_cfid, true);
if ($t_field_info['access_level_r'] <= $t_current_user_access_level) {
$t_accessible_custom_fields_ids[] = $t_cfid;
$t_accessible_custom_fields_names[] = $t_field_info['name'];
$t_accessible_custom_fields_types[] = $t_field_info['type'];
$t_accessible_custom_fields_values[] = custom_field_distinct_values($t_cfid);
}
}
if (count($t_accessible_custom_fields_ids) > 0) {
$t_per_row = config_get('filter_custom_fields_per_row');
$t_num_custom_rows = ceil(count($t_accessible_custom_fields_ids) / $t_per_row);
}
}
$t_filters_url = 'view_filters_page.php?for_screen=' . $p_for_screen;
if ('advanced' == $t_view_type) {
$t_filters_url = $t_filters_url . '&view_type=advanced';
}
$t_filters_url = $t_filters_url . '&target_field=';
$t_show_version = ON == config_get('show_product_version') || AUTO == config_get('show_product_version') && count(version_get_all_rows_with_subs($t_project_id)) > 0;
# overload handler_id setting if user isn't supposed to see them (ref #6189)
if (!access_has_project_level(config_get('view_handler_threshold'), $t_project_id)) {
$t_filter['handler_id'] = array(META_FILTER_ANY);
}
?>
<tr <?php
print "class=\"" . $t_trclass . "\"";
?>
>
<td class="small-caption" valign="top">
<a href="<?php
print $t_filters_url . 'reporter_id[]';
?>
" id="reporter_id_filter"><?php
print lang_get('reporter');
?>
:</a>
</td>
<td class="small-caption" valign="top">
<a href="<?php
print $t_filters_url . 'user_monitor[]';
//.........这里部分代码省略.........
示例8: print_custom_field_projects_list
function print_custom_field_projects_list($p_field_id)
{
$c_field_id = (int) $p_field_id;
$t_project_ids = custom_field_get_project_ids($p_field_id);
$t_security_token = form_security_param('manage_proj_custom_field_remove');
foreach ($t_project_ids as $t_project_id) {
$t_project_name = project_get_field($t_project_id, 'name');
$t_sequence = custom_field_get_sequence($p_field_id, $t_project_id);
echo '<strong>', string_display_line($t_project_name), '</strong>: ';
print_bracket_link("manage_proj_custom_field_remove.php?field_id={$c_field_id}&project_id={$t_project_id}&return=custom_field{$t_security_token}", lang_get('remove_link'));
echo '<br />- ';
$t_linked_field_ids = custom_field_get_linked_ids($t_project_id);
$t_current_project_fields = array();
$t_first = true;
foreach ($t_linked_field_ids as $t_current_field_id) {
if ($t_first) {
$t_first = false;
} else {
echo ', ';
}
if ($t_current_field_id == $p_field_id) {
echo '<em>';
}
echo string_display_line(custom_field_get_field($t_current_field_id, 'name'));
echo ' (', custom_field_get_sequence($t_current_field_id, $t_project_id), ')';
if ($t_current_field_id == $p_field_id) {
echo '</em>';
}
}
echo '<br /><br />';
}
}
示例9: filter_draw_selection_area2
/**
* Prints the filter selection area for both the bug list view screen and
* the bug list print screen. This function was an attempt to make it easier to
* add new filters and rearrange them on screen for both pages.
* @param int $p_page_number
* @param bool $p_for_screen
* @param bool $p_expanded
*/
function filter_draw_selection_area2($p_page_number, $p_for_screen = true, $p_expanded = true)
{
$t_form_name_suffix = $p_expanded ? '_open' : '_closed';
$t_filter = current_user_get_bug_filter();
$t_filter = filter_ensure_valid_filter($t_filter);
$t_project_id = helper_get_current_project();
$t_page_number = (int) $p_page_number;
$t_view_type = $t_filter['_view_type'];
$t_tdclass = 'small-caption';
$t_trclass = 'row-category2';
$t_action = 'view_all_set.php?f=3';
if ($p_for_screen == false) {
$t_tdclass = 'print';
$t_trclass = '';
$t_action = 'view_all_set.php';
}
?>
<br />
<form method="post" name="filters<?php
echo $t_form_name_suffix;
?>
" id="filters_form<?php
echo $t_form_name_suffix;
?>
" action="<?php
echo $t_action;
?>
">
<?php
# CSRF protection not required here - form does not result in modifications
?>
<input type="hidden" name="type" value="1" />
<?php
if ($p_for_screen == false) {
echo '<input type="hidden" name="print" value="1" />';
echo '<input type="hidden" name="offset" value="0" />';
}
?>
<input type="hidden" name="page_number" value="<?php
echo $t_page_number;
?>
" />
<input type="hidden" name="view_type" value="<?php
echo $t_view_type;
?>
" />
<table class="width100" cellspacing="1">
<?php
$t_filter_cols = config_get('filter_custom_fields_per_row');
if ($p_expanded) {
$t_custom_cols = $t_filter_cols;
$t_current_user_access_level = current_user_get_access_level();
$t_accessible_custom_fields_ids = array();
$t_accessible_custom_fields_names = array();
$t_accessible_custom_fields_values = array();
$t_num_custom_rows = 0;
$t_per_row = 0;
if (ON == config_get('filter_by_custom_fields')) {
$t_custom_fields = custom_field_get_linked_ids($t_project_id);
foreach ($t_custom_fields as $t_cfid) {
$t_field_info = custom_field_cache_row($t_cfid, true);
if ($t_field_info['access_level_r'] <= $t_current_user_access_level && $t_field_info['filter_by']) {
$t_accessible_custom_fields_ids[] = $t_cfid;
$t_accessible_custom_fields_names[] = $t_field_info['name'];
$t_accessible_custom_fields_types[] = $t_field_info['type'];
$t_accessible_custom_fields_values[] = custom_field_distinct_values($t_field_info);
}
}
if (count($t_accessible_custom_fields_ids) > 0) {
$t_per_row = config_get('filter_custom_fields_per_row');
$t_num_custom_rows = ceil(count($t_accessible_custom_fields_ids) / $t_per_row);
}
}
$t_filters_url = 'view_filters_page.php?for_screen=' . $p_for_screen;
if ('advanced' == $t_view_type) {
$t_filters_url = $t_filters_url . '&view_type=advanced';
}
$t_filters_url = $t_filters_url . '&target_field=';
$t_show_product_version = version_should_show_product_version($t_project_id);
$t_show_build = $t_show_product_version && config_get('enable_product_build') == ON;
# overload handler_id setting if user isn't supposed to see them (ref #6189)
if (!access_has_project_level(config_get('view_handler_threshold'), $t_project_id)) {
$t_filter[FILTER_PROPERTY_HANDLER_ID] = array(META_FILTER_ANY);
}
?>
<tr <?php
echo "class=\"" . $t_trclass . "\"";
?>
>
//.........这里部分代码省略.........
示例10: custom_field_get_linked_ids
<!-- Custom Fields -->
<?php
/** @todo thraxisp - I undid part of the change for #5068 for #5527
* We really need to say what fields are shown in which statusses. For now,
* this page will show required custom fields in update mode, or
* display or required fields on resolve or close
*/
$t_custom_status_label = "update";
# Don't show custom fields by default
if ($f_new_status == $t_resolved && $f_new_status < $t_closed) {
$t_custom_status_label = "resolved";
}
if ($t_closed == $f_new_status) {
$t_custom_status_label = "closed";
}
$t_related_custom_field_ids = custom_field_get_linked_ids(bug_get_field($f_bug_id, 'project_id'));
foreach ($t_related_custom_field_ids as $t_id) {
$t_def = custom_field_get_definition($t_id);
$t_display = $t_def['display_' . $t_custom_status_label];
$t_require = $t_def['require_' . $t_custom_status_label];
if ("update" == $t_custom_status_label && !$t_require) {
continue;
}
if (in_array($t_custom_status_label, array("resolved", "closed")) && !($t_display || $t_require)) {
continue;
}
if (custom_field_has_write_access($t_id, $f_bug_id)) {
?>
<tr <?php
echo helper_alternate_class();
?>
示例11: kanban_ajax_request_bug_update_status
/**
* updates the status field
* @return bool
* @access public
* @see bug_update.php
*/
function kanban_ajax_request_bug_update_status()
{
$p_bug_id = gpc_get_int('id');
$p_new_status = gpc_get_int('new_status');
$t_project_id = gpc_get_int('project_id');
$c_bug_id = (int) $p_bug_id;
$f_new_status = (int) $p_new_status;
$t_bug_data = bug_get($c_bug_id, true);
$f_update_mode = gpc_get_bool('update_mode', FALSE);
# set if called from generic update page
if (!(access_has_bug_level(access_get_status_threshold($f_new_status, $t_project_id), $c_bug_id) || access_has_bug_level(config_get('update_bug_threshold'), $c_bug_id) || bug_get_field($c_bug_id, 'reporter_id') == auth_get_current_user_id() && (ON == config_get('allow_reporter_reopen') || ON == config_get('allow_reporter_close')))) {
access_denied();
}
# extract current extended information
$t_old_bug_status = $t_bug_data->status;
log_event(LOG_AJAX, "Old bug status {$t_old_bug_status} - trying update to new status {$f_new_status}...");
$t_bug_data->reporter_id = gpc_get_int('reporter_id', $t_bug_data->reporter_id);
$t_bug_data->handler_id = gpc_get_int('handler_id', $t_bug_data->handler_id);
$t_bug_data->duplicate_id = gpc_get_int('duplicate_id', $t_bug_data->duplicate_id);
$t_bug_data->priority = gpc_get_int('priority', $t_bug_data->priority);
$t_bug_data->severity = gpc_get_int('severity', $t_bug_data->severity);
$t_bug_data->reproducibility = gpc_get_int('reproducibility', $t_bug_data->reproducibility);
$t_bug_data->status = gpc_get_int('new_status', $t_bug_data->status);
$t_bug_data->resolution = gpc_get_int('resolution', $t_bug_data->resolution);
$t_bug_data->projection = gpc_get_int('projection', $t_bug_data->projection);
$t_bug_data->category_id = gpc_get_int('category_id', $t_bug_data->category_id);
$t_bug_data->eta = gpc_get_int('eta', $t_bug_data->eta);
$t_bug_data->os = gpc_get_string('os', $t_bug_data->os);
$t_bug_data->os_build = gpc_get_string('os_build', $t_bug_data->os_build);
$t_bug_data->platform = gpc_get_string('platform', $t_bug_data->platform);
$t_bug_data->version = gpc_get_string('version', $t_bug_data->version);
$t_bug_data->build = gpc_get_string('build', $t_bug_data->build);
$t_bug_data->fixed_in_version = gpc_get_string('fixed_in_version', $t_bug_data->fixed_in_version);
$t_bug_data->view_state = gpc_get_int('view_state', $t_bug_data->view_state);
$t_bug_data->summary = gpc_get_string('summary', $t_bug_data->summary);
$t_due_date = gpc_get_string('due_date', null);
if (access_has_project_level(config_get('roadmap_update_threshold'), $t_bug_data->project_id)) {
$t_bug_data->target_version = gpc_get_string('target_version', $t_bug_data->target_version);
}
if ($t_due_date !== null) {
if (is_blank($t_due_date)) {
$t_bug_data->due_date = 1;
} else {
$t_bug_data->due_date = strtotime($t_due_date);
}
}
$t_bug_data->description = gpc_get_string('description', $t_bug_data->description);
$t_bug_data->steps_to_reproduce = gpc_get_string('steps_to_reproduce', $t_bug_data->steps_to_reproduce);
$t_bug_data->additional_information = gpc_get_string('additional_information', $t_bug_data->additional_information);
$f_private = gpc_get_bool('private');
$f_bugnote_text = gpc_get_string('bugnote_text', '');
$f_time_tracking = gpc_get_string('time_tracking', '0:00');
$f_close_now = gpc_get_string('close_now', false);
# Handle auto-assigning
if (config_get('bug_submit_status') == $t_bug_data->status && $t_bug_data->status == $t_old_bug_status && 0 != $t_bug_data->handler_id && ON == config_get('auto_set_status_to_assigned')) {
$t_bug_data->status = config_get('bug_assigned_status');
}
helper_call_custom_function('issue_update_validate', array($c_bug_id, $t_bug_data, $f_bugnote_text));
$t_resolved = config_get('bug_resolved_status_threshold');
$t_closed = config_get('bug_closed_status_threshold');
$t_custom_status_label = "update";
# default info to check
if ($t_bug_data->status == $t_resolved) {
$t_custom_status_label = "resolved";
}
if ($t_bug_data->status == $t_closed) {
$t_custom_status_label = "closed";
}
$t_related_custom_field_ids = custom_field_get_linked_ids($t_bug_data->project_id);
foreach ($t_related_custom_field_ids as $t_id) {
$t_def = custom_field_get_definition($t_id);
# Only update the field if it would have been display for editing
if (!(!$f_update_mode && $t_def['require_' . $t_custom_status_label] || !$f_update_mode && $t_def['display_' . $t_custom_status_label] && in_array($t_custom_status_label, array("resolved", "closed")) || $f_update_mode && $t_def['display_update'] || $f_update_mode && $t_def['require_update'])) {
continue;
}
# Do not set custom field value if user has no write access.
if (!custom_field_has_write_access($t_id, $c_bug_id)) {
continue;
}
if ($t_def['require_' . $t_custom_status_label] && !gpc_isset_custom_field($t_id, $t_def['type'])) {
error_parameters(lang_get_defaulted(custom_field_get_field($t_id, 'name')));
trigger_error(ERROR_EMPTY_FIELD, ERROR);
}
# Only update the field if it is posted,
# or if it is empty, and the current value isn't the default
if (!gpc_isset_custom_field($t_id, $t_def['type']) && custom_field_get_value($t_id, $c_bug_id) == $t_def['default_value']) {
continue;
}
if (!custom_field_set_value($t_id, $c_bug_id, gpc_get_custom_field("custom_field_{$t_id}", $t_def['type'], NULL))) {
error_parameters(lang_get_defaulted(custom_field_get_field($t_id, 'name')));
log_event(LOG_AJAX, "Error setting new status: " . ERROR_CUSTOM_FIELD_INVALID_VALUE . "\nBugdata: " . print_r($t_bug_data, true) . " Line: " . __LINE__);
trigger_error(ERROR_CUSTOM_FIELD_INVALID_VALUE, ERROR);
}
}
//.........这里部分代码省略.........
示例12: format_value
function format_value($bug, $field_name)
{
$values = array('id' => function ($bug) {
return sprintf('%s <%s>', $bug->id, string_get_bug_view_url_with_fqdn($bug->id));
}, 'project_id' => function ($bug) {
return project_get_name($bug->project_id);
}, 'reporter_id' => function ($bug) {
return '@' . user_get_name($bug->reporter_id);
}, 'handler_id' => function ($bug) {
return empty($bug->handler_id) ? plugin_lang_get('no_user') : '@' . user_get_name($bug->handler_id);
}, 'duplicate_id' => function ($bug) {
return sprintf('%s <%s>', $bug->duplicate_id, string_get_bug_view_url_with_fqdn($bug->duplicate_id));
}, 'priority' => function ($bug) {
return get_enum_element('priority', $bug->priority);
}, 'severity' => function ($bug) {
return get_enum_element('severity', $bug->severity);
}, 'reproducibility' => function ($bug) {
return get_enum_element('reproducibility', $bug->reproducibility);
}, 'status' => function ($bug) {
return get_enum_element('status', $bug->status);
}, 'resolution' => function ($bug) {
return get_enum_element('resolution', $bug->resolution);
}, 'projection' => function ($bug) {
return get_enum_element('projection', $bug->projection);
}, 'category_id' => function ($bug) {
return category_full_name($bug->category_id, false);
}, 'eta' => function ($bug) {
return get_enum_element('eta', $bug->eta);
}, 'view_state' => function ($bug) {
return $bug->view_state == VS_PRIVATE ? lang_get('private') : lang_get('public');
}, 'sponsorship_total' => function ($bug) {
return sponsorship_format_amount($bug->sponsorship_total);
}, 'os' => function ($bug) {
return $bug->os;
}, 'os_build' => function ($bug) {
return $bug->os_build;
}, 'platform' => function ($bug) {
return $bug->platform;
}, 'version' => function ($bug) {
return $bug->version;
}, 'fixed_in_version' => function ($bug) {
return $bug->fixed_in_version;
}, 'target_version' => function ($bug) {
return $bug->target_version;
}, 'build' => function ($bug) {
return $bug->build;
}, 'summary' => function ($bug) {
return HipChatPlugin::clean_summary(bug_format_summary($bug->id, SUMMARY_FIELD));
}, 'last_updated' => function ($bug) {
return date(config_get('short_date_format'), $bug->last_updated);
}, 'date_submitted' => function ($bug) {
return date(config_get('short_date_format'), $bug->date_submitted);
}, 'due_date' => function ($bug) {
return date(config_get('short_date_format'), $bug->due_date);
}, 'description' => function ($bug) {
return string_display_links($bug->description);
}, 'steps_to_reproduce' => function ($bug) {
return string_display_links($bug->steps_to_reproduce);
}, 'additional_information' => function ($bug) {
return string_display_links($bug->additional_information);
});
// Discover custom fields.
$t_related_custom_field_ids = custom_field_get_linked_ids($bug->project_id);
foreach ($t_related_custom_field_ids as $t_id) {
$t_def = custom_field_get_definition($t_id);
$values['custom_' . $t_def['name']] = function ($bug) use($t_id) {
return custom_field_get_value($t_id, $bug->id);
};
}
if (isset($values[$field_name])) {
$func = $values[$field_name];
return $func($bug);
} else {
return sprintf(plugin_lang_get('unknown_field'), $field_name);
}
}
示例13: save_bug
function save_bug($p_project_id, $p_user_id)
{
require 'ProfileAcraExt.php';
$t_project_id = $p_project_id;
global $g_cache_current_user_id;
$g_cache_current_user_id = $p_user_id;
$t_bug_data = new BugData();
$t_bug_data->project_id = $t_project_id;
$t_bug_data->reporter_id = $p_user_id;
$t_bug_data->build = gpc_get_string('APP_VERSION_CODE', '');
$t_bug_data->platform = "Android";
$t_bug_data->os = gpc_get_string('ANDROID_VERSION', '');
//gpc_get_string( 'os', '' );
$t_os_build = gpc_get_string('BUILD', '');
if (preg_match('/DISPLAY\\s*=\\s*(.*)/', $t_os_build, $t_match)) {
var_dump($t_match);
$t_os_build = $t_match[1];
} else {
$t_os_build = gpc_get_string('ANDROID_VERSION', '');
}
$t_bug_data->os_build = $t_os_build;
//gpc_get_string( 'os_build', '' );
$t_bug_data->version = gpc_get_string('APP_VERSION_NAME', '');
$t_bug_data->profile_id = profile_create_unique(ALL_USERS, $t_bug_data->platform, $t_bug_data->os, $t_bug_data->os_build, "");
$t_bug_data->handler_id = gpc_get_int('handler_id', 0);
$t_bug_data->view_state = gpc_get_int('view_state', config_get('default_bug_view_status', 'VS_PRIVATE', 'acra_reporter'));
$t_bug_data->category_id = $this->get_category_id($p_project_id);
//gpc_get_int( 'category_id', 0 );
$t_bug_data->reproducibility = 10;
//gpc_get_int( 'reproducibility', config_get( 'default_bug_reproducibility' ) );
$t_bug_data->severity = CRASH;
//gpc_get_int( 'severity', config_get( 'default_bug_severity' ) );
$t_bug_data->priority = HIGH;
//gpc_get_int( 'priority', config_get( 'default_bug_priority' ) );
$t_bug_data->projection = gpc_get_int('projection', config_get('default_bug_projection'));
$t_bug_data->eta = gpc_get_int('eta', config_get('default_bug_eta'));
$t_bug_data->resolution = OPEN;
//gpc_get_string('resolution', config_get( 'default_bug_resolution' ) );
$t_bug_data->status = NEW_;
//gpc_get_string( 'status', config_get( 'bug_submit_status' ) );
$t_bug_data->description = gpc_get_string('STACK_TRACE');
//gpc_get_string( 'description' );
$t_bug_data->summary = get_bug_summary_by_version(gpc_get_string('APP_VERSION_NAME', ''), $t_bug_data->description, $t_project_id);
$t_bug_data->steps_to_reproduce = gpc_get_string('LOGCAT', "");
$t_bug_data->additional_information = gpc_get_string('CRASH_CONFIGURATION', "");
$t_bug_data->due_date = gpc_get_string('USER_CRASH_DATE', '');
if (is_blank($t_bug_data->due_date)) {
$t_bug_data->due_date = date_get_null();
}
$f_files = gpc_get_file('ufile', null);
/** @todo (thraxisp) Note that this always returns a structure */
$f_report_stay = gpc_get_bool('report_stay', false);
$f_copy_notes_from_parent = gpc_get_bool('copy_notes_from_parent', false);
helper_call_custom_function('issue_create_validate', array($t_bug_data));
# Validate the custom fields before adding the bug.
$t_related_custom_field_ids = custom_field_get_linked_ids($t_bug_data->project_id);
foreach ($t_related_custom_field_ids as $t_id) {
$t_def = custom_field_get_definition($t_id);
# Produce an error if the field is required but wasn't posted
if (!gpc_isset_custom_field($t_id, $t_def['type']) && $t_def['require_report']) {
error_parameters(lang_get_defaulted(custom_field_get_field($t_id, 'name')));
trigger_error(ERROR_EMPTY_FIELD, ERROR);
}
if (!custom_field_validate($t_id, gpc_get_custom_field("custom_field_{$t_id}", $t_def['type'], NULL))) {
error_parameters(lang_get_defaulted(custom_field_get_field($t_id, 'name')));
trigger_error(ERROR_CUSTOM_FIELD_INVALID_VALUE, ERROR);
}
}
# Allow plugins to pre-process bug data
$t_bug_data = event_signal('EVENT_REPORT_BUG_DATA', $t_bug_data);
# Ensure that resolved bugs have a handler
if ($t_bug_data->handler_id == NO_USER && $t_bug_data->status >= config_get('bug_resolved_status_threshold')) {
$t_bug_data->handler_id = $this->get_user_id();
}
# Create the bug
$t_bug_id = $t_bug_data->create();
# Mark the added issue as visited so that it appears on the last visited list.
last_visited_issue($t_bug_id);
# Handle the file upload
if ($f_files != null) {
$t_files = helper_array_transpose($f_files);
if ($t_files != null) {
foreach ($t_files as $t_file) {
if (!empty($t_file['name'])) {
file_add($t_bug_id, $t_file, 'bug');
}
}
}
}
# Handle custom field submission
foreach ($t_related_custom_field_ids as $t_id) {
# Do not set custom field value if user has no write access
if (!custom_field_has_write_access($t_id, $t_bug_id)) {
continue;
}
$t_def = custom_field_get_definition($t_id);
if (!custom_field_set_value($t_id, $t_bug_id, gpc_get_custom_field("custom_field_{$t_id}", $t_def['type'], $t_def['default_value']), false)) {
error_parameters(lang_get_defaulted(custom_field_get_field($t_id, 'name')));
trigger_error(ERROR_CUSTOM_FIELD_INVALID_VALUE, ERROR);
}
//.........这里部分代码省略.........
示例14: filter_draw_selection_area2
/**
* Prints the filter selection area for both the bug list view screen and
* the bug list print screen. This function was an attempt to make it easier to
* add new filters and rearrange them on screen for both pages.
* @param integer $p_page_number Page number.
* @param boolean $p_for_screen Whether output is for screen view.
* @param boolean $p_expanded Whether to display expanded.
* @return void
*/
function filter_draw_selection_area2($p_page_number, $p_for_screen = true, $p_expanded = true)
{
$t_form_name_suffix = $p_expanded ? '_open' : '_closed';
$t_filter = current_user_get_bug_filter();
$t_filter = filter_ensure_valid_filter($t_filter === false ? array() : $t_filter);
$t_project_id = helper_get_current_project();
$t_page_number = (int) $p_page_number;
$t_view_type = $t_filter['_view_type'];
$t_tdclass = 'small-caption';
$t_trclass = 'row-category2';
$t_action = 'view_all_set.php?f=3';
if ($p_for_screen == false) {
$t_tdclass = 'print';
$t_trclass = '';
$t_action = 'view_all_set.php';
}
?>
<div class="filter-box">
<form method="post" name="filters<?php
echo $t_form_name_suffix;
?>
" id="filters_form<?php
echo $t_form_name_suffix;
?>
" action="<?php
echo $t_action;
?>
">
<?php
# CSRF protection not required here - form does not result in modifications
?>
<input type="hidden" name="type" value="1" />
<?php
if ($p_for_screen == false) {
echo '<input type="hidden" name="print" value="1" />';
echo '<input type="hidden" name="offset" value="0" />';
}
?>
<input type="hidden" name="page_number" value="<?php
echo $t_page_number;
?>
" />
<input type="hidden" name="view_type" value="<?php
echo $t_view_type;
?>
" />
<?php
$t_filter_cols = config_get('filter_custom_fields_per_row');
if ($p_expanded) {
?>
<table width="100%" cellspacing="1">
<?php
$t_custom_cols = $t_filter_cols;
$t_current_user_access_level = current_user_get_access_level();
$t_accessible_custom_fields_ids = array();
$t_accessible_custom_fields_names = array();
$t_accessible_custom_fields_values = array();
$t_num_custom_rows = 0;
$t_per_row = 0;
if (ON == config_get('filter_by_custom_fields')) {
$t_custom_fields = custom_field_get_linked_ids($t_project_id);
foreach ($t_custom_fields as $t_cfid) {
$t_field_info = custom_field_cache_row($t_cfid, true);
if ($t_field_info['access_level_r'] <= $t_current_user_access_level && $t_field_info['filter_by']) {
$t_accessible_custom_fields_ids[] = $t_cfid;
$t_accessible_custom_fields_names[] = $t_field_info['name'];
$t_accessible_custom_fields_types[] = $t_field_info['type'];
$t_accessible_custom_fields_values[] = custom_field_distinct_values($t_field_info);
}
}
if (count($t_accessible_custom_fields_ids) > 0) {
$t_per_row = config_get('filter_custom_fields_per_row');
$t_num_custom_rows = ceil(count($t_accessible_custom_fields_ids) / $t_per_row);
}
}
$t_filters_url = 'view_filters_page.php?for_screen=' . $p_for_screen;
if ('advanced' == $t_view_type) {
$t_filters_url = $t_filters_url . '&view_type=advanced';
}
$t_filters_url = $t_filters_url . '&target_field=';
$t_show_product_version = version_should_show_product_version($t_project_id);
$t_show_build = $t_show_product_version && config_get('enable_product_build') == ON;
# overload handler_id setting if user isn't supposed to see them (ref #6189)
if (!access_has_any_project(config_get('view_handler_threshold'))) {
$t_filter[FILTER_PROPERTY_HANDLER_ID] = array(META_FILTER_ANY);
}
$t_dynamic_filter_expander_class = config_get('use_dynamic_filters') ? ' class="dynamic-filter-expander"' : '';
?>
<tr <?php
//.........这里部分代码省略.........
示例15: access_ensure_bug_level
# Ensure that the user has permission to change the view status of the issue.
if ($t_existing_bug->view_state !== $t_updated_bug->view_state) {
access_ensure_bug_level(config_get('change_view_status_threshold'), $f_bug_id);
}
# Determine the custom field "require check" to use for validating
# whether fields can be undefined during this bug update.
if ($t_close_issue) {
$t_cf_require_check = 'require_closed';
} else {
if ($t_resolve_issue) {
$t_cf_require_check = 'require_resolved';
} else {
$t_cf_require_check = 'require_update';
}
}
$t_related_custom_field_ids = custom_field_get_linked_ids($t_existing_bug->project_id);
$t_custom_fields_to_set = array();
foreach ($t_related_custom_field_ids as $t_cf_id) {
$t_cf_def = custom_field_get_definition($t_cf_id);
if (!gpc_isset_custom_field($t_cf_id, $t_cf_def['type'])) {
if ($t_cf_def[$t_cf_require_check]) {
# A value for the custom field was expected however
# no value was given by the user.
error_parameters(lang_get_defaulted(custom_field_get_field($t_cf_id, 'name')));
trigger_error(ERROR_EMPTY_FIELD, ERROR);
} else {
# The custom field isn't compulsory and the user did
# not supply a value. Therefore we can just ignore this
# custom field completely (ie. don't attempt to update
# the field).
continue;