diff --git a/bs_change_mime_type.php b/bs_change_mime_type.php index 8ad8d1abc..51cf6cb3e 100644 --- a/bs_change_mime_type.php +++ b/bs_change_mime_type.php @@ -30,70 +30,21 @@ $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..18fc20169 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,7 +23,9 @@ $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); diff --git a/bs_play_media.php b/bs_play_media.php index ad3c9af51..e1081f9e0 100644 --- a/bs_play_media.php +++ b/bs_play_media.php @@ -27,21 +27,13 @@ // 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)); + 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/db_operations.php b/db_operations.php index e4e6992e7..5850a9e55 100644 --- a/db_operations.php +++ b/db_operations.php @@ -19,9 +19,6 @@ 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,65 +257,6 @@ 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 diff --git a/db_structure.php b/db_structure.php index 9a6ee24ec..e73c02763 100644 --- a/db_structure.php +++ b/db_structure.php @@ -150,27 +150,18 @@ $hidden_fields = array(); $odd_row = true; $sum_row_count_pre = ''; -// for blobstreaming +// added by rajk - 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 $table_is_view = false; diff --git a/libraries/File.class.php b/libraries/File.class.php index a6a515f44..4aec35c70 100644 --- a/libraries/File.class.php +++ b/libraries/File.class.php @@ -285,112 +285,24 @@ class PMA_File // if request is an upload to the BLOB repository if ($is_bs_upload) { - // load PMA configuration - $PMA_Config = $GLOBALS['PMA_Config']; + $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 (!$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 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) + } // end if ($is_bs_upload) // check for file upload errors switch ($file['error']) { @@ -493,129 +405,40 @@ 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']; + $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; + // 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 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 (!$tmp_file_type) + $tmp_file_type = NULL; - // 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']; - // 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); + 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); - // 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) + } // end if ($is_bs_upload) return $this->setLocalSelectedFile($_REQUEST['fields_uploadlocal_' . $key]['multi_edit'][$primary]); } else { @@ -633,127 +456,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..675528c04 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 .= '