diff --git a/doc/config.rst b/doc/config.rst index 02ed25c2a7..69ac7ced67 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -3234,6 +3234,58 @@ MySQL settings FUNC\_SPATIAL, FUNC\_UUID) and for ``first_timestamp``, which is used for first timestamp column in table. +Default options for Transformations +----------------------------------- + +.. config:option:: $cfg['DefaultTransformations'] + + :type: array + :default: An array with below listed key-values + +.. config:option:: $cfg['DefaultTransformations']['Substring'] + + :type: array + :default: array(0, 'all', '…') + +.. config:option:: $cfg['DefaultTransformations']['Bool2Text'] + + :type: array + :default: array('T', 'F') + +.. config:option:: $cfg['DefaultTransformations']['External'] + + :type: array + :default: array(0, '-f /dev/null -i -wrap -q', 1, 1) + +.. config:option:: $cfg['DefaultTransformations']['PreApPend'] + + :type: array + :default: array('', '') + +.. config:option:: $cfg['DefaultTransformations']['Hex'] + + :type: array + :default: array('2') + +.. config:option:: $cfg['DefaultTransformations']['DateFormat'] + + :type: array + :default: array(0, '', 'local') + +.. config:option:: $cfg['DefaultTransformations']['Inline'] + + :type: array + :default: array('100', 100) + +.. config:option:: $cfg['DefaultTransformations']['TextImageLink'] + + :type: array + :default: array('', 100, 50) + +.. config:option:: $cfg['DefaultTransformations']['TextLink'] + + :type: array + :default: array('', '', '') Developer --------- diff --git a/doc/transformations.rst b/doc/transformations.rst index f04f80c455..02f43c5454 100644 --- a/doc/transformations.rst +++ b/doc/transformations.rst @@ -79,7 +79,8 @@ They are called 'MIME-type', 'Browser transformation' and which you can specify 2 options and you want to append a character set, enter "'first parameter','second parameter','charset=us-ascii'". You can, however use the defaults for the parameters: "'','','charset - =us-ascii'". + =us-ascii'". The default options can be configured using + :config:option:`$cfg['DefaultTransformations']` .. _transformationsfiles: diff --git a/libraries/classes/Plugins/Transformations/Abs/Bool2TextTransformationsPlugin.php b/libraries/classes/Plugins/Transformations/Abs/Bool2TextTransformationsPlugin.php index 76f3589ebf..584ef55598 100644 --- a/libraries/classes/Plugins/Transformations/Abs/Bool2TextTransformationsPlugin.php +++ b/libraries/classes/Plugins/Transformations/Abs/Bool2TextTransformationsPlugin.php @@ -42,7 +42,8 @@ abstract class Bool2TextTransformationsPlugin extends TransformationsPlugin */ public function applyTransformation($buffer, $options = array(), $meta = '') { - $options = $this->getOptions($options, array('T', 'F')); + $cfg = $GLOBALS['cfg']; + $options = $this->getOptions($options, $cfg['DefaultTransformations']['Bool2Text']); if ($buffer == '0') { return $options[1]; // return false label diff --git a/libraries/classes/Plugins/Transformations/Abs/DateFormatTransformationsPlugin.php b/libraries/classes/Plugins/Transformations/Abs/DateFormatTransformationsPlugin.php index 0a284bdef3..4372f871d8 100644 --- a/libraries/classes/Plugins/Transformations/Abs/DateFormatTransformationsPlugin.php +++ b/libraries/classes/Plugins/Transformations/Abs/DateFormatTransformationsPlugin.php @@ -51,17 +51,11 @@ abstract class DateFormatTransformationsPlugin extends TransformationsPlugin public function applyTransformation($buffer, $options = array(), $meta = '') { // possibly use a global transform and feed it with special options + $cfg = $GLOBALS['cfg']; + $options = $this->getOptions($options, $cfg['DefaultTransformations']['DateFormat']); // further operations on $buffer using the $options[] array. - if (empty($options[0])) { - $options[0] = 0; - } - - if (empty($options[2])) { - $options[2] = 'local'; - } else { - $options[2] = mb_strtolower($options[2]); - } + $options[2] = mb_strtolower($options[2]); if (empty($options[1])) { if ($options[2] == 'local') { diff --git a/libraries/classes/Plugins/Transformations/Abs/ExternalTransformationsPlugin.php b/libraries/classes/Plugins/Transformations/Abs/ExternalTransformationsPlugin.php index f0c06756a1..92f4da1d59 100644 --- a/libraries/classes/Plugins/Transformations/Abs/ExternalTransformationsPlugin.php +++ b/libraries/classes/Plugins/Transformations/Abs/ExternalTransformationsPlugin.php @@ -96,9 +96,10 @@ abstract class ExternalTransformationsPlugin extends TransformationsPlugin return $buffer; } + $cfg = $GLOBALS['cfg']; $options = $this->getOptions( $options, - array(0, '-f /dev/null -i -wrap -q', 1, 1) + $cfg['DefaultTransformations']['External'] ); if (isset($allowed_programs[$options[0]])) { diff --git a/libraries/classes/Plugins/Transformations/Abs/HexTransformationsPlugin.php b/libraries/classes/Plugins/Transformations/Abs/HexTransformationsPlugin.php index 8216d99554..81bc36b77e 100644 --- a/libraries/classes/Plugins/Transformations/Abs/HexTransformationsPlugin.php +++ b/libraries/classes/Plugins/Transformations/Abs/HexTransformationsPlugin.php @@ -43,7 +43,8 @@ abstract class HexTransformationsPlugin extends TransformationsPlugin public function applyTransformation($buffer, $options = array(), $meta = '') { // possibly use a global transform and feed it with special options - $options = $this->getOptions($options, array('2')); + $cfg = $GLOBALS['cfg']; + $options = $this->getOptions($options, $cfg['DefaultTransformations']['Hex']); $options[0] = intval($options[0]); if ($options[0] < 1) { diff --git a/libraries/classes/Plugins/Transformations/Abs/InlineTransformationsPlugin.php b/libraries/classes/Plugins/Transformations/Abs/InlineTransformationsPlugin.php index 8d40ff651a..d00c9819bd 100644 --- a/libraries/classes/Plugins/Transformations/Abs/InlineTransformationsPlugin.php +++ b/libraries/classes/Plugins/Transformations/Abs/InlineTransformationsPlugin.php @@ -45,13 +45,16 @@ abstract class InlineTransformationsPlugin extends TransformationsPlugin */ public function applyTransformation($buffer, $options = array(), $meta = '') { + $cfg = $GLOBALS['cfg']; + $options = $this->getOptions($options, $cfg['DefaultTransformations']['Inline']); + if (PMA_IS_GD2) { return '[' . htmlspecialchars($buffer) . ']'; } else { return '' + . '" border="0" width="' . intval($options[1]) + . '" height="' . intval($options[2]) . '" />' . htmlspecialchars($buffer) . ''; } diff --git a/libraries/classes/Plugins/Transformations/Abs/TextLinkTransformationsPlugin.php b/libraries/classes/Plugins/Transformations/Abs/TextLinkTransformationsPlugin.php index caeef5d7fa..762c58a861 100644 --- a/libraries/classes/Plugins/Transformations/Abs/TextLinkTransformationsPlugin.php +++ b/libraries/classes/Plugins/Transformations/Abs/TextLinkTransformationsPlugin.php @@ -47,6 +47,8 @@ abstract class TextLinkTransformationsPlugin extends TransformationsPlugin */ public function applyTransformation($buffer, $options = array(), $meta = '') { + $cfg = $GLOBALS['cfg']; + $options = $this->getOptions($options, $cfg['DefaultTransformations']['TextLink']); $url = (isset($options[0]) ? $options[0] : '') . ((isset($options[2]) && $options[2]) ? '' : $buffer); /* Do not allow javascript links */ if (! Sanitize::checkLink($url, true, true)) { diff --git a/libraries/config.default.php b/libraries/config.default.php index f8c6dae9cb..3ba4db76a4 100644 --- a/libraries/config.default.php +++ b/libraries/config.default.php @@ -3105,3 +3105,79 @@ $cfg['MysqlMinVersion'] = array( * @global array $cfg['DisableShortcutKeys'] */ $cfg['DisableShortcutKeys'] = false; + + +/******************************************************************************* + * Default options for transformations + */ + +/** + * Initialize default transformations array + * + * @global array $cfg['DefaultTransformations'] + */ +$cfg['DefaultTransformations'] = array(); + +/** + * Default transformations for Substring + * + * @global array $cfg['DefaultTransformations']['Substring'] + */ +$cfg['DefaultTransformations']['Substring'] = array(0, 'all', '…'); + +/** + * Default transformations for Bool2Text + * + * @global array $cfg['DefaultTransformations']['Bool2Text'] + */ +$cfg['DefaultTransformations']['Bool2Text'] = array('T', 'F'); + +/** + * Default transformations for External + * + * @global array $cfg['DefaultTransformations']['External'] + */ +$cfg['DefaultTransformations']['External'] = array(0, '-f /dev/null -i -wrap -q', 1, 1); + +/** + * Default transformations for PreApPend + * + * @global array $cfg['DefaultTransformations']['PreApPend'] + */ +$cfg['DefaultTransformations']['PreApPend'] = array('', ''); + +/** + * Default transformations for Hex + * + * @global array $cfg['DefaultTransformations']['Hex'] + */ +$cfg['DefaultTransformations']['Hex'] = array('2'); + +/** + * Default transformations for DateFormat + * + * @global array $cfg['DefaultTransformations']['DateFormat'] + */ +$cfg['DefaultTransformations']['DateFormat'] = array(0, '', 'local'); + +/** + * Default transformations for Inline + * + * @global array $cfg['DefaultTransformations']['Inline'] + */ +$cfg['DefaultTransformations']['Inline'] = array('100', 100); +$cfg['DefaultTransformations']['Inline']['wrapper_link'] = null; + +/** + * Default transformations for TextImageLink + * + * @global array $cfg['DefaultTransformations']['TextImageLink'] + */ +$cfg['DefaultTransformations']['TextImageLink'] = array(null, 100, 50); + +/** + * Default transformations for TextLink + * + * @global array $cfg['DefaultTransformations']['TextLink'] + */ +$cfg['DefaultTransformations']['TextLink'] = array(null, null, null); diff --git a/libraries/config/messages.inc.php b/libraries/config/messages.inc.php index e39ed2ac1b..ab3cfbd1bc 100644 --- a/libraries/config/messages.inc.php +++ b/libraries/config/messages.inc.php @@ -118,6 +118,25 @@ $strConfigShowColumnComments_name = __('Show column comments'); $strConfigShowColumnComments_desc = __('Whether column comments should be shown in table structure view'); $strConfigHideStructureActions_name = __('Hide table structure actions'); +$strConfigDefaultTransformations_Hex_name = __('Default transformations for Hex'); +$strConfigDefaultTransformations_Hex_desc = __('Values for options list for default transformations. These will be overwritten if tranformation is filled in at table structure page.'); +$strConfigDefaultTransformations_Substring_name = __('Default transformations for Substring'); +$strConfigDefaultTransformations_Substring_desc = __('Values for options list for default transformations. These will be overwritten if tranformation is filled in at table structure page.'); +$strConfigDefaultTransformations_Bool2Text_name = __('Default transformations for Bool2Text'); +$strConfigDefaultTransformations_Bool2Text_desc = __('Values for options list for default transformations. These will be overwritten if tranformation is filled in at table structure page.'); +$strConfigDefaultTransformations_External_name = __('Default transformations for External'); +$strConfigDefaultTransformations_External_desc = __('Values for options list for default transformations. These will be overwritten if tranformation is filled in at table structure page.'); +$strConfigDefaultTransformations_PreApPend_name = __('Default transformations for PreApPend'); +$strConfigDefaultTransformations_PreApPend_desc = __('Values for options list for default transformations. These will be overwritten if tranformation is filled in at table structure page.'); +$strConfigDefaultTransformations_DateFormat_name = __('Default transformations for DateFormat'); +$strConfigDefaultTransformations_DateFormat_desc = __('Values for options list for default transformations. These will be overwritten if tranformation is filled in at table structure page.'); +$strConfigDefaultTransformations_Inline_name = __('Default transformations for Inline'); +$strConfigDefaultTransformations_Inline_desc = __('Values for options list for default transformations. These will be overwritten if tranformation is filled in at table structure page.'); +$strConfigDefaultTransformations_TextImageLink_name = __('Default transformations for TextImageLink'); +$strConfigDefaultTransformations_TextImageLink_desc = __('Values for options list for default transformations. These will be overwritten if tranformation is filled in at table structure page.'); +$strConfigDefaultTransformations_TextLink_name = __('Default transformations for TextLink'); +$strConfigDefaultTransformations_TextLink_desc = __('Values for options list for default transformations. These will be overwritten if tranformation is filled in at table structure page.'); + $strConfigDisplayServersList_desc = __('Show server listing as a list instead of a drop down.'); $strConfigDisplayServersList_name = __('Display servers as a list'); diff --git a/libraries/config/user_preferences.forms.php b/libraries/config/user_preferences.forms.php index 650a2ad718..233f5af8f3 100644 --- a/libraries/config/user_preferences.forms.php +++ b/libraries/config/user_preferences.forms.php @@ -120,7 +120,19 @@ $forms['Main_panel']['DbStructure'] = array( 'ShowDbStructureLastCheck'); $forms['Main_panel']['TableStructure'] = array( 'HideStructureActions', - 'ShowColumnComments'); + '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',