From adf0d2e4b71193db010ca1a1aefc1a7eb16cf7db Mon Sep 17 00:00:00 2001 From: Bimal Yashodha Date: Tue, 1 Jul 2014 17:51:45 +0530 Subject: Remove old relational schema edit/export page and related code Signed-off-by: Bimal Yashodha --- db_operations.php | 5 - libraries/designer.lib.php | 3 +- libraries/operations.lib.php | 23 - libraries/pmd_common.php | 16 +- libraries/schema/User_Schema.class.php | 1010 ------------------------------ pmd_general.php | 2 +- schema_edit.php | 129 ---- schema_export.php | 66 +- test/classes/schema/User_Schema_test.php | 172 ----- test/libraries/PMA_designer_test.php | 6 +- test/libraries/PMA_operations_test.php | 14 - 11 files changed, 57 insertions(+), 1389 deletions(-) delete mode 100644 libraries/schema/User_Schema.class.php delete mode 100644 schema_edit.php delete mode 100644 test/classes/schema/User_Schema_test.php diff --git a/db_operations.php b/db_operations.php index eec625bd5f..b80fe3ce44 100644 --- a/db_operations.php +++ b/db_operations.php @@ -290,11 +290,6 @@ if ($cfgRelation['pdfwork'] && $num_tables > 0) { false, PMA_DatabaseInterface::QUERY_STORE ); - - /* - * Export Relational Schema View - */ - $response->addHTML(PMA_getHtmlForExportRelationalSchemaView($url_query)); } // end if ?> diff --git a/libraries/designer.lib.php b/libraries/designer.lib.php index 08d3a18c6f..ad6689721a 100644 --- a/libraries/designer.lib.php +++ b/libraries/designer.lib.php @@ -153,8 +153,7 @@ function PMA_getHtmlForSchemaExport($db, $page) . '' . '
'; - $htmlString .= '' - . '' + $htmlString .= '' . '' . '
' . ''; - if (PMA_Util::showIcons('ActionLinksMode')) { - $html_output .= PMA_Util::getImage( - 'b_edit.png' - ); - } - $html_output .= __('Edit or export relational schema') - . '' - . ''; - - return $html_output; -} - /** * Run the Procedure definitions and function definitions * diff --git a/libraries/pmd_common.php b/libraries/pmd_common.php index 62724cc07b..ba0cb3c47d 100644 --- a/libraries/pmd_common.php +++ b/libraries/pmd_common.php @@ -361,20 +361,20 @@ function PMA_getFirstPage($db) * Creates a new page and returns its auto-incrementing id * * @param string $pageName name of the page + * @param string $db name of the database * * @return int|null */ -function PMA_createNewPage($pageName) +function PMA_createNewPage($pageName, $db) { $cfgRelation = PMA_getRelationsParam(); if ($cfgRelation['pdfwork']) { - $_POST['newpage'] = $pageName; - // temporarlily using schema code for creating a page - include_once 'libraries/schema/User_Schema.class.php'; - $user_schema = new PMA_User_Schema(); - $user_schema->setAction("createpage"); - $user_schema->processUserChoice(); - return $user_schema->pageNumber; + $pageNumber = PMA_REL_createPage( + $pageName, + $cfgRelation, + $db + ); + return $pageNumber; } return null; } diff --git a/libraries/schema/User_Schema.class.php b/libraries/schema/User_Schema.class.php deleted file mode 100644 index 9abff8ab24..0000000000 --- a/libraries/schema/User_Schema.class.php +++ /dev/null @@ -1,1010 +0,0 @@ -action = $value; - } - - /** - * This function will process the user defined pages - * and tables which will be exported as Relational schema - * you can set the table positions on the paper via scratchboard - * for table positions, put the x,y co-ordinates - * - * $this->action tells what the Schema is supposed to do - * create and select a page, generate schema etc - * - * @access public - * @return void - */ - public function processUserChoice() - { - global $db, $cfgRelation; - - if (isset($this->action)) { - switch ($this->action) { - case 'selectpage': - $this->chosenPage = $_REQUEST['chpage']; - if ('1' == $_REQUEST['action_choose']) { - $this->deleteCoordinates( - $db, - $cfgRelation, - $this->chosenPage - ); - $this->deletePages( - $db, - $cfgRelation, - $this->chosenPage - ); - $this->chosenPage = 0; - } - break; - case 'createpage': - $this->pageNumber = PMA_REL_createPage( - $_POST['newpage'], - $cfgRelation, - $db - ); - $this->autoLayoutForeign = isset($_POST['auto_layout_foreign']) - ? "1" - : null; - $this->autoLayoutInternal = isset($_POST['auto_layout_internal']) - ? "1" - : null; - $this->saveTablePositions( - $db, - $this->pageNumber, - $cfgRelation - ); - break; - case 'edcoord': - $this->chosenPage = $_POST['chpage']; - $this->c_table_rows = $_POST['c_table_rows']; - $this->_editCoordinates($db, $cfgRelation); - break; - case 'delete_old_references': - $this->_deleteTableRows( - $_POST['delrow'], - $cfgRelation, - $db, - $_POST['chpage'] - ); - break; - case 'process_export': - $this->_processExportSchema(); - break; - - } // end switch - } // end if (isset($do)) - - } - - /** - * shows/displays the HTML FORM to create the page - * - * @param string $db name of the selected database - * - * @return void - * @access public - */ - public function showCreatePageDialog($db) - { - $htmlString = '
' - . '
' - . '' - . __('Create a page') - . '' - . PMA_URL_getHiddenInputs($db) - . '' - . '' - . '' - . '' - . '' - . '' - . '' - . __('Automatic layout based on') . '' - . '' - . '
' - . '' - . '
' - . '
'; - - /* - * Check to see whether INNODB and PBXT storage engines - * are Available in MYSQL PACKAGE - * If available, then provide AutoLayout for Foreign Keys in Schema View - */ - - if (PMA_StorageEngine::isValid('InnoDB') - || PMA_StorageEngine::isValid('PBXT') - ) { - $htmlString .= '' - . '
'; - } - - $htmlString .= '
' - . '
' - . '
' - . '' - . '
' - . '
'; - - echo $htmlString; - } - - /** - * shows/displays the created page names in a drop down list - * User can select any page number and edit it using dashboard etc - * - * @return void - * @access public - */ - public function selectPage() - { - global $db,$table,$cfgRelation; - $page_query = 'SELECT * FROM ' - . PMA_Util::backquote($GLOBALS['cfgRelation']['db']) . '.' - . PMA_Util::backquote($cfgRelation['pdf_pages']) - . ' WHERE db_name = \'' . PMA_Util::sqlAddSlashes($db) . '\''; - $page_rs = PMA_queryAsControlUser( - $page_query, false, PMA_DatabaseInterface::QUERY_STORE - ); - - if ($page_rs && $GLOBALS['dbi']->numRows($page_rs) > 0) { - ?> -
-
- - - - - - - __('Edit'), - '1' => __('Delete') - ); - echo PMA_Util::getRadioFields( - 'action_choose', $choices, '0', false - ); - unset($choices); - ?> -
-
-
-
-
- query( - 'SHOW TABLES FROM ' . PMA_Util::backquote($db) . ';', - null, - PMA_DatabaseInterface::QUERY_STORE - ); - while ($val = @$GLOBALS['dbi']->fetchRow($alltab_rs)) { - $selectboxall[] = $val[0]; - } - - $tabExist = array(); - - /* - * Now if we already have chosen a page number then we should - * show the tables involved - */ - if (isset($this->chosenPage) && $this->chosenPage > 0) { - echo "\n"; - echo "

" . __('Select Tables') . "

"; - $page_query = 'SELECT * FROM ' - . PMA_Util::backquote($GLOBALS['cfgRelation']['db']) - . '.' . PMA_Util::backquote($cfgRelation['table_coords']) - . ' WHERE db_name = \'' . PMA_Util::sqlAddSlashes($db) . '\'' - . ' AND pdf_page_number = \'' - . PMA_Util::sqlAddSlashes($this->chosenPage) . '\''; - $page_rs = PMA_queryAsControlUser($page_query, false); - $array_sh_page = array(); - while ($temp_sh_page = @$GLOBALS['dbi']->fetchAssoc($page_rs)) { - $array_sh_page[] = $temp_sh_page; - } - /* - * Display WYSIWYG parts - */ - - if (! isset($_POST['with_field_names']) - && ! isset($_POST['showwysiwyg']) - ) { - $with_field_names = true; - } elseif (isset($_POST['with_field_names'])) { - $with_field_names = true; - } - $this->_displayScratchboardTables($array_sh_page); - - echo '
'; - - echo PMA_URL_getHiddenInputs($db, $table); - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - - /* - * Add one more empty row - */ - $array_sh_page[] = array( - 'table_name' => '', - 'x' => '0', - 'y' => '0', - ); - - $i = 0; - $odd_row = true; - foreach ($array_sh_page as $sh_page) { - $_mtab = $sh_page['table_name']; - if (! empty($_mtab)) { - $tabExist[$_mtab] = false; - } - - echo ''; - $odd_row = ! $odd_row; - - echo ''; - - echo ''; - - echo ''; - - echo ''; - echo ''; - $i++; - } - - echo '
' . __('Table') . '' . __('Delete') . 'XY
'; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '
'; - - echo ''; - echo ''; - echo ''; - echo '
'; - echo ''; - echo '
' . "\n\n"; - } // end if - - if (isset($tabExist)) { - $this->_deleteTables($db, $this->chosenPage, $tabExist); - } - } - - /** - * show Export relational schema generation options - * user can select export type of his own choice - * and the attributes related to it - * - * @return void - * @access public - */ - - public function displaySchemaGenerationOptions() - { - global $cfg, $db, $test_rs, $chpage; - - $htmlString = '
' - . '
' - . '' - . PMA_URL_getHiddenInputs($db); - - if (PMA_Util::showIcons('ActionLinksMode')) { - $htmlString .= PMA_Util::getImage('b_views.png'); - } - - /* - * TODO: This list should be generated dynamically based on list of - * available plugins. - */ - $htmlString .= __('Display relational schema') - . ':' - . '' - . '' - . '
'; - if (isset($test_rs)) { - $htmlString .= '' - . '
'; - } else { - $htmlString .= ''; - } - $htmlString .= '' - . '' - . '' - . '
' - . '' - . '' - . '
' - . '' - . '
' - . '' - . '
' - . '' - . '
' - . '' - . '
' - . '' - . '' - . '
' - . '' - . '' - . '
' - . '
' - . '' - . '
' - . '
'; - - echo $htmlString; - } - - /** - * Check if there are tables that need to be deleted in dashboard, - * if there are, ask the user for allowance - * - * @param string $db name of database selected - * @param integer $chpage selected page - * @param array $tabExist array of booleans - * - * @return void - * @access private - */ - private function _deleteTables($db, $chpage, $tabExist) - { - $_strtrans = ''; - $_strname = ''; - $shoot = false; - if (empty($tabExist) || ! is_array($tabExist)) { - return; - } - foreach ($tabExist as $key => $value) { - if (! $value) { - $_strtrans .= '' . "\n"; - $_strname .= '
  • ' . htmlspecialchars($key) . '
  • ' . "\n"; - $shoot = true; - } - } - if (! $shoot) { - return; - } - echo '
    ' . "\n" - . PMA_URL_getHiddenInputs($db) - . '' - . "\n" - . '' . "\n" - . __( - 'The current page has references to tables that no longer exist.' - . ' Would you like to delete those references?' - ) - . '
      ' . "\n" - . $_strname - . '
    ' . "\n" - . $_strtrans - . '' . "\n" - . '
    '; - } - - /** - * Check if there are tables that need to be deleted in dashboard, - * if there are, ask the user for allowance - * - * @param array $array_sh_page array of tables on page - * - * @return void - * @access private - */ - private function _displayScratchboardTables($array_sh_page) - { - global $with_field_names, $db; - - echo '
    '; - echo ''; - echo ''; - echo '
    '; - echo ''; - } - - /** - * delete the table rows with table co-ordinates - * - * @param int $delrow delete selected table from list of tables - * @param array $cfgRelation relation settings - * @param string $db database name - * @param integer $chpage selected page for adding relations etc - * - * @return void - * @access private - */ - private function _deleteTableRows($delrow,$cfgRelation,$db,$chpage) - { - foreach ($delrow as $current_row) { - $del_query = 'DELETE FROM ' - . PMA_Util::backquote($GLOBALS['cfgRelation']['db']) . '.' - . PMA_Util::backquote($cfgRelation['table_coords']) . ' ' . "\n" - . ' WHERE db_name = \'' - . PMA_Util::sqlAddSlashes($db) . '\'' . "\n" - . ' AND table_name = \'' - . PMA_Util::sqlAddSlashes($current_row) . '\'' . "\n" - . ' AND pdf_page_number = \'' - . PMA_Util::sqlAddSlashes($chpage) . '\''; - PMA_queryAsControlUser($del_query, false); - } - } - - /** - * get all the export options and verify - * call and include the appropriate Schema Class depending on $export_type - * - * @return void - * @access private - */ - private function _processExportSchema() - { - /** - * Settings for relation stuff - */ - include_once './libraries/transformations.lib.php'; - include_once './libraries/Index.class.php'; - /** - * default is PDF, otherwise validate it's only letters a-z - */ - global $db,$export_type; - - if (! isset($export_type) || ! preg_match('/^[a-zA-Z]+$/', $export_type)) { - $export_type = 'pdf'; - } - $GLOBALS['dbi']->selectDb($db); - - $path = PMA_securePath(ucfirst($export_type)); - $filename = 'libraries/schema/' . $path . '_Relation_Schema.class.php'; - if (!file_exists($filename)) { - PMA_Export_Relation_Schema::dieSchema( - $_POST['chpage'], - $export_type, - __('File doesn\'t exist') - ); - } - $GLOBALS['skip_import'] = false; - include $filename; - if ( $GLOBALS['skip_import']) { - PMA_Export_Relation_Schema::dieSchema( - $_POST['chpage'], - $export_type, - __('Plugin is disabled') - ); - } - $class_name = 'PMA_' . $path . '_Relation_Schema'; - $obj_schema = new $class_name(); - $obj_schema->showOutput(); - } - - /** - * delete X and Y coordinates - * - * @param string $db The database name - * @param array $cfgRelation relation settings - * @param integer $choosePage selected page for adding relations etc - * - * @return void - * @access private - */ - public function deleteCoordinates($db, $cfgRelation, $choosePage) - { - $query = 'DELETE FROM ' - . PMA_Util::backquote($GLOBALS['cfgRelation']['db']) . '.' - . PMA_Util::backquote($cfgRelation['table_coords']) - . ' WHERE db_name = \'' . PMA_Util::sqlAddSlashes($db) . '\'' - . ' AND pdf_page_number = \'' - . PMA_Util::sqlAddSlashes($choosePage) . '\''; - PMA_queryAsControlUser($query, false); - } - - /** - * delete pages - * - * @param string $db The database name - * @param array $cfgRelation relation settings - * @param integer $choosePage selected page for adding relations etc - * - * @return void - * @access private - */ - public function deletePages($db, $cfgRelation, $choosePage) - { - $query = 'DELETE FROM ' - . PMA_Util::backquote($GLOBALS['cfgRelation']['db']) . '.' - . PMA_Util::backquote($cfgRelation['pdf_pages']) - . ' WHERE db_name = \'' . PMA_Util::sqlAddSlashes($db) . '\'' - . ' AND page_nr = \'' . PMA_Util::sqlAddSlashes($choosePage) . '\''; - PMA_queryAsControlUser($query, false); - } - - /** - * process internal and foreign key relations - * - * @param string $db The database name - * @param integer $pageNumber document number/Id - * @param array $cfgRelation relation settings - * - * @return void - * @access private - */ - public function processRelations($db, $pageNumber, $cfgRelation) - { - /* - * A u t o m a t i c l a y o u t - * - * There are 2 kinds of relations in PMA - * 1) Internal Relations 2) Foreign Key Relations - */ - if (isset($this->autoLayoutInternal) || isset($this->autoLayoutForeign)) { - $all_tables = array(); - } - - if (isset($this->autoLayoutForeign)) { - /* - * get the tables list - * who support FOREIGN KEY, it's not - * important that we group together InnoDB tables - * and PBXT tables, as this logic is just to put - * the tables on the layout, not to determine relations - */ - $tables = $GLOBALS['dbi']->getTablesFull($db); - $foreignkey_tables = array(); - foreach ($tables as $table_name => $table_properties) { - if (PMA_Util::isForeignKeySupported($table_properties['ENGINE'])) { - $foreignkey_tables[] = $table_name; - } - } - $all_tables = $foreignkey_tables; - /* - * could be improved by finding the tables which have the - * most references keys and placing them at the beginning - * of the array (so that they are all center of schema) - */ - unset($tables, $foreignkey_tables); - } - - if (isset($this->autoLayoutInternal)) { - /* - * get the tables list who support Internal Relations; - * This type of relations will be created when - * you setup the PMA tables correctly - */ - $master_tables = 'SELECT COUNT(master_table), master_table' - . ' FROM ' . PMA_Util::backquote($GLOBALS['cfgRelation']['db']) . '.' - . PMA_Util::backquote($cfgRelation['relation']) - . ' WHERE master_db = \'' . PMA_Util::sqlAddSlashes($db) . '\'' - . ' GROUP BY master_table' - . ' ORDER BY COUNT(master_table) DESC'; - $master_tables_rs = PMA_queryAsControlUser( - $master_tables, false, PMA_DatabaseInterface::QUERY_STORE - ); - if ($master_tables_rs - && $GLOBALS['dbi']->numRows($master_tables_rs) > 0 - ) { - /* first put all the master tables at beginning - * of the list, so they are near the center of - * the schema - */ - while (list(, $master_table) - = $GLOBALS['dbi']->fetchRow($master_tables_rs) - ) { - $all_tables[] = $master_table; - } - - /* Now for each master, add its foreigns into an array - * of foreign tables, if not already there - * (a foreign might be foreign for more than - * one table, and might be a master itself) - */ - - $foreign_tables = array(); - foreach ($all_tables as $master_table) { - $foreigners = PMA_getForeigners($db, $master_table); - foreach ($foreigners as $foreigner) { - if (! in_array( - $foreigner['foreign_table'], $foreign_tables - )) { - $foreign_tables[] = $foreigner['foreign_table']; - } - } - } - - /* - * Now merge the master and foreign arrays/tables - */ - foreach ($foreign_tables as $foreign_table) { - if (! in_array($foreign_table, $all_tables)) { - $all_tables[] = $foreign_table; - } - } - } - } - - $tables = $GLOBALS['dbi']->getTablesFull($db); - $foreignkey_tables = array(); - foreach ($tables as $table_name => $table_properties) { -// if (PMA_Util::isForeignKeySupported($table_properties['ENGINE'])) { -// } - $foreignkey_tables[] = $table_name; - } - $all_tables = $foreignkey_tables; - - if (isset($this->autoLayoutInternal) || isset($this->autoLayoutForeign)) { - $this->addRelationCoordinates( - $all_tables, $pageNumber, $db, $cfgRelation - ); - } - - - $this->chosenPage = $pageNumber; - } - - /** - * Saves positions of all tables in the current view - * - * @param string $db database name - * @param int $pageNumber document number/Id - * @param array $cfgRelation relation settings - * - * @return void - */ - public function saveTablePositions($db, $pageNumber, $cfgRelation) - { - $all_tables = array(); - $results = $GLOBALS['dbi']->getTablesFull($db); - $tables = array(); - foreach ($results as $table_name => $table_properties) { - $tables[] = $table_name; - } - $all_tables = $tables; - - $this->addRelationCoordinates( - $all_tables, $pageNumber, $db, $cfgRelation - ); - $this->chosenPage = $pageNumber; - } - - /** - * Add X and Y coordinates for a table - * - * @param array $all_tables A list of all tables involved - * @param integer $pageNumber document number/Id - * @param string $db The database name - * @param array $cfgRelation relation settings - * - * @return void - * @access private - */ - public function addRelationCoordinates( - $all_tables, $pageNumber, $db, $cfgRelation - ) { - /* - * Now generate the coordinates for the schema - * in a clockwise spiral and add to co-ordinates table - */ - $pos_x = 300; - $pos_y = 300; - $delta = 110; - $delta_mult = 1.10; - $direction = "right"; - foreach ($all_tables as $current_table) { - /* - * save current table's coordinates - */ - $insert_query = 'INSERT INTO ' - . PMA_Util::backquote($GLOBALS['cfgRelation']['db']) . '.' - . PMA_Util::backquote($cfgRelation['table_coords']) . ' ' - . '(db_name, table_name, pdf_page_number, x, y) ' - . 'VALUES (\'' . PMA_Util::sqlAddSlashes($db) . '\', \'' - . PMA_Util::sqlAddSlashes($current_table) . '\',' . $pageNumber - . ',' . $pos_x . ',' . $pos_y . ')'; - PMA_queryAsControlUser($insert_query, false); - - /* - * compute for the next table - */ - switch ($direction) { - case 'right': - $pos_x += $delta; - $direction = "down"; - $delta *= $delta_mult; - break; - case 'down': - $pos_y += $delta; - $direction = "left"; - $delta *= $delta_mult; - break; - case 'left': - $pos_x -= $delta; - $direction = "up"; - $delta *= $delta_mult; - break; - case 'up': - $pos_y -= $delta; - $direction = "right"; - $delta *= $delta_mult; - break; - } - } - } - - /** - * update X and Y coordinates for a table - * - * @param string $db The database name - * @param array $cfgRelation relation settings - * - * @return void - * @access private - */ - private function _editCoordinates($db, $cfgRelation) - { - for ($i = 0; $i < $this->c_table_rows; $i++) { - $arrvalue = $_POST['c_table_' . $i]; - - if (! isset($arrvalue['x']) || $arrvalue['x'] == '') { - $arrvalue['x'] = 0; - } - if (! isset($arrvalue['y']) || $arrvalue['y'] == '') { - $arrvalue['y'] = 0; - } - if (isset($arrvalue['name']) && $arrvalue['name'] != '--') { - $test_query = 'SELECT * FROM ' - . PMA_Util::backquote($GLOBALS['cfgRelation']['db']) . '.' - . PMA_Util::backquote($cfgRelation['table_coords']) - . ' WHERE db_name = \'' . PMA_Util::sqlAddSlashes($db) . '\'' - . ' AND table_name = \'' - . PMA_Util::sqlAddSlashes($arrvalue['name']) . '\'' - . ' AND pdf_page_number = \'' - . PMA_Util::sqlAddSlashes($this->chosenPage) . '\''; - $test_rs = PMA_queryAsControlUser( - $test_query, false, PMA_DatabaseInterface::QUERY_STORE - ); - //echo $test_query; - if ($test_rs && $GLOBALS['dbi']->numRows($test_rs) > 0) { - if (isset($arrvalue['delete']) && $arrvalue['delete'] == 'y') { - $ch_query = 'DELETE FROM ' - . PMA_Util::backquote($GLOBALS['cfgRelation']['db']) - . '.' - . PMA_Util::backquote($cfgRelation['table_coords']) - . ' WHERE db_name = \'' - . PMA_Util::sqlAddSlashes($db) . '\'' - . ' AND table_name = \'' - . PMA_Util::sqlAddSlashes($arrvalue['name']) . '\'' - . ' AND pdf_page_number = \'' - . PMA_Util::sqlAddSlashes($this->chosenPage) . '\''; - } else { - $ch_query = 'UPDATE ' - . PMA_Util::backquote($GLOBALS['cfgRelation']['db']) - . '.' . PMA_Util::backquote($cfgRelation['table_coords']) - . ' ' - . 'SET x = ' . $arrvalue['x'] . ', y= ' . $arrvalue['y'] - . ' WHERE db_name = \'' - . PMA_Util::sqlAddSlashes($db) . '\'' - . ' AND table_name = \'' - . PMA_Util::sqlAddSlashes($arrvalue['name']) . '\'' - . ' AND pdf_page_number = \'' - . PMA_Util::sqlAddSlashes($this->chosenPage) . '\''; - } - } else { - $ch_query = 'INSERT INTO ' - . PMA_Util::backquote($GLOBALS['cfgRelation']['db']) - . '.' . PMA_Util::backquote($cfgRelation['table_coords']) - . ' ' - . '(db_name, table_name, pdf_page_number, x, y) ' - . 'VALUES (\'' . PMA_Util::sqlAddSlashes($db) . '\', \'' - . PMA_Util::sqlAddSlashes($arrvalue['name']) . '\', \'' - . PMA_Util::sqlAddSlashes($this->chosenPage) . '\',' - . $arrvalue['x'] . ',' . $arrvalue['y'] . ')'; - } - //echo $ch_query; - PMA_queryAsControlUser($ch_query, false); - } // end if - } // end for - } -} -?> diff --git a/pmd_general.php b/pmd_general.php index e5f9836751..61f2621f8f 100644 --- a/pmd_general.php +++ b/pmd_general.php @@ -51,7 +51,7 @@ if (isset($_REQUEST['operation'])) { if ($_REQUEST['save_page'] == 'same') { $page = $_REQUEST['selected_page']; } elseif ($_REQUEST['save_page'] == 'new') { - $page = PMA_createNewPage($_REQUEST['selected_value']); + $page = PMA_createNewPage($_REQUEST['selected_value'], $GLOBALS['db']); $response->addJSON('id', $page); } if (PMA_saveTablePositions($page)) { diff --git a/schema_edit.php b/schema_edit.php deleted file mode 100644 index 210756a1c1..0000000000 --- a/schema_edit.php +++ /dev/null @@ -1,129 +0,0 @@ -%s table not found or not set in %s'), 'relation', 'config.inc.php') . '
    ' . "\n" - . PMA_Util::showDocu('config', 'cfg_Servers_relation') . "\n"; - exit; -} - -if (! $cfgRelation['displaywork']) { - echo sprintf(__('%s table not found or not set in %s'), 'table_info', 'config.inc.php') . '
    ' . "\n" - . PMA_Util::showDocu('config', 'cfg_Servers_table_info') . "\n"; - exit; -} - -if (! isset($cfgRelation['table_coords'])) { - echo sprintf(__('%s table not found or not set in %s'), 'table_coords', 'config.inc.php') . '
    ' . "\n" - . PMA_Util::showDocu('config', 'cfg_Servers_table_coords') . "\n"; - exit; -} -if (! isset($cfgRelation['pdf_pages'])) { - echo sprintf(__('%s table not found or not set in %s'), 'pdf_page', 'config.inc.php') . '
    ' . "\n" - . PMA_Util::showDocu('config', 'cfg_Servers_pdf_pages') . "\n"; - exit; -} - -if ($cfgRelation['pdfwork']) { - - /** - * User object created for presenting the HTML options - * so, user can interact with it and perform export of relations schema - */ - - include_once 'libraries/schema/User_Schema.class.php'; - $user_schema = new PMA_User_Schema(); - - /** - * This function will process the user defined pages - * and tables which will be exported as Relational schema - * you can set the table positions on the paper via scratchboard - * for table positions, put the x,y co-ordinates - * - * @param string $do It tells what the Schema is supposed to do - * create and select a page, generate schema etc - */ - if (isset($_REQUEST['do'])) { - $user_schema->setAction($_REQUEST['do']); - $user_schema->processUserChoice(); - } - - /** - * Show some possibility to select a page for the export of relation schema - * Lists all pages created before and can select and edit from them - */ - - $user_schema->selectPage(); - - /** - * Create a new page where relations will be drawn - */ - - $user_schema->showCreatePageDialog($db); - - /** - * After selection of page or creating a page - * It will show you the list of tables - * A dashboard will also be shown where you can position the tables - */ - - $user_schema->showTableDashBoard(); - - if (isset($_REQUEST['do']) - && ($_REQUEST['do'] == 'edcoord' - || ($_REQUEST['do']== 'selectpage' && isset($user_schema->chosenPage) - && $user_schema->chosenPage != 0) - || ($_REQUEST['do'] == 'createpage' && isset($user_schema->chosenPage) - && $user_schema->chosenPage != 0)) - ) { - - /** - * show Export schema generation options - */ - $user_schema->displaySchemaGenerationOptions(); - - if ((isset($showwysiwyg) && $showwysiwyg == '1')) { - ?> - - diff --git a/schema_export.php b/schema_export.php index 3af6e5af2a..aa15bede30 100644 --- a/schema_export.php +++ b/schema_export.php @@ -21,7 +21,7 @@ $cfgRelation = PMA_getRelationsParam(); require_once 'libraries/transformations.lib.php'; require_once 'libraries/Index.class.php'; require_once 'libraries/pmd_common.php'; -require_once 'libraries/schema/User_Schema.class.php'; +require_once 'libraries/schema/Export_Relation_Schema.class.php'; /** * get all the export options and verify @@ -33,7 +33,6 @@ $post_params = array( 'all_tables_same_width', 'chpage', 'db', - 'do', 'export_type', 'orientation', 'paper', @@ -51,28 +50,55 @@ foreach ($post_params as $one_post_param) { } } -$user_schema = new PMA_User_Schema(); +$temp_page = PMA_createNewPage("_temp" . rand(), $GLOBALS['db']); +try { + PMA_saveTablePositions($temp_page); + $_POST['pdf_page_number'] = $temp_page; + PMA_processExportSchema(); + PMA_deletePage($temp_page); +} catch (Exception $e) { + PMA_deletePage($temp_page); // delete temp page even if an exception occured + throw $e; +} /** - * This function will process the user defined pages - * and tables which will be exported as Relational schema - * you can set the table positions on the paper via scratchboard - * for table positions, put the x,y co-ordinates + * get all the export options and verify + * call and include the appropriate Schema Class depending on $export_type * - * @param string $do It tells what the Schema is supposed to do - * create and select a page, generate schema etc + * @return void */ -if (isset($_REQUEST['do'])) { - $temp_page = PMA_createNewPage("_temp" . rand()); - try { - PMA_saveTablePositions($temp_page); - $_POST['pdf_page_number'] = $temp_page; - $user_schema->setAction($_REQUEST['do']); - $user_schema->processUserChoice(); - PMA_deletePage($temp_page); - } catch (Exception $e) { - PMA_deletePage($temp_page); // delete temp page even if an exception occured - throw $e; +function PMA_processExportSchema() +{ + /** + * default is PDF, otherwise validate it's only letters a-z + */ + global $db,$export_type; + + if (! isset($export_type) || ! preg_match('/^[a-zA-Z]+$/', $export_type)) { + $export_type = 'pdf'; + } + $GLOBALS['dbi']->selectDb($db); + + $path = PMA_securePath(ucfirst($export_type)); + $filename = 'libraries/schema/' . $path . '_Relation_Schema.class.php'; + if (!file_exists($filename)) { + PMA_Export_Relation_Schema::dieSchema( + $_POST['chpage'], + $export_type, + __('File doesn\'t exist') + ); + } + $GLOBALS['skip_import'] = false; + include $filename; + if ( $GLOBALS['skip_import']) { + PMA_Export_Relation_Schema::dieSchema( + $_POST['chpage'], + $export_type, + __('Plugin is disabled') + ); } + $class_name = 'PMA_' . $path . '_Relation_Schema'; + $obj_schema = new $class_name(); + $obj_schema->showOutput(); } ?> diff --git a/test/classes/schema/User_Schema_test.php b/test/classes/schema/User_Schema_test.php deleted file mode 100644 index df13967293..0000000000 --- a/test/classes/schema/User_Schema_test.php +++ /dev/null @@ -1,172 +0,0 @@ -getMockBuilder('PMA_DatabaseInterface') - ->disableOriginalConstructor() - ->getMock(); - - $dbi->expects($this->any()) - ->method('insertId') - ->will($this->returnValue(10)); - - $databases = array(); - $database_name = 'PMA'; - $databases[$database_name]['SCHEMA_TABLES'] = 1; - $databases[$database_name]['SCHEMA_TABLE_ROWS'] = 3; - $databases[$database_name]['SCHEMA_DATA_LENGTH'] = 5; - $databases[$database_name]['SCHEMA_MAX_DATA_LENGTH'] = 10; - $databases[$database_name]['SCHEMA_INDEX_LENGTH'] = 10; - $databases[$database_name]['SCHEMA_LENGTH'] = 10; - $databases[$database_name]['ENGINE'] = "InnerDB"; - - $dbi->expects($this->any())->method('getTablesFull') - ->will($this->returnValue($databases)); - - $GLOBALS['dbi'] = $dbi; - - $this->object = new PMA_User_Schema(); - } - - /** - * Tears down the fixture, for example, closes a network connection. - * This method is called after a test is executed. - * - * @access protected - * @return void - */ - protected function tearDown() - { - unset($this->object); - } - - /** - * Test for setAction & processUserChoice - * - * @return void - * - * @group medium - */ - public function testSetActionAndProcessUserChoice() - { - //action: selectpage - $_REQUEST['chpage'] = 10; - $_REQUEST['action_choose'] = '2'; - $this->object->setAction("selectpage"); - $this->object->processUserChoice(); - $this->assertEquals( - "selectpage", - $this->object->action - ); - $this->assertEquals( - 10, - $this->object->chosenPage - ); - - $_REQUEST['action_choose'] = '1'; - $this->object->processUserChoice(); - //deleteCoordinates successfully - $this->assertEquals( - 0, - $this->object->chosenPage - ); - - //action: createpage - $_POST['newpage'] = "3"; - $_POST['auto_layout_foreign'] = true; - $_POST['auto_layout_internal'] = true; - $_POST['delrow'] = array("row1", "row2"); - $_POST['chpage'] = "chpage"; - $this->object->setAction("delete_old_references"); - $this->object->processUserChoice(); - $this->object->setAction("createpage"); - $this->object->processUserChoice(); - $this->assertEquals( - 10, - $this->object->pageNumber - ); - $this->assertEquals( - "1", - $this->object->autoLayoutForeign - ); - $this->assertEquals( - "1", - $this->object->autoLayoutInternal - ); - - //action: edcoord - $_POST['chpage'] = "3"; - $_POST['c_table_rows'] = 1; - $_POST['c_table_0'] = array( - 'x' => 'x0', - 'y' => 'y0', - 'name' => 'name0', - 'delete' => 'delete0', - 'x' => 'x0', - ); - $this->object->setAction("edcoord"); - $this->object->processUserChoice(); - $this->assertEquals( - '3', - $this->object->chosenPage - ); - $this->assertEquals( - 1, - $this->object->c_table_rows - ); - } -} diff --git a/test/libraries/PMA_designer_test.php b/test/libraries/PMA_designer_test.php index 67ff982e80..4ad3ad3c25 100644 --- a/test/libraries/PMA_designer_test.php +++ b/test/libraries/PMA_designer_test.php @@ -190,11 +190,7 @@ class PMA_DesginerTest extends PHPUnit_Framework_TestCase $result ); - // hidden fields - $this->assertContains( - '', - $result - ); + // hidden field $this->assertContains( '', $result diff --git a/test/libraries/PMA_operations_test.php b/test/libraries/PMA_operations_test.php index a9b30d1873..0f49a5568f 100644 --- a/test/libraries/PMA_operations_test.php +++ b/test/libraries/PMA_operations_test.php @@ -118,20 +118,6 @@ class PMA_Operations_Test extends PHPUnit_Framework_TestCase ); } - /** - * Test for PMA_getHtmlForExportRelationalSchemaView - * - * @return void - */ - public function testGetHtmlForExportRelationalSchemaView() - { - - $this->assertRegExp( - '/.*schema_edit.php.*Edit or export relational schema<.*/', - PMA_getHtmlForExportRelationalSchemaView("id=001&name=pma") - ); - } - /** * Test for PMA_getHtmlForOrderTheTable * -- cgit v1.2.3