diff --git a/ChangeLog b/ChangeLog index bc2ec78ad..06a26a0f9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -91,15 +91,24 @@ $Id$ + [core] Dropped AllowAnywhereRecoding configuration variable. - rfe #3016457 [interface] Define tab order in SQL form to allow easier tab navigation. -+ [code] Centralized format string expansion, @VARIABLES@ are recommended way - now. ++ [core] Centralized format string expansion, @VARIABLES@ are recommended way + now, used by file name templates, default queries, export and title + generating. + [validator] SQL validator works also with SOAP PHP extension. - [interface] Better formatting for SQL validator results. +- [doc] The linked-tables infrastructure is now called phpMyAdmin + configuration storage. +- [interface] Move drop/empty links from being tabs to Operations tab. +- [interface] Fixed rendering of error/notice/info titles background. 3.3.6.0 (not yet released) -- bug #3031705 [core] Do not use CONCAT for DECIMAL fields. +- bug #3033063 [core] Navi gets wrong db name +- bug #3031705 [core] Fix generating condition for real numbers by comparing + them to string. +- bug #3034026 [confirmation] TRUNCATE queries get no confirmation request +- bug #3036132 [core] Triggers not fetched if dbname has an hyphen -3.3.5.0 (not yet released) +3.3.5.0 (2010-07-26) - patch #2932113 [information_schema] Slow export when having lots of databases, thanks to Stéphane Pontier - shadow_walker - bug #3022705 [import] Import button does not work in Catalan when there @@ -114,6 +123,7 @@ $Id$ - bug [export] CSV for MS Excel (Windows) should have semi-colon as separator - [core] Update library PHPExcel to version 1.7.3c - bug #2994885, bug #3029168 [import] Convert Excel column name correctly +- bug [scripts] MySQL 5.5.5 does not accept TIMESTAMP(14) in create_tables.sql 3.3.4.0 (2010-06-28) - bug #2996161 [import] properly escape import value diff --git a/Documentation.html b/Documentation.html index c35cfae27..62dd51fcc 100644 --- a/Documentation.html +++ b/Documentation.html @@ -69,7 +69,7 @@ vim: expandtab ts=4 sw=4 sts=4 tw=78
  • To support uploading of ZIP files, you need the PHP zip extension.
  • For proper support of multibyte strings (eg. UTF-8, which is - currently default), you should install mbstring and ctype + currently the default), you should install the mbstring and ctype extensions.
  • You need GD2 support in PHP to display inline @@ -84,6 +84,9 @@ vim: expandtab ts=4 sw=4 sts=4 tw=78
  • To support upload progress bars, see FAQ 2.9.
  • +
  • To support BLOB streaming, see PHP and MySQL requirements + in + FAQ 6.25.
  • MySQL 5.0 or newer (details);
  • @@ -167,7 +170,7 @@ vim: expandtab ts=4 sw=4 sts=4 tw=78
    1. Quick Install
    2. Setup script usage
    3. -
    4. Linked-tables infrastructure
    5. +
    6. phpMyAdmin configuration storage
    7. Upgrading from an older version
    8. Using authentication modes
    @@ -323,7 +326,7 @@ rm -rf config # remove not needed directory -

    Linked-tables infrastructure

    +

    phpMyAdmin configuration storage

    For a whole set of new features (bookmarks, comments, SQL-history, @@ -370,7 +373,7 @@ rm -rf config # remove not needed directory is version-specific.

    If you have upgraded your MySQL server from a version previous to 4.1.2 to - version 4.1.2 or newer and if you use the pmadb/linked table infrastructure, + version 4.1.2 or newer and if you use the phpMyAdmin configuration storage, you should run the SQL script found in scripts/upgrade_tables_mysql_4_1_2+.sql.

    @@ -440,8 +443,9 @@ GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv) GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost'; - (this of course requires that your linked-tables - infrastructure be set up).
    + (this of course requires that your phpMyAdmin + configuration storage be set up). +
  • Then each of the true users should be granted a set of privileges on a set of particular databases. Normally you shouldn't give global @@ -862,11 +866,11 @@ since this link provides funding for phpMyAdmin.
    $cfg['Servers'][$i]['pmadb'] string
    -
    The name of the database containing the linked-tables infrastructure. +
    The name of the database containing the phpMyAdmin configuration storage.

    - See the Linked-tables infrastructure - section in this document to see the benefits of this infrastructure, + See the phpMyAdmin configuration storage + section in this document to see the benefits of this feature, and for a quick way of creating this database and the needed tables.

    @@ -875,7 +879,7 @@ since this link provides funding for phpMyAdmin. case, just put your current database name in $cfg['Servers'][$i]['pmadb']. For a multi-user installation, set this parameter to the name of your central database containing - the linked-tables infrastructure.
    + the phpMyAdmin configuration storage.
    $cfg['Servers'][$i]['bookmarktable'] string @@ -884,7 +888,7 @@ since this link provides funding for phpMyAdmin. useful for queries you often run.

    To allow the usage of this functionality: -
    Default queries that will be displayed in query boxes when user didn't - specify any. Use %d for database name, %t for table name and %f for a - comma separated list of column names. Note that %t and %f are only - applicable to $cfg['DefaultQueryTable'].
    + specify any. You can use standard + format string expansion. +
    $cfg['SQP']['fmtType'] string [html|none]
    @@ -4306,14 +4306,21 @@ chmod o+rwx tmp

    6.25 How does BLOB streaming work in phpMyAdmin?

    -

    First, for general information about BLOB streaming on MySQL, visit blobstreaming.org. We currently support streaming if you are running MySQL 5.1 with the PBXT and PBMS storage engines. Moreover, only PBMS 0.5.04 is supported.

    +

    For general information about BLOB streaming on MySQL, visit blobstreaming.org. You need the following components:

    + + +

    Here are details about configuration and operation:

      -
    1. In config.inc.php your host should be defined with a FQDN (fully qualified domain name) instead of something like "localhost".
    2. -
    3. A current limitation is that your first login via phpMyAdmin to a freshly-started server must be done with an account that has the SUPER privilege.
    4. -
    5. On your target database, go to Operations and in the "BLOB Repository" section, click "Enable". This creates the PBMS system tables inside your database.
    6. +
    7. In config.inc.php your host should be defined with a FQDN (fully qualified domain name) instead of "localhost".
    8. Ensure that your target table is under the PBXT storage engine and has a LONGBLOB column.
    9. -
    10. When you insert or update a row in this table, put a checkmark on the "Upload to BLOB repository" optional choice; otherwise, the upload will be done directly in your column instead of the repository.
    11. +
    12. When you insert or update a row in this table, put a checkmark on the "Upload to BLOB repository" optional choice; otherwise, the upload will be done directly in your LONGBLOB column instead of the repository.
    13. Finally when you browse your table, you'll see in your column a link to stream your data, for example "View image". A header containing the correct MIME-type will be sent to your browser; this MIME-type was stored at upload time but in case it's incorrect, it's possible to edit it by clicking on the displayed MIME-type.
    @@ -4346,6 +4353,8 @@ chmod o+rwx tmp
    Currently opened database
    @TABLE@
    Currently opened table
    +
    @FIELDS@
    +
    Fields of currently opened table
    @PHPMYADMIN@
    phpMyAdmin with version
    @@ -4845,6 +4854,11 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  • Replication support
  • +
  • Barrie Leslie +
  • +

    diff --git a/browse_foreigners.php b/browse_foreigners.php index 0f39cb4fe..4cfa543e8 100644 --- a/browse_foreigners.php +++ b/browse_foreigners.php @@ -22,7 +22,6 @@ require_once './libraries/header_http.inc.php'; * Displays the frame */ $per_page = 200; -require_once './libraries/relation.lib.php'; // foreign keys require_once './libraries/transformations.lib.php'; // Transformations $cfgRelation = PMA_getRelationsParam(); $foreigners = ($cfgRelation['relwork'] ? PMA_getForeigners($db, $table) : FALSE); diff --git a/bs_change_mime_type.php b/bs_change_mime_type.php index 8ad8d1abc..edefae144 100644 --- a/bs_change_mime_type.php +++ b/bs_change_mime_type.php @@ -30,70 +30,19 @@ $bsNewMIMEType = isset($_REQUEST['bs_new_mime_type']) ? urldecode($_REQUEST['bs_new_mime_type']) : NULL; // necessary variables exist - if ($bsDB && $bsTable && $bsReference && $bsNewMIMEType) + if ($bsDB && $bsTable && $bsReference && $bsNewMIMEType) { - // load PMA configuration - $PMA_Config = $GLOBALS['PMA_Config']; + if (PMA_BS_SetContentType($bsDB, $bsTable, $bsReference, $bsNewMIMEType)) { + // determine redirector page + $newLoc = $cfg['PmaAbsoluteUri'] . 'sql.php?' . PMA_generate_common_url ('','', '&') . (isset($bsDB) ? '&db=' . urlencode($bsDB) : '') . (isset($bsTable) ? '&table=' . urlencode($bsTable) : '') . (isset($token) ? '&token=' . urlencode($token) : '') . (isset($goto) ? '&goto=' . urlencode($goto) : '') . '&reload=1&purge=1'; - // if PMA configuration exists - if (!empty($PMA_Config)) - { - // if BS plugins exist - if ($PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST')) - { - $pbms_ref_tbl = $PMA_Config->get('PBMS_NAME') . '_reference'; - $pbms_cust_content_type_tbl = $PMA_Config->get('PBMS_NAME') . '_custom_content_type'; - - // if specified DB is selected - if (PMA_DBI_select_db($bsDB)) - { - $query = "SELECT * FROM " . PMA_backquote($pbms_ref_tbl); - $query .= " WHERE Blob_url='" . PMA_sqlAddslashes($bsReference) . "'"; - - $result = PMA_DBI_query($query); - - // if record exists - if ($data = PMA_DBI_fetch_assoc($result)) - { - $query = "SELECT count(*) FROM " . PMA_backquote($pbms_cust_content_type_tbl); - $query .= " WHERE Blob_url='" . PMA_sqlAddslashes($bsReference) . "'"; - - $result = PMA_DBI_query($query); - - // if record exists - if ($data = PMA_DBI_fetch_assoc($result)) - { - if (1 == $data['count(*)']) - { - $query = "UPDATE " . PMA_backquote($pbms_cust_content_type_tbl) . " SET Content_type='"; - $query .= PMA_sqlAddslashes($bsNewMIMEType) . "' WHERE Blob_url='" . PMA_sqlAddslashes($bsReference) . "'"; - } - else - { - $query = "INSERT INTO " . PMA_backquote($pbms_cust_content_type_tbl) . " (Blob_url, Content_type)"; - $query .= " VALUES('" . PMA_sqlAddslashes($bsReference) . "', '" . PMA_sqlAddslashes($bsNewMIMEType) . "')"; - } - - $result = PMA_DBI_query($query); - - // if query execution succeeded - if ($result) - { - // determine redirector page - $newLoc = $cfg['PmaAbsoluteUri'] . 'sql.php?' . PMA_generate_common_url ('','', '&') . (isset($bsDB) ? '&db=' . urlencode($bsDB) : '') . (isset($bsTable) ? '&table=' . urlencode($bsTable) : '') . (isset($token) ? '&token=' . urlencode($token) : '') . (isset($goto) ? '&goto=' . urlencode($goto) : '') . '&reload=1&purge=1'; - - // redirect to specified page - ?> - - get('BLOBSTREAMING_PLUGINS_EXIST')) - } // end if (!empty($PMA_Config)) + // redirect to specified page + ?> + + diff --git a/bs_disp_as_mime_type.php b/bs_disp_as_mime_type.php index 9b26a59ac..085d88823 100644 --- a/bs_disp_as_mime_type.php +++ b/bs_disp_as_mime_type.php @@ -9,13 +9,6 @@ */ require_once './libraries/common.inc.php'; -// load PMA configuration -$PMA_Config = $GLOBALS['PMA_Config']; - -// retrieve BS server variables from PMA configuration -$bs_server = $PMA_Config->get('BLOBSTREAMING_SERVER'); -if (empty($bs_server)) die('No blob streaming server configured!'); - // Check URL parameters PMA_checkParameters(array('reference', 'c_type')); @@ -30,15 +23,23 @@ $reference = $_REQUEST['reference']; */ $c_type = preg_replace('/[^A-Za-z0-9/_-]/', '_', $_REQUEST['c_type']); -$filename = 'http://' . $bs_server . '/' . $reference; +// Get the blob streaming URL +$filename = PMA_BS_getURL($reference); +if (empty($filename)) { + die(__('No blob streaming server configured!')); +} $hdrs = get_headers($filename, 1); -if ($hdrs === FALSE) die('Failed to fetch headers'); +if ($hdrs === FALSE) { + die(__('Failed to fetch headers')); +} $fHnd = fopen($filename, "rb"); -if ($fHnd === FALSE) die('Failed to open remote URL'); +if ($fHnd === FALSE) { + die(__('Failed to open remote URL')); +} $f_size = $hdrs['Content-Length']; @@ -58,8 +59,9 @@ while (!feof($fHnd)) { $content .= fread($fHnd, $f_size); $pos = strlen($content); - if ($pos >= $f_size) + if ($pos >= $f_size) { break; + } } echo $content; diff --git a/bs_play_media.php b/bs_play_media.php index ad3c9af51..fe6f57425 100644 --- a/bs_play_media.php +++ b/bs_play_media.php @@ -15,7 +15,7 @@ $mediaType = isset($_REQUEST['media_type']) ? $_REQUEST['media_type'] : NULL; /* - * @var string indicates whether media type is of custom type + * @var string indicates whether media type is of custom type */ $customType = isset($_REQUEST['custom_type']) ? $_REQUEST['custom_type'] : false; @@ -25,24 +25,16 @@ $bsReference = isset($_REQUEST['bs_reference']) ? $_REQUEST['bs_reference'] : NULL; // if media type and BS reference are specified - if (isset($mediaType) && isset($bsReference)) - { - // load PMA configuration - $PMA_Config = $GLOBALS['PMA_Config']; - - // if PMA configuration exists - if (!empty($PMA_Config)) - { - // retrieve BS server variables from PMA configuration - $bs_server = $PMA_Config->get('BLOBSTREAMING_SERVER'); - if (empty($bs_server)) die('No blob streaming server configured!'); - - $bs_file_path = "http://" . $bs_server . '/' . $bsReference; - - if (isset($customType) && $customType) - - $bs_file_path = 'bs_disp_as_mime_type.php' . PMA_generate_common_url(array('reference' => $bsReference, 'c_type' => $mediaType)); - + if (isset($mediaType) && isset($bsReference)) { + if (isset($customType) && $customType) { + $bs_file_path = 'bs_disp_as_mime_type.php' . PMA_generate_common_url(array('reference' => $bsReference, 'c_type' => $mediaType)); + } else { + // Get the BLOB streaming URL + $bs_file_path = PMA_BS_getURL($bsReference); + if (empty($bs_file_path)) { + die(__('No blob streaming server configured!')); + } + } ?> @@ -69,7 +61,6 @@ diff --git a/chk_rel.php b/chk_rel.php index 38ca5c1b0..8955350b0 100644 --- a/chk_rel.php +++ b/chk_rel.php @@ -9,9 +9,7 @@ * Gets some core libraries */ require_once './libraries/common.inc.php'; -$GLOBALS['js_include'][] = 'functions.js'; require_once './libraries/header.inc.php'; -require_once './libraries/relation.lib.php'; /** @@ -23,5 +21,5 @@ $cfgRelation = PMA_getRelationsParam(TRUE); /** * Displays the footer */ -require_once './libraries/footer.inc.php'; +require './libraries/footer.inc.php'; ?> diff --git a/config.sample.inc.php b/config.sample.inc.php index 575e96562..da403fd2b 100644 --- a/config.sample.inc.php +++ b/config.sample.inc.php @@ -35,12 +35,6 @@ $cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['extension'] = 'mysql'; $cfg['Servers'][$i]['AllowNoPassword'] = false; -/* for blobstreaming */ -$cfg['Servers'][$i]['bs_garbage_threshold'] = 50; -$cfg['Servers'][$i]['bs_repository_threshold'] = '32M'; -$cfg['Servers'][$i]['bs_temp_blob_timeout'] = 600; -$cfg['Servers'][$i]['bs_temp_log_threshold'] = '32M'; - /* User for advanced features */ // $cfg['Servers'][$i]['controluser'] = 'pma'; // $cfg['Servers'][$i]['controlpass'] = 'pmapass'; @@ -100,7 +94,7 @@ $cfg['SaveDir'] = ''; /** * Default language to use, if not browser-defined or user-defined - * (you find all languages in the file libraries/select_lang.lib.php) + * (you find all languages in the locale folder) * uncomment the desired line: * default = 'en' */ diff --git a/db_create.php b/db_create.php index 9b1959a54..50e4cf67d 100644 --- a/db_create.php +++ b/db_create.php @@ -9,7 +9,6 @@ * Gets some core libraries */ require_once './libraries/common.inc.php'; -$GLOBALS['js_include'][] = 'functions.js'; require_once './libraries/mysql_charsets.lib.php'; PMA_checkParameters(array('new_db')); diff --git a/db_datadict.php b/db_datadict.php index 6a9c04c5e..7666b567a 100644 --- a/db_datadict.php +++ b/db_datadict.php @@ -18,10 +18,10 @@ if (!isset($selected_tbl)) { /** * Gets the relations settings */ -require_once './libraries/relation.lib.php'; +$cfgRelation = PMA_getRelationsParam(); + require_once './libraries/transformations.lib.php'; -$cfgRelation = PMA_getRelationsParam(); /** * Check parameters @@ -320,5 +320,5 @@ function printPage()
    '; -require_once './libraries/footer.inc.php'; +require './libraries/footer.inc.php'; ?> diff --git a/db_export.php b/db_export.php index dce374a4b..a44469ef2 100644 --- a/db_export.php +++ b/db_export.php @@ -72,5 +72,5 @@ require_once './libraries/display_export.lib.php'; /** * Displays the footer */ -require_once './libraries/footer.inc.php'; +require './libraries/footer.inc.php'; ?> diff --git a/db_operations.php b/db_operations.php index 0fec7b73a..f2ab263ab 100644 --- a/db_operations.php +++ b/db_operations.php @@ -16,12 +16,8 @@ * requirements */ require_once './libraries/common.inc.php'; -require_once './libraries/Table.class.php'; require_once './libraries/mysql_charsets.lib.php'; -// add blobstreaming library functions -require_once "./libraries/blobstreaming.lib.php"; - /** * Rename/move or copy database */ @@ -260,71 +256,11 @@ if (strlen($db) && (! empty($db_rename) || ! empty($db_copy))) { } } -/* - * Enable/Disable/Repair BLOB Repository Monitoring for current database -*/ -if (strlen($db) > 0 && !empty($db_blob_streaming_op)) -{ - // load PMA_Config - $PMA_Config = $GLOBALS['PMA_Config']; - - if (!empty($PMA_Config)) - { - if ($PMA_Config->get('PBXT_NAME') !== strtolower($db)) - { - // if Blobstreaming plugins exist, begin checking for Blobstreaming tables - if ($PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST')) - { - $bs_tables = $PMA_Config->get('BLOBSTREAMABLE_DATABASES'); - $bs_tables = $bs_tables[$db]; - - $oneBSTableExists = FALSE; - - // check if at least one blobstreaming table exists - foreach ($bs_tables as $table_key=>$tbl) - if ($bs_tables[$table_key]['Exists']) - { - $oneBSTableExists = TRUE; - break; - } - - switch ($db_blob_streaming_op) - { - // enable BLOB repository monitoring - case "enable": - // if blobstreaming tables do not exist, create them - if (!$oneBSTableExists) - PMA_BS_CreateTables($db); - break; - // disable BLOB repository monitoring - case "disable": - // if at least one blobstreaming table exists, execute drop - if ($oneBSTableExists) - PMA_BS_DropTables($db); - break; - // repair BLOB repository - case "repair": - // check if a blobstreaming table is missing - foreach ($bs_tables as $table_key=>$tbl) - if (!$bs_tables[$table_key]['Exists']) - { - PMA_DBI_select_db($db); - PMA_DBI_query(PMA_BS_GetTableStruct($table_key)); - } - } - - // refresh side menu - PMA_sendHeaderLocation($cfg['PmaAbsoluteUri'] . 'db_operations.php?' . PMA_generate_common_url ('','', '&') . (isset($db) ? '&db=' . urlencode($db) : '') . (isset($token) ? '&token=' . urlencode($token) : '') . (isset($goto) ? '&goto=' . urlencode($goto) : '') . 'reload=1&purge=1'); - } // end if ($PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST')) - } // end if ($PMA_Config->get('PBXT_NAME') !== strtolower($db)) - } -} /** * Settings for relations stuff */ -require_once './libraries/relation.lib.php'; $cfgRelation = PMA_getRelationsParam(); /** @@ -428,7 +364,41 @@ if (!$is_information_schema) { + +

    + '; +} +echo __('Remove database'); +?> + +
    + get('PBXT_NAME') !== strtolower($db)) - { - if ($PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST')) - { - $bs_tables = $PMA_Config->get('BLOBSTREAMABLE_DATABASES'); - $bs_tables = $bs_tables[$db]; - - $oneBSTableExists = FALSE; - $allBSTablesExist = TRUE; - - // first check that all blobstreaming tables do not exist - foreach ($bs_tables as $table_key=>$tbl) - if ($bs_tables[$table_key]['Exists']) - $oneBSTableExists = TRUE; - else - $allBSTablesExist = FALSE; - - ?> - -
    - -
    - - - - - : - - - -
    -
    - - -
    - - - -
    - - -
    - - - -
    - - -
    - -
    - get('BLOBSTREAMING_PLUGINS_EXIST')) - } // end if ($PMA_Config->get('PBXT_NAME') !== strtolower($db)) - } /** * Change database charset @@ -611,7 +495,7 @@ if (!$is_information_schema) { if ($num_tables > 0 && !$cfgRelation['allworks'] && $cfg['PmaNoRelation_DisableWarning'] == false) { - $message = PMA_Message::notice(__('The additional features for working with linked tables have been deactivated. To find out why click %shere%s.')); + $message = PMA_Message::notice(__('The phpMyAdmin configuration storage has been deactivated. To find out why click %shere%s.')); $message->addParam('', false); $message->addParam('', false); /* Show error if user has configured something, notice elsewhere */ @@ -657,5 +541,5 @@ if ($cfgRelation['pdfwork'] && $num_tables > 0) { ?> /** * Displays the footer */ -require_once './libraries/footer.inc.php'; +require './libraries/footer.inc.php'; ?> diff --git a/db_printview.php b/db_printview.php index 15801a904..36f297c99 100644 --- a/db_printview.php +++ b/db_printview.php @@ -26,7 +26,6 @@ $err_url = 'db_sql.php?' . PMA_generate_common_url($db); /** * Settings for relations stuff */ -require_once './libraries/relation.lib.php'; $cfgRelation = PMA_getRelationsParam(); /** @@ -265,5 +264,5 @@ function printPage() id="print" value="" onclick="printPage()" /> diff --git a/db_qbe.php b/db_qbe.php index 7a08f07bc..2475065fc 100644 --- a/db_qbe.php +++ b/db_qbe.php @@ -10,9 +10,6 @@ * requirements */ require_once './libraries/common.inc.php'; -require_once './libraries/Table.class.php'; -require_once './libraries/relation.lib.php'; - /** * Gets the relation settings @@ -99,7 +96,7 @@ $tbl_result = PMA_DBI_query('SHOW TABLES FROM ' . PMA_backquote($db) . ';', $tbl_result_cnt = PMA_DBI_num_rows($tbl_result); if (0 == $tbl_result_cnt) { PMA_Message::error(__('No tables found in database.'))->display(); - require_once './libraries/footer.inc.php'; + require './libraries/footer.inc.php'; exit; } @@ -940,5 +937,5 @@ if (!empty($qry_orderby)) { /** * Displays the footer */ -require_once './libraries/footer.inc.php'; +require './libraries/footer.inc.php'; ?> diff --git a/db_search.php b/db_search.php index e57c16106..0b68ba3d4 100644 --- a/db_search.php +++ b/db_search.php @@ -350,5 +350,5 @@ $alter_select = /** * Displays the footer */ -require_once './libraries/footer.inc.php'; +require './libraries/footer.inc.php'; ?> diff --git a/db_sql.php b/db_sql.php index 27194b08d..986fb3417 100644 --- a/db_sql.php +++ b/db_sql.php @@ -41,5 +41,5 @@ PMA_sqlQueryForm(true, false, isset($_REQUEST['delimiter']) ? $_REQUEST['delimit /** * Displays the footer */ -require_once './libraries/footer.inc.php'; +require './libraries/footer.inc.php'; ?> diff --git a/db_structure.php b/db_structure.php index 9a6ee24ec..9e118210b 100644 --- a/db_structure.php +++ b/db_structure.php @@ -9,7 +9,6 @@ * */ require_once './libraries/common.inc.php'; -require_once './libraries/Table.class.php'; $GLOBALS['js_include'][] = 'jquery/jquery-ui-1.8.custom.js'; @@ -56,7 +55,7 @@ if ($num_tables == 0) { /** * Displays the footer */ - require_once './libraries/footer.inc.php'; + require './libraries/footer.inc.php'; exit; } @@ -150,25 +149,12 @@ $hidden_fields = array(); $odd_row = true; $sum_row_count_pre = ''; -// for blobstreaming -$PMA_Config = $GLOBALS['PMA_Config']; - -if (!empty($PMA_Config)) - $session_bs_tables = $PMA_Config->get('BLOBSTREAMING_TABLES'); // list of blobstreaming tables - $tableReductionCount = 0; // the amount to reduce the table count by foreach ($tables as $keyname => $each_table) { - if (isset($session_bs_tables)) - { - // compare table name against blobstreaming tables - foreach ($session_bs_tables as $table_key=>$table_val) - // if the table is a blobstreaming table, reduce table count and skip outer foreach loop - if ($table_key == $keyname) - { - $tableReductionCount++; - continue 2; - } + if (PMA_BS_IsHiddenTable($keyname)) { + $tableReductionCount++; + continue; } // Get valid statistics whatever is the table type @@ -612,5 +598,5 @@ if (empty($db_is_information_schema)) { /** * Displays the footer */ -require_once './libraries/footer.inc.php'; +require './libraries/footer.inc.php'; ?> diff --git a/db_tracking.php b/db_tracking.php index f18b9b821..1c8c5cece 100644 --- a/db_tracking.php +++ b/db_tracking.php @@ -8,7 +8,6 @@ * Run common work */ require_once './libraries/common.inc.php'; -require_once './libraries/Table.class.php'; require './libraries/db_common.inc.php'; $url_query .= '&goto=tbl_tracking.php&back=db_tracking.php'; @@ -17,9 +16,6 @@ $url_query .= '&goto=tbl_tracking.php&back=db_tracking.php'; $sub_part = '_structure'; require './libraries/db_info.inc.php'; -// Get relation settings -require_once './libraries/relation.lib.php'; - // Work to do? // (here, do not use $_REQUEST['db] as it can be crafted) if (isset($_REQUEST['delete_tracking']) && isset($_REQUEST['table'])) { @@ -38,7 +34,7 @@ if ($num_tables == 0 && count($data['ddlog']) == 0) { } // Display the footer - require_once './libraries/footer.inc.php'; + require './libraries/footer.inc.php'; exit; } @@ -202,5 +198,5 @@ if (count($data['ddlog']) > 0) { /** * Display the footer */ -require_once './libraries/footer.inc.php'; +require './libraries/footer.inc.php'; ?> diff --git a/error.php b/error.php index 040da492d..117d070a2 100644 --- a/error.php +++ b/error.php @@ -9,7 +9,7 @@ /** * Input sanitizing. */ -require_once './libraries/sanitizing.lib.php'; +require './libraries/sanitizing.lib.php'; /* Get variables */ if (! empty($_REQUEST['lang']) && is_string($_REQUEST['lang'])) { diff --git a/export.php b/export.php index 2db992dee..00639e22a 100644 --- a/export.php +++ b/export.php @@ -59,7 +59,6 @@ if (empty($_REQUEST['asfile'])) { // Does export require to be into file? if (isset($export_list[$type]['force_file']) && ! $asfile) { $message = PMA_Message::error(__('Selected export type has to be saved in file!')); - $GLOBALS['js_include'][] = 'functions.js'; require_once './libraries/header.inc.php'; if ($export_type == 'server') { $active_page = 'server_export.php'; @@ -298,7 +297,6 @@ if ($save_on_server) { } } if (isset($message)) { - $GLOBALS['js_include'][] = 'functions.js'; require_once './libraries/header.inc.php'; if ($export_type == 'server') { $active_page = 'server_export.php'; @@ -350,7 +348,6 @@ if (!$save_on_server) { $num_tables = count($tables); if ($num_tables == 0) { $message = PMA_Message::error(__('No tables found in database.')); - $GLOBALS['js_include'][] = 'functions.js'; require_once './libraries/header.inc.php'; $active_page = 'db_export.php'; require './db_export.php'; @@ -386,7 +383,6 @@ $do_relation = isset($GLOBALS[$what . '_relation']); $do_comments = isset($GLOBALS[$what . '_comments']); $do_mime = isset($GLOBALS[$what . '_mime']); if ($do_relation || $do_comments || $do_mime) { - require_once './libraries/relation.lib.php'; $cfgRelation = PMA_getRelationsParam(); } if ($do_mime) { @@ -565,7 +561,6 @@ if (!PMA_exportFooter()) { // End of fake loop if ($save_on_server && isset($message)) { - $GLOBALS['js_include'][] = 'functions.js'; require_once './libraries/header.inc.php'; if ($export_type == 'server') { $active_page = 'server_export.php'; @@ -622,7 +617,6 @@ if (!empty($asfile)) { $message = new PMA_Message(__('Dump has been saved to file %s.'), PMA_Message::SUCCESS, $save_filename); } - $GLOBALS['js_include'][] = 'functions.js'; require_once './libraries/header.inc.php'; if ($export_type == 'server') { $active_page = 'server_export.php'; @@ -673,6 +667,6 @@ else { //]]> diff --git a/import.php b/import.php index b12306419..dbc4d56ad 100644 --- a/import.php +++ b/import.php @@ -12,7 +12,6 @@ */ require_once './libraries/common.inc.php'; //require_once './libraries/display_import_functions.lib.php'; -$GLOBALS['js_include'][] = 'functions.js'; // reset import messages for ajax request $_SESSION['Import_message']['message'] = null; diff --git a/index.php b/index.php index 3b16ec7d2..16e13d028 100644 --- a/index.php +++ b/index.php @@ -32,11 +32,6 @@ */ require_once './libraries/common.inc.php'; -/** - * Includes the ThemeManager if it hasn't been included yet - */ -require_once './libraries/relation.lib.php'; - // free the session file, for the other frames to be loaded session_write_close(); diff --git a/js/functions.js b/js/functions.js index 8e6cca96c..d43dc4b91 100644 --- a/js/functions.js +++ b/js/functions.js @@ -152,7 +152,7 @@ function confirmQuery(theForm1, sqlQuery1) } // end if } // end if - // Confirms a "DROP/DELETE/ALTER" statement + // Confirms a "DROP/DELETE/ALTER/TRUNCATE" statement // // TODO: find a way (if possible) to use the parser-analyser // for this kind of verification @@ -162,22 +162,24 @@ function confirmQuery(theForm1, sqlQuery1) var do_confirm_re_0 = new RegExp('^\\s*DROP\\s+(IF EXISTS\\s+)?(TABLE|DATABASE|PROCEDURE)\\s', 'i'); var do_confirm_re_1 = new RegExp('^\\s*ALTER\\s+TABLE\\s+((`[^`]+`)|([A-Za-z0-9_$]+))\\s+DROP\\s', 'i'); var do_confirm_re_2 = new RegExp('^\\s*DELETE\\s+FROM\\s', 'i'); + var do_confirm_re_3 = new RegExp('^\\s*TRUNCATE\\s', 'i'); + if (do_confirm_re_0.test(sqlQuery1.value) || do_confirm_re_1.test(sqlQuery1.value) - || do_confirm_re_2.test(sqlQuery1.value)) { + || do_confirm_re_2.test(sqlQuery1.value) + || do_confirm_re_3.test(sqlQuery1.value)) { var message = (sqlQuery1.value.length > 100) ? sqlQuery1.value.substr(0, 100) + '\n ...' : sqlQuery1.value; var is_confirmed = confirm(PMA_messages['strDoYouReally'] + ' :\n' + message); - // drop/delete/alter statement is confirmed -> update the + // statement is confirmed -> update the // "is_js_confirmed" form field so the confirm test won't be // run on the server side and allows to submit the form if (is_confirmed) { theForm1.elements['is_js_confirmed'].value = 1; return true; } - // "DROP/DELETE/ALTER" statement is rejected -> do not submit - // the form + // statement is rejected -> do not submit the form else { window.focus(); sqlQuery1.focus(); diff --git a/libraries/Config.class.php b/libraries/Config.class.php index 225977bef..7389b9f76 100644 --- a/libraries/Config.class.php +++ b/libraries/Config.class.php @@ -9,7 +9,7 @@ /** * Load vendor configuration. */ -require_once('./libraries/vendor_config.php'); +require('./libraries/vendor_config.php'); /** * Configuration class diff --git a/libraries/File.class.php b/libraries/File.class.php index a6a515f44..83f5d14de 100644 --- a/libraries/File.class.php +++ b/libraries/File.class.php @@ -279,118 +279,27 @@ class PMA_File $is_bs_upload = FALSE; // check if this field requires a repository upload - if (isset($_REQUEST['upload_blob_repo_' . $key])) + if (isset($_REQUEST['upload_blob_repo_' . $key])) { $is_bs_upload = ($_REQUEST['upload_blob_repo_' . $key]['multi_edit'][0] == "on") ? TRUE : FALSE; - + } // if request is an upload to the BLOB repository - if ($is_bs_upload) - { - // load PMA configuration - $PMA_Config = $GLOBALS['PMA_Config']; + if ($is_bs_upload) { + $bs_db = $_REQUEST['db']; + $bs_table = $_REQUEST['table']; + $tmp_filename = $file['tmp_name']; + $tmp_file_type = $file['type']; - // if PMA configuration is loaded - if (!empty($PMA_Config)) - { - // load BS variables from PMA configuration - $pluginsExist = $PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST'); - $curlExists = $PMA_Config->get('CURL_EXISTS'); - $bs_database = $PMA_Config->get('BLOBSTREAMABLE_DATABASES'); - $bs_database = $bs_database[$_REQUEST['db']]; + if (! $tmp_file_type) { + $tmp_file_type = NULL; + } - $allBSTablesExist = TRUE; - - // determine if plugins and curl exist - if ($pluginsExist && $curlExists) - { - foreach ($bs_database as $table_key=>$table) - { - if (!$bs_database[$table_key]['Exists']) - { - $allBSTablesExist = FALSE; - break; - } - } - } - else - $allBSTablesExist = FALSE; - - // if necessary BS tables exist - if ($allBSTablesExist) - { - // setup bs variables for uploading - $bs_server = $PMA_Config->get('BLOBSTREAMING_SERVER'); - $bs_db = $_REQUEST['db']; - $bs_table = $_REQUEST['table']; - - // setup file handle and related variables - $tmp_file = fopen($file['tmp_name'], 'r'); - $tmp_file_type = $file['type']; - $tmp_file_size = $file['size']; - - if (!$tmp_file_type) - $tmp_file_type = NULL; - - // if none of the required variables contain data, return with an unknown error message - if (!$bs_server || !$bs_db || !$bs_table || !$tmp_file || !$tmp_file_size) - { - $this->_error_message = __('Unknown error in file upload.'); - return FALSE; - } - else - $bs_server_path = 'http://' . $bs_server . '/' . $bs_db . '/' . $bs_table; - - // init curl handle - $curlHnd = curl_init ($bs_server_path); - - // if curl handle init successful - if ($curlHnd) - { - // specify custom header - $customHeader = array( - "Accept-Language: en-us;en;q=0;5", - "Accept-Charset: ISO-8859-1;utf-8;q=0.7,*;q=0.7", - "Content-type: $tmp_file_type" - ); - - // specify CURL options in array - $curlOptArr = array( - CURLOPT_PUT => TRUE, - CURLOPT_HEADER => TRUE, - CURLOPT_HTTPHEADER => $customHeader, - CURLOPT_INFILESIZE => $tmp_file_size, - CURLOPT_INFILE => $tmp_file, - CURLOPT_RETURNTRANSFER => TRUE - ); - - // pass array of options to curl handle setup function - curl_setopt_array($curlHnd, $curlOptArr); - - // execute curl request and retrieve error message(s) (if any) - $ret = curl_exec($curlHnd); - $errRet = curl_error($curlHnd); - - // close curl handle - curl_close($curlHnd); - - // split entire string into array of lines - $retArr = explode("\r\n", $ret); - - // check each line as a valid string of a BLOB reference - foreach ($retArr as $value) - if (strlen($value) > strlen("~*$bs_db/~") && "~*$bs_db/~" == substr($value, 0, strlen($bs_db) + 4)) - { - // is a valid reference, so set as current and break - PMA_File::setRecentBLOBReference($value); - break; - } - - // close file handle - if ($tmp_file) - fclose($tmp_file); - } // end if ($curlHnd) - } // end if ($allBSTablesExist) - } // end if ($PMA_Config) - } // end if ($is_bs_upload) + if (! $bs_db || ! $bs_table) { + $this->_error_message = $GLOBALS['strUploadErrorUnknown']; + return FALSE; + } + $blob_url = PMA_BS_UpLoadFile($bs_db, $bs_table, $tmp_file_type, $tmp_filename); + PMA_File::setRecentBLOBReference($blob_url); + } // end if ($is_bs_upload) // check for file upload errors switch ($file['error']) { @@ -487,135 +396,43 @@ class PMA_File $is_bs_upload = FALSE; // check if this field requires a repository upload - if (isset($_REQUEST['upload_blob_repo_' . $key])) + if (isset($_REQUEST['upload_blob_repo_' . $key])) { $is_bs_upload = ($_REQUEST['upload_blob_repo_' . $key]['multi_edit'][0] == "on") ? TRUE : FALSE; + } // is a request to upload file to BLOB repository using uploadDir mechanism - if ($is_bs_upload) - { - // load PMA configuration - $PMA_Config = $GLOBALS['PMA_Config']; + if ($is_bs_upload) { + $bs_db = $_REQUEST['db']; + $bs_table = $_REQUEST['table']; + $tmp_filename = $GLOBALS['cfg']['UploadDir'] . '/' . $_REQUEST['fields_uploadlocal_' . $key]['multi_edit'][$primary]; - // if the PMA configuration was loaded - if (!empty($PMA_Config)) - { - // load BS variables from PMA configuration - $pluginsExist = $PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST'); - $curlExists = $PMA_Config->get('CURL_EXISTS'); - $bs_database = $PMA_Config->get('BLOBSTREAMABLE_DATABASES'); - $bs_database = $bs_database[$_REQUEST['db']]; + // check if fileinfo library exists + if ($PMA_Config->get('FILEINFO_EXISTS')) { + // attempt to init fileinfo + $finfo = finfo_open(FILEINFO_MIME); - $allBSTablesExist = TRUE; - - // if plugins and curl exist - if ($pluginsExist && $curlExists) - { - foreach ($bs_database as $table_key=>$table) - { - if (!$bs_database[$table_key]['Exists']) - { - $allBSTablesExist = FALSE; - break; - } - } + // fileinfo exists + if ($finfo) { + // pass in filename to fileinfo and close fileinfo handle after + $tmp_file_type = finfo_file($finfo, $tmp_filename); + finfo_close($finfo); } - else - $allBSTablesExist = FALSE; + } else { + // no fileinfo library exists, use file command + $tmp_file_type = exec("file -bi " . escapeshellarg($tmp_filename)); + } - // if necessary BS tables exist - if ($allBSTablesExist) - { - // load BS variables - $bs_server = $PMA_Config->get('BLOBSTREAMING_SERVER'); - $bs_db = $_REQUEST['db']; - $bs_table = $_REQUEST['table']; + if (! $tmp_file_type) { + $tmp_file_type = NULL; + } - // setup uploadDir mechanism and file variables - $tmp_filename = $GLOBALS['cfg']['UploadDir'] . '/' . $_REQUEST['fields_uploadlocal_' . $key]['multi_edit'][$primary]; - $tmp_file = fopen($tmp_filename, 'r'); - $tmp_file_size = filesize($tmp_filename); - - // check if fileinfo library exists - if ($PMA_Config->get('FILEINFO_EXISTS')) - { - // attempt to init fileinfo - $finfo = finfo_open(FILEINFO_MIME); - - // fileinfo exists - if ($finfo) - { - // pass in filename to fileinfo and close fileinfo handle after - $tmp_file_type = finfo_file($finfo, $tmp_filename); - finfo_close($finfo); - } - } - else // no fileinfo library exists, use file command - $tmp_file_type = exec("file -bi " . escapeshellarg($tmp_filename)); - - if (!$tmp_file_type) - $tmp_file_type = NULL; - - // necessary variables aren't loaded, return error message (unknown error) - if (!$bs_server || !$bs_db || !$bs_table || !$tmp_file || !$tmp_file_size) - { - $this->_error_message = __('Unknown error in file upload.'); - return FALSE; - } - else - $bs_server_path = 'http://' . $bs_server . '/' . $bs_db . '/' . $bs_table; - - // init curl handle - $curlHnd = curl_init ($bs_server_path); - - // curl handle exists - if ($curlHnd) - { - // specify custom header - $customHeader = array( - "Accept-Language: en-us;en;q=0;5", - "Accept-Charset: ISO-8859-1;utf-8;q=0.7,*;q=0.7", - "Content-type: $tmp_file_type" - ); - - // specify custom curl options - $curlOptArr = array( - CURLOPT_PUT => TRUE, - CURLOPT_HEADER => TRUE, - CURLOPT_HTTPHEADER => $customHeader, - CURLOPT_INFILESIZE => $tmp_file_size, - CURLOPT_INFILE => $tmp_file, - CURLOPT_RETURNTRANSFER => TRUE - ); - - // setup custom curl options (as specified in above array) - curl_setopt_array($curlHnd, $curlOptArr); - - // execute curl request and retrieve error message(s) (if any) - $ret = curl_exec($curlHnd); - $errRet = curl_error($curlHnd); - - // close curl handle - curl_close($curlHnd); - - // split return string into lines - $retArr = explode("\r\n", $ret); - - // check subsequent lines for valid BLOB reference string - foreach ($retArr as $value) - if (strlen($value) > strlen("~*$bs_db/~") && "~*$bs_db/~" == substr($value, 0, strlen($bs_db) + 4)) - { - // is a valid reference, so set as current and break - PMA_File::setRecentBLOBReference($value); - break; - } - - // close file handle - if ($tmp_file) - fclose($tmp_file); - } // end if ($curlHnd) - } // end if ($allBSTablesExist) - } // end if ($PMA_Config) - } // end if ($is_bs_upload) + if (! $bs_db || !$bs_table) { + $this->_error_message = $GLOBALS['strUploadErrorUnknown']; + return FALSE; + } + $blob_url = PMA_BS_UpLoadFile($bs_db, $bs_table, $tmp_file_type, $tmp_filename); + PMA_File::setRecentBLOBReference($blob_url); + } // end if ($is_bs_upload) return $this->setLocalSelectedFile($_REQUEST['fields_uploadlocal_' . $key]['multi_edit'][$primary]); } else { @@ -633,127 +450,36 @@ class PMA_File // is a request to upload file to BLOB repository using uploadDir mechanism if ($is_bs_upload) { - // load PMA configuration - $PMA_Config = $GLOBALS['PMA_Config']; + // check if fileinfo library exists + if ($PMA_Config->get('FILEINFO_EXISTS')) + { + // attempt to init fileinfo + $finfo = finfo_open(FILEINFO_MIME); - // if the PMA configuration was loaded - if (!empty($PMA_Config)) - { - // load BS variables from PMA configuration - $pluginsExist = $PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST'); - $curlExists = $PMA_Config->get('CURL_EXISTS'); - $bs_database = $PMA_Config->get('BLOBSTREAMABLE_DATABASES'); - $bs_database = $bs_database[$_REQUEST['db']]; + // if fileinfo exists + if ($finfo) + { + // pass in filename to fileinfo and close fileinfo handle after + $tmp_file_type = finfo_file($finfo, $tmp_filename); + finfo_close($finfo); + } + } + else // no fileinfo library exists, use file command + $tmp_file_type = exec("file -bi " . escapeshellarg($tmp_filename)); - $allBSTablesExist = TRUE; + if (!$tmp_file_type) + $tmp_file_type = NULL; - // if plugins and curl exist - if ($pluginsExist && $curlExists) - { - foreach ($bs_database as $table_key=>$table) - { - if (!$bs_database[$table_key]['Exists']) - { - $allBSTablesExist = FALSE; - break; - } - } - } - else - $allBSTablesExist = FALSE; + $bs_db = $_REQUEST['db']; + $bs_table = $_REQUEST['table']; + if (!$bs_db || !$bs_table) + { + $this->_error_message = $GLOBALS['strUploadErrorUnknown']; + return FALSE; + } + $blob_url = PMA_BS_UpLoadFile($bs_db, $bs_table, $tmp_file_type, $tmp_filename); + PMA_File::setRecentBLOBReference($blob_url); - if ($allBSTablesExist) - { - // load BS variables - $bs_server = $PMA_Config->get('BLOBSTREAMING_SERVER'); - $bs_db = $_REQUEST['db']; - $bs_table = $_REQUEST['table']; - - // setup uploadDir mechanism and file variables - $tmp_filename = $GLOBALS['cfg']['UploadDir'] . '/' . $_REQUEST['fields_uploadlocal_' . $key]['multi_edit'][$primary]; - $tmp_file = fopen($tmp_filename, 'r'); - $tmp_file_size = filesize($tmp_filename); - - // check if fileinfo library exists - if ($PMA_Config->get('FILEINFO_EXISTS')) - { - // attempt to init fileinfo - $finfo = finfo_open(FILEINFO_MIME); - - // if fileinfo exists - if ($finfo) - { - // pass in filename to fileinfo and close fileinfo handle after - $tmp_file_type = finfo_file($finfo, $tmp_filename); - finfo_close($finfo); - } - } - else // no fileinfo library exists, use file command - $tmp_file_type = exec("file -bi " . escapeshellarg($tmp_filename)); - - if (!$tmp_file_type) - $tmp_file_type = NULL; - - // necessary variables aren't loaded, return error message (unknown error) - if (!$bs_server || !$bs_db || !$bs_table || !$tmp_file || !$tmp_file_size) - { - $this->_error_message = __('Unknown error in file upload.'); - return FALSE; - } - else - $bs_server_path = 'http://' . $bs_server . '/' . $bs_db . '/' . $bs_table; - - // init curl handle - $curlHnd = curl_init ($bs_server_path); - - // if curl handle exists - if ($curlHnd) - { - // specify custom header - $customHeader = array( - "Accept-Language: en-us;en;q=0;5", - "Accept-Charset: ISO-8859-1;utf-8;q=0.7,*;q=0.7", - "Content-type: $tmp_file_type" - ); - - // specify custom curl options - $curlOptArr = array( - CURLOPT_PUT => TRUE, - CURLOPT_HEADER => TRUE, - CURLOPT_HTTPHEADER => $customHeader, - CURLOPT_INFILESIZE => $tmp_file_size, - CURLOPT_INFILE => $tmp_file, - CURLOPT_RETURNTRANSFER => TRUE - ); - - // setup custom curl options (as specified in above array) - curl_setopt_array($curlHnd, $curlOptArr); - - // execute curl request and retrieve error message(s) (if any) - $ret = curl_exec($curlHnd); - $errRet = curl_error($curlHnd); - - // close curl handle - curl_close($curlHnd); - - // split return string into lines - $retArr = explode("\r\n", $ret); - - // check subsequent lines for valid BLOB reference string - foreach ($retArr as $value) - if (strlen($value) > strlen("~*$bs_db/~") && "~*$bs_db/~" == substr($value, 0, strlen($bs_db) + 4)) - { - // is a valid reference, so set as current and break - PMA_File::setRecentBLOBReference($value); - break; - } - - // close file handle - if ($tmp_file) - fclose($tmp_file); - } // end if ($curlHnd) - } // end if ($allBSTablesExist) - } // end if ($PMA_Config) } // end if ($is_bs_upload) return $this->setLocalSelectedFile($_REQUEST['fields_uploadlocal_' . $key]); diff --git a/libraries/StorageEngine.class.php b/libraries/StorageEngine.class.php index 2ae125a3e..71b363625 100644 --- a/libraries/StorageEngine.class.php +++ b/libraries/StorageEngine.class.php @@ -91,12 +91,7 @@ class PMA_StorageEngine && ($details['Support'] == 'NO' || $details['Support'] == 'DISABLED')) { continue; } - // currently (MySQL 5.1.26) there is no way we can be informed - // that PBMS does not support normal table creation so - // we use an exception here - if ('PBMS' == $details['Engine']) { - continue; - } + $output .= '