diff options
Diffstat (limited to 'hugo/schema_export.php')
| -rw-r--r-- | hugo/schema_export.php | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/hugo/schema_export.php b/hugo/schema_export.php new file mode 100644 index 0000000..d09d08c --- /dev/null +++ b/hugo/schema_export.php @@ -0,0 +1,73 @@ +<?php +/* vim: set expandtab sw=4 ts=4 sts=4: */ +/** + * + * @package PhpMyAdmin + */ + +/** + * Gets some core libraries + */ +require_once 'libraries/common.inc.php'; +require 'libraries/StorageEngine.class.php'; + +/** + * Validate vulnerable POST parameters + */ +if (! PMA_isValid($_POST['pdf_page_number'], 'numeric')) { + die('Attack stopped'); +} + +/** + * get all variables needed for exporting relational schema + * in $cfgRelation + */ +$cfgRelation = PMA_getRelationsParam(); + +require_once 'libraries/transformations.lib.php'; +require_once 'libraries/Index.class.php'; +require_once 'libraries/schema/Export_Relation_Schema.class.php'; + +/** + * get all the export options and verify + * call and include the appropriate Schema Class depending on $export_type + * default is PDF + */ + +$post_params = array( + 'all_tables_same_width', + 'chpage', + 'db', + 'do', + 'export_type', + 'orientation', + 'paper', + 'names', + 'pdf_page_number', + 'show_color', + 'show_grid', + 'show_keys', + 'show_table_dimension', + 'with_doc' +); +foreach ($post_params as $one_post_param) { + if (isset($_POST[$one_post_param])) { + $GLOBALS[$one_post_param] = $_POST[$one_post_param]; + } +} + +if (! isset($export_type) || ! preg_match('/^[a-zA-Z]+$/', $export_type)) { + $export_type = 'pdf'; +} +PMA_DBI_select_db($db); + +$path = PMA_securePath(ucfirst($export_type)); +if (!file_exists('libraries/schema/' . $path . '_Relation_Schema.class.php')) { + PMA_Export_Relation_Schema::dieSchema( + $_POST['chpage'], + $export_type, + __('File doesn\'t exist') + ); +} +require "libraries/schema/".$path.'_Relation_Schema.class.php'; +$obj_schema = eval("new PMA_".$path."_Relation_Schema();"); |
