Esempio n. 1
0
 function testArrayForValue()
 {
     $value = get_array_for_value('Jason');
     $this->assertEquals(1, count($value));
     $this->assertEquals('Jason', $value[0]);
     $value = get_array_for_value(array('Jason'));
     $this->assertEquals(1, count($value));
     $this->assertEquals('Jason', $value[0]);
 }
Esempio n. 2
0
/**
 * Remove duplicates from $value1 that are in $value2
 */
function deduplicate_array($value1, $value2)
{
    $value1 = get_array_for_value($value1);
    $value2 = get_array_for_value($value2);
    // remove duplicates
    foreach ($value1 as $key => $val) {
        if (in_array($val, $value2)) {
            unset($value1[$key]);
        }
    }
    return $value1;
}
Esempio n. 3
0
function get_item_form_row($op, $item_r, $item_attribute_type_r, $old_value, $new_value)
{
    if ($item_attribute_type_r['s_field_type'] == 'TITLE') {
        $fieldname = 'title';
    } else {
        $fieldname = get_field_name($item_attribute_type_r['s_attribute_type'], $item_attribute_type_r['order_no']);
    }
    $is_multi_value = is_multivalue_attribute_type($item_attribute_type_r['s_attribute_type']);
    $refresh_field = FALSE;
    // Hidden cannot be involved in a refresh operation directly, but refreshed hidden fields, will still be updated.
    if (strcasecmp($item_attribute_type_r['input_type'], 'hidden') !== 0 && $old_value !== FALSE && (is_not_empty_array($new_value) || !is_array($new_value) && strlen($new_value) > 0) && is_value_refreshed($item_attribute_type_r['s_attribute_type'], $new_value, $old_value) && (is_not_empty_array($old_value) || !is_array($old_value) && strlen($old_value) > 0)) {
        $refresh_field = TRUE;
        $new_value = get_array_for_value($new_value);
    }
    if ($refresh_field && count($new_value) > 0 || is_array($new_value) && !$is_multi_value) {
        // -------------
        // REFRESH FIELD
        // -------------
        // If we are doing a complete refresh block, and display_type is set to
        // hidden, overwrite to display it.
        if ($item_attribute_type_r['display_type'] == 'hidden') {
            $item_attribute_type_r['display_type'] = 'display(%value%)';
            $item_attribute_type_r['display_type_arg1'] = '%value%';
        }
        $field .= "<ul class=\"tabMenu\" id=\"{$fieldname}-tab-menu\">";
        if (!$is_multi_value) {
            $new_value = deduplicate_array($new_value, $old_value);
            $count = count($new_value) - 1;
        } else {
            $count = 0;
        }
        $key = array_keys($new_value);
        for ($i = 0; $i <= $count; $i++) {
            is_numeric($key[$i]) ? $label_description = "" : ($label_description = " : {$key[$i]}");
            $field .= "<li id=\"menu-{$fieldname}_new{$i}\"" . ($i == 0 ? " class=\"first activeTab\"" : "") . ">\n\t\t\t\t\t<label for=\"menu-{$fieldname}_new{$i}-cbox\">" . $item_attribute_type_r['prompt'] . "{$label_description}</label>" . "<input type=\"radio\" class=\"radio\" name=\"" . $fieldname . "\" id=\"menu-{$fieldname}_new{$i}-cbox\" value=\"new{$i}\" onclick=\"return activateTab('{$fieldname}_new{$i}', '{$fieldname}-tab-menu', '{$fieldname}-tab-content');\"" . ($i == 0 ? " CHECKED" : "") . "></li>";
        }
        if ($refresh_field) {
            $field .= "<li id=\"menu-{$fieldname}_old\" >\n\t\t\t\t<label for=\"menu-{$fieldname}_old-cbox\">" . get_opendb_lang_var('old_prompt', 'prompt', $item_attribute_type_r['prompt']) . "</label>" . "<input type=\"radio\" class=\"radio\" id=\"menu-{$fieldname}_old-cbox\" name=\"" . $fieldname . "\" value=\"old\" onclick=\"return activateTab('{$fieldname}_old', '{$fieldname}-tab-menu', '{$fieldname}-tab-content');\"></li>";
        }
        $field .= "</ul>";
        $field .= "<div class=\"tabContentContainer\" id=\"{$fieldname}-tab-content\">";
        for ($i = 0; $i <= $count; $i++) {
            if ($is_multi_value) {
                $value = $new_value;
            } else {
                $value = $new_value[$key[$i]];
            }
            $field .= "<div class=\"tabContent" . ($i > 0 ? "Hidden" : "") . "\" id=\"{$fieldname}_new{$i}\">" . get_item_input_field($fieldname . "_new{$i}", $item_attribute_type_r, $item_r, $value, FALSE) . "</div>";
        }
        if ($refresh_field) {
            $field .= "<div class=\"tabContentHidden\" id=\"{$fieldname}_old\">" . get_item_input_field($fieldname . "_old", $item_attribute_type_r, $item_r, $old_value, FALSE) . "</div>";
        }
        $field .= "</div>";
        $prompt_mask = NULL;
        if ($refresh_field) {
            $prompt_mask = theme_image('rs.gif', get_opendb_lang_var('refreshed')) . "%prompt%";
        }
        return format_item_data_field($item_attribute_type_r, $field, $prompt_mask, NULL);
        // field mask
    } else {
        // not a choose attribute
        if (is_multivalue_attribute_type($item_attribute_type_r['s_attribute_type'])) {
            // if new_value is empty!
            if (is_empty_or_not_array($new_value)) {
                if ($old_value !== FALSE) {
                    $value = $old_value;
                } else {
                    $value = NULL;
                }
            } else {
                $value =& $new_value;
            }
            return get_item_input_field($fieldname, $item_attribute_type_r, $item_r, $value);
        } else {
            $value = ifempty($new_value, $old_value === FALSE ? NULL : $old_value);
            // If this is an edit operation - the value must be NOT NULL
            // for some widgets to work properly.
            if ($op != 'new' && $op != 'site' && $value === NULL) {
                $value = '';
            }
            return get_item_input_field($fieldname, $item_attribute_type_r, $item_r, $value);
        }
    }
}