diff --git a/export.php b/export.php index d638f218d6..abe366d99f 100644 --- a/export.php +++ b/export.php @@ -42,8 +42,6 @@ $type = $what; // Check export type if (! isset($export_plugin)) { PMA_fatalError(__('Bad type!')); -} else { - $export_plugin_properties = $export_plugin->getProperties(); } /** @@ -92,9 +90,10 @@ if ($_REQUEST['output_format'] == 'astext') { } // Does export require to be into file? -if (isset($export_plugin_properties['force_file']) && ! $asfile) { - - $message = PMA_Message::error(__('Selected export type has to be saved in file!')); +if ($export_plugin->getProperties()->getForceFile() != null && ! $asfile) { + $message = PMA_Message::error( + __('Selected export type has to be saved in file!') + ); if ($export_type == 'server') { $active_page = 'server_export.php'; include 'server_export.php'; @@ -326,13 +325,15 @@ if ($asfile) { // Grab basic dump extension and mime type // Check if the user already added extension; get the substring where the extension would be if it was included - $extension_start_pos = strlen($filename) - strlen($export_plugin_properties['extension']) - 1; + $extension_start_pos = strlen($filename) - strlen( + $export_plugin->getProperties()->getExtension() + ) - 1; $user_extension = substr($filename, $extension_start_pos, strlen($filename)); - $required_extension = "." . $export_plugin_properties['extension']; + $required_extension = "." . $export_plugin->getProperties()->getExtension(); if (strtolower($user_extension) != $required_extension) { $filename .= $required_extension; } - $mime_type = $export_plugin_properties['mime_type']; + $mime_type = $export_plugin->getProperties()->getMimeType(); // If dump is going to be compressed, set correct mime_type and add // compression to extension diff --git a/libraries/CommonFunctions.class.php b/libraries/CommonFunctions.class.php index ab95a6874b..de5a172d42 100644 --- a/libraries/CommonFunctions.class.php +++ b/libraries/CommonFunctions.class.php @@ -3541,8 +3541,7 @@ class PMA_CommonFunctions if (! empty($extensions)) { $extensions .= '|'; } - $properties = $import_plugin->getProperties(); - $extensions .= $properties['extension']; + $extensions .= $import_plugin->getProperties()->getExtension(); } $matcher = '@\.(' . $extensions . ')(\.(' diff --git a/libraries/plugin_interface.lib.php b/libraries/plugin_interface.lib.php index 03d11e22f0..873945ef68 100644 --- a/libraries/plugin_interface.lib.php +++ b/libraries/plugin_interface.lib.php @@ -129,14 +129,21 @@ function PMA_pluginCheckboxCheck($section, $opt) */ function PMA_pluginGetDefault($section, $opt) { - if (isset($_GET[$opt])) { // If the form is being repopulated using $_GET data, that is priority + if (isset($_GET[$opt])) { + // If the form is being repopulated using $_GET data, that is priority return htmlspecialchars($_GET[$opt]); - } elseif (isset($GLOBALS['timeout_passed']) && $GLOBALS['timeout_passed'] && isset($_REQUEST[$opt])) { + } elseif (isset($GLOBALS['timeout_passed']) + && $GLOBALS['timeout_passed'] + && isset($_REQUEST[$opt])) { return htmlspecialchars($_REQUEST[$opt]); } elseif (isset($GLOBALS['cfg'][$section][$opt])) { $matches = array(); /* Possibly replace localised texts */ - if (preg_match_all('/(str[A-Z][A-Za-z0-9]*)/', $GLOBALS['cfg'][$section][$opt], $matches)) { + if (preg_match_all( + '/(str[A-Z][A-Za-z0-9]*)/', + $GLOBALS['cfg'][$section][$opt], + $matches + )) { $val = $GLOBALS['cfg'][$section][$opt]; foreach ($matches[0] as $match) { if (isset($GLOBALS[$match])) { @@ -172,7 +179,6 @@ function PMA_pluginGetChoice($section, $name, &$list, $cfgname = null) $default = PMA_pluginGetDefault($section, $cfgname); foreach ($list as $plugin) { $plugin_name = strtolower(substr(get_class($plugin), strlen($section))); - $properties = $plugin->getProperties(); $ret .= '' - . PMA_getString($properties['text']) + . PMA_getString($plugin->getProperties()->getText()) . '' . "\n"; } $ret .= '' . "\n"; @@ -191,9 +197,9 @@ function PMA_pluginGetChoice($section, $name, &$list, $cfgname = null) // Whether each plugin has to be saved as a file foreach ($list as $plugin) { $plugin_name = strtolower(substr(get_class($plugin), strlen($section))); - $properties = $plugin->getProperties(); - $ret .= '' - . PMA_getString($opt['text']) . ''; - } elseif ($opt['type'] == 'text') { - $ret .= '
  • ' . "\n"; - $ret .= ''; - $ret .= ''; - } elseif ($opt['type'] == 'message_only') { - $ret .= '
  • ' . "\n"; - $ret .= '

    ' . PMA_getString($opt['text']) . '

    '; - } elseif ($opt['type'] == 'select') { - $ret .= '
  • ' . "\n"; - $ret .= ''; - $ret .= ''; - } elseif ($opt['type'] == 'radio') { - $default = PMA_pluginGetDefault($section, $plugin_name . '_' . $opt['name']); - foreach ($opt['values'] as $key => $val) { - $ret .= '
  • ' - . PMA_getString($val) . '
  • '; - } - } elseif ($opt['type'] == 'hidden') { - $ret .= '
  • '; - } elseif ($opt['type'] == 'begin_group') { - $ret .= '
    '; - if (isset($opt['text'])) { - $ret .= '

    ' . PMA_getString($opt['text']) . '

    '; + + if (! $is_subgroup) { + // for main groups + $ret .= '
    '; + if ($propertyGroup->getText() != null) { + $ret .= '

    ' . PMA_getString($propertyGroup->getText()) . '

    '; } $ret .= '
      '; - } elseif ($opt['type'] == 'end_group') { - $ret .= '
    '; - } elseif ($opt['type'] == 'begin_subgroup') { - /* each subgroup can have a header, which may also be a form element */ - $ret .= PMA_pluginGetOneOption($section, $plugin_name, $id, $opt['subgroup_header']) . '
  • '; - } else { - $ret .= '>'; - } - } elseif ($opt['type'] == 'end_subgroup') { - $ret .= '
  • '; - } else { - /* This should be seen only by plugin writers, so I do not thing this - * needs translation. */ - $ret .= 'UNKNOWN OPTION ' . $opt['type'] . ' IN IMPORT PLUGIN ' . $plugin_name . '!'; } - if (isset($opt['doc'])) { - if (count($opt['doc']) == 3) { - $ret .= PMA_CommonFunctions::getInstance()->showMySQLDocu($opt['doc'][0], $opt['doc'][1], false, $opt['doc'][2]); - } elseif (count($opt['doc']) == 1) { - $ret .= PMA_CommonFunctions::getInstance()->showDocu($opt['doc'][0]); + + foreach ($propertyGroup->getProperties() as $propertyItem) { + $property_class = get_class($propertyItem); + // if the property is a subgroup, we deal with it recursively + if (strpos("group", $property_class)) { + // for subgroups + // each subgroup can have a header, which may also be a form element + $subgroup_header = $propertyItem->getSubgroupHeader(); + $ret .= PMA_pluginGetOneOption( + $section, + $plugin_name, + $propertyItem, + true + ) . '
  • '; + } else { + $ret .= '>'; + } } else { - $ret .= PMA_CommonFunctions::getInstance()->showMySQLDocu($opt['doc'][0], $opt['doc'][1]); + // single property item + switch ($property_class) { + case "BoolPropertyItem": + $ret .= '
  • ' . "\n"; + $ret .= 'getName()); + + if ($propertyItem->getForce() != null) { + // Same code is also few lines lower, update both if needed + $ret .= ' onclick="if (!this.checked && ' + . '(!document.getElementById(\'checkbox_' . $plugin_name + . '_' . $propertyItem->getForce() . '\') ' + . '|| !document.getElementById(\'checkbox_' + . $plugin_name . '_' . $propertyItem->getForce() + . '\').checked)) ' + . 'return false; else return true;"'; + } + $ret .= ' />'; + $ret .= ''; + break; + case "DocPropertyItem": + echo "DocPropertyItem"; + break; + case "HiddenPropertyItem": + $ret .= '
  • '; + break; + case "MessageOnlyPropertyItem": + $ret .= '
  • ' . "\n"; + $ret .= '

    ' . PMA_getString($propertyItem->getText()) . '

    '; + break; + case "RadioPropertyItem": + $default = PMA_pluginGetDefault($section, $plugin_name . '_' + . $propertyItem->getName()); + foreach ($propertyItem->getValues() as $key => $val) { + $ret .= '
  • ' + . PMA_getString($val) . '
  • '; + } + break; + case "SelectPropertyItem": + $ret .= '
  • ' . "\n"; + $ret .= ''; + $ret .= ''; + break; + case "TextPropertyItem": + $ret .= '
  • ' . "\n"; + $ret .= ''; + $ret .= 'getSize() != null + ? ' size="' . $propertyItem->getSize() . '"' + : '') + . ($propertyItem->getLen() != null + ? ' maxlength="' . $propertyItem->getLen() . '"' + : '') + . ' />'; + break; + default:; + } } } - // Close the list element after $opt['doc'] link is displayed - if ($opt['type'] == 'bool' || $opt['type'] == 'text' || $opt['type'] == 'message_only' || $opt['type'] == 'select') { + if ($is_subgroup) { + // end subgroup + $ret .= '
  • '; + } else { + // end main group + $ret .= '
    '; + } + + $doc = $propertyItem->getDoc(); + if (isset($doc)) { + if (count($doc) == 3) { + $ret .= PMA_CommonFunctions::getInstance()->showMySQLDocu( + $doc[0], + $doc[1], + false, + $doc[2] + ); + } elseif (count($doc) == 1) { + $ret .= PMA_CommonFunctions::getInstance()->showDocu($doc[0]); + } else { + $ret .= PMA_CommonFunctions::getInstance()->showMySQLDocu( + $doc[0], + $doc[1] + ); + } + } + + // Close the list element after $doc link is displayed + if ($property_class == 'BoolPropertyItem' + || $property_class == 'MessageOnlyPropertyItem' + || $property_class == 'SelectPropertyItem' + || $property_class == 'TextPropertyItem' + ) { $ret .= ''; } $ret .= "\n"; @@ -329,27 +411,38 @@ function PMA_pluginGetOptions($section, &$list) // Options for plugins that support them foreach ($list as $plugin) { $plugin_name = strtolower(substr(get_class($plugin), strlen($section))); - $properties = $plugin->getProperties(); - $ret .= '
    '; - $count = 0; - $ret .= '

    ' . PMA_getString($properties['text']) . '

    '; - if (isset($properties['options']) && count($properties['options']) > 0) { - foreach ($properties['options'] as $id => $opt) { - if ($opt['type'] != 'hidden' - && $opt['type'] != 'begin_group' - && $opt['type'] != 'end_group' - && $opt['type'] != 'begin_subgroup' - && $opt['type'] != 'end_subgroup' - ) { - $count++; + $ret .= '
    '; + $ret .= '

    ' . PMA_getString($plugin->getProperties()->getText()) + . '

    '; + + if ($plugin->getProperties()->getOptions() != null + && count($plugin->getProperties()->getOptions()) > 0 + ) { + foreach ($plugin->getProperties()->getOptions()->getProperties() + as $propertyMainGroup + ) { + // check for hidden properties + $no_options = true; + foreach ($propertyMainGroup->getProperties() as $propertyItem) { + if (strcmp("HiddenPropertyItem", get_class($propertyItem))) { + $no_options = false; + break; + } } - $ret .= PMA_pluginGetOneOption($section, $plugin_name, $id, $opt); + + $ret .= PMA_pluginGetOneOption( + $section, + $plugin_name, + $propertyMainGroup + ); } } - if ($count == 0) { + + if ($no_options) { $ret .= '

    ' . __('This format has no options') . '

    '; } $ret .= '
    '; } return $ret; -} +} \ No newline at end of file diff --git a/libraries/plugins/export/ExportCodegen.class.php b/libraries/plugins/export/ExportCodegen.class.php index 11e9df24c0..13f9d0004e 100644 --- a/libraries/plugins/export/ExportCodegen.class.php +++ b/libraries/plugins/export/ExportCodegen.class.php @@ -75,33 +75,43 @@ class ExportCodegen extends ExportPlugin */ protected function setProperties() { - $this->properties = array( - 'text' => 'CodeGen', - 'extension' => 'cs', - 'mime_type' => 'text/cs', - 'options' => array(), - 'options_text' => __('Options') - ); + $props = 'libraries/properties/'; + require_once "$props/plugins/ExportPluginProperties.class.php"; + require_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; + require_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; + require_once "$props/options/items/HiddenPropertyItem.class.php"; + require_once "$props/options/items/SelectPropertyItem.class.php"; - $this->properties['options'] = array( - array( - 'type' => 'begin_group', - 'name' => 'general_opts' - ), - array( - 'type' => 'hidden', - 'name' => 'structure_or_data' - ), - array( - 'type' => 'select', - 'name' => 'format', - 'text' => __('Format:'), - 'values' => $this->_getCgFormats() - ), - array( - 'type' => 'end_group' - ) - ); + $exportPluginProperties = new ExportPluginProperties(); + $exportPluginProperties->setText('CodeGen'); + $exportPluginProperties->setExtension('cs'); + $exportPluginProperties->setMimeType('text/cs'); + $exportPluginProperties->setOptionsText(__('Options')); + + // create the root group that will be the options field for + // $exportPluginProperties + // this will be shown as "Format specific options" + $exportSpecificOptions = new OptionsPropertyRootGroup(); + $exportSpecificOptions->setName("Format Specific Options"); + + // general options main group + $generalOptions = new OptionsPropertyMainGroup(); + $generalOptions->setName("general_opts"); + // create primary items and add them to the group + $leaf = new HiddenPropertyItem(); + $leaf->setName("structure_or_data"); + $generalOptions->addProperty($leaf); + $leaf = new SelectPropertyItem(); + $leaf->setName("format"); + $leaf->setText(__('Format:')); + $leaf->setValues($this->_getCgFormats()); + $generalOptions->addProperty($leaf); + // add the main group to the root group + $exportSpecificOptions->addProperty($generalOptions); + + // set the options for the export plugin property item + $exportPluginProperties->setOptions($exportSpecificOptions); + $this->properties = $exportPluginProperties; } /** diff --git a/libraries/plugins/export/ExportCsv.class.php b/libraries/plugins/export/ExportCsv.class.php index 24af87d603..0ffc3ea4a8 100644 --- a/libraries/plugins/export/ExportCsv.class.php +++ b/libraries/plugins/export/ExportCsv.class.php @@ -83,64 +83,68 @@ class ExportCsv extends ExportPlugin */ protected function setProperties() { - $this->properties = array( - 'text' => __('CSV'), - 'extension' => 'csv', - 'mime_type' => 'text/comma-separated-values', - 'options' => array(), - 'options_text' => __('Options') - ); + $props = 'libraries/properties/'; + require_once "$props/plugins/ExportPluginProperties.class.php"; + require_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; + require_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; + require_once "$props/options/items/TextPropertyItem.class.php"; + require_once "$props/options/items/BoolPropertyItem.class.php"; + require_once "$props/options/items/HiddenPropertyItem.class.php"; - $this->properties['options'] = array( - array( - 'type' => 'begin_group', - 'name' => 'general_opts' - ), - array( - 'type' => 'text', - 'name' => 'separator', - 'text' => __('Columns separated with:') - ), - array( - 'type' => 'text', - 'name' => 'enclosed', - 'text' => __('Columns enclosed with:') - ), - array( - 'type' => 'text', - 'name' => 'escaped', - 'text' => __('Columns escaped with:') - ), - array( - 'type' => 'text', - 'name' => 'terminated', - 'text' => __('Lines terminated with:') - ), - array( - 'type' => 'text', - 'name' => 'null', - 'text' => __('Replace NULL with:') - ), - array( - 'type' => 'bool', - 'name' => 'removeCRLF', - 'text' => __( - 'Remove carriage return/line feed characters within columns' - ) - ), - array( - 'type' => 'bool', - 'name' => 'columns', - 'text' => __('Put columns names in the first row') - ), - array( - 'type' => 'hidden', - 'name' => 'structure_or_data' - ), - array( - 'type' => 'end_group' - ) - ); + $exportPluginProperties = new ExportPluginProperties(); + $exportPluginProperties->setText('CSV'); + $exportPluginProperties->setExtension('csv'); + $exportPluginProperties->setMimeType('text/comma-separated-values'); + $exportPluginProperties->setOptionsText(__('Options')); + + // create the root group that will be the options field for + // $exportPluginProperties + // this will be shown as "Format specific options" + $exportSpecificOptions = new OptionsPropertyRootGroup(); + $exportSpecificOptions->setName("Format Specific Options"); + + // general options main group + $generalOptions = new OptionsPropertyMainGroup(); + $generalOptions->setName("general_opts"); + // create leaf items and add them to the group + $leaf = new TextPropertyItem(); + $leaf->setName("separator"); + $leaf->setText(__('Columns separated with:')); + $generalOptions->addProperty($leaf); + $leaf = new TextPropertyItem(); + $leaf->setName("enclosed"); + $leaf->setText(__('Columns enclosed with:')); + $generalOptions->addProperty($leaf); + $leaf = new TextPropertyItem(); + $leaf->setName("escaped"); + $leaf->setText(__('Columns escaped with:')); + $generalOptions->addProperty($leaf); + $leaf = new TextPropertyItem(); + $leaf->setName("terminated"); + $leaf->setText(__('Lines terminated with:')); + $generalOptions->addProperty($leaf); + $leaf = new TextPropertyItem(); + $leaf->setName('null'); + $leaf->setText(__('Replace NULL with:')); + $generalOptions->addProperty($leaf); + $leaf = new BoolPropertyItem(); + $leaf->setName('removeCRLF'); + $leaf->setText(__( + 'Remove carriage return/line feed characters within columns' + )); + $leaf = new BoolPropertyItem(); + $leaf->setName('columns'); + $leaf->setText(__('Put columns names in the first row')); + $generalOptions->addProperty($leaf); + $leaf = new HiddenPropertyItem(); + $leaf->setName('structure_or_data'); + $generalOptions->addProperty($leaf); + // add the main group to the root group + $exportSpecificOptions->addProperty($generalOptions); + + // set the options for the export plugin property item + $exportPluginProperties->setOptions($exportSpecificOptions); + $this->properties = $exportPluginProperties; } /** diff --git a/libraries/plugins/export/ExportExcel.class.php b/libraries/plugins/export/ExportExcel.class.php index 96bf0ba3cb..c77029dc2e 100644 --- a/libraries/plugins/export/ExportExcel.class.php +++ b/libraries/plugins/export/ExportExcel.class.php @@ -27,53 +27,62 @@ class ExportExcel extends ExportCsv */ protected function setProperties() { - $this->properties = array( - 'text' => __('CSV for MS Excel'), - 'extension' => 'csv', - 'mime_type' => 'text/comma-separated-values', - 'options' => array(), - 'options_text' => __('Options') - ); + $props = 'libraries/properties/'; + require_once "$props/plugins/ExportPluginProperties.class.php"; + require_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; + require_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; + require_once "$props/options/items/TextPropertyItem.class.php"; + require_once "$props/options/items/BoolPropertyItem.class.php"; + require_once "$props/options/items/SelectPropertyItem.class.php"; + require_once "$props/options/items/HiddenPropertyItem.class.php"; - $this->properties['options'] = array( - array( - 'type' => 'begin_group', - 'name' => 'general_opts' - ), - array( - 'type' => 'text', - 'name' => 'null', - 'text' => __('Replace NULL with:') - ), - array( - 'type' => 'bool', - 'name' => 'removeCRLF', - 'text' => __( - 'Remove carriage return/line feed characters within columns' - ) - ), - array( - 'type' => 'bool', - 'name' => 'columns', - 'text' => __('Put columns names in the first row') - ), - array( - 'type' => 'select', - 'name' => 'edition', - 'values' => array( - 'win' => 'Windows', - 'mac_excel2003' => 'Excel 2003 / Macintosh', - 'mac_excel2008' => 'Excel 2008 / Macintosh'), - 'text' => __('Excel edition:') - ), - array( - 'type' => 'hidden', - 'name' => 'structure_or_data' - ), - array( - 'type' => 'end_group' - ) - ); + $exportPluginProperties = new ExportPluginProperties(); + $exportPluginProperties->setText('CSV for MS Excel'); + $exportPluginProperties->setExtension('csv'); + $exportPluginProperties->setMimeType('text/comma-separated-values'); + $exportPluginProperties->setOptionsText(__('Options')); + + // create the root group that will be the options field for + // $exportPluginProperties + // this will be shown as "Format specific options" + $exportSpecificOptions = new OptionsPropertyRootGroup(); + $exportSpecificOptions->setName("Format Specific Options"); + + // general options main group + $generalOptions = new OptionsPropertyMainGroup(); + $generalOptions->setName("general_opts"); + // create primary items and add them to the group + $leaf = new TextPropertyItem(); + $leaf->setName('null'); + $leaf->setText(__('Replace NULL with:')); + $generalOptions->addProperty($leaf); + $leaf = new BoolPropertyItem(); + $leaf->setName('removeCRLF'); + $leaf->setText(__( + 'Remove carriage return/line feed characters within columns' + )); + $leaf = new BoolPropertyItem(); + $leaf->setName('columns'); + $leaf->setText(__('Put columns names in the first row')); + $generalOptions->addProperty($leaf); + $leaf = new SelectPropertyItem(); + $leaf->setName('edition'); + $leaf->setValues(array( + 'win' => 'Windows', + 'mac_excel2003' => 'Excel 2003 / Macintosh', + 'mac_excel2008' => 'Excel 2008 / Macintosh' + )); + $leaf->setText(__('Excel edition:')); + $generalOptions->addProperty($leaf); + $leaf = new HiddenPropertyItem(); + $leaf->setName('structure_or_data'); + $generalOptions->addProperty($leaf); + // add the main group to the root group + $exportSpecificOptions->addProperty($generalOptions); + + // set the options for the export plugin property item + $exportPluginProperties->setOptions($exportSpecificOptions); + $this->properties = $exportPluginProperties; } /** diff --git a/libraries/plugins/export/ExportHtmlword.class.php b/libraries/plugins/export/ExportHtmlword.class.php index 14bc6f0941..69268b5f03 100644 --- a/libraries/plugins/export/ExportHtmlword.class.php +++ b/libraries/plugins/export/ExportHtmlword.class.php @@ -35,56 +35,63 @@ class ExportHtmlword extends ExportPlugin */ protected function setProperties() { - $this->properties = array( - 'text' => __('Microsoft Word 2000'), - 'extension' => 'doc', - 'mime_type' => 'application/vnd.ms-word', - 'force_file' => true, - 'options' => array(), - 'options_text' => __('Options') - ); + $props = 'libraries/properties/'; + require_once "$props/plugins/ExportPluginProperties.class.php"; + require_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; + require_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; + require_once "$props/options/items/RadioPropertyItem.class.php"; + require_once "$props/options/items/TextPropertyItem.class.php"; + require_once "$props/options/items/BoolPropertyItem.class.php"; - $this->properties['options'] = array( - /* what to dump (structure/data/both) */ - array( - 'type' => 'begin_group', - 'name' => 'dump_what', - 'text' => __('Dump table') - ), - array( - 'type' => 'radio', - 'name' => 'structure_or_data', - 'values' => array( - 'structure' => __('structure'), - 'data' => __('data'), - 'structure_and_data' => __('structure and data') - ) - ), - array( - 'type' => 'end_group' - ), + $exportPluginProperties = new ExportPluginProperties(); + $exportPluginProperties->setText('Microsoft Word 2000'); + $exportPluginProperties->setExtension('doc'); + $exportPluginProperties->setMimeType('application/vnd.ms-word'); + $exportPluginProperties->setForceFile(true); + $exportPluginProperties->setOptionsText(__('Options')); - /* data options */ - array( - 'type' => 'begin_group', - 'name' => 'data', - 'text' => __('Data dump options'), - 'force' => 'structure' - ), - array( - 'type' => 'text', - 'name' => 'null', - 'text' => __('Replace NULL with:') - ), - array( - 'type' => 'bool', - 'name' => 'columns', - 'text' => __('Put columns names in the first row') - ), - array( - 'type' => 'end_group' - ) - ); + // create the root group that will be the options field for + // $exportPluginProperties + // this will be shown as "Format specific options" + $exportSpecificOptions = new OptionsPropertyRootGroup(); + $exportSpecificOptions->setName("Format Specific Options"); + + // what to dump (structure/data/both) + $dumpWhat = new OptionsPropertyMainGroup(); + $dumpWhat->setName("dump_what"); + $dumpWhat->setText(__('Dump table')); + // create primary items and add them to the group + $leaf = new RadioPropertyItem(); + $leaf->setName("structure_or_data"); + $leaf->setValues(array( + 'structure' => __('structure'), + 'data' => __('data'), + 'structure_and_data' => __('structure and data') + )); + $dumpWhat->addProperty($leaf); + // add the main group to the root group + $exportSpecificOptions->addProperty($dumpWhat); + + // data options main group + $dataOptions = new OptionsPropertyMainGroup(); + $dataOptions->setName("dump_what"); + $dataOptions->setText(__('Data dump options')); + $dataOptions->setForce('structure'); + // create primary items and add them to the group + $leaf = new TextPropertyItem(); + $leaf->setName("null"); + $leaf->setText(__('Replace NULL with:')); + $dataOptions->addProperty($leaf); + $leaf = new BoolPropertyItem(); + $leaf->setName("columns"); + $leaf->setText(__('Put columns names in the first row')); + $dataOptions->addProperty($leaf); + // add the main group to the root group + $exportSpecificOptions->addProperty($dataOptions); + + // set the options for the export plugin property item + $exportPluginProperties->setOptions($exportSpecificOptions); + $this->properties = $exportPluginProperties; } /** @@ -590,10 +597,10 @@ class ExportHtmlword extends ExportPlugin $column, $unique_keys ) { $definition = ''; - + $extracted_columnspec = PMA_CommonFunctions::getInstance()->extractColumnSpec($column['Type']); - + $type = htmlspecialchars($extracted_columnspec['print_type']); if (empty($type)) { $type = ' '; diff --git a/libraries/plugins/export/ExportJson.class.php b/libraries/plugins/export/ExportJson.class.php index 21d57f4c12..a75e184afa 100644 --- a/libraries/plugins/export/ExportJson.class.php +++ b/libraries/plugins/export/ExportJson.class.php @@ -35,27 +35,37 @@ class ExportJson extends ExportPlugin */ protected function setProperties() { - $this->properties = array( - 'text' => 'JSON', - 'extension' => 'json', - 'mime_type' => 'text/plain', - 'options' => array(), - 'options_text' => __('Options') - ); + $props = 'libraries/properties/'; + require_once "$props/plugins/ExportPluginProperties.class.php"; + require_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; + require_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; + require_once "$props/options/items/HiddenPropertyItem.class.php"; - $this->properties['options'] = array( - array( - 'type' => 'begin_group', - 'name' => 'general_opts' - ), - array( - 'type' => 'hidden', - 'name' => 'structure_or_data', - ), - array( - 'type' => 'end_group' - ) - ); + $exportPluginProperties = new ExportPluginProperties(); + $exportPluginProperties->setText('JSON'); + $exportPluginProperties->setExtension('json'); + $exportPluginProperties->setMimeType('text/plain'); + $exportPluginProperties->setOptionsText(__('Options')); + + // create the root group that will be the options field for + // $exportPluginProperties + // this will be shown as "Format specific options" + $exportSpecificOptions = new OptionsPropertyRootGroup(); + $exportSpecificOptions->setName("Format Specific Options"); + + // general options main group + $generalOptions = new OptionsPropertyMainGroup(); + $generalOptions->setName("general_opts"); + // create primary items and add them to the group + $leaf = new HiddenPropertyItem(); + $leaf->setName("structure_or_data"); + $generalOptions->addProperty($leaf); + // add the main group to the root group + $exportSpecificOptions->addProperty($generalOptions); + + // set the options for the export plugin property item + $exportPluginProperties->setOptions($exportSpecificOptions); + $this->properties = $exportPluginProperties; } /** diff --git a/libraries/plugins/export/ExportLatex.class.php b/libraries/plugins/export/ExportLatex.class.php index b95f8134df..43c9677d4f 100644 --- a/libraries/plugins/export/ExportLatex.class.php +++ b/libraries/plugins/export/ExportLatex.class.php @@ -59,136 +59,130 @@ class ExportLatex extends ExportPlugin $hide_structure = true; } - $this->properties = array( - 'text' => __('LaTeX'), - 'extension' => 'tex', - 'mime_type' => 'application/x-tex', - 'options' => array(), - 'options_text' => __('Options') - ); + $props = 'libraries/properties/'; + require_once "$props/plugins/ExportPluginProperties.class.php"; + require_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; + require_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; + require_once "$props/options/items/BoolPropertyItem.class.php"; + require_once "$props/options/items/RadioPropertyItem.class.php"; + require_once "$props/options/items/TextPropertyItem.class.php"; - $this->properties['options'] = array( - array( - 'type' => 'begin_group', - 'name' => 'general_opts' - ), - array( - 'type' => 'bool', - 'name' => 'caption', - 'text' => __('Include table caption') - ), - array( - 'type' => 'end_group' - ) - ); + $exportPluginProperties = new ExportPluginProperties(); + $exportPluginProperties->setText('LaTeX'); + $exportPluginProperties->setExtension('tex'); + $exportPluginProperties->setMimeType('application/x-tex'); + $exportPluginProperties->setOptionsText(__('Options')); - /* what to dump (structure/data/both) */ - $this->properties['options'][] = array( - 'type' => 'begin_group', - 'name' => 'dump_what', - 'text' => __('Dump table') - ); - $this->properties['options'][] = array( - 'type' => 'radio', - 'name' => 'structure_or_data', - 'values' => array( - 'structure' => __('structure'), - 'data' => __('data'), - 'structure_and_data' => __('structure and data') - ) - ); - $this->properties['options'][] = array( - 'type' => 'end_group' - ); + // create the root group that will be the options field for + // $exportPluginProperties + // this will be shown as "Format specific options" + $exportSpecificOptions = new OptionsPropertyRootGroup(); + $exportSpecificOptions->setName("Format Specific Options"); - /* Structure options */ + // general options main group + $generalOptions = new OptionsPropertyMainGroup(); + $generalOptions->setName("general_opts"); + // create primary items and add them to the group + $leaf = new BoolPropertyItem(); + $leaf->setName("caption"); + $leaf->setText(__('Include table caption')); + $generalOptions->addProperty($leaf); + // add the main group to the root group + $exportSpecificOptions->addProperty($generalOptions); + + // what to dump (structure/data/both) main group + $dumpWhat = new OptionsPropertyMainGroup(); + $dumpWhat->setName("dump_what"); + $dumpWhat->setText(__('Dump table')); + // create primary items and add them to the group + $leaf = new RadioPropertyItem(); + $leaf->setName("structure_or_data"); + $leaf->setValues(array( + 'structure' => __('structure'), + 'data' => __('data'), + 'structure_and_data' => __('structure and data') + )); + $dumpWhat->addProperty($leaf); + // add the main group to the root group + $exportSpecificOptions->addProperty($dumpWhat); + + // structure options main group if (! $hide_structure) { - $this->properties['options'][] = array( - 'type' => 'begin_group', - 'name' => 'structure', - 'text' => __('Object creation options'), - 'force' => 'data' - ); - $this->properties['options'][] = array( - 'type' => 'text', - 'name' => 'structure_caption', - 'text' => __('Table caption'), - 'doc' => 'faq6_27' - ); - $this->properties['options'][] = array( - 'type' => 'text', - 'name' => 'structure_continued_caption', - 'text' => __('Table caption (continued)'), - 'doc' => 'faq6_27' - ); - $this->properties['options'][] = array( - 'type' => 'text', - 'name' => 'structure_label', - 'text' => __('Label key'), - 'doc' => 'faq6_27' - ); + $structureOptions = new OptionsPropertyMainGroup(); + $structureOptions->setName("structure"); + $structureOptions->setText(__('Object creation options')); + $structureOptions->setForce('data'); + // create primary items and add them to the group + $leaf = new TextPropertyItem(); + $leaf->setName("structure_caption"); + $leaf->setText(__('Table caption')); + $leaf->setDoc('faq6_27'); + $structureOptions->addProperty($leaf); + $leaf = new TextPropertyItem(); + $leaf->setName("structure_continued_caption"); + $leaf->setText(__('Table caption (continued)')); + $leaf->setDoc('faq6_27'); + $structureOptions->addProperty($leaf); + $leaf = new TextPropertyItem(); + $leaf->setName("structure_label"); + $leaf->setText(__('Label key')); + $leaf->setDoc('faq6_27'); + $structureOptions->addProperty($leaf); if (! empty($GLOBALS['cfgRelation']['relation'])) { - $this->properties['options'][] = array( - 'type' => 'bool', - 'name' => 'relation', - 'text' => __('Display foreign key relationships') - ); + $leaf = new BoolPropertyItem(); + $leaf->setName("relation"); + $leaf->setText(__('Display foreign key relationships')); + $structureOptions->addProperty($leaf); } - $this->properties['options'][] = array( - 'type' => 'bool', - 'name' => 'comments', - 'text' => __('Display comments') - ); + $leaf = new BoolPropertyItem(); + $leaf->setName("comments"); + $leaf->setText(__('Display comments')); + $structureOptions->addProperty($leaf); if (! empty($GLOBALS['cfgRelation']['mimework'])) { - $this->properties['options'][] = array( - 'type' => 'bool', - 'name' => 'mime', - 'text' => __('Display MIME types') - ); + $leaf = new BoolPropertyItem(); + $leaf->setName("mime"); + $leaf->setText(__('Display MIME types')); + $structureOptions->addProperty($leaf); } - $this->properties['options'][] = array( - 'type' => 'end_group' - ); + // add the main group to the root group + $exportSpecificOptions->addProperty($structureOptions); } - /* Data */ - $this->properties['options'][] = array( - 'type' => 'begin_group', - 'name' => 'data', - 'text' => __('Data dump options'), - 'force' => 'structure' - ); - $this->properties['options'][] = array( - 'type' => 'bool', - 'name' => 'columns', - 'text' => __('Put columns names in the first row') - ); - $this->properties['options'][] = array( - 'type' => 'text', - 'name' => 'data_caption', - 'text' => __('Table caption'), - 'doc' => 'faq6_27' - ); - $this->properties['options'][] = array( - 'type' => 'text', - 'name' => 'data_continued_caption', - 'text' => __('Table caption (continued)'), - 'doc' => 'faq6_27' - ); - $this->properties['options'][] = array( - 'type' => 'text', - 'name' => 'data_label', - 'text' => __('Label key'), - 'doc' => 'faq6_27' - ); - $this->properties['options'][] = array( - 'type' => 'text', - 'name' => 'null', - 'text' => __('Replace NULL with:') - ); - $this->properties['options'][] = array( - 'type' => 'end_group' - ); + // data options main group + $dataOptions = new OptionsPropertyMainGroup(); + $dataOptions->setName("data"); + $dataOptions->setText(__('Data dump options')); + $dataOptions->setForce('structure'); + // create primary items and add them to the group + $leaf = new BoolPropertyItem(); + $leaf->setName("columns"); + $leaf->setText(__('Put columns names in the first row')); + $dataOptions->addProperty($leaf); + $leaf = new TextPropertyItem(); + $leaf->setName("data_caption"); + $leaf->setText(__('Table caption')); + $leaf->setDoc('faq6_27'); + $dataOptions->addProperty($leaf); + $leaf = new TextPropertyItem(); + $leaf->setName("data_continued_caption"); + $leaf->setText(__('Table caption (continued)')); + $leaf->setDoc('faq6_27'); + $dataOptions->addProperty($leaf); + $leaf = new TextPropertyItem(); + $leaf->setName("data_label"); + $leaf->setText(__('Label key')); + $leaf->setDoc('faq6_27'); + $dataOptions->addProperty($leaf); + $leaf = new TextPropertyItem(); + $leaf->setName('null'); + $leaf->setText(__('Replace NULL with:')); + $dataOptions->addProperty($leaf); + // add the main group to the root group + $exportSpecificOptions->addProperty($dataOptions); + + // set the options for the export plugin property item + $exportPluginProperties->setOptions($exportSpecificOptions); + $this->properties = $exportPluginProperties; } /** @@ -442,7 +436,7 @@ class ExportLatex extends ExportPlugin $dates = false ) { global $cfgRelation; - + $common_functions = PMA_CommonFunctions::getInstance(); $this->setCfgRelation($cfgRelation); diff --git a/libraries/plugins/export/ExportOds.class.php b/libraries/plugins/export/ExportOds.class.php index ae320cc926..f599d86431 100644 --- a/libraries/plugins/export/ExportOds.class.php +++ b/libraries/plugins/export/ExportOds.class.php @@ -38,38 +38,48 @@ class ExportOds extends ExportPlugin */ protected function setProperties() { - $this->properties = array( - 'text' => __('Open Document Spreadsheet'), - 'extension' => 'ods', - 'mime_type' => 'application/vnd.oasis.opendocument.spreadsheet', - 'force_file' => true, - 'options' => array(), - 'options_text' => __('Options') - ); + $props = 'libraries/properties/'; + require_once "$props/plugins/ExportPluginProperties.class.php"; + require_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; + require_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; + require_once "$props/options/items/TextPropertyItem.class.php"; + require_once "$props/options/items/BoolPropertyItem.class.php"; + require_once "$props/options/items/HiddenPropertyItem.class.php"; - $this->properties['options'] = array( - array( - 'type' => 'begin_group', - 'name' => 'general_opts' - ), - array( - 'type' => 'text', - 'name' => 'null', - 'text' => __('Replace NULL with:') - ), - array( - 'type' => 'bool', - 'name' => 'columns', - 'text' => __('Put columns names in the first row') - ), - array( - 'type' => 'hidden', - 'name' => 'structure_or_data' - ), - array( - 'type' => 'end_group' - ) - ); + $exportPluginProperties = new ExportPluginProperties(); + $exportPluginProperties->setText('Open Document Spreadsheet'); + $exportPluginProperties->setExtension('ods'); + $exportPluginProperties->setMimeType('application/vnd.oasis.opendocument.spreadsheet'); + $exportPluginProperties->setForceFile(true); + $exportPluginProperties->setOptionsText(__('Options')); + + // create the root group that will be the options field for + // $exportPluginProperties + // this will be shown as "Format specific options" + $exportSpecificOptions = new OptionsPropertyRootGroup(); + $exportSpecificOptions->setName("Format Specific Options"); + + // general options main group + $generalOptions = new OptionsPropertyMainGroup(); + $generalOptions->setName("general_opts"); + // create primary items and add them to the group + $leaf = new TextPropertyItem(); + $leaf->setName("null"); + $leaf->setText(__('Replace NULL with:')); + $generalOptions->addProperty($leaf); + $leaf = new BoolPropertyItem(); + $leaf->setName("columns"); + $leaf->setText(__('Put columns names in the first row')); + $generalOptions->addProperty($leaf); + $leaf = new HiddenPropertyItem(); + $leaf->setName("structure_or_data"); + $generalOptions->addProperty($leaf); + // add the main group to the root group + $exportSpecificOptions->addProperty($generalOptions); + + // set the options for the export plugin property item + $exportPluginProperties->setOptions($exportSpecificOptions); + $this->properties = $exportPluginProperties; } /** diff --git a/libraries/plugins/export/ExportOdt.class.php b/libraries/plugins/export/ExportOdt.class.php index eca4ae1481..2667c0b38c 100644 --- a/libraries/plugins/export/ExportOdt.class.php +++ b/libraries/plugins/export/ExportOdt.class.php @@ -46,86 +46,91 @@ class ExportOdt extends ExportPlugin $hide_structure = true; } - $this->properties = array( - 'text' => __('Open Document Text'), - 'extension' => 'odt', - 'mime_type' => 'application/vnd.oasis.opendocument.text', - 'force_file' => true, - 'options' => array(), - 'options_text' => __('Options') - ); + $props = 'libraries/properties/'; + require_once "$props/plugins/ExportPluginProperties.class.php"; + require_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; + require_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; + require_once "$props/options/items/TextPropertyItem.class.php"; + require_once "$props/options/items/BoolPropertyItem.class.php"; + require_once "$props/options/items/HiddenPropertyItem.class.php"; - /* what to dump (structure/data/both) */ - $this->properties['options'][] = array( - 'type' => 'begin_group', - 'text' => __('Dump table'), - 'name' => 'general_opts' - ); - $this->properties['options'][] = array( - 'type' => 'radio', - 'name' => 'structure_or_data', - 'values' => array( - 'structure' => __('structure'), - 'data' => __('data'), - 'structure_and_data' => __('structure and data') - ) - ); - $this->properties['options'][] = array( - 'type' => 'end_group' - ); + $exportPluginProperties = new ExportPluginProperties(); + $exportPluginProperties->setText('Open Document Text'); + $exportPluginProperties->setExtension('odt'); + $exportPluginProperties->setMimeType('application/vnd.oasis.opendocument.text'); + $exportPluginProperties->setForceFile(true); + $exportPluginProperties->setOptionsText(__('Options')); - /* Structure options */ + // create the root group that will be the options field for + // $exportPluginProperties + // this will be shown as "Format specific options" + $exportSpecificOptions = new OptionsPropertyRootGroup(); + $exportSpecificOptions->setName("Format Specific Options"); + + // what to dump (structure/data/both) main group + $dumpWhat = new OptionsPropertyMainGroup(); + $dumpWhat->setName("general_opts"); + $dumpWhat->setText(__('Dump table')); + // create primary items and add them to the group + $leaf = new RadioPropertyItem(); + $leaf->setName("structure_or_data"); + $leaf->setValues(array( + 'structure' => __('structure'), + 'data' => __('data'), + 'structure_and_data' => __('structure and data') + )); + $dumpWhat->addProperty($leaf); + // add the main group to the root group + $exportSpecificOptions->addProperty($dumpWhat); + + + // structure options main group if (! $hide_structure) { - $this->properties['options'][] = array( - 'type' => 'begin_group', - 'name' => 'structure', - 'text' => __('Object creation options'), - 'force' => 'data' - ); + $structureOptions = new OptionsPropertyMainGroup(); + $structureOptions->setName("structure"); + $structureOptions->setText(__('Object creation options')); + $structureOptions->setForce('data'); + // create primary items and add them to the group if (! empty($GLOBALS['cfgRelation']['relation'])) { - $this->properties['options'][] = array( - 'type' => 'bool', - 'name' => 'relation', - 'text' => __('Display foreign key relationships') - ); + $leaf = new BoolPropertyItem(); + $leaf->setName("relation"); + $leaf->setText(__('Display foreign key relationships')); + $structureOptions->addProperty($leaf); } - $this->properties['options'][] = array( - 'type' => 'bool', - 'name' => 'comments', - 'text' => __('Display comments') - ); + $leaf = new BoolPropertyItem(); + $leaf->setName("comments"); + $leaf->setText(__('Display comments')); + $structureOptions->addProperty($leaf); if (! empty($GLOBALS['cfgRelation']['mimework'])) { - $this->properties['options'][] = array( - 'type' => 'bool', - 'name' => 'mime', - 'text' => __('Display MIME types') - ); + $leaf = new BoolPropertyItem(); + $leaf->setName("mime"); + $leaf->setText(__('Display MIME types')); + $structureOptions->addProperty($leaf); } - $this->properties['options'][] = array( - 'type' => 'end_group' - ); + // add the main group to the root group + $exportSpecificOptions->addProperty($structureOptions); } - /* Data */ - $this->properties['options'][] = array( - 'type' => 'begin_group', - 'name' => 'data', - 'text' => __('Data dump options'), - 'force' => 'structure' - ); - $this->properties['options'][] = array( - 'type' => 'bool', - 'name' => 'columns', - 'text' => __('Put columns names in the first row') - ); - $this->properties['options'][] = array( - 'type' => 'text', - 'name' => 'null', - 'text' => __('Replace NULL with:') - ); - $this->properties['options'][] = array( - 'type' => 'end_group' - ); + // data options main group + $dataOptions = new OptionsPropertyMainGroup(); + $dataOptions->setName("data"); + $dataOptions->setText(__('Data dump options')); + $dataOptions->setForce('structure'); + // create primary items and add them to the group + $leaf = new BoolPropertyItem(); + $leaf->setName("columns"); + $leaf->setText(__('Put columns names in the first row')); + $dataOptions->addProperty($leaf); + $leaf = new TextPropertyItem(); + $leaf->setName('null'); + $leaf->setText(__('Replace NULL with:')); + $dataOptions->addProperty($leaf); + // add the main group to the root group + $exportSpecificOptions->addProperty($dataOptions); + + // set the options for the export plugin property item + $exportPluginProperties->setOptions($exportSpecificOptions); + $this->properties = $exportPluginProperties; } /** @@ -386,7 +391,7 @@ class ExportOdt extends ExportPlugin * @param bool $add_semicolon whether to add semicolon and end-of-line at * the end * @param bool $view whether we're handling a view - * + * * @return bool true */ public function getTableDef( diff --git a/libraries/plugins/export/ExportPdf.class.php b/libraries/plugins/export/ExportPdf.class.php index 9aa41553f8..df3867f518 100644 --- a/libraries/plugins/export/ExportPdf.class.php +++ b/libraries/plugins/export/ExportPdf.class.php @@ -65,40 +65,50 @@ class ExportPdf extends ExportPlugin */ protected function setProperties() { - $this->properties = array( - 'text' => __('PDF'), - 'extension' => 'pdf', - 'mime_type' => 'application/pdf', - 'force_file' => true, - 'options' => array(), - 'options_text' => __('Options') - ); + $props = 'libraries/properties/'; + require_once "$props/plugins/ExportPluginProperties.class.php"; + require_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; + require_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; + require_once "$props/options/items/MessageOnlyPropertyItem.class.php"; + require_once "$props/options/items/TextPropertyItem.class.php"; + require_once "$props/options/items/HiddenPropertyItem.class.php"; - $this->properties['options'] = array( - array( - 'type' => 'begin_group', - 'name' => 'general_opts' - ), - array( - 'type' => 'message_only', - 'name' => 'explanation', - 'text' => __( - '(Generates a report containing the data of a single table)' - ) - ), - array( - 'type' => 'text', - 'name' => 'report_title', - 'text' => __('Report title:') - ), - array( - 'type' => 'hidden', - 'name' => 'structure_or_data' - ), - array( - 'type' => 'end_group' - ) - ); + $exportPluginProperties = new ExportPluginProperties(); + $exportPluginProperties->setText('PDF'); + $exportPluginProperties->setExtension('pdf'); + $exportPluginProperties->setMimeType('application/pdf'); + $exportPluginProperties->setForceFile(true); + $exportPluginProperties->setOptionsText(__('Options')); + + // create the root group that will be the options field for + // $exportPluginProperties + // this will be shown as "Format specific options" + $exportSpecificOptions = new OptionsPropertyRootGroup(); + $exportSpecificOptions->setName("Format Specific Options"); + + // general options main group + $generalOptions = new OptionsPropertyMainGroup(); + $generalOptions->setName("general_opts"); + // create primary items and add them to the group + $leaf = new MessageOnlyPropertyItem(); + $leaf->setName("explanation"); + $leaf->setText(__( + '(Generates a report containing the data of a single table)' + )); + $generalOptions->addProperty($leaf); + $leaf = new TextPropertyItem(); + $leaf->setName("report_title"); + $leaf->setText(__('Report title:')); + $generalOptions->addProperty($leaf); + $leaf = new HiddenPropertyItem(); + $leaf->setName("structure_or_data"); + $generalOptions->addProperty($leaf); + // add the main group to the root group + $exportSpecificOptions->addProperty($generalOptions); + + // set the options for the export plugin property item + $exportPluginProperties->setOptions($exportSpecificOptions); + $this->properties = $exportPluginProperties; } /** diff --git a/libraries/plugins/export/ExportPhparray.class.php b/libraries/plugins/export/ExportPhparray.class.php index f739fd21a4..c1116d3906 100644 --- a/libraries/plugins/export/ExportPhparray.class.php +++ b/libraries/plugins/export/ExportPhparray.class.php @@ -35,27 +35,37 @@ class ExportPhparray extends ExportPlugin */ protected function setProperties() { - $this->properties = array( - 'text' => __('PHP array'), - 'extension' => 'php', - 'mime_type' => 'text/plain', - 'options' => array(), - 'options_text' => __('Options') - ); + $props = 'libraries/properties/'; + require_once "$props/plugins/ExportPluginProperties.class.php"; + require_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; + require_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; + require_once "$props/options/items/HiddenPropertyItem.class.php"; - $this->properties['options'] = array( - array( - 'type' => 'begin_group', - 'name' => 'general_opts' - ), - array( - 'type' => 'hidden', - 'name' => 'structure_or_data', - ), - array( - 'type' => 'end_group' - ) - ); + $exportPluginProperties = new ExportPluginProperties(); + $exportPluginProperties->setText('PHP array'); + $exportPluginProperties->setExtension('php'); + $exportPluginProperties->setMimeType('text/plain'); + $exportPluginProperties->setOptionsText(__('Options')); + + // create the root group that will be the options field for + // $exportPluginProperties + // this will be shown as "Format specific options" + $exportSpecificOptions = new OptionsPropertyRootGroup(); + $exportSpecificOptions->setName("Format Specific Options"); + + // general options main group + $generalOptions = new OptionsPropertyMainGroup(); + $generalOptions->setName("general_opts"); + // create primary items and add them to the group + $leaf = new HiddenPropertyItem(); + $leaf->setName("structure_or_data"); + $generalOptions->addProperty($leaf); + // add the main group to the root group + $exportSpecificOptions->addProperty($generalOptions); + + // set the options for the export plugin property item + $exportPluginProperties->setOptions($exportSpecificOptions); + $this->properties = $exportPluginProperties; } /** diff --git a/libraries/plugins/export/ExportTexytext.class.php b/libraries/plugins/export/ExportTexytext.class.php index 7fcbc7117f..be87426a02 100644 --- a/libraries/plugins/export/ExportTexytext.class.php +++ b/libraries/plugins/export/ExportTexytext.class.php @@ -35,53 +35,62 @@ class ExportTexytext extends ExportPlugin */ protected function setProperties() { - $this->properties = array( - 'text' => __('Texy! text'), - 'extension' => 'txt', - 'mime_type' => 'text/plain', - 'options' => array(), - 'options_text' => __('Options') - ); + $props = 'libraries/properties/'; + require_once "$props/plugins/ExportPluginProperties.class.php"; + require_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; + require_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; + require_once "$props/options/items/RadioPropertyItem.class.php"; + require_once "$props/options/items/BoolPropertyItem.class.php"; + require_once "$props/options/items/TextPropertyItem.class.php"; - $this->properties['options'] = array( - /* what to dump (structure/data/both) */ - array( - 'type' => 'begin_group', - 'text' => __('Dump table'), - 'name' => 'general_opts' - ), - array( - 'type' => 'radio', - 'name' => 'structure_or_data', - 'values' => array( - 'structure' => __('structure'), - 'data' => __('data'), - 'structure_and_data' => __('structure and data') - ) - ), - array( - 'type' => 'end_group' - ), - array( - 'type' => 'begin_group', - 'name' => 'data', - 'text' => __('Data dump options'), - 'force' => 'structure' - ), - array( - 'type' => 'text', - 'name' => 'null', - 'text' => __('Replace NULL by') - ), - array( - 'type' => 'bool', - 'name' => 'columns', - 'text' => __('Put columns names in the first row') - ), - array( - 'type' => 'end_group' - ) - ); + $exportPluginProperties = new ExportPluginProperties(); + $exportPluginProperties->setText('Texy! text'); + $exportPluginProperties->setExtension('txt'); + $exportPluginProperties->setMimeType('text/plain'); + $exportPluginProperties->setOptionsText(__('Options')); + + // create the root group that will be the options field for + // $exportPluginProperties + // this will be shown as "Format specific options" + $exportSpecificOptions = new OptionsPropertyRootGroup(); + $exportSpecificOptions->setName("Format Specific Options"); + + // what to dump (structure/data/both) main group + $dumpWhat = new OptionsPropertyMainGroup(); + $dumpWhat->setName("general_opts"); + $dumpWhat->setText(__('Dump table')); + // create primary items and add them to the group + $leaf = new RadioPropertyItem(); + $leaf->setName("structure_or_data"); + $leaf->setValues(array( + 'structure' => __('structure'), + 'data' => __('data'), + 'structure_and_data' => __('structure and data') + )); + $dumpWhat->addProperty($leaf); + // add the main group to the root group + $exportSpecificOptions->addProperty($dumpWhat); + + // set the options for the export plugin property item + $exportPluginProperties->setOptions($exportSpecificOptions); + $this->properties = $exportPluginProperties; + + // data options main group + $dataOptions = new OptionsPropertyMainGroup(); + $dataOptions->setName("data"); + $dataOptions->setText(__('Data dump options')); + $dataOptions->setForce('structure'); + // create primary items and add them to the group + $leaf = new BoolPropertyItem(); + $leaf->setName("columns"); + $leaf->setText(__('Put columns names in the first row')); + $dataOptions->addProperty($leaf); + $leaf = new TextPropertyItem(); + $leaf->setName('null'); + $leaf->setText(__('Replace NULL with:')); + $dataOptions->addProperty($leaf); + // add the main group to the root group + $exportSpecificOptions->addProperty($dataOptions); } /** diff --git a/libraries/plugins/export/ExportXml.class.php b/libraries/plugins/export/ExportXml.class.php index 36d15658a2..3fb8452afd 100644 --- a/libraries/plugins/export/ExportXml.class.php +++ b/libraries/plugins/export/ExportXml.class.php @@ -64,81 +64,81 @@ class ExportXml extends ExportPlugin */ protected function setProperties() { - $this->properties = array( - 'text' => __('XML'), - 'extension' => 'xml', - 'mime_type' => 'text/xml', - 'options' => array(), - 'options_text' => __('Options') - ); + $props = 'libraries/properties/'; + require_once "$props/plugins/ExportPluginProperties.class.php"; + require_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; + require_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; + require_once "$props/options/items/HiddenPropertyItem.class.php"; + require_once "$props/options/items/BoolPropertyItem.class.php"; - $this->properties['options'] = array( - array( - 'type' => 'begin_group', - 'name' => 'general_opts' - ), - array( - 'type' => 'hidden', - 'name' => 'structure_or_data' - ), - array( - 'type' => 'end_group' - ) - ); + // create the export plugin property item + $exportPluginProperties = new ExportPluginProperties(); + $exportPluginProperties->setText('XML'); + $exportPluginProperties->setExtension('xml'); + $exportPluginProperties->setMimeType('text/xml'); + $exportPluginProperties->setOptionsText(__('Options')); - /* Export structure */ - $this->properties['options'][] = array( - 'type' => 'begin_group', - 'name' => 'structure', - 'text' => __('Object creation options (all are recommended)') - ); + // create the root group that will be the options field for + // $exportPluginProperties + // this will be shown as "Format specific options" + $exportSpecificOptions = new OptionsPropertyRootGroup(); + $exportSpecificOptions->setName("Format Specific Options"); + + // general options main group + $generalOptions = new OptionsPropertyMainGroup(); + $generalOptions->setName("general_opts"); + // create primary items and add them to the group + $leaf = new HiddenPropertyItem(); + $leaf->setName("structure_or_data"); + $generalOptions->addProperty($leaf); + // add the main group to the root group + $exportSpecificOptions->addProperty($generalOptions); + + // export structure main group + $structure = new OptionsPropertyMainGroup(); + $structure->setName("structure"); + $structure->setText(__('Object creation options (all are recommended)')); + // create primary items and add them to the group if (! PMA_DRIZZLE) { - $this->properties['options'][] = array( - 'type' => 'bool', - 'name' => 'export_functions', - 'text' => __('Functions') - ); - $this->properties['options'][] = array( - 'type' => 'bool', - 'name' => 'export_procedures', - 'text' => __('Procedures') - ); + $leaf = new BoolPropertyItem(); + $leaf->setName("export_functions"); + $leaf->setText(__('Functions')); + $structure->addProperty($leaf); + $leaf = new BoolPropertyItem(); + $leaf->setName("export_procedures"); + $leaf->setText(__('Procedures')); + $structure->addProperty($leaf); } - $this->properties['options'][] = array( - 'type' => 'bool', - 'name' => 'export_tables', - 'text' => __('Tables') - ); + $leaf = new BoolPropertyItem(); + $leaf->setName("export_tables"); + $leaf->setText(__('Tables')); + $structure->addProperty($leaf); if (! PMA_DRIZZLE) { - $this->properties['options'][] = array( - 'type' => 'bool', - 'name' => 'export_triggers', - 'text' => __('Triggers') - ); - $this->properties['options'][] = array( - 'type' => 'bool', - 'name' => 'export_views', - 'text' => __('Views') - ); + $leaf = new BoolPropertyItem(); + $leaf->setName("export_triggers"); + $leaf->setText(__('Triggers')); + $structure->addProperty($leaf); + $leaf = new BoolPropertyItem(); + $leaf->setName("export_views"); + $leaf->setText(__('Views')); + $structure->addProperty($leaf); } - $this->properties['options'][] = array( - 'type' => 'end_group' - ); + $exportSpecificOptions->addProperty($structure); - /* Data */ - $this->properties['options'][] = array( - 'type' => 'begin_group', - 'name' => 'data', - 'text' => __('Data dump options') - ); - $this->properties['options'][] = array( - 'type' => 'bool', - 'name' => 'export_contents', - 'text' => __('Export contents') - ); - $this->properties['options'][] = array( - 'type' => 'end_group' - ); + // data main group + $data = new OptionsPropertyMainGroup(); + $data->setName("data"); + $data->setText(__('Data dump options')); + // create primary items and add them to the group + $leaf = new BoolPropertyItem(); + $leaf->setName("export_contents"); + $leaf->setText(__('Export contents')); + $data->addProperty($leaf); + $exportSpecificOptions->addProperty($data); + + // set the options for the export plugin property item + $exportPluginProperties->setOptions($exportSpecificOptions); + $this->properties = $exportPluginProperties; } /** diff --git a/libraries/plugins/export/ExportYaml.class.php b/libraries/plugins/export/ExportYaml.class.php index 2ac51c6b05..9c084e6b92 100644 --- a/libraries/plugins/export/ExportYaml.class.php +++ b/libraries/plugins/export/ExportYaml.class.php @@ -35,28 +35,38 @@ class ExportYaml extends ExportPlugin */ protected function setProperties() { - $this->properties = array( - 'text' => 'YAML', - 'extension' => 'yml', - 'mime_type' => 'text/yaml', - 'force_file' => true, - 'options' => array(), - 'options_text' => __('Options') - ); + $props = 'libraries/properties/'; + require_once "$props/plugins/ExportPluginProperties.class.php"; + require_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; + require_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; + require_once "$props/options/items/HiddenPropertyItem.class.php"; - $this->properties['options'] = array( - array( - 'type' => 'begin_group', - 'name' => 'general_opts' - ), - array( - 'type' => 'hidden', - 'name' => 'structure_or_data', - ), - array( - 'type' => 'end_group' - ) - ); + $exportPluginProperties = new ExportPluginProperties(); + $exportPluginProperties->setText('YAML'); + $exportPluginProperties->setExtension('yml'); + $exportPluginProperties->setMimeType('text/yaml'); + $exportPluginProperties->setForceFile(true); + $exportPluginProperties->setOptionsText(__('Options')); + + // create the root group that will be the options field for + // $exportPluginProperties + // this will be shown as "Format specific options" + $exportSpecificOptions = new OptionsPropertyRootGroup(); + $exportSpecificOptions->setName("Format Specific Options"); + + // general options main group + $generalOptions = new OptionsPropertyMainGroup(); + $generalOptions->setName("general_opts"); + // create primary items and add them to the group + $leaf = new HiddenPropertyItem(); + $leaf->setName("structure_or_data"); + $generalOptions->addProperty($leaf); + // add the main group to the root group + $exportSpecificOptions->addProperty($generalOptions); + + // set the options for the export plugin property item + $exportPluginProperties->setOptions($exportSpecificOptions); + $this->properties = $exportPluginProperties; } /** diff --git a/libraries/plugins/export/ExportMediawiki.class.php b/libraries/plugins/export/todo_change_properties/ExportMediawiki.class.php similarity index 100% rename from libraries/plugins/export/ExportMediawiki.class.php rename to libraries/plugins/export/todo_change_properties/ExportMediawiki.class.php diff --git a/libraries/plugins/export/ExportSql.class.php b/libraries/plugins/export/todo_change_properties/ExportSql.class.php similarity index 100% rename from libraries/plugins/export/ExportSql.class.php rename to libraries/plugins/export/todo_change_properties/ExportSql.class.php diff --git a/libraries/properties/PropertyItem.class.php b/libraries/properties/PropertyItem.class.php new file mode 100644 index 0000000000..21d50682c5 --- /dev/null +++ b/libraries/properties/PropertyItem.class.php @@ -0,0 +1,49 @@ + \ No newline at end of file diff --git a/libraries/properties/options/OptionsPropertyGroup.class.php b/libraries/properties/options/OptionsPropertyGroup.class.php new file mode 100644 index 0000000000..05b96222aa --- /dev/null +++ b/libraries/properties/options/OptionsPropertyGroup.class.php @@ -0,0 +1,102 @@ +getProperties() == null + && in_array($property, $this->getProperties(), true) + ) { + return; + } + $this->_properties [] = $property; + } + + /** + * Removes a property from the group of properties + * + * @param OptionsPropertyItem $property the property instance to be removed + * from the group + * + * @return void + */ + public function removeProperty($property) + { + $this->_properties = array_udiff( + $this->getProperties(), + array($property), + function ($a, $b) { + return ($a === $b ) ? 0 : 1; + } + ); + } + + + /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ + + + /** + * Gets the instance of the class + * + * @return array + */ + public function getGroup() + { + return $this; + } + + /** + * Gets the group of properties + * + * @return array + */ + public function getProperties() + { + return $this->_properties; + } + + /** + * Gets the number of properties + * + * @return int + */ + public function getNrOfProperties() + { + return count($this->_properties); + } +} +?> \ No newline at end of file diff --git a/libraries/properties/options/OptionsPropertyItem.class.php b/libraries/properties/options/OptionsPropertyItem.class.php new file mode 100644 index 0000000000..4a2418d34b --- /dev/null +++ b/libraries/properties/options/OptionsPropertyItem.class.php @@ -0,0 +1,127 @@ +_name; + } + + /** + * Sets the name + * + * @param string $name name + * + * @return void + */ + public function setName($name) + { + $this->_name = $name; + } + + /** + * Gets the text + * + * @return string + */ + public function getText() + { + return $this->_text; + } + + /** + * Sets the text + * + * @param string $text text + * + * @return void + */ + public function setText($text) + { + $this->_text = $text; + } + + /** + * Gets the force parameter + * + * @return string + */ + public function getForce() + { + return $this->_force; + } + + /** + * Sets the force paramter + * + * @param string $force force parameter + * + * @return void + */ + public function setForce($force) + { + $this->_force = $force; + } + + /** + * Returns the property type ( either "options", or "plugin" ). + * + * @return string + */ + public function getPropertyType() + { + return "options"; + } +} +?> \ No newline at end of file diff --git a/libraries/properties/options/OptionsPropertyOneItem.class.php b/libraries/properties/options/OptionsPropertyOneItem.class.php new file mode 100644 index 0000000000..84b27d37e8 --- /dev/null +++ b/libraries/properties/options/OptionsPropertyOneItem.class.php @@ -0,0 +1,172 @@ +_force; + } + + /** + * Sets the force parameter + * + * @param bool $force force parameter + * + * @return void + */ + public function setForce($force) + { + $this->_force = $force; + } + + /** + * Gets the values + * + * @return string + */ + public function getValues() + { + return $this->_values; + } + + /** + * Sets the values + * + * @param array $values values + * + * @return void + */ + public function setValues($values) + { + $this->_values = $values; + } + + /** + * Gets the type of the newline character + * + * @return string + */ + public function getDoc() + { + return $this->_doc; + } + + /** + * Sets the doc + * + * @param string $doc doc + * + * @return void + */ + public function setDoc($doc) + { + $this->_doc = $doc; + } + + /** + * Gets the length + * + * @return int + */ + public function getLen() + { + return $this->_len; + } + + /** + * Sets the length + * + * @param int $len length + * + * @return void + */ + public function setLen($len) + { + $this->_len = $len; + } + + /** + * Gets the size + * + * @return int + */ + public function getSize() + { + return $this->_size; + } + + /** + * Sets the size + * + * @param int $size size + * + * @return void + */ + public function setSize($size) + { + $this->_size = $size; + } +} +?> \ No newline at end of file diff --git a/libraries/properties/options/groups/OptionsPropertyMainGroup.class.php b/libraries/properties/options/groups/OptionsPropertyMainGroup.class.php new file mode 100644 index 0000000000..2de7eadf1c --- /dev/null +++ b/libraries/properties/options/groups/OptionsPropertyMainGroup.class.php @@ -0,0 +1,35 @@ + \ No newline at end of file diff --git a/libraries/properties/options/groups/OptionsPropertyRootGroup.class.php b/libraries/properties/options/groups/OptionsPropertyRootGroup.class.php new file mode 100644 index 0000000000..f1ded7fdb6 --- /dev/null +++ b/libraries/properties/options/groups/OptionsPropertyRootGroup.class.php @@ -0,0 +1,35 @@ + \ No newline at end of file diff --git a/libraries/properties/options/groups/OptionsPropertySubgroup.class.php b/libraries/properties/options/groups/OptionsPropertySubgroup.class.php new file mode 100644 index 0000000000..7a6a5e5a06 --- /dev/null +++ b/libraries/properties/options/groups/OptionsPropertySubgroup.class.php @@ -0,0 +1,68 @@ +_subgroupHeader; + } + + /** + * Sets the subgroup header + * + * @param string $subgroupHeader subgroup header + * + * @return void + */ + public function setSubgroupHeader($subgroupHeader) + { + $this->_subgroupHeader = $subgroupHeader; + } +} +?> \ No newline at end of file diff --git a/libraries/properties/options/items/BoolPropertyItem.class.php b/libraries/properties/options/items/BoolPropertyItem.class.php new file mode 100644 index 0000000000..480921d353 --- /dev/null +++ b/libraries/properties/options/items/BoolPropertyItem.class.php @@ -0,0 +1,35 @@ + \ No newline at end of file diff --git a/libraries/properties/options/items/DocPropertyItem.class.php b/libraries/properties/options/items/DocPropertyItem.class.php new file mode 100644 index 0000000000..bc69e7edbd --- /dev/null +++ b/libraries/properties/options/items/DocPropertyItem.class.php @@ -0,0 +1,35 @@ + \ No newline at end of file diff --git a/libraries/properties/options/items/HiddenPropertyItem.class.php b/libraries/properties/options/items/HiddenPropertyItem.class.php new file mode 100644 index 0000000000..f91c5d6e73 --- /dev/null +++ b/libraries/properties/options/items/HiddenPropertyItem.class.php @@ -0,0 +1,35 @@ + \ No newline at end of file diff --git a/libraries/properties/options/items/MessageOnlyPropertyItem.class.php b/libraries/properties/options/items/MessageOnlyPropertyItem.class.php new file mode 100644 index 0000000000..f80dbc8ad0 --- /dev/null +++ b/libraries/properties/options/items/MessageOnlyPropertyItem.class.php @@ -0,0 +1,35 @@ + \ No newline at end of file diff --git a/libraries/properties/options/items/RadioPropertyItem.class.php b/libraries/properties/options/items/RadioPropertyItem.class.php new file mode 100644 index 0000000000..4f7eef3973 --- /dev/null +++ b/libraries/properties/options/items/RadioPropertyItem.class.php @@ -0,0 +1,35 @@ + \ No newline at end of file diff --git a/libraries/properties/options/items/SelectPropertyItem.class.php b/libraries/properties/options/items/SelectPropertyItem.class.php new file mode 100644 index 0000000000..51d294d290 --- /dev/null +++ b/libraries/properties/options/items/SelectPropertyItem.class.php @@ -0,0 +1,35 @@ + \ No newline at end of file diff --git a/libraries/properties/options/items/TextPropertyItem.class.php b/libraries/properties/options/items/TextPropertyItem.class.php new file mode 100644 index 0000000000..0e0f0915fd --- /dev/null +++ b/libraries/properties/options/items/TextPropertyItem.class.php @@ -0,0 +1,35 @@ + \ No newline at end of file diff --git a/libraries/properties/plugins/ExportPluginProperties.class.php b/libraries/properties/plugins/ExportPluginProperties.class.php new file mode 100644 index 0000000000..b8f8465da8 --- /dev/null +++ b/libraries/properties/plugins/ExportPluginProperties.class.php @@ -0,0 +1,215 @@ +_text; + } + + /** + * Sets the text + * + * @param string $text text + * + * @return void + */ + public function setText($text) + { + $this->_text = $text; + } + + /** + * Gets the extension + * + * @return string + */ + public function getExtension() + { + return $this->_extension; + } + + /** + * Sets the extension + * + * @param string $extension extension + * + * @return void + */ + public function setExtension($extension) + { + $this->_extension = $extension; + } + + /** + * Gets the options + * + * @return OptionsPropertyRootGroup + */ + public function getOptions() + { + return $this->_options; + } + + /** + * Sets the options + * + * @param OptionsPropertyRootGroup $options options + * + * @return void + */ + public function setOptions($options) + { + $this->_options = $options; + } + + /** + * Gets the options text + * + * @return string + */ + public function getOptionsText() + { + return $this->_optionsText; + } + + /** + * Sets the options text + * + * @param string $optionsText optionsText + * + * @return void + */ + public function setOptionsText($optionsText) + { + $this->_optionsText = $optionsText; + } + + /** + * Gets the MIME type + * + * @return string + */ + public function getMimeType() + { + return $this->_mimeType; + } + + /** + * Sets the MIME type + * + * @param string $mimeType MIME type + * + * @return void + */ + public function setMimeType($mimeType) + { + $this->_mimeType = $mimeType; + } + + /** + * Gets the force file parameter + * + * @return bool + */ + public function getForceFile() + { + return $this->_forceFile; + } + + /** + * Sets the force file parameter + * + * @param bool $forceFile the force file parameter + * + * @return void + */ + public function setForceFile($forceFile) + { + $this->_forceFile = $forceFile; + } +} +?> \ No newline at end of file diff --git a/libraries/properties/plugins/ImportPluginProperties.class.php b/libraries/properties/plugins/ImportPluginProperties.class.php new file mode 100644 index 0000000000..24ff567d61 --- /dev/null +++ b/libraries/properties/plugins/ImportPluginProperties.class.php @@ -0,0 +1,156 @@ +_text; + } + + /** + * Sets the text + * + * @param string $text text + * + * @return void + */ + public function setText($text) + { + $this->_text = $text; + } + + /** + * Gets the extension + * + * @return string + */ + public function getExtension() + { + return $this->_extension; + } + + /** + * Sets the extension + * + * @param string $extension extension + * + * @return void + */ + public function setExtension($extension) + { + $this->_extension = $extension; + } + + /** + * Gets the options + * + * @return OptionsPropertyRootGroup + */ + public function getOptions() + { + return $this->_options; + } + + /** + * Sets the options + * + * @param OptionsPropertyRootGroup $options options + * + * @return void + */ + public function setOptions($options) + { + $this->_options = $options; + } + + /** + * Gets the options text + * + * @return string + */ + public function getOptionsText() + { + return $this->_optionsText; + } + + /** + * Sets the options text + * + * @param string $optionsText options text + * + * @return void + */ + public function setOptionsText($optionsText) + { + $this->_optionsText = $optionsText; + } +} +?> \ No newline at end of file diff --git a/libraries/properties/plugins/PluginPropertyItem.class.php b/libraries/properties/plugins/PluginPropertyItem.class.php new file mode 100644 index 0000000000..f017e9055d --- /dev/null +++ b/libraries/properties/plugins/PluginPropertyItem.class.php @@ -0,0 +1,36 @@ + \ No newline at end of file diff --git a/libraries/properties/plugins/TransformationsPluginProperties.class.php b/libraries/properties/plugins/TransformationsPluginProperties.class.php new file mode 100644 index 0000000000..abdc8e1203 --- /dev/null +++ b/libraries/properties/plugins/TransformationsPluginProperties.class.php @@ -0,0 +1,157 @@ +_info; + } + + /** + * Sets information about the transformations plug-in + * + * @param string $info information about the transformations plug-in + * + * @return void + */ + public function setInfo($info) + { + $this->_info = $info; + } + + /** + * Gets the MIME type + * + * @return string + */ + public function getMimeType() + { + return $this->_mimeType; + } + + /** + * Sets the MIME type + * + * @param string $mimeType MIME type + * + * @return void + */ + public function setMimeType($mimeType) + { + $this->_mimeType = $mimeType; + } + + /** + * Gets the MIME subtype + * + * @return string + */ + public function getMimeSubtype() + { + return $this->_mimeSubype; + } + + /** + * Sets the MIME subtype + * + * @param string $mimeSubtype MIME subtype + * + * @return void + */ + public function setMimeSubtype($mimeSubtype) + { + $this->_mimeSubype = $mimeSubtype; + } + + /** + * Gets the transformation name + * + * @return string + */ + public function getTransformationName() + { + return $this->_transformationName; + } + + /** + * Sets the transformation name + * + * @param string $transformationName transformation name + * + * @return void + */ + public function setTransformationName($transformationName) + { + $this->_transformationName = $transformationName; + } +} +?> \ No newline at end of file