diff --git a/ChangeLog b/ChangeLog index 85318d456..cf28d7d87 100755 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,13 @@ $Id$ $Source$ 2003-03-12 Garvin Hicking + * tbl_change.php3, config.inc.php3, libraries/config_import.lib.php3, + libraries/common.lib.php3: RFE #422243 - Definition of which MySQL functions + map to which MySQL field type and in the dropdown of the function list first + display the fitting functions, and then for compatibility reasons the rest of + the functions. + TODO: I don't know if I chose the correct mapping for all types. Please correct + config_import.lib.php3 and config.inc.php3 if therer are any mismappings. * sql.php3, tbl_alter.php3, tbl_move_copy.php3, tbl_properties_structure.php3, tbl_rename.php3, libraries/relation.lib.php3: Bugfix #579256 / RFE #577328 : Automatic update of relations, diff --git a/config.inc.php3 b/config.inc.php3 index d4c731b16..c59c93dec 100755 --- a/config.inc.php3 +++ b/config.inc.php3 @@ -543,6 +543,78 @@ if ($cfg['ShowFunctionFields']) { 'WEEKDAY', 'CONCAT' ); + + // Which column types will be mapped to which Group? + $cfg['RestricColumnTypes'] = array( + 'VARCHAR' => 'FUNC_CHAR', + 'TINYINT' => 'FUNC_NUMBER', + 'TEXT' => 'FUNC_CHAR', + 'DATE' => 'FUNC_DATE', + 'SMALLINT' => 'FUNC_NUMBER', + 'MEDIUMINT' => 'FUNC_NUMBER', + 'INT' => 'FUNC_NUMBER', + 'BIGINT' => 'FUNC_NUMBER', + 'FLOAT' => 'FUNC_NUMBER', + 'DOUBLE' => 'FUNC_NUMBER', + 'DECIMAL' => 'FUNC_NUMBER', + 'DATETIME' => 'FUNC_DATE', + 'TIMESTAMP' => 'FUNC_DATE', + 'TIME' => 'FUNC_DATE', + 'YEAR' => 'FUNC_DATE', + 'CHAR' => 'FUNC_CHAR', + 'TINYBLOB' => 'FUNC_CHAR', + 'TINYTEXT' => 'FUNC_CHAR', + 'BLOB' => 'FUNC_CHAR', + 'MEDIUMBLOB' => 'FUNC_CHAR', + 'MEDIUMTEXT' => 'FUNC_CHAR', + 'LONGBLOB' => 'FUNC_CHAR', + 'LONGTEXT' => 'FUNC_CHAR', + 'ENUM' => '', + 'SET' => '' + ); + + // Map above defined groups to any function + $cfg['RestricFunctions'] = array( + 'FUNC_CHAR' => array( + 'ASCII', + 'CHAR', + 'SOUNDEX', + 'LCASE', + 'UCASE', + 'PASSWORD', + 'MD5', + 'ENCRYPT', + 'LAST_INSERT_ID', + 'USER', + 'CONCAT' + ), + + 'FUNC_DATE' => array( + 'NOW', + 'CURDATE', + 'CURTIME', + 'FROM_DAYS', + 'FROM_UNIXTIME', + 'PERIOD_ADD', + 'PERIOD_DIFF', + 'TO_DAYS', + 'UNIX_TIMESTAMP', + 'WEEKDAY' + ), + + 'FUNC_NUMBER' => array( + 'ASCII', + 'CHAR', + 'MD5', + 'ENCRYPT', + 'RAND', + 'LAST_INSERT_ID', + 'COUNT', + 'AVG', + 'SUM' + ) + ); + } // end if diff --git a/libraries/common.lib.php3 b/libraries/common.lib.php3 index 63040971e..2efe0bfd8 100644 --- a/libraries/common.lib.php3 +++ b/libraries/common.lib.php3 @@ -138,7 +138,7 @@ h1 {font-family: sans-serif; font-size: large; font-weight: bold} * Includes compatibility code for older config.inc.php3 revisions * if necessary */ - if (!isset($cfg['FileRevision']) || (int) substr($cfg['FileRevision'], 13, 3) < 167) { + if (!isset($cfg['FileRevision']) || (int) substr($cfg['FileRevision'], 13, 3) < 168) { include('./libraries/config_import.lib.php3'); } diff --git a/libraries/config_import.lib.php3 b/libraries/config_import.lib.php3 index 300ae7efb..ac1c25aed 100644 --- a/libraries/config_import.lib.php3 +++ b/libraries/config_import.lib.php3 @@ -969,6 +969,77 @@ if (!defined('PMA_CONFIG_IMPORT_LIB_INCLUDED')) { 'CONCAT' ); } + + // Which column types will be mapped to which Group? + $cfg['RestricColumnTypes'] = array( + 'VARCHAR' => 'FUNC_CHAR', + 'TINYINT' => 'FUNC_NUMBER', + 'TEXT' => 'FUNC_CHAR', + 'DATE' => 'FUNC_DATE', + 'SMALLINT' => 'FUNC_NUMBER', + 'MEDIUMINT' => 'FUNC_NUMBER', + 'INT' => 'FUNC_NUMBER', + 'BIGINT' => 'FUNC_NUMBER', + 'FLOAT' => 'FUNC_NUMBER', + 'DOUBLE' => 'FUNC_NUMBER', + 'DECIMAL' => 'FUNC_NUMBER', + 'DATETIME' => 'FUNC_DATE', + 'TIMESTAMP' => 'FUNC_DATE', + 'TIME' => 'FUNC_DATE', + 'YEAR' => 'FUNC_DATE', + 'CHAR' => 'FUNC_CHAR', + 'TINYBLOB' => 'FUNC_CHAR', + 'TINYTEXT' => 'FUNC_CHAR', + 'BLOB' => 'FUNC_CHAR', + 'MEDIUMBLOB' => 'FUNC_CHAR', + 'MEDIUMTEXT' => 'FUNC_CHAR', + 'LONGBLOB' => 'FUNC_CHAR', + 'LONGTEXT' => 'FUNC_CHAR', + 'ENUM' => '', + 'SET' => '' + ); + + // Map above defined groups to any function + $cfg['RestricFunctions'] = array( + 'FUNC_CHAR' => array( + 'ASCII', + 'CHAR', + 'SOUNDEX', + 'LCASE', + 'UCASE', + 'PASSWORD', + 'MD5', + 'ENCRYPT', + 'LAST_INSERT_ID', + 'USER', + 'CONCAT' + ), + + 'FUNC_DATE' => array( + 'NOW', + 'CURDATE', + 'CURTIME', + 'FROM_DAYS', + 'FROM_UNIXTIME', + 'PERIOD_ADD', + 'PERIOD_DIFF', + 'TO_DAYS', + 'UNIX_TIMESTAMP', + 'WEEKDAY' + ), + + 'FUNC_NUMBER' => array( + 'ASCII', + 'CHAR', + 'MD5', + 'ENCRYPT', + 'RAND', + 'LAST_INSERT_ID', + 'COUNT', + 'AVG', + 'SUM' + ) + ); } if (!isset($cfg['PmaAbsoluteUri_DisableWarning'])) { diff --git a/tbl_change.php3 b/tbl_change.php3 index d4bd574f1..887fa347d 100755 --- a/tbl_change.php3 +++ b/tbl_change.php3 @@ -334,14 +334,51 @@ for ($i = 0; $i < $fields_cnt; $i++) { ' . $cfg['Functions'][$j] . '' . "\n"; + echo '' . $dropdown[$j] . '' . "\n"; + $dropdown_built[$dropdown[$j]] = 'TRUE'; + $op_spacing_needed = TRUE; + } + + // garvin: For compatibility's sake, do not let out all other functions. Instead + // print a seperator (blank) and then show ALL functions which weren't shown + // yet. + for ($j = 0; $j < count($cfg['Functions']); $j++) { + if (!isset($dropdown_built[$cfg['Functions'][$j]]) || $dropdown_built[$cfg['Functions'][$j]] != 'TRUE') { + // for default function = NOW() on first timestamp field + // -- swix/18jul01 + $selected = ($first_timestamp && $cfg['Functions'][$j] == 'NOW') + ? ' selected="selected"' + : ''; + if ($op_spacing_needed == TRUE) { + echo ' '; + echo '' . "\n"; + $op_spacing_needed = FALSE; + } + + echo ' '; + echo '' . $cfg['Functions'][$j] . '' . "\n"; + } } // end for unset($selected); ?>