Merge commit 'origin/master' into local

Conflicts:
	server_status.php
This commit is contained in:
Martynas Mickevicius
2010-07-29 14:14:26 +03:00
342 changed files with 194811 additions and 179626 deletions

View File

@@ -3,14 +3,13 @@
/**
*
*
* @version $Id$
* @package phpMyAdmin
*/
/**
* Load vendor configuration.
*/
require_once('./libraries/vendor_config.php');
require('./libraries/vendor_config.php');
/**
* Configuration class
@@ -994,7 +993,6 @@ class PMA_Config
* @uses $GLOBALS['PMA_Config']
* @uses PMA_Config::get()
* @uses PMA_Config::_getFontsizeOptions()
* @uses __('Font size')
* @static
* @param string $current_size currently slected font size with unit
* @return string html selectbox
@@ -1031,7 +1029,6 @@ class PMA_Config
*
* @uses PMA_generate_common_hidden_inputs()
* @uses PMA_Config::_getFontsizeSelection()
* @uses __('Go')
* @static
* @param string $current_size currently slected font size with unit
* @return string html selectbox
@@ -1086,10 +1083,13 @@ class PMA_Config
if ($validity == null) {
$validity = 2592000;
}
if (strlen($value) && null !== $default && $value === $default
&& isset($_COOKIE[$cookie])) {
// remove cookie, default value is used
return $this->removeCookie($cookie);
if (strlen($value) && null !== $default && $value === $default) {
// default value is used
if (isset($_COOKIE[$cookie])) {
// remove cookie
return $this->removeCookie($cookie);
}
return false;
}
if (! strlen($value) && isset($_COOKIE[$cookie])) {

View File

@@ -3,7 +3,6 @@
/**
* Holds class PMA_Error
*
* @version $Id$
* @package phpMyAdmin
*/

View File

@@ -3,7 +3,6 @@
/**
* Holds class PMA_Error_Handler
*
* @version $Id$
* @package phpMyAdmin
*/

View File

@@ -3,7 +3,6 @@
/**
* file upload functions
*
* @version $Id$
* @package phpMyAdmin
*/
@@ -259,13 +258,6 @@ class PMA_File
* @uses PMA_File::setRecentBLOBReference()
* @uses curl_setopt_array()
* @uses PMA_File::$_error_message
* @uses __('The uploaded file exceeds the upload_max_filesize directive in php.ini.')
* @uses __('The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.')
* @uses __('The uploaded file was only partially uploaded.')
* @uses __('Missing a temporary folder.')
* @uses __('Failed to write file to disk.')
* @uses __('File upload stopped by extension.')
* @uses __('Unknown error in file upload.')
* @uses $_FILES
* @param string $key a numeric key used to identify the different rows
* @param string $primary_key
@@ -287,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']) {
@@ -495,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 {
@@ -641,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]);
@@ -832,7 +550,6 @@ class PMA_File
/**
*
* @access public
* @uses __('File could not be read')
* @uses PMA_File::setName()
* @uses PMA_securePath()
* @uses PMA_userDir()
@@ -881,7 +598,6 @@ class PMA_File
* @todo move check of $cfg['TempDir'] into PMA_Config?
* @access public
* @uses $cfg['TempDir']
* @uses __('Error moving the uploaded file, see [a@./Documentation.html#faq1_11@Documentation]FAQ 1.11[/a]')
* @uses PMA_File::isReadable()
* @uses PMA_File::getName()
* @uses PMA_File::setName()
@@ -937,7 +653,6 @@ class PMA_File
*
* @todo move file read part into readChunk() or getChunk()
* @todo add support for compression plugins
* @uses __('File could not be read')
* @uses PMA_File::$_compression to set it
* @uses PMA_File::getName()
* @uses fopen()

View File

@@ -3,7 +3,6 @@
/**
* holds the database index class
*
* @version $Id$
* @package phpMyAdmin
*/
@@ -539,7 +538,6 @@ class PMA_Index
/**
* Function to check over array of indexes and look for common problems
*
* @uses __('The indexes %1 and %2 seem to be equal and one of them could possibly be removed.')
* @uses is_string()
* @uses is_array()
* @uses count()

View File

@@ -3,7 +3,6 @@
/**
* hold the PMA_List base class
*
* @version $Id$
* @package phpMyAdmin
*/

View File

@@ -3,7 +3,6 @@
/**
* holds the PMA_List_Database class
*
* @version $Id$
* @package phpMyAdmin
*/

View File

@@ -3,7 +3,6 @@
/**
* Holds class PMA_Message
*
* @version $Id$
* @package phpMyAdmin
*/

View File

@@ -3,7 +3,6 @@
/**
* Library for extracting information about the partitions
*
* @version $Id$
* @package phpMyAdmin
*/

View File

