Merge pull request #12459 from rpv-tomsk/column-privileges
When editing table records, display readonly inputs for fields without write access.
This commit is contained in:
commit
a53bc7c0e3
@ -379,12 +379,13 @@ function PMA_getEnumSetAndTimestampColumns($column, $timestamp_seen)
|
||||
* @param integer $tabindex tab index
|
||||
* @param integer $idindex id index
|
||||
* @param boolean $insert_mode insert mode or edit mode
|
||||
* @param boolean $readOnly is column read only or not
|
||||
*
|
||||
* @return string an html snippet
|
||||
*/
|
||||
function PMA_getFunctionColumn($column, $is_upload, $column_name_appendix,
|
||||
$onChangeClause, $no_support_types, $tabindex_for_function,
|
||||
$tabindex, $idindex, $insert_mode
|
||||
$tabindex, $idindex, $insert_mode, $readOnly
|
||||
) {
|
||||
$html_output = '';
|
||||
if (($GLOBALS['cfg']['ProtectBinary'] === 'blob'
|
||||
@ -395,7 +396,8 @@ function PMA_getFunctionColumn($column, $is_upload, $column_name_appendix,
|
||||
&& $column['is_binary'])
|
||||
) {
|
||||
$html_output .= '<td class="center">' . __('Binary') . '</td>' . "\n";
|
||||
} elseif (mb_strstr($column['True_Type'], 'enum')
|
||||
} elseif ($readOnly
|
||||
|| mb_strstr($column['True_Type'], 'enum')
|
||||
|| mb_strstr($column['True_Type'], 'set')
|
||||
|| in_array($column['pma_type'], $no_support_types)
|
||||
) {
|
||||
@ -430,13 +432,15 @@ function PMA_getFunctionColumn($column, $is_upload, $column_name_appendix,
|
||||
* @param string $vkey [multi_edit]['row_id']
|
||||
* @param array $foreigners keys into foreign fields
|
||||
* @param array $foreignData data about the foreign keys
|
||||
* @param boolean $readOnly is column read only or not
|
||||
*
|
||||
* @return string an html snippet
|
||||
*/
|
||||
function PMA_getNullColumn($column, $column_name_appendix, $real_null_value,
|
||||
$tabindex, $tabindex_for_null, $idindex, $vkey, $foreigners, $foreignData
|
||||
$tabindex, $tabindex_for_null, $idindex, $vkey, $foreigners, $foreignData,
|
||||
$readOnly
|
||||
) {
|
||||
if ($column['Null'] != 'YES') {
|
||||
if ($column['Null'] != 'YES' || $readOnly) {
|
||||
return "<td></td>\n";
|
||||
}
|
||||
$html_output = '';
|
||||
@ -544,6 +548,7 @@ function PMA_getNullifyCodeForNullColumn($column, $foreigners, $foreignData)
|
||||
* @param array $extracted_columnspec associative array containing type,
|
||||
* spec_in_brackets and possibly
|
||||
* enum_set_values (another array)
|
||||
* @param boolean $readOnly is column read only or not
|
||||
*
|
||||
* @return string an html snippet
|
||||
*/
|
||||
@ -552,7 +557,8 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix,
|
||||
$special_chars, $foreignData, $odd_row, $paramTableDbArray, $rownumber,
|
||||
$titles, $text_dir, $special_chars_encoded, $vkey,
|
||||
$is_upload, $biggest_max_file_size,
|
||||
$default_char_editing, $no_support_types, $gis_data_types, $extracted_columnspec
|
||||
$default_char_editing, $no_support_types, $gis_data_types, $extracted_columnspec,
|
||||
$readOnly
|
||||
) {
|
||||
// HTML5 data-* attribute data-type
|
||||
$data_type = $GLOBALS['PMA_Types']->getTypeClass($column['True_Type']);
|
||||
@ -562,14 +568,14 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix,
|
||||
$html_output .= PMA_getForeignLink(
|
||||
$column, $backup_field, $column_name_appendix,
|
||||
$onChangeClause, $tabindex, $tabindex_for_value, $idindex, $data,
|
||||
$paramTableDbArray, $rownumber, $titles
|
||||
$paramTableDbArray, $rownumber, $titles, $readOnly
|
||||
);
|
||||
|
||||
} elseif (is_array($foreignData['disp_row'])) {
|
||||
$html_output .= PMA_dispRowForeignData(
|
||||
$backup_field, $column_name_appendix,
|
||||
$onChangeClause, $tabindex, $tabindex_for_value,
|
||||
$idindex, $data, $foreignData
|
||||
$idindex, $data, $foreignData, $readOnly
|
||||
);
|
||||
|
||||
} elseif ($GLOBALS['cfg']['LongtextDoubleTextarea']
|
||||
@ -582,7 +588,7 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix,
|
||||
$html_output .= PMA_getTextarea(
|
||||
$column, $backup_field, $column_name_appendix, $onChangeClause,
|
||||
$tabindex, $tabindex_for_value, $idindex, $text_dir,
|
||||
$special_chars_encoded, $data_type
|
||||
$special_chars_encoded, $data_type, $readOnly
|
||||
);
|
||||
|
||||
} elseif (mb_strstr($column['pma_type'], 'text')) {
|
||||
@ -590,7 +596,7 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix,
|
||||
$html_output .= PMA_getTextarea(
|
||||
$column, $backup_field, $column_name_appendix, $onChangeClause,
|
||||
$tabindex, $tabindex_for_value, $idindex, $text_dir,
|
||||
$special_chars_encoded, $data_type
|
||||
$special_chars_encoded, $data_type, $readOnly
|
||||
);
|
||||
$html_output .= "\n";
|
||||
if (mb_strlen($special_chars) > 32000) {
|
||||
@ -603,14 +609,15 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix,
|
||||
} elseif ($column['pma_type'] == 'enum') {
|
||||
$html_output .= PMA_getPmaTypeEnum(
|
||||
$column, $backup_field, $column_name_appendix, $extracted_columnspec,
|
||||
$onChangeClause, $tabindex, $tabindex_for_value, $idindex, $data
|
||||
$onChangeClause, $tabindex, $tabindex_for_value, $idindex, $data,
|
||||
$readOnly
|
||||
);
|
||||
|
||||
} elseif ($column['pma_type'] == 'set') {
|
||||
$html_output .= PMA_getPmaTypeSet(
|
||||
$column, $extracted_columnspec, $backup_field,
|
||||
$column_name_appendix, $onChangeClause, $tabindex,
|
||||
$tabindex_for_value, $idindex, $data
|
||||
$tabindex_for_value, $idindex, $data, $readOnly
|
||||
);
|
||||
|
||||
} elseif ($column['is_binary'] || $column['is_blob']) {
|
||||
@ -618,7 +625,7 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix,
|
||||
$column, $data, $special_chars, $biggest_max_file_size,
|
||||
$backup_field, $column_name_appendix, $onChangeClause, $tabindex,
|
||||
$tabindex_for_value, $idindex, $text_dir, $special_chars_encoded,
|
||||
$vkey, $is_upload
|
||||
$vkey, $is_upload, $readOnly
|
||||
);
|
||||
|
||||
} elseif (! in_array($column['pma_type'], $no_support_types)) {
|
||||
@ -626,7 +633,7 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix,
|
||||
$column, $default_char_editing, $backup_field,
|
||||
$column_name_appendix, $onChangeClause, $tabindex, $special_chars,
|
||||
$tabindex_for_value, $idindex, $text_dir, $special_chars_encoded,
|
||||
$data, $extracted_columnspec
|
||||
$data, $extracted_columnspec, $readOnly
|
||||
);
|
||||
}
|
||||
|
||||
@ -653,12 +660,13 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix,
|
||||
* @param array $titles An HTML IMG tag for a particular icon from
|
||||
* a theme, which may be an actual file or
|
||||
* an icon from a sprite
|
||||
* @param boolean $readOnly is column read only or not
|
||||
*
|
||||
* @return string an html snippet
|
||||
*/
|
||||
function PMA_getForeignLink($column, $backup_field, $column_name_appendix,
|
||||
$onChangeClause, $tabindex, $tabindex_for_value, $idindex, $data,
|
||||
$paramTableDbArray, $rownumber, $titles
|
||||
$paramTableDbArray, $rownumber, $titles, $readOnly
|
||||
) {
|
||||
list($table, $db) = $paramTableDbArray;
|
||||
$html_output = '';
|
||||
@ -670,6 +678,7 @@ function PMA_getForeignLink($column, $backup_field, $column_name_appendix,
|
||||
$html_output .= '<input type="text" name="fields' . $column_name_appendix . '" '
|
||||
. 'class="textfield" '
|
||||
. $onChangeClause . ' '
|
||||
. ($readOnly ? 'readonly="readonly" ' : '')
|
||||
. 'tabindex="' . ($tabindex + $tabindex_for_value) . '" '
|
||||
. 'id="field_' . ($idindex) . '_3" '
|
||||
. 'value="' . htmlspecialchars($data) . '" />';
|
||||
@ -699,12 +708,13 @@ function PMA_getForeignLink($column, $backup_field, $column_name_appendix,
|
||||
* @param integer $idindex id index
|
||||
* @param string $data data to edit
|
||||
* @param array $foreignData data about the foreign keys
|
||||
* @param boolean $readOnly is display read only or not
|
||||
*
|
||||
* @return string an html snippet
|
||||
*/
|
||||
function PMA_dispRowForeignData($backup_field, $column_name_appendix,
|
||||
$onChangeClause, $tabindex, $tabindex_for_value, $idindex, $data,
|
||||
$foreignData
|
||||
$foreignData, $readOnly
|
||||
) {
|
||||
$html_output = '';
|
||||
$html_output .= $backup_field . "\n";
|
||||
@ -715,6 +725,7 @@ function PMA_dispRowForeignData($backup_field, $column_name_appendix,
|
||||
$html_output .= '<select name="fields' . $column_name_appendix . '"'
|
||||
. ' ' . $onChangeClause
|
||||
. ' class="textfield"'
|
||||
. ($readOnly ? ' disabled' : '')
|
||||
. ' tabindex="' . ($tabindex + $tabindex_for_value) . '"'
|
||||
. ' id="field_' . $idindex . '_3">';
|
||||
$html_output .= PMA_foreignDropdown(
|
||||
@ -724,6 +735,12 @@ function PMA_dispRowForeignData($backup_field, $column_name_appendix,
|
||||
);
|
||||
$html_output .= '</select>';
|
||||
|
||||
//Add hidden input, as disabled <select> input does not included in POST.
|
||||
if ($readOnly) {
|
||||
$html_output .= '<input name="fields' . $column_name_appendix . '"'
|
||||
. ' type="hidden" value="' . htmlspecialchars($data) . '">';
|
||||
}
|
||||
|
||||
return $html_output;
|
||||
}
|
||||
|
||||
@ -741,12 +758,13 @@ function PMA_dispRowForeignData($backup_field, $column_name_appendix,
|
||||
* @param string $special_chars_encoded replaced char if the string starts
|
||||
* with a \r\n pair (0x0d0a) add an extra \n
|
||||
* @param string $data_type the html5 data-* attribute type
|
||||
* @param boolean $readOnly is column read only or not
|
||||
*
|
||||
* @return string an html snippet
|
||||
*/
|
||||
function PMA_getTextarea($column, $backup_field, $column_name_appendix,
|
||||
$onChangeClause, $tabindex, $tabindex_for_value, $idindex,
|
||||
$text_dir, $special_chars_encoded, $data_type
|
||||
$text_dir, $special_chars_encoded, $data_type, $readOnly
|
||||
) {
|
||||
$the_class = '';
|
||||
$textAreaRows = $GLOBALS['cfg']['TextareaRows'];
|
||||
@ -773,6 +791,7 @@ function PMA_getTextarea($column, $backup_field, $column_name_appendix,
|
||||
$html_output = $backup_field . "\n"
|
||||
. '<textarea name="fields' . $column_name_appendix . '"'
|
||||
. ' class="' . $the_class . '"'
|
||||
. ($readOnly ? ' readonly="readonly"' : '')
|
||||
. (isset($maxlength) ? ' data-maxlength="' . $maxlength . '"' : '')
|
||||
. ' rows="' . $textAreaRows . '"'
|
||||
. ' cols="' . $textareaCols . '"'
|
||||
@ -801,12 +820,13 @@ function PMA_getTextarea($column, $backup_field, $column_name_appendix,
|
||||
* @param integer $tabindex_for_value offset for the values tabindex
|
||||
* @param integer $idindex id index
|
||||
* @param mixed $data data to edit
|
||||
* @param boolean $readOnly is column read only or not
|
||||
*
|
||||
* @return string an html snippet
|
||||
*/
|
||||
function PMA_getPmaTypeEnum($column, $backup_field, $column_name_appendix,
|
||||
$extracted_columnspec, $onChangeClause, $tabindex, $tabindex_for_value,
|
||||
$idindex, $data
|
||||
$idindex, $data, $readOnly
|
||||
) {
|
||||
$html_output = '';
|
||||
if (! isset($column['values'])) {
|
||||
@ -821,13 +841,14 @@ function PMA_getPmaTypeEnum($column, $backup_field, $column_name_appendix,
|
||||
if (mb_strlen($column['Type']) > 20) {
|
||||
$html_output .= PMA_getDropDownDependingOnLength(
|
||||
$column, $column_name_appendix, $onChangeClause,
|
||||
$tabindex, $tabindex_for_value, $idindex, $data, $column_enum_values
|
||||
$tabindex, $tabindex_for_value,
|
||||
$idindex, $data, $column_enum_values, $readOnly
|
||||
);
|
||||
} else {
|
||||
$html_output .= PMA_getRadioButtonDependingOnLength(
|
||||
$column_name_appendix, $onChangeClause,
|
||||
$tabindex, $column, $tabindex_for_value,
|
||||
$idindex, $data, $column_enum_values
|
||||
$idindex, $data, $column_enum_values, $readOnly
|
||||
);
|
||||
}
|
||||
return $html_output;
|
||||
@ -871,15 +892,18 @@ function PMA_getColumnEnumValues($column, $extracted_columnspec)
|
||||
*/
|
||||
function PMA_getDropDownDependingOnLength(
|
||||
$column, $column_name_appendix, $onChangeClause,
|
||||
$tabindex, $tabindex_for_value, $idindex, $data, $column_enum_values
|
||||
$tabindex, $tabindex_for_value, $idindex, $data, $column_enum_values,
|
||||
$readOnly
|
||||
) {
|
||||
$html_output = '<select name="fields' . $column_name_appendix . '"'
|
||||
. ' ' . $onChangeClause
|
||||
. ' class="textfield"'
|
||||
. ' tabindex="' . ($tabindex + $tabindex_for_value) . '"'
|
||||
. ($readOnly ? ' disabled' : '')
|
||||
. ' id="field_' . ($idindex) . '_3">';
|
||||
$html_output .= '<option value=""> </option>' . "\n";
|
||||
|
||||
$selected_html = '';
|
||||
foreach ($column_enum_values as $enum_value) {
|
||||
$html_output .= '<option value="' . $enum_value['html'] . '"';
|
||||
if ($data == $enum_value['plain']
|
||||
@ -889,10 +913,17 @@ function PMA_getDropDownDependingOnLength(
|
||||
&& $enum_value['plain'] == $column['Default'])
|
||||
) {
|
||||
$html_output .= ' selected="selected"';
|
||||
$selected_html = $enum_value['html'];
|
||||
}
|
||||
$html_output .= '>' . $enum_value['html'] . '</option>' . "\n";
|
||||
}
|
||||
$html_output .= '</select>';
|
||||
|
||||
//Add hidden input, as disabled <select> input does not included in POST.
|
||||
if ($readOnly) {
|
||||
$html_output .= '<input name="fields' . $column_name_appendix . '"'
|
||||
. ' type="hidden" value="' . $selected_html . '">';
|
||||
}
|
||||
return $html_output;
|
||||
}
|
||||
|
||||
@ -912,7 +943,8 @@ function PMA_getDropDownDependingOnLength(
|
||||
*/
|
||||
function PMA_getRadioButtonDependingOnLength(
|
||||
$column_name_appendix, $onChangeClause,
|
||||
$tabindex, $column, $tabindex_for_value, $idindex, $data, $column_enum_values
|
||||
$tabindex, $column, $tabindex_for_value, $idindex, $data,
|
||||
$column_enum_values, $readOnly
|
||||
) {
|
||||
$j = 0;
|
||||
$html_output = '';
|
||||
@ -931,6 +963,9 @@ function PMA_getRadioButtonDependingOnLength(
|
||||
) {
|
||||
$html_output .= ' checked="checked"';
|
||||
}
|
||||
elseif ($readOnly) {
|
||||
$html_output .= ' disabled';
|
||||
}
|
||||
$html_output .= ' tabindex="' . ($tabindex + $tabindex_for_value) . '" />';
|
||||
$html_output .= '<label for="field_' . $idindex . '_3_' . $j . '">'
|
||||
. $enum_value['html'] . '</label>' . "\n";
|
||||
@ -953,13 +988,14 @@ function PMA_getRadioButtonDependingOnLength(
|
||||
* @param integer $tabindex_for_value offset for the values tabindex
|
||||
* @param integer $idindex id index
|
||||
* @param string $data description of the column field
|
||||
* @param boolean $readOnly is column read only or not
|
||||
*
|
||||
* @return string an html snippet
|
||||
*/
|
||||
function PMA_getPmaTypeSet(
|
||||
$column, $extracted_columnspec, $backup_field,
|
||||
$column_name_appendix, $onChangeClause, $tabindex,
|
||||
$tabindex_for_value, $idindex, $data
|
||||
$tabindex_for_value, $idindex, $data, $readOnly
|
||||
) {
|
||||
list($column_set_values, $select_size) = PMA_getColumnSetValueAndSelectSize(
|
||||
$column, $extracted_columnspec
|
||||
@ -970,19 +1006,29 @@ function PMA_getPmaTypeSet(
|
||||
. $column_name_appendix . '" value="set" />';
|
||||
$html_output .= '<select name="fields' . $column_name_appendix . '[]' . '"'
|
||||
. ' class="textfield"'
|
||||
. ($readOnly ? ' disabled' : '')
|
||||
. ' size="' . $select_size . '"'
|
||||
. ' multiple="multiple"'
|
||||
. ' ' . $onChangeClause
|
||||
. ' tabindex="' . ($tabindex + $tabindex_for_value) . '"'
|
||||
. ' id="field_' . ($idindex) . '_3">';
|
||||
|
||||
$selected_html = '';
|
||||
foreach ($column_set_values as $column_set_value) {
|
||||
$html_output .= '<option value="' . $column_set_value['html'] . '"';
|
||||
if (isset($vset[$column_set_value['plain']])) {
|
||||
$html_output .= ' selected="selected"';
|
||||
$selected_html = $column_set_value['html'];
|
||||
}
|
||||
$html_output .= '>' . $column_set_value['html'] . '</option>' . "\n";
|
||||
}
|
||||
$html_output .= '</select>';
|
||||
|
||||
//Add hidden input, as disabled <select> input does not included in POST.
|
||||
if ($readOnly) {
|
||||
$html_output .= '<input name="fields' . $column_name_appendix . '[]' . '"'
|
||||
. ' type="hidden" value="' . $selected_html . '">';
|
||||
}
|
||||
return $html_output;
|
||||
}
|
||||
|
||||
@ -1029,6 +1075,7 @@ function PMA_getColumnSetValueAndSelectSize($column, $extracted_columnspec)
|
||||
* with a \r\n pair (0x0d0a) add an extra \n
|
||||
* @param string $vkey [multi_edit]['row_id']
|
||||
* @param boolean $is_upload is upload or not
|
||||
* @param boolean $readOnly is column read only or not
|
||||
*
|
||||
* @return string an html snippet
|
||||
*/
|
||||
@ -1036,7 +1083,7 @@ function PMA_getBinaryAndBlobColumn(
|
||||
$column, $data, $special_chars, $biggest_max_file_size,
|
||||
$backup_field, $column_name_appendix, $onChangeClause, $tabindex,
|
||||
$tabindex_for_value, $idindex, $text_dir, $special_chars_encoded,
|
||||
$vkey, $is_upload
|
||||
$vkey, $is_upload, $readOnly
|
||||
) {
|
||||
$html_output = '';
|
||||
// Add field type : Protected or Hexadecimal
|
||||
@ -1065,19 +1112,20 @@ function PMA_getBinaryAndBlobColumn(
|
||||
$html_output .= "\n" . PMA_getTextarea(
|
||||
$column, $backup_field, $column_name_appendix, $onChangeClause,
|
||||
$tabindex, $tabindex_for_value, $idindex, $text_dir,
|
||||
$special_chars_encoded, 'HEX'
|
||||
$special_chars_encoded, 'HEX', $readOnly
|
||||
);
|
||||
} else {
|
||||
// field size should be at least 4 and max $GLOBALS['cfg']['LimitChars']
|
||||
$fieldsize = min(max($column['len'], 4), $GLOBALS['cfg']['LimitChars']);
|
||||
$html_output .= "\n" . $backup_field . "\n" . PMA_getHTMLinput(
|
||||
$column, $column_name_appendix, $special_chars, $fieldsize,
|
||||
$onChangeClause, $tabindex, $tabindex_for_value, $idindex, 'HEX'
|
||||
$onChangeClause, $tabindex, $tabindex_for_value, $idindex, 'HEX',
|
||||
$readOnly
|
||||
);
|
||||
}
|
||||
$html_output .= sprintf($fields_type_html, $fields_type_val);
|
||||
|
||||
if ($is_upload && $column['is_blob']) {
|
||||
if ($is_upload && $column['is_blob'] && !$readOnly) {
|
||||
$html_output .= '<br />'
|
||||
. '<input type="file"'
|
||||
. ' name="fields_upload' . $vkey . '[' . $column['Field_md5'] . ']"'
|
||||
@ -1089,7 +1137,7 @@ function PMA_getBinaryAndBlobColumn(
|
||||
$html_output .= $html_out;
|
||||
}
|
||||
|
||||
if (!empty($GLOBALS['cfg']['UploadDir'])) {
|
||||
if (!empty($GLOBALS['cfg']['UploadDir']) && !$readOnly) {
|
||||
$html_output .= PMA_getSelectOptionForUpload($vkey, $column);
|
||||
}
|
||||
|
||||
@ -1108,12 +1156,13 @@ function PMA_getBinaryAndBlobColumn(
|
||||
* @param integer $tabindex_for_value offset for the values tabindex
|
||||
* @param integer $idindex id index
|
||||
* @param string $data_type the html5 data-* attribute type
|
||||
* @param boolean $readOnly is column read only or not
|
||||
*
|
||||
* @return string an html snippet
|
||||
*/
|
||||
function PMA_getHTMLinput(
|
||||
$column, $column_name_appendix, $special_chars, $fieldsize, $onChangeClause,
|
||||
$tabindex, $tabindex_for_value, $idindex, $data_type
|
||||
$tabindex, $tabindex_for_value, $idindex, $data_type, $readOnly
|
||||
) {
|
||||
$input_type = 'text';
|
||||
// do not use the 'date' or 'time' types here; they have no effect on some
|
||||
@ -1121,7 +1170,9 @@ function PMA_getHTMLinput(
|
||||
|
||||
$the_class = 'textfield';
|
||||
// verify True_Type which does not contain the parentheses and length
|
||||
if ($column['True_Type'] === 'date') {
|
||||
if ($readOnly) {
|
||||
//NOOP. Disable date/timepicker
|
||||
} else if ($column['True_Type'] === 'date') {
|
||||
$the_class .= ' datefield';
|
||||
} else if ($column['True_Type'] === 'time') {
|
||||
$the_class .= ' timefield';
|
||||
@ -1149,6 +1200,7 @@ function PMA_getHTMLinput(
|
||||
. ((isset($column['is_char']) && $column['is_char'])
|
||||
? ' data-maxlength="' . $fieldsize . '"'
|
||||
: '')
|
||||
. ($readOnly ? ' readonly="readonly"' : '')
|
||||
. ($input_min_max !== false ? ' ' . $input_min_max : '')
|
||||
. ' data-type="' . $data_type . '"'
|
||||
. ($input_type === 'time' ? ' step="1"' : '')
|
||||
@ -1248,6 +1300,7 @@ function PMA_getMaxUploadSize($column, $biggest_max_file_size)
|
||||
* @param array $extracted_columnspec associative array containing type,
|
||||
* spec_in_brackets and possibly
|
||||
* enum_set_values (another array)
|
||||
* @param boolean $readOnly is column read only or not
|
||||
*
|
||||
* @return string an html snippet
|
||||
*/
|
||||
@ -1255,7 +1308,7 @@ function PMA_getValueColumnForOtherDatatypes($column, $default_char_editing,
|
||||
$backup_field,
|
||||
$column_name_appendix, $onChangeClause, $tabindex, $special_chars,
|
||||
$tabindex_for_value, $idindex, $text_dir, $special_chars_encoded, $data,
|
||||
$extracted_columnspec
|
||||
$extracted_columnspec, $readOnly
|
||||
) {
|
||||
// HTML5 data-* attribute data-type
|
||||
$data_type = $GLOBALS['PMA_Types']->getTypeClass($column['True_Type']);
|
||||
@ -1270,12 +1323,13 @@ function PMA_getValueColumnForOtherDatatypes($column, $default_char_editing,
|
||||
$html_output .= PMA_getTextarea(
|
||||
$column, $backup_field, $column_name_appendix, $onChangeClause,
|
||||
$tabindex, $tabindex_for_value, $idindex, $text_dir,
|
||||
$special_chars_encoded, $data_type
|
||||
$special_chars_encoded, $data_type, $readOnly
|
||||
);
|
||||
} else {
|
||||
$html_output .= PMA_getHTMLinput(
|
||||
$column, $column_name_appendix, $special_chars, $fieldsize,
|
||||
$onChangeClause, $tabindex, $tabindex_for_value, $idindex, $data_type
|
||||
$onChangeClause, $tabindex, $tabindex_for_value, $idindex,
|
||||
$data_type, $readOnly
|
||||
);
|
||||
|
||||
$virtual = array(
|
||||
@ -2700,6 +2754,11 @@ function PMA_getHtmlForInsertEditFormColumn($table_columns, $column_number,
|
||||
$text_dir, $repopulate, $column_mime, $where_clause
|
||||
) {
|
||||
$column = $table_columns[$column_number];
|
||||
$readOnly = false;
|
||||
if (! PMA_userHasColumnPrivileges($column, $insert_mode)) {
|
||||
$readOnly = true;
|
||||
}
|
||||
|
||||
if (! isset($column['processed'])) {
|
||||
$column = PMA_analyzeTableColumnsArray(
|
||||
$column, $comments_map, $timestamp_seen
|
||||
@ -2794,7 +2853,7 @@ function PMA_getHtmlForInsertEditFormColumn($table_columns, $column_number,
|
||||
$html_output .= PMA_getFunctionColumn(
|
||||
$column, $is_upload, $column_name_appendix,
|
||||
$onChangeClause, $no_support_types, $tabindex_for_function,
|
||||
$tabindex, $idindex, $insert_mode
|
||||
$tabindex, $idindex, $insert_mode, $readOnly
|
||||
);
|
||||
}
|
||||
|
||||
@ -2806,7 +2865,7 @@ function PMA_getHtmlForInsertEditFormColumn($table_columns, $column_number,
|
||||
$html_output .= PMA_getNullColumn(
|
||||
$column, $column_name_appendix, $real_null_value,
|
||||
$tabindex, $tabindex_for_null, $idindex, $vkey, $foreigners,
|
||||
$foreignData
|
||||
$foreignData, $readOnly
|
||||
);
|
||||
|
||||
// The value column (depends on type)
|
||||
@ -2875,7 +2934,7 @@ function PMA_getHtmlForInsertEditFormColumn($table_columns, $column_number,
|
||||
$foreignData, $odd_row, array($table, $db), $row_id, $titles,
|
||||
$text_dir, $special_chars_encoded, $vkey, $is_upload,
|
||||
$biggest_max_file_size, $default_char_editing,
|
||||
$no_support_types, $gis_data_types, $extracted_columnspec
|
||||
$no_support_types, $gis_data_types, $extracted_columnspec, $readOnly
|
||||
);
|
||||
}
|
||||
$html_output .= '</td>'
|
||||
@ -2936,10 +2995,6 @@ function PMA_getHtmlForInsertEditRow($url_params, $table_columns,
|
||||
}
|
||||
for ($column_number = 0; $column_number < $columns_cnt; $column_number++) {
|
||||
$table_column = $table_columns[$column_number];
|
||||
// skip this column if user does not have necessary column privilges
|
||||
if (! PMA_userHasColumnPrivileges($table_column, $insert_mode)) {
|
||||
continue;
|
||||
}
|
||||
$column_mime = array();
|
||||
if (isset($mime_map[$table_column['Field']])) {
|
||||
$column_mime = $mime_map[$table_column['Field']];
|
||||
|
||||
@ -561,34 +561,44 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
$column['is_blob'] = true;
|
||||
$this->assertContains(
|
||||
'<td class="center">Binary</td>',
|
||||
PMA_getFunctionColumn($column, false, '', '', array(), 0, 0, 0, false)
|
||||
PMA_getFunctionColumn(
|
||||
$column, false, '', '', array(), 0, 0, 0, false, false
|
||||
)
|
||||
);
|
||||
|
||||
$GLOBALS['cfg']['ProtectBinary'] = 'all';
|
||||
$column['is_binary'] = true;
|
||||
$this->assertContains(
|
||||
'<td class="center">Binary</td>',
|
||||
PMA_getFunctionColumn($column, true, '', '', array(), 0, 0, 0, false)
|
||||
PMA_getFunctionColumn(
|
||||
$column, true, '', '', array(), 0, 0, 0, false, false
|
||||
)
|
||||
);
|
||||
|
||||
$GLOBALS['cfg']['ProtectBinary'] = 'noblob';
|
||||
$column['is_blob'] = false;
|
||||
$this->assertContains(
|
||||
'<td class="center">Binary</td>',
|
||||
PMA_getFunctionColumn($column, true, '', '', array(), 0, 0, 0, false)
|
||||
PMA_getFunctionColumn(
|
||||
$column, true, '', '', array(), 0, 0, 0, false, false
|
||||
)
|
||||
);
|
||||
|
||||
$GLOBALS['cfg']['ProtectBinary'] = false;
|
||||
$column['True_Type'] = 'enum';
|
||||
$this->assertContains(
|
||||
'<td class="center">--</td>',
|
||||
PMA_getFunctionColumn($column, true, '', '', array(), 0, 0, 0, false)
|
||||
PMA_getFunctionColumn(
|
||||
$column, true, '', '', array(), 0, 0, 0, false, false
|
||||
)
|
||||
);
|
||||
|
||||
$column['True_Type'] = 'set';
|
||||
$this->assertContains(
|
||||
'<td class="center">--</td>',
|
||||
PMA_getFunctionColumn($column, true, '', '', array(), 0, 0, 0, false)
|
||||
PMA_getFunctionColumn(
|
||||
$column, true, '', '', array(), 0, 0, 0, false, false
|
||||
)
|
||||
);
|
||||
|
||||
$column['True_Type'] = '';
|
||||
@ -596,7 +606,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
$this->assertContains(
|
||||
'<td class="center">--</td>',
|
||||
PMA_getFunctionColumn(
|
||||
$column, true, '', '', array('int'), 0, 0, 0, false
|
||||
$column, true, '', '', array('int'), 0, 0, 0, false, false
|
||||
)
|
||||
);
|
||||
|
||||
@ -605,7 +615,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
$this->assertContains(
|
||||
'<select name="funcsa" b tabindex="5" id="field_3_1"',
|
||||
PMA_getFunctionColumn(
|
||||
$column, true, 'a', 'b', array(), 2, 3, 3, false
|
||||
$column, true, 'a', 'b', array(), 2, 3, 3, false, false
|
||||
)
|
||||
);
|
||||
}
|
||||
@ -628,7 +638,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
);
|
||||
|
||||
$result = PMA_getNullColumn(
|
||||
$column, 'a', true, 2, 0, 1, "<script>", $foreigners, array()
|
||||
$column, 'a', true, 2, 0, 1, "<script>", $foreigners, array(), false
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
@ -663,7 +673,18 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
// case 2
|
||||
$column['Null'] = 'NO';
|
||||
$result = PMA_getNullColumn(
|
||||
$column, 'a', true, 2, 0, 1, "<script>", array(), array()
|
||||
$column, 'a', true, 2, 0, 1, "<script>", array(), array(), false
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
"<td></td>\n",
|
||||
$result
|
||||
);
|
||||
|
||||
// case 3
|
||||
$column['Null'] = 'YES';
|
||||
$result = PMA_getNullColumn(
|
||||
$column, 'a', true, 2, 0, 1, "<script>", array(), array(), true
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
@ -725,7 +746,8 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
$titles['Browse'] = "'";
|
||||
$GLOBALS['cfg']['ServerDefault'] = 2;
|
||||
$result = PMA_getForeignLink(
|
||||
$column, 'a', 'b', 'd', 2, 0, 1, "abc", array('tbl', 'db'), 8, $titles
|
||||
$column, 'a', 'b', 'd', 2, 0, 1, "abc", array('tbl', 'db'), 8,
|
||||
$titles, false
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
@ -762,7 +784,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
$GLOBALS['cfg']['ForeignKeyMaxLimit'] = 1;
|
||||
$GLOBALS['cfg']['NaturalOrder'] = false;
|
||||
$result = PMA_dispRowForeignData(
|
||||
'a', 'b', 'd', 2, 0, 1, "<s>", $foreignData
|
||||
'a', 'b', 'd', 2, 0, 1, "<s>", $foreignData, false
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
@ -800,7 +822,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
$column['Type'] = 'char(10)';
|
||||
$column['True_Type'] = 'char';
|
||||
$result = PMA_getTextarea(
|
||||
$column, 'a', 'b', '', 2, 0, 1, "abc/", 'foobar', 'CHAR'
|
||||
$column, 'a', 'b', '', 2, 0, 1, "abc/", 'foobar', 'CHAR', false
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
@ -828,7 +850,8 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
)
|
||||
);
|
||||
$result = PMA_getPmaTypeEnum(
|
||||
$column, 'a', 'b', $extracted_columnspec, 'd', 2, 0, 1, 'foobar'
|
||||
$column, 'a', 'b', $extracted_columnspec, 'd', 2, 0, 1,
|
||||
'foobar', false
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
@ -843,7 +866,8 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
|
||||
$column['Type'] = 'ababababababababababa';
|
||||
$result = PMA_getPmaTypeEnum(
|
||||
$column, 'a', 'b', $extracted_columnspec, 'd', 2, 0, 1, 'foobar'
|
||||
$column, 'a', 'b', $extracted_columnspec, 'd', 2, 0, 1,
|
||||
'foobar', false
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
@ -901,7 +925,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
);
|
||||
|
||||
$result = PMA_getDropDownDependingOnLength(
|
||||
array(), 'a', 'b', 2, 0, 1, 'data', $column_enum_values
|
||||
array(), 'a', 'b', 2, 0, 1, 'data', $column_enum_values, false
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
@ -932,7 +956,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
$column['Default'] = 'data';
|
||||
$column['Null'] = 'YES';
|
||||
$result = PMA_getDropDownDependingOnLength(
|
||||
$column, 'a', 'b', 2, 0, 1, '', $column_enum_values
|
||||
$column, 'a', 'b', 2, 0, 1, '', $column_enum_values, false
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
@ -960,7 +984,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
);
|
||||
|
||||
$result = PMA_getRadioButtonDependingOnLength(
|
||||
'a', 'b', 2, array(), 0, 1, 'data', $column_enum_values
|
||||
'a', 'b', 2, array(), 0, 1, 'data', $column_enum_values, false
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
@ -997,7 +1021,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
$column['Default'] = 'data';
|
||||
$column['Null'] = 'YES';
|
||||
$result = PMA_getRadioButtonDependingOnLength(
|
||||
'a', 'b', 2, $column, 0, 1, '', $column_enum_values
|
||||
'a', 'b', 2, $column, 0, 1, '', $column_enum_values, false
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
@ -1025,7 +1049,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
$column['select_size'] = 1;
|
||||
|
||||
$result = PMA_getPmaTypeSet(
|
||||
$column, array(), 'a', 'b', 'c', 2, 0, 1, 'data,<'
|
||||
$column, array(), 'a', 'b', 'c', 2, 0, 1, 'data,<', false
|
||||
);
|
||||
|
||||
$this->assertContains("a\n", $result);
|
||||
@ -1100,7 +1124,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
|
||||
$result = PMA_getBinaryAndBlobColumn(
|
||||
$column, '12\\"23', null, 20, 'a', 'b', 'c', 2, 1, 1, '/', null,
|
||||
'foo', true
|
||||
'foo', true, false
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
@ -1118,7 +1142,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
|
||||
$result = PMA_getBinaryAndBlobColumn(
|
||||
$column, '1223', null, 20, 'a', 'b', 'c', 2, 1, 1, '/', null,
|
||||
'foo', false
|
||||
'foo', false, false
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
@ -1134,7 +1158,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
|
||||
$result = PMA_getBinaryAndBlobColumn(
|
||||
$column, '1223', null, 20, 'a', 'b', 'c', 2, 1, 1, '/', null,
|
||||
'foo', true
|
||||
'foo', true, false
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
@ -1157,7 +1181,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
|
||||
$result = PMA_getBinaryAndBlobColumn(
|
||||
$column, '1223', null, 20, 'a', 'b', 'c', 2, 1, 1, '/', null,
|
||||
'foo', true
|
||||
'foo', true, false
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
@ -1182,7 +1206,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
|
||||
$result = PMA_getBinaryAndBlobColumn(
|
||||
$column, '1223', null, 20, 'a', 'b', 'c', 2, 1, 1, '/', null,
|
||||
'foo', true
|
||||
'foo', true, false
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
@ -1208,7 +1232,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
|
||||
$result = PMA_getBinaryAndBlobColumn(
|
||||
$column, '1223', null, 20, 'a', 'b', 'c', 2, 1, 1, '/', null,
|
||||
'foo', true
|
||||
'foo', true, false
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
@ -1231,7 +1255,9 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
$column = array();
|
||||
$column['pma_type'] = 'date';
|
||||
$column['True_Type'] = 'date';
|
||||
$result = PMA_getHTMLinput($column, 'a', 'b', 30, 'c', 23, 2, 0, 'DATE');
|
||||
$result = PMA_getHTMLinput(
|
||||
$column, 'a', 'b', 30, 'c', 23, 2, 0, 'DATE', false
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
'<input type="text" name="fieldsa" value="b" size="30" data-type="DATE"'
|
||||
@ -1242,7 +1268,9 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
// case 2 datetime
|
||||
$column['pma_type'] = 'datetime';
|
||||
$column['True_Type'] = 'datetime';
|
||||
$result = PMA_getHTMLinput($column, 'a', 'b', 30, 'c', 23, 2, 0, 'DATE');
|
||||
$result = PMA_getHTMLinput(
|
||||
$column, 'a', 'b', 30, 'c', 23, 2, 0, 'DATE', false
|
||||
);
|
||||
$this->assertEquals(
|
||||
'<input type="text" name="fieldsa" value="b" size="30" data-type="DATE"'
|
||||
. ' class="textfield datetimefield" c tabindex="25" id="field_0_3" />',
|
||||
@ -1252,7 +1280,9 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
// case 3 timestamp
|
||||
$column['pma_type'] = 'timestamp';
|
||||
$column['True_Type'] = 'timestamp';
|
||||
$result = PMA_getHTMLinput($column, 'a', 'b', 30, 'c', 23, 2, 0, 'DATE');
|
||||
$result = PMA_getHTMLinput(
|
||||
$column, 'a', 'b', 30, 'c', 23, 2, 0, 'DATE', false
|
||||
);
|
||||
$this->assertEquals(
|
||||
'<input type="text" name="fieldsa" value="b" size="30" data-type="DATE"'
|
||||
. ' class="textfield datetimefield" c tabindex="25" id="field_0_3" />',
|
||||
@ -1314,7 +1344,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
$extracted_columnspec['spec_in_brackets'] = 25;
|
||||
$result = PMA_getValueColumnForOtherDatatypes(
|
||||
$column, 'defchar', 'a', 'b', 'c', 22, '<', 12, 1, "/", "<",
|
||||
"foo\nbar", $extracted_columnspec
|
||||
"foo\nbar", $extracted_columnspec, false
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
@ -1333,7 +1363,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
$column['True_Type'] = 'timestamp';
|
||||
$result = PMA_getValueColumnForOtherDatatypes(
|
||||
$column, 'defchar', 'a', 'b', 'c', 22, '<', 12, 1, "/", "<",
|
||||
"foo\nbar", $extracted_columnspec
|
||||
"foo\nbar", $extracted_columnspec, false
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
@ -1349,7 +1379,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
$column['pma_type'] = 'datetime';
|
||||
$result = PMA_getValueColumnForOtherDatatypes(
|
||||
$column, 'defchar', 'a', 'b', 'c', 22, '<', 12, 1, "/", "<",
|
||||
"foo\nbar", $extracted_columnspec
|
||||
"foo\nbar", $extracted_columnspec, false
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
@ -2849,6 +2879,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
'Field' => 'col',
|
||||
'Type' => 'varchar(20)',
|
||||
'Null' => 'Yes',
|
||||
'Privileges' => 'insert,update,select'
|
||||
)
|
||||
);
|
||||
$repopulate = array(
|
||||
@ -2909,7 +2940,8 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
'Null' => 'Yes',
|
||||
'Key' => '',
|
||||
'Extra' => '',
|
||||
'Default' => null
|
||||
'Default' => null,
|
||||
'Privileges' => 'insert,update,select'
|
||||
)
|
||||
);
|
||||
$repopulate = array(
|
||||
@ -3065,7 +3097,7 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
);
|
||||
$actual = PMA_getHtmlForInsertEditRow(
|
||||
array(), $table_columns, array(), false, array(), '', '',
|
||||
'', true, array(), $o_rows, $tabindex, 1, false, 0,
|
||||
'', true, array(), $o_rows, $tabindex, 2, false, 0,
|
||||
array(), 0, 0, 'table', 'db', 0, array(), 0, '',
|
||||
array(), array('wc')
|
||||
);
|
||||
@ -3073,8 +3105,9 @@ class PMA_InsertEditTest extends PHPUnit_Framework_TestCase
|
||||
'foo',
|
||||
$actual
|
||||
);
|
||||
$this->assertNotContains(
|
||||
'bar',
|
||||
$this->assertContains(
|
||||
'<textarea name="fields[37b51d194a7513e45b56f6524f2d51f2]" '
|
||||
.'class="" readonly="readonly"',
|
||||
$actual
|
||||
);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user