diff --git a/ChangeLog b/ChangeLog index 8a2e9ec6a..5cddc928a 100755 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,9 @@ phpMyAdmin - Changelog $Id$ $Source$ +2006-04-13 Marc Delisle + * export.php: bug #1443004 part 2: export views after the tables + 2006-04-12 Marc Delisle * export.php: bug #1443004 part 1: do not generate INSERT statements for an exported VIEW diff --git a/export.php b/export.php index 1bbf5f5d5..55c29dab6 100644 --- a/export.php +++ b/export.php @@ -429,19 +429,34 @@ if ($export_type == 'server') { break 2; } $tables = PMA_DBI_get_tables($current_db); + $views = array(); foreach ($tables as $table) { + // if this is a view, collect it for later; views must be exported + // after the tables + if (PMA_Table::isView($current_db, $table)) { + $views[] = $table; + continue; + } $local_query = 'SELECT * FROM ' . PMA_backquote($current_db) . '.' . PMA_backquote($table); if (isset($GLOBALS[$what . '_structure'])) { if (!PMA_exportStructure($current_db, $table, $crlf, $err_url, $do_relation, $do_comments, $do_mime, $do_dates)) { break 3; } } - if (isset($GLOBALS[$what . '_data']) && ! PMA_table::isView($current_db, $table)) { + if (isset($GLOBALS[$what . '_data'])) { if (!PMA_exportData($current_db, $table, $crlf, $err_url, $local_query)) { break 3; } } } + foreach($views as $view) { + // no data export for a view + if (isset($GLOBALS[$what . '_structure'])) { + if (!PMA_exportStructure($current_db, $view, $crlf, $err_url, $do_relation, $do_comments, $do_mime, $do_dates)) { + break 3; + } + } + } if (!PMA_exportDBFooter($current_db)) { break 2; } @@ -457,14 +472,14 @@ if ($export_type == 'server') { $tmp_select = '|' . $tmp_select . '|'; } $i = 0; - //$view = array(); + $views = array(); foreach ($tables as $table) { // if this is a view, collect it for later; views must be exported after // the tables - //if (PMA_Table::isView($db, $table)) { - // $views[] = $table; - // continue; - //} + if (PMA_Table::isView($db, $table)) { + $views[] = $table; + continue; + } $local_query = 'SELECT * FROM ' . PMA_backquote($db) . '.' . PMA_backquote($table); if ((isset($tmp_select) && strpos(' ' . $tmp_select, '|' . $table . '|')) || !isset($tmp_select)) { @@ -474,13 +489,22 @@ if ($export_type == 'server') { break 2; } } - if (isset($GLOBALS[$what . '_data']) && ! PMA_table::isView($db, $table)) { + if (isset($GLOBALS[$what . '_data'])) { if (!PMA_exportData($db, $table, $crlf, $err_url, $local_query)) { break 2; } } } } + foreach ($views as $view) { + // no data export for a view + if (isset($GLOBALS[$what . '_structure'])) { + if (!PMA_exportStructure($db, $view, $crlf, $err_url, $do_relation, $do_comments, $do_mime, $do_dates)) { + break 2; + } + } + } + if (!PMA_exportDBFooter($db)) { break; } @@ -515,7 +539,9 @@ if ($export_type == 'server') { break; } } - if (isset($GLOBALS[$what . '_data']) && ! PMA_table::isView($db, $table)) { + // I think we have to export data for a single view; for example PDF report + //if (isset($GLOBALS[$what . '_data']) && ! PMA_table::isView($db, $table)) { + if (isset($GLOBALS[$what . '_data'])) { if (!PMA_exportData($db, $table, $crlf, $err_url, $local_query)) { break; }