@@ -3,7 +3,6 @@
/**
* Library for extracting information about the available storage engines
*
* @version $Id$
* @package phpMyAdmin
*/
@@ -92,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 .= ' <option value="' . htmlspecialchars($key). '"'
. (empty($details['Comment'])
? '' : ' title="' . htmlspecialchars($details['Comment']) . '"')
@@ -145,6 +139,9 @@ class PMA_StorageEngine
*/
static public function isValid($engine)
{
if ($engine == "PBMS") {
return TRUE;
}
$storage_engines = PMA_StorageEngine::getStorageEngines();
return isset($storage_engines[$engine]);
}
@@ -155,7 +152,6 @@ class PMA_StorageEngine
* @uses PMA_ENGINE_DETAILS_TYPE_SIZE
* @uses PMA_ENGINE_DETAILS_TYPE_NUMERIC
* @uses PMA_StorageEngine::getVariablesStatus()
* @uses __('There is no detailed status information available for this storage engine.')
* @uses PMA_showHint()
* @uses PMA_formatByteDown()
* @uses PMA_formatNumber()
@@ -267,6 +263,8 @@ class PMA_StorageEngine
return $mysql_vars;
}
function engine_init() {}
/**
* Constructor
*
@@ -305,7 +303,9 @@ class PMA_StorageEngine
default:
$this->support = PMA_ENGINE_SUPPORT_NO;
}
}
} else {
$this->engine_init();
}
}
/**
@@ -335,11 +335,6 @@ class PMA_StorageEngine
/**
* public String getSupportInformationMessage()
*
* @uses __('%s is the default storage engine on this MySQL server.')
* @uses __('%s is available on this MySQL server.')
* @uses __('%s has been disabled for this MySQL server.')
* @uses __('This MySQL server does not support the %s storage engine.')
* @uses __('This MySQL server does not support the %s storage engine.')
* @uses PMA_ENGINE_SUPPORT_DEFAULT
* @uses PMA_ENGINE_SUPPORT_YES
* @uses PMA_ENGINE_SUPPORT_DISABLED

View File

@@ -2,7 +2,6 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/
@@ -782,7 +781,6 @@ class PMA_Table
$GLOBALS['sql_query'] .= "\n\n" . $sql_insert_data . ';';
}
require_once './libraries/relation.lib.php';
$GLOBALS['cfgRelation'] = PMA_getRelationsParam();
// Drops old table if the user has requested to move it
@@ -1058,7 +1056,6 @@ class PMA_Table
* @todo move into extra function PMA_Relation::renameTable($new_name, $old_name, $new_db, $old_db)
*/
// Move old entries from comments to new table
require_once './libraries/relation.lib.php';
$GLOBALS['cfgRelation'] = PMA_getRelationsParam();
if ($GLOBALS['cfgRelation']['commwork']) {
$remove_query = '

View File

@@ -3,7 +3,6 @@
/**
* hold PMA_Theme class
*
* @version $Id$
* @package phpMyAdmin
*/
@@ -145,7 +144,6 @@ class PMA_Theme {
* @uses PMA_Theme::setImgPath()
* @uses PMA_Theme::getName()
* @uses $GLOBALS['cfg']['ThemePath']
* @uses __('No valid image path for theme %s found!')
* @uses is_dir()
* @uses sprintf()
*/
@@ -357,8 +355,6 @@ class PMA_Theme {
* @uses PMA_Theme::getVersion()
* @uses PMA_Theme::getId()
* @uses PMA_Theme::getPath()
* @uses __('No preview available.')
* @uses __('take it')
* @uses PMA_generate_common_url()
* @uses addslashes()
* @uses file_exists()

View File

@@ -2,15 +2,9 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/
/**
*
*/
require_once './libraries/Theme.class.php';
/**
*
* @package phpMyAdmin

View File

@@ -2,15 +2,9 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/
/**
* Gets relation settings
*/
require_once './libraries/relation.lib.php';
/**
* This class tracks changes on databases, tables and views.
* For more information please see phpMyAdmin/Documentation.html

View File

@@ -4,7 +4,6 @@
* Set of functions used to run config authentication (ie no authentication).
*
* @package phpMyAdmin-Auth-Config
* @version $Id$
*/
@@ -132,7 +131,7 @@ function PMA_auth_fails()
echo '</tr>' . "\n";
}
echo '</table>' . "\n";
require_once './libraries/footer.inc.php';
require './libraries/footer.inc.php';
return TRUE;
} // end of the 'PMA_auth_fails()' function

View File

@@ -2,11 +2,8 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Set of functions used to run cookie based authentication.
* Thanks to Piotr Roszatycki <d3xter at users.sourceforge.net> and
* Dan Wilson who built this patch for the Debian package.
*
* @package phpMyAdmin-Auth-Cookie
* @version $Id$
*/
if (! defined('PHPMYADMIN')) {
@@ -117,17 +114,6 @@ function PMA_get_blowfish_secret() {
* @uses $GLOBALS['target']
* @uses $GLOBALS['db']
* @uses $GLOBALS['table']
* @uses __('Welcome to %s')
* @uses __('The configuration file now needs a secret passphrase (blowfish_secret).')
* @uses __('Error')
* @uses __('Log in')
* @uses __('Server:')
* @uses __('Username:')
* @uses __('Password:')
* @uses __('Server Choice')
* @uses __('Go')
* @uses __('Cookies must be enabled past this point.')
* @uses __('phpMyAdmin documentation')
* @uses $GLOBALS['pmaThemeImage']
* @uses $cfg['Servers']
* @uses $cfg['LoginCookieRecall']
@@ -194,6 +180,7 @@ if (top != self) {
}
//]]>
</script>
<script src="./js/functions.js" type="text/javascript"></script>
</head>
<body class="loginform">
@@ -326,22 +313,6 @@ if (top != self) {
}
?>
</div>
<script type="text/javascript">
// <![CDATA[
function PMA_focusInput()
{
var input_username = document.getElementById('input_username');
var input_password = document.getElementById('input_password');
if (input_username.value == '') {
input_username.focus();
} else {
input_password.focus();
}
}
window.setTimeout('PMA_focusInput()', 500);
// ]]>
</script>
<?php
if (file_exists(CUSTOM_FOOTER_FILE)) {
require CUSTOM_FOOTER_FILE;
@@ -646,9 +617,6 @@ function PMA_auth_set_user()
*
* @uses $GLOBALS['server']
* @uses $GLOBALS['allowDeny_forbidden']
* @uses __('Access denied')
* @uses __('No activity within %s seconds; please log in again')
* @uses __('Cannot log in to the MySQL server')
* @uses $GLOBALS['no_activity']
* @uses $cfg['LoginCookieValidity']
* @uses $GLOBALS['PMA_Config']->removeCookie()

View File

@@ -5,7 +5,6 @@
* NOTE: Requires PHP loaded as a Apache module.
*
* @package phpMyAdmin-Auth-HTTP
* @version $Id$
*/

View File

@@ -4,7 +4,6 @@
* Set of functions used to run single signon authentication.
*
* @package phpMyAdmin-Auth-Signon
* @version $Id$
*/

View File

@@ -390,7 +390,7 @@ function Swekey_GetFastHalfRndToken()
$_SESSION['rnd-token-date'] = time();
if (! empty($cachefile))
{
// we unlink the file so no possible tempfile race attack (thanks Thijs)
// we unlink the file so no possible tempfile race attack
unlink($cachefile);
$file = fopen($cachefile , "x");
if ($file != FALSE)

View File

@@ -4,6 +4,41 @@
* @package BLOBStreaming
*/
function initPBMSDatabase()
{
$query = "create database IF NOT EXISTS pbms;"; // If no other choice then try this.
/*
* The user may not have privileges to create the 'pbms' database
* so if it doesn't exist then we perform a select on a pbms system
* table in an already existing database which will cause the PBMS
* daemon to create the 'pbms' database.
*/
$db_array = PMA_DBI_fetch_result('SHOW DATABASES;');
if (! empty($db_array)) {
$target = "";
foreach ($db_array as $current_db) {
if ($current_db == 'pbms') {
return TRUE;
}
if ($target == "") {
if (($current_db != 'pbxt') && ($current_db != 'mysql') && ($current_db != 'information_schema')) {
$target = $current_db;
}
}
}
if ($target != "") {
$query = "select * from $target.pbms_metadata_header"; // If it exists this table will not contain much
}
}
$result = PMA_DBI_query($query );
if (! $result) {
return FALSE;
}
return TRUE;
}
/**
* checks whether the necessary plugins for BLOBStreaming exist
*
@@ -13,7 +48,6 @@
* @uses PMA_Config::set()
* @uses PMA_BS_SetVariables()
* @uses PMA_BS_GetVariables()
* @uses PMA_BS_SetFieldReferences()
* @uses PMA_cacheSet()
* @uses PMA_cacheGet()
* @return boolean
@@ -28,12 +62,6 @@ function checkBLOBStreamingPlugins()
return FALSE;
}
// At this point we might already know that plugins do not exist
// because this was recorded in the session (cache).
if (PMA_cacheGet('skip_blobstreaming', true)) {
return false;
}
// If we don't know that we can skip blobstreaming, we continue
// verifications; anyway, in case we won't skip blobstreaming,
// we still need to set some variables in non-persistent settings,
@@ -63,96 +91,67 @@ function checkBLOBStreamingPlugins()
$serverCfg['socket'] = "";
}
$allPluginsExist = false;
$has_blobstreaming = false;
if (PMA_MYSQL_INT_VERSION >= 50109) {
$PMA_Config->set('PBXT_NAME', 'pbxt');
$PMA_Config->set('PBMS_NAME', 'pbms');
$required_plugins[$PMA_Config->get('PBXT_NAME')]['Library'] = 'libpbxt.so';
$required_plugins[$PMA_Config->get('PBMS_NAME')]['Library'] = 'libpbms.so';
$number_of_required_plugins_found = 0;
// Retrieve MySQL plugins
$existing_plugins = PMA_DBI_fetch_result('SHOW PLUGINS');
foreach ($existing_plugins as $one_existing_plugin) {
foreach ($existing_plugins as $one_existing_plugin) {
// check if required plugins exist
foreach ($required_plugins as $one_required_plugin) {
if ( strtolower($one_existing_plugin['Library']) == strtolower($one_required_plugin['Library'])
&& $one_existing_plugin['Status'] == "ACTIVE") {
$number_of_required_plugins_found++;
}
}
if (2 == $number_of_required_plugins_found) {
$allPluginsExist = true;
if ( strtolower($one_existing_plugin['Library']) == 'libpbms.so'
&& $one_existing_plugin['Status'] == "ACTIVE") {
$has_blobstreaming = true;
break;
}
}
unset($required_plugins, $existing_plugins, $one_required_plugin, $one_existing_plugin, $number_of_required_plugins_found);
unset($existing_plugins, $one_existing_plugin);
}
// set variable indicating BS plugin existence
$PMA_Config->set('BLOBSTREAMING_PLUGINS_EXIST', $allPluginsExist);
$PMA_Config->set('BLOBSTREAMING_PLUGINS_EXIST', $has_blobstreaming);
if ($allPluginsExist) {
// retrieve BS variables from PMA configuration
$bs_set_variables = array();
$bs_set_variables[$PMA_Config->get('PBMS_NAME') . '_garbage_threshold'] = (isset($serverCfg['bs_garbage_threshold'])) ? $serverCfg['bs_garbage_threshold'] : NULL;
$bs_set_variables[$PMA_Config->get('PBMS_NAME') . '_repository_threshold'] = (isset($serverCfg['bs_repository_threshold'])) ? $serverCfg['bs_repository_threshold'] : NULL;
$bs_set_variables[$PMA_Config->get('PBMS_NAME') . '_temp_blob_timeout'] = (isset($serverCfg['bs_temp_blob_timeout'])) ? $serverCfg['bs_temp_blob_timeout'] : NULL;
$bs_set_variables[$PMA_Config->get('PBMS_NAME') . '_temp_log_threshold'] = (isset($serverCfg['bs_temp_log_threshold'])) ? $serverCfg['bs_temp_log_threshold'] : NULL;
// set BS variables to PMA configuration defaults
PMA_BS_SetVariables($bs_set_variables);
// retrieve updated BS variables (configurable and unconfigurable)
if ($has_blobstreaming) {
$bs_variables = PMA_BS_GetVariables();
// if no BS variables exist, set plugin existence to false and return
// if no BS variables exist, set plugin existence to false and return
if (count($bs_variables) <= 0) {
$PMA_Config->set('BLOBSTREAMING_PLUGINS_EXIST', FALSE);
PMA_cacheSet('skip_blobstreaming', true, true);
return FALSE;
} // end if (count($bs_variables) <= 0)
// switch on BS field references
if (strtolower($bs_variables[$PMA_Config->get('PBMS_NAME') . '_field_references']) == "off") {
if (! PMA_BS_SetFieldReferences('ON')) {
PMA_cacheSet('skip_blobstreaming', true, true);
return FALSE;
}
}
// get BS server port
$BS_PORT = $bs_variables['pbms_port'];
// get BS server port
$BS_PORT = $bs_variables[$PMA_Config->get('PBMS_NAME') . '_port'];
// if no BS server port exists, set plugin existance to false and return
if (! $BS_PORT) {
// if no BS server port or 'pbms' database exists, set plugin existance to false and return
if ((! $BS_PORT) || (! initPBMSDatabase())) {
$PMA_Config->set('BLOBSTREAMING_PLUGINS_EXIST', FALSE);
PMA_cacheSet('skip_blobstreaming', true, true);
return FALSE;
} // end if (!$BS_PORT)
// Ping PBMS: the database doesn't need to exist for this to work.
if (pbms_connect($serverCfg['host'], $BS_PORT, "anydb") == FALSE) {
$PMA_Config->set('BLOBSTREAMING_PLUGINS_EXIST', FALSE);
PMA_cacheSet('skip_blobstreaming', true, true);
return FALSE;
}
pbms_close();
if (function_exists("pbms_pconnect")) {
$PMA_Config->set('PBMS_PCONNECT_EXISTS', TRUE);
} else {
$PMA_Config->set('PBMS_PCONNECT_EXISTS', FALSE);
}
// add selected BS, CURL and fileinfo library variables to PMA configuration
$PMA_Config->set('BLOBSTREAMING_PORT', $BS_PORT);
$PMA_Config->set('BLOBSTREAMING_HOST', $serverCfg['host']);
$PMA_Config->set('BLOBSTREAMING_SERVER', $serverCfg['host'] . ':' . $BS_PORT);
$PMA_Config->set('CURL_EXISTS', FALSE);
$PMA_Config->set('PHP_PBMS_EXISTS', FALSE);
$PMA_Config->set('FILEINFO_EXISTS', FALSE);
// check if CURL exists
if (function_exists("curl_init")) {
// initialize curl handler
$curlHnd = curl_init();
// CURL exists, set necessary variable and close resource
if (! empty($curlHnd)) {
$PMA_Config->set('CURL_EXISTS', TRUE);
curl_close($curlHnd);
} // end if (!empty($curlHnd))
} // end if (function_exists("curl_init"))
// check if PECL's fileinfo library exist
$finfo = NULL;
@@ -165,180 +164,15 @@ function checkBLOBStreamingPlugins()
$PMA_Config->set('FILEINFO_EXISTS', TRUE);
finfo_close($finfo);
} // end if (!empty($finfo))
} else {
PMA_cacheSet('skip_blobstreaming', true, true);
return FALSE;
} // end if ($allPluginsExist)
$bs_tables = array();
// specify table structure for BS reference table
$bs_tables[$PMA_Config->get('PBMS_NAME') . '_reference'] = array();
$bs_tables[$PMA_Config->get('PBMS_NAME') . '_reference']['struct'] = <<<EOD
CREATE TABLE {$PMA_Config->get('PBMS_NAME')}_reference
(
Table_name CHAR(64) COMMENT 'The name of the referencing table',
Blob_id BIGINT COMMENT 'The BLOB reference number - part of the BLOB URL',
Column_name CHAR(64) COMMENT 'The column name of the referencing field',
Row_condition VARCHAR(255) COMMENT 'This condition identifies the row in the table',
Blob_url VARCHAR(200) COMMENT 'The BLOB URL for HTTP GET access',
Repository_id INT COMMENT 'The repository file number of the BLOB',
Repo_blob_offset BIGINT COMMENT 'The offset in the repository file',
Blob_size BIGINT COMMENT 'The size of the BLOB in bytes',
Deletion_time TIMESTAMP COMMENT 'The time the BLOB was deleted',
Remove_in INT COMMENT 'The number of seconds before the reference/BLOB is removed perminently',
Temp_log_id INT COMMENT 'Temporary log number of the referencing deletion entry',
Temp_log_offset BIGINT COMMENT 'Temporary log offset of the referencing deletion entry'
) ENGINE=PBMS;
EOD;
// specify table structure for BS repository table
$bs_tables[$PMA_Config->get('PBMS_NAME') . '_repository'] = array();
$bs_tables[$PMA_Config->get('PBMS_NAME') . '_repository']['struct'] = <<<EOD
CREATE TABLE {$PMA_Config->get('PBMS_NAME')}_repository
(
Repository_id INT COMMENT 'The repository file number',
Repo_blob_offset BIGINT COMMENT 'The offset of the BLOB in the repository file',
Blob_size BIGINT COMMENT 'The size of the BLOB in bytes',
Head_size SMALLINT UNSIGNED COMMENT 'The size of the BLOB header - proceeds the BLOB data',
Access_code INT COMMENT 'The 4-byte authorisation code required to access the BLOB - part of the BLOB URL',
Creation_time TIMESTAMP COMMENT 'The time the BLOB was created',
Last_ref_time TIMESTAMP COMMENT 'The last time the BLOB was referenced',
Last_access_time TIMESTAMP COMMENT 'The last time the BLOB was accessed (read)',
Content_type CHAR(128) COMMENT 'The content type of the BLOB - returned by HTTP GET calls',
Blob_data LONGBLOB COMMENT 'The data of this BLOB'
) ENGINE=PBMS;
EOD;
// specify table structure for BS custom content type table
$bs_tables[$PMA_Config->get('PBMS_NAME') . '_custom_content_type'] = array();
$bs_tables[$PMA_Config->get('PBMS_NAME') . '_custom_content_type']['struct'] = <<<EOD
CREATE TABLE {$PMA_Config->get('PBMS_NAME')}_custom_content_type
(
Blob_url VARCHAR(200) COMMENT 'The BLOB URL for HTTP GET access',
Content_type VARCHAR(255) COMMENT 'The custom MIME type for a given BLOB reference as specified by the user',
PRIMARY KEY(Blob_url)
);
EOD;
// add BS tables to PMA configuration
$PMA_Config->set('BLOBSTREAMING_TABLES', $bs_tables);
} // end if ($has_blobstreaming)
return TRUE;
}
/**
* checks for databases that support BLOBStreaming
*
* @access public
* @uses PMA_GetDatabases()
* @uses PMA_TablesExist()
* @uses PMA_Config::set()
*/
function checkBLOBStreamableDatabases()
{
// load PMA configuration
$PMA_Config = $GLOBALS['PMA_Config'];
$serverCfg = $GLOBALS['cfg']['Server'];
// retrieve BS tables from PMA configuration
$session_bs_tables = $PMA_Config->get('BLOBSTREAMING_TABLES');
$bs_databases = array();
$bs_tables = array();
// return if BS tables do not exist
if (!$session_bs_tables)
return;
foreach ($session_bs_tables as $table_key=>$table)
{
$bs_tables[$table_key] = array();
$bs_tables[$table_key]['Exists'] = FALSE;
}
// retrieve MySQL databases
$databases = PMA_GetDatabases();
// check if BS tables exist for each database
foreach ($databases as $db_key=>$db_name)
{
$bs_databases[$db_name] = $bs_tables;
PMA_TablesExist($bs_databases[$db_name], $db_name);
}
// set BS databases in PMA configuration
$PMA_Config->set('BLOBSTREAMABLE_DATABASES', $bs_databases);
}
/**
* checks whether a given set of tables exist in a given database
*
* @access public
* @param array - list of tables to look for
* @param string - name of database
* @uses PMA_DBI_select_db()
* @uses PMA_DBI_query()
* @uses PMA_DBI_fetch_assoc()
*/
function PMA_TablesExist(&$tables, $db_name)
{
// select specified database
PMA_DBI_select_db($db_name);
// run query to retrieve tables in specified database
$query = "SHOW TABLES";
$result = PMA_DBI_query($query);
// while there are records to parse
while ($data = @PMA_DBI_fetch_assoc($result))
{
$state = TRUE;
// check if necessary tables exist
foreach ($tables as $table_key=>$table)
if (!$table['Exists'])
if ($data['Tables_in_' . $db_name] == $table_key)
$tables[$table_key]['Exists'] = TRUE;
else
if ($state)
$state = FALSE;
// break if necessary tables are found before all records are parsed
if ($state)
break;
} // end while ($data = @PMA_DBI_fetch_assoc($result))
}
/**
* returns a list of databases
*
* @access public
* @uses PMA_DBI_query()
* @uses PMA_DBI_fetch_assoc()
* @return array - list of databases acquired via MySQL
*/
function PMA_GetDatabases()
{
// run query to retrieve databases
$query = "SHOW DATABASES";
$result = PMA_DBI_query($query);
$databases = array();
// while there are records to parse
while ($data = @PMA_DBI_fetch_assoc($result))
$databases[] = $data['Database'];
// return list of databases
return $databases;
}
/**
* sets BLOBStreaming variables to a list of specified arguments
* @access public
@@ -388,7 +222,7 @@ function PMA_BS_GetVariables()
return NULL;
// run query to retrieve BS variables
$query = "SHOW VARIABLES LIKE '%" . $PMA_Config->get('PBMS_NAME') . "%'";
$query = "SHOW VARIABLES LIKE '%pbms%'";
$result = PMA_DBI_query($query);
$BS_Variables = array();
@@ -401,136 +235,263 @@ function PMA_BS_GetVariables()
return $BS_Variables;
}
/**
* sets the BLOBStreaming global field references to ON/OFF
*
* @access public
* @param string - ON or OFF
* @uses PMA_Config::get()
* @uses PMA_sqlAddslashes()
* @uses PMA_DBI_query()
* @return boolean - success/failure of query execution
*/
function PMA_BS_SetFieldReferences($val)
//========================
//========================
function PMA_BS_ReportPBMSError($msg)
{
$tmp_err = pbms_error();
PMA_showMessage("PBMS error, $msg $tmp_err");
}
//------------
function PMA_do_connect($db_name, $quiet)
{
// load PMA configuration
$PMA_Config = $GLOBALS['PMA_Config'];
// return if unable to load PMA configuration
if (empty($PMA_Config))
return FALSE;
// set field references to value specified
$query = "SET GLOBAL " . $PMA_Config->get('PBMS_NAME') . "_field_references=" . PMA_sqlAddslashes($val);
$result = PMA_DBI_try_query($query, null, 0);
// generate bs reference link
$pbms_host = $PMA_Config->get('BLOBSTREAMING_HOST');
$pbms_port = $PMA_Config->get('BLOBSTREAMING_PORT');
// get last known error (if applicable)
PMA_DBI_getError();
// return success of query execution
if ($result && 0 == $GLOBALS['errno'])
return TRUE;
else
return FALSE;
}
/**
* gets the SQL table definition for a given BLOBStreaming table
*
* @access public
* @param string - table name
* @uses PMA_Config::get()
* @return string - SQL table definition
*/
function PMA_BS_GetTableStruct($tbl_name)
{
// retrieve table structures for BS tables
$bs_tables = $GLOBALS['PMA_Config']->get('BLOBSTREAMING_TABLES');
// return if tables don't exist
if (!$bs_tables)
return;
// return if specified table doesn't exist in collection of BS tables
if (!isset($bs_tables[$tbl_name]))
return;
// return specified table's structure
return $bs_tables[$tbl_name]['struct'];
}
/**
* creates the BLOBStreaming tables for a given database
*
* @access public
* @param string - database name
* @uses PMA_Config::get()
* @uses PMA_DBI_select_db()
* @uses PMA_DBI_query()
* @uses PMA_BS_GetTableStruct()
* @return boolean - success/failure of transactional query execution
*/
function PMA_BS_CreateTables($db_name)
{
// retrieve BS tables
$bs_tables = $GLOBALS['PMA_Config']->get('BLOBSTREAMING_TABLES');
// select specified database
PMA_DBI_select_db($db_name);
// create necessary BS tables for specified database
foreach ($bs_tables as $table_key=>$table)
{
$result = PMA_DBI_query(PMA_BS_GetTableStruct($table_key));
// return false if query execution fails
if (!$result)
return FALSE;
if ($PMA_Config->get('PBMS_PCONNECT_EXISTS')) {
// Open a persistent connection.
$ok = pbms_pconnect($pbms_host, $pbms_port, $db_name);
} else {
$ok = pbms_connect($pbms_host, $pbms_port, $db_name);
}
// return true on success
if ($ok == FALSE) {
if ($quiet == FALSE) {
PMA_BS_ReportPBMSError("PBMS Connection failed: pbms_connect($pbms_host, $pbms_port, $db_name)");
}
return FALSE;
}
return TRUE;
}
/**
* drops BLOBStreaming tables for a given database
*
* @access public
* @param string - database name
* @uses PMA_Config::get()
* @uses PMA_DBI_select_db()
* @uses PMA_backquote()
* @uses PMA_DBI_query()
* @return boolean - success/failure of transactional query execution
*/
function PMA_BS_DropTables($db_name)
//------------
function PMA_do_disconnect()
{
pbms_close();
}
//------------
/**
* checks whether the BLOB reference looks valid
*
*/
function PMA_BS_IsPBMSReference($bs_reference, $db_name)
{
if (PMA_cacheGet('skip_blobstreaming', true)) {
return FALSE;
}
// You do not really need a connection to the PBMS Daemon
// to check if a reference looks valid.
$ok = pbms_is_blob_reference($bs_reference);
return $ok ;
}
//------------
function PMA_BS_CreateReferenceLink($bs_reference, $db_name)
{
if (PMA_do_connect($db_name, FALSE) == FALSE) {
return 'Error';
}
if (pbms_get_info(trim($bs_reference)) == FALSE) {
PMA_BS_ReportPBMSError("PBMS get BLOB info failed: pbms_get_info($bs_reference)");
PMA_do_disconnect();
return 'Error';
}
$content_type = pbms_get_metadata_value("Content-Type");
if ($content_type == FALSE) {
$br = trim($bs_reference);
PMA_BS_ReportPBMSError("'$content_type' PMA_BS_CreateReferenceLink('$br', '$db_name'): get BLOB Content-Type failed: ");
}
PMA_do_disconnect();
if (! $content_type) {
$content_type = "image/jpeg";
}
$bs_url = PMA_BS_getURL($bs_reference);
if (empty($bs_url)) {
PMA_BS_ReportPBMSError("No blob streaming server configured!");
return 'Error';
}
$output = "<a href=\"#\" onclick=\"requestMIMETypeChange('" . urlencode($db_name) . "', '" . urlencode($GLOBALS['table']) . "', '" . urlencode($bs_reference) . "', '" . urlencode($content_type) . "')\">$content_type</a>";
// specify custom HTML for various content types
switch ($content_type) {
// no content specified
case NULL:
$output = "NULL";
break;
// image content
case 'image/jpeg':
case 'image/png':
$output .= ' (<a href="' . $bs_url . '" target="new">' . __('View image') . '</a>)';
break;
// audio content
case 'audio/mpeg':
$output .= ' (<a href="#" onclick="popupBSMedia(\'' . PMA_generate_common_url() . '\',\'' . urlencode($bs_reference) . '\', \'' . urlencode($content_type) . '\',' . ($is_custom_type ? 1 : 0) . ', 640, 120)">' . __('Play audio'). '</a>)';
break;
// video content
case 'application/x-flash-video':
case 'video/mpeg':
$output .= ' (<a href="#" onclick="popupBSMedia(\'' . PMA_generate_common_url() . '\',\'' . urlencode($bs_reference) . '\', \'' . urlencode($content_type) . '\',' . ($is_custom_type ? 1 : 0) . ', 640, 480)">' . __('View video') . '</a>)';
break;
// unsupported content. specify download
default:
$output .= ' (<a href="' . $bs_url . '" target="new">' . __('Download file'). '</a>)';
}
return $output;
}
//------------
// In the future there may be server variables to turn on/off PBMS
// BLOB streaming on a per table or database basis. So in anticipation of this
// PMA_BS_IsTablePBMSEnabled() passes in the table and database name even though
// they are not currently needed.
function PMA_BS_IsTablePBMSEnabled($db_name, $tbl_name, $tbl_type)
{
if (PMA_cacheGet('skip_blobstreaming', true)) {
return FALSE;
}
if ((isset($tbl_type) == FALSE) || (strlen($tbl_type) == 0)) {
return FALSE;
}
// load PMA configuration
$PMA_Config = $GLOBALS['PMA_Config'];
// return if unable to load PMA configuration
if (empty($PMA_Config))
if (empty($PMA_Config)) {
return FALSE;
}
// retrieve BS tables
$bs_tables = $PMA_Config->get('BLOBSTREAMING_TABLES');
if (! $PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST')) {
return FALSE;
}
// select specified database
PMA_DBI_select_db($db_name);
// This information should be cached rather than selecting it each time.
//$query = "SELECT count(*) FROM information_schema.TABLES T, pbms.pbms_enabled E where T.table_schema = ". PMA_backquote($db_name) . " and T.table_name = ". PMA_backquote($tbl_name) . " and T.engine = E.name";
$query = "SELECT count(*) FROM pbms.pbms_enabled E where E.name = '" . PMA_sqlAddslashes($tbl_type) . "'";
$result = PMA_DBI_query($query);
// drop BS tables
foreach ($bs_tables as $table_key=>$table)
{
$query = "DROP TABLE IF EXISTS " . PMA_backquote($table_key);
$data = PMA_DBI_fetch_row($result);
if ($data[0] == 1) {
return TRUE;
}
return FALSE;
}
//------------
function PMA_BS_UpLoadFile($db_name, $tbl_name, $file_type, $file_name)
{
if (PMA_cacheGet('skip_blobstreaming', true)) {
return FALSE;
}
if (PMA_do_connect($db_name, FALSE) == FALSE) {
return FALSE;
}
$fh = fopen($file_name, 'r');
if (! $fh) {
PMA_do_disconnect();
PMA_showMessage("Could not open file: $file_name");
return FALSE;
}
pbms_add_metadata("Content-Type", $file_type);
$pbms_blob_url = pbms_read_stream($fh, filesize($file_name), $tbl_name);
if (! $pbms_blob_url) {
PMA_BS_ReportPBMSError("pbms_read_stream() Failed");
}
fclose($fh);
PMA_do_disconnect();
return $pbms_blob_url;
}
//------------
function PMA_BS_SetContentType($db_name, $bsTable, $blobReference, $contentType)
{
if (PMA_cacheGet('skip_blobstreaming', true)) {
return FALSE;
}
// This is a really ugly way to do this but currently there is nothing better.
// In a future version of PBMS the system tables will be redesigned to make this
// more eficient.
$query = "SELECT Repository_id, Repo_blob_offset FROM pbms_reference WHERE Blob_url='" . PMA_sqlAddslashes($blobReference) . "'";
//error_log(" PMA_BS_SetContentType: $query\n", 3, "/tmp/mylog");
$result = PMA_DBI_query($query);
//error_log(" $query\n", 3, "/tmp/mylog");
// if record exists
if ($data = PMA_DBI_fetch_assoc($result)) {
$where = "WHERE Repository_id=" . $data['Repository_id'] . " AND Repo_blob_offset=" . $data['Repo_blob_offset'] ;
$query = "SELECT name from pbms_metadata $where";
$result = PMA_DBI_query($query);
// return false if query execution fails
if (!$result)
return FALSE;
if (PMA_DBI_num_rows($result) == 0) {
$query = "INSERT into pbms_metadata Values( ". $data['Repository_id'] . ", " . $data['Repo_blob_offset'] . ", 'Content_type', '" . PMA_sqlAddslashes($contentType) . "')";
} else {
$query = "UPDATE pbms_metadata SET name = 'Content_type', Value = '" . PMA_sqlAddslashes($contentType) . "' $where";
}
//error_log("$query\n", 3, "/tmp/mylog");
PMA_DBI_query($query);
} else {
return FALSE;
}
return TRUE;
}
//------------
function PMA_BS_IsHiddenTable($table)
{
switch ($table) {
case 'pbms_repository' :
case 'pbms_reference' :
case 'pbms_metadata' :
case 'pbms_metadata_header' :
case 'pbms_dump' :
return TRUE;
}
return FALSE;
}
//------------
function PMA_BS_getURL($reference)
{
// load PMA configuration
$PMA_Config = $GLOBALS['PMA_Config'];
if (empty($PMA_Config)) {
return FALSE;
}
// return true on success
return TRUE;
// retrieve BS server variables from PMA configuration
$bs_server = $PMA_Config->get('BLOBSTREAMING_SERVER');
if (empty($bs_server)) {
return FALSE;
}
$bs_url = 'http://' . $bs_server . '/' . rtrim($reference);
return $bs_url;
}
/**
@@ -547,13 +508,6 @@ function PMA_BS_DropTables($db_name)
*/
function PMA_BS_GetPrimaryField($db_name, $tbl_name)
{
// load PMA configuration
$PMA_Config = $GLOBALS['PMA_Config'];
// return if unable to load PMA configuration
if (empty($PMA_Config))
return FALSE;
// select specified database
PMA_DBI_select_db($db_name);
@@ -562,152 +516,12 @@ function PMA_BS_GetPrimaryField($db_name, $tbl_name)
$result = PMA_DBI_query($query);
// while there are records to parse
while ($data = PMA_DBI_fetch_assoc($result))
if ("PRI" == $data['Key'])
while ($data = PMA_DBI_fetch_assoc($result)) {
if ("PRI" == $data['Key']) {
return $data['Field'];
}
}
// return NULL on no primary key
return NULL;
}
/**
* checks whether a BLOB reference exists in the BLOB repository
*
* @access public
* @param string - BLOB reference
* @param string - database name
* @uses PMA_DBI_select_db()
* @uses PMA_backquote()
* @uses PMA_Config::get()
* @uses PMA_sqlAddslashes()
* @uses PMA_DBI_query()
* @return boolean - existence of BLOB reference
*/
function PMA_BS_ReferenceExists($bs_reference, $db_name)
{
$referenceExists = FALSE;
// return false on invalid BS reference
if (strlen ($bs_reference) < strlen ("~*$db_name/~") || "~*$db_name/~" != substr ($bs_reference, 0, strlen ($db_name) + 4))
return $referenceExists;
// load PMA configuration
$PMA_Config = $GLOBALS['PMA_Config'];
// return if unable to load PMA configuration
if (empty($PMA_Config))
return $referenceExists;
// select specified database
PMA_DBI_select_db($db_name);
// run query on BS reference retrieval
$query = "SELECT * FROM " . PMA_backquote($PMA_Config->get('PBMS_NAME') . "_reference") . " WHERE Blob_url='" . PMA_sqlAddslashes($bs_reference) . "'";
$result = PMA_DBI_query($query);
// if record exists
if ($data = @PMA_DBI_fetch_assoc($result))
$referenceExists = TRUE;
// return reference existance
return $referenceExists;
}
/**
* creates a HTTP link to a given blob reference for a given database
*
* @access public
* @param string - BLOB reference
* @param string - database name
* @uses PMA_Config::get()
* @uses PMA_DBI_select_db()
* @uses PMA_backquote()
* @uses PMA_sqlAddslashes()
* @uses PMA_DBI_query()
* @uses PMA_DBI_fetch_assoc()
* @return string - HTTP link or Error
*/
function PMA_BS_CreateReferenceLink($bs_reference, $db_name)
{
// load PMA configuration
$PMA_Config = $GLOBALS['PMA_Config'];
// return if unable to load PMA configuration
if (empty($PMA_Config))
return '';
// generate bs reference link
$bs_ref_link = 'http://' . $PMA_Config->get('BLOBSTREAMING_SERVER') . '/' . $bs_reference;
// select specified database
PMA_DBI_select_db($db_name);
$pbms_repo_bq = PMA_backquote($PMA_Config->get('PBMS_NAME') . "_repository");
$pbms_ref_bq = PMA_backquote($PMA_Config->get('PBMS_NAME') . "_reference");
$pbms_cust_content_bq = PMA_backquote($PMA_Config->get('PBMS_NAME') . "_custom_content_type");
// run query on determining specified BS reference
$query = "SELECT $pbms_repo_bq.Content_type, $pbms_cust_content_bq.Content_type AS Custom_type";
$query .= " FROM $pbms_repo_bq LEFT JOIN $pbms_ref_bq ON";
$query .= "$pbms_repo_bq.Repository_id=$pbms_ref_bq.Repository_id";
$query .= " AND $pbms_repo_bq.Blob_size=$pbms_ref_bq.Blob_size";
$query .= " AND $pbms_repo_bq.Repo_blob_offset=$pbms_ref_bq.Repo_blob_offset";
$query .= " LEFT JOIN $pbms_cust_content_bq ON $pbms_cust_content_bq.Blob_url=$pbms_ref_bq.Blob_url";
$query .= " WHERE $pbms_ref_bq.Blob_url='" . PMA_sqlAddslashes($bs_reference) . "'";
$result = PMA_DBI_query($query);
// if record exists
if ($data = @PMA_DBI_fetch_assoc($result))
{
// determine content-type for BS repository file (original or custom)
$is_custom_type = false;
if (isset($data['Custom_type']))
{
$content_type = $data['Custom_type'];
$is_custom_type = true;
}
else
$content_type = $data['Content_type'];
if (!$content_type)
$content_type = NULL;
$output = "<a href=\"#\" onclick=\"requestMIMETypeChange('" . urlencode($db_name) . "', '" . urlencode($GLOBALS['table']) . "', '" . urlencode($bs_reference) . "', '" . urlencode($content_type) . "')\">$content_type</a>";
// specify custom HTML for various content types
switch ($content_type)
{
// no content specified
case NULL:
$output = "NULL";
break;
// image content
case 'image/jpeg':
case 'image/png':
$output .= ' (<a href="' . $bs_ref_link . '" target="new">' . __('View image') . '</a>)';
break;
// audio content
case 'audio/mpeg':
$output .= ' (<a href="#" onclick="popupBSMedia(\'' . PMA_generate_common_url() . '\',\'' . urlencode($bs_reference) . '\', \'' . urlencode($content_type) . '\',' . ($is_custom_type ? 1 : 0) . ', 640, 120)">' . __('Play audio'). '</a>)';
break;
// video content
case 'application/x-flash-video':
case 'video/mpeg':
$output .= ' (<a href="#" onclick="popupBSMedia(\'' . PMA_generate_common_url() . '\',\'' . urlencode($bs_reference) . '\', \'' . urlencode($content_type) . '\',' . ($is_custom_type ? 1 : 0) . ', 640, 480)">' . __('View video') . '</a>)';
break;
// unsupported content. specify download
default:
$output .= ' (<a href="' . $bs_ref_link . '" target="new">' . __('Download file'). '</a>)';
}
// return HTML
return $output;
} // end if ($data = @PMA_DBI_fetch_assoc($result))
// return on error
return 'Error';
}
?>

View File

@@ -11,7 +11,6 @@
* See the enclosed file COPYING for license information (LGPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
*
* @version $Id$
* @since Horde 2.2
* @package horde.cipher
*/

View File

@@ -3,15 +3,9 @@
/**
* Set of functions used with the bookmark feature
*
* @version $Id$
* @package phpMyAdmin
*/
/**
*
*/
require_once './libraries/relation.lib.php';
/**
* Defines the bookmark parameters for the current user
*

View File

@@ -3,116 +3,50 @@
/**
* Charset conversion functions.
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
exit;
}
/**
* Failure on loading recode/iconv extensions.
*/
function PMA_failRecoding() {
PMA_fatalError(__('Couldn\'t load the iconv or recode extension needed for charset conversion. Either configure PHP to enable these extensions or disable charset conversion in phpMyAdmin.'));
}
/**
* Loads the recode or iconv extensions if any of it is not loaded yet
*/
if (isset($cfg['AllowAnywhereRecoding'])
&& $cfg['AllowAnywhereRecoding']) {
if ($cfg['RecodingEngine'] == 'recode') {
if (!@extension_loaded('recode')) {
PMA_failRecoding();
}
$PMA_recoding_engine = 'recode';
} elseif ($cfg['RecodingEngine'] == 'iconv') {
if (!@extension_loaded('iconv')) {
PMA_failRecoding();
}
$PMA_recoding_engine = 'iconv';
} else {
if (@extension_loaded('iconv')) {
$PMA_recoding_engine = 'iconv';
} elseif (@extension_loaded('recode')) {
$PMA_recoding_engine = 'recode';
} else {
PMA_failRecoding();
}
}
} // end load recode/iconv extension
define('PMA_CHARSET_NONE', 0);
define('PMA_CHARSET_ICONV', 1);
define('PMA_CHARSET_LIBICONV', 2);
define('PMA_CHARSET_RECODE', 3);
define('PMA_CHARSET_ICONV_AIX', 4);
if (!isset($cfg['IconvExtraParams'])) {
$cfg['IconvExtraParams'] = '';
}
define('PMA_CHARSET_RECODE', 2);
define('PMA_CHARSET_ICONV_AIX', 3);
// Finally detect which function we will use:
if (isset($cfg['AllowAnywhereRecoding'])
&& $cfg['AllowAnywhereRecoding']) {
if (!isset($PMA_recoding_engine)) {
$PMA_recoding_engine = $cfg['RecodingEngine'];
}
if ($PMA_recoding_engine == 'iconv') {
if (@function_exists('iconv')) {
if ((@stristr(PHP_OS, 'AIX')) && (@strcasecmp(ICONV_IMPL, 'unknown') == 0) && (@strcasecmp(ICONV_VERSION, 'unknown') == 0)) {
$PMA_recoding_engine = PMA_CHARSET_ICONV_AIX;
} else {
$PMA_recoding_engine = PMA_CHARSET_ICONV;
}
} elseif (@function_exists('libiconv')) {
$PMA_recoding_engine = PMA_CHARSET_LIBICONV;
if ($cfg['RecodingEngine'] == 'iconv') {
if (@function_exists('iconv')) {
if ((@stristr(PHP_OS, 'AIX')) && (@strcasecmp(ICONV_IMPL, 'unknown') == 0) && (@strcasecmp(ICONV_VERSION, 'unknown') == 0)) {
$PMA_recoding_engine = PMA_CHARSET_ICONV_AIX;
} else {
$PMA_recoding_engine = PMA_CHARSET_NONE;
if (!isset($GLOBALS['is_header_sent'])) {
include './libraries/header.inc.php';
}
echo __('Couldn\'t use the iconv, libiconv, or recode_string functions, although the necessary extensions appear to be loaded. Check your PHP configuration.');
require_once './libraries/footer.inc.php';
exit();
}
} elseif ($PMA_recoding_engine == 'recode') {
if (@function_exists('recode_string')) {
$PMA_recoding_engine = PMA_CHARSET_RECODE;
} else {
$PMA_recoding_engine = PMA_CHARSET_NONE;
require_once './libraries/header.inc.php';
echo __('Couldn\'t use the iconv, libiconv, or recode_string functions, although the necessary extensions appear to be loaded. Check your PHP configuration.');
require_once './libraries/footer.inc.php';
exit;
$PMA_recoding_engine = PMA_CHARSET_ICONV;
}
} else {
if (@function_exists('iconv')) {
if ((@stristr(PHP_OS, 'AIX')) && (@strcasecmp(ICONV_IMPL, 'unknown') == 0) && (@strcasecmp(ICONV_VERSION, 'unknown') == 0)) {
$PMA_recoding_engine = PMA_CHARSET_ICONV_AIX;
} else {
$PMA_recoding_engine = PMA_CHARSET_ICONV;
}
} elseif (@function_exists('libiconv')) {
$PMA_recoding_engine = PMA_CHARSET_LIBICONV;
} elseif (@function_exists('recode_string')) {
$PMA_recoding_engine = PMA_CHARSET_RECODE;
$PMA_recoding_engine = PMA_CHARSET_NONE;
PMA_warnMissingExtension('iconv');
}
} elseif ($cfg['RecodingEngine'] == 'recode') {
if (@function_exists('recode_string')) {
$PMA_recoding_engine = PMA_CHARSET_RECODE;
} else {
$PMA_recoding_engine = PMA_CHARSET_NONE;
PMA_warnMissingExtension('recode');
}
} elseif ($cfg['RecodingEngine'] == 'auto') {
if (@function_exists('iconv')) {
if ((@stristr(PHP_OS, 'AIX')) && (@strcasecmp(ICONV_IMPL, 'unknown') == 0) && (@strcasecmp(ICONV_VERSION, 'unknown') == 0)) {
$PMA_recoding_engine = PMA_CHARSET_ICONV_AIX;
} else {
$PMA_recoding_engine = PMA_CHARSET_NONE;
require_once './libraries/header.inc.php';
echo __('Couldn\'t use the iconv, libiconv, or recode_string functions, although the necessary extensions appear to be loaded. Check your PHP configuration.');
require_once './libraries/footer.inc.php';
exit;
$PMA_recoding_engine = PMA_CHARSET_ICONV;
}
} elseif (@function_exists('recode_string')) {
$PMA_recoding_engine = PMA_CHARSET_RECODE;
} else {
$PMA_recoding_engine = PMA_CHARSET_NONE;
}
} else {
$PMA_recoding_engine = PMA_CHARSET_NONE;
$PMA_recoding_engine = PMA_CHARSET_NONE;
}
/* Load AIX iconv wrapper if needed */
@@ -120,43 +54,6 @@ if ($PMA_recoding_engine == PMA_CHARSET_ICONV_AIX) {
require_once './libraries/iconv_wrapper.lib.php';
}
/**
* Converts encoding of text according to current settings.
*
* @param string what to convert
*
* @return string converted text
*
* @global array the configuration array
* @global boolean whether recoding is allowed or not
* @global string the current charset
* @global array the charset to convert to
*
* @access public
*
*/
function PMA_convert_charset($what) {
global $cfg, $charset, $convcharset;
if (!(isset($cfg['AllowAnywhereRecoding']) && $cfg['AllowAnywhereRecoding'] )
|| $convcharset == $charset) { // if input and output charset are the same, we don't have to do anything...
return $what;
} else {
switch ($GLOBALS['PMA_recoding_engine']) {
case PMA_CHARSET_RECODE:
return recode_string($charset . '..' . $convcharset, $what);
case PMA_CHARSET_ICONV:
return iconv($charset, $convcharset . $cfg['IconvExtraParams'], $what);
case PMA_CHARSET_ICONV_AIX:
return PMA_aix_iconv_wrapper($charset, $convcharset . $cfg['IconvExtraParams'], $what);
case PMA_CHARSET_LIBICONV:
return libiconv($charset, $convcharset . $GLOBALS['cfg']['IconvExtraParams'], $what);
default:
return $what;
}
}
} // end of the "PMA_convert_charset()" function
/**
* Converts encoding of text according to parameters with detected
* conversion function.
@@ -181,59 +78,9 @@ function PMA_convert_string($src_charset, $dest_charset, $what) {
return iconv($src_charset, $dest_charset . $GLOBALS['cfg']['IconvExtraParams'], $what);
case PMA_CHARSET_ICONV_AIX:
return PMA_aix_iconv_wrapper($src_charset, $dest_charset . $GLOBALS['cfg']['IconvExtraParams'], $what);
case PMA_CHARSET_LIBICONV:
return libiconv($src_charset, $dest_charset, $what);
default:
return $what;
}
} // end of the "PMA_convert_string()" function
/**
* Converts encoding of file according to parameters with detected
* conversion function. The old file will be unlinked and new created and
* its file name is returned.
*
* @param string source charset
* @param string target charset
* @param string file to convert
*
* @return string new temporay file
*
* @access public
*
*/
function PMA_convert_file($src_charset, $dest_charset, $file) {
switch ($GLOBALS['PMA_recoding_engine']) {
case PMA_CHARSET_RECODE:
case PMA_CHARSET_ICONV:
case PMA_CHARSET_LIBICONV:
$tmpfname = tempnam('', 'PMA_convert_file');
$fin = fopen($file, 'r');
$fout = fopen($tmpfname, 'w');
if ($GLOBALS['PMA_recoding_engine'] == PMA_CHARSET_RECODE) {
recode_file($src_charset . '..' . $dest_charset, $fin, $fout);
} else {
while (!feof($fin)) {
$line = fgets($fin, 4096);
if ($GLOBALS['PMA_recoding_engine'] == PMA_CHARSET_ICONV) {
$dist = iconv($src_charset, $dest_charset . $GLOBALS['cfg']['IconvExtraParams'], $line);
} elseif ($GLOBALS['PMA_recoding_engine'] == PMA_CHARSET_ICONV_AIX) {
$dist = PMA_aix_iconv_wrapper($src_charset, $dest_charset . $GLOBALS['cfg']['IconvExtraParams'], $line);
} else {
$dist = libiconv($src_charset, $dest_charset . $GLOBALS['cfg']['IconvExtraParams'], $line);
}
fputs($fout, $dist);
} // end while
}
fclose($fin);
fclose($fout);
unlink($file);
return $tmpfname;
default:
return $file;
}
} // end of the "PMA_convert_file()" function
?>

View File

@@ -3,7 +3,6 @@
/**
* Get user's global privileges and some db-specific privileges
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {

View File

@@ -3,7 +3,6 @@
/**
* Functions for cleanup of user input.
*
* @version $Id$
* @package phpMyAdmin
*/

View File

@@ -28,7 +28,6 @@
* - db connection
* - authentication work
*
* @version $Id$
* @package phpMyAdmin
*/
@@ -50,7 +49,7 @@ if (!defined('E_DEPRECATED')) {
/**
* the error handler
*/
require_once './libraries/Error_Handler.class.php';
require './libraries/Error_Handler.class.php';
/**
* initialize the error handler
@@ -79,42 +78,42 @@ define('PHPMYADMIN', true);
/**
* core functions
*/
require_once './libraries/core.lib.php';
require './libraries/core.lib.php';
/**
* Input sanitizing
*/
require_once './libraries/sanitizing.lib.php';
require './libraries/sanitizing.lib.php';
/**
* the PMA_Theme class
*/
require_once './libraries/Theme.class.php';
require './libraries/Theme.class.php';
/**
* the PMA_Theme_Manager class
*/
require_once './libraries/Theme_Manager.class.php';
require './libraries/Theme_Manager.class.php';
/**
* the PMA_Config class
*/
require_once './libraries/Config.class.php';
require './libraries/Config.class.php';
/**
* the relation lib, tracker needs it
*/
require_once './libraries/relation.lib.php';
require './libraries/relation.lib.php';
/**
* the PMA_Tracker class
*/
require_once './libraries/Tracker.class.php';
require './libraries/Tracker.class.php';
/**
* the PMA_Table class
*/
require_once './libraries/Table.class.php';
require './libraries/Table.class.php';
if (!defined('PMA_MINIMUM_COMMON')) {
/**
@@ -335,7 +334,7 @@ if ($GLOBALS['PMA_Config']->get('ForceSSL')
/**
* include session handling after the globals, to prevent overwriting
*/
require_once './libraries/session.inc.php';
require './libraries/session.inc.php';
/**
* init some variables LABEL_variables_init
@@ -454,7 +453,7 @@ if (PMA_checkPageValidity($_REQUEST['back'], $goto_whitelist)) {
* f.e. PMA_Config: fontsize
*
* @todo variables should be handled by their respective owners (objects)
* f.e. lang, server, convcharset, collation_connection in PMA_Config
* f.e. lang, server, collation_connection in PMA_Config
*/
if (! PMA_isValid($_REQUEST['token']) || $_SESSION[' PMA_token '] != $_REQUEST['token']) {
/**
@@ -468,7 +467,7 @@ if (! PMA_isValid($_REQUEST['token']) || $_SESSION[' PMA_token '] != $_REQUEST['
/* Session ID */
'phpMyAdmin',
/* Cookie preferences */
'pma_lang', 'pma_charset', 'pma_collation_connection',
'pma_lang', 'pma_collation_connection',
/* Possible login form */
'pma_servername', 'pma_username', 'pma_password',
/* for playing blobstreamable media */
@@ -479,7 +478,7 @@ if (! PMA_isValid($_REQUEST['token']) || $_SESSION[' PMA_token '] != $_REQUEST['
/**
* Require cleanup functions
*/
require_once './libraries/cleanup.lib.php';
require './libraries/cleanup.lib.php';
/**
* Do actual cleanup
*/
@@ -488,14 +487,6 @@ if (! PMA_isValid($_REQUEST['token']) || $_SESSION[' PMA_token '] != $_REQUEST['
}
/**
* @global string $GLOBALS['convcharset']
* @see select_lang.lib.php
*/
if (isset($_REQUEST['convcharset'])) {
$GLOBALS['convcharset'] = strip_tags($_REQUEST['convcharset']);
}
/**
* current selected database
* @global string $GLOBALS['db']
@@ -563,17 +554,10 @@ $GLOBALS['footnotes'] = array();
/******************************************************************************/
/* loading language file LABEL_loading_language_file */
/**
* Added messages while developing:
*/
if (file_exists('./lang/added_messages.php')) {
include './lang/added_messages.php';
}
/**
* lang detection is done here
*/
require_once './libraries/select_lang.lib.php';
require './libraries/select_lang.lib.php';
/**
* check for errors occurred while loading configuration
@@ -800,7 +784,6 @@ if (! defined('PMA_MINIMUM_COMMON')) {
* @todo should be done in PMA_Config
*/
$GLOBALS['PMA_Config']->setCookie('pma_lang', $GLOBALS['lang']);
$GLOBALS['PMA_Config']->setCookie('pma_charset', $GLOBALS['convcharset']);
$GLOBALS['PMA_Config']->setCookie('pma_collation_connection', $GLOBALS['collation_connection']);
$_SESSION['PMA_Theme_Manager']->setThemeCookie();
@@ -814,7 +797,7 @@ if (! defined('PMA_MINIMUM_COMMON')) {
require_once './libraries/logging.lib.php';
// Gets the authentication library that fits the $cfg['Server'] settings
// Gets the authentication library that fits the $cfg['Server'] settings
// and run authentication
// to allow HTTP or http
@@ -826,14 +809,13 @@ if (! defined('PMA_MINIMUM_COMMON')) {
* the required auth type plugin
*/
require_once './libraries/auth/' . $cfg['Server']['auth_type'] . '.auth.lib.php';
if (!PMA_auth_check()) {
PMA_auth();
} else {
PMA_auth_set_user();
}
// Check IP-based Allow/Deny rules as soon as possible to reject the
// Check IP-based Allow/Deny rules as soon as possible to reject the
// user
// Based on mod_access in Apache:
// http://cvs.apache.org/viewcvs.cgi/httpd-2.0/modules/aaa/mod_access.c?rev=1.37&content-type=text/vnd.viewcvs-markup
@@ -970,9 +952,8 @@ if (! defined('PMA_MINIMUM_COMMON')) {
// checks for blobstreaming plugins and databases that support
// blobstreaming (by having the necessary tables for blobstreaming)
if (checkBLOBStreamingPlugins()) {
checkBLOBStreamableDatabases();
}
checkBLOBStreamingPlugins();
} // end if !defined('PMA_MINIMUM_COMMON')
// remove sensitive values from session

View File

@@ -3,7 +3,6 @@
/**
* Misc functions used all over the scripts.
*
* @version $Id$
* @package phpMyAdmin
*/
@@ -130,7 +129,6 @@ function PMA_getIcon($icon, $alternate = '', $container = false, $force_text = f
/**
* Displays the maximum size for an upload
*
* @uses __('Max: %s%s')
* @uses PMA_formatByteDown()
* @uses sprintf()
* @param integer the size
@@ -320,7 +318,7 @@ function PMA_formatSql($parsed_sql, $unparsed_sql = '')
switch ($cfg['SQP']['fmtType']) {
case 'none':
if ($unparsed_sql != '') {
$formatted_sql = "<pre>\n" . PMA_SQP_formatNone(array('raw' => $unparsed_sql)) . "\n</pre>";
$formatted_sql = '<span class="inner_sql"><pre>' . "\n" . PMA_SQP_formatNone(array('raw' => $unparsed_sql)) . "\n" . '</pre></span>';
} else {
$formatted_sql = PMA_SQP_formatNone($parsed_sql);
}
@@ -346,7 +344,6 @@ function PMA_formatSql($parsed_sql, $unparsed_sql = '')
* @uses $cfg['MySQLManualType']
* @uses $cfg['MySQLManualBase']
* @uses $cfg['ReplaceHelpImg']
* @uses __('Documentation')
* @uses $GLOBALS['pmaThemeImage']
* @uses PMA_MYSQL_INT_VERSION
* @uses strtolower()
@@ -501,11 +498,7 @@ function PMA_showHint($message, $bbcode = false, $type = 'notice')
* @uses footer.inc.php
* @uses header.inc.php
* @uses $GLOBALS['sql_query']
* @uses __('Error')
* @uses __('SQL query')
* @uses $GLOBALS['pmaThemeImage']
* @uses __('Edit')
* @uses __('MySQL said: ')
* @uses $GLOBALS['cfg']['PropertiesIconic']
* @uses $GLOBALS['cfg']['MaxCharactersInDisplayedSQL']
* @uses PMA_backquote()
@@ -661,19 +654,19 @@ function PMA_mysqlDie($error_message = '', $the_query = '',
$back_url .= '?no_history=true';
}
$_SESSION['Import_message']['go_back_url'] = $back_url;
$_SESSION['Import_message']['go_back_url'] = $back_url;
$error_msg_output .= '<fieldset class="tblFooters">';
$error_msg_output .= '[ <a href="' . $back_url . '">' . __('Back') . '</a> ]';
$error_msg_output .= '</fieldset>' . "\n\n";
}
}
echo $error_msg_output;
/**
* display footer and exit
*/
echo $error_msg_output;
/**
* display footer and exit
*/
require_once './libraries/footer.inc.php';
require './libraries/footer.inc.php';
} else {
echo $error_msg_output;
}
@@ -798,18 +791,11 @@ function PMA_getTableList($db, $tables = null, $limit_offset = 0, $limit_count =
// load PMA configuration
$PMA_Config = $GLOBALS['PMA_Config'];
// if PMA configuration exists
if (!empty($PMA_Config))
$session_bs_tables = $GLOBALS['PMA_Config']->get('BLOBSTREAMING_TABLES');
foreach ($tables as $table_name => $table) {
// if BS tables exist
if (isset($session_bs_tables))
// compare table name to tables in list of blobstreaming tables
foreach ($session_bs_tables as $table_key=>$table_val)
// if table is in list, skip outer foreach loop
if ($table_name == $table_key)
continue 2;
if (PMA_BS_IsHiddenTable($table_name)) {
continue;
}
// check for correct row count
if (null === $table['Rows']) {
@@ -1137,7 +1123,11 @@ function PMA_showMessage($message, $sql_query = null, $type = 'notice', $is_view
if (! empty($GLOBALS['show_as_php'])) {
$query_base = '$sql = "' . $query_base;
} elseif (! empty($GLOBALS['validatequery'])) {
$query_base = PMA_validateSQL($query_base);
try {
$query_base = PMA_validateSQL($query_base);
} catch (Exception $e) {
PMA_Message::error(__('Failed to connect to SQL validator!'))->display();
}
} elseif (isset($parsed_sql)) {
$query_base = PMA_formatSql($parsed_sql, $query_base);
}
@@ -1188,7 +1178,9 @@ function PMA_showMessage($message, $sql_query = null, $type = 'notice', $is_view
$url_params['sql_query'] = $sql_query;
$url_params['show_query'] = 1;
if (! empty($cfg['SQLQuery']['Edit']) && ! $query_too_big) {
// even if the query is big and was truncated, offer the chance
// to edit it (unless it's enormous, see PMA_linkOrButton() )
if (! empty($cfg['SQLQuery']['Edit'])) {
if ($cfg['EditInWindow'] == true) {
$onclick = 'window.parent.focus_querywindow(\'' . PMA_jsFormat($sql_query, false) . '\'); return false;';
} else {
@@ -1251,7 +1243,11 @@ function PMA_showMessage($message, $sql_query = null, $type = 'notice', $is_view
$validate_link = '';
} //validator
echo '<code class="sql">';
if (!empty($GLOBALS['validatequery'])) {
echo '<div class="sqlvalidate">';
} else {
echo '<code class="sql">';
}
if ($query_too_big) {
echo $shortened_query_base;
} else {
@@ -1262,7 +1258,11 @@ function PMA_showMessage($message, $sql_query = null, $type = 'notice', $is_view
if (! empty($GLOBALS['show_as_php'])) {
echo '";';
}
echo '</code>';
if (!empty($GLOBALS['validatequery'])) {
echo '</div>';
} else {
echo '</code>';
}
echo '<div class="tools">';
// avoid displaying a Profiling checkbox that could
@@ -1270,6 +1270,17 @@ function PMA_showMessage($message, $sql_query = null, $type = 'notice', $is_view
if (! empty($refresh_link)) {
PMA_profilingCheckbox($sql_query);
}
// if needed, generate an invisible form that contains controls for the
// Inline link; this way, the behavior of the Inline link does not
// depend on the profiling support or on the refresh link
if (empty($refresh_link) || ! PMA_profilingSupported()) {
echo '<form action="sql.php" method="post">';
echo PMA_generate_common_hidden_inputs($GLOBALS['db'], $GLOBALS['table']);
echo '<input type="hidden" name="sql_query" value="' . htmlspecialchars($sql_query) . '" />';
echo '</form>';
}
// see in js/functions.js the jQuery code attached to id inline_edit
$inline_edit = "<script type=\"text/javascript\">\n" .
"//<![CDATA[\n" .
"document.write('[<a href=\"#\" title=\"" .
@@ -1624,8 +1635,6 @@ function PMA_localisedDate($timestamp = -1, $format = '')
* If the variables $link and $args ar left empty, an inactive tab is created
*
* @uses $GLOBALS['PMA_PHP_SELF']
* @uses __('Empty')
* @uses __('Drop')
* @uses $GLOBALS['active_page']
* @uses $GLOBALS['url_query']
* @uses $cfg['MainPageIconic']
@@ -1778,6 +1787,13 @@ function PMA_generate_html_tabs($tabs, $url_params)
function PMA_linkOrButton($url, $message, $tag_params = array(),
$new_form = true, $strip_img = false, $target = '')
{
$url_length = strlen($url);
// with this we should be able to catch case of image upload
// into a (MEDIUM) BLOB; not worth generating even a form for these
if ($url_length > $GLOBALS['cfg']['LinkLengthLimit'] * 100) {
return '';
}
if (! is_array($tag_params)) {
$tmp = $tag_params;
$tag_params = array();
@@ -1799,7 +1815,7 @@ function PMA_linkOrButton($url, $message, $tag_params = array(),
$tag_params_strings[] = $par_name . '="' . $par_value . '"';
}
if (strlen($url) <= $GLOBALS['cfg']['LinkLengthLimit']) {
if ($url_length <= $GLOBALS['cfg']['LinkLengthLimit']) {
// no whitespace within an <a> else Safari will make it part of the link
$ret = "\n" . '<a href="' . $url . '" '
. implode(' ', $tag_params_strings) . '>'
@@ -1885,7 +1901,6 @@ function PMA_linkOrButton($url, $message, $tag_params = array(),
/**
* Returns a given timespan value in a readable format.
*
* @uses __('%s days, %s hours, %s minutes and %s seconds')
* @uses sprintf()
* @uses floor()
* @param int the timespan
@@ -2102,7 +2117,8 @@ function PMA_getUniqueCondition($handle, $fields_cnt, $fields_meta, $row, $force
$condition .= 'IS NULL AND';
} else {
// timestamp is numeric on some MySQL 4.1
if ($meta->numeric && $meta->type != 'timestamp') {
// for real we use CONCAT above and it should compare to string
if ($meta->numeric && $meta->type != 'timestamp' && $meta->type != 'real') {
$condition .= '= ' . $row[$i] . ' AND';
} elseif (($meta->type == 'blob' || $meta->type == 'string')
// hexify only if this is a true not empty BLOB or a BINARY
@@ -2194,7 +2210,6 @@ function PMA_buttonOrImage($button_name, $button_class, $image_name, $text,
* Generate a pagination selector for browsing resultsets
*
* @todo $url is not javascript escaped!?
* @uses __('Page number:')
* @uses range()
* @param string URL for the JavaScript
* @param string Number of rows in the pagination set
@@ -2298,7 +2313,6 @@ function PMA_pageselector($url, $rows, $pageNow = 1, $nbTotalPage = 1,
* Generate navigation for a list
*
* @todo use $pos from $_url_params
* @uses __('Page number:')
* @uses range()
* @param integer number of elements in the list
* @param integer current position in the list
@@ -2409,7 +2423,6 @@ function PMA_userDir($dir)
*
* @uses $cfg['DefaultTabDatabase']
* @uses $GLOBALS['db']
* @uses __('Jump to database &quot;%s&quot;.')
* @uses PMA_generate_common_url()
* @uses PMA_unescape_mysql_wildcards()
* @uses strlen()
@@ -2439,7 +2452,6 @@ function PMA_getDbLink($database = null)
* that affects a functionality
*
* @uses PMA_MYSQL_INT_VERSION
* @uses __('The %s functionality is affected by a known bug, see %s')
* @uses PMA_showHint()
* @uses sprintf()
* @param string $functionality localized message explaining the func.
@@ -2829,7 +2841,7 @@ function PMA_getTitleForTarget($target) {
$mapping = array(
// Values for $cfg['DefaultTabTable']
'tbl_structure.php' => __('Structure'),
'tbl_structure.php' => __('Structure'),
'tbl_sql.php' => __('SQL'),
'tbl_select.php' =>__('Search'),
'tbl_change.php' =>__('Insert'),
@@ -2844,19 +2856,72 @@ $mapping = array(
return $mapping[$target];
}
function PMA_js($code, $print=true)
{
// these generated newlines are needed
$out = '';
$out .= '<script type="text/javascript">'."\n";
$out .= "\n" . '// <![CDATA[' . "\n";
$out .= $code;
$out .= "\n" . '// ]]>' . "\n";
$out .= '</script>'."\n";
/**
* Formats user string, expading @VARIABLES@, accepting strftime format string.
*
* @param string Text where to do expansion.
* @param function Function to call for escaping variable values.
* @param array Array with overrides for default parameters (obtained from GLOBALS).
*/
function PMA_expandUserString($string, $escape = NULL, $updates = array()) {
/* Content */
$vars['http_host'] = PMA_getenv('HTTP_HOST') ? PMA_getenv('HTTP_HOST') : '';
$vars['server_name'] = $GLOBALS['cfg']['Server']['host'];
$vars['server_verbose'] = $GLOBALS['cfg']['Server']['verbose'];
$vars['server_verbose_or_name'] = !empty($GLOBALS['cfg']['Server']['verbose']) ? $GLOBALS['cfg']['Server']['verbose'] : $GLOBALS['cfg']['Server']['host'];
$vars['database'] = $GLOBALS['db'];
$vars['table'] = $GLOBALS['table'];
$vars['phpmyadmin_version'] = 'phpMyAdmin ' . PMA_VERSION;
if ($print)
echo $out;
/* Update forced variables */
foreach($updates as $key => $val) {
$vars[$key] = $val;
}
return $out;
/* Replacement mapping */
/*
* The __VAR__ ones are for backward compatibility, because user
* might still have it in cookies.
*/
$replace = array(
'@HTTP_HOST@' => $vars['http_host'],
'@SERVER@' => $vars['server_name'],
'__SERVER__' => $vars['server_name'],
'@VERBOSE@' => $vars['server_verbose'],
'@VSERVER@' => $vars['server_verbose_or_name'],
'@DATABASE@' => $vars['database'],
'__DB__' => $vars['database'],
'@TABLE@' => $vars['table'],
'__TABLE__' => $vars['table'],
'@PHPMYADMIN@' => $vars['phpmyadmin_version'],
);
/* Optional escaping */
if (!is_null($escape)) {
foreach($replace as $key => $val) {
$replace[$key] = $escape($val);
}
}
/* Fetch fields list if required */
if (strpos($string, '@FIELDS@') !== FALSE) {
$fields_list = PMA_DBI_fetch_result(
'SHOW COLUMNS FROM ' . PMA_backquote($GLOBALS['db'])
. '.' . PMA_backquote($GLOBALS['table']));
$field_names = array();
foreach ($fields_list as $field) {
if (!is_null($escape)) {
$field_names[] = $escape($field['Field']);
} else {
$field_names[] = $field['Field'];
}
}
$replace['@FIELDS@'] = implode(',', $field_names);
}
/* Do the replacement */
return str_replace(array_keys($replace), array_values($replace), strftime($string));
}
?>

View File

@@ -16,7 +16,6 @@
*
* All directives are explained in Documentation.html
*
* @version $Id$
* @package phpMyAdmin
*/
@@ -138,12 +137,6 @@ $cfg['Servers'][$i]['connect_type'] = 'tcp';
*/
$cfg['Servers'][$i]['extension'] = 'mysql';
/* added for blobstreaming */
$cfg['Servers'][$i]['bs_garbage_threshold'] = '';
$cfg['Servers'][$i]['bs_repository_threshold'] = '';
$cfg['Servers'][$i]['bs_temp_blob_timeout'] = '';
$cfg['Servers'][$i]['bs_temp_log_threshold'] = '';
/**
* Use compressed protocol for the MySQL connection (requires PHP >= 4.3.0)
*
@@ -542,11 +535,13 @@ $cfg['ExecTimeLimit'] = 300;
$cfg['SessionSavePath'] = '';
/**
* maximum allocated bytes (0 for no limit)
* maximum allocated bytes ('0' for no limit)
* this is a string because '16M' is a valid value; we must put here
* a string as the default value so that /setup accepts strings
*
* @global integer $cfg['MemoryLimit']
* @global string $cfg['MemoryLimit']
*/
$cfg['MemoryLimit'] = 0;
$cfg['MemoryLimit'] = '0';
/**
* mark used tables, make possible to show locked tables (since MySQL 3.23.30)
@@ -585,7 +580,8 @@ $cfg['Confirm'] = true;
$cfg['LoginCookieRecall'] = true;
/**
* validity of cookie login (in seconds)
* validity of cookie login (in seconds; 1440 matches php.ini's
* session.gc_maxlifetime)
*
* @global integer $cfg['LoginCookieValidity']
*/
@@ -1114,21 +1110,21 @@ $cfg['Export']['remember_file_template'] = true;
*
* @global string $cfg['Export']['file_template_table']
*/
$cfg['Export']['file_template_table'] = '__TABLE__';
$cfg['Export']['file_template_table'] = '@TABLE@';
/**
*
*
* @global string $cfg['Export']['file_template_database']
*/
$cfg['Export']['file_template_database'] = '__DB__';
$cfg['Export']['file_template_database'] = '@DATABASE@';
/**
*
*
* @global string $cfg['Export']['file_template_server']
*/
$cfg['Export']['file_template_server'] = '__SERVER__';
$cfg['Export']['file_template_server'] = '@SERVER@';
/**
*
@@ -1429,14 +1425,14 @@ $cfg['Export']['latex_data_continued_caption'] = 'strLatexContent strLatexContin
*
* @global string $cfg['Export']['latex_data_label']
*/
$cfg['Export']['latex_data_label'] = 'tab:__TABLE__-data';
$cfg['Export']['latex_data_label'] = 'tab:@TABLE@-data';
/**
*
*
* @global string $cfg['Export']['latex_structure_label']
*/
$cfg['Export']['latex_structure_label'] = 'tab:__TABLE__-structure';
$cfg['Export']['latex_structure_label'] = 'tab:@TABLE@-structure';
/**
*
@@ -1936,8 +1932,7 @@ $cfg['DefaultLang'] = 'en';
$cfg['DefaultConnectionCollation'] = 'utf8_general_ci';
/**
* Force: always use this language - must be defined in
* libraries/select_lang.lib.php
* Force: always use this language
* $cfg['Lang'] = 'en';
*
* Regular expression to limit listed languages, e.g. '^(cs|en)' for Czech and
@@ -1947,26 +1942,6 @@ $cfg['DefaultConnectionCollation'] = 'utf8_general_ci';
*/
$cfg['FilterLanguages'] = '';
/**
* Default character set to use for recoding of MySQL queries, does not take
* any effect when character sets recoding is switched off by
* $cfg['AllowAnywhereRecoding'] or in language file
* (see $cfg['AvailableCharsets'] to possible choices, you can add your own)
*
* @global string $cfg['DefaultCharset']
*/
$cfg['DefaultCharset'] = 'utf-8';
/**
* Allow character set recoding of MySQL queries, must be also enabled in language
* file to make harder using other language files than Unicode.
* Default value is false to avoid problems on servers without the iconv
* extension
*
* @global boolean $cfg['AllowAnywhereRecoding']
*/
$cfg['AllowAnywhereRecoding'] = false;
/**
* You can select here which functions will be used for character set conversion.
* Possible values are:
@@ -1974,6 +1949,7 @@ $cfg['AllowAnywhereRecoding'] = false;
* recode)
* iconv - use iconv or libiconv functions
* recode - use recode_string function
* none - disable encoding conversion
*
* @global string $cfg['RecodingEngine']
*/
@@ -2275,14 +2251,6 @@ $cfg['InitialSlidersState'] = 'closed';
//-----------------------------------------------------------------------------
// custom-setup by mkkeck: 2004-05-04
// some specials for new icons and scrolling
/**
* @todo We need to rearrange these variables.
*/
/*******************************************************************************
* Window title settings
*/
@@ -2376,22 +2344,14 @@ $cfg['ThemePerServer'] = false;
*/
/**
* Default queries
* %d will be replaced by the database name.
* %t will be replaced by the table name.
* %f will be replaced by a list of field names.
* (%t and %f only applies to DefaultQueryTable)
* Default query for table
*
* @global string $cfg['DefaultQueryTable']
*/
$cfg['DefaultQueryTable'] = 'SELECT * FROM %t WHERE 1';
$cfg['DefaultQueryTable'] = 'SELECT * FROM @TABLE@ WHERE 1';
/**
* Default queries
* %d will be replaced by the database name.
* %t will be replaced by the table name.
* %f will be replaced by a list of field names.
* (%t and %f only applies to DefaultQueryTable)
* Default query for database
*
* @global string $cfg['DefaultQueryDatabase']
*/

View File

@@ -5,7 +5,6 @@
* This script is distinct from libraries/common.inc.php because this
* script is called from /test.
*
* @version $Id$
* @package phpMyAdmin
*/
@@ -202,7 +201,6 @@ function PMA_securePath($path)
* @todo use detected argument separator (PMA_Config)
* @uses $GLOBALS['session_name']
* @uses $GLOBALS['text_dir']
* @uses __('Error')
* @uses $GLOBALS['available_languages']
* @uses $GLOBALS['lang']
* @uses $GLOBALS['PMA_Config']->removeCookie()
@@ -222,30 +220,7 @@ function PMA_securePath($path)
*/
function PMA_fatalError($error_message, $message_args = null)
{
// it could happen PMA_fatalError() is called before language file is loaded
if (! isset($GLOBALS['available_languages'])) {
$GLOBALS['cfg'] = array(
'DefaultLang' => 'en',
'AllowAnywhereRecoding' => false);
// Loads the language file
require_once './libraries/select_lang.lib.php';
// $text_dir is set in po file
if (isset($text_dir)) {
$GLOBALS['text_dir'] = $text_dir;
}
}
// $error_message could be a language string identifier: strString
if (substr($error_message, 0, 3) === 'str') {
if (isset($$error_message)) {
$error_message = $$error_message;
} elseif (isset($GLOBALS[$error_message])) {
$error_message = $GLOBALS[$error_message];
}
}
/* Use format string if applicable */
if (is_string($message_args)) {
$error_message = sprintf($error_message, $message_args);
} elseif (is_array($message_args)) {
@@ -253,12 +228,18 @@ function PMA_fatalError($error_message, $message_args = null)
}
$error_message = strtr($error_message, array('<br />' => '[br]'));
if (function_exists('__')) {
$error_header = __('Error');
} else {
$error_header = 'Error';
}
// Displays the error message
// (do not use &amp; for parameters sent by header)
$query_params = array(
'lang' => $GLOBALS['available_languages'][$GLOBALS['lang']][1],
'dir' => $GLOBALS['text_dir'],
'type' => __('Error'),
'type' => $error_header,
'error' => $error_message,
);
header('Location: ' . (defined('PMA_SETUP') ? '../' : '') . 'error.php?'
@@ -281,7 +262,8 @@ function PMA_fatalError($error_message, $message_args = null)
*/
function PMA_warnMissingExtension($extension, $fatal = false, $extra = '')
{
$message = sprintf(__('Cannot load [a@http://php.net/%1$s@Documentation][em]%1$s[/em][/a] extension. Please check your PHP configuration.'), $extension);
$message = sprintf(__('The %s extension is missing. Please check your PHP configuration.'),
sprintf('[a@http://php.net/%1$s@Documentation][em]%1$s[/em][/a]', $extension));
if ($extra != '') {
$message .= ' ' . $extra;
}
@@ -311,31 +293,12 @@ function PMA_getTableCount($db)
if ($tables) {
$num_tables = PMA_DBI_num_rows($tables);
// for blobstreaming - get blobstreaming tables
// for use in determining if a table here is a blobstreaming table
// load PMA configuration
$PMA_Config = $GLOBALS['PMA_Config'];
// if PMA configuration exists
if (!empty($PMA_Config))
{
// load BS tables
$session_bs_tables = $GLOBALS['PMA_Config']->get('BLOBSTREAMING_TABLES');
// if BS tables exist
if (isset ($session_bs_tables))
while ($data = PMA_DBI_fetch_assoc($tables))
foreach ($session_bs_tables as $table_key=>$table_val)
// if the table is a blobstreaming table, reduce the table count
if ($data['Tables_in_' . $db] == $table_key)
{
if ($num_tables > 0)
$num_tables--;
break;
}
} // end if PMA configuration exists
// do not count hidden blobstreaming tables
while ((($num_tables > 0)) && $data = PMA_DBI_fetch_assoc($tables)) {
if (PMA_BS_IsHiddenTable($data['Tables_in_' . $db])) {
$num_tables--;
}
}
PMA_DBI_free_result($tables);
} else {

View File

@@ -3,7 +3,6 @@
/**
* Common Option Constants For DBI Functions
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
@@ -238,8 +237,6 @@ function PMA_usort_comparison_callback($a, $b)
function PMA_DBI_get_tables_full($database, $table = false, $tbl_is_group = false, $link = null,
$limit_offset = 0, $limit_count = false, $sort_by = 'Name', $sort_order = 'ASC')
{
require_once './libraries/Table.class.php';
if (true === $limit_count) {
$limit_count = $GLOBALS['cfg']['MaxTableList'];
}

View File

@@ -2,7 +2,6 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
@@ -37,12 +36,19 @@ $err_url = $cfg['DefaultTabDatabase'] . '?' . PMA_generate_common_url($db);
* Ensures the database exists (else move to the "parent" script) and displays
* headers
*/
if (!isset($is_db) || !$is_db) {
// Not a valid db name -> back to the welcome page
if (! isset($is_db) || ! $is_db) {
if (strlen($db)) {
$is_db = PMA_DBI_select_db($db);
// This "Command out of sync" 2014 error may happen, for example
// after calling a MySQL procedure; at this point we can't select
// the db but it's not necessarily wrong
if (PMA_DBI_getError() && $GLOBALS['errno'] == 2014) {
$is_db = true;
unset($GLOBALS['errno']);
}
}
if (! strlen($db) || !$is_db) {
// Not a valid db name -> back to the welcome page
if (! strlen($db) || ! $is_db) {
PMA_sendHeaderLocation($cfg['PmaAbsoluteUri'] . 'main.php?' . PMA_generate_common_url('', '', '&') . (isset($message) ? '&message=' . urlencode($message) : '') . '&reload=1');
exit;
}
@@ -59,7 +65,6 @@ if (isset($submitcollation) && !empty($db_collation)) {
unset($db_charset, $db_collation);
}
$GLOBALS['js_include'][] = 'functions.js';
require_once './libraries/header.inc.php';
/**

View File

@@ -2,7 +2,6 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {

View File

@@ -31,7 +31,6 @@
* @uses strnatcasecmp()
* @uses count()
* @uses addslashes()
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
@@ -59,7 +58,6 @@ $pos = $_SESSION['tmp_user_values']['table_limit_offset'];
* fills given tooltip arrays
*
* @uses $cfg['ShowTooltipAliasTB']
* @uses __('Creation')
* @uses PMA_localisedDate()
* @uses strtotime()
* @param array $tooltip_truename tooltip data

View File

@@ -2,7 +2,6 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
@@ -14,7 +13,6 @@ if (! defined('PHPMYADMIN')) {
*/
require_once './libraries/common.inc.php';
require_once './libraries/relation.lib.php';
/**
* Gets the relation settings
*/
@@ -36,19 +34,6 @@ $is_superuser = PMA_isSuperuser();
/**
* Prepares links
*/
// Drop link if allowed
// Don't even try to drop information_schema. You won't be able to. Believe me. You won't.
// Don't allow to easilly drop mysql database, RFE #1327514.
if (($is_superuser || $GLOBALS['cfg']['AllowUserDropDatabase']) && ! $db_is_information_schema && ($db != 'mysql')) {
$tab_drop['link'] = 'sql.php';
$tab_drop['args']['sql_query'] = 'DROP DATABASE ' . PMA_backquote($db);
$tab_drop['args']['zero_rows'] = sprintf(__('Database %s has been dropped.'), htmlspecialchars(PMA_backquote($db)));
$tab_drop['args']['goto'] = 'main.php';
$tab_drop['args']['back'] = 'db' . $sub_part . '.php';
$tab_drop['args']['reload'] = 1;
$tab_drop['args']['purge'] = 1;
$tab_drop['attr'] = 'onclick="return confirmLinkDropDB(this, \'DROP DATABASE ' . PMA_jsFormat($db) . '\')"';
}
/**
* export, search and qbe links if there is at least one table
@@ -97,9 +82,6 @@ if (! $db_is_information_schema) {
$tab_import['link'] = 'db_import.php';
$tab_import['text'] = __('Import');
$tab_import['icon'] = 'b_import.png';
$tab_drop['text'] = __('Drop');
$tab_drop['icon'] = 'b_deltbl.png';
$tab_drop['class'] = 'caution';
$tab_operation['link'] = 'db_operations.php';
$tab_operation['text'] = __('Operations');
$tab_operation['icon'] = 'b_tblops.png';
@@ -134,9 +116,6 @@ if (! $db_is_information_schema) {
if ($is_superuser) {
$tabs[] =& $tab_privileges;
}
if ($is_superuser || $GLOBALS['cfg']['AllowUserDropDatabase']) {
$tabs[] =& $tab_drop;
}
}
$url_params['db'] = $db;

View File

@@ -12,7 +12,6 @@
* our current sql.php.
* Of course the interface would need a way to pass calling parameters.
* Also, support DEFINER (like we do in export).
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {

View File

@@ -2,7 +2,6 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
@@ -17,14 +16,6 @@ if (! defined('PHPMYADMIN')) {
* @uses PMA_showHint()
* @uses $GLOBALS['cfg']['PropertiesNumColumns']
* @uses $GLOBALS['is_show_stats']
* @uses __('Table')
* @uses __('Action')
* @uses __('Rows')
* @uses __('May be approximate. See [a@./Documentation.html#faq3_11@Documentation]FAQ 3.11[/a]')
* @uses __('Type')
* @uses __('Collation')
* @uses __('Size')
* @uses __('Overhead')
* @uses $GLOBALS['colspan_for_structure']
* @uses PMA_SortableTableHeader()
* @param boolean $db_is_information_schema

View File

@@ -4,18 +4,12 @@
* Ensure the database and the table exist (else move to the "parent" script)
* and display headers
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
exit;
}
/**
*
*/
require_once './libraries/Table.class.php';
if (empty($is_db)) {
if (strlen($db)) {
$is_db = @PMA_DBI_select_db($db);

View File

@@ -1,7 +1,6 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* @version $Id$
* @package phpMyAdmin-DBG
*/
if (! defined('PHPMYADMIN')) {
@@ -19,8 +18,8 @@ if ($GLOBALS['cfg']['DBG']['php']) {
* Loads the DBG extension if needed
*/
if (! @extension_loaded('dbg') ) {
$message = PMA_Message::error(__('Cannot load [a@http://php.net/%1$s@Documentation][em]%1$s[/em][/a] extension. Please check your PHP configuration.'));
$message->addParam('DBG');
$message = PMA_Message::error(__('The %s extension is missing. Please check your PHP configuration.'),
$message->addParam(sprintf('[a@http://php.net/%1$s@Documentation][em]%1$s[/em][/a]', 'dbg'));
$message->addMessage('<a href="./Documentation.html#faqdbg" target="documentation">', false);
$message->addString(__('Documentation'));
$message->addMessage('</a>', false);

View File

@@ -4,7 +4,6 @@
* Interface to the classic MySQL extension
*
* @package phpMyAdmin-DBI-MySQL
* @version $Id$
*/
if (! defined('PHPMYADMIN')) {
exit;
@@ -308,9 +307,6 @@ function PMA_DBI_get_client_info()
* @uses PMA_DBI_convert_message()
* @uses $GLOBALS['errno']
* @uses $GLOBALS['userlink']
* @uses __('The server is not responding')
* @uses __('(or the local MySQL server's socket is not correctly configured)')
* @uses __('Details...')
* @uses mysql_errno()
* @uses mysql_error()
* @uses defined()

View File

@@ -4,7 +4,6 @@
* Interface to the improved MySQL extension (MySQLi)
*
* @package phpMyAdmin-DBI-MySQLi
* @version $Id$
*/
if (! defined('PHPMYADMIN')) {
exit;
@@ -144,7 +143,6 @@ function PMA_DBI_connect($user, $password, $is_controluser = false, $server = nu
* selects given database
*
* @uses $GLOBALS['userlink']
* @uses PMA_convert_charset()
* @uses mysqli_select_db()
* @param string $dbname database name to select
* @param object mysqli $link the mysqli object
@@ -168,7 +166,6 @@ function PMA_DBI_select_db($dbname, $link = null)
* @uses PMA_DBI_QUERY_STORE
* @uses PMA_DBI_QUERY_UNBUFFERED
* @uses $GLOBALS['userlink']
* @uses PMA_convert_charset()
* @uses MYSQLI_STORE_RESULT
* @uses MYSQLI_USE_RESULT
* @uses mysqli_query()
@@ -366,8 +363,6 @@ function PMA_DBI_get_client_info()
* @uses PMA_DBI_convert_message()
* @uses $GLOBALS['errno']
* @uses $GLOBALS['userlink']
* @uses __('The server is not responding')
* @uses __('(or the local MySQL server's socket is not correctly configured)')
* @uses mysqli_errno()
* @uses mysqli_error()
* @uses mysqli_connect_errno()

View File

@@ -3,7 +3,6 @@
/**
* Displays form for password change
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
@@ -58,7 +57,7 @@ $chg_evt_handler = (PMA_USR_BROWSER_AGENT == 'IE' && PMA_USR_BROWSER_VER >= 5)
</label>
</td>
</tr>
<tr>
<tr id="tr_element_before_generate_password">
<td>&nbsp;</td>
<td>
<input type="radio" name="pw_hash" id="radio_pw_hash_old" value="old" />
@@ -67,15 +66,6 @@ $chg_evt_handler = (PMA_USR_BROWSER_AGENT == 'IE' && PMA_USR_BROWSER_VER >= 5)
</label>
</td>
</tr>
<tr>
<td>
<?php echo __('Generate Password'); ?>
</td>
<td>
<input type="button" id="button_generate_password" value="<?php echo __('Generate'); ?>" onclick="suggestPassword(this.form)" />
<input type="text" name="generated_pw" id="generated_pw" />
</td>
</tr>
</table>
</fieldset>
<fieldset id="fieldset_change_password_footer" class="tblFooters">

View File

@@ -3,7 +3,6 @@
/**
* Displays form for creating database (if user has privileges for that)
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {

View File

@@ -22,7 +22,6 @@
* warnings about the lack of privileges for CREATE TABLE. Tested
* on MySQL 5.0.18.
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {

View File

@@ -2,20 +2,13 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
exit;
}
/**
*
*/
require_once './libraries/Table.class.php';
// Get relations & co. status
require_once './libraries/relation.lib.php';
$cfgRelation = PMA_getRelationsParam();
@@ -148,13 +141,13 @@ echo PMA_pluginGetJavascript($export_list);
echo __('File name template');
$trans = new PMA_Message;
$trans->addMessage('__SERVER__/');
$trans->addMessage('@SERVER@/');
$trans->addString(__('server name'));
if ($export_type == 'database' || $export_type == 'table') {
$trans->addMessage('__DB__/');
$trans->addMessage('@DATABASE@/');
$trans->addString(__('database name'));
if ($export_type == 'table') {
$trans->addMessage('__TABLE__/');
$trans->addMessage('@TABLE@/');
$trans->addString(__('table name'));
}
}
@@ -194,6 +187,7 @@ echo PMA_pluginGetJavascript($export_list);
?>
/>
<?php echo PMA_showDocu('faq6_27'); ?>
(
<input type="checkbox" name="remember_template"
id="checkbox_remember_template"
@@ -205,7 +199,7 @@ echo PMA_pluginGetJavascript($export_list);
<div class="formelementrow">
<?php
// charset of file
if ($cfg['AllowAnywhereRecoding']) {
if ($GLOBALS['PMA_recoding_engine'] != PMA_CHARSET_NONE) {
echo ' <label for="select_charset_of_file">'
. __('Character set of the file:') . '</label>' . "\n";

View File

@@ -2,7 +2,6 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
@@ -94,9 +93,9 @@ if ($_SESSION[$SESSION_KEY]["handler"]!="noplugin") {
window.setTimeout(perform_upload, 1000);
<?php
} else { // no plugin avaliable
} else { // no plugin available
?>
$('#upload_form_status_info').html('<img src="<?php echo $GLOBALS['pmaThemeImage'];?>ajax_clock_small.gif" alt="ajax clock" /> <?php echo __('Please be patient, the file is being uploaded. Details about the upload are not available.') . PMA_showDocu('faq2_9'); ?>');
$('#upload_form_status_info').html('<img src="<?php echo $GLOBALS['pmaThemeImage'];?>ajax_clock_small.gif" alt="ajax clock" /> <?php echo PMA_jsFormat(__('Please be patient, the file is being uploaded. Details about the upload are not available.')) . PMA_showDocu('faq2_9'); ?>');
$('#upload_form_status').css("display", "none");
<?php
} // else
@@ -174,7 +173,7 @@ if ($_SESSION[$SESSION_KEY]["handler"]!="noplugin") {
// charset of file
echo '<div class="formelementrow">' . "\n";
if ($cfg['AllowAnywhereRecoding']) {
if ($GLOBALS['PMA_recoding_engine'] != PMA_CHARSET_NONE) {
echo '<label for="charset_of_file">' . __('Character set of the file:') . '</label>';
reset($cfg['AvailableCharsets']);
echo '<select id="charset_of_file" name="charset_of_file" size="1">';

View File

@@ -2,7 +2,6 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/

View File

@@ -3,7 +3,6 @@
/**
* Code for displaying language selection
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {

View File

@@ -3,14 +3,12 @@
/**
* library for displaying table with results from all sort of select queries
*
* @version $Id$
* @package phpMyAdmin
*/
/**
*
*/
require_once './libraries/Table.class.php';
require_once './libraries/Index.class.php';
/**
@@ -1286,47 +1284,8 @@ function PMA_displayTableBody(&$dt_result, &$is_display, $map, $analyzed_sql) {
$vertical_display['data'][$row_no][$i] = ' <td align="right"' . $mouse_events . ' class="' . $class . ($condition_field ? ' condition' : '') . '"><i>NULL</i></td>' . "\n";
} else {
// for blobstreaming
$bs_reference_exists = $allBSTablesExist = FALSE;
// load PMA configuration
$PMA_Config = $GLOBALS['PMA_Config'];
// if PMA configuration exists
if ($PMA_Config) {
// load BS variables
$pluginsExist = $PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST');
// if BS plugins exist
if ($pluginsExist) {
// load BS databases
$bs_tables = $PMA_Config->get('BLOBSTREAMABLE_DATABASES');
// if BS db array and specified db string not empty and valid
if (!empty($bs_tables) && strlen($db) > 0) {
$bs_tables = $bs_tables[$db];
if (isset($bs_tables)) {
$allBSTablesExist = TRUE;
// check if BS tables exist for given database
foreach ($bs_tables as $table_key=>$bs_tbl)
if (!$bs_tables[$table_key]['Exists']) {
$allBSTablesExist = FALSE;
break;
}
}
}
}
}
// if necessary BS tables exist
if ($allBSTablesExist) {
$bs_reference_exists = PMA_BS_ReferenceExists($row[$i], $db);
}
// if valid BS reference exists
if ($bs_reference_exists) {
if (PMA_BS_IsPBMSReference($row[$i], $db)) {
$blobtext = PMA_BS_CreateReferenceLink($row[$i], $db);
} else {
$blobtext = PMA_handle_non_printable_contents('BLOB', (isset($row[$i]) ? $row[$i] : ''), $transform_function, $transform_options, $default_function, $meta, $_url_params);
@@ -1379,9 +1338,8 @@ function PMA_displayTableBody(&$dt_result, &$is_display, $map, $analyzed_sql) {
// user asked to see the real contents of BINARY
// fields
if ($_SESSION['tmp_user_values']['display_binary_as_hex'] && PMA_contains_nonprintable_ascii($row[$i])) {
$row[$i] = bin2hex($row[$i]);
}
else {
$row[$i] = bin2hex($row[$i]);
} else {
$row[$i] = htmlspecialchars(PMA_replace_binary_contents($row[$i]));
}
} else {
@@ -1735,7 +1693,7 @@ function PMA_displayTable_checkConfigParams()
} else {
// display_binary_as_hex config option
if (isset($GLOBALS['cfg']['DisplayBinaryAsHex']) && true === $GLOBALS['cfg']['DisplayBinaryAsHex']) {
$_SESSION['tmp_user_values']['query'][$sql_md5]['display_binary_as_hex'] = true;
$_SESSION['tmp_user_values']['query'][$sql_md5]['display_binary_as_hex'] = true;
}
}
@@ -2315,7 +2273,6 @@ function PMA_handle_non_printable_contents($category, $content, $transform_funct
* @uses PMA_DBI_try_query()
* @uses PMA_DBI_num_rows()
* @uses PMA_DBI_fetch_row()
* @uses __('Link not found')
* @uses PMA_DBI_free_result()
* @uses $GLOBALS['printview']
* @uses htmlspecialchars()

View File

@@ -7,7 +7,6 @@
* - reversed the right modify links: 1. drop, 2. edit, 3. checkbox
* - also changes made in js/functions.js
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {

View File

@@ -1,7 +1,6 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* @version $Id$
* @package phpMyAdmin-Engines
*/

View File

@@ -1,7 +1,6 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* @version $Id$
* @package phpMyAdmin-Engines
*/

View File

@@ -1,7 +1,6 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* @version $Id$
* @package phpMyAdmin-Engines
*/

View File

@@ -2,7 +2,6 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin-Engines
*/

View File

@@ -1,7 +1,6 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* @version $Id$
* @package phpMyAdmin-Engines
*/
@@ -12,13 +11,6 @@
class PMA_StorageEngine_innodb extends PMA_StorageEngine
{
/**
* @uses __('Data home directory')
* @uses __('The common part of the directory path for all InnoDB data files.')
* @uses __('Data files')
* @uses __('Autoextend increment')
* @uses __(' The increment size for extending the size of an autoextending tablespace when it becomes full.')
* @uses __('Buffer pool size')
* @uses __('The size of the memory buffer InnoDB uses to cache data and indexes of its tables.')
* @uses PMA_ENGINE_DETAILS_TYPE_NUMERIC
* @uses PMA_ENGINE_DETAILS_TYPE_SIZE
* @return array
@@ -131,8 +123,6 @@ class PMA_StorageEngine_innodb extends PMA_StorageEngine
/**
* @uses $this->support
* @uses PMA_ENGINE_SUPPORT_YES
* @uses __('Buffer Pool')
* @uses __('InnoDB Status')
* @return array detail pages
*/
function getInfoPages()
@@ -152,22 +142,6 @@ class PMA_StorageEngine_innodb extends PMA_StorageEngine
* @uses PMA_DBI_fetch_result()
* @uses PMA_formatNumber()
* @uses PMA_formatByteDown()
* @uses __('Buffer Pool Usage')
* @uses __('Total')
* @uses __('pages')
* @uses __('Free pages')
* @uses __('Dirty pages')
* @uses __('Pages containing data')
* @uses __('Pages to be flushed')
* @uses __('Busy pages')
* @uses __('Latched pages')
* @uses __('Buffer Pool Activity')
* @uses __('Read requests')
* @uses __('Write requests')
* @uses __('Read misses')
* @uses __('Write waits')
* @uses __('Read misses in %')
* @uses __('Write waits in %')
* @uses join()
* @uses htmlspecialchars()
* @uses PMA_formatNumber()
@@ -305,7 +279,7 @@ class PMA_StorageEngine_innodb extends PMA_StorageEngine
function getPageStatus()
{
return '<pre id="pre_innodb_status">' . "\n"
. htmlspecialchars(PMA_DBI_fetch_value('SHOW INNODB STATUS;')) . "\n"
. htmlspecialchars(PMA_DBI_fetch_value('SHOW INNODB STATUS;', 0, 'Status')) . "\n"
. '</pre>' . "\n";
}

View File

@@ -1,7 +1,6 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* @version $Id$
* @package phpMyAdmin-Engines
*/

View File

@@ -1,7 +1,6 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* @version $Id$
* @package phpMyAdmin-Engines
*/

View File

@@ -1,7 +1,6 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* @version $Id$
* @package phpMyAdmin-Engines
*/

View File

@@ -1,7 +1,6 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* @version $Id$
* @package phpMyAdmin-Engines
*/

View File

@@ -1,7 +1,6 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* @version $Id$
* @package phpMyAdmin-Engines
*/

View File

@@ -0,0 +1,113 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* @version $Id$
* @package phpMyAdmin-Engines
*/
/**
* the PBMS daemon
* @package phpMyAdmin-Engines
*/
class PMA_StorageEngine_pbms extends PMA_StorageEngine
{
/**
* returns array with variable names dedicated to PBMS daemon
*
* @return array variable names
*/
function engine_init()
{
$this->engine = "PBMS";
$this->title = "PrimeBase Media Streaming Daemon";
$this->comment = "Provides BLOB streaming service for storage engines,";
$this->support = PMA_ENGINE_SUPPORT_YES;
}
function getVariables()
{
return array(
'pbms_garbage_threshold' => array(
'title' => __('Garbage Threshold'),
'desc' => __('The percentage of garbage in a repository file before it is compacted.'),
'type' => PMA_ENGINE_DETAILS_TYPE_PLAINTEXT
),
'pbms_port' => array(
'title' => __('Port'),
'desc' => __('The port for the PBMS stream-based communications. Setting this value to 0 will disable HTTP communication with the daemon.'),
'type' => PMA_ENGINE_DETAILS_TYPE_PLAINTEXT
),
'pbms_repository_threshold' => array(
'title' => __('Repository Threshold'),
'desc' => __('The maximum size of a BLOB repository file. You may use Kb, MB or GB to indicate the unit of the value. A value in bytes is assumed when no unit is specified.'),
'type' => PMA_ENGINE_DETAILS_TYPE_PLAINTEXT
),
'pbms_temp_blob_timeout' => array(
'title' => __('Temp Blob Timeout'),
'desc' => __('The timeout, in seconds, for temporary BLOBs. Uploaded BLOB data is removed after this time, unless they are referenced by a record in the database.'),
'type' => PMA_ENGINE_DETAILS_TYPE_PLAINTEXT
),
'pbms_temp_log_threshold' => array(
'title' => __('Temp Log Threshold'),
'desc' => __('The maximum size of a temporary BLOB log file. You may use Kb, MB or GB to indicate the unit of the value. A value in bytes is assumed when no unit is specified.'),
'type' => PMA_ENGINE_DETAILS_TYPE_PLAINTEXT
),
'pbms_max_keep_alive' => array(
'title' => __('Max Keep Alive'),
'desc' => __('The timeout for inactive connection with the keep-alive flag set. After this time the connection will be closed. The time-out is in milliseconds (1/1000).'),
'type' => PMA_ENGINE_DETAILS_TYPE_PLAINTEXT
),
'pbms_http_metadata_headers' => array(
'title' => __('Metadata Headers'),
'desc' => __('A ":" delimited list of metadata headers to be used to initialize the pbms_metadata_header table when a database is created.'),
'type' => PMA_ENGINE_DETAILS_TYPE_PLAINTEXT
),
);
}
//--------------------
function getInfoPages()
{
$pages = array();
$pages['Documentation'] = __('Documentation');
return $pages;
}
//--------------------
function getPage($id)
{
if (! array_key_exists($id, $this->getInfoPages())) {
return false;
}
$id = 'getPage' . $id;
return $this->$id();
}
function getPageConfigure()
{
}
function getPageDocumentation()
{
$output = '<p> Documentation and further information about PBMS can be found on ' . "\n"
. '<a href="http://www.blobstreaming.org/" target="_blank">The PrimeBase Media Streaming home page</a>.<br><br>' . "\n"
. '<table id="PBMS_Related_Links" >' . "\n"
. '<tr>' . "\n"
. '<td>' . "\n"
. '<p>' . "\n"
. '<strong><font size="2"><b>Related Links</b></font></strong>' . "\n"
. '<br>' . "\n"
. '<a href="http://bpbdev.blogspot.com/" target="_blank">The PrimeBase Media Streaming Blog by Barry Leslie</a><br><br>' . "\n"
. '<a href="http://www.primebase.com/xt" target="_blank">PrimeBase XT Home Page</a><br><br>' . "\n"
. '</font>' . "\n"
. '</td>' . "\n"
. '</tr>' . "\n"
. '</table>' . "\n";
return $output;
}
}
?>

View File

@@ -1,7 +1,6 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* @version $Id$
* @package phpMyAdmin-Engines
*/
@@ -99,6 +98,46 @@ class PMA_StorageEngine_pbxt extends PMA_StorageEngine
}
return PMA_formatByteDown($value);
}
//--------------------
function getInfoPages()
{
$pages = array();
$pages['Documentation'] = __('Documentation');
return $pages;
}
//--------------------
function getPage($id)
{
if (! array_key_exists($id, $this->getInfoPages())) {
return false;
}
$id = 'getPage' . $id;
return $this->$id();
}
function getPageDocumentation()
{
$output = '<p> Documentation and further information about PBXT can be found on the ' . "\n"
. '<a href="http://www.primebase.com/xt/" target="_blank">PrimeBase XT Home Page</a>.<br><br>' . "\n"
. '<table id="PBMS_Related_Links" >' . "\n"
. '<tr>' . "\n"
. '<td>' . "\n"
. '<p>' . "\n"
. '<strong><font size="2"><b>Related Links</b></font></strong>' . "\n"
. '<br>' . "\n"
. '<a href="http://pbxt.blogspot.com/" target="_blank">The PrimeBase XT Blog by Paul McCullagh</a><br><br>' . "\n"
. '<a href="http://www.blobstreaming.org/" target="_blank">The PrimeBase Media Streaming (PBMS) home page</a>.<br><br>' . "\n"
. '</font>' . "\n"
. '</td>' . "\n"
. '</tr>' . "\n"
. '</table>' . "\n";
return $output;
}
}
?>

View File

@@ -4,7 +4,6 @@
* Set of functions used to build NHibernate dumps of tables
*
* @package phpMyAdmin-Export-Codegen
* @version $Id$
*/
if (! defined('PHPMYADMIN')) {
exit;

View File

@@ -2,7 +2,6 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* @package phpMyAdmin-Export-CSV
* @version $Id$
*/
if (! defined('PHPMYADMIN')) {
exit;
@@ -70,7 +69,18 @@ function PMA_exportHeader() {
// Here we just prepare some values for export
if ($what == 'excel') {
$csv_terminated = "\015\012";
$csv_separator = isset($GLOBALS['excel_edition']) && $GLOBALS['excel_edition'] == 'mac_excel2003' ? ';' : ',';
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'])) {

View File

@@ -4,7 +4,6 @@
* Set of functions used to build CSV dumps of tables
*
* @package phpMyAdmin-Export-CSV
* @version $Id$
*/
if (! defined('PHPMYADMIN')) {
exit;

View File

@@ -4,7 +4,6 @@
* Set of functions used to build CSV dumps of tables
*
* @package phpMyAdmin-Export-HTMLWord
* @version $Id$
*/
if (! defined('PHPMYADMIN')) {
exit;

View File

@@ -4,12 +4,16 @@
* Set of functions used to build dumps of tables
*
* @package phpMyAdmin-Export-Latex
* @version $Id$
*/
if (! defined('PHPMYADMIN')) {
exit;
}
/* Messages used in default captions */
$GLOBALS['strLatexContent'] = __('Content of table @TABLE@');
$GLOBALS['strLatexContinued'] = __('(continued)');
$GLOBALS['strLatexStructure'] = __('Structure of table @TABLE@');
/**
*
*/
@@ -32,11 +36,11 @@ if (isset($plugin_list)) {
$plugin_list['latex']['options'][] =
array('type' => 'bgroup', 'name' => 'structure', 'text' => __('Structure'), 'force' => 'data');
$plugin_list['latex']['options'][] =
array('type' => 'text', 'name' => 'structure_caption', 'text' => __('Table caption'));
array('type' => 'text', 'name' => 'structure_caption', 'text' => __('Table caption'), 'doc' => 'faq6_27');
$plugin_list['latex']['options'][] =
array('type' => 'text', 'name' => 'structure_continued_caption', 'text' => __('Continued table caption'));
array('type' => 'text', 'name' => 'structure_continued_caption', 'text' => __('Continued table caption'), 'doc' => 'faq6_27');
$plugin_list['latex']['options'][] =
array('type' => 'text', 'name' => 'structure_label', 'text' => __('Label key'));
array('type' => 'text', 'name' => 'structure_label', 'text' => __('Label key'), 'doc' => 'faq6_27');
if (!empty($GLOBALS['cfgRelation']['relation'])) {
$plugin_list['latex']['options'][] =
array('type' => 'bool', 'name' => 'relation', 'text' => __('Relations'));
@@ -56,11 +60,11 @@ if (isset($plugin_list)) {
$plugin_list['latex']['options'][] =
array('type' => 'bool', 'name' => 'columns', 'text' => __('Put columns names in the first row'));
$plugin_list['latex']['options'][] =
array('type' => 'text', 'name' => 'data_caption', 'text' => __('Table caption'));
array('type' => 'text', 'name' => 'data_caption', 'text' => __('Table caption'), 'doc' => 'faq6_27');
$plugin_list['latex']['options'][] =
array('type' => 'text', 'name' => 'data_continued_caption', 'text' => __('Continued table caption'));
array('type' => 'text', 'name' => 'data_continued_caption', 'text' => __('Continued table caption'), 'doc' => 'faq6_27');
$plugin_list['latex']['options'][] =
array('type' => 'text', 'name' => 'data_label', 'text' => __('Label key'));
array('type' => 'text', 'name' => 'data_label', 'text' => __('Label key'), 'doc' => 'faq6_27');
$plugin_list['latex']['options'][] =
array('type' => 'text', 'name' => 'null', 'text' => __('Replace NULL by'));
$plugin_list['latex']['options'][] =
@@ -77,12 +81,12 @@ if (isset($plugin_list)) {
* @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;
$escape = array('$', '%', '{', '}', '&', '#', '_', '^');
$cnt_escape = count($escape);
for ($k=0; $k < $cnt_escape; $k++) {
$string = str_replace($escape[$k], '\\' . $escape[$k], $string);
}
return $string;
}
/**
@@ -208,8 +212,8 @@ function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) {
$buffer .= ' \\hline \\endhead \\hline \\endfoot \\hline ' . $crlf;
if (isset($GLOBALS['latex_caption'])) {
$buffer .= ' \\caption{' . str_replace('__TABLE__', PMA_texEscape($table), $GLOBALS['latex_data_caption'])
. '} \\label{' . str_replace('__TABLE__', $table, $GLOBALS['latex_data_label']) . '} \\\\';
$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)) . '} \\\\';
}
if (!PMA_exportOutputHandler($buffer)) {
return FALSE;
@@ -227,7 +231,7 @@ function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) {
return FALSE;
}
if (isset($GLOBALS['latex_caption'])) {
if (!PMA_exportOutputHandler('\\caption{' . str_replace('__TABLE__', PMA_texEscape($table), $GLOBALS['latex_data_continued_caption']) . '} \\\\ ')) return FALSE;
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;
@@ -290,7 +294,7 @@ function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) {
*
* @access public
*/
// @@@ Table structure
// @@@ Table structure
function PMA_exportStructure($db, $table, $crlf, $error_url, $do_relation = false, $do_comments = false, $do_mime = false, $dates = false, $dummy)
{
global $cfgRelation;
@@ -374,14 +378,14 @@ function PMA_exportStructure($db, $table, $crlf, $error_url, $do_relation = fals
// Table caption for first page and label
if (isset($GLOBALS['latex_caption'])) {
$buffer .= ' \\caption{'. str_replace('__TABLE__', PMA_texEscape($table), $GLOBALS['latex_structure_caption'])
. '} \\label{' . str_replace('__TABLE__', $table, $GLOBALS['latex_structure_label'])
$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{'. str_replace('__TABLE__', PMA_texEscape($table), $GLOBALS['latex_structure_continued_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;
@@ -426,8 +430,8 @@ function PMA_exportStructure($db, $table, $crlf, $error_url, $do_relation = fals
$field_name = $row['Field'];
$local_buffer = $field_name . "\000" . $type . "\000"
. (($row['Null'] == '' || $row['Null'] == 'NO') ? __('No') : __('Yes'))
$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) {

View File

@@ -4,7 +4,6 @@
* Set of functions used to build OpenDocument Spreadsheet dumps of tables
*
* @package phpMyAdmin-Export-ODS
* @version $Id$
*/
if (! defined('PHPMYADMIN')) {
exit;

View File

@@ -4,7 +4,6 @@
* Set of functions used to build OpenDocument Text dumps of tables
*
* @package phpMyAdmin-Export-ODT
* @version $Id$
*/
if (! defined('PHPMYADMIN')) {
exit;

View File

@@ -4,7 +4,6 @@
* Produce a PDF report (export) from a query
*
* @package phpMyAdmin-Export-PDF
* @version $Id$
*/
if (! defined('PHPMYADMIN')) {
exit;

View File

@@ -4,7 +4,6 @@
* Set of functions used to build SQL dumps of tables
*
* @package phpMyAdmin-Export-SQL
* @version $Id$
*/
if (! defined('PHPMYADMIN')) {
exit;
@@ -187,7 +186,6 @@ function PMA_exportFooter()
}
// restore connection settings
// (not set if $cfg['AllowAnywhereRecoding'] is false)
$charset_of_file = isset($GLOBALS['charset_of_file']) ? $GLOBALS['charset_of_file'] : '';
if (!empty($GLOBALS['asfile']) && isset($mysql_charset_map[$charset_of_file])) {
$foot .= $crlf
@@ -276,8 +274,7 @@ function PMA_exportHeader()
// so that a utility like the mysql client can interpret
// the file correctly
if (isset($GLOBALS['charset_of_file']) && isset($mysql_charset_map[$GLOBALS['charset_of_file']])) {
// $cfg['AllowAnywhereRecoding'] was true so we got a charset from
// the export dialog
// we got a charset from the export dialog
$set_names = $mysql_charset_map[$GLOBALS['charset_of_file']];
} else {
// by default we use the connection charset
@@ -535,7 +532,7 @@ function PMA_getTableDef($db, $table, $crlf, $error_url, $show_dates = false, $a
$schema_create .= 'DROP TABLE IF EXISTS ' . PMA_backquote($table, $sql_backquotes) . ';' . $crlf;
}
// Steve Alberty's patch for complete table dump,
// Complete table dump,
// Whether to quote table and fields names or not
if ($sql_backquotes) {
PMA_DBI_query('SET SQL_QUOTE_SHOW_CREATE = 1');

View File

@@ -4,7 +4,6 @@
*
*
* @package phpMyAdmin-Export-XLS
* @version $Id$
*/
if (! defined('PHPMYADMIN')) {
exit;

View File

@@ -4,7 +4,6 @@
*
*
* @package phpMyAdmin-Export-XLSX
* @version $Id$
*/
if (! defined('PHPMYADMIN')) {
exit;

View File

@@ -4,7 +4,6 @@
* Set of functions used to build XML dumps of tables
*
* @todo
* @version $Id$
* @package phpMyAdmin-Export-XML
*/
if (! defined('PHPMYADMIN')) {

View File

@@ -3,7 +3,6 @@
/**
* Set of functions used to build YAML dumps of tables
*
* @version $Id$
* @package phpMyAdmin-Export-YAML
*/
if (! defined('PHPMYADMIN')) {

View File

@@ -4,7 +4,6 @@
* Functions for listing directories
*
* @todo rename to file_listing.lib.php
* @version $Id$
* @package phpMyAdmin
*/

View File

@@ -31,7 +31,6 @@
* @uses $cfg['NavigationBarIconic']
* @uses $cfg['DBG']['enable']
* @uses $cfg['DBG']['profile']['enable']
* @uses __('Open new phpMyAdmin window')
* @uses $cfg['MaxCharactersInDisplayedSQL']
* @uses PMA_isValid()
* @uses PMA_setHistory()
@@ -41,7 +40,6 @@
* @uses PMA_generate_common_url()
* @uses basename()
* @uses file_exists()
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
@@ -51,8 +49,6 @@ if (! defined('PHPMYADMIN')) {
/**
* for PMA_setHistory()
*/
require_once './libraries/relation.lib.php';
if (! PMA_isValid($_REQUEST['no_history']) && empty($GLOBALS['error_message'])
&& ! empty($GLOBALS['sql_query'])) {
PMA_setHistory(PMA_ifSetOr($GLOBALS['db'], ''),

View File

@@ -6,7 +6,6 @@
* variables from them. It does the same work for $HTTP_ACCEPT_LANGUAGE and
* $HTTP_AUTHORIZATION.
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
@@ -71,7 +70,6 @@ $_import_blacklist = array(
'/^goto$/i', // page to display
'/^back$/i', // the page go back
'/^lang$/i', // selected language
'/^convcharset$/i', // PMA convert charset
'/^collation_connection$/i', //
'/^set_theme$/i', //
'/^sql_query$/i', // the query to be executed

View File

@@ -2,7 +2,6 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
@@ -144,7 +143,6 @@ if (empty($GLOBALS['is_header_sent'])) {
/**
* Settings for relations stuff
*/
require_once './libraries/relation.lib.php';
$cfgRelation = PMA_getRelationsParam();
// Get additional information about tables for tooltip is done

View File

@@ -2,7 +2,6 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {

View File

@@ -2,7 +2,6 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {

View File

@@ -2,7 +2,6 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {

View File

@@ -2,7 +2,6 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
@@ -22,25 +21,7 @@ if ( false === $GLOBALS['cfg']['AllowThirdPartyFraming']) {
<?php
}
// generate title
$title = str_replace(
array(
'@HTTP_HOST@',
'@SERVER@',
'@VERBOSE@',
'@VSERVER@',
'@DATABASE@',
'@TABLE@',
'@PHPMYADMIN@',
),
array(
PMA_getenv('HTTP_HOST') ? PMA_getenv('HTTP_HOST') : '',
isset($GLOBALS['cfg']['Server']['host']) ? $GLOBALS['cfg']['Server']['host'] : '',
isset($GLOBALS['cfg']['Server']['verbose']) ? $GLOBALS['cfg']['Server']['verbose'] : '',
!empty($GLOBALS['cfg']['Server']['verbose']) ? $GLOBALS['cfg']['Server']['verbose'] : (isset($GLOBALS['cfg']['Server']['host']) ? $GLOBALS['cfg']['Server']['host'] : ''),
$GLOBALS['db'],
$GLOBALS['table'],
'phpMyAdmin ' . PMA_VERSION,
),
$title = PMA_expandUserString(
!empty($GLOBALS['table']) ? $GLOBALS['cfg']['TitleTable'] :
(!empty($GLOBALS['db']) ? $GLOBALS['cfg']['TitleDatabase'] :
(!empty($GLOBALS['cfg']['Server']['host']) ? $GLOBALS['cfg']['TitleServer'] :
@@ -49,6 +30,7 @@ $title = str_replace(
// here, the function does not exist with this configuration: $cfg['ServerDefault'] = 0;
$is_superuser = function_exists('PMA_isSuperuser') && PMA_isSuperuser();
$GLOBALS['js_include'][] = 'functions.js';
$GLOBALS['js_include'][] = 'tooltip.js';
$params = array('lang' => $GLOBALS['lang']);
if (isset($GLOBALS['db'])) {
@@ -66,6 +48,9 @@ $GLOBALS['js_events'][] = array(
* upgrade phpMyAdmin are not stuck with older .js files in their
* browser cache. This produces an HTTP 304 request for each file.
*/
// avoid loading twice a js file
$GLOBALS['js_include'] = array_unique($GLOBALS['js_include']);
foreach ($GLOBALS['js_include'] as $js_script_file) {
if (strpos($js_script_file, '?') === FALSE) {
echo '<script src="./js/' . $js_script_file . '?ts=' . filemtime('./js/' . $js_script_file) . '" type="text/javascript"></script>' . "\n";

View File

@@ -2,7 +2,6 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
@@ -29,7 +28,7 @@ $gnu_iconv_to_aix_iconv_codepage_map = array (
// "big5" --> "IBM-eucTW" according to http://kadesh.cepba.upc.es/mancpp/classref/ref/ITranscoder_DSC.htm
'big5' => 'IBM-eucTW',
// Other mappings corresponding to the phpMyAdmin dropdown box when using the AllowAnywhereRecoding feature
// Other mappings corresponding to the phpMyAdmin dropdown box when using the charset conversion feature
'euc-jp' => 'IBM-eucJP',
'koi8-r' => 'IBM-eucKR',
'ks_c_5601-1987' => 'KSC5601.1987-0',

View File

@@ -3,7 +3,6 @@
/**
* Library that provides common import functions that are used by import plugins
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
@@ -84,6 +83,7 @@ function PMA_importRunQuery($sql = '', $full = '', $controluser = false)
{
global $import_run_buffer, $go_sql, $complete_query, $display_query,
$sql_query, $my_die, $error, $reload,
$last_query_with_results,
$skip_queries, $executed_queries, $max_sql_len, $read_multiply,
$cfg, $sql_query_disabled, $db, $run_query, $is_superuser;
$read_multiply = 1;
@@ -143,6 +143,7 @@ function PMA_importRunQuery($sql = '', $full = '', $controluser = false)
$a_aff_rows = (int)@PMA_DBI_affected_rows();
if ($a_num_rows > 0) {
$msg .= __('Rows'). ': ' . $a_num_rows;
$last_query_with_results = $import_run_buffer['sql'];
} elseif ($a_aff_rows > 0) {
$message = PMA_Message::affected_rows($a_aff_rows);
$msg .= $message->getMessage();
@@ -302,7 +303,19 @@ function PMA_importGetNextChunk($size = 32768)
/**
* Returns the "Excel" column name (i.e. 1 = "A", 26 = "Z", 27 = "AA", etc.)
* This algorithm only works up to ZZ. it fails on AAA (up to 701 columns)
*
* This functions uses recursion to build the Excel column name.
*
* The column number (1-26) is converted to the responding ASCII character (A-Z) and returned.
*
* If the column number is bigger than 26 (= num of letters in alfabet),
* an extra character needs to be added. To find this extra character, the number is divided by 26
* and this value is passed to another instance of the same function (hence recursion).
* In that new instance the number is evaluated again, and if it is still bigger than 26, it is divided again
* and passed to another instance of the same function. This continues until the number is smaller than 26.
* Then the last called function returns the corresponding ASCII character to the function that called it.
* Each time a called function ends an extra character is added to the column name.
* When the first function is reached, the last character is addded and the complete column name is returned.
*
* @access public
*
@@ -312,56 +325,75 @@ function PMA_importGetNextChunk($size = 32768)
*/
function PMA_getColumnAlphaName($num)
{
/* ASCII value for capital "A" */
$A = 65;
$sCol = "";
$iRemain = 0;
/* This algorithm only works up to ZZ. it fails on AAA */
if ($num > 701) {
return $num;
} elseif ($num <= 26) {
if ($num == 0) {
$sCol = chr(($A + 26) - 1);
} else {
$sCol = chr(($A + $num) - 1);
}
} else {
$iRemain = (($num / 26)) - 1;
if (($num % 26) == 0) {
$sCol = PMA_getColumnAlphaName($iRemain) . PMA_getColumnAlphaName($num % 26);
} else {
$sCol = chr($A + $iRemain) . PMA_getColumnAlphaName($num % 26);
}
}
return $sCol;
$A = 65; // ASCII value for capital "A"
$col_name = "";
if ($num > 26) {
$div = (int)($num / 26);
$remain = (int)($num % 26);
// subtract 1 of divided value in case the modulus is 0,
// this is necessary because A-Z has no 'zero'
if ($remain == 0) {
$div--;
}
// recursive function call
$col_name = PMA_getColumnAlphaName($div);
// use modulus as new column number
$num = $remain;
}
if ($num == 0) {
// use 'Z' if column number is 0,
// this is necessary because A-Z has no 'zero'
$col_name .= chr(($A + 26) - 1);
} else {
// convert column number to ASCII character
$col_name .= chr(($A + $num) - 1);
}
return $col_name;
}
/**
* Returns the column number based on the Excel name.
* So "A" = 1, "AZ" = 27, etc.
* So "A" = 1, "Z" = 26, "AA" = 27, etc.
*
* Basicly this is a base26 (A-Z) to base10 (0-9) conversion.
* It iterates through all characters in the column name and
* calculates the corresponding value, based on character value
* (A = 1, ..., Z = 26) and position in the string.
*
* @access public
*
* @uses strtoupper()
* @uses strlen()
* @uses count()
* @uses ord()
* @param string $name (i.e. "A", or "BC", etc.)
* @return int The column number
*/
function PMA_getColumnNumberFromName($name) {
if (strlen($name) != 0) {
if (!empty($name)) {
$name = strtoupper($name);
$num_chars = count($name);
$number = 0;
$num_chars = strlen($name);
$column_number = 0;
for ($i = 0; $i < $num_chars; ++$i) {
$number += (ord($name[$i]) - 64);
// read string from back to front
$char_pos = ($num_chars - 1) - $i;
// convert capital character to ASCII value
// and subtract 64 to get corresponding decimal value
// ASCII value of "A" is 65, "B" is 66, etc.
// Decimal equivalent of "A" is 1, "B" is 2, etc.
$number = (ord($name[$char_pos]) - 64);
// base26 to base10 conversion : multiply each number
// with corresponding value of the position, in this case
// $i=0 : 1; $i=1 : 26; $i=2 : 676; ...
$column_number += $number * pow(26,$i);
}
return $number;
return $column_number;
} else {
return 0;
}
@@ -829,8 +861,8 @@ $import_notice = NULL;
* @uses SIZES
* @uses strcmp()
* @uses count()
* @uses ereg()
* @uses ereg_replace()
* @uses preg_match()
* @uses preg_replace()
* @uses PMA_isView()
* @uses PMA_backquote()
* @uses PMA_importRunQuery()
@@ -901,17 +933,17 @@ function PMA_buildSQL($db_name, &$tables, &$analyses = NULL, &$additional_sql =
*
* $pattern = 'CREATE (TABLE|VIEW|TRIGGER|FUNCTION|PROCEDURE)';
*/
$pattern = 'CREATE .*(TABLE)';
$pattern = '/CREATE .*(TABLE)/';
$replacement = 'CREATE \\1 IF NOT EXISTS';
/* Change CREATE statements to CREATE IF NOT EXISTS to support inserting into existing structures */
for ($i = 0; $i < $additional_sql_len; ++$i) {
$additional_sql[$i] = ereg_replace($pattern, $replacement, $additional_sql[$i]);
$additional_sql[$i] = preg_replace($pattern, $replacement, $additional_sql[$i]);
/* Execute the resulting statements */
PMA_importRunQuery($additional_sql[$i], $additional_sql[$i]);
}
}
if ($analyses != NULL) {
$type_array = array(NONE => "NULL", VARCHAR => "varchar", INT => "int", DECIMAL => "decimal");
@@ -1036,8 +1068,8 @@ function PMA_buildSQL($db_name, &$tables, &$analyses = NULL, &$additional_sql =
/* Add the viewable structures from $additional_sql to $tables so they are also displayed */
$view_pattern = 'VIEW `[^`]+`\.`([^`]+)';
$table_pattern = 'CREATE TABLE IF NOT EXISTS `([^`]+)`';
$view_pattern = '@VIEW `[^`]+`\.`([^`]+)@';
$table_pattern = '@CREATE TABLE IF NOT EXISTS `([^`]+)`@';
/* Check a third pattern to make sure its not a "USE `db_name`;" statement */
$regs = array();
@@ -1046,10 +1078,10 @@ function PMA_buildSQL($db_name, &$tables, &$analyses = NULL, &$additional_sql =
$additional_sql_len = count($additional_sql);
for ($i = 0; $i < $additional_sql_len; ++$i) {
ereg($view_pattern, $additional_sql[$i], $regs);
preg_match($view_pattern, $additional_sql[$i], $regs);
if (count($regs) == 0) {
ereg($table_pattern, $additional_sql[$i], $regs);
preg_match($table_pattern, $additional_sql[$i], $regs);
}
if (count($regs)) {

View File

@@ -4,7 +4,6 @@
* CSV import plugin for phpMyAdmin
*
* @todo add an option for handling NULL values
* @version $Id$
* @package phpMyAdmin-Import
*/
if (! defined('PHPMYADMIN')) {

View File

@@ -3,7 +3,6 @@
/**
* DocSQL import plugin for phpMyAdmin
*
* @version $Id$
* @package phpMyAdmin-Import
*/
if (! defined('PHPMYADMIN')) {
@@ -13,7 +12,6 @@ if (! defined('PHPMYADMIN')) {
/**
* Load relations.
*/
require_once './libraries/relation.lib.php';
$cfgRelation = PMA_getRelationsParam();
/**

View File

@@ -3,7 +3,6 @@
/**
* CSV import plugin for phpMyAdmin
*
* @version $Id$
* @package phpMyAdmin-Import
*/
if (! defined('PHPMYADMIN')) {

View File

@@ -3,7 +3,6 @@
/**
* SQL import plugin for phpMyAdmin
*
* @version $Id$
* @package phpMyAdmin-Import
*/
if (! defined('PHPMYADMIN')) {

View File

@@ -2,7 +2,6 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/

View File

@@ -2,7 +2,6 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/

View File

@@ -2,7 +2,6 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {

View File

@@ -4,7 +4,6 @@
* Microsoft Office Excel 97-2003 XLS import plugin for phpMyAdmin
*
* @todo Pretty much everything
* @version $Id$
* @package phpMyAdmin-Import
*/

View File

@@ -4,7 +4,6 @@
* Microsoft Office Excel 2007 XLSX import plugin for phpMyAdmin
*
* @todo Pretty much everything
* @version $Id$
* @package phpMyAdmin-Import
*/

View File

@@ -2,7 +2,6 @@
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id$
* @package phpMyAdmin
*/

View File

@@ -4,7 +4,6 @@
* This library is used with the server IP allow/deny host authentication
* feature
*
* @version $Id$
* @package phpMyAdmin
*/

View File

@@ -5,7 +5,6 @@
*
* @package phpMyAdmin
*
* @version $Id$
*/
/**

View File

@@ -9,7 +9,6 @@
*
* 2002/2/22 - by Yukihiro Kawada <kawada@den.fujifilm.co.jp>
*
* @version $Id$
* @package phpMyAdmin
*/
if (! defined('PHPMYADMIN')) {

View File

@@ -5,7 +5,6 @@
*
* This includes web server specific code to log some information.
*
* @version $Id$
* @package phpMyAdmin
*/

View File

@@ -1,169 +0,0 @@
<?php
/* $Id$ */
/**
* Messages for phpMyAdmin.
*
* This file is here for easy transition to Gettext. You should not add any
* new messages here, use instead gettext directly in your template/PHP
* file.
*/
if (!function_exists('__')) {
die('Bad invocation!');
}
/* We use only utf-8 */
$charset = 'utf-8';
/* l10n: Text direction, use either ltr or rtl */
$text_dir = __('ltr');
$strLatexContent = __('Content of table __TABLE__');
$strLatexContinued = __('(continued)');
$strLatexStructure = __('Structure of table __TABLE__');
$strPrivDescAllPrivileges = __('Includes all privileges except GRANT.');
$strPrivDescAlter = __('Allows altering the structure of existing tables.');
$strPrivDescAlterRoutine = __('Allows altering and dropping stored routines.');
$strPrivDescCreateDb = __('Allows creating new databases and tables.');
$strPrivDescCreateRoutine = __('Allows creating stored routines.');
$strPrivDescCreateTbl = __('Allows creating new tables.');
$strPrivDescCreateTmpTable = __('Allows creating temporary tables.');
$strPrivDescCreateUser = __('Allows creating, dropping and renaming user accounts.');
$strPrivDescCreateView = __('Allows creating new views.');
$strPrivDescDelete = __('Allows deleting data.');
$strPrivDescDropDb = __('Allows dropping databases and tables.');
$strPrivDescDropTbl = __('Allows dropping tables.');
$strPrivDescEvent = __('Allows to set up events for the event scheduler');
$strPrivDescExecute = __('Allows executing stored routines.');
$strPrivDescFile = __('Allows importing data from and exporting data into files.');
$strPrivDescGrant = __('Allows adding users and privileges without reloading the privilege tables.');
$strPrivDescIndex = __('Allows creating and dropping indexes.');
$strPrivDescInsert = __('Allows inserting and replacing data.');
$strPrivDescLockTables = __('Allows locking tables for the current thread.');
$strPrivDescMaxConnections = __('Limits the number of new connections the user may open per hour.');
$strPrivDescMaxQuestions = __('Limits the number of queries the user may send to the server per hour.');
$strPrivDescMaxUpdates = __('Limits the number of commands that change any table or database the user may execute per hour.');
$strPrivDescMaxUserConnections = __('Limits the number of simultaneous connections the user may have.');
$strPrivDescProcess = __('Allows viewing processes of all users');
$strPrivDescReferences = __('Has no effect in this MySQL version.');
$strPrivDescReload = __('Allows reloading server settings and flushing the server\'s caches.');
$strPrivDescReplClient = __('Allows the user to ask where the slaves / masters are.');
$strPrivDescReplSlave = __('Needed for the replication slaves.');
$strPrivDescSelect = __('Allows reading data.');
$strPrivDescShowDb = __('Gives access to the complete list of databases.');
$strPrivDescShowView = __('Allows performing SHOW CREATE VIEW queries.');
$strPrivDescShutdown = __('Allows shutting down the server.');
$strPrivDescSuper = __('Allows connecting, even if maximum number of connections is reached; required for most administrative operations like setting global variables or killing threads of other users.');
$strPrivDescTrigger = __('Allows creating and dropping triggers');
$strPrivDescUpdate = __('Allows changing data.');
$strPrivDescUsage = __('No privileges.');
$strShowStatusBinlog_cache_disk_useDescr = __('The number of transactions that used the temporary binary log cache but that exceeded the value of binlog_cache_size and used a temporary file to store statements from the transaction.');
$strShowStatusBinlog_cache_useDescr = __('The number of transactions that used the temporary binary log cache.');
$strShowStatusCreated_tmp_disk_tablesDescr = __('The number of temporary tables on disk created automatically by the server while executing statements. If Created_tmp_disk_tables is big, you may want to increase the tmp_table_size value to cause temporary tables to be memory-based instead of disk-based.');
$strShowStatusCreated_tmp_filesDescr = __('How many temporary files mysqld has created.');
$strShowStatusCreated_tmp_tablesDescr = __('The number of in-memory temporary tables created automatically by the server while executing statements.');
$strShowStatusDelayed_errorsDescr = __('The number of rows written with INSERT DELAYED for which some error occurred (probably duplicate key).');
$strShowStatusDelayed_insert_threadsDescr = __('The number of INSERT DELAYED handler threads in use. Every different table on which one uses INSERT DELAYED gets its own thread.');
$strShowStatusDelayed_writesDescr = __('The number of INSERT DELAYED rows written.');
$strShowStatusFlush_commandsDescr = __('The number of executed FLUSH statements.');
$strShowStatusHandler_commitDescr = __('The number of internal COMMIT statements.');
$strShowStatusHandler_deleteDescr = __('The number of times a row was deleted from a table.');
$strShowStatusHandler_discoverDescr = __('The MySQL server can ask the NDB Cluster storage engine if it knows about a table with a given name. This is called discovery. Handler_discover indicates the number of time tables have been discovered.');
$strShowStatusHandler_read_firstDescr = __('The number of times the first entry was read from an index. If this is high, it suggests that the server is doing a lot of full index scans; for example, SELECT col1 FROM foo, assuming that col1 is indexed.');
$strShowStatusHandler_read_keyDescr = __('The number of requests to read a row based on a key. If this is high, it is a good indication that your queries and tables are properly indexed.');
$strShowStatusHandler_read_nextDescr = __('The number of requests to read the next row in key order. This is incremented if you are querying an index column with a range constraint or if you are doing an index scan.');
$strShowStatusHandler_read_prevDescr = __('The number of requests to read the previous row in key order. This read method is mainly used to optimize ORDER BY ... DESC.');
$strShowStatusHandler_read_rndDescr = __('The number of requests to read a row based on a fixed position. This is high if you are doing a lot of queries that require sorting of the result. You probably have a lot of queries that require MySQL to scan whole tables or you have joins that don\'t use keys properly.');
$strShowStatusHandler_read_rnd_nextDescr = __('The number of requests to read the next row in the data file. This is high if you are doing a lot of table scans. Generally this suggests that your tables are not properly indexed or that your queries are not written to take advantage of the indexes you have.');
$strShowStatusHandler_rollbackDescr = __('The number of internal ROLLBACK statements.');
$strShowStatusHandler_updateDescr = __('The number of requests to update a row in a table.');
$strShowStatusHandler_writeDescr = __('The number of requests to insert a row in a table.');
$strShowStatusInnodb_buffer_pool_pages_dataDescr = __('The number of pages containing data (dirty or clean).');
$strShowStatusInnodb_buffer_pool_pages_dirtyDescr = __('The number of pages currently dirty.');
$strShowStatusInnodb_buffer_pool_pages_flushedDescr = __('The number of buffer pool pages that have been requested to be flushed.');
$strShowStatusInnodb_buffer_pool_pages_freeDescr = __('The number of free pages.');
$strShowStatusInnodb_buffer_pool_pages_latchedDescr = __('The number of latched pages in InnoDB buffer pool. These are pages currently being read or written or that can\'t be flushed or removed for some other reason.');
$strShowStatusInnodb_buffer_pool_pages_miscDescr = __('The number of pages busy because they have been allocated for administrative overhead such as row locks or the adaptive hash index. This value can also be calculated as Innodb_buffer_pool_pages_total - Innodb_buffer_pool_pages_free - Innodb_buffer_pool_pages_data.');
$strShowStatusInnodb_buffer_pool_pages_totalDescr = __('Total size of buffer pool, in pages.');
$strShowStatusInnodb_buffer_pool_read_ahead_rndDescr = __('The number of "random" read-aheads InnoDB initiated. This happens when a query is to scan a large portion of a table but in random order.');
$strShowStatusInnodb_buffer_pool_read_ahead_seqDescr = __('The number of sequential read-aheads InnoDB initiated. This happens when InnoDB does a sequential full table scan.');
$strShowStatusInnodb_buffer_pool_read_requestsDescr = __('The number of logical read requests InnoDB has done.');
$strShowStatusInnodb_buffer_pool_readsDescr = __('The number of logical reads that InnoDB could not satisfy from buffer pool and had to do a single-page read.');
$strShowStatusInnodb_buffer_pool_wait_freeDescr = __('Normally, writes to the InnoDB buffer pool happen in the background. However, if it\'s necessary to read or create a page and no clean pages are available, it\'s necessary to wait for pages to be flushed first. This counter counts instances of these waits. If the buffer pool size was set properly, this value should be small.');
$strShowStatusInnodb_buffer_pool_write_requestsDescr = __('The number writes done to the InnoDB buffer pool.');
$strShowStatusInnodb_data_fsyncsDescr = __('The number of fsync() operations so far.');
$strShowStatusInnodb_data_pending_fsyncsDescr = __('The current number of pending fsync() operations.');
$strShowStatusInnodb_data_pending_readsDescr = __('The current number of pending reads.');
$strShowStatusInnodb_data_pending_writesDescr = __('The current number of pending writes.');
$strShowStatusInnodb_data_readDescr = __('The amount of data read so far, in bytes.');
$strShowStatusInnodb_data_readsDescr = __('The total number of data reads.');
$strShowStatusInnodb_data_writesDescr = __('The total number of data writes.');
$strShowStatusInnodb_data_writtenDescr = __('The amount of data written so far, in bytes.');
$strShowStatusInnodb_dblwr_pages_writtenDescr = __('The number of pages that have been written for doublewrite operations.');
$strShowStatusInnodb_dblwr_writesDescr = __('The number of doublewrite operations that have been performed.');
$strShowStatusInnodb_log_waitsDescr = __('The number of waits we had because log buffer was too small and we had to wait for it to be flushed before continuing.');
$strShowStatusInnodb_log_write_requestsDescr = __('The number of log write requests.');
$strShowStatusInnodb_log_writesDescr = __('The number of physical writes to the log file.');
$strShowStatusInnodb_os_log_fsyncsDescr = __('The number of fsync() writes done to the log file.');
$strShowStatusInnodb_os_log_pending_fsyncsDescr = __('The number of pending log file fsyncs.');
$strShowStatusInnodb_os_log_pending_writesDescr = __('Pending log file writes.');
$strShowStatusInnodb_os_log_writtenDescr = __('The number of bytes written to the log file.');
$strShowStatusInnodb_pages_createdDescr = __('The number of pages created.');
$strShowStatusInnodb_page_sizeDescr = __('The compiled-in InnoDB page size (default 16KB). Many values are counted in pages; the page size allows them to be easily converted to bytes.');
$strShowStatusInnodb_pages_readDescr = __('The number of pages read.');
$strShowStatusInnodb_pages_writtenDescr = __('The number of pages written.');
$strShowStatusInnodb_row_lock_current_waitsDescr = __('The number of row locks currently being waited for.');
$strShowStatusInnodb_row_lock_time_avgDescr = __('The average time to acquire a row lock, in milliseconds.');
$strShowStatusInnodb_row_lock_timeDescr = __('The total time spent in acquiring row locks, in milliseconds.');
$strShowStatusInnodb_row_lock_time_maxDescr = __('The maximum time to acquire a row lock, in milliseconds.');
$strShowStatusInnodb_row_lock_waitsDescr = __('The number of times a row lock had to be waited for.');
$strShowStatusInnodb_rows_deletedDescr = __('The number of rows deleted from InnoDB tables.');
$strShowStatusInnodb_rows_insertedDescr = __('The number of rows inserted in InnoDB tables.');
$strShowStatusInnodb_rows_readDescr = __('The number of rows read from InnoDB tables.');
$strShowStatusInnodb_rows_updatedDescr = __('The number of rows updated in InnoDB tables.');
$strShowStatusKey_blocks_not_flushedDescr = __('The number of key blocks in the key cache that have changed but haven\'t yet been flushed to disk. It used to be known as Not_flushed_key_blocks.');
$strShowStatusKey_blocks_unusedDescr = __('The number of unused blocks in the key cache. You can use this value to determine how much of the key cache is in use.');
$strShowStatusKey_blocks_usedDescr = __('The number of used blocks in the key cache. This value is a high-water mark that indicates the maximum number of blocks that have ever been in use at one time.');
$strShowStatusKey_read_requestsDescr = __('The number of requests to read a key block from the cache.');
$strShowStatusKey_readsDescr = __('The number of physical reads of a key block from disk. If Key_reads is big, then your key_buffer_size value is probably too small. The cache miss rate can be calculated as Key_reads/Key_read_requests.');
$strShowStatusKey_write_requestsDescr = __('The number of requests to write a key block to the cache.');
$strShowStatusKey_writesDescr = __('The number of physical writes of a key block to disk.');
$strShowStatusLast_query_costDescr = __('The total cost of the last compiled query as computed by the query optimizer. Useful for comparing the cost of different query plans for the same query. The default value of 0 means that no query has been compiled yet.');
$strShowStatusNot_flushed_delayed_rowsDescr = __('The number of rows waiting to be written in INSERT DELAYED queues.');
$strShowStatusOpened_tablesDescr = __('The number of tables that have been opened. If opened tables is big, your table cache value is probably too small.');
$strShowStatusOpen_filesDescr = __('The number of files that are open.');
$strShowStatusOpen_streamsDescr = __('The number of streams that are open (used mainly for logging).');
$strShowStatusOpen_tablesDescr = __('The number of tables that are open.');
$strShowStatusQcache_free_blocksDescr = __('The number of free memory blocks in query cache.');
$strShowStatusQcache_free_memoryDescr = __('The amount of free memory for query cache.');
$strShowStatusQcache_hitsDescr = __('The number of cache hits.');
$strShowStatusQcache_insertsDescr = __('The number of queries added to the cache.');
$strShowStatusQcache_lowmem_prunesDescr = __('The number of queries that have been removed from the cache to free up memory for caching new queries. This information can help you tune the query cache size. The query cache uses a least recently used (LRU) strategy to decide which queries to remove from the cache.');
$strShowStatusQcache_not_cachedDescr = __('The number of non-cached queries (not cachable, or not cached due to the query_cache_type setting).');
$strShowStatusQcache_queries_in_cacheDescr = __('The number of queries registered in the cache.');
$strShowStatusQcache_total_blocksDescr = __('The total number of blocks in the query cache.');
$strShowStatusReset = _pgettext('$strShowStatusReset', 'Reset');
$strShowStatusRpl_statusDescr = __('The status of failsafe replication (not yet implemented).');
$strShowStatusSelect_full_joinDescr = __('The number of joins that do not use indexes. If this value is not 0, you should carefully check the indexes of your tables.');
$strShowStatusSelect_full_range_joinDescr = __('The number of joins that used a range search on a reference table.');
$strShowStatusSelect_range_checkDescr = __('The number of joins without keys that check for key usage after each row. (If this is not 0, you should carefully check the indexes of your tables.)');
$strShowStatusSelect_rangeDescr = __('The number of joins that used ranges on the first table. (It\'s normally not critical even if this is big.)');
$strShowStatusSelect_scanDescr = __('The number of joins that did a full scan of the first table.');
$strShowStatusSlave_open_temp_tablesDescr = __('The number of temporary tables currently open by the slave SQL thread.');
$strShowStatusSlave_retried_transactionsDescr = __('Total (since startup) number of times the replication slave SQL thread has retried transactions.');
$strShowStatusSlave_runningDescr = __('This is ON if this server is a slave that is connected to a master.');
$strShowStatusSlow_launch_threadsDescr = __('The number of threads that have taken more than slow_launch_time seconds to create.');
$strShowStatusSlow_queriesDescr = __('The number of queries that have taken more than long_query_time seconds.');
$strShowStatusSort_merge_passesDescr = __('The number of merge passes the sort algorithm has had to do. If this value is large, you should consider increasing the value of the sort_buffer_size system variable.');
$strShowStatusSort_rangeDescr = __('The number of sorts that were done with ranges.');
$strShowStatusSort_rowsDescr = __('The number of sorted rows.');
$strShowStatusSort_scanDescr = __('The number of sorts that were done by scanning the table.');
$strShowStatusTable_locks_immediateDescr = __('The number of times that a table lock was acquired immediately.');
$strShowStatusTable_locks_waitedDescr = __('The number of times that a table lock could not be acquired immediately and a wait was needed. If this is high, and you have performance problems, you should first optimize your queries, and then either split your table or tables or use replication.');
$strShowStatusThreads_cachedDescr = __('The number of threads in the thread cache. The cache hit rate can be calculated as Threads_created/Connections. If this value is red you should raise your thread_cache_size.');
$strShowStatusThreads_connectedDescr = __('The number of currently open connections.');
$strShowStatusThreads_createdDescr = __('The number of threads created to handle connections. If Threads_created is big, you may want to increase the thread_cache_size value. (Normally this doesn\'t give a notable performance improvement if you have a good thread implementation.)');
$strShowStatusThreads_runningDescr = __('The number of threads that are not sleeping.');
?>

View File

@@ -3,7 +3,6 @@
/**
* MIME detection code.
*
* @version $Id$
* @package phpMyAdmin
* @todo Maybe we could try to use fileinfo module if loaded
*/

Some files were not shown because too many files have changed in this diff Show More