diff options
| author | Tristan Zur <tzur@web.web.ccwn.org> | 2014-03-27 22:27:47 +0100 |
|---|---|---|
| committer | Tristan Zur <tzur@web.web.ccwn.org> | 2014-03-27 22:27:47 +0100 |
| commit | b62676ca5d3d6f6ba3f019ea3f99722e165a98d8 (patch) | |
| tree | 86722cb80f07d4569f90088eeaea2fc2f6e2ef94 /hugo/tbl_export.php | |
Diffstat (limited to 'hugo/tbl_export.php')
| -rw-r--r-- | hugo/tbl_export.php | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/hugo/tbl_export.php b/hugo/tbl_export.php new file mode 100644 index 0000000..fbc585c --- /dev/null +++ b/hugo/tbl_export.php @@ -0,0 +1,85 @@ +<?php +/* vim: set expandtab sw=4 ts=4 sts=4: */ +/** + * + * @package PhpMyAdmin + */ + +/** + * + */ +require_once 'libraries/common.inc.php'; + +$response = PMA_Response::getInstance(); +$header = $response->getHeader(); +$scripts = $header->getScripts(); +$scripts->addFile('export.js'); + +/** + * Gets tables informations and displays top links + */ +require_once 'libraries/tbl_common.inc.php'; +$url_query .= '&goto=tbl_export.php&back=tbl_export.php'; +require_once 'libraries/tbl_info.inc.php'; + +// Dump of a table + +$export_page_title = __('View dump (schema) of table'); + +// When we have some query, we need to remove LIMIT from that and possibly +// generate WHERE clause (if we are asked to export specific rows) + +if (! empty($sql_query)) { + // Parse query so we can work with tokens + $parsed_sql = PMA_SQP_parse($sql_query); + $analyzed_sql = PMA_SQP_analyze($parsed_sql); + + // Need to generate WHERE clause? + if (isset($where_clause)) { + + // Regular expressions which can appear in sql query, + // before the sql segment which remains as it is. + $regex_array = array( + '/\bwhere\b/i', '/\bgroup by\b/i', '/\bhaving\b/i', '/\border by\b/i' + ); + + $first_occurring_regex = PMA_getFirstOccurringRegularExpression( + $regex_array, $sql_query + ); + unset($regex_array); + + // The part "SELECT `id`, `name` FROM `customers`" + // is not modified by the next code segment, when exporting + // the result set from a query such as + // "SELECT `id`, `name` FROM `customers` WHERE id NOT IN + // ( SELECT id FROM companies WHERE name LIKE '%u%')" + if (! is_null($first_occurring_regex)) { + $temp_sql_array = preg_split($first_occurring_regex, $sql_query); + $sql_query = $temp_sql_array[0]; + } + unset($first_occurring_regex, $temp_sql_array); + + // Append the where clause using the primary key of each row + if (is_array($where_clause) && (count($where_clause) > 0)) { + $sql_query .= ' WHERE (' . implode(') OR (', $where_clause) . ')'; + } + + if (!empty($analyzed_sql[0]['group_by_clause'])) { + $sql_query .= ' GROUP BY ' . $analyzed_sql[0]['group_by_clause']; + } + if (!empty($analyzed_sql[0]['having_clause'])) { + $sql_query .= ' HAVING ' . $analyzed_sql[0]['having_clause']; + } + if (!empty($analyzed_sql[0]['order_by_clause'])) { + $sql_query .= ' ORDER BY ' . $analyzed_sql[0]['order_by_clause']; + } + } else { + // Just crop LIMIT clause + $sql_query = $analyzed_sql[0]['section_before_limit'] . $analyzed_sql[0]['section_after_limit']; + } + echo PMA_Util::getMessage(PMA_Message::success()); +} + +$export_type = 'table'; +require_once 'libraries/display_export.lib.php'; +?> |
