diff --git a/libraries/tbl_columns_definition_form.inc.php b/libraries/tbl_columns_definition_form.inc.php index 0fe95993b4..ff55f3bf43 100644 --- a/libraries/tbl_columns_definition_form.inc.php +++ b/libraries/tbl_columns_definition_form.inc.php @@ -80,53 +80,30 @@ if (isset($field_fulltext) && is_array($field_fulltext)) { } } -for ($i = 0; $i < $num_fields; $i++) { +for ($columnNumber = 0; $columnNumber < $num_fields; $columnNumber++) { if (! empty($regenerate)) { - list($row, $submit_length, $submit_attribute, + list($columnMeta, $submit_length, $submit_attribute, $submit_default_current_timestamp, $comments_map, $mime_map) = PMA_handleRegeneration( isset($available_mime) ? $mime_map : null, $comments_map, $mime_map ); - } elseif (isset($fields_meta[$i])) { - $row = $fields_meta[$i]; - switch ($row['Default']) { - case null: - if ($row['Null'] == 'YES') { - $row['DefaultType'] = 'NULL'; - $row['DefaultValue'] = ''; - // SHOW FULL COLUMNS does not report the case - // when there is a DEFAULT value which is empty so we need to use the - // results of SHOW CREATE TABLE - } elseif (isset($row) - && isset($analyzed_sql[0]['create_table_fields'][$row['Field']] - ['default_value']) - ) { - $row['DefaultType'] = 'USER_DEFINED'; - $row['DefaultValue'] = $row['Default']; - } else { - $row['DefaultType'] = 'NONE'; - $row['DefaultValue'] = ''; - } - break; - case 'CURRENT_TIMESTAMP': - $row['DefaultType'] = 'CURRENT_TIMESTAMP'; - $row['DefaultValue'] = ''; - break; - default: - $row['DefaultType'] = 'USER_DEFINED'; - $row['DefaultValue'] = $row['Default']; - break; - } + } elseif (isset($fields_meta[$columnNumber])) { + $columnMeta = PMA_getColumnMetaForDefault( + $fields_meta[$columnNumber], + isset($analyzed_sql[0]['create_table_fields'] + [$fields_meta[$columnNumber]['Field']]['default_value']) + ); } - if (isset($row['Type'])) { - $extracted_columnspec = PMA_Util::extractColumnSpec($row['Type']); + if (isset($columnMeta['Type'])) { + $extracted_columnspec = PMA_Util::extractColumnSpec($columnMeta['Type']); if ($extracted_columnspec['type'] == 'bit') { - $row['Default'] - = PMA_Util::convertBitDefaultValue($row['Default']); + $columnMeta['Default'] + = PMA_Util::convertBitDefaultValue($columnMeta['Default']); } } + // Cell index: If certain fields get left out, the counter shouldn't change. $ci = 0; // Everytime a cell shall be left out the STRG-jumping feature, $ci_offset @@ -135,30 +112,23 @@ for ($i = 0; $i < $num_fields; $i++) { // old column name if ($is_backup) { - if (isset($row['Field'])) { - $_form_params['field_orig[' . $i . ']'] = $row['Field']; + if (isset($columnMeta['Field'])) { + $_form_params['field_orig[' . $columnNumber . ']'] + = $columnMeta['Field']; } else { - $_form_params['field_orig[' . $i . ']'] = ''; + $_form_params['field_orig[' . $columnNumber . ']'] = ''; } } // column name - $content_cells[$i][$ci] = ''; + $content_cells[$columnNumber][$ci] = PMA_getHtmlForColumnName( + $columnNumber, $ci, $ci_offset, isset($columnMeta) ? $columnMeta : null + ); $ci++; - // column type - $select_id = 'field_' . $i . '_' . ($ci - $ci_offset); - $content_cells[$i][$ci] = ''; + + // column type + $content_cells[$columnNumber][$ci] = PMA_getHtmlForColumnType( + $columnNumber, $ci, $ci_offset, $type_upper + ); + $ci++; // old column length if ($is_backup) { - $_form_params['field_length_orig[' . $i . ']'] = $length; + $_form_params['field_length_orig[' . $columnNumber . ']'] = $length; } // column length - $length_to_display = $length; - - $content_cells[$i][$ci] = '' - . '

'; - $content_cells[$i][$ci] .= __('ENUM or SET data too long?') - . ' ' - . __('Get more editing space') . '' - . '

'; + $content_cells[$columnNumber][$ci] = PMA_getHtmlForColumnLength( + $columnNumber, $ci, $ci_offset, $length_values_input_size, $length + ); $ci++; // column default - // old column default if ($is_backup) { - $_form_params['field_default_orig[' . $i . ']'] - = (isset($row['Default']) ? $row['Default'] : ''); + $_form_params['field_default_orig[' . $columnNumber . ']'] + = (isset($columnMeta['Default']) ? $columnMeta['Default'] : ''); } - - // here we put 'NONE' as the default value of drop-down; otherwise - // users would have problems if they forget to enter the default - // value (example, for an INT) - $default_options = array( - 'NONE' => _pgettext('for default', 'None'), - 'USER_DEFINED' => __('As defined:'), - 'NULL' => 'NULL', - 'CURRENT_TIMESTAMP' => 'CURRENT_TIMESTAMP', + $content_cells[$columnNumber][$ci] = PMA_getHtmlForColumnDefault( + $columnNumber, $ci, $ci_offset, + isset($type_upper) ? $type_upper : null, + isset($default_current_timestamp) ? $default_current_timestamp : null, + isset($columnMeta) ? $columnMeta : null ); - - // for a TIMESTAMP, do not show the string "CURRENT_TIMESTAMP" as a default value - if ($type_upper == 'TIMESTAMP' - && ! empty($default_current_timestamp) - && isset($row['Default']) - ) { - $row['Default'] = ''; - } - - if ($type_upper == 'BIT') { - $row['DefaultValue'] - = PMA_Util::convertBitDefaultValue($row['DefaultValue']); - } - - $content_cells[$i][$ci] = ''; - $content_cells[$i][$ci] .= '
'; - $content_cells[$i][$ci] .= ''; $ci++; // column collation - $tmp_collation = empty($row['Collation']) ? null : $row['Collation']; - $content_cells[$i][$ci] = PMA_generateCharsetDropdownBox( - PMA_CSDROPDOWN_COLLATION, 'field_collation[' . $i . ']', - 'field_' . $i . '_' . ($ci - $ci_offset), $tmp_collation, false + $content_cells[$columnNumber][$ci] = PMA_getHtmlForColumnCollation( + $columnNumber, $ci, $ci_offset, $columnMeta ); - unset($tmp_collation); $ci++; // column attribute - $content_cells[$i][$ci] = ''; + $content_cells[$columnNumber][$ci] = PMA_getHtmlForColumnAttribute( + $columnNumber, $ci, $ci_offset, + isset($extracted_columnspec) ? $extracted_columnspec : null, + isset($columnMeta) ? $columnMeta : null, + isset($submit_attribute) ? $submit_attribute : null, + isset($analyzed_sql) ? $analyzed_sql : null, + isset($submit_default_current_timestamp) + ? $submit_default_current_timestamp : null + ); $ci++; // column NULL - $content_cells[$i][$ci] = ''; - $content_cells[$i][$ci] .= ''; - - $content_cells[$i][$ci] .= ''; + + $html .= PMA_getHtmlForIndexTypeOption( + $columnNumber, $columnMeta, 'Primary', 'PRI' + ); + $html .= PMA_getHtmlForIndexTypeOption( + $columnNumber, $columnMeta, 'Unique', 'UNI' + ); + $html .= PMA_getHtmlForIndexTypeOption( + $columnNumber, $columnMeta, 'Index', 'MUL' + ); + if (!PMA_DRIZZLE) { + $html .= PMA_getHtmlForIndexTypeOption( + $columnNumber, $columnMeta, 'Fulltext', 'FULLTEXT' + ); + } + + $html .= ''; + + return $html; +} + +/** + * Function to get html for the index options + * + * @param int $columnNumber column number + * @param array $columnMeta column meta + * @param string $type index type + * @param string $key column meta key + * + * @return string + */ + +function PMA_getHtmlForIndexTypeOption($columnNumber, $columnMeta, $type, $key) +{ + $html = '