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 .= ''
- . PMA_getString($opt['text']) . ' ';
- $ret .= ' ';
- } elseif ($opt['type'] == 'message_only') {
- $ret .= ' ' . "\n";
- $ret .= '' . PMA_getString($opt['text']) . '
';
- } elseif ($opt['type'] == 'select') {
- $ret .= ' ' . "\n";
- $ret .= ''
- . PMA_getString($opt['text']) . ' ';
- $ret .= '';
- $default = PMA_pluginGetDefault($section, $plugin_name . '_' . $opt['name']);
- foreach ($opt['values'] as $key => $val) {
- $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 {
+ // 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 .= '
';
}
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