The branch, master has been updated via 8cb1f3a1cc1a089e53a89c1a4f59cd63a1ddecf8 (commit) from 8cb8a3d4c75dc6bf9665d4a3e80a2fea1a1b31eb (commit)
- Log ----------------------------------------------------------------- commit 8cb1f3a1cc1a089e53a89c1a4f59cd63a1ddecf8 Author: Michal Čihař mcihar@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%22%3E - -<!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%22%3E + + <!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