[Phpmyadmin-git] [SCM] phpMyAdmin branch, master, updated. RELEASE_3_4_3_1-12838-g8cb1f3a
Michal Čihař
nijel at users.sourceforge.net
Tue Aug 2 15:25:40 CEST 2011
The branch, master has been updated
via 8cb1f3a1cc1a089e53a89c1a4f59cd63a1ddecf8 (commit)
from 8cb8a3d4c75dc6bf9665d4a3e80a2fea1a1b31eb (commit)
- Log -----------------------------------------------------------------
commit 8cb1f3a1cc1a089e53a89c1a4f59cd63a1ddecf8
Author: Michal Čihař <mcihar at suse.cz>
Date: Tue Aug 2 15:25:27 2011 +0200
Fix indentation
-----------------------------------------------------------------------
Summary of changes:
libraries/export/codegen.php | 334 +++++++++---------
libraries/export/csv.php | 330 +++++++++---------
libraries/export/htmlword.php | 546 ++++++++++++++--------------
libraries/export/json.php | 242 +++++++-------
libraries/export/latex.php | 658 +++++++++++++++++-----------------
libraries/export/mediawiki.php | 228 ++++++------
libraries/export/ods.php | 344 +++++++++---------
libraries/export/odt.php | 594 ++++++++++++++++----------------
libraries/export/pdf.php | 764 ++++++++++++++++++++--------------------
9 files changed, 2020 insertions(+), 2020 deletions(-)
diff --git a/libraries/export/codegen.php b/libraries/export/codegen.php
index 357eac0..b8b35d5 100644
--- a/libraries/export/codegen.php
+++ b/libraries/export/codegen.php
@@ -42,188 +42,188 @@ if (isset($plugin_list)) {
);
} else {
-/**
- * Set of functions used to build exports of tables
- */
-
-/**
- * Outputs export footer
- *
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportFooter()
-{
- return true;
-}
-
-/**
- * Outputs export header
- *
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportHeader()
-{
- return true;
-}
-
-/**
- * Outputs database header
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBHeader($db)
-{
- return true;
-}
-
-/**
- * Outputs database footer
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBFooter($db)
-{
- return true;
-}
-
-/**
- * Outputs CREATE DATABASE statement
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBCreate($db)
-{
- return true;
-}
+ /**
+ * Set of functions used to build exports of tables
+ */
-/**
- * Outputs the content of a table in NHibernate format
- *
- * @param string $db database name
- * @param string $table table name
- * @param string $crlf the end of line sequence
- * @param string $error_url the url to go back in case of error
- * @param string $sql_query SQL query for obtaining data
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportData($db, $table, $crlf, $error_url, $sql_query)
-{
- global $CG_FORMATS, $CG_HANDLERS, $what;
- $format = $GLOBALS[$what . '_format'];
- if (isset($CG_FORMATS[$format])) {
- return PMA_exportOutputHandler($CG_HANDLERS[$format]($db, $table, $crlf));
- }
- return PMA_exportOutputHandler(sprintf("%s is not supported.", $format));
-}
-
-/**
- *
- * @package phpMyAdmin-Export
- * @subpackage Codegen
- */
-class TableProperty
-{
- public $name;
- public $type;
- public $nullable;
- public $key;
- public $defaultValue;
- public $ext;
- function __construct($row)
- {
- $this->name = trim($row[0]);
- $this->type = trim($row[1]);
- $this->nullable = trim($row[2]);
- $this->key = trim($row[3]);
- $this->defaultValue = trim($row[4]);
- $this->ext = trim($row[5]);
- }
- function getPureType()
- {
- $pos=strpos($this->type, "(");
- if ($pos > 0)
- return substr($this->type, 0, $pos);
- return $this->type;
- }
- function isNotNull()
- {
- return $this->nullable == "NO" ? "true" : "false";
- }
- function isUnique()
+ /**
+ * Outputs export footer
+ *
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportFooter()
{
- return $this->key == "PRI" || $this->key == "UNI" ? "true" : "false";
+ return true;
}
- function getDotNetPrimitiveType()
- {
- if (strpos($this->type, "int") === 0) return "int";
- if (strpos($this->type, "long") === 0) return "long";
- if (strpos($this->type, "char") === 0) return "string";
- if (strpos($this->type, "varchar") === 0) return "string";
- if (strpos($this->type, "text") === 0) return "string";
- if (strpos($this->type, "longtext") === 0) return "string";
- if (strpos($this->type, "tinyint") === 0) return "bool";
- if (strpos($this->type, "datetime") === 0) return "DateTime";
- return "unknown";
- }
- function getDotNetObjectType()
+
+ /**
+ * Outputs export header
+ *
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportHeader()
{
- if (strpos($this->type, "int") === 0) return "Int32";
- if (strpos($this->type, "long") === 0) return "Long";
- if (strpos($this->type, "char") === 0) return "String";
- if (strpos($this->type, "varchar") === 0) return "String";
- if (strpos($this->type, "text") === 0) return "String";
- if (strpos($this->type, "longtext") === 0) return "String";
- if (strpos($this->type, "tinyint") === 0) return "Boolean";
- if (strpos($this->type, "datetime") === 0) return "DateTime";
- return "Unknown";
+ return true;
}
- function getIndexName()
+
+ /**
+ * Outputs database header
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBHeader($db)
{
- if (strlen($this->key)>0)
- return "index=\"" . htmlspecialchars($this->name, ENT_COMPAT, 'UTF-8') . "\"";
- return "";
+ return true;
}
- function isPK()
+
+ /**
+ * Outputs database footer
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBFooter($db)
{
- return $this->key=="PRI";
+ return true;
}
- function formatCs($text)
+
+ /**
+ * Outputs CREATE DATABASE statement
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBCreate($db)
{
- $text=str_replace("#name#", cgMakeIdentifier($this->name, false), $text);
- return $this->format($text);
+ return true;
}
- function formatXml($text)
+
+ /**
+ * Outputs the content of a table in NHibernate format
+ *
+ * @param string $db database name
+ * @param string $table table name
+ * @param string $crlf the end of line sequence
+ * @param string $error_url the url to go back in case of error
+ * @param string $sql_query SQL query for obtaining data
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportData($db, $table, $crlf, $error_url, $sql_query)
{
- $text=str_replace("#name#", htmlspecialchars($this->name, ENT_COMPAT, 'UTF-8'), $text);
- $text=str_replace("#indexName#", $this->getIndexName(), $text);
- return $this->format($text);
+ global $CG_FORMATS, $CG_HANDLERS, $what;
+ $format = $GLOBALS[$what . '_format'];
+ if (isset($CG_FORMATS[$format])) {
+ return PMA_exportOutputHandler($CG_HANDLERS[$format]($db, $table, $crlf));
+ }
+ return PMA_exportOutputHandler(sprintf("%s is not supported.", $format));
}
- function format($text)
+
+ /**
+ *
+ * @package phpMyAdmin-Export
+ * @subpackage Codegen
+ */
+ class TableProperty
{
- $text=str_replace("#ucfirstName#", cgMakeIdentifier($this->name), $text);
- $text=str_replace("#dotNetPrimitiveType#", $this->getDotNetPrimitiveType(), $text);
- $text=str_replace("#dotNetObjectType#", $this->getDotNetObjectType(), $text);
- $text=str_replace("#type#", $this->getPureType(), $text);
- $text=str_replace("#notNull#", $this->isNotNull(), $text);
- $text=str_replace("#unique#", $this->isUnique(), $text);
- return $text;
+ public $name;
+ public $type;
+ public $nullable;
+ public $key;
+ public $defaultValue;
+ public $ext;
+ function __construct($row)
+ {
+ $this->name = trim($row[0]);
+ $this->type = trim($row[1]);
+ $this->nullable = trim($row[2]);
+ $this->key = trim($row[3]);
+ $this->defaultValue = trim($row[4]);
+ $this->ext = trim($row[5]);
+ }
+ function getPureType()
+ {
+ $pos=strpos($this->type, "(");
+ if ($pos > 0)
+ return substr($this->type, 0, $pos);
+ return $this->type;
+ }
+ function isNotNull()
+ {
+ return $this->nullable == "NO" ? "true" : "false";
+ }
+ function isUnique()
+ {
+ return $this->key == "PRI" || $this->key == "UNI" ? "true" : "false";
+ }
+ function getDotNetPrimitiveType()
+ {
+ if (strpos($this->type, "int") === 0) return "int";
+ if (strpos($this->type, "long") === 0) return "long";
+ if (strpos($this->type, "char") === 0) return "string";
+ if (strpos($this->type, "varchar") === 0) return "string";
+ if (strpos($this->type, "text") === 0) return "string";
+ if (strpos($this->type, "longtext") === 0) return "string";
+ if (strpos($this->type, "tinyint") === 0) return "bool";
+ if (strpos($this->type, "datetime") === 0) return "DateTime";
+ return "unknown";
+ }
+ function getDotNetObjectType()
+ {
+ if (strpos($this->type, "int") === 0) return "Int32";
+ if (strpos($this->type, "long") === 0) return "Long";
+ if (strpos($this->type, "char") === 0) return "String";
+ if (strpos($this->type, "varchar") === 0) return "String";
+ if (strpos($this->type, "text") === 0) return "String";
+ if (strpos($this->type, "longtext") === 0) return "String";
+ if (strpos($this->type, "tinyint") === 0) return "Boolean";
+ if (strpos($this->type, "datetime") === 0) return "DateTime";
+ return "Unknown";
+ }
+ function getIndexName()
+ {
+ if (strlen($this->key)>0)
+ return "index=\"" . htmlspecialchars($this->name, ENT_COMPAT, 'UTF-8') . "\"";
+ return "";
+ }
+ function isPK()
+ {
+ return $this->key=="PRI";
+ }
+ function formatCs($text)
+ {
+ $text=str_replace("#name#", cgMakeIdentifier($this->name, false), $text);
+ return $this->format($text);
+ }
+ function formatXml($text)
+ {
+ $text=str_replace("#name#", htmlspecialchars($this->name, ENT_COMPAT, 'UTF-8'), $text);
+ $text=str_replace("#indexName#", $this->getIndexName(), $text);
+ return $this->format($text);
+ }
+ function format($text)
+ {
+ $text=str_replace("#ucfirstName#", cgMakeIdentifier($this->name), $text);
+ $text=str_replace("#dotNetPrimitiveType#", $this->getDotNetPrimitiveType(), $text);
+ $text=str_replace("#dotNetObjectType#", $this->getDotNetObjectType(), $text);
+ $text=str_replace("#type#", $this->getPureType(), $text);
+ $text=str_replace("#notNull#", $this->isNotNull(), $text);
+ $text=str_replace("#unique#", $this->isUnique(), $text);
+ return $text;
+ }
}
-}
function cgMakeIdentifier($str, $ucfirst = true)
{
diff --git a/libraries/export/csv.php b/libraries/export/csv.php
index 19ca573..8b04841 100644
--- a/libraries/export/csv.php
+++ b/libraries/export/csv.php
@@ -35,189 +35,189 @@ if (isset($plugin_list)) {
);
} else {
-/**
- * Outputs export footer
- *
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportFooter() {
- return true;
-}
+ /**
+ * Outputs export footer
+ *
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportFooter() {
+ return true;
+ }
-/**
- * Outputs export header
- *
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportHeader() {
- global $what;
- global $csv_terminated;
- global $csv_separator;
- global $csv_enclosed;
- global $csv_escaped;
+ /**
+ * Outputs export header
+ *
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportHeader() {
+ global $what;
+ global $csv_terminated;
+ global $csv_separator;
+ global $csv_enclosed;
+ global $csv_escaped;
- // Here we just prepare some values for export
- if ($what == 'excel') {
- $csv_terminated = "\015\012";
- switch($GLOBALS['excel_edition']) {
- case 'win':
- // as tested on Windows with Excel 2002 and Excel 2007
- $csv_separator = ';';
- break;
- case 'mac_excel2003':
- $csv_separator = ';';
- break;
- case 'mac_excel2008':
- $csv_separator = ',';
- break;
- }
- $csv_enclosed = '"';
- $csv_escaped = '"';
- if (isset($GLOBALS['excel_columns'])) {
- $GLOBALS['csv_columns'] = 'yes';
- }
- } else {
- if (empty($csv_terminated) || strtolower($csv_terminated) == 'auto') {
- $csv_terminated = $GLOBALS['crlf'];
+ // Here we just prepare some values for export
+ if ($what == 'excel') {
+ $csv_terminated = "\015\012";
+ switch($GLOBALS['excel_edition']) {
+ case 'win':
+ // as tested on Windows with Excel 2002 and Excel 2007
+ $csv_separator = ';';
+ break;
+ case 'mac_excel2003':
+ $csv_separator = ';';
+ break;
+ case 'mac_excel2008':
+ $csv_separator = ',';
+ break;
+ }
+ $csv_enclosed = '"';
+ $csv_escaped = '"';
+ if (isset($GLOBALS['excel_columns'])) {
+ $GLOBALS['csv_columns'] = 'yes';
+ }
} else {
- $csv_terminated = str_replace('\\r', "\015", $csv_terminated);
- $csv_terminated = str_replace('\\n', "\012", $csv_terminated);
- $csv_terminated = str_replace('\\t', "\011", $csv_terminated);
- } // end if
- $csv_separator = str_replace('\\t', "\011", $csv_separator);
+ if (empty($csv_terminated) || strtolower($csv_terminated) == 'auto') {
+ $csv_terminated = $GLOBALS['crlf'];
+ } else {
+ $csv_terminated = str_replace('\\r', "\015", $csv_terminated);
+ $csv_terminated = str_replace('\\n', "\012", $csv_terminated);
+ $csv_terminated = str_replace('\\t', "\011", $csv_terminated);
+ } // end if
+ $csv_separator = str_replace('\\t', "\011", $csv_separator);
+ }
+ return true;
}
- return true;
-}
-/**
- * Outputs database header
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBHeader($db) {
- return true;
-}
-
-/**
- * Outputs database footer
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBFooter($db) {
- return true;
-}
+ /**
+ * Outputs database header
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBHeader($db) {
+ return true;
+ }
-/**
- * Outputs CREATE DATABASE statement
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBCreate($db) {
- return true;
-}
+ /**
+ * Outputs database footer
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBFooter($db) {
+ return true;
+ }
-/**
- * Outputs the content of a table in CSV format
- *
- * @param string $db database name
- * @param string $table table name
- * @param string $crlf the end of line sequence
- * @param string $error_url the url to go back in case of error
- * @param string $sql_query SQL query for obtaining data
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) {
- global $what;
- global $csv_terminated;
- global $csv_separator;
- global $csv_enclosed;
- global $csv_escaped;
+ /**
+ * Outputs CREATE DATABASE statement
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBCreate($db) {
+ return true;
+ }
- // Gets the data from the database
- $result = PMA_DBI_query($sql_query, null, PMA_DBI_QUERY_UNBUFFERED);
- $fields_cnt = PMA_DBI_num_fields($result);
+ /**
+ * Outputs the content of a table in CSV format
+ *
+ * @param string $db database name
+ * @param string $table table name
+ * @param string $crlf the end of line sequence
+ * @param string $error_url the url to go back in case of error
+ * @param string $sql_query SQL query for obtaining data
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) {
+ global $what;
+ global $csv_terminated;
+ global $csv_separator;
+ global $csv_enclosed;
+ global $csv_escaped;
- // If required, get fields name at the first line
- if (isset($GLOBALS['csv_columns'])) {
- $schema_insert = '';
- for ($i = 0; $i < $fields_cnt; $i++) {
- if ($csv_enclosed == '') {
- $schema_insert .= stripslashes(PMA_DBI_field_name($result, $i));
- } else {
- $schema_insert .= $csv_enclosed
- . str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, stripslashes(PMA_DBI_field_name($result, $i)))
- . $csv_enclosed;
- }
- $schema_insert .= $csv_separator;
- } // end for
- $schema_insert =trim(substr($schema_insert, 0, -1));
- if (!PMA_exportOutputHandler($schema_insert . $csv_terminated)) {
- return false;
- }
- } // end if
+ // Gets the data from the database
+ $result = PMA_DBI_query($sql_query, null, PMA_DBI_QUERY_UNBUFFERED);
+ $fields_cnt = PMA_DBI_num_fields($result);
- // Format the data
- while ($row = PMA_DBI_fetch_row($result)) {
- $schema_insert = '';
- for ($j = 0; $j < $fields_cnt; $j++) {
- if (!isset($row[$j]) || is_null($row[$j])) {
- $schema_insert .= $GLOBALS[$what . '_null'];
- } elseif ($row[$j] == '0' || $row[$j] != '') {
- // always enclose fields
- if ($what == 'excel') {
- $row[$j] = preg_replace("/\015(\012)?/", "\012", $row[$j]);
- }
- // remove CRLF characters within field
- if (isset($GLOBALS[$what . '_removeCRLF']) && $GLOBALS[$what . '_removeCRLF']) {
- $row[$j] = str_replace("\n", "", str_replace("\r", "", $row[$j]));
- }
+ // If required, get fields name at the first line
+ if (isset($GLOBALS['csv_columns'])) {
+ $schema_insert = '';
+ for ($i = 0; $i < $fields_cnt; $i++) {
if ($csv_enclosed == '') {
- $schema_insert .= $row[$j];
+ $schema_insert .= stripslashes(PMA_DBI_field_name($result, $i));
} else {
- // also double the escape string if found in the data
- if ('csv' == $what) {
- $schema_insert .= $csv_enclosed
- . str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, str_replace($csv_escaped, $csv_escaped . $csv_escaped, $row[$j]))
+ $schema_insert .= $csv_enclosed
+ . str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, stripslashes(PMA_DBI_field_name($result, $i)))
. $csv_enclosed;
+ }
+ $schema_insert .= $csv_separator;
+ } // end for
+ $schema_insert =trim(substr($schema_insert, 0, -1));
+ if (!PMA_exportOutputHandler($schema_insert . $csv_terminated)) {
+ return false;
+ }
+ } // end if
+
+ // Format the data
+ while ($row = PMA_DBI_fetch_row($result)) {
+ $schema_insert = '';
+ for ($j = 0; $j < $fields_cnt; $j++) {
+ if (!isset($row[$j]) || is_null($row[$j])) {
+ $schema_insert .= $GLOBALS[$what . '_null'];
+ } elseif ($row[$j] == '0' || $row[$j] != '') {
+ // always enclose fields
+ if ($what == 'excel') {
+ $row[$j] = preg_replace("/\015(\012)?/", "\012", $row[$j]);
+ }
+ // remove CRLF characters within field
+ if (isset($GLOBALS[$what . '_removeCRLF']) && $GLOBALS[$what . '_removeCRLF']) {
+ $row[$j] = str_replace("\n", "", str_replace("\r", "", $row[$j]));
+ }
+ if ($csv_enclosed == '') {
+ $schema_insert .= $row[$j];
} else {
- // for excel, avoid a problem when a field contains
- // double quotes
- $schema_insert .= $csv_enclosed
- . str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, $row[$j])
- . $csv_enclosed;
+ // also double the escape string if found in the data
+ if ('csv' == $what) {
+ $schema_insert .= $csv_enclosed
+ . str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, str_replace($csv_escaped, $csv_escaped . $csv_escaped, $row[$j]))
+ . $csv_enclosed;
+ } else {
+ // for excel, avoid a problem when a field contains
+ // double quotes
+ $schema_insert .= $csv_enclosed
+ . str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, $row[$j])
+ . $csv_enclosed;
+ }
}
+ } else {
+ $schema_insert .= '';
}
- } else {
- $schema_insert .= '';
- }
- if ($j < $fields_cnt-1) {
- $schema_insert .= $csv_separator;
- }
- } // end for
+ if ($j < $fields_cnt-1) {
+ $schema_insert .= $csv_separator;
+ }
+ } // end for
- if (!PMA_exportOutputHandler($schema_insert . $csv_terminated)) {
- return false;
- }
- } // end while
- PMA_DBI_free_result($result);
+ if (!PMA_exportOutputHandler($schema_insert . $csv_terminated)) {
+ return false;
+ }
+ } // end while
+ PMA_DBI_free_result($result);
- return true;
-} // end of the 'PMA_getTableCsv()' function
+ return true;
+ } // end of the 'PMA_getTableCsv()' function
}
?>
diff --git a/libraries/export/htmlword.php b/libraries/export/htmlword.php
index 6604ac6..707bc77 100644
--- a/libraries/export/htmlword.php
+++ b/libraries/export/htmlword.php
@@ -34,321 +34,321 @@ if (isset($plugin_list)) {
);
} else {
-/**
- * Outputs export footer
- *
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportFooter() {
- return PMA_exportOutputHandler('</body></html>');
-}
-
-/**
- * Outputs export header
- *
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportHeader() {
- global $charset_of_file;
- return PMA_exportOutputHandler('<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:x="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
-<head>
- <meta http-equiv="Content-type" content="text/html;charset=' . (isset($charset_of_file) ? $charset_of_file : 'utf-8') . '" />
-</head>
-<body>');
-}
-
-/**
- * Outputs database header
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBHeader($db) {
- return PMA_exportOutputHandler('<h1>' . __('Database') . ' ' . htmlspecialchars($db) . '</h1>');
-}
-
-/**
- * Outputs database footer
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBFooter($db) {
- return true;
-}
-
-/**
- * Outputs CREATE DATABASE statement
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBCreate($db) {
- return true;
-}
-
-/**
- * Outputs the content of a table in HTML (Microsoft Word) format
- *
- * @param string $db database name
- * @param string $table table name
- * @param string $crlf the end of line sequence
- * @param string $error_url the url to go back in case of error
- * @param string $sql_query SQL query for obtaining data
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportData($db, $table, $crlf, $error_url, $sql_query)
-{
- global $what;
-
- if (! PMA_exportOutputHandler('<h2>' . __('Dumping data for table') . ' ' . htmlspecialchars($table) . '</h2>')) {
- return false;
- }
- if (! PMA_exportOutputHandler('<table class="width100" cellspacing="1">')) {
- return false;
+ /**
+ * Outputs export footer
+ *
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportFooter() {
+ return PMA_exportOutputHandler('</body></html>');
}
- // Gets the data from the database
- $result = PMA_DBI_query($sql_query, null, PMA_DBI_QUERY_UNBUFFERED);
- $fields_cnt = PMA_DBI_num_fields($result);
-
- // If required, get fields name at the first line
- if (isset($GLOBALS['htmlword_columns'])) {
- $schema_insert = '<tr class="print-category">';
- for ($i = 0; $i < $fields_cnt; $i++) {
- $schema_insert .= '<td class="print"><b>' . htmlspecialchars(stripslashes(PMA_DBI_field_name($result, $i))) . '</b></td>';
- } // end for
- $schema_insert .= '</tr>';
- if (! PMA_exportOutputHandler($schema_insert)) {
- return false;
- }
- } // end if
-
- // Format the data
- while ($row = PMA_DBI_fetch_row($result)) {
- $schema_insert = '<tr class="print-category">';
- for ($j = 0; $j < $fields_cnt; $j++) {
- if (! isset($row[$j]) || is_null($row[$j])) {
- $value = $GLOBALS[$what . '_null'];
- } elseif ($row[$j] == '0' || $row[$j] != '') {
- $value = $row[$j];
- } else {
- $value = '';
- }
- $schema_insert .= '<td class="print">' . htmlspecialchars($value) . '</td>';
- } // end for
- $schema_insert .= '</tr>';
- if (! PMA_exportOutputHandler($schema_insert)) {
- return false;
- }
- } // end while
- PMA_DBI_free_result($result);
- if (! PMA_exportOutputHandler('</table>')) {
- return false;
+ /**
+ * Outputs export header
+ *
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportHeader() {
+ global $charset_of_file;
+ return PMA_exportOutputHandler('<html xmlns:o="urn:schemas-microsoft-com:office:office"
+ xmlns:x="urn:schemas-microsoft-com:office:word"
+ xmlns="http://www.w3.org/TR/REC-html40">
+
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+ <html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html;charset=' . (isset($charset_of_file) ? $charset_of_file : 'utf-8') . '" />
+ </head>
+ <body>');
}
- return true;
-}
-
-/**
- * Outputs table's structure
- *
- * @param string $db database name
- * @param string $table table name
- * @param string $crlf the end of line sequence
- * @param string $error_url the url to go back in case of error
- * @param bool $do_relation whether to include relation comments
- * @param bool $do_comments whether to include the pmadb-style column comments
- * as comments in the structure; this is deprecated
- * but the parameter is left here because export.php
- * calls PMA_exportStructure() also for other export
- * types which use this parameter
- * @param bool $do_mime whether to include mime comments
- * @param bool $dates whether to include creation/update/check dates
- * @param string $export_mode 'create_table', 'triggers', 'create_view', 'stand_in'
- * @param string $export_type 'server', 'database', 'table'
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportStructure($db, $table, $crlf, $error_url, $do_relation = false, $do_comments = false, $do_mime = false, $dates = false, $export_mode, $export_type)
-{
- global $cfgRelation;
+ /**
+ * Outputs database header
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBHeader($db) {
+ return PMA_exportOutputHandler('<h1>' . __('Database') . ' ' . htmlspecialchars($db) . '</h1>');
+ }
- if (! PMA_exportOutputHandler('<h2>' . __('Table structure for table') . ' ' . htmlspecialchars($table) . '</h2>')) {
- return false;
+ /**
+ * Outputs database footer
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBFooter($db) {
+ return true;
}
/**
- * Get the unique keys in the table
+ * Outputs CREATE DATABASE statement
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
*/
- $keys_query = 'SHOW KEYS FROM ' . PMA_backquote($table) . ' FROM '. PMA_backquote($db);
- $keys_result = PMA_DBI_query($keys_query);
- $unique_keys = array();
- while ($key = PMA_DBI_fetch_assoc($keys_result)) {
- if ($key['Non_unique'] == 0) {
- $unique_keys[] = $key['Column_name'];
- }
+ function PMA_exportDBCreate($db) {
+ return true;
}
- PMA_DBI_free_result($keys_result);
/**
- * Gets fields properties
+ * Outputs the content of a table in HTML (Microsoft Word) format
+ *
+ * @param string $db database name
+ * @param string $table table name
+ * @param string $crlf the end of line sequence
+ * @param string $error_url the url to go back in case of error
+ * @param string $sql_query SQL query for obtaining data
+ * @return bool Whether it suceeded
+ *
+ * @access public
*/
- PMA_DBI_select_db($db);
+ function PMA_exportData($db, $table, $crlf, $error_url, $sql_query)
+ {
+ global $what;
- // Check if we can use Relations
- if ($do_relation && ! empty($cfgRelation['relation'])) {
- // Find which tables are related with the current one and write it in
- // an array
- $res_rel = PMA_getForeigners($db, $table);
+ if (! PMA_exportOutputHandler('<h2>' . __('Dumping data for table') . ' ' . htmlspecialchars($table) . '</h2>')) {
+ return false;
+ }
+ if (! PMA_exportOutputHandler('<table class="width100" cellspacing="1">')) {
+ return false;
+ }
- if ($res_rel && count($res_rel) > 0) {
- $have_rel = true;
- } else {
- $have_rel = false;
+ // Gets the data from the database
+ $result = PMA_DBI_query($sql_query, null, PMA_DBI_QUERY_UNBUFFERED);
+ $fields_cnt = PMA_DBI_num_fields($result);
+
+ // If required, get fields name at the first line
+ if (isset($GLOBALS['htmlword_columns'])) {
+ $schema_insert = '<tr class="print-category">';
+ for ($i = 0; $i < $fields_cnt; $i++) {
+ $schema_insert .= '<td class="print"><b>' . htmlspecialchars(stripslashes(PMA_DBI_field_name($result, $i))) . '</b></td>';
+ } // end for
+ $schema_insert .= '</tr>';
+ if (! PMA_exportOutputHandler($schema_insert)) {
+ return false;
+ }
+ } // end if
+
+ // Format the data
+ while ($row = PMA_DBI_fetch_row($result)) {
+ $schema_insert = '<tr class="print-category">';
+ for ($j = 0; $j < $fields_cnt; $j++) {
+ if (! isset($row[$j]) || is_null($row[$j])) {
+ $value = $GLOBALS[$what . '_null'];
+ } elseif ($row[$j] == '0' || $row[$j] != '') {
+ $value = $row[$j];
+ } else {
+ $value = '';
+ }
+ $schema_insert .= '<td class="print">' . htmlspecialchars($value) . '</td>';
+ } // end for
+ $schema_insert .= '</tr>';
+ if (! PMA_exportOutputHandler($schema_insert)) {
+ return false;
+ }
+ } // end while
+ PMA_DBI_free_result($result);
+ if (! PMA_exportOutputHandler('</table>')) {
+ return false;
}
- } else {
- $have_rel = false;
- } // end if
+
+ return true;
+ }
/**
- * Displays the table structure
+ * Outputs table's structure
+ *
+ * @param string $db database name
+ * @param string $table table name
+ * @param string $crlf the end of line sequence
+ * @param string $error_url the url to go back in case of error
+ * @param bool $do_relation whether to include relation comments
+ * @param bool $do_comments whether to include the pmadb-style column comments
+ * as comments in the structure; this is deprecated
+ * but the parameter is left here because export.php
+ * calls PMA_exportStructure() also for other export
+ * types which use this parameter
+ * @param bool $do_mime whether to include mime comments
+ * @param bool $dates whether to include creation/update/check dates
+ * @param string $export_mode 'create_table', 'triggers', 'create_view', 'stand_in'
+ * @param string $export_type 'server', 'database', 'table'
+ * @return bool Whether it suceeded
+ *
+ * @access public
*/
- if (! PMA_exportOutputHandler('<table class="width100" cellspacing="1">')) {
- return false;
- }
+ function PMA_exportStructure($db, $table, $crlf, $error_url, $do_relation = false, $do_comments = false, $do_mime = false, $dates = false, $export_mode, $export_type)
+ {
+ global $cfgRelation;
- $columns_cnt = 4;
- if ($do_relation && $have_rel) {
- $columns_cnt++;
- }
- if ($do_comments && $cfgRelation['commwork']) {
- $columns_cnt++;
- }
- if ($do_mime && $cfgRelation['mimework']) {
- $columns_cnt++;
- }
+ if (! PMA_exportOutputHandler('<h2>' . __('Table structure for table') . ' ' . htmlspecialchars($table) . '</h2>')) {
+ return false;
+ }
- $schema_insert = '<tr class="print-category">';
- $schema_insert .= '<th class="print">' . htmlspecialchars(__('Column')) . '</th>';
- $schema_insert .= '<td class="print"><b>' . htmlspecialchars(__('Type')) . '</b></td>';
- $schema_insert .= '<td class="print"><b>' . htmlspecialchars(__('Null')) . '</b></td>';
- $schema_insert .= '<td class="print"><b>' . htmlspecialchars(__('Default')) . '</b></td>';
- if ($do_relation && $have_rel) {
- $schema_insert .= '<td class="print"><b>' . htmlspecialchars(__('Links to')) . '</b></td>';
- }
- if ($do_comments) {
- $schema_insert .= '<td class="print"><b>' . htmlspecialchars(__('Comments')) . '</b></td>';
- $comments = PMA_getComments($db, $table);
- }
- if ($do_mime && $cfgRelation['mimework']) {
- $schema_insert .= '<td class="print"><b>' . htmlspecialchars('MIME') . '</b></td>';
- $mime_map = PMA_getMIME($db, $table, true);
- }
- $schema_insert .= '</tr>';
+ /**
+ * Get the unique keys in the table
+ */
+ $keys_query = 'SHOW KEYS FROM ' . PMA_backquote($table) . ' FROM '. PMA_backquote($db);
+ $keys_result = PMA_DBI_query($keys_query);
+ $unique_keys = array();
+ while ($key = PMA_DBI_fetch_assoc($keys_result)) {
+ if ($key['Non_unique'] == 0) {
+ $unique_keys[] = $key['Column_name'];
+ }
+ }
+ PMA_DBI_free_result($keys_result);
- if (! PMA_exportOutputHandler($schema_insert)) {
- return false;
- }
+ /**
+ * Gets fields properties
+ */
+ PMA_DBI_select_db($db);
- $columns = PMA_DBI_get_columns($db, $table);
- foreach ($columns as $column) {
+ // Check if we can use Relations
+ if ($do_relation && ! empty($cfgRelation['relation'])) {
+ // Find which tables are related with the current one and write it in
+ // an array
+ $res_rel = PMA_getForeigners($db, $table);
- $schema_insert = '<tr class="print-category">';
- $type = $column['Type'];
- // reformat mysql query output
- // set or enum types: slashes single quotes inside options
- if (preg_match('/^(set|enum)\((.+)\)$/i', $type, $tmp)) {
- $tmp[2] = substr(preg_replace('/([^,])\'\'/', '\\1\\\'', ',' . $tmp[2]), 1);
- $type = $tmp[1] . '(' . str_replace(',', ', ', $tmp[2]) . ')';
- $type_nowrap = '';
-
- $binary = 0;
- $unsigned = 0;
- $zerofill = 0;
- } else {
- $type_nowrap = ' nowrap="nowrap"';
- $type = preg_replace('/BINARY/i', '', $type);
- $type = preg_replace('/ZEROFILL/i', '', $type);
- $type = preg_replace('/UNSIGNED/i', '', $type);
- if (empty($type)) {
- $type = ' ';
+ if ($res_rel && count($res_rel) > 0) {
+ $have_rel = true;
+ } else {
+ $have_rel = false;
}
+ } else {
+ $have_rel = false;
+ } // end if
- $binary = preg_match('/BINARY/i', $column['Type']);
- $unsigned = preg_match('/UNSIGNED/i', $column['Type']);
- $zerofill = preg_match('/ZEROFILL/i', $column['Type']);
- }
- $attribute = ' ';
- if ($binary) {
- $attribute = 'BINARY';
- }
- if ($unsigned) {
- $attribute = 'UNSIGNED';
- }
- if ($zerofill) {
- $attribute = 'UNSIGNED ZEROFILL';
- }
- if (! isset($column['Default'])) {
- if ($column['Null'] != 'NO') {
- $column['Default'] = 'NULL';
- }
+ /**
+ * Displays the table structure
+ */
+ if (! PMA_exportOutputHandler('<table class="width100" cellspacing="1">')) {
+ return false;
}
- $fmt_pre = '';
- $fmt_post = '';
- if (in_array($column['Field'], $unique_keys)) {
- $fmt_pre = '<b>' . $fmt_pre;
- $fmt_post = $fmt_post . '</b>';
+ $columns_cnt = 4;
+ if ($do_relation && $have_rel) {
+ $columns_cnt++;
}
- if ($column['Key'] == 'PRI') {
- $fmt_pre = '<i>' . $fmt_pre;
- $fmt_post = $fmt_post . '</i>';
+ if ($do_comments && $cfgRelation['commwork']) {
+ $columns_cnt++;
+ }
+ if ($do_mime && $cfgRelation['mimework']) {
+ $columns_cnt++;
}
- $schema_insert .= '<td class="print">' . $fmt_pre . htmlspecialchars($column['Field']) . $fmt_post . '</td>';
- $schema_insert .= '<td class="print">' . htmlspecialchars($type) . '</td>';
- $schema_insert .= '<td class="print">' . htmlspecialchars(($column['Null'] == '' || $column['Null'] == 'NO') ? __('No') : __('Yes')) . '</td>';
- $schema_insert .= '<td class="print">' . htmlspecialchars(isset($column['Default']) ? $column['Default'] : '') . '</td>';
-
- $field_name = $column['Field'];
+ $schema_insert = '<tr class="print-category">';
+ $schema_insert .= '<th class="print">' . htmlspecialchars(__('Column')) . '</th>';
+ $schema_insert .= '<td class="print"><b>' . htmlspecialchars(__('Type')) . '</b></td>';
+ $schema_insert .= '<td class="print"><b>' . htmlspecialchars(__('Null')) . '</b></td>';
+ $schema_insert .= '<td class="print"><b>' . htmlspecialchars(__('Default')) . '</b></td>';
if ($do_relation && $have_rel) {
- $schema_insert .= '<td class="print">' . (isset($res_rel[$field_name]) ? htmlspecialchars($res_rel[$field_name]['foreign_table'] . ' (' . $res_rel[$field_name]['foreign_field'] . ')') : '') . '</td>';
+ $schema_insert .= '<td class="print"><b>' . htmlspecialchars(__('Links to')) . '</b></td>';
}
- if ($do_comments && $cfgRelation['commwork']) {
- $schema_insert .= '<td class="print">' . (isset($comments[$field_name]) ? htmlspecialchars($comments[$field_name]) : '') . '</td>';
+ if ($do_comments) {
+ $schema_insert .= '<td class="print"><b>' . htmlspecialchars(__('Comments')) . '</b></td>';
+ $comments = PMA_getComments($db, $table);
}
if ($do_mime && $cfgRelation['mimework']) {
- $schema_insert .= '<td class="print">' . (isset($mime_map[$field_name]) ? htmlspecialchars(str_replace('_', '/', $mime_map[$field_name]['mimetype'])) : '') . '</td>';
+ $schema_insert .= '<td class="print"><b>' . htmlspecialchars('MIME') . '</b></td>';
+ $mime_map = PMA_getMIME($db, $table, true);
}
-
$schema_insert .= '</tr>';
if (! PMA_exportOutputHandler($schema_insert)) {
return false;
}
- } // end while
- return PMA_exportOutputHandler('</table>');
-}
+ $columns = PMA_DBI_get_columns($db, $table);
+ foreach ($columns as $column) {
+
+ $schema_insert = '<tr class="print-category">';
+ $type = $column['Type'];
+ // reformat mysql query output
+ // set or enum types: slashes single quotes inside options
+ if (preg_match('/^(set|enum)\((.+)\)$/i', $type, $tmp)) {
+ $tmp[2] = substr(preg_replace('/([^,])\'\'/', '\\1\\\'', ',' . $tmp[2]), 1);
+ $type = $tmp[1] . '(' . str_replace(',', ', ', $tmp[2]) . ')';
+ $type_nowrap = '';
+
+ $binary = 0;
+ $unsigned = 0;
+ $zerofill = 0;
+ } else {
+ $type_nowrap = ' nowrap="nowrap"';
+ $type = preg_replace('/BINARY/i', '', $type);
+ $type = preg_replace('/ZEROFILL/i', '', $type);
+ $type = preg_replace('/UNSIGNED/i', '', $type);
+ if (empty($type)) {
+ $type = ' ';
+ }
+
+ $binary = preg_match('/BINARY/i', $column['Type']);
+ $unsigned = preg_match('/UNSIGNED/i', $column['Type']);
+ $zerofill = preg_match('/ZEROFILL/i', $column['Type']);
+ }
+ $attribute = ' ';
+ if ($binary) {
+ $attribute = 'BINARY';
+ }
+ if ($unsigned) {
+ $attribute = 'UNSIGNED';
+ }
+ if ($zerofill) {
+ $attribute = 'UNSIGNED ZEROFILL';
+ }
+ if (! isset($column['Default'])) {
+ if ($column['Null'] != 'NO') {
+ $column['Default'] = 'NULL';
+ }
+ }
+
+ $fmt_pre = '';
+ $fmt_post = '';
+ if (in_array($column['Field'], $unique_keys)) {
+ $fmt_pre = '<b>' . $fmt_pre;
+ $fmt_post = $fmt_post . '</b>';
+ }
+ if ($column['Key'] == 'PRI') {
+ $fmt_pre = '<i>' . $fmt_pre;
+ $fmt_post = $fmt_post . '</i>';
+ }
+ $schema_insert .= '<td class="print">' . $fmt_pre . htmlspecialchars($column['Field']) . $fmt_post . '</td>';
+ $schema_insert .= '<td class="print">' . htmlspecialchars($type) . '</td>';
+ $schema_insert .= '<td class="print">' . htmlspecialchars(($column['Null'] == '' || $column['Null'] == 'NO') ? __('No') : __('Yes')) . '</td>';
+ $schema_insert .= '<td class="print">' . htmlspecialchars(isset($column['Default']) ? $column['Default'] : '') . '</td>';
+
+ $field_name = $column['Field'];
+
+ if ($do_relation && $have_rel) {
+ $schema_insert .= '<td class="print">' . (isset($res_rel[$field_name]) ? htmlspecialchars($res_rel[$field_name]['foreign_table'] . ' (' . $res_rel[$field_name]['foreign_field'] . ')') : '') . '</td>';
+ }
+ if ($do_comments && $cfgRelation['commwork']) {
+ $schema_insert .= '<td class="print">' . (isset($comments[$field_name]) ? htmlspecialchars($comments[$field_name]) : '') . '</td>';
+ }
+ if ($do_mime && $cfgRelation['mimework']) {
+ $schema_insert .= '<td class="print">' . (isset($mime_map[$field_name]) ? htmlspecialchars(str_replace('_', '/', $mime_map[$field_name]['mimetype'])) : '') . '</td>';
+ }
+
+ $schema_insert .= '</tr>';
+
+ if (! PMA_exportOutputHandler($schema_insert)) {
+ return false;
+ }
+ } // end while
+
+ return PMA_exportOutputHandler('</table>');
+ }
}
?>
diff --git a/libraries/export/json.php b/libraries/export/json.php
index e008f0c..860d640 100644
--- a/libraries/export/json.php
+++ b/libraries/export/json.php
@@ -30,144 +30,144 @@ if (isset($plugin_list)) {
);
} else {
-/**
- * Set of functions used to build exports of tables
- */
+ /**
+ * Set of functions used to build exports of tables
+ */
+
+ /**
+ * Outputs export footer
+ *
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportFooter()
+ {
+ return true;
+ }
-/**
- * Outputs export footer
- *
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportFooter()
-{
- return true;
-}
+ /**
+ * Outputs export header
+ *
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportHeader()
+ {
+ PMA_exportOutputHandler(
+ '/**' . $GLOBALS['crlf']
+ . ' Export to JSON plugin for PHPMyAdmin' . $GLOBALS['crlf']
+ . ' @version 0.1' . $GLOBALS['crlf']
+ . ' */' . $GLOBALS['crlf'] . $GLOBALS['crlf']
+ );
+ return true;
+ }
-/**
- * Outputs export header
- *
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportHeader()
-{
- PMA_exportOutputHandler(
- '/**' . $GLOBALS['crlf']
- . ' Export to JSON plugin for PHPMyAdmin' . $GLOBALS['crlf']
- . ' @version 0.1' . $GLOBALS['crlf']
- . ' */' . $GLOBALS['crlf'] . $GLOBALS['crlf']
- );
- return true;
-}
+ /**
+ * Outputs database header
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBHeader($db)
+ {
+ PMA_exportOutputHandler('// Database \'' . $db . '\'' . $GLOBALS['crlf'] );
+ return true;
+ }
-/**
- * Outputs database header
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBHeader($db)
-{
- PMA_exportOutputHandler('// Database \'' . $db . '\'' . $GLOBALS['crlf'] );
- return true;
-}
+ /**
+ * Outputs database footer
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBFooter($db)
+ {
+ return true;
+ }
-/**
- * Outputs database footer
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBFooter($db)
-{
- return true;
-}
+ /**
+ * Outputs CREATE DATABASE statement
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBCreate($db)
+ {
+ return true;
+ }
-/**
- * Outputs CREATE DATABASE statement
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBCreate($db)
-{
- return true;
-}
+ /**
+ * Outputs the content of a table in JSON format
+ *
+ * @param string $db database name
+ * @param string $table table name
+ * @param string $crlf the end of line sequence
+ * @param string $error_url the url to go back in case of error
+ * @param string $sql_query SQL query for obtaining data
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportData($db, $table, $crlf, $error_url, $sql_query)
+ {
+ $result = PMA_DBI_query($sql_query, null, PMA_DBI_QUERY_UNBUFFERED);
+
+ $columns_cnt = PMA_DBI_num_fields($result);
+ for ($i = 0; $i < $columns_cnt; $i++) {
+ $columns[$i] = stripslashes(PMA_DBI_field_name($result, $i));
+ }
+ unset($i);
-/**
- * Outputs the content of a table in JSON format
- *
- * @param string $db database name
- * @param string $table table name
- * @param string $crlf the end of line sequence
- * @param string $error_url the url to go back in case of error
- * @param string $sql_query SQL query for obtaining data
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportData($db, $table, $crlf, $error_url, $sql_query)
-{
- $result = PMA_DBI_query($sql_query, null, PMA_DBI_QUERY_UNBUFFERED);
+ $buffer = '';
+ $record_cnt = 0;
+ while ($record = PMA_DBI_fetch_row($result)) {
- $columns_cnt = PMA_DBI_num_fields($result);
- for ($i = 0; $i < $columns_cnt; $i++) {
- $columns[$i] = stripslashes(PMA_DBI_field_name($result, $i));
- }
- unset($i);
+ $record_cnt++;
- $buffer = '';
- $record_cnt = 0;
- while ($record = PMA_DBI_fetch_row($result)) {
+ // Output table name as comment if this is the first record of the table
+ if ($record_cnt == 1) {
+ $buffer .= '// ' . $db . '.' . $table . $crlf . $crlf;
+ $buffer .= '[{';
+ } else {
+ $buffer .= ', {';
+ }
- $record_cnt++;
+ for ($i = 0; $i < $columns_cnt; $i++) {
- // Output table name as comment if this is the first record of the table
- if ($record_cnt == 1) {
- $buffer .= '// ' . $db . '.' . $table . $crlf . $crlf;
- $buffer .= '[{';
- } else {
- $buffer .= ', {';
- }
+ $isLastLine = ($i + 1 >= $columns_cnt);
- for ($i = 0; $i < $columns_cnt; $i++) {
+ $column = $columns[$i];
- $isLastLine = ($i + 1 >= $columns_cnt);
+ if (is_null($record[$i])) {
+ $buffer .= '"' . addslashes($column) . '": null' . (! $isLastLine ? ',' : '');
+ } elseif (is_numeric($record[$i])) {
+ $buffer .= '"' . addslashes($column) . '": ' . $record[$i] . (! $isLastLine ? ',' : '');
+ } else {
+ $buffer .= '"' . addslashes($column) . '": "' . addslashes($record[$i]) . '"' . (! $isLastLine ? ',' : '');
+ }
+ }
- $column = $columns[$i];
+ $buffer .= '}';
+ }
- if (is_null($record[$i])) {
- $buffer .= '"' . addslashes($column) . '": null' . (! $isLastLine ? ',' : '');
- } elseif (is_numeric($record[$i])) {
- $buffer .= '"' . addslashes($column) . '": ' . $record[$i] . (! $isLastLine ? ',' : '');
- } else {
- $buffer .= '"' . addslashes($column) . '": "' . addslashes($record[$i]) . '"' . (! $isLastLine ? ',' : '');
- }
+ if ($record_cnt) {
+ $buffer .= ']';
+ }
+ if (! PMA_exportOutputHandler($buffer)) {
+ return false;
}
- $buffer .= '}';
- }
+ PMA_DBI_free_result($result);
- if ($record_cnt) {
- $buffer .= ']';
- }
- if (! PMA_exportOutputHandler($buffer)) {
- return false;
+ return true;
}
- PMA_DBI_free_result($result);
-
- return true;
-}
-
}
diff --git a/libraries/export/latex.php b/libraries/export/latex.php
index 080d0ac..1c6064a 100644
--- a/libraries/export/latex.php
+++ b/libraries/export/latex.php
@@ -82,389 +82,389 @@ if (isset($plugin_list)) {
array('type' => 'end_group');
} else {
-/**
- * Escapes some special characters for use in TeX/LaTeX
- *
- * @param string the string to convert
- *
- * @return string the converted string with escape codes
- *
- * @access private
- */
-function PMA_texEscape($string) {
- $escape = array('$', '%', '{', '}', '&', '#', '_', '^');
- $cnt_escape = count($escape);
- for ($k=0; $k < $cnt_escape; $k++) {
- $string = str_replace($escape[$k], '\\' . $escape[$k], $string);
+ /**
+ * Escapes some special characters for use in TeX/LaTeX
+ *
+ * @param string the string to convert
+ *
+ * @return string the converted string with escape codes
+ *
+ * @access private
+ */
+ function PMA_texEscape($string) {
+ $escape = array('$', '%', '{', '}', '&', '#', '_', '^');
+ $cnt_escape = count($escape);
+ for ($k=0; $k < $cnt_escape; $k++) {
+ $string = str_replace($escape[$k], '\\' . $escape[$k], $string);
+ }
+ return $string;
}
- return $string;
-}
-/**
- * Outputs export footer
- *
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportFooter() {
- return true;
-}
-
-/**
- * Outputs export header
- *
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportHeader() {
- global $crlf;
- global $cfg;
-
- $head = '% phpMyAdmin LaTeX Dump' . $crlf
- . '% version ' . PMA_VERSION . $crlf
- . '% http://www.phpmyadmin.net' . $crlf
- . '%' . $crlf
- . '% ' . __('Host') . ': ' . $cfg['Server']['host'];
- if (!empty($cfg['Server']['port'])) {
- $head .= ':' . $cfg['Server']['port'];
+ /**
+ * Outputs export footer
+ *
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportFooter() {
+ return true;
}
- $head .= $crlf
- . '% ' . __('Generation Time') . ': ' . PMA_localisedDate() . $crlf
- . '% ' . __('Server version') . ': ' . PMA_MYSQL_STR_VERSION . $crlf
- . '% ' . __('PHP Version') . ': ' . phpversion() . $crlf;
- return PMA_exportOutputHandler($head);
-}
-
-/**
- * Outputs database header
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBHeader($db) {
- global $crlf;
- $head = '% ' . $crlf
- . '% ' . __('Database') . ': ' . (isset($GLOBALS['use_backquotes']) ? PMA_backquote($db) : '\'' . $db . '\''). $crlf
- . '% ' . $crlf;
- return PMA_exportOutputHandler($head);
-}
-
-/**
- * Outputs database footer
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBFooter($db) {
- return true;
-}
-
-/**
- * Outputs CREATE DATABASE statement
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBCreate($db) {
- return true;
-}
-
-/**
- * Outputs the content of a table in LaTeX table/sideways table environment
- *
- * @param string $db database name
- * @param string $table table name
- * @param string $crlf the end of line sequence
- * @param string $error_url the url to go back in case of error
- * @param string $sql_query SQL query for obtaining data
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) {
- $result = PMA_DBI_try_query($sql_query, null, PMA_DBI_QUERY_UNBUFFERED);
- $columns_cnt = PMA_DBI_num_fields($result);
- for ($i = 0; $i < $columns_cnt; $i++) {
- $columns[$i] = PMA_DBI_field_name($result, $i);
+ /**
+ * Outputs export header
+ *
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportHeader() {
+ global $crlf;
+ global $cfg;
+
+ $head = '% phpMyAdmin LaTeX Dump' . $crlf
+ . '% version ' . PMA_VERSION . $crlf
+ . '% http://www.phpmyadmin.net' . $crlf
+ . '%' . $crlf
+ . '% ' . __('Host') . ': ' . $cfg['Server']['host'];
+ if (!empty($cfg['Server']['port'])) {
+ $head .= ':' . $cfg['Server']['port'];
+ }
+ $head .= $crlf
+ . '% ' . __('Generation Time') . ': ' . PMA_localisedDate() . $crlf
+ . '% ' . __('Server version') . ': ' . PMA_MYSQL_STR_VERSION . $crlf
+ . '% ' . __('PHP Version') . ': ' . phpversion() . $crlf;
+ return PMA_exportOutputHandler($head);
}
- unset($i);
-
- $buffer = $crlf . '%' . $crlf . '% ' . __('Data') . ': ' . $table . $crlf . '%' . $crlf
- . ' \\begin{longtable}{|';
- for ($index=0;$index<$columns_cnt;$index++) {
- $buffer .= 'l|';
+ /**
+ * Outputs database header
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBHeader($db) {
+ global $crlf;
+ $head = '% ' . $crlf
+ . '% ' . __('Database') . ': ' . (isset($GLOBALS['use_backquotes']) ? PMA_backquote($db) : '\'' . $db . '\''). $crlf
+ . '% ' . $crlf;
+ return PMA_exportOutputHandler($head);
}
- $buffer .= '} ' . $crlf ;
- $buffer .= ' \\hline \\endhead \\hline \\endfoot \\hline ' . $crlf;
- if (isset($GLOBALS['latex_caption'])) {
- $buffer .= ' \\caption{' . PMA_expandUserString($GLOBALS['latex_data_caption'], 'PMA_texEscape', array('table' => $table, 'database' => $db))
- . '} \\label{' . PMA_expandUserString($GLOBALS['latex_data_label'], NULL, array('table' => $table, 'database' => $db)) . '} \\\\';
+ /**
+ * Outputs database footer
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBFooter($db) {
+ return true;
}
- if (!PMA_exportOutputHandler($buffer)) {
- return false;
+
+ /**
+ * Outputs CREATE DATABASE statement
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBCreate($db) {
+ return true;
}
- // show column names
- if (isset($GLOBALS['latex_columns'])) {
- $buffer = '\\hline ';
+ /**
+ * Outputs the content of a table in LaTeX table/sideways table environment
+ *
+ * @param string $db database name
+ * @param string $table table name
+ * @param string $crlf the end of line sequence
+ * @param string $error_url the url to go back in case of error
+ * @param string $sql_query SQL query for obtaining data
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) {
+ $result = PMA_DBI_try_query($sql_query, null, PMA_DBI_QUERY_UNBUFFERED);
+
+ $columns_cnt = PMA_DBI_num_fields($result);
for ($i = 0; $i < $columns_cnt; $i++) {
- $buffer .= '\\multicolumn{1}{|c|}{\\textbf{' . PMA_texEscape(stripslashes($columns[$i])) . '}} & ';
- }
+ $columns[$i] = PMA_DBI_field_name($result, $i);
+ }
+ unset($i);
- $buffer = substr($buffer, 0, -2) . '\\\\ \\hline \hline ';
- if (!PMA_exportOutputHandler($buffer . ' \\endfirsthead ' . $crlf)) {
- return false;
+ $buffer = $crlf . '%' . $crlf . '% ' . __('Data') . ': ' . $table . $crlf . '%' . $crlf
+ . ' \\begin{longtable}{|';
+
+ for ($index=0;$index<$columns_cnt;$index++) {
+ $buffer .= 'l|';
}
+ $buffer .= '} ' . $crlf ;
+
+ $buffer .= ' \\hline \\endhead \\hline \\endfoot \\hline ' . $crlf;
if (isset($GLOBALS['latex_caption'])) {
- if (!PMA_exportOutputHandler('\\caption{' . PMA_expandUserString($GLOBALS['latex_data_continued_caption'], 'PMA_texEscape', array('table' => $table, 'database' => $db)) . '} \\\\ ')) return false;
- }
- if (!PMA_exportOutputHandler($buffer . '\\endhead \\endfoot' . $crlf)) {
- return false;
+ $buffer .= ' \\caption{' . PMA_expandUserString($GLOBALS['latex_data_caption'], 'PMA_texEscape', array('table' => $table, 'database' => $db))
+ . '} \\label{' . PMA_expandUserString($GLOBALS['latex_data_label'], NULL, array('table' => $table, 'database' => $db)) . '} \\\\';
}
- } else {
- if (!PMA_exportOutputHandler('\\\\ \hline')) {
+ if (!PMA_exportOutputHandler($buffer)) {
return false;
}
- }
- // print the whole table
- while ($record = PMA_DBI_fetch_assoc($result)) {
+ // show column names
+ if (isset($GLOBALS['latex_columns'])) {
+ $buffer = '\\hline ';
+ for ($i = 0; $i < $columns_cnt; $i++) {
+ $buffer .= '\\multicolumn{1}{|c|}{\\textbf{' . PMA_texEscape(stripslashes($columns[$i])) . '}} & ';
+ }
- $buffer = '';
- // print each row
- for ($i = 0; $i < $columns_cnt; $i++) {
- if (isset($record[$columns[$i]])
- && (! function_exists('is_null') || !is_null($record[$columns[$i]]))) {
- $column_value = PMA_texEscape(stripslashes($record[$columns[$i]]));
- } else {
- $column_value = $GLOBALS['latex_null'];
+ $buffer = substr($buffer, 0, -2) . '\\\\ \\hline \hline ';
+ if (!PMA_exportOutputHandler($buffer . ' \\endfirsthead ' . $crlf)) {
+ return false;
+ }
+ if (isset($GLOBALS['latex_caption'])) {
+ if (!PMA_exportOutputHandler('\\caption{' . PMA_expandUserString($GLOBALS['latex_data_continued_caption'], 'PMA_texEscape', array('table' => $table, 'database' => $db)) . '} \\\\ ')) return false;
}
+ if (!PMA_exportOutputHandler($buffer . '\\endhead \\endfoot' . $crlf)) {
+ return false;
+ }
+ } else {
+ if (!PMA_exportOutputHandler('\\\\ \hline')) {
+ return false;
+ }
+ }
- // last column ... no need for & character
- if ($i == ($columns_cnt - 1)) {
- $buffer .= $column_value;
- } else {
- $buffer .= $column_value . " & ";
+ // print the whole table
+ while ($record = PMA_DBI_fetch_assoc($result)) {
+
+ $buffer = '';
+ // print each row
+ for ($i = 0; $i < $columns_cnt; $i++) {
+ if (isset($record[$columns[$i]])
+ && (! function_exists('is_null') || !is_null($record[$columns[$i]]))) {
+ $column_value = PMA_texEscape(stripslashes($record[$columns[$i]]));
+ } else {
+ $column_value = $GLOBALS['latex_null'];
+ }
+
+ // last column ... no need for & character
+ if ($i == ($columns_cnt - 1)) {
+ $buffer .= $column_value;
+ } else {
+ $buffer .= $column_value . " & ";
+ }
+ }
+ $buffer .= ' \\\\ \\hline ' . $crlf;
+ if (!PMA_exportOutputHandler($buffer)) {
+ return false;
}
}
- $buffer .= ' \\\\ \\hline ' . $crlf;
+
+ $buffer = ' \\end{longtable}' . $crlf;
if (!PMA_exportOutputHandler($buffer)) {
return false;
}
- }
-
- $buffer = ' \\end{longtable}' . $crlf;
- if (!PMA_exportOutputHandler($buffer)) {
- return false;
- }
- PMA_DBI_free_result($result);
- return true;
+ PMA_DBI_free_result($result);
+ return true;
-} // end getTableLaTeX
-
-/**
- * Outputs table's structure
- *
- * @param string $db database name
- * @param string $table table name
- * @param string $crlf the end of line sequence
- * @param string $error_url the url to go back in case of error
- * @param bool $do_relation whether to include relation comments
- * @param bool $do_comments whether to include the pmadb-style column comments
- * as comments in the structure; this is deprecated
- * but the parameter is left here because export.php
- * calls PMA_exportStructure() also for other export
- * types which use this parameter
- * @param bool $do_mime whether to include mime comments
- * @param bool $dates whether to include creation/update/check dates
- * @param string $export_mode 'create_table', 'triggers', 'create_view', 'stand_in'
- * @param string $export_type 'server', 'database', 'table'
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportStructure($db, $table, $crlf, $error_url, $do_relation = false, $do_comments = false, $do_mime = false, $dates = false, $export_mode, $export_type)
-{
- global $cfgRelation;
+ } // end getTableLaTeX
/**
- * Get the unique keys in the table
+ * Outputs table's structure
+ *
+ * @param string $db database name
+ * @param string $table table name
+ * @param string $crlf the end of line sequence
+ * @param string $error_url the url to go back in case of error
+ * @param bool $do_relation whether to include relation comments
+ * @param bool $do_comments whether to include the pmadb-style column comments
+ * as comments in the structure; this is deprecated
+ * but the parameter is left here because export.php
+ * calls PMA_exportStructure() also for other export
+ * types which use this parameter
+ * @param bool $do_mime whether to include mime comments
+ * @param bool $dates whether to include creation/update/check dates
+ * @param string $export_mode 'create_table', 'triggers', 'create_view', 'stand_in'
+ * @param string $export_type 'server', 'database', 'table'
+ * @return bool Whether it suceeded
+ *
+ * @access public
*/
- $keys_query = 'SHOW KEYS FROM ' . PMA_backquote($table) . ' FROM '. PMA_backquote($db);
- $keys_result = PMA_DBI_query($keys_query);
- $unique_keys = array();
- while ($key = PMA_DBI_fetch_assoc($keys_result)) {
- if ($key['Non_unique'] == 0) {
- $unique_keys[] = $key['Column_name'];
+ function PMA_exportStructure($db, $table, $crlf, $error_url, $do_relation = false, $do_comments = false, $do_mime = false, $dates = false, $export_mode, $export_type)
+ {
+ global $cfgRelation;
+
+ /**
+ * Get the unique keys in the table
+ */
+ $keys_query = 'SHOW KEYS FROM ' . PMA_backquote($table) . ' FROM '. PMA_backquote($db);
+ $keys_result = PMA_DBI_query($keys_query);
+ $unique_keys = array();
+ while ($key = PMA_DBI_fetch_assoc($keys_result)) {
+ if ($key['Non_unique'] == 0) {
+ $unique_keys[] = $key['Column_name'];
+ }
}
- }
- PMA_DBI_free_result($keys_result);
+ PMA_DBI_free_result($keys_result);
- /**
- * Gets fields properties
- */
- PMA_DBI_select_db($db);
+ /**
+ * Gets fields properties
+ */
+ PMA_DBI_select_db($db);
- // Check if we can use Relations
- if ($do_relation && !empty($cfgRelation['relation'])) {
- // Find which tables are related with the current one and write it in
- // an array
- $res_rel = PMA_getForeigners($db, $table);
+ // Check if we can use Relations
+ if ($do_relation && !empty($cfgRelation['relation'])) {
+ // Find which tables are related with the current one and write it in
+ // an array
+ $res_rel = PMA_getForeigners($db, $table);
- if ($res_rel && count($res_rel) > 0) {
- $have_rel = true;
+ if ($res_rel && count($res_rel) > 0) {
+ $have_rel = true;
+ } else {
+ $have_rel = false;
+ }
} else {
- $have_rel = false;
+ $have_rel = false;
+ } // end if
+
+ /**
+ * Displays the table structure
+ */
+ $buffer = $crlf . '%' . $crlf . '% ' . __('Structure') . ': ' . $table . $crlf . '%' . $crlf
+ . ' \\begin{longtable}{';
+ if (!PMA_exportOutputHandler($buffer)) {
+ return false;
}
- } else {
- $have_rel = false;
- } // end if
-
- /**
- * Displays the table structure
- */
- $buffer = $crlf . '%' . $crlf . '% ' . __('Structure') . ': ' . $table . $crlf . '%' . $crlf
- . ' \\begin{longtable}{';
- if (!PMA_exportOutputHandler($buffer)) {
- return false;
- }
-
- $columns_cnt = 4;
- $alignment = '|l|c|c|c|';
- if ($do_relation && $have_rel) {
- $columns_cnt++;
- $alignment .= 'l|';
- }
- if ($do_comments) {
- $columns_cnt++;
- $alignment .= 'l|';
- }
- if ($do_mime && $cfgRelation['mimework']) {
- $columns_cnt++;
- $alignment .='l|';
- }
- $buffer = $alignment . '} ' . $crlf ;
-
- $header = ' \\hline ';
- $header .= '\\multicolumn{1}{|c|}{\\textbf{' . __('Column') . '}} & \\multicolumn{1}{|c|}{\\textbf{' . __('Type') . '}} & \\multicolumn{1}{|c|}{\\textbf{' . __('Null') . '}} & \\multicolumn{1}{|c|}{\\textbf{' . __('Default') . '}}';
- if ($do_relation && $have_rel) {
- $header .= ' & \\multicolumn{1}{|c|}{\\textbf{' . __('Links to') . '}}';
- }
- if ($do_comments) {
- $header .= ' & \\multicolumn{1}{|c|}{\\textbf{' . __('Comments') . '}}';
- $comments = PMA_getComments($db, $table);
- }
- if ($do_mime && $cfgRelation['mimework']) {
- $header .= ' & \\multicolumn{1}{|c|}{\\textbf{MIME}}';
- $mime_map = PMA_getMIME($db, $table, true);
- }
- // Table caption for first page and label
- if (isset($GLOBALS['latex_caption'])) {
- $buffer .= ' \\caption{'. PMA_expandUserString($GLOBALS['latex_structure_caption'], 'PMA_texEscape', array('table' => $table, 'database' => $db))
- . '} \\label{' . PMA_expandUserString($GLOBALS['latex_structure_label'], NULL, array('table' => $table, 'database' => $db))
- . '} \\\\' . $crlf;
- }
- $buffer .= $header . ' \\\\ \\hline \\hline' . $crlf . '\\endfirsthead' . $crlf;
- // Table caption on next pages
- if (isset($GLOBALS['latex_caption'])) {
- $buffer .= ' \\caption{'. PMA_expandUserString($GLOBALS['latex_structure_continued_caption'], 'PMA_texEscape', array('table' => $table, 'database' => $db))
- . '} \\\\ ' . $crlf;
- }
- $buffer .= $header . ' \\\\ \\hline \\hline \\endhead \\endfoot ' . $crlf;
-
- if (!PMA_exportOutputHandler($buffer)) {
- return false;
- }
-
- $fields = PMA_DBI_get_columns($db, $table);
- foreach ($fields as $row) {
- $type = $row['Type'];
- // reformat mysql query output
- // set or enum types: slashes single quotes inside options
- if (preg_match('/^(set|enum)\((.+)\)$/i', $type, $tmp)) {
- $tmp[2] = substr(preg_replace('/([^,])\'\'/', '\\1\\\'', ',' . $tmp[2]), 1);
- $type = $tmp[1] . '(' . str_replace(',', ', ', $tmp[2]) . ')';
- $type_nowrap = '';
-
- $binary = 0;
- $unsigned = 0;
- $zerofill = 0;
- } else {
- $type_nowrap = ' nowrap="nowrap"';
- $type = preg_replace('/BINARY/i', '', $type);
- $type = preg_replace('/ZEROFILL/i', '', $type);
- $type = preg_replace('/UNSIGNED/i', '', $type);
- if (empty($type)) {
- $type = ' ';
- }
-
- $binary = preg_match('/BINARY/i', $row['Type']);
- $unsigned = preg_match('/UNSIGNED/i', $row['Type']);
- $zerofill = preg_match('/ZEROFILL/i', $row['Type']);
+ $columns_cnt = 4;
+ $alignment = '|l|c|c|c|';
+ if ($do_relation && $have_rel) {
+ $columns_cnt++;
+ $alignment .= 'l|';
}
- if (!isset($row['Default'])) {
- if ($row['Null'] != 'NO') {
- $row['Default'] = 'NULL';
- }
+ if ($do_comments) {
+ $columns_cnt++;
+ $alignment .= 'l|';
}
+ if ($do_mime && $cfgRelation['mimework']) {
+ $columns_cnt++;
+ $alignment .='l|';
+ }
+ $buffer = $alignment . '} ' . $crlf ;
- $field_name = $row['Field'];
-
- $local_buffer = $field_name . "\000" . $type . "\000"
- . (($row['Null'] == '' || $row['Null'] == 'NO') ? __('No') : __('Yes'))
- . "\000" . (isset($row['Default']) ? $row['Default'] : '');
-
+ $header = ' \\hline ';
+ $header .= '\\multicolumn{1}{|c|}{\\textbf{' . __('Column') . '}} & \\multicolumn{1}{|c|}{\\textbf{' . __('Type') . '}} & \\multicolumn{1}{|c|}{\\textbf{' . __('Null') . '}} & \\multicolumn{1}{|c|}{\\textbf{' . __('Default') . '}}';
if ($do_relation && $have_rel) {
- $local_buffer .= "\000";
- if (isset($res_rel[$field_name])) {
- $local_buffer .= $res_rel[$field_name]['foreign_table'] . ' (' . $res_rel[$field_name]['foreign_field'] . ')';
- }
+ $header .= ' & \\multicolumn{1}{|c|}{\\textbf{' . __('Links to') . '}}';
}
- if ($do_comments && $cfgRelation['commwork']) {
- $local_buffer .= "\000";
- if (isset($comments[$field_name])) {
- $local_buffer .= $comments[$field_name];
- }
+ if ($do_comments) {
+ $header .= ' & \\multicolumn{1}{|c|}{\\textbf{' . __('Comments') . '}}';
+ $comments = PMA_getComments($db, $table);
}
if ($do_mime && $cfgRelation['mimework']) {
- $local_buffer .= "\000";
- if (isset($mime_map[$field_name])) {
- $local_buffer .= str_replace('_', '/', $mime_map[$field_name]['mimetype']);
- }
+ $header .= ' & \\multicolumn{1}{|c|}{\\textbf{MIME}}';
+ $mime_map = PMA_getMIME($db, $table, true);
}
- $local_buffer = PMA_texEscape($local_buffer);
- if ($row['Key']=='PRI') {
- $pos=strpos($local_buffer, "\000");
- $local_buffer = '\\textit{' . substr($local_buffer, 0, $pos) . '}' . substr($local_buffer, $pos);
+
+ // Table caption for first page and label
+ if (isset($GLOBALS['latex_caption'])) {
+ $buffer .= ' \\caption{'. PMA_expandUserString($GLOBALS['latex_structure_caption'], 'PMA_texEscape', array('table' => $table, 'database' => $db))
+ . '} \\label{' . PMA_expandUserString($GLOBALS['latex_structure_label'], NULL, array('table' => $table, 'database' => $db))
+ . '} \\\\' . $crlf;
}
- if (in_array($field_name, $unique_keys)) {
- $pos=strpos($local_buffer, "\000");
- $local_buffer = '\\textbf{' . substr($local_buffer, 0, $pos) . '}' . substr($local_buffer, $pos);
+ $buffer .= $header . ' \\\\ \\hline \\hline' . $crlf . '\\endfirsthead' . $crlf;
+ // Table caption on next pages
+ if (isset($GLOBALS['latex_caption'])) {
+ $buffer .= ' \\caption{'. PMA_expandUserString($GLOBALS['latex_structure_continued_caption'], 'PMA_texEscape', array('table' => $table, 'database' => $db))
+ . '} \\\\ ' . $crlf;
}
- $buffer = str_replace("\000", ' & ', $local_buffer);
- $buffer .= ' \\\\ \\hline ' . $crlf;
+ $buffer .= $header . ' \\\\ \\hline \\hline \\endhead \\endfoot ' . $crlf;
if (!PMA_exportOutputHandler($buffer)) {
return false;
}
- } // end while
- $buffer = ' \\end{longtable}' . $crlf;
- return PMA_exportOutputHandler($buffer);
-} // end of the 'PMA_exportStructure' function
+ $fields = PMA_DBI_get_columns($db, $table);
+ foreach ($fields as $row) {
+ $type = $row['Type'];
+ // reformat mysql query output
+ // set or enum types: slashes single quotes inside options
+ if (preg_match('/^(set|enum)\((.+)\)$/i', $type, $tmp)) {
+ $tmp[2] = substr(preg_replace('/([^,])\'\'/', '\\1\\\'', ',' . $tmp[2]), 1);
+ $type = $tmp[1] . '(' . str_replace(',', ', ', $tmp[2]) . ')';
+ $type_nowrap = '';
+
+ $binary = 0;
+ $unsigned = 0;
+ $zerofill = 0;
+ } else {
+ $type_nowrap = ' nowrap="nowrap"';
+ $type = preg_replace('/BINARY/i', '', $type);
+ $type = preg_replace('/ZEROFILL/i', '', $type);
+ $type = preg_replace('/UNSIGNED/i', '', $type);
+ if (empty($type)) {
+ $type = ' ';
+ }
+
+ $binary = preg_match('/BINARY/i', $row['Type']);
+ $unsigned = preg_match('/UNSIGNED/i', $row['Type']);
+ $zerofill = preg_match('/ZEROFILL/i', $row['Type']);
+ }
+ if (!isset($row['Default'])) {
+ if ($row['Null'] != 'NO') {
+ $row['Default'] = 'NULL';
+ }
+ }
+
+ $field_name = $row['Field'];
+
+ $local_buffer = $field_name . "\000" . $type . "\000"
+ . (($row['Null'] == '' || $row['Null'] == 'NO') ? __('No') : __('Yes'))
+ . "\000" . (isset($row['Default']) ? $row['Default'] : '');
+
+ if ($do_relation && $have_rel) {
+ $local_buffer .= "\000";
+ if (isset($res_rel[$field_name])) {
+ $local_buffer .= $res_rel[$field_name]['foreign_table'] . ' (' . $res_rel[$field_name]['foreign_field'] . ')';
+ }
+ }
+ if ($do_comments && $cfgRelation['commwork']) {
+ $local_buffer .= "\000";
+ if (isset($comments[$field_name])) {
+ $local_buffer .= $comments[$field_name];
+ }
+ }
+ if ($do_mime && $cfgRelation['mimework']) {
+ $local_buffer .= "\000";
+ if (isset($mime_map[$field_name])) {
+ $local_buffer .= str_replace('_', '/', $mime_map[$field_name]['mimetype']);
+ }
+ }
+ $local_buffer = PMA_texEscape($local_buffer);
+ if ($row['Key']=='PRI') {
+ $pos=strpos($local_buffer, "\000");
+ $local_buffer = '\\textit{' . substr($local_buffer, 0, $pos) . '}' . substr($local_buffer, $pos);
+ }
+ if (in_array($field_name, $unique_keys)) {
+ $pos=strpos($local_buffer, "\000");
+ $local_buffer = '\\textbf{' . substr($local_buffer, 0, $pos) . '}' . substr($local_buffer, $pos);
+ }
+ $buffer = str_replace("\000", ' & ', $local_buffer);
+ $buffer .= ' \\\\ \\hline ' . $crlf;
+
+ if (!PMA_exportOutputHandler($buffer)) {
+ return false;
+ }
+ } // end while
+
+ $buffer = ' \\end{longtable}' . $crlf;
+ return PMA_exportOutputHandler($buffer);
+ } // end of the 'PMA_exportStructure' function
} // end else
?>
diff --git a/libraries/export/mediawiki.php b/libraries/export/mediawiki.php
index 8ec3749..d03610d 100644
--- a/libraries/export/mediawiki.php
+++ b/libraries/export/mediawiki.php
@@ -24,136 +24,136 @@ if (isset($plugin_list)) {
);
} else {
-/**
- * Outputs export footer
- *
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportFooter() {
- return true;
-}
+ /**
+ * Outputs export footer
+ *
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportFooter() {
+ return true;
+ }
-/**
- * Outputs export header
- *
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportHeader() {
- return true;
-}
+ /**
+ * Outputs export header
+ *
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportHeader() {
+ return true;
+ }
-/**
- * Outputs database header
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBHeader($db) {
- return true;
-}
+ /**
+ * Outputs database header
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBHeader($db) {
+ return true;
+ }
-/**
- * Outputs database footer
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBFooter($db) {
- return true;
-}
+ /**
+ * Outputs database footer
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBFooter($db) {
+ return true;
+ }
-/**
- * Outputs CREATE DATABASE statement
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBCreate($db) {
- return true;
-}
+ /**
+ * Outputs CREATE DATABASE statement
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBCreate($db) {
+ return true;
+ }
-/**
- * Outputs the content of a table in MediaWiki format
- *
- * @param string $db database name
- * @param string $table table name
- * @param string $crlf the end of line sequence
- * @param string $error_url the url to go back in case of error
- * @param string $sql_query SQL query for obtaining data
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) {
- $columns = PMA_DBI_get_columns($db, $table);
- $columns = array_values($columns);
- $row_cnt = count($columns);
+ /**
+ * Outputs the content of a table in MediaWiki format
+ *
+ * @param string $db database name
+ * @param string $table table name
+ * @param string $crlf the end of line sequence
+ * @param string $error_url the url to go back in case of error
+ * @param string $sql_query SQL query for obtaining data
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) {
+ $columns = PMA_DBI_get_columns($db, $table);
+ $columns = array_values($columns);
+ $row_cnt = count($columns);
- $output = "{| cellpadding=\"10\" cellspacing=\"0\" border=\"1\" style=\"text-align:center;\"\n";
- $output .= "|+'''" . $table . "'''\n";
- $output .= "|- style=\"background:#ffdead;\"\n";
- $output .= "! style=\"background:#ffffff\" | \n";
- for ($i = 0; $i < $row_cnt; ++$i) {
- $output .= " | " . $columns[$i]['Field'];
- if (($i + 1) != $row_cnt) {
- $output .= "\n";
+ $output = "{| cellpadding=\"10\" cellspacing=\"0\" border=\"1\" style=\"text-align:center;\"\n";
+ $output .= "|+'''" . $table . "'''\n";
+ $output .= "|- style=\"background:#ffdead;\"\n";
+ $output .= "! style=\"background:#ffffff\" | \n";
+ for ($i = 0; $i < $row_cnt; ++$i) {
+ $output .= " | " . $columns[$i]['Field'];
+ if (($i + 1) != $row_cnt) {
+ $output .= "\n";
+ }
}
- }
- $output .= "\n";
+ $output .= "\n";
- $output .= "|- style=\"background:#f9f9f9;\"\n";
- $output .= "! style=\"background:#f2f2f2\" | Type\n";
- for ($i = 0; $i < $row_cnt; ++$i) {
- $output .= " | " . $columns[$i]['Type'];
- if (($i + 1) != $row_cnt) {
- $output .= "\n";
+ $output .= "|- style=\"background:#f9f9f9;\"\n";
+ $output .= "! style=\"background:#f2f2f2\" | Type\n";
+ for ($i = 0; $i < $row_cnt; ++$i) {
+ $output .= " | " . $columns[$i]['Type'];
+ if (($i + 1) != $row_cnt) {
+ $output .= "\n";
+ }
}
- }
- $output .= "\n";
+ $output .= "\n";
- $output .= "|- style=\"background:#f9f9f9;\"\n";
- $output .= "! style=\"background:#f2f2f2\" | Null\n";
- for ($i = 0; $i < $row_cnt; ++$i) {
- $output .= " | " . $columns[$i]['Null'];
- if (($i + 1) != $row_cnt) {
- $output .= "\n";
+ $output .= "|- style=\"background:#f9f9f9;\"\n";
+ $output .= "! style=\"background:#f2f2f2\" | Null\n";
+ for ($i = 0; $i < $row_cnt; ++$i) {
+ $output .= " | " . $columns[$i]['Null'];
+ if (($i + 1) != $row_cnt) {
+ $output .= "\n";
+ }
}
- }
- $output .= "\n";
+ $output .= "\n";
- $output .= "|- style=\"background:#f9f9f9;\"\n";
- $output .= "! style=\"background:#f2f2f2\" | Default\n";
- for ($i = 0; $i < $row_cnt; ++$i) {
- $output .= " | " . $columns[$i]['Default'];
- if (($i + 1) != $row_cnt) {
- $output .= "\n";
+ $output .= "|- style=\"background:#f9f9f9;\"\n";
+ $output .= "! style=\"background:#f2f2f2\" | Default\n";
+ for ($i = 0; $i < $row_cnt; ++$i) {
+ $output .= " | " . $columns[$i]['Default'];
+ if (($i + 1) != $row_cnt) {
+ $output .= "\n";
+ }
}
- }
- $output .= "\n";
+ $output .= "\n";
- $output .= "|- style=\"background:#f9f9f9;\"\n";
- $output .= "! style=\"background:#f2f2f2\" | Extra\n";
- for ($i = 0; $i < $row_cnt; ++$i) {
- $output .= " | " . $columns[$i]['Extra'];
- if (($i + 1) != $row_cnt) {
- $output .= "\n";
+ $output .= "|- style=\"background:#f9f9f9;\"\n";
+ $output .= "! style=\"background:#f2f2f2\" | Extra\n";
+ for ($i = 0; $i < $row_cnt; ++$i) {
+ $output .= " | " . $columns[$i]['Extra'];
+ if (($i + 1) != $row_cnt) {
+ $output .= "\n";
+ }
}
- }
- $output .= "\n";
+ $output .= "\n";
- $output .= "|}\n\n\n\n";
- return PMA_exportOutputHandler($output);
-}
+ $output .= "|}\n\n\n\n";
+ return PMA_exportOutputHandler($output);
+ }
}
?>
diff --git a/libraries/export/ods.php b/libraries/export/ods.php
index fa62a96..0c62878 100644
--- a/libraries/export/ods.php
+++ b/libraries/export/ods.php
@@ -30,192 +30,192 @@ if (isset($plugin_list)) {
);
} else {
-$GLOBALS['ods_buffer'] = '';
-require_once './libraries/opendocument.lib.php';
+ $GLOBALS['ods_buffer'] = '';
+ require_once './libraries/opendocument.lib.php';
-/**
- * Outputs export footer
- *
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportFooter() {
- $GLOBALS['ods_buffer'] .= '</office:spreadsheet>'
- . '</office:body>'
- . '</office:document-content>';
- if (!PMA_exportOutputHandler(PMA_createOpenDocument('application/vnd.oasis.opendocument.spreadsheet', $GLOBALS['ods_buffer']))) {
- return false;
+ /**
+ * Outputs export footer
+ *
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportFooter() {
+ $GLOBALS['ods_buffer'] .= '</office:spreadsheet>'
+ . '</office:body>'
+ . '</office:document-content>';
+ if (!PMA_exportOutputHandler(PMA_createOpenDocument('application/vnd.oasis.opendocument.spreadsheet', $GLOBALS['ods_buffer']))) {
+ return false;
+ }
+ return true;
}
- return true;
-}
-
-/**
- * Outputs export header
- *
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportHeader() {
- $GLOBALS['ods_buffer'] .= '<?xml version="1.0" encoding="utf-8"?' . '>'
- . '<office:document-content '. $GLOBALS['OpenDocumentNS'] . 'office:version="1.0">'
- . '<office:automatic-styles>'
- . '<number:date-style style:name="N37" number:automatic-order="true">'
- . '<number:month number:style="long"/>'
- . '<number:text>/</number:text>'
- . '<number:day number:style="long"/>'
- . '<number:text>/</number:text>'
- . '<number:year/>'
- . '</number:date-style>'
- . '<number:time-style style:name="N43">'
- . '<number:hours number:style="long"/>'
- . '<number:text>:</number:text>'
- . '<number:minutes number:style="long"/>'
- . '<number:text>:</number:text>'
- . '<number:seconds number:style="long"/>'
- . '<number:text> </number:text>'
- . '<number:am-pm/>'
- . '</number:time-style>'
- . '<number:date-style style:name="N50" number:automatic-order="true" number:format-source="language">'
- . '<number:month/>'
- . '<number:text>/</number:text>'
- . '<number:day/>'
- . '<number:text>/</number:text>'
- . '<number:year/>'
- . '<number:text> </number:text>'
- . '<number:hours number:style="long"/>'
- . '<number:text>:</number:text>'
- . '<number:minutes number:style="long"/>'
- . '<number:text> </number:text>'
- . '<number:am-pm/>'
- . '</number:date-style>'
- . '<style:style style:name="DateCell" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N37"/>'
- . '<style:style style:name="TimeCell" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N43"/>'
- . '<style:style style:name="DateTimeCell" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N50"/>'
- . '</office:automatic-styles>'
- . '<office:body>'
- . '<office:spreadsheet>';
- return true;
-}
-
-/**
- * Outputs database header
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBHeader($db) {
- return true;
-}
-
-/**
- * Outputs database footer
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBFooter($db) {
- return true;
-}
-/**
- * Outputs CREATE DATABASE statement
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBCreate($db) {
- return true;
-}
+ /**
+ * Outputs export header
+ *
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportHeader() {
+ $GLOBALS['ods_buffer'] .= '<?xml version="1.0" encoding="utf-8"?' . '>'
+ . '<office:document-content '. $GLOBALS['OpenDocumentNS'] . 'office:version="1.0">'
+ . '<office:automatic-styles>'
+ . '<number:date-style style:name="N37" number:automatic-order="true">'
+ . '<number:month number:style="long"/>'
+ . '<number:text>/</number:text>'
+ . '<number:day number:style="long"/>'
+ . '<number:text>/</number:text>'
+ . '<number:year/>'
+ . '</number:date-style>'
+ . '<number:time-style style:name="N43">'
+ . '<number:hours number:style="long"/>'
+ . '<number:text>:</number:text>'
+ . '<number:minutes number:style="long"/>'
+ . '<number:text>:</number:text>'
+ . '<number:seconds number:style="long"/>'
+ . '<number:text> </number:text>'
+ . '<number:am-pm/>'
+ . '</number:time-style>'
+ . '<number:date-style style:name="N50" number:automatic-order="true" number:format-source="language">'
+ . '<number:month/>'
+ . '<number:text>/</number:text>'
+ . '<number:day/>'
+ . '<number:text>/</number:text>'
+ . '<number:year/>'
+ . '<number:text> </number:text>'
+ . '<number:hours number:style="long"/>'
+ . '<number:text>:</number:text>'
+ . '<number:minutes number:style="long"/>'
+ . '<number:text> </number:text>'
+ . '<number:am-pm/>'
+ . '</number:date-style>'
+ . '<style:style style:name="DateCell" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N37"/>'
+ . '<style:style style:name="TimeCell" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N43"/>'
+ . '<style:style style:name="DateTimeCell" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N50"/>'
+ . '</office:automatic-styles>'
+ . '<office:body>'
+ . '<office:spreadsheet>';
+ return true;
+ }
-/**
- * Outputs the content of a table in ODS format
- *
- * @param string $db database name
- * @param string $table table name
- * @param string $crlf the end of line sequence
- * @param string $error_url the url to go back in case of error
- * @param string $sql_query SQL query for obtaining data
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) {
- global $what;
+ /**
+ * Outputs database header
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBHeader($db) {
+ return true;
+ }
- // Gets the data from the database
- $result = PMA_DBI_query($sql_query, null, PMA_DBI_QUERY_UNBUFFERED);
- $fields_cnt = PMA_DBI_num_fields($result);
- $fields_meta = PMA_DBI_get_fields_meta($result);
- $field_flags = array();
- for ($j = 0; $j < $fields_cnt; $j++) {
- $field_flags[$j] = PMA_DBI_field_flags($result, $j);
+ /**
+ * Outputs database footer
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBFooter($db) {
+ return true;
}
- $GLOBALS['ods_buffer'] .= '<table:table table:name="' . htmlspecialchars($table) . '">';
+ /**
+ * Outputs CREATE DATABASE statement
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBCreate($db) {
+ return true;
+ }
- // If required, get fields name at the first line
- if (isset($GLOBALS[$what . '_columns'])) {
- $GLOBALS['ods_buffer'] .= '<table:table-row>';
- for ($i = 0; $i < $fields_cnt; $i++) {
- $GLOBALS['ods_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars(stripslashes(PMA_DBI_field_name($result, $i))) . '</text:p>'
- . '</table:table-cell>';
- } // end for
- $GLOBALS['ods_buffer'] .= '</table:table-row>';
- } // end if
+ /**
+ * Outputs the content of a table in ODS format
+ *
+ * @param string $db database name
+ * @param string $table table name
+ * @param string $crlf the end of line sequence
+ * @param string $error_url the url to go back in case of error
+ * @param string $sql_query SQL query for obtaining data
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) {
+ global $what;
- // Format the data
- while ($row = PMA_DBI_fetch_row($result)) {
- $GLOBALS['ods_buffer'] .= '<table:table-row>';
+ // Gets the data from the database
+ $result = PMA_DBI_query($sql_query, null, PMA_DBI_QUERY_UNBUFFERED);
+ $fields_cnt = PMA_DBI_num_fields($result);
+ $fields_meta = PMA_DBI_get_fields_meta($result);
+ $field_flags = array();
for ($j = 0; $j < $fields_cnt; $j++) {
- if (!isset($row[$j]) || is_null($row[$j])) {
- $GLOBALS['ods_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars($GLOBALS[$what . '_null']) . '</text:p>'
- . '</table:table-cell>';
- // ignore BLOB
- } elseif (stristr($field_flags[$j], 'BINARY')
- && $fields_meta[$j]->blob) {
- $GLOBALS['ods_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p></text:p>'
- . '</table:table-cell>';
- } elseif ($fields_meta[$j]->type == "date") {
- $GLOBALS['ods_buffer'] .= '<table:table-cell office:value-type="date" office:date-value="' . date("Y-m-d", strtotime($row[$j])) . '" table:style-name="DateCell">'
- . '<text:p>' . htmlspecialchars($row[$j]) . '</text:p>'
- . '</table:table-cell>';
- } elseif ($fields_meta[$j]->type == "time") {
- $GLOBALS['ods_buffer'] .= '<table:table-cell office:value-type="time" office:time-value="' . date("\P\TH\Hi\Ms\S", strtotime($row[$j])) . '" table:style-name="TimeCell">'
- . '<text:p>' . htmlspecialchars($row[$j]) . '</text:p>'
- . '</table:table-cell>';
- } elseif ($fields_meta[$j]->type == "datetime") {
- $GLOBALS['ods_buffer'] .= '<table:table-cell office:value-type="date" office:date-value="' . date("Y-m-d\TH:i:s", strtotime($row[$j])) . '" table:style-name="DateTimeCell">'
- . '<text:p>' . htmlspecialchars($row[$j]) . '</text:p>'
- . '</table:table-cell>';
- } elseif ($fields_meta[$j]->numeric && $fields_meta[$j]->type != 'timestamp' && ! $fields_meta[$j]->blob) {
- $GLOBALS['ods_buffer'] .= '<table:table-cell office:value-type="float" office:value="' . $row[$j] . '" >'
- . '<text:p>' . htmlspecialchars($row[$j]) . '</text:p>'
- . '</table:table-cell>';
- } else {
+ $field_flags[$j] = PMA_DBI_field_flags($result, $j);
+ }
+
+ $GLOBALS['ods_buffer'] .= '<table:table table:name="' . htmlspecialchars($table) . '">';
+
+ // If required, get fields name at the first line
+ if (isset($GLOBALS[$what . '_columns'])) {
+ $GLOBALS['ods_buffer'] .= '<table:table-row>';
+ for ($i = 0; $i < $fields_cnt; $i++) {
$GLOBALS['ods_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars($row[$j]) . '</text:p>'
+ . '<text:p>' . htmlspecialchars(stripslashes(PMA_DBI_field_name($result, $i))) . '</text:p>'
. '</table:table-cell>';
- }
- } // end for
- $GLOBALS['ods_buffer'] .= '</table:table-row>';
- } // end while
- PMA_DBI_free_result($result);
+ } // end for
+ $GLOBALS['ods_buffer'] .= '</table:table-row>';
+ } // end if
- $GLOBALS['ods_buffer'] .= '</table:table>';
+ // Format the data
+ while ($row = PMA_DBI_fetch_row($result)) {
+ $GLOBALS['ods_buffer'] .= '<table:table-row>';
+ for ($j = 0; $j < $fields_cnt; $j++) {
+ if (!isset($row[$j]) || is_null($row[$j])) {
+ $GLOBALS['ods_buffer'] .= '<table:table-cell office:value-type="string">'
+ . '<text:p>' . htmlspecialchars($GLOBALS[$what . '_null']) . '</text:p>'
+ . '</table:table-cell>';
+ // ignore BLOB
+ } elseif (stristr($field_flags[$j], 'BINARY')
+ && $fields_meta[$j]->blob) {
+ $GLOBALS['ods_buffer'] .= '<table:table-cell office:value-type="string">'
+ . '<text:p></text:p>'
+ . '</table:table-cell>';
+ } elseif ($fields_meta[$j]->type == "date") {
+ $GLOBALS['ods_buffer'] .= '<table:table-cell office:value-type="date" office:date-value="' . date("Y-m-d", strtotime($row[$j])) . '" table:style-name="DateCell">'
+ . '<text:p>' . htmlspecialchars($row[$j]) . '</text:p>'
+ . '</table:table-cell>';
+ } elseif ($fields_meta[$j]->type == "time") {
+ $GLOBALS['ods_buffer'] .= '<table:table-cell office:value-type="time" office:time-value="' . date("\P\TH\Hi\Ms\S", strtotime($row[$j])) . '" table:style-name="TimeCell">'
+ . '<text:p>' . htmlspecialchars($row[$j]) . '</text:p>'
+ . '</table:table-cell>';
+ } elseif ($fields_meta[$j]->type == "datetime") {
+ $GLOBALS['ods_buffer'] .= '<table:table-cell office:value-type="date" office:date-value="' . date("Y-m-d\TH:i:s", strtotime($row[$j])) . '" table:style-name="DateTimeCell">'
+ . '<text:p>' . htmlspecialchars($row[$j]) . '</text:p>'
+ . '</table:table-cell>';
+ } elseif ($fields_meta[$j]->numeric && $fields_meta[$j]->type != 'timestamp' && ! $fields_meta[$j]->blob) {
+ $GLOBALS['ods_buffer'] .= '<table:table-cell office:value-type="float" office:value="' . $row[$j] . '" >'
+ . '<text:p>' . htmlspecialchars($row[$j]) . '</text:p>'
+ . '</table:table-cell>';
+ } else {
+ $GLOBALS['ods_buffer'] .= '<table:table-cell office:value-type="string">'
+ . '<text:p>' . htmlspecialchars($row[$j]) . '</text:p>'
+ . '</table:table-cell>';
+ }
+ } // end for
+ $GLOBALS['ods_buffer'] .= '</table:table-row>';
+ } // end while
+ PMA_DBI_free_result($result);
- return true;
-}
+ $GLOBALS['ods_buffer'] .= '</table:table>';
+
+ return true;
+ }
}
?>
diff --git a/libraries/export/odt.php b/libraries/export/odt.php
index dba6e1c..e02f8a6 100644
--- a/libraries/export/odt.php
+++ b/libraries/export/odt.php
@@ -62,345 +62,345 @@ if (isset($plugin_list)) {
array('type' => 'end_group');
} else {
-$GLOBALS['odt_buffer'] = '';
-require_once './libraries/opendocument.lib.php';
+ $GLOBALS['odt_buffer'] = '';
+ require_once './libraries/opendocument.lib.php';
-/**
- * Outputs export footer
- *
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportFooter() {
- $GLOBALS['odt_buffer'] .= '</office:text>'
- . '</office:body>'
- . '</office:document-content>';
- if (!PMA_exportOutputHandler(PMA_createOpenDocument('application/vnd.oasis.opendocument.text', $GLOBALS['odt_buffer']))) {
- return false;
+ /**
+ * Outputs export footer
+ *
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportFooter() {
+ $GLOBALS['odt_buffer'] .= '</office:text>'
+ . '</office:body>'
+ . '</office:document-content>';
+ if (!PMA_exportOutputHandler(PMA_createOpenDocument('application/vnd.oasis.opendocument.text', $GLOBALS['odt_buffer']))) {
+ return false;
+ }
+ return true;
}
- return true;
-}
-
-/**
- * Outputs export header
- *
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportHeader() {
- $GLOBALS['odt_buffer'] .= '<?xml version="1.0" encoding="utf-8"?' . '>'
- . '<office:document-content '. $GLOBALS['OpenDocumentNS'] . 'office:version="1.0">'
- . '<office:body>'
- . '<office:text>';
- return true;
-}
-
-/**
- * Outputs database header
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBHeader($db) {
- $GLOBALS['odt_buffer'] .= '<text:h text:outline-level="1" text:style-name="Heading_1" text:is-list-header="true">' . htmlspecialchars(__('Database') . ' ' . $db) . '</text:h>';
- return true;
-}
-
-/**
- * Outputs database footer
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBFooter($db) {
- return true;
-}
-/**
- * Outputs CREATE DATABASE statement
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBCreate($db) {
- return true;
-}
+ /**
+ * Outputs export header
+ *
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportHeader() {
+ $GLOBALS['odt_buffer'] .= '<?xml version="1.0" encoding="utf-8"?' . '>'
+ . '<office:document-content '. $GLOBALS['OpenDocumentNS'] . 'office:version="1.0">'
+ . '<office:body>'
+ . '<office:text>';
+ return true;
+ }
-/**
- * Outputs the content of a table in ODT format
- *
- * @param string $db database name
- * @param string $table table name
- * @param string $crlf the end of line sequence
- * @param string $error_url the url to go back in case of error
- * @param string $sql_query SQL query for obtaining data
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) {
- global $what;
+ /**
+ * Outputs database header
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBHeader($db) {
+ $GLOBALS['odt_buffer'] .= '<text:h text:outline-level="1" text:style-name="Heading_1" text:is-list-header="true">' . htmlspecialchars(__('Database') . ' ' . $db) . '</text:h>';
+ return true;
+ }
- // Gets the data from the database
- $result = PMA_DBI_query($sql_query, null, PMA_DBI_QUERY_UNBUFFERED);
- $fields_cnt = PMA_DBI_num_fields($result);
- $fields_meta = PMA_DBI_get_fields_meta($result);
- $field_flags = array();
- for ($j = 0; $j < $fields_cnt; $j++) {
- $field_flags[$j] = PMA_DBI_field_flags($result, $j);
+ /**
+ * Outputs database footer
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBFooter($db) {
+ return true;
}
- $GLOBALS['odt_buffer'] .= '<text:h text:outline-level="2" text:style-name="Heading_2" text:is-list-header="true">' . htmlspecialchars(__('Dumping data for table') . ' ' . $table) . '</text:h>';
- $GLOBALS['odt_buffer'] .= '<table:table table:name="' . htmlspecialchars($table) . '_structure">';
- $GLOBALS['odt_buffer'] .= '<table:table-column table:number-columns-repeated="' . $fields_cnt . '"/>';
+ /**
+ * Outputs CREATE DATABASE statement
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBCreate($db) {
+ return true;
+ }
- // If required, get fields name at the first line
- if (isset($GLOBALS[$what . '_columns'])) {
- $GLOBALS['odt_buffer'] .= '<table:table-row>';
- for ($i = 0; $i < $fields_cnt; $i++) {
- $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars(stripslashes(PMA_DBI_field_name($result, $i))) . '</text:p>'
- . '</table:table-cell>';
- } // end for
- $GLOBALS['odt_buffer'] .= '</table:table-row>';
- } // end if
+ /**
+ * Outputs the content of a table in ODT format
+ *
+ * @param string $db database name
+ * @param string $table table name
+ * @param string $crlf the end of line sequence
+ * @param string $error_url the url to go back in case of error
+ * @param string $sql_query SQL query for obtaining data
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) {
+ global $what;
- // Format the data
- while ($row = PMA_DBI_fetch_row($result)) {
- $GLOBALS['odt_buffer'] .= '<table:table-row>';
+ // Gets the data from the database
+ $result = PMA_DBI_query($sql_query, null, PMA_DBI_QUERY_UNBUFFERED);
+ $fields_cnt = PMA_DBI_num_fields($result);
+ $fields_meta = PMA_DBI_get_fields_meta($result);
+ $field_flags = array();
for ($j = 0; $j < $fields_cnt; $j++) {
- if (!isset($row[$j]) || is_null($row[$j])) {
- $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars($GLOBALS[$what . '_null']) . '</text:p>'
- . '</table:table-cell>';
- // ignore BLOB
- } elseif (stristr($field_flags[$j], 'BINARY')
- && $fields_meta[$j]->blob) {
- $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p></text:p>'
- . '</table:table-cell>';
- } elseif ($fields_meta[$j]->numeric && $fields_meta[$j]->type != 'timestamp' && ! $fields_meta[$j]->blob) {
- $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="float" office:value="' . $row[$j] . '" >'
- . '<text:p>' . htmlspecialchars($row[$j]) . '</text:p>'
- . '</table:table-cell>';
- } else {
+ $field_flags[$j] = PMA_DBI_field_flags($result, $j);
+ }
+
+ $GLOBALS['odt_buffer'] .= '<text:h text:outline-level="2" text:style-name="Heading_2" text:is-list-header="true">' . htmlspecialchars(__('Dumping data for table') . ' ' . $table) . '</text:h>';
+ $GLOBALS['odt_buffer'] .= '<table:table table:name="' . htmlspecialchars($table) . '_structure">';
+ $GLOBALS['odt_buffer'] .= '<table:table-column table:number-columns-repeated="' . $fields_cnt . '"/>';
+
+ // If required, get fields name at the first line
+ if (isset($GLOBALS[$what . '_columns'])) {
+ $GLOBALS['odt_buffer'] .= '<table:table-row>';
+ for ($i = 0; $i < $fields_cnt; $i++) {
$GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars($row[$j]) . '</text:p>'
+ . '<text:p>' . htmlspecialchars(stripslashes(PMA_DBI_field_name($result, $i))) . '</text:p>'
. '</table:table-cell>';
- }
- } // end for
- $GLOBALS['odt_buffer'] .= '</table:table-row>';
- } // end while
- PMA_DBI_free_result($result);
+ } // end for
+ $GLOBALS['odt_buffer'] .= '</table:table-row>';
+ } // end if
- $GLOBALS['odt_buffer'] .= '</table:table>';
+ // Format the data
+ while ($row = PMA_DBI_fetch_row($result)) {
+ $GLOBALS['odt_buffer'] .= '<table:table-row>';
+ for ($j = 0; $j < $fields_cnt; $j++) {
+ if (!isset($row[$j]) || is_null($row[$j])) {
+ $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
+ . '<text:p>' . htmlspecialchars($GLOBALS[$what . '_null']) . '</text:p>'
+ . '</table:table-cell>';
+ // ignore BLOB
+ } elseif (stristr($field_flags[$j], 'BINARY')
+ && $fields_meta[$j]->blob) {
+ $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
+ . '<text:p></text:p>'
+ . '</table:table-cell>';
+ } elseif ($fields_meta[$j]->numeric && $fields_meta[$j]->type != 'timestamp' && ! $fields_meta[$j]->blob) {
+ $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="float" office:value="' . $row[$j] . '" >'
+ . '<text:p>' . htmlspecialchars($row[$j]) . '</text:p>'
+ . '</table:table-cell>';
+ } else {
+ $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
+ . '<text:p>' . htmlspecialchars($row[$j]) . '</text:p>'
+ . '</table:table-cell>';
+ }
+ } // end for
+ $GLOBALS['odt_buffer'] .= '</table:table-row>';
+ } // end while
+ PMA_DBI_free_result($result);
- return true;
-}
+ $GLOBALS['odt_buffer'] .= '</table:table>';
-/**
- * Outputs table's structure
- *
- * @param string $db database name
- * @param string $table table name
- * @param string $crlf the end of line sequence
- * @param string $error_url the url to go back in case of error
- * @param bool $do_relation whether to include relation comments
- * @param bool $do_comments whether to include the pmadb-style column comments
- * as comments in the structure; this is deprecated
- * but the parameter is left here because export.php
- * calls PMA_exportStructure() also for other export
- * types which use this parameter
- * @param bool $do_mime whether to include mime comments
- * @param bool $dates whether to include creation/update/check dates
- * @param string $export_mode 'create_table', 'triggers', 'create_view', 'stand_in'
- * @param string $export_type 'server', 'database', 'table'
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportStructure($db, $table, $crlf, $error_url, $do_relation = false, $do_comments = false, $do_mime = false, $dates = false, $export_mode, $export_type)
-{
- global $cfgRelation;
-
- /* Heading */
- $GLOBALS['odt_buffer'] .= '<text:h text:outline-level="2" text:style-name="Heading_2" text:is-list-header="true">' . htmlspecialchars(__('Table structure for table') . ' ' . $table) . '</text:h>';
-
- /**
- * Get the unique keys in the table
- */
- $keys_query = 'SHOW KEYS FROM ' . PMA_backquote($table) . ' FROM '. PMA_backquote($db);
- $keys_result = PMA_DBI_query($keys_query);
- $unique_keys = array();
- while ($key = PMA_DBI_fetch_assoc($keys_result)) {
- if ($key['Non_unique'] == 0) {
- $unique_keys[] = $key['Column_name'];
- }
+ return true;
}
- PMA_DBI_free_result($keys_result);
/**
- * Gets fields properties
+ * Outputs table's structure
+ *
+ * @param string $db database name
+ * @param string $table table name
+ * @param string $crlf the end of line sequence
+ * @param string $error_url the url to go back in case of error
+ * @param bool $do_relation whether to include relation comments
+ * @param bool $do_comments whether to include the pmadb-style column comments
+ * as comments in the structure; this is deprecated
+ * but the parameter is left here because export.php
+ * calls PMA_exportStructure() also for other export
+ * types which use this parameter
+ * @param bool $do_mime whether to include mime comments
+ * @param bool $dates whether to include creation/update/check dates
+ * @param string $export_mode 'create_table', 'triggers', 'create_view', 'stand_in'
+ * @param string $export_type 'server', 'database', 'table'
+ * @return bool Whether it suceeded
+ *
+ * @access public
*/
- PMA_DBI_select_db($db);
+ function PMA_exportStructure($db, $table, $crlf, $error_url, $do_relation = false, $do_comments = false, $do_mime = false, $dates = false, $export_mode, $export_type)
+ {
+ global $cfgRelation;
- // Check if we can use Relations
- if ($do_relation && !empty($cfgRelation['relation'])) {
- // Find which tables are related with the current one and write it in
- // an array
- $res_rel = PMA_getForeigners($db, $table);
+ /* Heading */
+ $GLOBALS['odt_buffer'] .= '<text:h text:outline-level="2" text:style-name="Heading_2" text:is-list-header="true">' . htmlspecialchars(__('Table structure for table') . ' ' . $table) . '</text:h>';
- if ($res_rel && count($res_rel) > 0) {
- $have_rel = true;
- } else {
- $have_rel = false;
+ /**
+ * Get the unique keys in the table
+ */
+ $keys_query = 'SHOW KEYS FROM ' . PMA_backquote($table) . ' FROM '. PMA_backquote($db);
+ $keys_result = PMA_DBI_query($keys_query);
+ $unique_keys = array();
+ while ($key = PMA_DBI_fetch_assoc($keys_result)) {
+ if ($key['Non_unique'] == 0) {
+ $unique_keys[] = $key['Column_name'];
+ }
}
- } else {
- $have_rel = false;
- } // end if
+ PMA_DBI_free_result($keys_result);
- /**
- * Displays the table structure
- */
- $GLOBALS['odt_buffer'] .= '<table:table table:name="' . htmlspecialchars($table) . '_data">';
- $columns_cnt = 4;
- if ($do_relation && $have_rel) {
- $columns_cnt++;
- }
- if ($do_comments) {
- $columns_cnt++;
- }
- if ($do_mime && $cfgRelation['mimework']) {
- $columns_cnt++;
- }
- $GLOBALS['odt_buffer'] .= '<table:table-column table:number-columns-repeated="' . $columns_cnt . '"/>';
- /* Header */
- $GLOBALS['odt_buffer'] .= '<table:table-row>';
- $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars(__('Column')) . '</text:p>'
- . '</table:table-cell>';
- $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars(__('Type')) . '</text:p>'
- . '</table:table-cell>';
- $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars(__('Null')) . '</text:p>'
- . '</table:table-cell>';
- $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars(__('Default')) . '</text:p>'
- . '</table:table-cell>';
- if ($do_relation && $have_rel) {
- $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars(__('Links to')) . '</text:p>'
- . '</table:table-cell>';
- }
- if ($do_comments) {
- $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars(__('Comments')) . '</text:p>'
- . '</table:table-cell>';
- $comments = PMA_getComments($db, $table);
- }
- if ($do_mime && $cfgRelation['mimework']) {
- $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars(__('MIME type')) . '</text:p>'
- . '</table:table-cell>';
- $mime_map = PMA_getMIME($db, $table, true);
- }
- $GLOBALS['odt_buffer'] .= '</table:table-row>';
+ /**
+ * Gets fields properties
+ */
+ PMA_DBI_select_db($db);
- $columns = PMA_DBI_get_columns($db, $table);
- foreach ($columns as $column) {
+ // Check if we can use Relations
+ if ($do_relation && !empty($cfgRelation['relation'])) {
+ // Find which tables are related with the current one and write it in
+ // an array
+ $res_rel = PMA_getForeigners($db, $table);
- $field_name = $column['Field'];
- $GLOBALS['odt_buffer'] .= '<table:table-row>';
- $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars($field_name) . '</text:p>'
- . '</table:table-cell>';
- // reformat mysql query output
- // set or enum types: slashes single quotes inside options
- $type = $column['Type'];
- if (preg_match('/^(set|enum)\((.+)\)$/i', $type, $tmp)) {
- $tmp[2] = substr(preg_replace('/([^,])\'\'/', '\\1\\\'', ',' . $tmp[2]), 1);
- $type = $tmp[1] . '(' . str_replace(',', ', ', $tmp[2]) . ')';
- $type_nowrap = '';
-
- $binary = 0;
- $unsigned = 0;
- $zerofill = 0;
- } else {
- $type_nowrap = ' nowrap="nowrap"';
- $type = preg_replace('/BINARY/i', '', $type);
- $type = preg_replace('/ZEROFILL/i', '', $type);
- $type = preg_replace('/UNSIGNED/i', '', $type);
- if (empty($type)) {
- $type = ' ';
+ if ($res_rel && count($res_rel) > 0) {
+ $have_rel = true;
+ } else {
+ $have_rel = false;
}
+ } else {
+ $have_rel = false;
+ } // end if
- $binary = preg_match('/BINARY/i', $column['Type']);
- $unsigned = preg_match('/UNSIGNED/i', $column['Type']);
- $zerofill = preg_match('/ZEROFILL/i', $column['Type']);
+ /**
+ * Displays the table structure
+ */
+ $GLOBALS['odt_buffer'] .= '<table:table table:name="' . htmlspecialchars($table) . '_data">';
+ $columns_cnt = 4;
+ if ($do_relation && $have_rel) {
+ $columns_cnt++;
+ }
+ if ($do_comments) {
+ $columns_cnt++;
}
+ if ($do_mime && $cfgRelation['mimework']) {
+ $columns_cnt++;
+ }
+ $GLOBALS['odt_buffer'] .= '<table:table-column table:number-columns-repeated="' . $columns_cnt . '"/>';
+ /* Header */
+ $GLOBALS['odt_buffer'] .= '<table:table-row>';
$GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars($type) . '</text:p>'
+ . '<text:p>' . htmlspecialchars(__('Column')) . '</text:p>'
. '</table:table-cell>';
- if (!isset($column['Default'])) {
- if ($column['Null'] != 'NO') {
- $column['Default'] = 'NULL';
- } else {
- $column['Default'] = '';
- }
- } else {
- $column['Default'] = $column['Default'];
- }
$GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars(($column['Null'] == '' || $column['Null'] == 'NO') ? __('No') : __('Yes')) . '</text:p>'
+ . '<text:p>' . htmlspecialchars(__('Type')) . '</text:p>'
. '</table:table-cell>';
$GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars($column['Default']) . '</text:p>'
+ . '<text:p>' . htmlspecialchars(__('Null')) . '</text:p>'
+ . '</table:table-cell>';
+ $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
+ . '<text:p>' . htmlspecialchars(__('Default')) . '</text:p>'
. '</table:table-cell>';
-
if ($do_relation && $have_rel) {
- if (isset($res_rel[$field_name])) {
- $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars($res_rel[$field_name]['foreign_table'] . ' (' . $res_rel[$field_name]['foreign_field'] . ')') . '</text:p>'
- . '</table:table-cell>';
- }
+ $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
+ . '<text:p>' . htmlspecialchars(__('Links to')) . '</text:p>'
+ . '</table:table-cell>';
}
if ($do_comments) {
- if (isset($comments[$field_name])) {
- $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars($comments[$field_name]) . '</text:p>'
- . '</table:table-cell>';
- } else {
- $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p></text:p>'
- . '</table:table-cell>';
- }
+ $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
+ . '<text:p>' . htmlspecialchars(__('Comments')) . '</text:p>'
+ . '</table:table-cell>';
+ $comments = PMA_getComments($db, $table);
}
if ($do_mime && $cfgRelation['mimework']) {
- if (isset($mime_map[$field_name])) {
- $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p>' . htmlspecialchars(str_replace('_', '/', $mime_map[$field_name]['mimetype'])) . '</text:p>'
- . '</table:table-cell>';
- } else {
- $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
- . '<text:p></text:p>'
- . '</table:table-cell>';
- }
+ $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
+ . '<text:p>' . htmlspecialchars(__('MIME type')) . '</text:p>'
+ . '</table:table-cell>';
+ $mime_map = PMA_getMIME($db, $table, true);
}
$GLOBALS['odt_buffer'] .= '</table:table-row>';
- } // end while
- $GLOBALS['odt_buffer'] .= '</table:table>';
- return true;
-} // end of the 'PMA_exportStructure' function
+ $columns = PMA_DBI_get_columns($db, $table);
+ foreach ($columns as $column) {
+
+ $field_name = $column['Field'];
+ $GLOBALS['odt_buffer'] .= '<table:table-row>';
+ $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
+ . '<text:p>' . htmlspecialchars($field_name) . '</text:p>'
+ . '</table:table-cell>';
+ // reformat mysql query output
+ // set or enum types: slashes single quotes inside options
+ $type = $column['Type'];
+ if (preg_match('/^(set|enum)\((.+)\)$/i', $type, $tmp)) {
+ $tmp[2] = substr(preg_replace('/([^,])\'\'/', '\\1\\\'', ',' . $tmp[2]), 1);
+ $type = $tmp[1] . '(' . str_replace(',', ', ', $tmp[2]) . ')';
+ $type_nowrap = '';
+
+ $binary = 0;
+ $unsigned = 0;
+ $zerofill = 0;
+ } else {
+ $type_nowrap = ' nowrap="nowrap"';
+ $type = preg_replace('/BINARY/i', '', $type);
+ $type = preg_replace('/ZEROFILL/i', '', $type);
+ $type = preg_replace('/UNSIGNED/i', '', $type);
+ if (empty($type)) {
+ $type = ' ';
+ }
+
+ $binary = preg_match('/BINARY/i', $column['Type']);
+ $unsigned = preg_match('/UNSIGNED/i', $column['Type']);
+ $zerofill = preg_match('/ZEROFILL/i', $column['Type']);
+ }
+ $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
+ . '<text:p>' . htmlspecialchars($type) . '</text:p>'
+ . '</table:table-cell>';
+ if (!isset($column['Default'])) {
+ if ($column['Null'] != 'NO') {
+ $column['Default'] = 'NULL';
+ } else {
+ $column['Default'] = '';
+ }
+ } else {
+ $column['Default'] = $column['Default'];
+ }
+ $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
+ . '<text:p>' . htmlspecialchars(($column['Null'] == '' || $column['Null'] == 'NO') ? __('No') : __('Yes')) . '</text:p>'
+ . '</table:table-cell>';
+ $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
+ . '<text:p>' . htmlspecialchars($column['Default']) . '</text:p>'
+ . '</table:table-cell>';
+
+ if ($do_relation && $have_rel) {
+ if (isset($res_rel[$field_name])) {
+ $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
+ . '<text:p>' . htmlspecialchars($res_rel[$field_name]['foreign_table'] . ' (' . $res_rel[$field_name]['foreign_field'] . ')') . '</text:p>'
+ . '</table:table-cell>';
+ }
+ }
+ if ($do_comments) {
+ if (isset($comments[$field_name])) {
+ $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
+ . '<text:p>' . htmlspecialchars($comments[$field_name]) . '</text:p>'
+ . '</table:table-cell>';
+ } else {
+ $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
+ . '<text:p></text:p>'
+ . '</table:table-cell>';
+ }
+ }
+ if ($do_mime && $cfgRelation['mimework']) {
+ if (isset($mime_map[$field_name])) {
+ $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
+ . '<text:p>' . htmlspecialchars(str_replace('_', '/', $mime_map[$field_name]['mimetype'])) . '</text:p>'
+ . '</table:table-cell>';
+ } else {
+ $GLOBALS['odt_buffer'] .= '<table:table-cell office:value-type="string">'
+ . '<text:p></text:p>'
+ . '</table:table-cell>';
+ }
+ }
+ $GLOBALS['odt_buffer'] .= '</table:table-row>';
+ } // end while
+
+ $GLOBALS['odt_buffer'] .= '</table:table>';
+ return true;
+ } // end of the 'PMA_exportStructure' function
} // end else
?>
diff --git a/libraries/export/pdf.php b/libraries/export/pdf.php
index 01ffc88..3cc0acf 100644
--- a/libraries/export/pdf.php
+++ b/libraries/export/pdf.php
@@ -30,441 +30,441 @@ if (isset($plugin_list)) {
);
} else {
-/**
- * Font used in PDF.
- *
- * @todo Make this configuratble (at least Sans/Serif).
- */
-define('PMA_PDF_FONT', 'DejaVuSans');
-require_once './libraries/tcpdf/tcpdf.php';
+ /**
+ * Font used in PDF.
+ *
+ * @todo Make this configuratble (at least Sans/Serif).
+ */
+ define('PMA_PDF_FONT', 'DejaVuSans');
+ require_once './libraries/tcpdf/tcpdf.php';
+
+ /**
+ * Adapted from a LGPL script by Philip Clarke
+ * @package phpMyAdmin-Export
+ * @subpackage PDF
+ */
+ class PMA_PDF extends TCPDF
+ {
+ var $tablewidths;
+ var $headerset;
+ var $footerset;
-/**
- * Adapted from a LGPL script by Philip Clarke
- * @package phpMyAdmin-Export
- * @subpackage PDF
- */
-class PMA_PDF extends TCPDF
-{
- var $tablewidths;
- var $headerset;
- var $footerset;
-
- function checkPageBreak($h=0, $y='', $addpage=true) {
- if ($this->empty_string($y)) {
- $y = $this->y;
- }
- $current_page = $this->page;
- if ((($y + $h) > $this->PageBreakTrigger) AND (!$this->InFooter) AND ($this->AcceptPageBreak())) {
- if ($addpage) {
- //Automatic page break
- $x = $this->x;
- $this->AddPage($this->CurOrientation);
- $this->y = $this->dataY;
- $oldpage = $this->page - 1;
- if ($this->rtl) {
- if ($this->pagedim[$this->page]['orm'] != $this->pagedim[$oldpage]['orm']) {
- $this->x = $x - ($this->pagedim[$this->page]['orm'] - $this->pagedim[$oldpage]['orm']);
- } else {
- $this->x = $x;
- }
- } else {
- if ($this->pagedim[$this->page]['olm'] != $this->pagedim[$oldpage]['olm']) {
- $this->x = $x + ($this->pagedim[$this->page]['olm'] - $this->pagedim[$oldpage]['olm']);
+ function checkPageBreak($h=0, $y='', $addpage=true) {
+ if ($this->empty_string($y)) {
+ $y = $this->y;
+ }
+ $current_page = $this->page;
+ if ((($y + $h) > $this->PageBreakTrigger) AND (!$this->InFooter) AND ($this->AcceptPageBreak())) {
+ if ($addpage) {
+ //Automatic page break
+ $x = $this->x;
+ $this->AddPage($this->CurOrientation);
+ $this->y = $this->dataY;
+ $oldpage = $this->page - 1;
+ if ($this->rtl) {
+ if ($this->pagedim[$this->page]['orm'] != $this->pagedim[$oldpage]['orm']) {
+ $this->x = $x - ($this->pagedim[$this->page]['orm'] - $this->pagedim[$oldpage]['orm']);
+ } else {
+ $this->x = $x;
+ }
} else {
- $this->x = $x;
+ if ($this->pagedim[$this->page]['olm'] != $this->pagedim[$oldpage]['olm']) {
+ $this->x = $x + ($this->pagedim[$this->page]['olm'] - $this->pagedim[$oldpage]['olm']);
+ } else {
+ $this->x = $x;
+ }
}
}
+ return true;
}
- return true;
- }
- if ($current_page != $this->page) {
- // account for columns mode
- return true;
- }
- return false;
- }
-
- function Header()
- {
- global $maxY;
- // Check if header for this page already exists
- if (!isset($this->headerset[$this->page])) {
- $fullwidth = 0;
- foreach ($this->tablewidths as $width) {
- $fullwidth += $width;
+ if ($current_page != $this->page) {
+ // account for columns mode
+ return true;
}
- $this->SetY(($this->tMargin) - ($this->FontSizePt/$this->k)*3);
- $this->cellFontSize = $this->FontSizePt ;
- $this->SetFont(PMA_PDF_FONT, '', ($this->titleFontSize ? $this->titleFontSize : $this->FontSizePt));
- $this->Cell(0, $this->FontSizePt, $this->titleText, 0, 1, 'C');
- $this->SetFont(PMA_PDF_FONT, '', $this->cellFontSize);
- $this->SetY(($this->tMargin) - ($this->FontSizePt/$this->k)*1.5);
- $this->Cell(0, $this->FontSizePt, __('Database') .': ' .$this->currentDb .', ' .__('Table') .': ' .$this->currentTable, 0, 1, 'L');
- $l = ($this->lMargin);
- foreach ($this->colTitles as $col => $txt) {
- $this->SetXY($l, ($this->tMargin));
- $this->MultiCell($this->tablewidths[$col], $this->FontSizePt, $txt);
- $l += $this->tablewidths[$col] ;
- $maxY = ($maxY < $this->getY()) ? $this->getY() : $maxY ;
- }
- $this->SetXY($this->lMargin, $this->tMargin);
- $this->setFillColor(200, 200, 200);
- $l = ($this->lMargin);
- foreach ($this->colTitles as $col => $txt) {
- $this->SetXY($l, $this->tMargin);
- $this->cell($this->tablewidths[$col], $maxY-($this->tMargin), '', 1, 0, 'L', 1);
- $this->SetXY($l, $this->tMargin);
- $this->MultiCell($this->tablewidths[$col], $this->FontSizePt, $txt, 0, 'C');
- $l += $this->tablewidths[$col];
- }
- $this->setFillColor(255, 255, 255);
- // set headerset
- $this->headerset[$this->page] = 1;
+ return false;
}
- $this->dataY = $maxY;
- }
+ function Header()
+ {
+ global $maxY;
+ // Check if header for this page already exists
+ if (!isset($this->headerset[$this->page])) {
+ $fullwidth = 0;
+ foreach ($this->tablewidths as $width) {
+ $fullwidth += $width;
+ }
+ $this->SetY(($this->tMargin) - ($this->FontSizePt/$this->k)*3);
+ $this->cellFontSize = $this->FontSizePt ;
+ $this->SetFont(PMA_PDF_FONT, '', ($this->titleFontSize ? $this->titleFontSize : $this->FontSizePt));
+ $this->Cell(0, $this->FontSizePt, $this->titleText, 0, 1, 'C');
+ $this->SetFont(PMA_PDF_FONT, '', $this->cellFontSize);
+ $this->SetY(($this->tMargin) - ($this->FontSizePt/$this->k)*1.5);
+ $this->Cell(0, $this->FontSizePt, __('Database') .': ' .$this->currentDb .', ' .__('Table') .': ' .$this->currentTable, 0, 1, 'L');
+ $l = ($this->lMargin);
+ foreach ($this->colTitles as $col => $txt) {
+ $this->SetXY($l, ($this->tMargin));
+ $this->MultiCell($this->tablewidths[$col], $this->FontSizePt, $txt);
+ $l += $this->tablewidths[$col] ;
+ $maxY = ($maxY < $this->getY()) ? $this->getY() : $maxY ;
+ }
+ $this->SetXY($this->lMargin, $this->tMargin);
+ $this->setFillColor(200, 200, 200);
+ $l = ($this->lMargin);
+ foreach ($this->colTitles as $col => $txt) {
+ $this->SetXY($l, $this->tMargin);
+ $this->cell($this->tablewidths[$col], $maxY-($this->tMargin), '', 1, 0, 'L', 1);
+ $this->SetXY($l, $this->tMargin);
+ $this->MultiCell($this->tablewidths[$col], $this->FontSizePt, $txt, 0, 'C');
+ $l += $this->tablewidths[$col];
+ }
+ $this->setFillColor(255, 255, 255);
+ // set headerset
+ $this->headerset[$this->page] = 1;
+ }
- function Footer()
- {
- // Check if footer for this page already exists
- if (!isset($this->footerset[$this->page])) {
- $this->SetY(-15);
- //Page number
- $this->setFooterFont(PMA_PDF_FONT, '', 14);
- $this->Cell(0, 6, __('Page number:') . ' ' . $this->getAliasNumPage() . '/' . $this->getAliasNbPages(), 'T', 0, 'C');
-
- // set footerset
- $this->footerset[$this->page] = 1;
+ $this->dataY = $maxY;
}
- }
- function morepagestable($lineheight=8)
- {
- // some things to set and 'remember'
- $l = $this->lMargin;
- $startheight = $h = $this->dataY;
- $startpage = $currpage = $this->page;
-
- // calculate the whole width
- $fullwidth = 0;
- foreach ($this->tablewidths as $width) {
- $fullwidth += $width;
+ function Footer()
+ {
+ // Check if footer for this page already exists
+ if (!isset($this->footerset[$this->page])) {
+ $this->SetY(-15);
+ //Page number
+ $this->setFooterFont(PMA_PDF_FONT, '', 14);
+ $this->Cell(0, 6, __('Page number:') . ' ' . $this->getAliasNumPage() . '/' . $this->getAliasNbPages(), 'T', 0, 'C');
+
+ // set footerset
+ $this->footerset[$this->page] = 1;
+ }
}
- // Now let's start to write the table
- $row = 0;
- $tmpheight = array();
- $maxpage = $this->page;
+ function morepagestable($lineheight=8)
+ {
+ // some things to set and 'remember'
+ $l = $this->lMargin;
+ $startheight = $h = $this->dataY;
+ $startpage = $currpage = $this->page;
- while ($data = PMA_DBI_fetch_row($this->results)) {
- $this->page = $currpage;
- // write the horizontal borders
- $this->Line($l, $h, $fullwidth+$l, $h);
- // write the content and remember the height of the highest col
- foreach ($data as $col => $txt) {
+ // calculate the whole width
+ $fullwidth = 0;
+ foreach ($this->tablewidths as $width) {
+ $fullwidth += $width;
+ }
+
+ // Now let's start to write the table
+ $row = 0;
+ $tmpheight = array();
+ $maxpage = $this->page;
+
+ while ($data = PMA_DBI_fetch_row($this->results)) {
$this->page = $currpage;
- $this->SetXY($l, $h);
- if ($this->tablewidths[$col] > 0) {
- $this->MultiCell($this->tablewidths[$col], $lineheight, $txt, 0, $this->colAlign[$col]);
- $l += $this->tablewidths[$col];
- }
+ // write the horizontal borders
+ $this->Line($l, $h, $fullwidth+$l, $h);
+ // write the content and remember the height of the highest col
+ foreach ($data as $col => $txt) {
+ $this->page = $currpage;
+ $this->SetXY($l, $h);
+ if ($this->tablewidths[$col] > 0) {
+ $this->MultiCell($this->tablewidths[$col], $lineheight, $txt, 0, $this->colAlign[$col]);
+ $l += $this->tablewidths[$col];
+ }
- if (!isset($tmpheight[$row.'-'.$this->page])) {
- $tmpheight[$row.'-'.$this->page] = 0;
- }
- if ($tmpheight[$row.'-'.$this->page] < $this->GetY()) {
- $tmpheight[$row.'-'.$this->page] = $this->GetY();
- }
- if ($this->page > $maxpage) {
- $maxpage = $this->page;
+ if (!isset($tmpheight[$row.'-'.$this->page])) {
+ $tmpheight[$row.'-'.$this->page] = 0;
+ }
+ if ($tmpheight[$row.'-'.$this->page] < $this->GetY()) {
+ $tmpheight[$row.'-'.$this->page] = $this->GetY();
+ }
+ if ($this->page > $maxpage) {
+ $maxpage = $this->page;
+ }
+ unset($data[$col]);
}
- unset($data[$col]);
- }
- // get the height we were in the last used page
- $h = $tmpheight[$row.'-'.$maxpage];
- // set the "pointer" to the left margin
- $l = $this->lMargin;
- // set the $currpage to the last page
- $currpage = $maxpage;
- unset($data[$row]);
- $row++;
- }
- // draw the borders
- // we start adding a horizontal line on the last page
- $this->page = $maxpage;
- $this->Line($l, $h, $fullwidth+$l, $h);
- // now we start at the top of the document and walk down
- for ($i = $startpage; $i <= $maxpage; $i++) {
- $this->page = $i;
- $l = $this->lMargin;
- $t = ($i == $startpage) ? $startheight : $this->tMargin;
- $lh = ($i == $maxpage) ? $h : $this->h-$this->bMargin;
- $this->Line($l, $t, $l, $lh);
- foreach ($this->tablewidths as $width) {
- $l += $width;
+ // get the height we were in the last used page
+ $h = $tmpheight[$row.'-'.$maxpage];
+ // set the "pointer" to the left margin
+ $l = $this->lMargin;
+ // set the $currpage to the last page
+ $currpage = $maxpage;
+ unset($data[$row]);
+ $row++;
+ }
+ // draw the borders
+ // we start adding a horizontal line on the last page
+ $this->page = $maxpage;
+ $this->Line($l, $h, $fullwidth+$l, $h);
+ // now we start at the top of the document and walk down
+ for ($i = $startpage; $i <= $maxpage; $i++) {
+ $this->page = $i;
+ $l = $this->lMargin;
+ $t = ($i == $startpage) ? $startheight : $this->tMargin;
+ $lh = ($i == $maxpage) ? $h : $this->h-$this->bMargin;
$this->Line($l, $t, $l, $lh);
+ foreach ($this->tablewidths as $width) {
+ $l += $width;
+ $this->Line($l, $t, $l, $lh);
+ }
}
+ // set it to the last page, if not it'll cause some problems
+ $this->page = $maxpage;
}
- // set it to the last page, if not it'll cause some problems
- $this->page = $maxpage;
- }
- function setAttributes($attr = array())
- {
- foreach ($attr as $key => $val) {
- $this->$key = $val ;
+ function setAttributes($attr = array())
+ {
+ foreach ($attr as $key => $val) {
+ $this->$key = $val ;
+ }
}
- }
- function setTopMargin($topMargin)
- {
- $this->tMargin = $topMargin;
- }
+ function setTopMargin($topMargin)
+ {
+ $this->tMargin = $topMargin;
+ }
- function mysql_report($query)
- {
- unset($this->tablewidths);
- unset($this->colTitles);
- unset($this->titleWidth);
- unset($this->colFits);
- unset($this->display_column);
- unset($this->colAlign);
-
- /**
- * Pass 1 for column widths
- */
- $this->results = PMA_DBI_query($query, null, PMA_DBI_QUERY_UNBUFFERED);
- $this->numFields = PMA_DBI_num_fields($this->results);
- $this->fields = PMA_DBI_get_fields_meta($this->results);
-
- // sColWidth = starting col width (an average size width)
- $availableWidth = $this->w - $this->lMargin - $this->rMargin;
- $this->sColWidth = $availableWidth / $this->numFields;
- $totalTitleWidth = 0;
-
- // loop through results header and set initial col widths/ titles/ alignment
- // if a col title is less than the starting col width, reduce that column size
- for ($i = 0; $i < $this->numFields; $i++) {
- $stringWidth = $this->getstringwidth($this->fields[$i]->name) + 6 ;
- // save the real title's width
- $titleWidth[$i] = $stringWidth;
- $totalTitleWidth += $stringWidth;
-
- // set any column titles less than the start width to the column title width
- if ($stringWidth < $this->sColWidth) {
- $colFits[$i] = $stringWidth ;
- }
- $this->colTitles[$i] = $this->fields[$i]->name;
- $this->display_column[$i] = true;
-
- switch ($this->fields[$i]->type) {
- case 'int':
- $this->colAlign[$i] = 'R';
- break;
- case 'blob':
- case 'tinyblob':
- case 'mediumblob':
- case 'longblob':
- /**
- * @todo do not deactivate completely the display
- * but show the field's name and [BLOB]
- */
- if (stristr($this->fields[$i]->flags, 'BINARY')) {
- $this->display_column[$i] = false;
- unset($this->colTitles[$i]);
+ function mysql_report($query)
+ {
+ unset($this->tablewidths);
+ unset($this->colTitles);
+ unset($this->titleWidth);
+ unset($this->colFits);
+ unset($this->display_column);
+ unset($this->colAlign);
+
+ /**
+ * Pass 1 for column widths
+ */
+ $this->results = PMA_DBI_query($query, null, PMA_DBI_QUERY_UNBUFFERED);
+ $this->numFields = PMA_DBI_num_fields($this->results);
+ $this->fields = PMA_DBI_get_fields_meta($this->results);
+
+ // sColWidth = starting col width (an average size width)
+ $availableWidth = $this->w - $this->lMargin - $this->rMargin;
+ $this->sColWidth = $availableWidth / $this->numFields;
+ $totalTitleWidth = 0;
+
+ // loop through results header and set initial col widths/ titles/ alignment
+ // if a col title is less than the starting col width, reduce that column size
+ for ($i = 0; $i < $this->numFields; $i++) {
+ $stringWidth = $this->getstringwidth($this->fields[$i]->name) + 6 ;
+ // save the real title's width
+ $titleWidth[$i] = $stringWidth;
+ $totalTitleWidth += $stringWidth;
+
+ // set any column titles less than the start width to the column title width
+ if ($stringWidth < $this->sColWidth) {
+ $colFits[$i] = $stringWidth ;
+ }
+ $this->colTitles[$i] = $this->fields[$i]->name;
+ $this->display_column[$i] = true;
+
+ switch ($this->fields[$i]->type) {
+ case 'int':
+ $this->colAlign[$i] = 'R';
+ break;
+ case 'blob':
+ case 'tinyblob':
+ case 'mediumblob':
+ case 'longblob':
+ /**
+ * @todo do not deactivate completely the display
+ * but show the field's name and [BLOB]
+ */
+ if (stristr($this->fields[$i]->flags, 'BINARY')) {
+ $this->display_column[$i] = false;
+ unset($this->colTitles[$i]);
+ }
+ $this->colAlign[$i] = 'L';
+ break;
+ default:
+ $this->colAlign[$i] = 'L';
}
- $this->colAlign[$i] = 'L';
- break;
- default:
- $this->colAlign[$i] = 'L';
}
- }
- // title width verification
- if ($totalTitleWidth > $availableWidth) {
- $adjustingMode = true;
- } else {
- $adjustingMode = false;
- // we have enough space for all the titles at their
- // original width so use the true title's width
- foreach ($titleWidth as $key => $val) {
- $colFits[$key] = $val;
+ // title width verification
+ if ($totalTitleWidth > $availableWidth) {
+ $adjustingMode = true;
+ } else {
+ $adjustingMode = false;
+ // we have enough space for all the titles at their
+ // original width so use the true title's width
+ foreach ($titleWidth as $key => $val) {
+ $colFits[$key] = $val;
+ }
}
- }
- // loop through the data; any column whose contents
- // is greater than the column size is resized
- /**
- * @todo force here a LIMIT to avoid reading all rows
- */
- while ($row = PMA_DBI_fetch_row($this->results)) {
- foreach ($colFits as $key => $val) {
- $stringWidth = $this->getstringwidth($row[$key]) + 6 ;
- if ($adjustingMode && ($stringWidth > $this->sColWidth)) {
- // any column whose data's width is bigger than the start width is now discarded
- unset($colFits[$key]);
- } else {
- // if data's width is bigger than the current column width,
- // enlarge the column (but avoid enlarging it if the
- // data's width is very big)
- if ($stringWidth > $val && $stringWidth < ($this->sColWidth * 3)) {
- $colFits[$key] = $stringWidth ;
+ // loop through the data; any column whose contents
+ // is greater than the column size is resized
+ /**
+ * @todo force here a LIMIT to avoid reading all rows
+ */
+ while ($row = PMA_DBI_fetch_row($this->results)) {
+ foreach ($colFits as $key => $val) {
+ $stringWidth = $this->getstringwidth($row[$key]) + 6 ;
+ if ($adjustingMode && ($stringWidth > $this->sColWidth)) {
+ // any column whose data's width is bigger than the start width is now discarded
+ unset($colFits[$key]);
+ } else {
+ // if data's width is bigger than the current column width,
+ // enlarge the column (but avoid enlarging it if the
+ // data's width is very big)
+ if ($stringWidth > $val && $stringWidth < ($this->sColWidth * 3)) {
+ $colFits[$key] = $stringWidth ;
+ }
}
}
}
- }
-
- $totAlreadyFitted = 0;
- foreach ($colFits as $key => $val) {
- // set fitted columns to smallest size
- $this->tablewidths[$key] = $val;
- // to work out how much (if any) space has been freed up
- $totAlreadyFitted += $val;
- }
- if ($adjustingMode) {
- $surplus = (sizeof($colFits) * $this->sColWidth) - $totAlreadyFitted;
- $surplusToAdd = $surplus / ($this->numFields - sizeof($colFits));
- } else {
- $surplusToAdd = 0;
- }
+ $totAlreadyFitted = 0;
+ foreach ($colFits as $key => $val) {
+ // set fitted columns to smallest size
+ $this->tablewidths[$key] = $val;
+ // to work out how much (if any) space has been freed up
+ $totAlreadyFitted += $val;
+ }
- for ($i=0; $i < $this->numFields; $i++) {
- if (!in_array($i, array_keys($colFits))) {
- $this->tablewidths[$i] = $this->sColWidth + $surplusToAdd;
+ if ($adjustingMode) {
+ $surplus = (sizeof($colFits) * $this->sColWidth) - $totAlreadyFitted;
+ $surplusToAdd = $surplus / ($this->numFields - sizeof($colFits));
+ } else {
+ $surplusToAdd = 0;
}
- if ($this->display_column[$i] == false) {
- $this->tablewidths[$i] = 0;
+
+ for ($i=0; $i < $this->numFields; $i++) {
+ if (!in_array($i, array_keys($colFits))) {
+ $this->tablewidths[$i] = $this->sColWidth + $surplusToAdd;
+ }
+ if ($this->display_column[$i] == false) {
+ $this->tablewidths[$i] = 0;
+ }
}
- }
- ksort($this->tablewidths);
+ ksort($this->tablewidths);
- PMA_DBI_free_result($this->results);
+ PMA_DBI_free_result($this->results);
- // Pass 2
+ // Pass 2
- $this->results = PMA_DBI_query($query, null, PMA_DBI_QUERY_UNBUFFERED);
- $this->setY($this->tMargin);
- $this->AddPage();
- $this->morepagestable($this->FontSizePt);
- PMA_DBI_free_result($this->results);
+ $this->results = PMA_DBI_query($query, null, PMA_DBI_QUERY_UNBUFFERED);
+ $this->setY($this->tMargin);
+ $this->AddPage();
+ $this->morepagestable($this->FontSizePt);
+ PMA_DBI_free_result($this->results);
- } // end of mysql_report function
+ } // end of mysql_report function
-} // end of PMA_PDF class
+ } // end of PMA_PDF class
-$pdf = new PMA_PDF('L', 'pt', 'A3');
+ $pdf = new PMA_PDF('L', 'pt', 'A3');
-/**
- * Finalize the pdf.
- *
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportFooter()
-{
- global $pdf;
+ /**
+ * Finalize the pdf.
+ *
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportFooter()
+ {
+ global $pdf;
- // instead of $pdf->Output():
- if (!PMA_exportOutputHandler($pdf->getPDFData())) {
- return false;
- }
+ // instead of $pdf->Output():
+ if (!PMA_exportOutputHandler($pdf->getPDFData())) {
+ return false;
+ }
- return true;
-}
+ return true;
+ }
-/**
- * Initialize the pdf to export data.
- *
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportHeader()
-{
- global $pdf_report_title;
- global $pdf;
-
- $pdf->AddFont('DejaVuSans', '', 'dejavusans.php');
- $pdf->AddFont('DejaVuSans', 'B', 'dejavusansb.php');
- $pdf->AddFont('DejaVuSerif', '', 'dejavuserif.php');
- $pdf->AddFont('DejaVuSerif', 'B', 'dejavuserifb.php');
- $pdf->SetFont(PMA_PDF_FONT, '', 11.5);
- $pdf->setFooterFont(array(PMA_PDF_FONT, '', 11.5));
- $pdf->AliasNbPages();
- $pdf->Open();
-
- $attr=array('titleFontSize' => 18, 'titleText' => $pdf_report_title);
- $pdf->setAttributes($attr);
- $pdf->setTopMargin(45);
-
- return true;
-}
+ /**
+ * Initialize the pdf to export data.
+ *
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportHeader()
+ {
+ global $pdf_report_title;
+ global $pdf;
+
+ $pdf->AddFont('DejaVuSans', '', 'dejavusans.php');
+ $pdf->AddFont('DejaVuSans', 'B', 'dejavusansb.php');
+ $pdf->AddFont('DejaVuSerif', '', 'dejavuserif.php');
+ $pdf->AddFont('DejaVuSerif', 'B', 'dejavuserifb.php');
+ $pdf->SetFont(PMA_PDF_FONT, '', 11.5);
+ $pdf->setFooterFont(array(PMA_PDF_FONT, '', 11.5));
+ $pdf->AliasNbPages();
+ $pdf->Open();
+
+ $attr=array('titleFontSize' => 18, 'titleText' => $pdf_report_title);
+ $pdf->setAttributes($attr);
+ $pdf->setTopMargin(45);
+
+ return true;
+ }
-/**
- * Outputs database header
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBHeader($db)
-{
- return true;
-}
+ /**
+ * Outputs database header
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBHeader($db)
+ {
+ return true;
+ }
-/**
- * Outputs database footer
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBFooter($db)
-{
- return true;
-}
+ /**
+ * Outputs database footer
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBFooter($db)
+ {
+ return true;
+ }
-/**
- * Outputs CREATE DATABASE statement
- *
- * @param string $db Database name
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportDBCreate($db)
-{
- return true;
-}
+ /**
+ * Outputs CREATE DATABASE statement
+ *
+ * @param string $db Database name
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportDBCreate($db)
+ {
+ return true;
+ }
-/**
- * Outputs the content of a table in PDF format
- *
- * @param string $db database name
- * @param string $table table name
- * @param string $crlf the end of line sequence
- * @param string $error_url the url to go back in case of error
- * @param string $sql_query SQL query for obtaining data
- * @return bool Whether it suceeded
- *
- * @access public
- */
-function PMA_exportData($db, $table, $crlf, $error_url, $sql_query)
-{
- global $pdf;
+ /**
+ * Outputs the content of a table in PDF format
+ *
+ * @param string $db database name
+ * @param string $table table name
+ * @param string $crlf the end of line sequence
+ * @param string $error_url the url to go back in case of error
+ * @param string $sql_query SQL query for obtaining data
+ * @return bool Whether it suceeded
+ *
+ * @access public
+ */
+ function PMA_exportData($db, $table, $crlf, $error_url, $sql_query)
+ {
+ global $pdf;
- $attr=array('currentDb' => $db, 'currentTable' => $table);
- $pdf->setAttributes($attr);
- $pdf->mysql_report($sql_query);
+ $attr=array('currentDb' => $db, 'currentTable' => $table);
+ $pdf->setAttributes($attr);
+ $pdf->mysql_report($sql_query);
- return true;
-} // end of the 'PMA_exportData()' function
+ return true;
+ } // end of the 'PMA_exportData()' function
}
?>
hooks/post-receive
--
phpMyAdmin
More information about the Git
mailing list