diff --git a/db_export.php b/db_export.php index 2479f116cd..e43f914cc9 100644 --- a/db_export.php +++ b/db_export.php @@ -16,8 +16,6 @@ use PhpMyAdmin\Util; * Gets some core libraries */ require_once 'libraries/common.inc.php'; -require_once 'libraries/config/user_preferences.forms.php'; -require_once 'libraries/config/page_settings.forms.php'; PageSettings::showGroup('Export'); diff --git a/db_import.php b/db_import.php index 3989af0d10..8a266293f9 100644 --- a/db_import.php +++ b/db_import.php @@ -10,8 +10,6 @@ use PhpMyAdmin\Response; use PhpMyAdmin\Config\PageSettings; require_once 'libraries/common.inc.php'; -require_once 'libraries/config/user_preferences.forms.php'; -require_once 'libraries/config/page_settings.forms.php'; PageSettings::showGroup('Import'); diff --git a/db_sql.php b/db_sql.php index 3427cec598..5c1dee5ea8 100644 --- a/db_sql.php +++ b/db_sql.php @@ -12,10 +12,8 @@ use PhpMyAdmin\Response; * */ require_once 'libraries/common.inc.php'; -require_once 'libraries/config/user_preferences.forms.php'; -require_once 'libraries/config/page_settings.forms.php'; -PageSettings::showGroup('Sql_queries'); +PageSettings::showGroup('Sql'); /** * Runs common work diff --git a/doc/config.rst b/doc/config.rst index 228da6c92e..4543c27ad1 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -3152,7 +3152,7 @@ Various display setting Contains names of configuration options (keys in ``$cfg`` array) that users can't set through user preferences. For possible values, refer - to :file:`libraries/config/user_preferences.forms.php`. + to clases under :file:`libraries/classes/Config/Forms/User/`. .. config:option:: $cfg['UserprefsDeveloperTab'] diff --git a/libraries/classes/Config/Descriptions.php b/libraries/classes/Config/Descriptions.php index 36f37d4ffa..8ea3d05213 100644 --- a/libraries/classes/Config/Descriptions.php +++ b/libraries/classes/Config/Descriptions.php @@ -450,20 +450,14 @@ class Descriptions return __('Edit mode'); case 'Form_Edit_desc': return __('Customize edit mode.'); - case 'Form_Export_name': - return __('Export'); case 'Form_Export_defaults_name': return __('Export defaults'); case 'Form_Export_defaults_desc': return __('Customize default export options.'); - case 'Form_Features_name': - return __('Features'); case 'Form_General_name': return __('General'); case 'Form_General_desc': return __('Set some commonly used options.'); - case 'Form_Import_name': - return __('Import'); case 'Form_Import_defaults_name': return __('Import defaults'); case 'Form_Import_defaults_desc': @@ -555,18 +549,6 @@ class Descriptions 'Tracking of changes made in database. Requires the phpMyAdmin configuration ' . 'storage.' ); - case 'Formset_Export_name': - return __('Customize export options'); - case 'Formset_Features_name': - return __('Features'); - case 'Formset_Import_name': - return __('Customize import defaults'); - case 'Formset_Navi_panel_name': - return __('Customize navigation panel'); - case 'Formset_Main_panel_name': - return __('Customize main panel'); - case 'Formset_Sql_queries_name': - return __('SQL queries'); case 'Form_Sql_name': return __('SQL'); case 'Form_Sql_box_name': diff --git a/libraries/classes/Config/Form.php b/libraries/classes/Config/Form.php index efdad64252..f5ab1b7b7a 100644 --- a/libraries/classes/Config/Form.php +++ b/libraries/classes/Config/Form.php @@ -136,7 +136,7 @@ class Form /** * array_walk callback function, reads path of form fields from - * array (see file comment in setup.forms.php or user_preferences.forms.inc) + * array (see docs for \PhpMyAdmin\Config\Forms\BaseForm::getForms) * * @param mixed $value Value * @param mixed $key Key diff --git a/libraries/classes/Config/FormDisplay.php b/libraries/classes/Config/FormDisplay.php index e9e36d9ef1..fcc17b24d5 100644 --- a/libraries/classes/Config/FormDisplay.php +++ b/libraries/classes/Config/FormDisplay.php @@ -17,6 +17,7 @@ namespace PhpMyAdmin\Config; use PhpMyAdmin\Config\ConfigFile; use PhpMyAdmin\Config\Descriptions; use PhpMyAdmin\Config\Form; +use PhpMyAdmin\Config\Forms\User\UserFormList; use PhpMyAdmin\Config\Validator; use PhpMyAdmin\Sanitize; use PhpMyAdmin\Util; @@ -781,7 +782,7 @@ class FormDisplay return; } - $this->_userprefsKeys = array_flip(PMA_readUserprefsFieldNames()); + $this->_userprefsKeys = array_flip(UserFormList::getFields()); // read real config for user preferences display $userprefs_disallow = $GLOBALS['PMA_Config']->get('is_setup') ? $this->_configFile->get('UserprefsDisallow', array()) diff --git a/libraries/classes/Config/Forms/BaseForm.php b/libraries/classes/Config/Forms/BaseForm.php new file mode 100644 index 0000000000..c16fb8b384 --- /dev/null +++ b/libraries/classes/Config/Forms/BaseForm.php @@ -0,0 +1,85 @@ += 1 if editing a server + */ + public function __construct(ConfigFile $cf, $server_id = null) + { + parent::__construct($cf); + foreach (static::getForms() as $form_name => $form) { + $this->registerForm($form_name, $form, $server_id); + } + } + + /** + * List of available forms, each form is described as an array of fields to display. + * Fields MUST have their counterparts in the $cfg array. + * + * To define form field, use the notation below: + * $forms['Form group']['Form name'] = array('Option/path'); + * + * You can assign default values set by special button ("set value: ..."), eg.: + * 'Servers/1/pmadb' => 'phpmyadmin' + * + * To group options, use: + * ':group:' . __('group name') // just define a group + * or + * 'option' => ':group' // group starting from this option + * End group blocks with: + * ':group:end' + * + * @todo This should be abstract, but that does not work in PHP 5 + * + * @return array + */ + public static function getForms() + { + return array(); + } + + /** + * Returns list of fields used in the form. + * + * @return string[] + */ + public static function getFields() + { + $names = []; + foreach (static::getForms() as $form) { + foreach ($form as $k => $v) { + $names[] = is_int($k) ? $v : $k; + } + } + return $names; + } + + /** + * Returns name of the form + * + * @todo This should be abstract, but that does not work in PHP 5 + * + * @return string + */ + public static function getName() + { + return ''; + } +} diff --git a/libraries/classes/Config/Forms/BaseFormList.php b/libraries/classes/Config/Forms/BaseFormList.php new file mode 100644 index 0000000000..1065c3b3d3 --- /dev/null +++ b/libraries/classes/Config/Forms/BaseFormList.php @@ -0,0 +1,127 @@ +_forms = array(); + foreach (static::$all as $form) { + $class = static::get($form); + $this->_forms[] = new $class($cf); + } + } + + /** + * Processes forms, returns true on successful save + * + * @param bool $allow_partial_save allows for partial form saving + * on failed validation + * @param bool $check_form_submit whether check for $_POST['submit_save'] + * + * @return boolean whether processing was successful + */ + public function process($allow_partial_save = true, $check_form_submit = true) + { + $ret = true; + foreach ($this->_forms as $form) { + $ret = $ret && $form->process($allow_partial_save, $check_form_submit); + } + return $ret; + } + + /** + * Displays errors + * + * @return string HTML for errors + */ + public function displayErrors() + { + $ret = ''; + foreach ($this->_forms as $form) { + $ret .= $form->displayErrors(); + } + return $ret; + } + + /** + * Reverts erroneous fields to their default values + * + * @return void + */ + public function fixErrors() + { + foreach ($this->_forms as $form) { + $form->fixErrors(); + } + } + + /** + * Tells whether form validation failed + * + * @return boolean + */ + public function hasErrors() + { + $ret = false; + foreach ($this->_forms as $form) { + $ret = $ret || $form->hasErrors(); + } + return $ret; + } + + /** + * Returns list of fields used in the form. + * + * @return string[] + */ + public static function getFields() + { + $names = []; + foreach (static::$all as $form) { + $class = static::get($form); + $names = array_merge($names, $class::getFields()); + } + return $names; + } +} diff --git a/libraries/classes/Config/Forms/Page/BrowseForm.php b/libraries/classes/Config/Forms/Page/BrowseForm.php new file mode 100644 index 0000000000..e39a7fd2f1 --- /dev/null +++ b/libraries/classes/Config/Forms/Page/BrowseForm.php @@ -0,0 +1,21 @@ + MainForm::getForms()['Browse'] + ]; + } +} diff --git a/libraries/classes/Config/Forms/Page/DbStructureForm.php b/libraries/classes/Config/Forms/Page/DbStructureForm.php new file mode 100644 index 0000000000..03c9172aae --- /dev/null +++ b/libraries/classes/Config/Forms/Page/DbStructureForm.php @@ -0,0 +1,22 @@ + MainForm::getForms()['DbStructure'] + ]; + } +} + diff --git a/libraries/classes/Config/Forms/Page/EditForm.php b/libraries/classes/Config/Forms/Page/EditForm.php new file mode 100644 index 0000000000..b7b83b0333 --- /dev/null +++ b/libraries/classes/Config/Forms/Page/EditForm.php @@ -0,0 +1,23 @@ + MainForm::getForms()['Edit'], + 'Text_fields' => FeaturesForm::getForms()['Text_fields'], + ]; + } +} diff --git a/libraries/classes/Config/Forms/Page/ExportForm.php b/libraries/classes/Config/Forms/Page/ExportForm.php new file mode 100644 index 0000000000..824be9c7e4 --- /dev/null +++ b/libraries/classes/Config/Forms/Page/ExportForm.php @@ -0,0 +1,12 @@ + MainForm::getForms()['TableStructure'] + ]; + } +} + diff --git a/libraries/classes/Config/Forms/Setup/ConfigForm.php b/libraries/classes/Config/Forms/Setup/ConfigForm.php new file mode 100644 index 0000000000..35dfd85467 --- /dev/null +++ b/libraries/classes/Config/Forms/Setup/ConfigForm.php @@ -0,0 +1,23 @@ + array( + 'DefaultLang', + 'ServerDefault' + ), + ); + } +} diff --git a/libraries/classes/Config/Forms/Setup/ExportForm.php b/libraries/classes/Config/Forms/Setup/ExportForm.php new file mode 100644 index 0000000000..09e59a1490 --- /dev/null +++ b/libraries/classes/Config/Forms/Setup/ExportForm.php @@ -0,0 +1,12 @@ + ':group', + 'IconvExtraParams', + ':group:end', + 'ZipDump', + 'GZipDump', + 'BZipDump', + 'CompressOnFly' + ); + $result['Security'] = array( + 'blowfish_secret', + 'CheckConfigurationPermissions', + 'TrustedProxies', + 'AllowUserDropDatabase', + 'AllowArbitraryServer', + 'ArbitraryServerRegexp', + 'LoginCookieRecall', + 'LoginCookieStore', + 'LoginCookieDeleteAll', + 'CaptchaLoginPublicKey', + 'CaptchaLoginPrivateKey' + ); + $result['Developer'] = array( + 'UserprefsDeveloperTab', + 'DBG/sql', + ); + $result['Other_core_settings'] = array( + 'OBGzip', + 'PersistentConnections', + 'ExecTimeLimit', + 'MemoryLimit', + 'UseDbSearch', + 'ProxyUrl', + 'ProxyUser', + 'ProxyPass', + 'AllowThirdPartyFraming', + 'ZeroConf', + ); + return $result; + } +} diff --git a/libraries/classes/Config/Forms/Setup/ImportForm.php b/libraries/classes/Config/Forms/Setup/ImportForm.php new file mode 100644 index 0000000000..cc36b1ba61 --- /dev/null +++ b/libraries/classes/Config/Forms/Setup/ImportForm.php @@ -0,0 +1,12 @@ + array('Servers' => array(1 => array( + 'verbose', + 'host', + 'port', + 'socket', + 'ssl', + 'compress'))), + 'Server_auth' => array('Servers' => array(1 => array( + 'auth_type', + ':group:' . __('Config authentication'), + 'user', + 'password', + ':group:end', + ':group:' . __('HTTP authentication'), + 'auth_http_realm', + ':group:end', + ':group:' . __('Signon authentication'), + 'SignonSession', + 'SignonURL', + 'LogoutURL'))), + 'Server_config' => array('Servers' => array(1 => array( + 'only_db', + 'hide_db', + 'AllowRoot', + 'AllowNoPassword', + 'DisableIS', + 'AllowDeny/order', + 'AllowDeny/rules', + 'SessionTimeZone'))), + 'Server_pmadb' => array('Servers' => array(1 => array( + 'pmadb' => 'phpmyadmin', + 'controlhost', + 'controlport', + 'controluser', + 'controlpass', + 'bookmarktable' => 'pma__bookmark', + 'relation' => 'pma__relation', + 'userconfig' => 'pma__userconfig', + 'users' => 'pma__users', + 'usergroups' => 'pma__usergroups', + 'navigationhiding' => 'pma__navigationhiding', + 'table_info' => 'pma__table_info', + 'column_info' => 'pma__column_info', + 'history' => 'pma__history', + 'recent' => 'pma__recent', + 'favorite' => 'pma__favorite', + 'table_uiprefs' => 'pma__table_uiprefs', + 'tracking' => 'pma__tracking', + 'table_coords' => 'pma__table_coords', + 'pdf_pages' => 'pma__pdf_pages', + 'savedsearches' => 'pma__savedsearches', + 'central_columns' => 'pma__central_columns', + 'designer_settings' => 'pma__designer_settings', + 'export_templates' => 'pma__export_templates', + 'MaxTableUiprefs' => 100))), + 'Server_tracking' => array('Servers' => array(1 => array( + 'tracking_version_auto_create', + 'tracking_default_statements', + 'tracking_add_drop_view', + 'tracking_add_drop_table', + 'tracking_add_drop_database', + ))), + ); + } +} diff --git a/libraries/classes/Config/Forms/Setup/SetupFormList.php b/libraries/classes/Config/Forms/Setup/SetupFormList.php new file mode 100644 index 0000000000..900bf059b4 --- /dev/null +++ b/libraries/classes/Config/Forms/Setup/SetupFormList.php @@ -0,0 +1,25 @@ + array( + 'Export/method', + ':group:' . __('Quick'), + 'Export/quick_export_onserver', + 'Export/quick_export_onserver_overwrite', + ':group:end', + ':group:' . __('Custom'), + 'Export/format', + 'Export/compression', + 'Export/charset', + 'Export/lock_tables', + 'Export/as_separate_files', + 'Export/asfile' => ':group', + 'Export/onserver', + 'Export/onserver_overwrite', + ':group:end', + 'Export/file_template_table', + 'Export/file_template_database', + 'Export/file_template_server' + ), + 'Sql' => array( + 'Export/sql_include_comments' => ':group', + 'Export/sql_dates', + 'Export/sql_relation', + 'Export/sql_mime', + ':group:end', + 'Export/sql_use_transaction', + 'Export/sql_disable_fk', + 'Export/sql_views_as_tables', + 'Export/sql_metadata', + 'Export/sql_compatibility', + 'Export/sql_structure_or_data', + ':group:' . __('Structure'), + 'Export/sql_drop_database', + 'Export/sql_create_database', + 'Export/sql_drop_table', + 'Export/sql_create_table' => ':group', + 'Export/sql_if_not_exists', + 'Export/sql_auto_increment', + ':group:end', + 'Export/sql_create_view', + 'Export/sql_procedure_function', + 'Export/sql_create_trigger', + 'Export/sql_backquotes', + ':group:end', + ':group:' . __('Data'), + 'Export/sql_delayed', + 'Export/sql_ignore', + 'Export/sql_type', + 'Export/sql_insert_syntax', + 'Export/sql_max_query_size', + 'Export/sql_hex_for_binary', + 'Export/sql_utc_time' + ), + 'CodeGen' => array( + 'Export/codegen_format' + ), + 'Csv' => array( + ':group:' . __('CSV'), + 'Export/csv_separator', + 'Export/csv_enclosed', + 'Export/csv_escaped', + 'Export/csv_terminated', + 'Export/csv_null', + 'Export/csv_removeCRLF', + 'Export/csv_columns', + ':group:end', + ':group:' . __('CSV for MS Excel'), + 'Export/excel_null', + 'Export/excel_removeCRLF', + 'Export/excel_columns', + 'Export/excel_edition' + ), + 'Latex' => array( + 'Export/latex_caption', + 'Export/latex_structure_or_data', + ':group:' . __('Structure'), + 'Export/latex_structure_caption', + 'Export/latex_structure_continued_caption', + 'Export/latex_structure_label', + 'Export/latex_relation', + 'Export/latex_comments', + 'Export/latex_mime', + ':group:end', + ':group:' . __('Data'), + 'Export/latex_columns', + 'Export/latex_data_caption', + 'Export/latex_data_continued_caption', + 'Export/latex_data_label', + 'Export/latex_null' + ), + 'Microsoft_Office' => array( + ':group:' . __('Microsoft Word 2000'), + 'Export/htmlword_structure_or_data', + 'Export/htmlword_null', + 'Export/htmlword_columns'), + 'Open_Document' => array( + ':group:' . __('OpenDocument Spreadsheet'), + 'Export/ods_columns', + 'Export/ods_null', + ':group:end', + ':group:' . __('OpenDocument Text'), + 'Export/odt_structure_or_data', + ':group:' . __('Structure'), + 'Export/odt_relation', + 'Export/odt_comments', + 'Export/odt_mime', + ':group:end', + ':group:' . __('Data'), + 'Export/odt_columns', + 'Export/odt_null' + ), + 'Texy' => array( + 'Export/texytext_structure_or_data', + ':group:' . __('Data'), + 'Export/texytext_null', + 'Export/texytext_columns' + ), + ); + } + + public static function getName() + { + return __('Export'); + } +} diff --git a/libraries/classes/Config/Forms/User/FeaturesForm.php b/libraries/classes/Config/Forms/User/FeaturesForm.php new file mode 100644 index 0000000000..cac7dd5088 --- /dev/null +++ b/libraries/classes/Config/Forms/User/FeaturesForm.php @@ -0,0 +1,70 @@ + array( + 'VersionCheck', + 'NaturalOrder', + 'InitialSlidersState', + 'SkipLockedTables', + 'DisableMultiTableMaintenance', + 'ShowHint', + 'SendErrorReports', + 'ConsoleEnterExecutes', + 'DisableShortcutKeys', + ), + 'Databases' => array( + 'Servers/1/only_db', // saves to Server/only_db + 'Servers/1/hide_db', // saves to Server/hide_db + 'MaxDbList', + 'MaxTableList', + ), + 'Text_fields' => array( + 'CharEditing', + 'MinSizeForInputField', + 'MaxSizeForInputField', + 'CharTextareaCols', + 'CharTextareaRows', + 'TextareaCols', + 'TextareaRows', + 'LongtextDoubleTextarea' + ), + 'Page_titles' => array( + 'TitleDefault', + 'TitleTable', + 'TitleDatabase', + 'TitleServer' + ), + 'Warnings' => array( + 'PmaNoRelation_DisableWarning', + 'SuhosinDisableWarning', + 'LoginCookieValidityDisableWarning', + 'ReservedWordDisableWarning' + ), + ); + // skip Developer form if no setting is available + if ($GLOBALS['cfg']['UserprefsDeveloperTab']) { + $result['Developer'] = array( + 'DBG/sql' + ); + } + return $result; + } + + public static function getName() + { + return __('Features'); + } +} diff --git a/libraries/classes/Config/Forms/User/ImportForm.php b/libraries/classes/Config/Forms/User/ImportForm.php new file mode 100644 index 0000000000..daf5c43bba --- /dev/null +++ b/libraries/classes/Config/Forms/User/ImportForm.php @@ -0,0 +1,60 @@ + array( + 'Import/format', + 'Import/charset', + 'Import/allow_interrupt', + 'Import/skip_queries' + ), + 'Sql' => array( + 'Import/sql_compatibility', + 'Import/sql_no_auto_value_on_zero', + 'Import/sql_read_as_multibytes' + ), + 'Csv' => array( + ':group:' . __('CSV'), + 'Import/csv_replace', + 'Import/csv_ignore', + 'Import/csv_terminated', + 'Import/csv_enclosed', + 'Import/csv_escaped', + 'Import/csv_col_names', + ':group:end', + ':group:' . __('CSV using LOAD DATA'), + 'Import/ldi_replace', + 'Import/ldi_ignore', + 'Import/ldi_terminated', + 'Import/ldi_enclosed', + 'Import/ldi_escaped', + 'Import/ldi_local_option' + ), + 'Open_Document' => array( + ':group:' . __('OpenDocument Spreadsheet'), + 'Import/ods_col_names', + 'Import/ods_empty_rows', + 'Import/ods_recognize_percentages', + 'Import/ods_recognize_currency' + ), + + ); + } + + public static function getName() + { + return __('Import'); + } +} diff --git a/libraries/classes/Config/Forms/User/MainForm.php b/libraries/classes/Config/Forms/User/MainForm.php new file mode 100644 index 0000000000..e3c54eddbc --- /dev/null +++ b/libraries/classes/Config/Forms/User/MainForm.php @@ -0,0 +1,86 @@ + array( + 'ShowCreateDb', + 'ShowStats', + 'ShowServerInfo' + ), + 'DbStructure' => array( + 'ShowDbStructureCharset', + 'ShowDbStructureComment', + 'ShowDbStructureCreation', + 'ShowDbStructureLastUpdate', + 'ShowDbStructureLastCheck' + ), + 'TableStructure' => array( + 'HideStructureActions', + 'ShowColumnComments', + ':group:' . __('Default transformations'), + 'DefaultTransformations/Hex', + 'DefaultTransformations/Substring', + 'DefaultTransformations/Bool2Text', + 'DefaultTransformations/External', + 'DefaultTransformations/PreApPend', + 'DefaultTransformations/DateFormat', + 'DefaultTransformations/Inline', + 'DefaultTransformations/TextImageLink', + 'DefaultTransformations/TextLink', + ':group:end' + ), + 'Browse' => array( + 'TableNavigationLinksMode', + 'ActionLinksMode', + 'ShowAll', + 'MaxRows', + 'Order', + 'BrowsePointerEnable', + 'BrowseMarkerEnable', + 'GridEditing', + 'SaveCellsAtOnce', + 'RepeatCells', + 'LimitChars', + 'RowActionLinks', + 'RowActionLinksWithoutUnique', + 'TablePrimaryKeyOrder', + 'RememberSorting', + 'RelationalDisplay' + ), + 'Edit' => array( + 'ProtectBinary', + 'ShowFunctionFields', + 'ShowFieldTypesInDataEditView', + 'InsertRows', + 'ForeignKeyDropdownOrder', + 'ForeignKeyMaxLimit' + ), + 'Tabs' => array( + 'TabsMode', + 'DefaultTabServer', + 'DefaultTabDatabase', + 'DefaultTabTable' + ), + 'DisplayRelationalSchema' => array( + 'PDFDefaultPageSize' + ), + ); + } + + public static function getName() + { + return __('Main panel'); + } +} diff --git a/libraries/classes/Config/Forms/User/NaviForm.php b/libraries/classes/Config/Forms/User/NaviForm.php new file mode 100644 index 0000000000..7084353b6e --- /dev/null +++ b/libraries/classes/Config/Forms/User/NaviForm.php @@ -0,0 +1,60 @@ + array( + 'ShowDatabasesNavigationAsTree', + 'NavigationLinkWithMainPanel', + 'NavigationDisplayLogo', + 'NavigationLogoLink', + 'NavigationLogoLinkWindow', + 'NavigationTreePointerEnable', + 'FirstLevelNavigationItems', + 'NavigationTreeDisplayItemFilterMinimum', + 'NumRecentTables', + 'NumFavoriteTables' + ), + 'Navi_tree' => array( + 'MaxNavigationItems', + 'NavigationTreeEnableGrouping', + 'NavigationTreeEnableExpansion', + 'NavigationTreeShowTables', + 'NavigationTreeShowViews', + 'NavigationTreeShowFunctions', + 'NavigationTreeShowProcedures', + 'NavigationTreeShowEvents' + ), + 'Navi_servers' => array( + 'NavigationDisplayServers', + 'DisplayServersList', + ), + 'Navi_databases' => array( + 'NavigationTreeDisplayDbFilterMinimum', + 'NavigationTreeDbSeparator' + ), + 'Navi_tables' => array( + 'NavigationTreeDefaultTabTable', + 'NavigationTreeDefaultTabTable2', + 'NavigationTreeTableSeparator', + 'NavigationTreeTableLevel', + ), + ); + } + + public static function getName() + { + return __('Navigation panel'); + } +} diff --git a/libraries/classes/Config/Forms/User/SqlForm.php b/libraries/classes/Config/Forms/User/SqlForm.php new file mode 100644 index 0000000000..2058076a91 --- /dev/null +++ b/libraries/classes/Config/Forms/User/SqlForm.php @@ -0,0 +1,42 @@ + array( + 'ShowSQL', + 'Confirm', + 'QueryHistoryMax', + 'IgnoreMultiSubmitErrors', + 'MaxCharactersInDisplayedSQL', + 'RetainQueryBox', + 'CodemirrorEnable', + 'LintEnable', + 'EnableAutocompleteForTablesAndColumns', + 'DefaultForeignKeyChecks', + ), + 'Sql_box' => array( + 'SQLQuery/Edit', + 'SQLQuery/Explain', + 'SQLQuery/ShowAsPHP', + 'SQLQuery/Refresh', + ), + ); + } + + public static function getName() + { + return __('SQL queries'); + } +} diff --git a/libraries/classes/Config/Forms/User/UserFormList.php b/libraries/classes/Config/Forms/User/UserFormList.php new file mode 100644 index 0000000000..f32cae32f9 --- /dev/null +++ b/libraries/classes/Config/Forms/User/UserFormList.php @@ -0,0 +1,23 @@ +base_settings); PMA_userprefsPageInit($cf); - $form_display = new FormDisplay($cf); - foreach ($forms[$formGroupName] as $form_name => $form) { - // skip Developer form if no setting is available - if ($form_name == 'Developer' - && !$GLOBALS['cfg']['UserprefsDeveloperTab'] - ) { - continue; - } - $form_display->registerForm($form_name, $form, 1); - } + $form_display = new $form_class($cf); // Process form $error = null; @@ -226,7 +216,7 @@ class PageSettings */ public static function getNaviSettings() { - $object = new PageSettings('Navi_panel', 'pma_navigation_settings'); + $object = new PageSettings('Navi', 'pma_navigation_settings'); $response = Response::getInstance(); $response->addHTML($object->getErrorHTML()); diff --git a/libraries/classes/Controllers/Database/DatabaseStructureController.php b/libraries/classes/Controllers/Database/DatabaseStructureController.php index a16f503275..3377473327 100644 --- a/libraries/classes/Controllers/Database/DatabaseStructureController.php +++ b/libraries/classes/Controllers/Database/DatabaseStructureController.php @@ -24,8 +24,6 @@ use PhpMyAdmin\Util; use PhpMyAdmin\Url; require_once 'libraries/display_create_table.lib.php'; -require_once 'libraries/config/user_preferences.forms.php'; -require_once 'libraries/config/page_settings.forms.php'; /** * Handles database structure logic diff --git a/libraries/classes/Controllers/Table/TableStructureController.php b/libraries/classes/Controllers/Table/TableStructureController.php index 310d3344af..95438221df 100644 --- a/libraries/classes/Controllers/Table/TableStructureController.php +++ b/libraries/classes/Controllers/Table/TableStructureController.php @@ -25,9 +25,6 @@ use PhpMyAdmin\Transformations; use PhpMyAdmin\Url; use PhpMyAdmin\Util; -require_once 'libraries/config/user_preferences.forms.php'; -require_once 'libraries/config/page_settings.forms.php'; - /** * Handles table structure logic * diff --git a/libraries/common.inc.php b/libraries/common.inc.php index c2a92e9193..6a0abc20cb 100644 --- a/libraries/common.inc.php +++ b/libraries/common.inc.php @@ -899,8 +899,3 @@ if (! defined('PMA_MINIMUM_COMMON') } } } - -if (! defined('PMA_MINIMUM_COMMON')) { - include 'libraries/config/user_preferences.forms.php'; - include_once 'libraries/config/page_settings.forms.php'; -} diff --git a/libraries/config/page_settings.forms.php b/libraries/config/page_settings.forms.php deleted file mode 100644 index 2b925df527..0000000000 --- a/libraries/config/page_settings.forms.php +++ /dev/null @@ -1,29 +0,0 @@ - array(1 => array('host'))); - * can be written as - * $forms['Form group']['Form name'] = array('Servers/1/host'); - * - * You can assign default values set by special button ("set value: ..."), eg.: - * 'Servers/1/pmadb' => 'phpmyadmin' - * - * To group options, use: - * ':group:' . __('group name') // just define a group - * or - * 'option' => ':group' // group starting from this option - * End group blocks with: - * ':group:end' - * - * @package PhpMyAdmin-Setup - */ - -$forms = array(); -$forms['_config.php'] = array( - 'DefaultLang', - 'ServerDefault'); -$forms['Servers']['Server'] = array('Servers' => array(1 => array( - 'verbose', - 'host', - 'port', - 'socket', - 'ssl', - 'compress'))); -$forms['Servers']['Server_auth'] = array('Servers' => array(1 => array( - 'auth_type', - ':group:' . __('Config authentication'), - 'user', - 'password', - ':group:end', - ':group:' . __('HTTP authentication'), - 'auth_http_realm', - ':group:end', - ':group:' . __('Signon authentication'), - 'SignonSession', - 'SignonURL', - 'LogoutURL'))); -$forms['Servers']['Server_config'] = array('Servers' => array(1 => array( - 'only_db', - 'hide_db', - 'AllowRoot', - 'AllowNoPassword', - 'DisableIS', - 'AllowDeny/order', - 'AllowDeny/rules', - 'SessionTimeZone'))); -$forms['Servers']['Server_pmadb'] = array('Servers' => array(1 => array( - 'pmadb' => 'phpmyadmin', - 'controlhost', - 'controlport', - 'controluser', - 'controlpass', - 'bookmarktable' => 'pma__bookmark', - 'relation' => 'pma__relation', - 'userconfig' => 'pma__userconfig', - 'users' => 'pma__users', - 'usergroups' => 'pma__usergroups', - 'navigationhiding' => 'pma__navigationhiding', - 'table_info' => 'pma__table_info', - 'column_info' => 'pma__column_info', - 'history' => 'pma__history', - 'recent' => 'pma__recent', - 'favorite' => 'pma__favorite', - 'table_uiprefs' => 'pma__table_uiprefs', - 'tracking' => 'pma__tracking', - 'table_coords' => 'pma__table_coords', - 'pdf_pages' => 'pma__pdf_pages', - 'savedsearches' => 'pma__savedsearches', - 'central_columns' => 'pma__central_columns', - 'designer_settings' => 'pma__designer_settings', - 'export_templates' => 'pma__export_templates', - 'MaxTableUiprefs' => 100))); -$forms['Servers']['Server_tracking'] = array('Servers' => array(1 => array( - 'tracking_version_auto_create', - 'tracking_default_statements', - 'tracking_add_drop_view', - 'tracking_add_drop_table', - 'tracking_add_drop_database', -))); -$forms['Features']['Import_export'] = array( - 'UploadDir', - 'SaveDir', - 'RecodingEngine' => ':group', - 'IconvExtraParams', - ':group:end', - 'ZipDump', - 'GZipDump', - 'BZipDump', - 'CompressOnFly'); -$forms['Features']['Security'] = array( - 'blowfish_secret', - 'CheckConfigurationPermissions', - 'TrustedProxies', - 'AllowUserDropDatabase', - 'AllowArbitraryServer', - 'ArbitraryServerRegexp', - 'LoginCookieRecall', - 'LoginCookieValidity', - 'LoginCookieStore', - 'LoginCookieDeleteAll', - 'CaptchaLoginPublicKey', - 'CaptchaLoginPrivateKey'); -$forms['Features']['Page_titles'] = array( - 'TitleDefault', - 'TitleTable', - 'TitleDatabase', - 'TitleServer'); -$forms['Features']['Warnings'] = array( - 'PmaNoRelation_DisableWarning', - 'SuhosinDisableWarning', - 'LoginCookieValidityDisableWarning'); -$forms['Features']['Developer'] = array( - 'UserprefsDeveloperTab', - 'DBG/sql'); -$forms['Features']['Other_core_settings'] = array( - 'NaturalOrder', - 'InitialSlidersState', - 'MaxDbList', - 'MaxTableList', - 'NumFavoriteTables', - 'ShowHint', - 'OBGzip', - 'PersistentConnections', - 'ExecTimeLimit', - 'MemoryLimit', - 'SkipLockedTables', - 'DisableMultiTableMaintenance', - 'UseDbSearch', - 'VersionCheck', - 'SendErrorReports', - 'ConsoleEnterExecutes', - 'ProxyUrl', - 'ProxyUser', - 'ProxyPass', - 'AllowThirdPartyFraming', - 'ZeroConf', - 'DisableShortcutKeys' -); -$forms['Sql_queries']['Sql_queries'] = array( - 'ShowSQL', - 'Confirm', - 'QueryHistoryDB', - 'QueryHistoryMax', - 'IgnoreMultiSubmitErrors', - 'MaxCharactersInDisplayedSQL', - 'RetainQueryBox', - 'CodemirrorEnable', - 'LintEnable', - 'EnableAutocompleteForTablesAndColumns', - 'DefaultForeignKeyChecks'); -$forms['Sql_queries']['Sql_box'] = array('SQLQuery' => array( - 'Edit', - 'Explain', - 'ShowAsPHP', - 'Refresh')); -$forms['Navi_panel']['Navi_panel'] = array( - 'ShowDatabasesNavigationAsTree', - 'NavigationLinkWithMainPanel', - 'NavigationDisplayLogo', - 'NavigationLogoLink', - 'NavigationLogoLinkWindow', - 'NavigationTreePointerEnable', - 'FirstLevelNavigationItems', - 'NavigationTreeDisplayItemFilterMinimum', - 'NumRecentTables', - 'NumFavoriteTables' -); -$forms['Navi_panel']['Navi_tree'] = array( - 'MaxNavigationItems', - 'NavigationTreeEnableGrouping', - 'NavigationTreeEnableExpansion', - 'NavigationTreeShowTables', - 'NavigationTreeShowViews', - 'NavigationTreeShowFunctions', - 'NavigationTreeShowProcedures', - 'NavigationTreeShowEvents' -); -$forms['Navi_panel']['Navi_servers'] = array( - 'NavigationDisplayServers', - 'DisplayServersList'); -$forms['Navi_panel']['Navi_databases'] = array( - 'NavigationTreeDbSeparator'); -$forms['Navi_panel']['Navi_tables'] = array( - 'NavigationTreeDefaultTabTable', - 'NavigationTreeDefaultTabTable2', - 'NavigationTreeTableSeparator', - 'NavigationTreeTableLevel', -); -$forms['Main_panel']['Startup'] = array( - 'ShowCreateDb', - 'ShowStats', - 'ShowServerInfo', - 'ShowPhpInfo', - 'ShowChgPassword'); -$forms['Main_panel']['DbStructure'] = array( - 'ShowDbStructureCharset', - 'ShowDbStructureComment', - 'ShowDbStructureCreation', - 'ShowDbStructureLastUpdate', - 'ShowDbStructureLastCheck'); -$forms['Main_panel']['TableStructure'] = array( - 'HideStructureActions', - 'ShowColumnComments'); -$forms['Main_panel']['Browse'] = array( - 'TableNavigationLinksMode', - 'ShowAll', - 'MaxRows', - 'Order', - 'BrowsePointerEnable', - 'BrowseMarkerEnable', - 'GridEditing', - 'SaveCellsAtOnce', - 'RepeatCells', - 'LimitChars', - 'RowActionLinks', - 'RowActionLinksWithoutUnique', - 'TablePrimaryKeyOrder', - 'RememberSorting', - 'RelationalDisplay'); -$forms['Main_panel']['Edit'] = array( - 'ProtectBinary', - 'ShowFunctionFields', - 'ShowFieldTypesInDataEditView', - 'CharEditing', - 'MinSizeForInputField', - 'MaxSizeForInputField', - 'CharTextareaCols', - 'CharTextareaRows', - 'TextareaCols', - 'TextareaRows', - 'LongtextDoubleTextarea', - 'InsertRows', - 'ForeignKeyDropdownOrder', - 'ForeignKeyMaxLimit'); -$forms['Main_panel']['Tabs'] = array( - 'TabsMode', - 'ActionLinksMode', - 'DefaultTabServer', - 'DefaultTabDatabase', - 'DefaultTabTable' -); -$forms['Import']['Import_defaults'] = array('Import' => array( - 'format', - 'charset', - 'allow_interrupt', - 'skip_queries')); -$forms['Import']['Sql'] = array('Import' => array( - 'sql_compatibility', - 'sql_no_auto_value_on_zero')); -$forms['Import']['Csv'] = array('Import' => array( - ':group:' . __('CSV'), - 'csv_replace', - 'csv_ignore', - 'csv_terminated', - 'csv_enclosed', - 'csv_escaped', - 'csv_col_names', - ':group:end', - ':group:' . __('CSV using LOAD DATA'), - 'ldi_replace', - 'ldi_ignore', - 'ldi_terminated', - 'ldi_enclosed', - 'ldi_escaped', - 'ldi_local_option', - ':group:end')); -$forms['Import']['Open_Document'] = array('Import' => array( - ':group:' . __('OpenDocument Spreadsheet'), - 'ods_col_names', - 'ods_empty_rows', - 'ods_recognize_percentages', - 'ods_recognize_currency')); -$forms['Export']['Export_defaults'] = array('Export' => array( - 'method', - ':group:' . __('Quick'), - 'quick_export_onserver', - 'quick_export_onserver_overwrite', - ':group:end', - ':group:' . __('Custom'), - 'format', - 'compression', - 'charset', - 'lock_tables', - 'as_separate_files', - 'asfile' => ':group', - 'onserver', - 'onserver_overwrite', - ':group:end', - 'remember_file_template', - 'file_template_table', - 'file_template_database', - 'file_template_server')); -$forms['Export']['Sql'] = array('Export' => array( - 'sql_include_comments' => ':group', - 'sql_dates', - 'sql_relation', - 'sql_mime', - ':group:end', - 'sql_use_transaction', - 'sql_disable_fk', - 'sql_views_as_tables', - 'sql_metadata', - 'sql_compatibility', - 'sql_structure_or_data', - ':group:' . __('Structure'), - 'sql_drop_database', - 'sql_create_database', - 'sql_drop_table', - 'sql_procedure_function', - 'sql_create_table' => ':group', - 'sql_if_not_exists', - 'sql_auto_increment', - ':group:end', - 'sql_create_view', - 'sql_create_trigger', - 'sql_backquotes', - ':group:end', - ':group:' . __('Data'), - 'sql_delayed', - 'sql_ignore', - 'sql_type', - 'sql_insert_syntax', - 'sql_max_query_size', - 'sql_hex_for_binary', - 'sql_utc_time')); -$forms['Export']['CodeGen'] = array('Export' => array( - 'codegen_format')); -$forms['Export']['Csv'] = array('Export' => array( - ':group:' . __('CSV'), - 'csv_separator', - 'csv_enclosed', - 'csv_escaped', - 'csv_terminated', - 'csv_null', - 'csv_removeCRLF', - 'csv_columns', - ':group:end', - ':group:' . __('CSV for MS Excel'), - 'excel_null', - 'excel_removeCRLF', - 'excel_columns', - 'excel_edition')); -$forms['Export']['Latex'] = array('Export' => array( - 'latex_caption', - 'latex_structure_or_data', - ':group:' . __('Structure'), - 'latex_structure_caption', - 'latex_structure_continued_caption', - 'latex_structure_label', - 'latex_relation', - 'latex_comments', - 'latex_mime', - ':group:end', - ':group:' . __('Data'), - 'latex_columns', - 'latex_data_caption', - 'latex_data_continued_caption', - 'latex_data_label', - 'latex_null')); -$forms['Export']['Microsoft_Office'] = array('Export' => array( - ':group:' . __('Microsoft Word 2000'), - 'htmlword_structure_or_data', - 'htmlword_null', - 'htmlword_columns')); -$forms['Export']['Open_Document'] = array('Export' => array( - ':group:' . __('OpenDocument Spreadsheet'), - 'ods_columns', - 'ods_null', - ':group:end', - ':group:' . __('OpenDocument Text'), - 'odt_structure_or_data', - ':group:' . __('Structure'), - 'odt_relation', - 'odt_comments', - 'odt_mime', - ':group:end', - ':group:' . __('Data'), - 'odt_columns', - 'odt_null')); -$forms['Export']['Texy'] = array('Export' => array( - 'texytext_structure_or_data', - ':group:' . __('Data'), - 'texytext_null', - 'texytext_columns')); diff --git a/libraries/config/user_preferences.forms.php b/libraries/config/user_preferences.forms.php deleted file mode 100644 index 233f5af8f3..0000000000 --- a/libraries/config/user_preferences.forms.php +++ /dev/null @@ -1,310 +0,0 @@ - 'phpmyadmin' - * - * To group options, use: - * ':group:' . __('group name') // just define a group - * or - * 'option' => ':group' // group starting from this option - * End group blocks with: - * ':group:end' - * - * @package PhpMyAdmin - */ - -$forms = array(); -$forms['Features']['General'] = array( - 'VersionCheck', - 'NaturalOrder', - 'InitialSlidersState', - 'LoginCookieValidity', - 'SkipLockedTables', - 'DisableMultiTableMaintenance', - 'MaxTableList', - 'ShowHint', - 'SendErrorReports', - 'ConsoleEnterExecutes' -); -$forms['Features']['Databases'] = array( - 'Servers/1/only_db', // saves to Server/only_db - 'Servers/1/hide_db', // saves to Server/hide_db - 'MaxDbList' -); -$forms['Features']['Text_fields'] = array( - 'CharEditing', - 'MinSizeForInputField', - 'MaxSizeForInputField', - 'CharTextareaCols', - 'CharTextareaRows', - 'TextareaCols', - 'TextareaRows', - 'LongtextDoubleTextarea'); -$forms['Features']['Page_titles'] = array( - 'TitleDefault', - 'TitleTable', - 'TitleDatabase', - 'TitleServer'); -$forms['Features']['Warnings'] = array( - 'PmaNoRelation_DisableWarning', - 'SuhosinDisableWarning', - 'LoginCookieValidityDisableWarning', - 'ReservedWordDisableWarning'); -// settings from this form are treated specially, -// see prefs_forms.php and user_preferences.lib.php -$forms['Features']['Developer'] = array( - 'DBG/sql'); -$forms['Sql_queries']['Sql_queries'] = array( - 'ShowSQL', - 'Confirm', - 'QueryHistoryMax', - 'IgnoreMultiSubmitErrors', - 'MaxCharactersInDisplayedSQL', - 'RetainQueryBox', - 'CodemirrorEnable', - 'LintEnable', - 'EnableAutocompleteForTablesAndColumns', - 'DefaultForeignKeyChecks'); -$forms['Sql_queries']['Sql_box'] = array( - 'SQLQuery/Edit', - 'SQLQuery/Explain', - 'SQLQuery/ShowAsPHP', - 'SQLQuery/Refresh'); -$forms['Navi_panel']['Navi_panel'] = array( - 'ShowDatabasesNavigationAsTree', - 'NavigationLinkWithMainPanel', - 'NavigationDisplayLogo', - 'NavigationLogoLink', - 'NavigationLogoLinkWindow', - 'NavigationTreePointerEnable', - 'FirstLevelNavigationItems', - 'NavigationTreeDisplayItemFilterMinimum', - 'NumRecentTables', - 'NumFavoriteTables' -); -$forms['Navi_panel']['Navi_tree'] = array( - 'MaxNavigationItems', - 'NavigationTreeEnableGrouping', - 'NavigationTreeEnableExpansion', - 'NavigationTreeShowTables', - 'NavigationTreeShowViews', - 'NavigationTreeShowFunctions', - 'NavigationTreeShowProcedures', - 'NavigationTreeShowEvents' -); -$forms['Navi_panel']['Navi_databases'] = array( - 'NavigationTreeDisplayDbFilterMinimum', - 'NavigationTreeDbSeparator'); -$forms['Navi_panel']['Navi_tables'] = array( - 'NavigationTreeDefaultTabTable', - 'NavigationTreeDefaultTabTable2', - 'NavigationTreeTableSeparator', - 'NavigationTreeTableLevel', -); -$forms['Main_panel']['Startup'] = array( - 'ShowCreateDb', - 'ShowStats', - 'ShowServerInfo'); -$forms['Main_panel']['DbStructure'] = array( - 'ShowDbStructureCharset', - 'ShowDbStructureComment', - 'ShowDbStructureCreation', - 'ShowDbStructureLastUpdate', - 'ShowDbStructureLastCheck'); -$forms['Main_panel']['TableStructure'] = array( - 'HideStructureActions', - 'ShowColumnComments', - ':group:' . __('Default transformations'), - 'DefaultTransformations/Hex', - 'DefaultTransformations/Substring', - 'DefaultTransformations/Bool2Text', - 'DefaultTransformations/External', - 'DefaultTransformations/PreApPend', - 'DefaultTransformations/DateFormat', - 'DefaultTransformations/Inline', - 'DefaultTransformations/TextImageLink', - 'DefaultTransformations/TextLink', - ':group:end' -); -$forms['Main_panel']['Browse'] = array( - 'TableNavigationLinksMode', - 'ActionLinksMode', - 'ShowAll', - 'MaxRows', - 'Order', - 'BrowsePointerEnable', - 'BrowseMarkerEnable', - 'GridEditing', - 'SaveCellsAtOnce', - 'RepeatCells', - 'LimitChars', - 'RowActionLinks', - 'RowActionLinksWithoutUnique', - 'TablePrimaryKeyOrder', - 'RememberSorting', - 'RelationalDisplay'); -$forms['Main_panel']['Edit'] = array( - 'ProtectBinary', - 'ShowFunctionFields', - 'ShowFieldTypesInDataEditView', - 'InsertRows', - 'ForeignKeyDropdownOrder', - 'ForeignKeyMaxLimit'); -$forms['Main_panel']['Tabs'] = array( - 'TabsMode', - 'DefaultTabServer', - 'DefaultTabDatabase', - 'DefaultTabTable'); -$forms['Main_panel']['DisplayRelationalSchema'] = array( - 'PDFDefaultPageSize'); - -$forms['Import']['Import_defaults'] = array( - 'Import/format', - 'Import/charset', - 'Import/allow_interrupt', - 'Import/skip_queries' -); -$forms['Import']['Sql'] = array( - 'Import/sql_compatibility', - 'Import/sql_no_auto_value_on_zero', - 'Import/sql_read_as_multibytes'); -$forms['Import']['Csv'] = array( - ':group:' . __('CSV'), - 'Import/csv_replace', - 'Import/csv_ignore', - 'Import/csv_terminated', - 'Import/csv_enclosed', - 'Import/csv_escaped', - 'Import/csv_col_names', - ':group:end', - ':group:' . __('CSV using LOAD DATA'), - 'Import/ldi_replace', - 'Import/ldi_ignore', - 'Import/ldi_terminated', - 'Import/ldi_enclosed', - 'Import/ldi_escaped', - 'Import/ldi_local_option'); -$forms['Import']['Open_Document'] = array( - ':group:' . __('OpenDocument Spreadsheet'), - 'Import/ods_col_names', - 'Import/ods_empty_rows', - 'Import/ods_recognize_percentages', - 'Import/ods_recognize_currency'); -$forms['Export']['Export_defaults'] = array( - 'Export/method', - ':group:' . __('Quick'), - 'Export/quick_export_onserver', - 'Export/quick_export_onserver_overwrite', - ':group:end', - ':group:' . __('Custom'), - 'Export/format', - 'Export/compression', - 'Export/charset', - 'Export/lock_tables', - 'Export/as_separate_files', - 'Export/asfile' => ':group', - 'Export/onserver', - 'Export/onserver_overwrite', - ':group:end', - 'Export/file_template_table', - 'Export/file_template_database', - 'Export/file_template_server'); -$forms['Export']['Sql'] = array( - 'Export/sql_include_comments' => ':group', - 'Export/sql_dates', - 'Export/sql_relation', - 'Export/sql_mime', - ':group:end', - 'Export/sql_use_transaction', - 'Export/sql_disable_fk', - 'Export/sql_views_as_tables', - 'Export/sql_metadata', - 'Export/sql_compatibility', - 'Export/sql_structure_or_data', - ':group:' . __('Structure'), - 'Export/sql_drop_database', - 'Export/sql_create_database', - 'Export/sql_drop_table', - 'Export/sql_create_table' => ':group', - 'Export/sql_if_not_exists', - 'Export/sql_auto_increment', - ':group:end', - 'Export/sql_create_view', - 'Export/sql_procedure_function', - 'Export/sql_create_trigger', - 'Export/sql_backquotes', - ':group:end', - ':group:' . __('Data'), - 'Export/sql_delayed', - 'Export/sql_ignore', - 'Export/sql_type', - 'Export/sql_insert_syntax', - 'Export/sql_max_query_size', - 'Export/sql_hex_for_binary', - 'Export/sql_utc_time'); -$forms['Export']['CodeGen'] = array( - 'Export/codegen_format'); -$forms['Export']['Csv'] = array( - ':group:' . __('CSV'), - 'Export/csv_separator', - 'Export/csv_enclosed', - 'Export/csv_escaped', - 'Export/csv_terminated', - 'Export/csv_null', - 'Export/csv_removeCRLF', - 'Export/csv_columns', - ':group:end', - ':group:' . __('CSV for MS Excel'), - 'Export/excel_null', - 'Export/excel_removeCRLF', - 'Export/excel_columns', - 'Export/excel_edition'); -$forms['Export']['Latex'] = array( - 'Export/latex_caption', - 'Export/latex_structure_or_data', - ':group:' . __('Structure'), - 'Export/latex_structure_caption', - 'Export/latex_structure_continued_caption', - 'Export/latex_structure_label', - 'Export/latex_relation', - 'Export/latex_comments', - 'Export/latex_mime', - ':group:end', - ':group:' . __('Data'), - 'Export/latex_columns', - 'Export/latex_data_caption', - 'Export/latex_data_continued_caption', - 'Export/latex_data_label', - 'Export/latex_null'); -$forms['Export']['Microsoft_Office'] = array( - ':group:' . __('Microsoft Word 2000'), - 'Export/htmlword_structure_or_data', - 'Export/htmlword_null', - 'Export/htmlword_columns'); -$forms['Export']['Open_Document'] = array( - ':group:' . __('OpenDocument Spreadsheet'), - 'Export/ods_columns', - 'Export/ods_null', - ':group:end', - ':group:' . __('OpenDocument Text'), - 'Export/odt_structure_or_data', - ':group:' . __('Structure'), - 'Export/odt_relation', - 'Export/odt_comments', - 'Export/odt_mime', - ':group:end', - ':group:' . __('Data'), - 'Export/odt_columns', - 'Export/odt_null'); -$forms['Export']['Texy'] = array( - 'Export/texytext_structure_or_data', - ':group:' . __('Data'), - 'Export/texytext_null', - 'Export/texytext_columns'); diff --git a/libraries/user_preferences.inc.php b/libraries/user_preferences.inc.php index fe51a072c5..693c2538bc 100644 --- a/libraries/user_preferences.inc.php +++ b/libraries/user_preferences.inc.php @@ -5,7 +5,7 @@ * * @package PhpMyAdmin */ -use PhpMyAdmin\Config\Descriptions; +use PhpMyAdmin\Config\Forms\User\UserFormList; use PhpMyAdmin\Message; use PhpMyAdmin\Relation; use PhpMyAdmin\Sanitize; @@ -16,15 +16,11 @@ if (!defined('PHPMYADMIN')) { // build user preferences menu $form_param = isset($_GET['form']) ? $_GET['form'] : null; -if (! isset($forms[$form_param])) { - $forms_keys = array_keys($forms); - $form_param = array_shift($forms_keys); -} $tabs_icons = array( 'Features' => 'b_tblops.png', - 'Sql_queries' => 'b_sql.png', - 'Navi_panel' => 'b_select.png', - 'Main_panel' => 'b_props.png', + 'Sql' => 'b_sql.png', + 'Navi' => 'b_select.png', + 'Main' => 'b_props.png', 'Import' => 'b_import.png', 'Export' => 'b_export.png'); @@ -35,10 +31,11 @@ $content = PhpMyAdmin\Util::getHtmlTab( ) ) . "\n"; $script_name = basename($GLOBALS['PMA_PHP_SELF']); -foreach (array_keys($forms) as $formset) { +foreach (UserFormList::getAll() as $formset) { + $formset_class = UserFormList::get($formset); $tab = array( 'link' => 'prefs_forms.php', - 'text' => Descriptions::get('Form_' . $formset), + 'text' => $formset_class::getName(), 'icon' => $tabs_icons[$formset], 'active' => ($script_name == 'prefs_forms.php' && $formset == $form_param)); $content .= PhpMyAdmin\Util::getHtmlTab($tab, array('form' => $formset)) diff --git a/libraries/user_preferences.lib.php b/libraries/user_preferences.lib.php index efe305c570..5c2209dea1 100644 --- a/libraries/user_preferences.lib.php +++ b/libraries/user_preferences.lib.php @@ -6,6 +6,7 @@ * @package PhpMyAdmin */ use PhpMyAdmin\Config\ConfigFile; +use PhpMyAdmin\Config\Forms\User\UserFormList; use PhpMyAdmin\Core; use PhpMyAdmin\Message; use PhpMyAdmin\Relation; @@ -24,7 +25,7 @@ if (! defined('PHPMYADMIN')) { */ function PMA_userprefsPageInit(ConfigFile $cf) { - $forms_all_keys = PMA_readUserprefsFieldNames($GLOBALS['forms']); + $forms_all_keys = UserFormList::getFields(); $cf->resetConfigData(); // start with a clean instance $cf->setAllowedKeys($forms_all_keys); $cf->setCfgUpdateReadMapping( @@ -157,11 +158,7 @@ function PMA_applyUserprefs(array $config_data) { $cfg = array(); $blacklist = array_flip($GLOBALS['cfg']['UserprefsDisallow']); - if (!$GLOBALS['cfg']['UserprefsDeveloperTab']) { - // disallow everything in the Developers tab - $blacklist['DBG/sql'] = true; - } - $whitelist = array_flip(PMA_readUserprefsFieldNames()); + $whitelist = array_flip(UserFormList::getFields()); // whitelist some additional fields which are custom handled $whitelist['ThemeDefault'] = true; $whitelist['fontsize'] = true; @@ -178,40 +175,6 @@ function PMA_applyUserprefs(array $config_data) return $cfg; } -/** - * Reads user preferences field names - * - * @param array|null $forms Forms - * - * @return array - */ -function PMA_readUserprefsFieldNames(array $forms = null) -{ - static $names; - - if (defined('TESTSUITE')) { - $names = null; - } - - // return cached results - if ($names !== null) { - return $names; - } - if (is_null($forms)) { - $forms = array(); - include 'libraries/config/user_preferences.forms.php'; - } - $names = array(); - foreach ($forms as $formset) { - foreach ($formset as $form) { - foreach ($form as $k => $v) { - $names[] = is_int($k) ? $v : $k; - } - } - } - return $names; -} - /** * Updates one user preferences option (loads and saves to database). * diff --git a/prefs_forms.php b/prefs_forms.php index f364196d6f..0bc0160fb6 100644 --- a/prefs_forms.php +++ b/prefs_forms.php @@ -6,7 +6,7 @@ * @package PhpMyAdmin */ use PhpMyAdmin\Config\ConfigFile; -use PhpMyAdmin\Config\FormDisplay; +use PhpMyAdmin\Config\Forms\User\UserFormList; use PhpMyAdmin\Core; use PhpMyAdmin\Response; use PhpMyAdmin\Url; @@ -16,7 +16,6 @@ use PhpMyAdmin\Url; */ require_once 'libraries/common.inc.php'; require_once 'libraries/user_preferences.lib.php'; -require 'libraries/config/user_preferences.forms.php'; $cf = new ConfigFile($GLOBALS['PMA_Config']->base_settings); PMA_userprefsPageInit($cf); @@ -24,19 +23,12 @@ PMA_userprefsPageInit($cf); // handle form processing $form_param = isset($_GET['form']) ? $_GET['form'] : null; -if (! isset($forms[$form_param])) { - $forms_keys = array_keys($forms); - $form_param = array_shift($forms_keys); +$form_class = UserFormList::get($form_param); +if (is_null($form_class)) { + Core::fatalError(__('Incorrect form specified!')); } -$form_display = new FormDisplay($cf); -foreach ($forms[$form_param] as $form_name => $form) { - // skip Developer form if no setting is available - if ($form_name == 'Developer' && !$GLOBALS['cfg']['UserprefsDeveloperTab']) { - continue; - } - $form_display->registerForm($form_name, $form, 1); -} +$form_display = new $form_class($cf, 1); if (isset($_POST['revert'])) { // revert erroneous fields to their default values diff --git a/prefs_manage.php b/prefs_manage.php index ea9b968a9d..b6b27a5ce9 100644 --- a/prefs_manage.php +++ b/prefs_manage.php @@ -6,7 +6,7 @@ * @package PhpMyAdmin */ use PhpMyAdmin\Config\ConfigFile; -use PhpMyAdmin\Config\FormDisplay; +use PhpMyAdmin\Config\Forms\User\UserFormList; use PhpMyAdmin\Core; use PhpMyAdmin\File; use PhpMyAdmin\Message; @@ -21,7 +21,6 @@ use PhpMyAdmin\ThemeManager; */ require_once 'libraries/common.inc.php'; require_once 'libraries/user_preferences.lib.php'; -require 'libraries/config/user_preferences.forms.php'; $cf = new ConfigFile($GLOBALS['PMA_Config']->base_settings); PMA_userprefsPageInit($cf); @@ -94,12 +93,7 @@ if (isset($_POST['submit_export']) } else { // sanitize input values: treat them as though // they came from HTTP POST request - $form_display = new FormDisplay($cf); - foreach ($forms as $formset_id => $formset) { - foreach ($formset as $form_name => $form) { - $form_display->registerForm($formset_id . ': ' . $form_name, $form); - } - } + $form_display = new UserFormList($cf); $new_config = $cf->getFlatDefaultConfig(); if (!empty($_POST['import_merge'])) { $new_config = array_merge($new_config, $cf->getConfigArray()); diff --git a/server_export.php b/server_export.php index 2c82d3f7cf..72f18f98fb 100644 --- a/server_export.php +++ b/server_export.php @@ -13,8 +13,6 @@ use PhpMyAdmin\Response; * Does the common work */ require_once 'libraries/common.inc.php'; -require_once 'libraries/config/user_preferences.forms.php'; -require_once 'libraries/config/page_settings.forms.php'; require_once 'libraries/server_common.inc.php'; PageSettings::showGroup('Export'); diff --git a/server_import.php b/server_import.php index 19e1bde701..b8027ec41a 100644 --- a/server_import.php +++ b/server_import.php @@ -12,8 +12,6 @@ use PhpMyAdmin\Response; * */ require_once 'libraries/common.inc.php'; -require_once 'libraries/config/user_preferences.forms.php'; -require_once 'libraries/config/page_settings.forms.php'; PageSettings::showGroup('Import'); diff --git a/server_sql.php b/server_sql.php index 8d09a41fd3..418903a05c 100644 --- a/server_sql.php +++ b/server_sql.php @@ -12,10 +12,8 @@ use PhpMyAdmin\Response; * */ require_once 'libraries/common.inc.php'; -require_once 'libraries/config/user_preferences.forms.php'; -require_once 'libraries/config/page_settings.forms.php'; -PageSettings::showGroup('Sql_queries'); +PageSettings::showGroup('Sql'); /** * Does the common work diff --git a/setup/config.php b/setup/config.php index 9e18436a48..ae99059675 100644 --- a/setup/config.php +++ b/setup/config.php @@ -5,8 +5,8 @@ * * @package PhpMyAdmin-Setup */ -use PhpMyAdmin\Config\FormDisplay; use PhpMyAdmin\Setup\ConfigGenerator; +use PhpMyAdmin\Config\Forms\Setup\ConfigForm; use PhpMyAdmin\Core; use PhpMyAdmin\Url; use PhpMyAdmin\Response; @@ -16,11 +16,8 @@ use PhpMyAdmin\Response; */ require './lib/common.inc.php'; -require './libraries/config/setup.forms.php'; - -$form_display = new FormDisplay($GLOBALS['ConfigFile']); -$form_display->registerForm('_config.php', $forms['_config.php']); -$form_display->save('_config.php'); +$form_display = new ConfigForm($GLOBALS['ConfigFile']); +$form_display->save('Config'); $response = Response::getInstance(); diff --git a/setup/frames/form.inc.php b/setup/frames/form.inc.php index 76e5e04255..9153598366 100644 --- a/setup/frames/form.inc.php +++ b/setup/frames/form.inc.php @@ -6,8 +6,7 @@ * @package PhpMyAdmin-Setup */ -use PhpMyAdmin\Config\Descriptions; -use PhpMyAdmin\Config\FormDisplay; +use PhpMyAdmin\Config\Forms\Setup\SetupFormList; use PhpMyAdmin\Core; if (!defined('PHPMYADMIN')) { @@ -19,20 +18,12 @@ if (!defined('PHPMYADMIN')) { */ require_once './setup/lib/form_processing.lib.php'; -require './libraries/config/setup.forms.php'; - $formset_id = Core::isValid($_GET['formset'], 'scalar') ? $_GET['formset'] : null; $mode = isset($_GET['mode']) ? $_GET['mode'] : null; -if (! isset($forms[$formset_id]) || substr($formset_id, 0, 1) === '_') { - Core::fatalError(__('Incorrect formset, check $formsets array in setup/frames/form.inc.php!')); -} - -$form_title = Descriptions::get('Formset_' . $formset_id); -if (! is_null($form_title)) { - echo '