Merge branch 'MAINT_3_3_10' into QA_3_3

This commit is contained in:
Marc Delisle
2011-11-10 08:36:26 -05:00
4 changed files with 50 additions and 20 deletions

View File

@@ -81,6 +81,12 @@ vim: expandtab ts=4 sw=4 sts=4 tw=78
</li> </li>
<li>To support upload progress bars, see <a href="#faq2_9"> <li>To support upload progress bars, see <a href="#faq2_9">
<abbr title="Frequently Asked Questions">FAQ</abbr> 2.9</a>.</li> <abbr title="Frequently Asked Questions">FAQ</abbr> 2.9</a>.</li>
<li>To support BLOB streaming, see PHP and MySQL requirements
in <a href="#faq6_25">
<abbr title="Frequently Asked Questions">FAQ</abbr> 6.25</a>.</li>
<li>To support XML and Open Document Spreadsheet importing,
you need PHP 5.2.17 or newer and the
<a href="http://www.php.net/libxml"><tt>libxml</tt></a> extension.</li>
</ul> </ul>
</li> </li>
<li><b>MySQL</b> 5.0 or newer (<a href="#faq1_17">details</a>);</li> <li><b>MySQL</b> 5.0 or newer (<a href="#faq1_17">details</a>);</li>

View File

@@ -70,7 +70,7 @@ while ($row = PMA_DBI_fetch_assoc($rowset)) {
echo '<div>' . "\n"; echo '<div>' . "\n";
} }
echo '<h2>' . $table . '</h2>' . "\n"; echo '<h2>' . htmlspecialchars($table) . '</h2>' . "\n";
/** /**
* Gets table informations * Gets table informations

View File

@@ -13,6 +13,13 @@ if (! defined('PHPMYADMIN')) {
exit; exit;
} }
/**
* We need way to disable external XML entities processing.
*/
if (!function_exists('libxml_disable_entity_loader')) {
return;
}
/** /**
* The possible scopes for $plugin_param are: 'table', 'database', and 'server' * The possible scopes for $plugin_param are: 'table', 'database', and 'server'
*/ */
@@ -61,6 +68,11 @@ while (! ($finished && $i >= $len) && ! $error && ! $timeout_passed) {
unset($data); unset($data);
/**
* Disable loading of external XML entities.
*/
libxml_disable_entity_loader();
/** /**
* Load the XML string * Load the XML string
* *

View File

@@ -12,6 +12,13 @@ if (! defined('PHPMYADMIN')) {
exit; exit;
} }
/**
* We need way to disable external XML entities processing.
*/
if (!function_exists('libxml_disable_entity_loader')) {
return;
}
/** /**
* The possible scopes for $plugin_param are: 'table', 'database', and 'server' * The possible scopes for $plugin_param are: 'table', 'database', and 'server'
*/ */
@@ -56,6 +63,11 @@ while (! ($finished && $i >= $len) && ! $error && ! $timeout_passed) {
unset($data); unset($data);
/**
* Disable loading of external XML entities.
*/
libxml_disable_entity_loader();
/** /**
* Load the XML string * Load the XML string
* *
@@ -141,19 +153,19 @@ if (isset($namespaces['pma'])) {
* Get structures for all tables * Get structures for all tables
*/ */
$struct = $xml->children($namespaces['pma']); $struct = $xml->children($namespaces['pma']);
$create = array(); $create = array();
foreach ($struct as $tier1 => $val1) { foreach ($struct as $tier1 => $val1) {
foreach($val1 as $tier2 => $val2) { foreach($val1 as $tier2 => $val2) {
/* Need to select the correct database for the creation of tables, views, triggers, etc. */ /* Need to select the correct database for the creation of tables, views, triggers, etc. */
/** /**
* @todo Generating a USE here blocks importing of a table * @todo Generating a USE here blocks importing of a table
* into another database. * into another database.
*/ */
$attrs = $val2->attributes(); $attrs = $val2->attributes();
$create[] = "USE " . PMA_backquote($attrs["name"]); $create[] = "USE " . PMA_backquote($attrs["name"]);
foreach ($val2 as $val3) { foreach ($val2 as $val3) {
/** /**
* Remove the extra cosmetic spacing * Remove the extra cosmetic spacing
@@ -163,7 +175,7 @@ if (isset($namespaces['pma'])) {
} }
} }
} }
$struct_present = true; $struct_present = true;
} }
@@ -179,13 +191,13 @@ $data_present = false;
*/ */
if (@count($xml->children())) { if (@count($xml->children())) {
$data_present = true; $data_present = true;
/** /**
* Process all database content * Process all database content
*/ */
foreach ($xml as $k1 => $v1) { foreach ($xml as $k1 => $v1) {
$tbl_attr = $v1->attributes(); $tbl_attr = $v1->attributes();
$isInTables = false; $isInTables = false;
for ($i = 0; $i < count($tables); ++$i) { for ($i = 0; $i < count($tables); ++$i) {
if (! strcmp($tables[$i][TBL_NAME], (string)$tbl_attr['name'])) { if (! strcmp($tables[$i][TBL_NAME], (string)$tbl_attr['name'])) {
@@ -193,11 +205,11 @@ if (@count($xml->children())) {
break; break;
} }
} }
if ($isInTables == false) { if ($isInTables == false) {
$tables[] = array((string)$tbl_attr['name']); $tables[] = array((string)$tbl_attr['name']);
} }
foreach ($v1 as $k2 => $v2) { foreach ($v1 as $k2 => $v2) {
$row_attr = $v2->attributes(); $row_attr = $v2->attributes();
if (! array_search((string)$row_attr['name'], $tempRow)) if (! array_search((string)$row_attr['name'], $tempRow))
@@ -206,17 +218,17 @@ if (@count($xml->children())) {
} }
$tempCells[] = (string)$v2; $tempCells[] = (string)$v2;
} }
$rows[] = array((string)$tbl_attr['name'], $tempRow, $tempCells); $rows[] = array((string)$tbl_attr['name'], $tempRow, $tempCells);
$tempRow = array(); $tempRow = array();
$tempCells = array(); $tempCells = array();
} }
unset($tempRow); unset($tempRow);
unset($tempCells); unset($tempCells);
unset($xml); unset($xml);
/** /**
* Bring accumulated rows into the corresponding table * Bring accumulated rows into the corresponding table
*/ */
@@ -227,17 +239,17 @@ if (@count($xml->children())) {
if (! isset($tables[$i][COL_NAMES])) { if (! isset($tables[$i][COL_NAMES])) {
$tables[$i][] = $rows[$j][COL_NAMES]; $tables[$i][] = $rows[$j][COL_NAMES];
} }
$tables[$i][ROWS][] = $rows[$j][ROWS]; $tables[$i][ROWS][] = $rows[$j][ROWS];
} }
} }
} }
unset($rows); unset($rows);
if (! $struct_present) { if (! $struct_present) {
$analyses = array(); $analyses = array();
$len = count($tables); $len = count($tables);
for ($i = 0; $i < $len; ++$i) { for ($i = 0; $i < $len; ++$i) {
$analyses[] = PMA_analyzeTable($tables[$i]); $analyses[] = PMA_analyzeTable($tables[$i]);
@@ -289,7 +301,7 @@ if (strlen($db)) {
if ($db_name === NULL) { if ($db_name === NULL) {
$db_name = 'XML_DB'; $db_name = 'XML_DB';
} }
/* Set database collation/charset */ /* Set database collation/charset */
$options = array( $options = array(
'db_collation' => $collation, 'db_collation' => $collation,