예제 #1
0
 /**
  * Gets the localized label corresponding to a value.  Note that this method
  * takes in the standard / localized enums so that if the value is in the localized
  * enum but not the standard one, then it returns not found.
  *
  * @param string $enumString The standard enum string.
  * @param string $localizedEnumString  The localized enum string.
  * @param integer $value  The value to lookup.
  *
  * @return the label or the decorated value to represent not found.
  */
 public static function getLocalizedLabel($enumString, $localizedEnumString, $value)
 {
     if (!MantisEnum::hasValue($enumString, $value)) {
         return MantisEnum::getLabelForUnknownValue($value);
     }
     return MantisEnum::getLabel($localizedEnumString, $value);
 }
예제 #2
0
 /**
  * Gets the localized label corresponding to a value.  Note that this method
  * takes in the standard / localized enums so that if the value is in the localized
  * enum but not the standard one, then it returns not found.
  *
  * @param string  $p_enum_string           The standard enum string.
  * @param string  $p_localized_enum_string The localized enum string.
  * @param integer $p_value                 The value to lookup.
  *
  * @return string the label or the decorated value to represent not found.
  */
 public static function getLocalizedLabel($p_enum_string, $p_localized_enum_string, $p_value)
 {
     if (!MantisEnum::hasValue($p_enum_string, $p_value)) {
         return MantisEnum::getLabelForUnknownValue($p_value);
     }
     $t_assoc_array = MantisEnum::getAssocArrayIndexedByValues($p_localized_enum_string);
     if (isset($t_assoc_array[(int) $p_value])) {
         return $t_assoc_array[(int) $p_value];
     }
     return MantisEnum::getLabel($p_enum_string, $p_value);
 }
예제 #3
0
<!-- Access Level -->
<tr <?php 
echo helper_alternate_class();
?>
>
	<td class="category">
		<?php 
echo lang_get('access_level');
?>
	</td>
	<td>
		<select name="access_level">
			<?php 
$t_access_level = $t_user['access_level'];
if (!MantisEnum::hasValue(config_get('access_levels_enum_string'), $t_access_level)) {
    $t_access_level = config_get('default_new_account_access_level');
}
print_project_access_levels_option_list($t_access_level);
?>
		</select>
	</td>
</tr>

<!-- Enabled Checkbox -->
<tr <?php 
echo helper_alternate_class();
?>
>
	<td class="category">
		<?php 
예제 #4
0
/**
 * Validate workflow state to see if bug can be moved to requested state
 * @param int p_bug_status current bug status
 * @param int p_wanted_status new bug status
 * @return bool
 * @access public
 * @uses config_api.php
 * @uses utility_api.php
 */
function bug_check_workflow($p_bug_status, $p_wanted_status)
{
    $t_status_enum_workflow = config_get('status_enum_workflow');
    if (count($t_status_enum_workflow) < 1) {
        # workflow not defined, use default enum
        return true;
    }
    if ($p_bug_status == $p_wanted_status) {
        # no change in state, allow the transition
        return true;
    }
    # There should always be a possible next status, if not defined, then allow all.
    if (!isset($t_status_enum_workflow[$p_bug_status])) {
        return true;
    }
    # workflow defined - find allowed states
    $t_allowed_states = $t_status_enum_workflow[$p_bug_status];
    return MantisEnum::hasValue($t_allowed_states, $p_wanted_status);
}
예제 #5
0
/**
 * Validate workflow state to see if bug can be moved to requested state
 * @param int p_bug_status current bug status
 * @param int p_wanted_status new bug status
 * @return bool
 * @access public
 * @uses config_api.php
 * @uses utility_api.php
 */
function bug_check_workflow($p_bug_status, $p_wanted_status)
{
    $t_status_enum_workflow = config_get('status_enum_workflow');
    if (count($t_status_enum_workflow) < 1) {
        # workflow not defined, use default enum
        return true;
    }
    if ($p_bug_status == $p_wanted_status) {
        # no change in state, allow the transition
        return true;
    }
    # workflow defined - find allowed states
    $t_allowed_states = $t_status_enum_workflow[$p_bug_status];
    return MantisEnum::hasValue($t_allowed_states, $p_wanted_status);
}
예제 #6
0
 /**
  * Tests hasValue() method.
  */
 public function testHasValue()
 {
     $this->assertEquals(true, MantisEnum::hasValue(MantisEnumTest::ACCESS_LEVELS_ENUM, 10));
     $this->assertEquals(false, MantisEnum::hasValue(MantisEnumTest::ACCESS_LEVELS_ENUM, 5));
     $this->assertEquals(false, MantisEnum::hasValue(MantisEnumTest::EMPTY_ENUM, 10));
 }
예제 #7
0
/**
 * get the css class name for the given status, user and project
 * @param integer $p_status  An enumeration value.
 * @param integer $p_user    A valid user identifier.
 * @param integer $p_project A valid project identifier.
 * @return string
 *
 * @todo This does not work properly when displaying issues from a project other
 * than then current one, if the other project has custom status or colors.
 * This is due to the dynamic css for color coding (css/status_config.php).
 * Build CSS including project or even user-specific colors ?
 */
function html_get_status_css_class($p_status, $p_user = null, $p_project = null)
{
    $t_status_enum = config_get('status_enum_string', null, $p_user, $p_project);
    if (MantisEnum::hasValue($t_status_enum, $p_status)) {
        return 'status-' . $p_status . '-color';
    } else {
        return '';
    }
}
예제 #8
0
/**
 * Select the proper enumeration values for status based on workflow
 * or the input parameter if workflows are not used
 * @param integer $p_user_auth     A user identifier.
 * @param integer $p_current_value The current value.
 * @param boolean $p_show_current  Whether to show the current status.
 * @param boolean $p_add_close     Whether to add close option.
 * @param integer $p_project_id    A project identifier.
 * @return array
 */
function get_status_option_list($p_user_auth = 0, $p_current_value = 0, $p_show_current = true, $p_add_close = false, $p_project_id = ALL_PROJECTS)
{
    $t_config_var_value = config_get('status_enum_string', null, null, $p_project_id);
    $t_enum_workflow = config_get('status_enum_workflow', null, null, $p_project_id);
    if (count($t_enum_workflow) < 1 || !MantisEnum::hasValue($t_config_var_value, $p_current_value)) {
        # workflow not defined, use default enumeration
        $t_enum_values = MantisEnum::getValues($t_config_var_value);
    } else {
        # workflow defined - find allowed states
        if (isset($t_enum_workflow[$p_current_value])) {
            $t_enum_values = MantisEnum::getValues($t_enum_workflow[$p_current_value]);
        } else {
            # workflow was not set for this status, this shouldn't happen
            # caller should be able to handle empty list
            $t_enum_values = array();
        }
    }
    $t_enum_list = array();
    foreach ($t_enum_values as $t_enum_value) {
        if (($p_show_current || $p_current_value != $t_enum_value) && access_compare_level($p_user_auth, access_get_status_threshold($t_enum_value, $p_project_id))) {
            $t_enum_list[$t_enum_value] = get_enum_element('status', $t_enum_value);
        }
    }
    if ($p_show_current) {
        $t_enum_list[$p_current_value] = get_enum_element('status', $p_current_value);
    }
    if ($p_add_close && access_compare_level($p_current_value, config_get('bug_resolved_status_threshold', null, null, $p_project_id))) {
        $t_closed = config_get('bug_closed_status_threshold', null, null, $p_project_id);
        if ($p_show_current || $p_current_value != $t_closed) {
            $t_enum_list[$t_closed] = get_enum_element('status', $t_closed);
        }
    }
    return $t_enum_list;
}