Improve multibytes string manipulation performances.

Review SQL import process.

Signed-off-by: Hugues Peccatte <hugues.peccatte@gmail.com>
This commit is contained in:
Hugues Peccatte 2014-10-30 17:40:09 +01:00
commit e17de11c74
161 changed files with 2443 additions and 2250 deletions

View File

@ -23,7 +23,7 @@ $filename = CHANGELOG_FILE;
if (is_readable($filename)) {
// Test if the if is in a compressed format
if ($GLOBALS['PMA_String']->substr($filename, -3) == '.gz') {
if (substr($filename, -3) == '.gz') {
ob_start();
readgzfile($filename);
$changelog = ob_get_contents();

View File

@ -36,7 +36,7 @@ $sql_query = '';
*/
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strlen($GLOBALS['db'])
if (/*overload*/mb_strlen($GLOBALS['db'])
&& (! empty($_REQUEST['db_rename']) || ! empty($_REQUEST['db_copy']))
) {
if (! empty($_REQUEST['db_rename'])) {
@ -46,7 +46,7 @@ if ($pmaString->strlen($GLOBALS['db'])
}
if (! isset($_REQUEST['newname'])
|| ! $pmaString->strlen($_REQUEST['newname'])
|| ! /*overload*/mb_strlen($_REQUEST['newname'])
) {
$message = PMA_Message::error(__('The database name is empty!'));
} else {

View File

@ -59,7 +59,7 @@ if ($num_tables == 0) {
$odd_row = true;
foreach ($tables as $sts_data) {
if (PMA_Table::isMerge($db, $sts_data['TABLE_NAME'])
|| $GLOBALS['PMA_String']->strtoupper($sts_data['ENGINE']) == 'FEDERATED'
|| /*overload*/mb_strtoupper($sts_data['ENGINE']) == 'FEDERATED'
) {
$merged_size = true;
} else {

View File

@ -79,7 +79,7 @@ $base .= '://' . $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'];
$realm = $base . '/';
$returnTo = $base . dirname($_SERVER['PHP_SELF']);
if ($returnTo[$GLOBALS['PMA_String']->strlen($returnTo) - 1] != '/') {
if ($returnTo[/*overload*/mb_strlen($returnTo) - 1] != '/') {
$returnTo .= '/';
}
$returnTo .= 'openid.php';

View File

@ -243,7 +243,7 @@ if (!defined('TESTSUITE')) {
if ($export_type == 'server') {
$err_url = 'server_export.php' . PMA_URL_getCommon();
} elseif ($export_type == 'database'
&& $pmaString->strlen($db)
&& /*overload*/mb_strlen($db)
) {
$err_url = 'db_export.php' . PMA_URL_getCommon(array('db' => $db));
// Check if we have something to export
@ -252,8 +252,8 @@ if (!defined('TESTSUITE')) {
} else {
$tables = array();
}
} elseif ($export_type == 'table' && $pmaString->strlen($db)
&& $pmaString->strlen($table)
} elseif ($export_type == 'table' && /*overload*/mb_strlen($db)
&& /*overload*/mb_strlen($table)
) {
$err_url = 'tbl_export.php' . PMA_URL_getCommon(array(
'db' => $db, 'table' => $table

View File

@ -46,9 +46,9 @@ if (isset($_REQUEST['filename']) && isset($_REQUEST['image'])) {
/* Decode data */
if ($extension != 'svg') {
$data = $pmaString->substr(
$data = /*overload*/mb_substr(
$_REQUEST['image'],
$pmaString->strpos($_REQUEST['image'], ',') + 1
/*overload*/mb_strpos($_REQUEST['image'], ',') + 1
);
$data = base64_decode($data);
} else {
@ -59,7 +59,7 @@ if (isset($_REQUEST['filename']) && isset($_REQUEST['image'])) {
PMA_downloadHeader(
$filename,
$_REQUEST['type'],
$pmaString->strlen($data)
/*overload*/mb_strlen($data)
);
/* Send data */

View File

@ -47,14 +47,14 @@ $pmaString = $GLOBALS['PMA_String'];
// Extract from field's values if available, if not use the column type passed.
if (! isset($gis_data['gis_type'])) {
if (isset($_REQUEST['type']) && $_REQUEST['type'] != '') {
$gis_data['gis_type'] = $pmaString->strtoupper($_REQUEST['type']);
$gis_data['gis_type'] = /*overload*/mb_strtoupper($_REQUEST['type']);
}
if (isset($_REQUEST['value']) && trim($_REQUEST['value']) != '') {
$start = ($pmaString->substr($_REQUEST['value'], 0, 1) == "'") ? 1 : 0;
$gis_data['gis_type'] = $pmaString->substr(
$start = (substr($_REQUEST['value'], 0, 1) == "'") ? 1 : 0;
$gis_data['gis_type'] = /*overload*/mb_substr(
$_REQUEST['value'],
$start,
$pmaString->strpos($_REQUEST['value'], "(") - $start
/*overload*/mb_strpos($_REQUEST['value'], "(") - $start
);
}
if ((! isset($gis_data['gis_type']))

View File

@ -237,17 +237,17 @@ if ($import_type == 'table') {
$goto = 'server_import.php';
} else {
if (empty($goto) || !preg_match('@^(server|db|tbl)(_[a-z]*)*\.php$@i', $goto)) {
if ($pmaString->strlen($table) && $pmaString->strlen($db)) {
if (/*overload*/mb_strlen($table) && /*overload*/mb_strlen($db)) {
$goto = 'tbl_structure.php';
} elseif ($pmaString->strlen($db)) {
} elseif (/*overload*/mb_strlen($db)) {
$goto = 'db_structure.php';
} else {
$goto = 'server_sql.php';
}
}
if ($pmaString->strlen($table) && $pmaString->strlen($db)) {
if (/*overload*/mb_strlen($table) && /*overload*/mb_strlen($db)) {
$common = PMA_URL_getCommon(array('db' => $db, 'table' => $table));
} elseif ($pmaString->strlen($db)) {
} elseif (/*overload*/mb_strlen($db)) {
$common = PMA_URL_getCommon(array('db' => $db));
} else {
$common = PMA_URL_getCommon();
@ -265,7 +265,7 @@ if (basename($_SERVER['SCRIPT_NAME']) === 'import.php') {
}
if ($pmaString->strlen($db)) {
if (/*overload*/mb_strlen($db)) {
$GLOBALS['dbi']->selectDb($db);
}
@ -389,13 +389,13 @@ if ($memory_limit == -1) {
}
// Calculate value of the limit
if ($pmaString->strtolower($pmaString->substr($memory_limit, -1)) == 'm') {
$memory_limit = (int)$pmaString->substr($memory_limit, 0, -1) * 1024 * 1024;
} elseif ($pmaString->strtolower($pmaString->substr($memory_limit, -1)) == 'k') {
$memory_limit = (int)$pmaString->substr($memory_limit, 0, -1) * 1024;
} elseif ($pmaString->strtolower($pmaString->substr($memory_limit, -1)) == 'g') {
$memory_limit
= (int)$pmaString->substr($memory_limit, 0, -1) * 1024 * 1024 * 1024;
$memoryUnit = /*overload*/mb_strtolower(substr($memory_limit, -1));
if ('m' == $memoryUnit) {
$memory_limit = (int)substr($memory_limit, 0, -1) * 1024 * 1024;
} elseif ('k' == $memoryUnit) {
$memory_limit = (int)substr($memory_limit, 0, -1) * 1024;
} elseif ('g' == $memoryUnit) {
$memory_limit = (int)substr($memory_limit, 0, -1) * 1024 * 1024 * 1024;
} else {
$memory_limit = (int)$memory_limit;
}
@ -672,7 +672,7 @@ if (isset($message)) {
// in case of a query typed in the query window
// (but if the query is too large, in case of an imported file, the parser
// can choke on it so avoid parsing)
if ($pmaString->strlen($sql_query) <= $GLOBALS['cfg']['MaxCharactersInDisplayedSQL']
if (/*overload*/mb_strlen($sql_query) <= $GLOBALS['cfg']['MaxCharactersInDisplayedSQL']
) {
include_once 'libraries/parse_analyze.inc.php';
}

View File

@ -32,11 +32,9 @@ if (version_compare(PHP_VERSION, '5.4.0', '>=')
define('UPLOAD_PREFIX', ini_get('session.upload_progress.prefix'));
session_start();
/** @var PMA_String $pmaString /
$pmaString = $GLOBALS['PMA_String'];
foreach ($_SESSION as $key => $value) {
// only copy session-prefixed data
if ($pmaString->substr($key, 0, $pmaString->strlen(UPLOAD_PREFIX))
if (mb_substr($key, 0, mb_strlen(UPLOAD_PREFIX))
== UPLOAD_PREFIX) {
$sessionupload[$key] = $value;
}
@ -64,11 +62,9 @@ if (defined('SESSIONUPLOAD')) {
$_SESSION[$key] = $value;
}
/** @var PMA_String $pmaString /
$pmaString = $GLOBALS['PMA_String'];
// remove session upload data that are not set anymore
foreach ($_SESSION as $key => $value) {
if ($pmaString->substr($key, 0, $pmaString->strlen(UPLOAD_PREFIX))
if (mb_substr($key, 0, mb_strlen(UPLOAD_PREFIX))
== UPLOAD_PREFIX
&& ! isset($sessionupload[$key])
) {

View File

@ -561,8 +561,8 @@ if (isset($GLOBALS['dbi'])
$_client_info = $GLOBALS['dbi']->getClientInfo();
if ($server > 0
&& $pmaString->strpos($_client_info, 'mysqlnd') === false
&& $pmaString->substr(PMA_MYSQL_CLIENT_API, 0, 3) != $pmaString->substr(
&& /*overload*/mb_strpos($_client_info, 'mysqlnd') === false
&& substr(PMA_MYSQL_CLIENT_API, 0, 3) != substr(
PMA_MYSQL_INT_VERSION, 0, 3
)
) {
@ -571,10 +571,10 @@ if (isset($GLOBALS['dbi'])
sprintf(
__('Your PHP MySQL library version %s differs from your MySQL server version %s. This may cause unpredictable behavior.'),
$_client_info,
$pmaString->substr(
substr(
PMA_MYSQL_STR_VERSION,
0,
$pmaString->strpos(PMA_MYSQL_STR_VERSION . '-', '-')
strpos(PMA_MYSQL_STR_VERSION . '-', '-')
)
)
),

View File

@ -382,9 +382,6 @@ class Advisor
$ruleNo = -1;
$ruleLine = -1;
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
for ($i = 0; $i < $numLines; $i++) {
$line = $file[$i];
if ($line == "" || $line[0] == '#') {
@ -392,7 +389,7 @@ class Advisor
}
// Reading new rule
if ($pmaString->substr($line, 0, 4) == 'rule') {
if (substr($line, 0, 4) == 'rule') {
if ($ruleLine > 0) {
$errors[] = sprintf(
__(
@ -447,7 +444,7 @@ class Advisor
continue;
}
$rules[$ruleNo][$ruleSyntax[$ruleLine]] = chop(
$pmaString->substr($line, 1)
/*overload*/mb_substr($line, 1)
);
$lines[$ruleNo][$ruleSyntax[$ruleLine]] = $i + 1;
$ruleLine += 1;

View File

@ -148,7 +148,7 @@ class PMA_Config
}
// disable output-buffering (if set to 'auto') for IE6, else enable it.
if ($GLOBALS['PMA_String']->strtolower($this->get('OBGzip')) == 'auto') {
if (strtolower($this->get('OBGzip')) == 'auto') {
if ($this->get('PMA_USR_BROWSER_AGENT') == 'IE'
&& $this->get('PMA_USR_BROWSER_VER') >= 6
&& $this->get('PMA_USR_BROWSER_VER') < 7
@ -176,19 +176,16 @@ class PMA_Config
$HTTP_USER_AGENT = '';
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// 1. Platform
if ($pmaString->strstr($HTTP_USER_AGENT, 'Win')) {
if (/*overload*/mb_strstr($HTTP_USER_AGENT, 'Win')) {
$this->set('PMA_USR_OS', 'Win');
} elseif ($pmaString->strstr($HTTP_USER_AGENT, 'Mac')) {
} elseif (/*overload*/mb_strstr($HTTP_USER_AGENT, 'Mac')) {
$this->set('PMA_USR_OS', 'Mac');
} elseif ($pmaString->strstr($HTTP_USER_AGENT, 'Linux')) {
} elseif (/*overload*/mb_strstr($HTTP_USER_AGENT, 'Linux')) {
$this->set('PMA_USR_OS', 'Linux');
} elseif ($pmaString->strstr($HTTP_USER_AGENT, 'Unix')) {
} elseif (/*overload*/mb_strstr($HTTP_USER_AGENT, 'Unix')) {
$this->set('PMA_USR_OS', 'Unix');
} elseif ($pmaString->strstr($HTTP_USER_AGENT, 'OS/2')) {
} elseif (/*overload*/mb_strstr($HTTP_USER_AGENT, 'OS/2')) {
$this->set('PMA_USR_OS', 'OS/2');
} else {
$this->set('PMA_USR_OS', 'Other');
@ -263,7 +260,7 @@ class PMA_Config
);
$this->set('PMA_USR_BROWSER_AGENT', 'SAFARI');
// Firefox
} elseif (! $pmaString->strstr($HTTP_USER_AGENT, 'compatible')
} elseif (! /*overload*/mb_strstr($HTTP_USER_AGENT, 'compatible')
&& preg_match('@Firefox/([\w.]+)@', $HTTP_USER_AGENT, $log_version)
) {
$this->set(
@ -306,7 +303,7 @@ class PMA_Config
if (@function_exists('gd_info')) {
$gd_nfo = gd_info();
if ($GLOBALS['PMA_String']->strstr($gd_nfo["GD Version"], '2.')) {
if (/*overload*/mb_strstr($gd_nfo["GD Version"], '2.')) {
$this->set('PMA_IS_GD2', 1);
} else {
$this->set('PMA_IS_GD2', 0);
@ -435,14 +432,12 @@ class PMA_Config
return;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$branch = false;
// are we on any branch?
if ($pmaString->strstr($ref_head, '/')) {
$ref_head = $pmaString->substr(trim($ref_head), 5);
if ($pmaString->substr($ref_head, 0, 11) === 'refs/heads/') {
$branch = $pmaString->substr($ref_head, 11);
if (/*overload*/mb_strstr($ref_head, '/')) {
$ref_head = /*overload*/mb_substr(trim($ref_head), 5);
if (substr($ref_head, 0, 11) === 'refs/heads/') {
$branch = /*overload*/mb_substr($ref_head, 11);
} else {
$branch = basename($ref_head);
}
@ -782,21 +777,19 @@ class PMA_Config
$httpOk = 'HTTP/1.1 200 OK';
$httpNotFound = 'HTTP/1.1 404 Not Found';
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->substr($data, 0, $pmaString->strlen($httpOk)) === $httpOk) {
if (substr($data, 0, strlen($httpOk)) === $httpOk) {
return $get_body
? $pmaString->substr(
? /*overload*/mb_substr(
$data,
$pmaString->strpos($data, "\r\n\r\n") + 4
/*overload*/mb_strpos($data, "\r\n\r\n") + 4
)
: true;
}
$httpNOK = $pmaString->substr(
$httpNOK = substr(
$data,
0,
$pmaString->strlen($httpNotFound)
strlen($httpNotFound)
);
if ($httpNOK === $httpNotFound) {
return false;
@ -1292,9 +1285,7 @@ class PMA_Config
$pma_absolute_uri = $this->get('PmaAbsoluteUri');
$is_https = $this->detectHttps();
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strlen($pma_absolute_uri) < 5) {
if (/*overload*/mb_strlen($pma_absolute_uri) < 5) {
$url = array();
// If we don't have scheme, we didn't have full URL so we need to
@ -1390,7 +1381,7 @@ class PMA_Config
$path = '';
}
// in vhost situations, there could be already an ending slash
if ($pmaString->substr($path, -1) != '/') {
if (/*overload*/mb_substr($path, -1) != '/') {
$path .= '/';
}
$pma_absolute_uri .= $path;
@ -1412,20 +1403,20 @@ class PMA_Config
// Adds a trailing slash et the end of the phpMyAdmin uri if it
// does not exist.
if ($pmaString->substr($pma_absolute_uri, -1) != '/') {
if (/*overload*/mb_substr($pma_absolute_uri, -1) != '/') {
$pma_absolute_uri .= '/';
}
// If URI doesn't start with http:// or https://, we will add
// this.
if ($pmaString->substr($pma_absolute_uri, 0, 7) != 'http://'
&& $pmaString->substr($pma_absolute_uri, 0, 8) != 'https://'
if (/*overload*/mb_substr($pma_absolute_uri, 0, 7) != 'http://'
&& /*overload*/mb_substr($pma_absolute_uri, 0, 8) != 'https://'
) {
$pma_absolute_uri
= ($is_https ? 'https' : 'http')
. ':'
. (
$pmaString->substr($pma_absolute_uri, 0, 2) == '//' ? '' : '//'
/*overload*/mb_substr($pma_absolute_uri, 0, 2) == '//' ? '' : '//'
)
. $pma_absolute_uri;
}
@ -1520,7 +1511,7 @@ class PMA_Config
$this->set('enable_upload', true);
// if set "php_admin_value file_uploads Off" in httpd.conf
// ini_get() also returns the string "Off" in this case:
if ('off' == $GLOBALS['PMA_String']->strtolower(ini_get('file_uploads'))) {
if ('off' == strtolower(ini_get('file_uploads'))) {
$this->set('enable_upload', false);
}
}
@ -1597,9 +1588,6 @@ class PMA_Config
}
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// If we don't have scheme, we didn't have full URL so we need to
// dig deeper
if (empty($url['scheme'])) {
@ -1607,19 +1595,19 @@ class PMA_Config
if (PMA_getenv('HTTP_SCHEME')) {
$url['scheme'] = PMA_getenv('HTTP_SCHEME');
} elseif (PMA_getenv('HTTPS')
&& $pmaString->strtolower(PMA_getenv('HTTPS')) == 'on'
&& strtolower(PMA_getenv('HTTPS')) == 'on'
) {
$url['scheme'] = 'https';
// A10 Networks load balancer:
} elseif (PMA_getenv('HTTP_HTTPS_FROM_LB')
&& $pmaString->strtolower(PMA_getenv('HTTP_HTTPS_FROM_LB')) == 'on'
&& strtolower(PMA_getenv('HTTP_HTTPS_FROM_LB')) == 'on'
) {
$url['scheme'] = 'https';
} elseif (PMA_getenv('HTTP_X_FORWARDED_PROTO')) {
$url['scheme']
= $pmaString->strtolower(PMA_getenv('HTTP_X_FORWARDED_PROTO'));
= /*overload*/mb_strtolower(PMA_getenv('HTTP_X_FORWARDED_PROTO'));
} elseif (PMA_getenv('HTTP_FRONT_END_HTTPS')
&& $pmaString->strtolower(PMA_getenv('HTTP_FRONT_END_HTTPS')) == 'on'
&& strtolower(PMA_getenv('HTTP_FRONT_END_HTTPS')) == 'on'
) {
$url['scheme'] = 'https';
} else {
@ -1858,9 +1846,7 @@ class PMA_Config
function setCookie($cookie, $value, $default = null, $validity = null,
$httponly = true
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strlen($value) && null !== $default && $value === $default) {
if (/*overload*/mb_strlen($value) && null !== $default && $value === $default) {
// default value is used
if (isset($_COOKIE[$cookie])) {
// remove cookie
@ -1869,7 +1855,7 @@ class PMA_Config
return false;
}
if (!$pmaString->strlen($value) && isset($_COOKIE[$cookie])) {
if (!/*overload*/mb_strlen($value) && isset($_COOKIE[$cookie])) {
// remove cookie, value is empty
return $this->removeCookie($cookie);
}

View File

@ -334,7 +334,7 @@ class PMA_DbQbe
$this->_columnNames[] = $each_column;
// increase the width if necessary
$this->_form_column_width = max(
$GLOBALS['PMA_String']->strlen($each_column),
/*overload*/mb_strlen($each_column),
$this->_form_column_width
);
} // end foreach
@ -455,9 +455,6 @@ class PMA_DbQbe
$html_output .= '<th>' . __('Sort:') . '</th>';
$new_column_count = 0;
/** @var PMA_String $pmaStr */
$pmaStr = $GLOBALS['PMA_String'];
for (
$colInd = 0;
$colInd < $this->_criteria_column_count;
@ -481,7 +478,7 @@ class PMA_DbQbe
// then sorting is not available, Fix for Bug #570698
if (isset($_REQUEST['criteriaSort'][$colInd])
&& isset($_REQUEST['criteriaColumn'][$colInd])
&& $pmaStr->substr($_REQUEST['criteriaColumn'][$colInd], -2) == '.*'
&& /*overload*/mb_substr($_REQUEST['criteriaColumn'][$colInd], -2) == '.*'
) {
$_REQUEST['criteriaSort'][$colInd] = '';
} //end if
@ -999,9 +996,6 @@ class PMA_DbQbe
*/
private function _getWhereClause()
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$where_clause = '';
$criteria_cnt = 0;
for (
@ -1016,7 +1010,7 @@ class PMA_DbQbe
&& isset($this->_curAndOrCol)
) {
$where_clause .= ' '
. $pmaString->strtoupper($this->_curAndOrCol[$last_where]) . ' ';
. /*overload*/mb_strtoupper($this->_curAndOrCol[$last_where]) . ' ';
}
if (! empty($this->_curField[$column_index])
&& ! empty($this->_curCriteria[$column_index])
@ -1052,7 +1046,7 @@ class PMA_DbQbe
&& $column_index
) {
$qry_orwhere .= ' '
. $pmaString->strtoupper($this->_curAndOrCol[$last_orwhere])
. /*overload*/mb_strtoupper($this->_curAndOrCol[$last_orwhere])
. ' ';
}
if (! empty($this->_curField[$column_index])
@ -1071,7 +1065,7 @@ class PMA_DbQbe
}
if (! empty($qry_orwhere)) {
$where_clause .= "\n"
. $pmaString->strtoupper(
. /*overload*/mb_strtoupper(
isset($this->_curAndOrRow[$row_index])
? $this->_curAndOrRow[$row_index] . ' '
: ''
@ -1096,9 +1090,6 @@ class PMA_DbQbe
$orderby_clause = '';
$orderby_clauses = array();
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
for (
$column_index = 0;
$column_index < $this->_criteria_column_count;
@ -1113,7 +1104,7 @@ class PMA_DbQbe
continue;
}
if ($pmaString->substr($this->_curField[$column_index], -2) == '.*') {
if (/*overload*/mb_substr($this->_curField[$column_index], -2) == '.*') {
continue;
}
@ -1325,9 +1316,6 @@ class PMA_DbQbe
$where_clause_columns = array();
$where_clause_tables = array();
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Now we need all tables that we have in the where clause
for (
$column_index = 0, $nb = count($this->_criteria);
@ -1344,7 +1332,7 @@ class PMA_DbQbe
// Now we know that our array has the same numbers as $criteria
// we can check which of our columns has a where clause
if (! empty($this->_criteria[$column_index])) {
if ($pmaString->substr($this->_criteria[$column_index], 0, 1) == '='
if (/*overload*/mb_substr($this->_criteria[$column_index], 0, 1) == '='
|| /*$pmaString->*/stristr($this->_criteria[$column_index], 'is')
) {
$where_clause_columns[$column] = $column;

View File

@ -502,15 +502,12 @@ class PMA_DatabaseInterface
$sql, array('TABLE_SCHEMA', 'TABLE_NAME'), null, $link
);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if (PMA_DRIZZLE) {
// correct I_S and D_D names returned by D_D.TABLES -
// Drizzle generally uses lower case for them,
// but TABLES returns uppercase
foreach ((array)$database as $db) {
$db_upper = $pmaString->strtoupper($db);
$db_upper = /*overload*/mb_strtoupper($db);
if (!isset($tables[$db]) && isset($tables[$db_upper])) {
$tables[$db] = $tables[$db_upper];
unset($tables[$db_upper]);
@ -747,14 +744,14 @@ class PMA_DatabaseInterface
return $tables[$database];
}
if (isset($tables[$pmaString->strtolower($database)])) {
if (isset($tables[/*overload*/mb_strtolower($database)])) {
// on windows with lower_case_table_names = 1
// MySQL returns
// with SHOW DATABASES or information_schema.SCHEMATA: `Test`
// but information_schema.TABLES gives `test`
// bug #2036
// https://sourceforge.net/p/phpmyadmin/bugs/2036/
return $tables[$pmaString->strtolower($database)];
return $tables[/*overload*/mb_strtolower($database)];
}
// one database but inexact letter case match
@ -765,7 +762,7 @@ class PMA_DatabaseInterface
}
$keys = array_keys($tables);
if ($pmaString->strlen(array_pop($keys)) == $pmaString->strlen($database)) {
if (/*overload*/mb_strlen(array_pop($keys)) == /*overload*/mb_strlen($database)) {
return array_pop($tables);
}
return $tables;
@ -840,8 +837,7 @@ class PMA_DatabaseInterface
$tables[$table_name]['TABLE_COMMENT']
=& $tables[$table_name]['Comment'];
$commentUpper = $GLOBALS['PMA_String']
->strtoupper($tables[$table_name]['Comment']);
$commentUpper = /*overload*/mb_strtoupper($tables[$table_name]['Comment']);
if ($commentUpper === 'VIEW'
&& $tables[$table_name]['Engine'] == null
) {
@ -903,7 +899,7 @@ class PMA_DatabaseInterface
$link = null, $sort_by = 'SCHEMA_NAME', $sort_order = 'ASC',
$limit_offset = 0, $limit_count = false
) {
$sort_order = $GLOBALS['PMA_String']->strtoupper($sort_order);
$sort_order = strtoupper($sort_order);
if (true === $limit_count) {
$limit_count = $GLOBALS['cfg']['MaxDbList'];
@ -2197,8 +2193,7 @@ class PMA_DatabaseInterface
$error .= ' - ' . $error_message;
$error .= '<br />' . __('The server is not responding.');
} elseif ($error_number == 1005) {
if ($GLOBALS['PMA_String']->strpos($error_message, 'errno: 13') !== false
) {
if (strpos($error_message, 'errno: 13') !== false) {
$error .= ' - ' . $error_message;
$error .= '<br />'
. __('Please check privileges of directory containing database.');
@ -2375,11 +2370,11 @@ class PMA_DatabaseInterface
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
return $pmaString->strtolower($schema_name) == 'information_schema'
return strtolower($schema_name) == 'information_schema'
|| (!PMA_DRIZZLE
&& $pmaString->strtolower($schema_name) == 'performance_schema')
&& strtolower($schema_name) == 'performance_schema')
|| (PMA_DRIZZLE
&& $pmaString->strtolower($schema_name) == 'data_dictionary')
&& strtolower($schema_name) == 'data_dictionary')
|| ($testForMysqlSchema && !PMA_DRIZZLE && $schema_name == 'mysql');
}

View File

@ -214,18 +214,16 @@ class PMA_DbSearch
? array($this->_criteriaSearchString)
: explode(' ', $this->_criteriaSearchString));
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
foreach ($search_words as $search_word) {
// Eliminates empty values
if ($pmaString->strlen($search_word) === 0) {
if (/*overload*/mb_strlen($search_word) === 0) {
continue;
}
$likeClausesPerColumn = array();
// for each column in the table
foreach ($allColumns as $column) {
if (! isset($this->_criteriaColumnName)
|| $pmaString->strlen($this->_criteriaColumnName) == 0
|| /*overload*/mb_strlen($this->_criteriaColumnName) == 0
|| $column['Field'] == $this->_criteriaColumnName
) {
// Drizzle has no CONVERT and all text columns are UTF-8

View File

@ -389,8 +389,6 @@ class PMA_DisplayResults
// 2. Display mode is not "false for all elements" -> updates the
// display mode
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($the_disp_mode != 'nnnn000000') {
if (isset($printview) && ($printview == '1')) {
@ -439,9 +437,9 @@ class PMA_DisplayResults
$bIsProcessList = isset($which[1]);
if ($bIsProcessList) {
$str = ' ' . $pmaString->strtoupper($which[1]);
$str = ' ' . strtoupper($which[1]);
$bIsProcessList = $bIsProcessList
&& $pmaString->strpos($str, 'PROCESSLIST') > 0;
&& strpos($str, 'PROCESSLIST') > 0;
}
if ($bIsProcessList) {
@ -511,7 +509,7 @@ class PMA_DisplayResults
$the_total = $unlim_num_rows;
} elseif ((($do_display['nav_bar'] == '1')
|| ($do_display['sort_lnk'] == '1'))
&& ($pmaString->strlen($db) && !empty($table))
&& (/*overload*/mb_strlen($db) && !empty($table))
) {
$the_total = PMA_Table::countRecords($db, $table);
}
@ -1852,7 +1850,7 @@ class PMA_DisplayResults
// FROM `PMA_relation` AS `1` , `PMA_relation` AS `2`
$sort_tbl = (isset($fields_meta->table)
&& $GLOBALS['PMA_String']->strlen($fields_meta->table))
&& /*overload*/mb_strlen($fields_meta->table))
? PMA_Util::backquote(
$fields_meta->table
) . '.'
@ -1957,8 +1955,6 @@ class PMA_DisplayResults
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$sort_expression_nodirection = array_filter($sort_expression_nodirection);
foreach ($sort_expression_nodirection as $index=>$expression) {
// check if this is the first clause,
@ -1968,7 +1964,7 @@ class PMA_DisplayResults
$sort_tbl_new = $sort_tbl;
// Test to detect if the column name is a standard name
// Standard name has the table name prefixed to the column name
if ($pmaString->strpos($name_to_use_in_sort, '.') !== false) {
if (/*overload*/mb_strpos($name_to_use_in_sort, '.') !== false) {
$matches = explode('.', $name_to_use_in_sort);
// Matches[0] has the table name
// Matches[1] has the column name
@ -1986,7 +1982,7 @@ class PMA_DisplayResults
// order by clause to the column name
$query_head = $is_first_clause ? "\nORDER BY " : "";
// Again a check to see if the given column is a aggregate column
if ($pmaString->strpos($name_to_use_in_sort, '(') !== false) {
if (/*overload*/mb_strpos($name_to_use_in_sort, '(') !== false) {
$sort_order .= $query_head . $name_to_use_in_sort . ' ' ;
} else {
$sort_order .= $query_head . $sort_tbl_new . "."
@ -2000,7 +1996,7 @@ class PMA_DisplayResults
$sort_order = preg_replace("/\.\./", ".", $sort_order);
// Incase this is the current column save $single_sort_order
if ($current_name == $name_to_use_in_sort) {
if ($pmaString->strpos($current_name, '(') !== false) {
if (/*overload*/mb_strpos($current_name, '(') !== false) {
$single_sort_order = "\n" . 'ORDER BY ' . $current_name . ' ';
} else {
$single_sort_order = "\n" . 'ORDER BY ' . $sort_tbl
@ -2015,8 +2011,7 @@ class PMA_DisplayResults
$column_index, $index
);
} else {
$single_sort_order .= $pmaString
->strtoupper($sort_direction[$index]);
$single_sort_order .= strtoupper($sort_direction[$index]);
}
}
if ($current_name == $name_to_use_in_sort && $is_in_sort) {
@ -2026,7 +2021,7 @@ class PMA_DisplayResults
);
$order_img .= " <small>" . ($index + 1) . "</small>";
} else {
$sort_order .= $pmaString->strtoupper($sort_direction[$index]);
$sort_order .= strtoupper($sort_direction[$index]);
}
// Separate columns by a comma
$sort_order .= ", ";
@ -2035,10 +2030,10 @@ class PMA_DisplayResults
}
// remove the comma from the last column name in the newly
// constructed clause
$sort_order = $pmaString->substr(
$sort_order = /*overload*/mb_substr(
$sort_order,
0,
$pmaString->strlen($sort_order)-2
/*overload*/mb_strlen($sort_order)-2
);
if (empty($order_img)) {
$order_img = '';
@ -2067,10 +2062,8 @@ class PMA_DisplayResults
$index_in_expression = 0;
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
foreach ($sort_expression_nodirection as $index => $clause) {
if ($pmaString->strpos($clause, '.') !== false) {
if (/*overload*/mb_strpos($clause, '.') !== false) {
$fragments = explode('.', $clause);
$clause2 = $fragments[0] . "." . str_replace('`', '', $fragments[1]);
} else {
@ -2094,8 +2087,8 @@ class PMA_DisplayResults
// SELECT p.*, FROM_UNIXTIME(p.temps) FROM mytable AS p
// (and try clicking on each column's header twice)
if (! empty($sort_tbl)
&& $pmaString->strpos($sort_expression_nodirection[$index_in_expression], $sort_tbl) === false
&& $pmaString->strpos($sort_expression_nodirection[$index_in_expression], '(') === false
&& /*overload*/mb_strpos($sort_expression_nodirection[$index_in_expression], $sort_tbl) === false
&& /*overload*/mb_strpos($sort_expression_nodirection[$index_in_expression], '(') === false
) {
$new_sort_expression_nodirection = $sort_tbl
. $sort_expression_nodirection[$index_in_expression];
@ -2140,10 +2133,7 @@ class PMA_DisplayResults
private function _getSortingUrlParams(
$sort_direction, $sort_order, $column_index, $index
) {
$sort_direction_upper = $GLOBALS['PMA_String']->strtoupper(
trim($sort_direction[$index])
);
if ($sort_direction_upper == self::DESCENDING_SORT_DIR) {
if (strtoupper(trim($sort_direction[$index])) == self::DESCENDING_SORT_DIR) {
$sort_order .= ' ASC';
$order_img = ' ' . PMA_Util::getImage(
's_desc.png', __('Descending'),
@ -2188,15 +2178,12 @@ class PMA_DisplayResults
$order_img, $col_index, $direction,
$fields_meta, $order_url, $multi_order_url
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$order_link_params = array();
if (isset($order_img) && ($order_img != '')) {
if ($pmaString->strstr($order_img, 'asc')) {
if (/*overload*/mb_strstr($order_img, 'asc')) {
$order_link_params['onmouseover'] = "$('.soimg$col_index').toggle()";
$order_link_params['onmouseout'] = "$('.soimg$col_index').toggle()";
} elseif ($pmaString->strstr($order_img, 'desc')) {
} elseif (/*overload*/mb_strstr($order_img, 'desc')) {
$order_link_params['onmouseover'] = "$('.soimg$col_index').toggle()";
$order_link_params['onmouseout'] = "$('.soimg$col_index').toggle()";
}
@ -2566,15 +2553,13 @@ class PMA_DisplayResults
'binary' => 'hex',
);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
foreach ($matches as $key => $value) {
if ($pmaString->strpos($meta->flags, $key) !== false) {
if (/*overload*/mb_strpos($meta->flags, $key) !== false) {
$classes[] = $value;
}
}
if ($pmaString->strpos($meta->type, 'bit') !== false) {
if (/*overload*/mb_strpos($meta->type, 'bit') !== false) {
$classes[] = 'bit';
}
@ -2844,8 +2829,6 @@ class PMA_DisplayResults
$row_info = $this->_getRowInfoForSpecialLinks($row, $col_order);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
for ($currentColumn = 0;
$currentColumn < $this->__get('fields_cnt');
++$currentColumn) {
@ -2962,9 +2945,9 @@ class PMA_DisplayResults
// Check whether the field needs to display with syntax highlighting
$dbLower = $pmaString->strtolower($this->__get('db'));
$tblLower = $pmaString->strtolower($this->__get('table'));
$nameLower = $pmaString->strtolower($meta->name);
$dbLower = /*overload*/mb_strtolower($this->__get('db'));
$tblLower = /*overload*/mb_strtolower($this->__get('table'));
$nameLower = /*overload*/mb_strtolower($meta->name);
if (! empty($this->transformation_info[$dbLower][$tblLower][$nameLower])
&& (trim($row[$i]) != '')
) {
@ -2980,11 +2963,12 @@ class PMA_DisplayResults
: ''
);
$dbLower = /*overload*/mb_strtolower($this->__get('db'));
$meta->mimetype = str_replace(
'_', '/',
$this->transformation_info[$dbLower]
[$pmaString->strtolower($this->__get('table'))]
[$pmaString->strtolower($meta->name)][2]
[/*overload*/mb_strtolower($this->__get('table'))]
[/*overload*/mb_strtolower($meta->name)][2]
);
}
@ -2997,7 +2981,7 @@ class PMA_DisplayResults
) {
$linking_url = $this->_getSpecialLinkUrl(
$row[$i], $row_info, $pmaString->strtolower($meta->name)
$row[$i], $row_info, /*overload*/mb_strtolower($meta->name)
);
include_once
"libraries/plugins/transformations/Text_Plain_Link.class.php";
@ -3198,12 +3182,10 @@ class PMA_DisplayResults
private function _getSpecialLinkUrl($column_value, $row_info, $field_name)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$linking_url_params = array();
$link_relations = $GLOBALS['special_schema_links']
[$pmaString->strtolower($this->__get('db'))]
[$pmaString->strtolower($this->__get('table'))]
[/*overload*/mb_strtolower($this->__get('db'))]
[/*overload*/mb_strtolower($this->__get('table'))]
[$field_name];
if (! is_array($link_relations['link_param'])) {
@ -3233,7 +3215,7 @@ class PMA_DisplayResults
}
$linking_url_params[$new_param['param_info']]
= $row_info[$pmaString->strtolower($new_param['column_name'])];
= $row_info[/*overload*/mb_strtolower($new_param['column_name'])];
// Special case 1 - when executing routines, according
// to the type of the routine, url param changes
@ -3241,7 +3223,7 @@ class PMA_DisplayResults
continue;
}
$lowerRoutineType = $pmaString->strtolower($row_info['routine_type']);
$lowerRoutineType = strtolower($row_info['routine_type']);
if ($lowerRoutineType == self::ROUTINE_PROCEDURE
|| $lowerRoutineType == self::ROUTINE_FUNCTION
) {
@ -3271,7 +3253,7 @@ class PMA_DisplayResults
for ($n = 0; $n < $this->__get('fields_cnt'); ++$n) {
$m = $col_order ? $col_order[$n] : $n;
$row_info[$GLOBALS['PMA_String']->strtolower($fields_meta[$m]->name)]
$row_info[/*overload*/mb_strtolower($fields_meta[$m]->name)]
= $row[$m];
}
@ -3298,7 +3280,7 @@ class PMA_DisplayResults
&& isset($analyzed_sql[0])
&& isset($analyzed_sql[0]['querytype'])
&& ($analyzed_sql[0]['querytype'] == self::QUERY_TYPE_SELECT)
&& ($GLOBALS['PMA_String']->strlen($this->__get('sql_query')) > 200)
&& (/*overload*/mb_strlen($this->__get('sql_query')) > 200)
) {
$url_sql_query = 'SELECT ';
@ -3696,7 +3678,7 @@ class PMA_DisplayResults
*/
private function _getClassForDateTimeRelatedFields($type)
{
if (($GLOBALS['PMA_String']->substr($type, 0, 9) == self::TIMESTAMP_FIELD)
if ((substr($type, 0, 9) == self::TIMESTAMP_FIELD)
|| ($type == self::DATETIME_FIELD)
) {
$field_type_class = 'datetimefield';
@ -3798,9 +3780,6 @@ class PMA_DisplayResults
$transformation_plugin, $default_function, $transform_options,
$analyzed_sql
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if (! isset($column) || is_null($column)) {
$cell = $this->_buildNullDisplay($class, $condition_field, $meta);
return $cell;
@ -3814,7 +3793,7 @@ class PMA_DisplayResults
// Display as [GEOMETRY - (size)]
if ($_SESSION['tmpval']['geoOption'] == self::GEOMETRY_DISP_GEOM) {
$geometry_text = $this->_handleNonPrintableContents(
$pmaString->strtoupper(self::GEOMETRY_FIELD),
strtoupper(self::GEOMETRY_FIELD),
(isset($column) ? $column : ''), $transformation_plugin,
$transform_options, $default_function, $meta
);
@ -3847,7 +3826,7 @@ class PMA_DisplayResults
if ($_SESSION['tmpval']['display_binary']) {
$where_comparison = ' = ' . $column;
$wkbval = $pmaString->substr(bin2hex($column), 8);
$wkbval = substr(bin2hex($column), 8);
$is_field_truncated = $this->_getPartialText($wkbval);
$cell = $this->_getRowData(
@ -3911,14 +3890,11 @@ class PMA_DisplayResults
$transformation_plugin, $default_function, $transform_options,
$is_field_truncated, $analyzed_sql, &$dt_result, $col_index
) {
/** @var PMA_String $pmaStr */
$pmaStr = $GLOBALS['PMA_String'];
$is_analyse = $this->__get('is_analyse');
$field_flags = $GLOBALS['dbi']->fieldFlags($dt_result, $col_index);
$bIsText = gettype($transformation_plugin) === 'object'
&& $pmaStr->strpos($transformation_plugin->getMIMEtype(), 'Text')
&& strpos($transformation_plugin->getMIMEtype(), 'Text')
=== false;
// disable inline grid editing
@ -3949,7 +3925,7 @@ class PMA_DisplayResults
// Cut all fields to $GLOBALS['cfg']['LimitChars']
// (unless it's a link-type transformation or binary)
if (!(gettype($transformation_plugin) === "object"
&& $pmaStr->strpos($transformation_plugin->getName(), 'Link') !== false)
&& strpos($transformation_plugin->getName(), 'Link') !== false)
&& !stristr($field_flags, self::BINARY_FIELD)
) {
$is_field_truncated = $this->_getPartialText($column);
@ -3991,11 +3967,11 @@ class PMA_DisplayResults
}
$formatted = true;
} elseif ((($pmaStr->substr($meta->type, 0, 9) == self::TIMESTAMP_FIELD)
} elseif (((substr($meta->type, 0, 9) == self::TIMESTAMP_FIELD)
|| ($meta->type == self::DATETIME_FIELD)
|| ($meta->type == self::TIME_FIELD)
|| ($meta->type == self::TIME_FIELD))
&& ($pmaStr->strpos($column, ".") !== false) // micro seconds delimeter
&& (/*overload*/mb_strpos($column, ".") !== false) // micro seconds delimeter
) {
$column = PMA_Util::addMicroseconds($column);
}
@ -4563,11 +4539,8 @@ class PMA_DisplayResults
);
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// 2.3 Prepare the navigation bars
if (!$pmaString->strlen($this->__get('table'))) {
if (!/*overload*/mb_strlen($this->__get('table'))) {
if (isset($analyzed_sql[0]['query_type'])
&& ($analyzed_sql[0]['query_type'] == self::QUERY_TYPE_SELECT)
@ -4615,7 +4588,7 @@ class PMA_DisplayResults
}
if ($pmaString->strlen($this->__get('table'))) {
if (/*overload*/mb_strlen($this->__get('table'))) {
// This method set the values for $map array
$this->_setParamForLinkForeignKeyRelatedTables($map);
} // end if
@ -4791,9 +4764,7 @@ class PMA_DisplayResults
return null;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strpos($sort_expression_nodirection, '.') === false) {
if (/*overload*/mb_strpos($sort_expression_nodirection, '.') === false) {
$sort_table = $this->__get('table');
$sort_column = $sort_expression_nodirection;
} else {
@ -4844,8 +4815,8 @@ class PMA_DisplayResults
$column_for_first_row = $row[$sorted_column_index];
}
$column_for_first_row = $pmaString->strtoupper(
$pmaString->substr(
$column_for_first_row = /*overload*/mb_strtoupper(
/*overload*/mb_substr(
$column_for_first_row, 0, $GLOBALS['cfg']['LimitChars']
)
);
@ -4870,8 +4841,8 @@ class PMA_DisplayResults
$column_for_last_row = $row[$sorted_column_index];
}
$column_for_last_row = $pmaString->strtoupper(
$pmaString->substr(
$column_for_last_row = /*overload*/mb_strtoupper(
/*overload*/mb_substr(
$column_for_last_row, 0, $GLOBALS['cfg']['LimitChars']
)
);
@ -5492,11 +5463,9 @@ class PMA_DisplayResults
$is_truncated = false;
$result = '[' . $category;
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if (isset($content)) {
$size = $pmaString->strlen($content);
$size = /*overload*/mb_strlen($content);
$display_size = PMA_Util::formatByteDown($size, 3, 1);
$result .= ' - ' . $display_size[0] . ' ' . $display_size[1];
@ -5511,10 +5480,8 @@ class PMA_DisplayResults
// if we want to use a text transformation on a BLOB column
if (gettype($transformation_plugin) === "object") {
$posMimeOctetstream = $pmaString
->strpos($transformation_plugin->getMIMESubtype(), 'Octetstream');
$posMimeText = $pmaString
->strpos($transformation_plugin->getMIMEtype(), 'Text');
$posMimeOctetstream = strpos($transformation_plugin->getMIMESubtype(), 'Octetstream');
$posMimeText = strpos($transformation_plugin->getMIMEtype(), 'Text');
if ($posMimeOctetstream
|| $posMimeText !== false
) {
@ -5607,8 +5574,6 @@ class PMA_DisplayResults
)
. '">';
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if (isset($analyzed_sql[0]['select_expr'])
&& is_array($analyzed_sql[0]['select_expr'])
) {
@ -5620,7 +5585,7 @@ class PMA_DisplayResults
$alias = $analyzed_sql[0]['select_expr']
[$select_expr_position]['alias'];
if (!isset($alias) || !$pmaString->strlen($alias)) {
if (!isset($alias) || !/*overload*/mb_strlen($alias)) {
continue;
} // end if
@ -5640,7 +5605,7 @@ class PMA_DisplayResults
// Field to display from the foreign table?
if (isset($map[$meta->name][2])
&& $pmaString->strlen($map[$meta->name][2])
&& /*overload*/mb_strlen($map[$meta->name][2])
) {
$dispsql = 'SELECT '
@ -6056,10 +6021,10 @@ class PMA_DisplayResults
*/
private function _getPartialText(&$str)
{
if ($GLOBALS['PMA_String']->strlen($str) > $GLOBALS['cfg']['LimitChars']
if (/*overload*/mb_strlen($str) > $GLOBALS['cfg']['LimitChars']
&& $_SESSION['tmpval']['pftext'] === self::DISPLAY_PARTIAL_TEXT
) {
$str = $GLOBALS['PMA_String']->substr(
$str = /*overload*/mb_substr(
$str, 0, $GLOBALS['cfg']['LimitChars']
) . '...';

View File

@ -252,7 +252,7 @@ class PMA_Error extends PMA_Message
public function getHtmlTitle()
{
return htmlspecialchars(
$GLOBALS['PMA_String']->substr($this->getTitle(), 0, 100)
/*overload*/mb_substr($this->getTitle(), 0, 100)
);
}
@ -437,7 +437,7 @@ class PMA_Error extends PMA_Message
{
$dest = realpath($dest);
if ($GLOBALS['PMA_String']->substr(PHP_OS, 0, 3) == 'WIN') {
if (substr(PHP_OS, 0, 3) == 'WIN') {
$separator = '\\';
} else {
$separator = '/';

View File

@ -714,7 +714,7 @@ class PMA_File
*/
public function getContentLength()
{
return $GLOBALS['PMA_String']->strlen($this->_content);
return /*overload*/mb_strlen($this->_content);
}
/**

View File

@ -102,21 +102,19 @@ class PMA_Font
*/
$count = 0;
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
foreach ($charLists as $charList) {
$count += (($pmaString->strlen($text)
- $pmaString->strlen(str_replace($charList["chars"], "", $text))
$count += ((/*overload*/mb_strlen($text)
- /*overload*/mb_strlen(str_replace($charList["chars"], "", $text))
) * $charList["modifier"]);
}
$text = str_replace(" ", "", $text);//remove the " "'s
//all other chars
$count = $count
+ ($pmaString->strlen(preg_replace("/[a-z0-9]/i", "", $text)) * 0.3);
+ (/*overload*/mb_strlen(preg_replace("/[a-z0-9]/i", "", $text)) * 0.3);
$modifier = 1;
$font = $pmaString->strtolower($font);
$font = /*overload*/mb_strtolower($font);
switch ($font) {
/*
* no modifier for arial and sans-serif

View File

@ -564,12 +564,10 @@ class PMA_Header
$lang = $GLOBALS['available_languages'][$GLOBALS['lang']][1];
$dir = $GLOBALS['text_dir'];
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$retval = "<!DOCTYPE HTML>";
$retval .= "<html lang='$lang' dir='$dir' class='";
$retval .= $pmaString->strtolower(PMA_USR_BROWSER_AGENT) . " ";
$retval .= $pmaString->strtolower(PMA_USR_BROWSER_AGENT)
$retval .= /*overload*/mb_strtolower(PMA_USR_BROWSER_AGENT) . " ";
$retval .= /*overload*/mb_strtolower(PMA_USR_BROWSER_AGENT)
. intval(PMA_USR_BROWSER_VER) . "'>";
return $retval;
@ -713,7 +711,7 @@ class PMA_Header
{
$retval = '';
if ($this->_menuEnabled
&& $GLOBALS['PMA_String']->strlen($table)
&& /*overload*/mb_strlen($table)
&& $GLOBALS['cfg']['NumRecentTables'] > 0
) {
$tmp_result = PMA_RecentFavoriteTable::getInstance('recent')->add($db, $table);

View File

@ -111,7 +111,7 @@ class PMA_Index
PMA_Index::_loadIndexes($table, $schema);
if (! isset(PMA_Index::$_registry[$schema][$table][$index_name])) {
$index = new PMA_Index;
if ($GLOBALS['PMA_String']->strlen($index_name)) {
if (/*overload*/mb_strlen($index_name)) {
$index->setName($index_name);
PMA_Index::$_registry[$schema][$table][$index->getName()] = $index;
}
@ -200,7 +200,7 @@ class PMA_Index
public function addColumn($params)
{
if (isset($params['Column_name'])
&& $GLOBALS['PMA_String']->strlen($params['Column_name'])
&& /*overload*/mb_strlen($params['Column_name'])
) {
$this->_columns[$params['Column_name']] = new PMA_Index_Column($params);
}
@ -341,7 +341,7 @@ class PMA_Index
public function getComments()
{
$comments = $this->getRemarks();
if ($GLOBALS['PMA_String']->strlen($comments)) {
if (/*overload*/mb_strlen($comments)) {
$comments .= "\n";
}
$comments .= $this->getComment();

View File

@ -142,7 +142,7 @@ class PMA_List_Database extends PMA_List
protected function checkOnlyDatabase()
{
if (is_string($GLOBALS['cfg']['Server']['only_db'])
&& $GLOBALS['PMA_String']->strlen($GLOBALS['cfg']['Server']['only_db'])
&& /*overload*/mb_strlen($GLOBALS['cfg']['Server']['only_db'])
) {
$GLOBALS['cfg']['Server']['only_db'] = array(
$GLOBALS['cfg']['Server']['only_db']
@ -183,7 +183,7 @@ class PMA_List_Database extends PMA_List
*/
public function getDefault()
{
if ($GLOBALS['PMA_String']->strlen($GLOBALS['db'])) {
if (/*overload*/mb_strlen($GLOBALS['db'])) {
return $GLOBALS['db'];
}

View File

@ -81,7 +81,7 @@ class PMA_Menu
*/
public function getHash()
{
return $GLOBALS['PMA_String']->substr(
return substr(
md5($this->_getMenu() . $this->_getBreadcrumbs()),
0,
8
@ -97,13 +97,11 @@ class PMA_Menu
{
$url_params = array('db' => $this->_db);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strlen($this->_table)) {
if (/*overload*/mb_strlen($this->_table)) {
$tabs = $this->_getTableTabs();
$url_params['table'] = $this->_table;
$level = 'table';
} else if ($pmaString->strlen($this->_db)) {
} else if (/*overload*/mb_strlen($this->_db)) {
$tabs = $this->_getDbTabs();
$level = 'db';
} else {
@ -147,13 +145,10 @@ class PMA_Menu
$result = PMA_queryAsControlUser($sql_query, false);
if ($result) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
while ($row = $GLOBALS['dbi']->fetchAssoc($result)) {
$tabName = $pmaString->substr(
$tabName = /*overload*/mb_substr(
$row['tab'],
$pmaString->strpos($row['tab'], '_') + 1
/*overload*/mb_strpos($row['tab'], '_') + 1
);
unset($allowedTabs[$tabName]);
}
@ -202,10 +197,7 @@ class PMA_Menu
__('Server')
);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strlen($this->_db)) {
if (/*overload*/mb_strlen($this->_db)) {
$retval .= $separator;
if (PMA_Util::showIcons('TabsMode')) {
$retval .= PMA_Util::getImage(
@ -223,7 +215,7 @@ class PMA_Menu
);
// if the table is being dropped, $_REQUEST['purge'] is set to '1'
// so do not display the table name in upper div
if ($pmaString->strlen($this->_table)
if (/*overload*/mb_strlen($this->_table)
&& ! (isset($_REQUEST['purge']) && $_REQUEST['purge'] == '1')
) {
include './libraries/tbl_info.inc.php';
@ -253,7 +245,7 @@ class PMA_Menu
if (! empty($show_comment)
&& ! isset($GLOBALS['avoid_show_comment'])
) {
if ($pmaString->strstr($show_comment, '; InnoDB free')) {
if (/*overload*/mb_strstr($show_comment, '; InnoDB free')) {
$show_comment = preg_replace(
'@; InnoDB free:.*?$@',
'',

View File

@ -501,7 +501,7 @@ class PMA_Message
*/
public function addMessage($message, $separator = ' ')
{
if ($GLOBALS['PMA_String']->strlen($separator)) {
if (/*overload*/mb_strlen($separator)) {
$this->addedMessages[] = $separator;
}
@ -628,13 +628,11 @@ class PMA_Message
{
$message = $this->message;
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if (0 === $pmaString->strlen($message)) {
if (0 === /*overload*/mb_strlen($message)) {
$string = $this->getString();
if (isset($GLOBALS[$string])) {
$message = $GLOBALS[$string];
} elseif (0 === $pmaString->strlen($string)) {
} elseif (0 === /*overload*/mb_strlen($string)) {
$message = '';
} else {
$message = $string;

View File

@ -142,7 +142,7 @@ class PMA_PDF extends TCPDF
PMA_downloadHeader(
$filename,
'application/pdf',
$GLOBALS['PMA_String']->strlen($pdfData)
/*overload*/mb_strlen($pdfData)
);
echo $pdfData;
}

View File

@ -63,12 +63,9 @@ class PMA_RecentFavoriteTable
*/
private function __construct($type)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$this->_tableType = $type;
if ($pmaString->strlen($GLOBALS['cfg']['Server']['pmadb'])
&& $pmaString->strlen($GLOBALS['cfg']['Server'][$this->_tableType])
if (/*overload*/mb_strlen($GLOBALS['cfg']['Server']['pmadb'])
&& /*overload*/mb_strlen($GLOBALS['cfg']['Server'][$this->_tableType])
) {
$this->_pmaTable
= PMA_Util::backquote($GLOBALS['cfg']['Server']['pmadb']) . "."

View File

@ -318,10 +318,7 @@ class PMA_Response
$this->addJSON('_displayMessage', $this->getHeader()->getMessage());
$errors = $this->_footer->getErrorMessages();
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strlen($errors)) {
if (/*overload*/mb_strlen($errors)) {
$this->addJSON('_errors', $errors);
}
$promptPhpErrors = $GLOBALS['error_handler']->hasErrorsForPrompt();
@ -333,7 +330,7 @@ class PMA_Response
$query = '';
$maxChars = $GLOBALS['cfg']['MaxCharactersInDisplayedSQL'];
if (isset($GLOBALS['sql_query'])
&& $pmaString->strlen($GLOBALS['sql_query']) < $maxChars
&& /*overload*/mb_strlen($GLOBALS['sql_query']) < $maxChars
) {
$query = $GLOBALS['sql_query'];
}

View File

@ -54,7 +54,7 @@ class PMA_Scripts
$dynamic_scripts = "";
$scripts = array();
foreach ($files as $value) {
if ($GLOBALS['PMA_String']->strpos($value['filename'], "?") !== false) {
if (/*overload*/mb_strpos($value['filename'], "?") !== false) {
if ($value['before_statics'] === true) {
$first_dynamic_scripts .= "<script type='text/javascript' src='js/"
. $value['filename'] . "'></script>";
@ -158,16 +158,13 @@ class PMA_Scripts
*/
private function _eventBlacklist($filename)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ( $pmaString->strpos($filename, 'jquery') !== false
|| $pmaString->strpos($filename, 'codemirror') !== false
|| $pmaString->strpos($filename, 'messages.php') !== false
|| $pmaString->strpos($filename, 'ajax.js') !== false
|| $pmaString->strpos($filename, 'navigation.js') !== false
|| $pmaString->strpos($filename, 'get_image.js.php') !== false
|| $pmaString->strpos($filename, 'cross_framing_protection.js') !== false
if ( strpos($filename, 'jquery') !== false
|| strpos($filename, 'codemirror') !== false
|| strpos($filename, 'messages.php') !== false
|| strpos($filename, 'ajax.js') !== false
|| strpos($filename, 'navigation.js') !== false
|| strpos($filename, 'get_image.js.php') !== false
|| strpos($filename, 'cross_framing_protection.js') !== false
) {
return 0;
}
@ -216,7 +213,7 @@ class PMA_Scripts
$retval = array();
foreach ($this->_files as $file) {
//If filename contains a "?", continue.
if ($GLOBALS['PMA_String']->strpos($file['filename'], "?") !== false) {
if (strpos($file['filename'], "?") !== false) {
continue;
}

View File

@ -281,14 +281,11 @@ class PMA_ServerStatusData
// Variable to mark used sections
$categoryUsed = array();
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// sort vars into arrays
foreach ($server_status as $name => $value) {
$section_found = false;
foreach ($allocations as $filter => $section) {
if ($pmaString->strpos($name, $filter) !== false) {
if (/*overload*/mb_strpos($name, $filter) !== false) {
$allocationMap[$name] = $section;
$categoryUsed[$section] = true;
$section_found = true;
@ -319,7 +316,7 @@ class PMA_ServerStatusData
// Set all class properties
$this->db_isLocal = false;
if ($pmaString->strtolower($GLOBALS['cfg']['Server']['host']) === 'localhost'
if (/*overload*/mb_strtolower($GLOBALS['cfg']['Server']['host']) === 'localhost'
|| $GLOBALS['cfg']['Server']['host'] === '127.0.0.1'
|| $GLOBALS['cfg']['Server']['host'] === '::1'
) {

View File

@ -132,10 +132,7 @@ class PMA_StorageEngine
$name = 'engine', $id = null,
$selected = null, $offerUnavailableEngines = false
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$selected = $pmaString->strtolower($selected);
$selected = /*overload*/mb_strtolower($selected);
$output = '<select name="' . $name . '"'
. (empty($id) ? '' : ' id="' . $id . '"') . '>' . "\n";
@ -154,7 +151,7 @@ class PMA_StorageEngine
$output .= ' <option value="' . htmlspecialchars($key) . '"'
. (empty($details['Comment'])
? '' : ' title="' . htmlspecialchars($details['Comment']) . '"')
. ($pmaString->strtolower($key) == $selected
. (/*overload*/mb_strtolower($key) == $selected
|| (empty($selected) && $details['Support'] == 'DEFAULT')
? ' selected="selected"' : '')
. '>' . "\n"
@ -175,14 +172,11 @@ class PMA_StorageEngine
*/
static public function getEngine($engine)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$engine = str_replace('/', '', str_replace('.', '', $engine));
$filename = './libraries/engines/'
. $pmaString->strtolower($engine) . '.lib.php';
. /*overload*/mb_strtolower($engine) . '.lib.php';
if (file_exists($filename) && include_once $filename) {
switch($pmaString->strtolower($engine)) {
switch(/*overload*/mb_strtolower($engine)) {
case 'bdb':
return new PMA_StorageEngine_Bdb($engine);
case 'berkeleydb':
@ -318,9 +312,6 @@ class PMA_StorageEngine
$mysql_vars = array();
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$sql_query = 'SHOW GLOBAL VARIABLES ' . $like . ';';
$res = $GLOBALS['dbi']->query($sql_query);
while ($row = $GLOBALS['dbi']->fetchAssoc($res)) {
@ -328,7 +319,7 @@ class PMA_StorageEngine
$mysql_vars[$row['Variable_name']]
= $variables[$row['Variable_name']];
} elseif (! $like
&& $pmaString->strpos($pmaString->strtolower($row['Variable_name']), $pmaString->strtolower($this->engine)) !== 0
&& /*overload*/mb_strpos(/*overload*/mb_strtolower($row['Variable_name']), /*overload*/mb_strtolower($this->engine)) !== 0
) {
continue;
}

View File

@ -267,13 +267,10 @@ class PMA_Table
AND TABLE_NAME = '" . PMA_Util::sqlAddSlashes($table) . "'"
);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
foreach ($results as $result) {
$analyzed_sql[0]['create_table_fields'][$result['COLUMN_NAME']]
= array(
'type' => $pmaString->strtoupper($result['DATA_TYPE'])
'type' => /*overload*/mb_strtoupper($result['DATA_TYPE'])
);
}
} else {
@ -346,7 +343,7 @@ class PMA_Table
// any of known merge engines?
return in_array(
$GLOBALS['PMA_String']->strtoupper($engine),
/*overload*/mb_strtoupper($engine),
array('MERGE', 'MRG_MYISAM')
);
}
@ -437,11 +434,8 @@ class PMA_Table
$default_type = 'USER_DEFINED', $default_value = '', $extra = '',
$comment = '', &$field_primary = null, $move_to = ''
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$is_timestamp = $pmaString->strpos(
$pmaString->strtoupper($type),
$is_timestamp = /*overload*/mb_strpos(
/*overload*/mb_strtoupper($type),
'TIMESTAMP'
) !== false;
@ -798,12 +792,9 @@ class PMA_Table
return false;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$source = PMA_Util::backquote($source_db)
. '.' . PMA_Util::backquote($source_table);
if (! isset($target_db) || ! $pmaString->strlen($target_db)) {
if (! isset($target_db) || ! /*overload*/mb_strlen($target_db)) {
$target_db = $source_db;
}
@ -865,7 +856,7 @@ class PMA_Table
);
// ANSI_QUOTES might be a subset of sql_mode, for example
// REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI
if (false !== $pmaString->strpos($server_sql_mode, 'ANSI_QUOTES')) {
if (false !== /*overload*/mb_strpos($server_sql_mode, 'ANSI_QUOTES')) {
$table_delimiter = 'quote_double';
} else {
$table_delimiter = 'quote_backtick';
@ -955,7 +946,7 @@ class PMA_Table
$cnt = $parsed_sql['len'] - 1;
for ($j = $i; $j < $cnt; $j++) {
$dataUpper = $pmaString->strtoupper($parsed_sql[$j]['data']);
$dataUpper = /*overload*/mb_strtoupper($parsed_sql[$j]['data']);
if ($parsed_sql[$j]['type'] == 'alpha_reservedWord'
&& $dataUpper == 'CONSTRAINT'
) {
@ -992,7 +983,7 @@ class PMA_Table
$cnt = $parsed_sql['len'] - 1;
for ($j = $i; $j < $cnt; $j++) {
$dataUpper = $pmaString->strtoupper($parsed_sql[$j]['data']);
$dataUpper = /*overload*/mb_strtoupper($parsed_sql[$j]['data']);
if ($parsed_sql[$j]['type'] == 'alpha_reservedWord'
&& $dataUpper == 'CONSTRAINT'
) {
@ -1275,7 +1266,7 @@ class PMA_Table
return false;
}
if (! $GLOBALS['PMA_String']->strlen($table_name)) {
if (! /*overload*/mb_strlen($table_name)) {
// zero length
return false;
}
@ -1587,16 +1578,13 @@ class PMA_Table
{
$server_id = $GLOBALS['server'];
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// set session variable if it's still undefined
if (! isset($_SESSION['tmpval']['table_uiprefs'][$server_id][$this->db_name][$this->name])) {
// check whether we can get from pmadb
$_SESSION['tmpval']['table_uiprefs'][$server_id][$this->db_name]
[$this->name]
= ($pmaString->strlen($GLOBALS['cfg']['Server']['pmadb'])
&& $pmaString->strlen($GLOBALS['cfg']['Server']['table_uiprefs'])
= (/*overload*/mb_strlen($GLOBALS['cfg']['Server']['pmadb'])
&& /*overload*/mb_strlen($GLOBALS['cfg']['Server']['table_uiprefs'])
)
? $this->getUiPrefsFromDb()
: array();
@ -1634,16 +1622,16 @@ class PMA_Table
//get the available column name without backquoting
$avail_columns = $this->getColumns(false);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
foreach ($avail_columns as $each_col) {
// check if $each_col ends with $colname
if (substr_compare(
$each_col,
$colname,
$pmaString->strlen($each_col) - $pmaString->strlen($colname)
) === 0) {
$each_col,
$colname,
/*overload*/
mb_strlen($each_col) - /*overload*/
mb_strlen($colname)
) === 0
) {
return $this->uiprefs[$property];
}
}
@ -1729,12 +1717,9 @@ class PMA_Table
// save the value
$this->uiprefs[$property] = $value;
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// check if pmadb is set
if ($pmaString->strlen($GLOBALS['cfg']['Server']['pmadb'])
&& $pmaString->strlen($GLOBALS['cfg']['Server']['table_uiprefs'])
if (/*overload*/mb_strlen($GLOBALS['cfg']['Server']['pmadb'])
&& /*overload*/mb_strlen($GLOBALS['cfg']['Server']['table_uiprefs'])
) {
return $this->saveUiprefsToDb();
}
@ -1756,12 +1741,9 @@ class PMA_Table
if (isset($this->uiprefs[$property])) {
unset($this->uiprefs[$property]);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// check if pmadb is set
if ($pmaString->strlen($GLOBALS['cfg']['Server']['pmadb'])
&& $pmaString->strlen($GLOBALS['cfg']['Server']['table_uiprefs'])
if (/*overload*/mb_strlen($GLOBALS['cfg']['Server']['pmadb'])
&& /*overload*/mb_strlen($GLOBALS['cfg']['Server']['table_uiprefs'])
) {
return $this->saveUiprefsToDb();
}

View File

@ -151,7 +151,7 @@ class PMA_TableSearch
}
$type = preg_replace('@ZEROFILL@i', '', $type);
$type = preg_replace('@UNSIGNED@i', '', $type);
$type = $GLOBALS['PMA_String']->strtolower($type);
$type = /*overload*/mb_strtolower($type);
}
if (empty($type)) {
$type = '&nbsp;';
@ -314,7 +314,7 @@ class PMA_TableSearch
$html_output = '';
$value = explode(
', ',
str_replace("'", '', $GLOBALS['PMA_String']->substr($column_type, 5, -1))
str_replace("'", '', /*overload*/mb_substr($column_type, 5, -1))
);
$cnt_value = count($value);
@ -404,16 +404,13 @@ class PMA_TableSearch
// other cases
$the_class = 'textfield';
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($column_type == 'date') {
$the_class .= ' datefield';
} elseif ($column_type == 'datetime'
|| $pmaString->substr($column_type, 0, 9) == 'timestamp'
|| substr($column_type, 0, 9) == 'timestamp'
) {
$the_class .= ' datetimefield';
} elseif ($pmaString->substr($column_type, 0, 3) == 'bit') {
} elseif (substr($column_type, 0, 3) == 'bit') {
$the_class .= ' bit';
}
@ -560,7 +557,7 @@ class PMA_TableSearch
// strings to numbers and numbers to strings as necessary
// during the comparison
if (preg_match('@char|binary|blob|text|set|date|time|year@i', $types)
|| $GLOBALS['PMA_String']->strpos(' ' . $func_type, 'LIKE')
|| /*overload*/mb_strpos(' ' . $func_type, 'LIKE')
) {
$quot = '\'';
} else {

View File

@ -166,7 +166,7 @@ class PMA_Tracker
*/
static protected function getTableName($string)
{
if ($GLOBALS['PMA_String']->strstr($string, '.')) {
if (/*overload*/mb_strstr($string, '.')) {
$temp = explode('.', $string);
$tablename = $temp[1];
} else {
@ -610,21 +610,18 @@ class PMA_Tracker
$ddlog = array();
$i = 0;
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Iterate tracked data definition statements
// For each log entry we want to get date, username and statement
foreach ($log_schema_entries as $log_entry) {
if (trim($log_entry) != '') {
$date = $pmaString->substr($log_entry, 0, 19);
$username = $pmaString->substr(
$log_entry, 20, $pmaString->strpos($log_entry, "\n") - 20
$date = /*overload*/mb_substr($log_entry, 0, 19);
$username = /*overload*/mb_substr(
$log_entry, 20, /*overload*/mb_strpos($log_entry, "\n") - 20
);
if ($i == 0) {
$ddl_date_from = $date;
}
$statement = rtrim($pmaString->strstr($log_entry, "\n"));
$statement = rtrim(/*overload*/mb_strstr($log_entry, "\n"));
$ddlog[] = array( 'date' => $date,
'username'=> $username,
@ -645,14 +642,14 @@ class PMA_Tracker
// For each log entry we want to get date, username and statement
foreach ($log_data_entries as $log_entry) {
if (trim($log_entry) != '') {
$date = $pmaString->substr($log_entry, 0, 19);
$username = $pmaString->substr(
$log_entry, 20, $pmaString->strpos($log_entry, "\n") - 20
$date = /*overload*/mb_substr($log_entry, 0, 19);
$username = /*overload*/mb_substr(
$log_entry, 20, /*overload*/mb_strpos($log_entry, "\n") - 20
);
if ($i == 0) {
$dml_date_from = $date;
}
$statement = rtrim($pmaString->strstr($log_entry, "\n"));
$statement = rtrim(/*overload*/mb_strstr($log_entry, "\n"));
$dmlog[] = array( 'date' => $date,
'username' => $username,
@ -701,9 +698,6 @@ class PMA_Tracker
*/
static public function parseQuery($query)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Usage of PMA_SQP does not work here
//
// require_once("libraries/sqlparser.lib.php");
@ -718,11 +712,11 @@ class PMA_Tracker
$tokens = explode(" ", $query);
foreach ($tokens as $key => $value) {
$tokens[$key] = $pmaString->strtoupper($value);
$tokens[$key] = /*overload*/mb_strtoupper($value);
}
// Parse USE statement, need it for SQL dump imports
if ($pmaString->substr($query, 0, 4) == 'USE ') {
if (/*overload*/mb_substr($query, 0, 4) == 'USE ') {
$prefix = explode('USE ', $query);
$GLOBALS['db'] = self::getTableName($prefix[1]);
}
@ -743,7 +737,7 @@ class PMA_Tracker
$index = array_search('VIEW', $tokens);
$result['tablename'] = $pmaString->strtolower(
$result['tablename'] = /*overload*/mb_strtolower(
self::getTableName($tokens[$index + 1])
);
}
@ -758,19 +752,19 @@ class PMA_Tracker
$index = array_search('VIEW', $tokens);
$result['tablename'] = $pmaString->strtolower(
$result['tablename'] = /*overload*/mb_strtolower(
self::getTableName($tokens[$index + 1])
);
}
// Parse DROP VIEW statement
if (! isset($result['identifier'])
&& $pmaString->substr($query, 0, 10) == 'DROP VIEW '
&& substr($query, 0, 10) == 'DROP VIEW '
) {
$result['identifier'] = 'DROP VIEW';
$prefix = explode('DROP VIEW ', $query);
$str = $pmaString->strstr($prefix[1], 'IF EXISTS');
$str = /*overload*/mb_strstr($prefix[1], 'IF EXISTS');
if ($str == false ) {
$str = $prefix[1];
@ -780,7 +774,7 @@ class PMA_Tracker
// Parse CREATE DATABASE statement
if (! isset($result['identifier'])
&& $pmaString->substr($query, 0, 15) == 'CREATE DATABASE'
&& substr($query, 0, 15) == 'CREATE DATABASE'
) {
$result['identifier'] = 'CREATE DATABASE';
$str = str_replace('CREATE DATABASE', '', $query);
@ -794,7 +788,7 @@ class PMA_Tracker
// Parse ALTER DATABASE statement
if (! isset($result['identifier'])
&& $pmaString->substr($query, 0, 14) == 'ALTER DATABASE'
&& substr($query, 0, 14) == 'ALTER DATABASE'
) {
$result['identifier'] = 'ALTER DATABASE';
$result['tablename'] = '';
@ -802,7 +796,7 @@ class PMA_Tracker
// Parse DROP DATABASE statement
if (! isset($result['identifier'])
&& $pmaString->substr($query, 0, 13) == 'DROP DATABASE'
&& substr($query, 0, 13) == 'DROP DATABASE'
) {
$result['identifier'] = 'DROP DATABASE';
$str = str_replace('DROP DATABASE', '', $query);
@ -813,7 +807,7 @@ class PMA_Tracker
// Parse CREATE TABLE statement
if (! isset($result['identifier'])
&& $pmaString->substr($query, 0, 12) == 'CREATE TABLE'
&& substr($query, 0, 12) == 'CREATE TABLE'
) {
$result['identifier'] = 'CREATE TABLE';
$query = str_replace('IF NOT EXISTS', '', $query);
@ -824,7 +818,7 @@ class PMA_Tracker
// Parse ALTER TABLE statement
if (! isset($result['identifier'])
&& $pmaString->substr($query, 0, 12) == 'ALTER TABLE '
&& substr($query, 0, 12) == 'ALTER TABLE '
) {
$result['identifier'] = 'ALTER TABLE';
@ -835,12 +829,12 @@ class PMA_Tracker
// Parse DROP TABLE statement
if (! isset($result['identifier'])
&& $pmaString->substr($query, 0, 11) == 'DROP TABLE '
&& substr($query, 0, 11) == 'DROP TABLE '
) {
$result['identifier'] = 'DROP TABLE';
$prefix = explode('DROP TABLE ', $query);
$str = $pmaString->strstr($prefix[1], 'IF EXISTS');
$str = /*overload*/mb_strstr($prefix[1], 'IF EXISTS');
if ($str == false ) {
$str = $prefix[1];
@ -850,9 +844,9 @@ class PMA_Tracker
// Parse CREATE INDEX statement
if (! isset($result['identifier'])
&& ($pmaString->substr($query, 0, 12) == 'CREATE INDEX'
|| $pmaString->substr($query, 0, 19) == 'CREATE UNIQUE INDEX'
|| $pmaString->substr($query, 0, 20) == 'CREATE SPATIAL INDEX')
&& (substr($query, 0, 12) == 'CREATE INDEX'
|| substr($query, 0, 19) == 'CREATE UNIQUE INDEX'
|| substr($query, 0, 20) == 'CREATE SPATIAL INDEX')
) {
$result['identifier'] = 'CREATE INDEX';
$prefix = explode('ON ', $query);
@ -862,7 +856,7 @@ class PMA_Tracker
// Parse DROP INDEX statement
if (! isset($result['identifier'])
&& $pmaString->substr($query, 0, 10) == 'DROP INDEX'
&& substr($query, 0, 10) == 'DROP INDEX'
) {
$result['identifier'] = 'DROP INDEX';
$prefix = explode('ON ', $query);
@ -871,7 +865,7 @@ class PMA_Tracker
// Parse RENAME TABLE statement
if (! isset($result['identifier'])
&& $pmaString->substr($query, 0, 13) == 'RENAME TABLE '
&& substr($query, 0, 13) == 'RENAME TABLE '
) {
$result['identifier'] = 'RENAME TABLE';
$prefix = explode('RENAME TABLE ', $query);
@ -889,7 +883,7 @@ class PMA_Tracker
}
// Parse UPDATE statement
if (! isset($result['identifier'])
&& $pmaString->substr($query, 0, 6) == 'UPDATE'
&& substr($query, 0, 6) == 'UPDATE'
) {
$result['identifier'] = 'UPDATE';
$prefix = explode('UPDATE ', $query);
@ -899,7 +893,7 @@ class PMA_Tracker
// Parse INSERT INTO statement
if (! isset($result['identifier'])
&& $pmaString->substr($query, 0, 11) == 'INSERT INTO'
&& substr($query, 0, 11) == 'INSERT INTO'
) {
$result['identifier'] = 'INSERT';
$prefix = explode('INSERT INTO', $query);
@ -909,7 +903,7 @@ class PMA_Tracker
// Parse DELETE statement
if (! isset($result['identifier'])
&& $pmaString->substr($query, 0, 6) == 'DELETE'
&& substr($query, 0, 6) == 'DELETE'
) {
$result['identifier'] = 'DELETE';
$prefix = explode('FROM ', $query);
@ -919,7 +913,7 @@ class PMA_Tracker
// Parse TRUNCATE statement
if (! isset($result['identifier'])
&& $pmaString->substr($query, 0, 8) == 'TRUNCATE'
&& substr($query, 0, 8) == 'TRUNCATE'
) {
$result['identifier'] = 'TRUNCATE';
$prefix = explode('TRUNCATE', $query);
@ -941,15 +935,12 @@ class PMA_Tracker
*/
static public function handleQuery($query)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// If query is marked as untouchable, leave
if ($pmaString->strstr($query, "/*NOTRACK*/")) {
if (/*overload*/mb_strstr($query, "/*NOTRACK*/")) {
return;
}
if (! ($pmaString->substr($query, -1) == ';')) {
if (! (substr($query, -1) == ';')) {
$query = $query . ";\n";
}
// Get some information about query

View File

@ -314,7 +314,7 @@ class PMA_Types_MySQL extends PMA_Types
*/
public function getTypeDescription($type)
{
$type = $GLOBALS['PMA_String']->strtoupper($type);
$type = /*overload*/mb_strtoupper($type);
switch ($type) {
case 'TINYINT':
return __('A 1-byte integer, signed range is -128 to 127, unsigned range is 0 to 255');
@ -409,7 +409,7 @@ class PMA_Types_MySQL extends PMA_Types
*/
public function getTypeClass($type)
{
$type = $GLOBALS['PMA_String']->strtoupper($type);
$type = /*overload*/mb_strtoupper($type);
switch ($type) {
case 'TINYINT':
case 'SMALLINT':
@ -762,7 +762,7 @@ class PMA_Types_Drizzle extends PMA_Types
*/
public function getTypeDescription($type)
{
$type = $GLOBALS['PMA_String']->strtoupper($type);
$type = /*overload*/mb_strtoupper($type);
switch ($type) {
case 'INTEGER':
return __('A 4-byte integer, range is -2,147,483,648 to 2,147,483,647');
@ -811,7 +811,7 @@ class PMA_Types_Drizzle extends PMA_Types
*/
public function getTypeClass($type)
{
$type = $GLOBALS['PMA_String']->strtoupper($type);
$type = /*overload*/mb_strtoupper($type);
switch ($type) {
case 'INTEGER':
case 'BIGINT':

View File

@ -364,14 +364,11 @@ class PMA_Util
$quotes[] = $quote;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
foreach ($quotes as $quote) {
if ($pmaString->substr($quoted_string, 0, 1) === $quote
&& $pmaString->substr($quoted_string, -1, 1) === $quote
if (/*overload*/mb_substr($quoted_string, 0, 1) === $quote
&& /*overload*/mb_substr($quoted_string, -1, 1) === $quote
) {
$unquoted_string = $pmaString->substr($quoted_string, 1, -1);
$unquoted_string = /*overload*/mb_substr($quoted_string, 1, -1);
// replace escaped quotes
$unquoted_string = str_replace(
$quote . $quote,
@ -402,13 +399,10 @@ class PMA_Util
{
global $cfg;
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($truncate
&& $pmaString->strlen($sql_query) > $cfg['MaxCharactersInDisplayedSQL']
&& /*overload*/mb_strlen($sql_query) > $cfg['MaxCharactersInDisplayedSQL']
) {
$sql_query = $pmaString->substr(
$sql_query = /*overload*/mb_substr(
$sql_query,
0,
$cfg['MaxCharactersInDisplayedSQL']
@ -449,8 +443,8 @@ class PMA_Util
public static function getMySQLDocuURL($link, $anchor = '')
{
// Fixup for newly used names:
$link = str_replace('_', '-', $GLOBALS['PMA_String']->strtolower($link));
$anchor = str_replace('_', '-', $GLOBALS['PMA_String']->strtolower($anchor));
$link = str_replace('_', '-', /*overload*/mb_strtolower($link));
$anchor = str_replace('_', '-', /*overload*/mb_strtolower($anchor));
if (empty($link)) {
$link = 'index';
@ -631,13 +625,10 @@ class PMA_Util
$error_msg .= ' <div class="error"><h1>' . __('Error')
. '</h1>' . "\n";
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// if the config password is wrong, or the MySQL server does not
// respond, do not show the query that would reveal the
// username/password
if (! empty($the_query) && ! $pmaString->strstr($the_query, 'connect')) {
if (! empty($the_query) && ! /*overload*/mb_strstr($the_query, 'connect')) {
// --- Added to solve bug #641765
if (function_exists('PMA_SQP_isError') && PMA_SQP_isError()) {
$error_msg .= PMA_SQP_getErrorString() . "\n";
@ -646,7 +637,7 @@ class PMA_Util
// ---
// modified to show the help on sql errors
$error_msg .= '<p><strong>' . __('SQL query:') . '</strong>' . "\n";
if ($pmaString->strstr($pmaString->strtolower($formatted_sql), 'select')
if (/*overload*/mb_strstr(/*overload*/mb_strtolower($formatted_sql), 'select')
) {
// please show me help to the error on select
$error_msg .= self::showMySQLDocu('SELECT');
@ -656,12 +647,12 @@ class PMA_Util
'sql_query' => $the_query,
'show_query' => 1,
);
if ($pmaString->strlen($table)) {
if (/*overload*/mb_strlen($table)) {
$_url_params['db'] = $db;
$_url_params['table'] = $table;
$doedit_goto = '<a href="tbl_sql.php'
. PMA_URL_getCommon($_url_params) . '">';
} elseif ($pmaString->strlen($db)) {
} elseif (/*overload*/mb_strlen($db)) {
$_url_params['db'] = $db;
$doedit_goto = '<a href="db_sql.php'
. PMA_URL_getCommon($_url_params) . '">';
@ -733,7 +724,7 @@ class PMA_Util
exit;
}
if (! empty($back_url)) {
if ($pmaString->strstr($back_url, '?')) {
if (/*overload*/mb_strstr($back_url, '?')) {
$back_url .= '&amp;no_history=true';
} else {
$back_url .= '?no_history=true';
@ -813,7 +804,7 @@ class PMA_Util
// in $group we save the reference to the place in $table_groups
// where to store the table info
if ($GLOBALS['cfg']['NavigationTreeEnableGrouping']
&& $sep && $GLOBALS['PMA_String']->strstr($table_name, $sep)
&& $sep && /*overload*/mb_strstr($table_name, $sep)
) {
$parts = explode($sep, $table_name);
@ -897,19 +888,16 @@ class PMA_Util
return $a_name;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if (! $do_it) {
global $PMA_SQPdata_forbidden_word;
$eltNameUpper = $pmaString->strtoupper($a_name);
$eltNameUpper = /*overload*/mb_strtoupper($a_name);
if (!in_array($eltNameUpper, $PMA_SQPdata_forbidden_word)) {
return $a_name;
}
}
// '0' is also empty for php :-(
if ($pmaString->strlen($a_name) && $a_name !== '*') {
if (/*overload*/mb_strlen($a_name) && $a_name !== '*') {
return '`' . str_replace('`', '``', $a_name) . '`';
} else {
return $a_name;
@ -947,12 +935,9 @@ class PMA_Util
return $a_name;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if (! $do_it) {
global $PMA_SQPdata_forbidden_word;
$eltNameUpper = $pmaString->strtoupper($a_name);
$eltNameUpper = /*overload*/mb_strtoupper($a_name);
if (!in_array($eltNameUpper, $PMA_SQPdata_forbidden_word)) {
return $a_name;
}
@ -969,7 +954,7 @@ class PMA_Util
}
// '0' is also empty for php :-(
if ($pmaString->strlen($a_name) && $a_name !== '*') {
if (/*overload*/mb_strlen($a_name) && $a_name !== '*') {
return $quote . $a_name . $quote;
} else {
return $a_name;
@ -1074,17 +1059,14 @@ class PMA_Util
$query_too_big = false;
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strlen($query_base) > $cfg['MaxCharactersInDisplayedSQL']
if (/*overload*/mb_strlen($query_base) > $cfg['MaxCharactersInDisplayedSQL']
) {
// when the query is large (for example an INSERT of binary
// data), the parser chokes; so avoid parsing the query
$query_too_big = true;
$shortened_query_base = nl2br(
htmlspecialchars(
$pmaString->substr(
/*overload*/mb_substr(
$sql_query,
0,
$cfg['MaxCharactersInDisplayedSQL']
@ -1158,9 +1140,9 @@ class PMA_Util
if (! isset($GLOBALS['db'])) {
$GLOBALS['db'] = '';
}
if ($pmaString->strlen($GLOBALS['db'])) {
if (/*overload*/mb_strlen($GLOBALS['db'])) {
$url_params['db'] = $GLOBALS['db'];
if ($pmaString->strlen($GLOBALS['table'])) {
if (/*overload*/mb_strlen($GLOBALS['table'])) {
$url_params['table'] = $GLOBALS['table'];
$edit_link = 'tbl_sql.php';
} else {
@ -1183,7 +1165,7 @@ class PMA_Util
} elseif (preg_match(
'@^EXPLAIN[[:space:]]+SELECT[[:space:]]+@i', $sql_query
)) {
$explain_params['sql_query'] = $pmaString->substr($sql_query, 8);
$explain_params['sql_query'] = /*overload*/mb_substr($sql_query, 8);
$_message = __('Skip Explain SQL');
}
if (isset($explain_params['sql_query']) && isset($_message)) {
@ -1545,17 +1527,14 @@ class PMA_Util
{
$return_value = -1;
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if (preg_match('/^[0-9]+GB$/', $formatted_size)) {
$return_value = $pmaString->substr($formatted_size, 0, -2)
$return_value = /*overload*/mb_substr($formatted_size, 0, -2)
* self::pow(1024, 3);
} elseif (preg_match('/^[0-9]+MB$/', $formatted_size)) {
$return_value = $pmaString->substr($formatted_size, 0, -2)
$return_value = /*overload*/mb_substr($formatted_size, 0, -2)
* self::pow(1024, 2);
} elseif (preg_match('/^[0-9]+K$/', $formatted_size)) {
$return_value = $pmaString->substr($formatted_size, 0, -1)
$return_value = /*overload*/mb_substr($formatted_size, 0, -1)
* self::pow(1024, 1);
}
return $return_value;
@ -1794,10 +1773,7 @@ class PMA_Util
$url, $message, $tag_params = array(),
$new_form = true, $strip_img = false, $target = ''
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$url_length = $pmaString->strlen($url);
$url_length = /*overload*/mb_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) {
@ -1820,7 +1796,7 @@ class PMA_Util
$tag_params_strings = array();
foreach ($tag_params as $par_name => $par_value) {
// htmlspecialchars() only on non javascript
$par_value = $pmaString->substr($par_name, 0, 2) == 'on'
$par_value = /*overload*/mb_substr($par_name, 0, 2) == 'on'
? $par_value
: htmlspecialchars($par_value);
$tag_params_strings[] = $par_name . '="' . $par_value . '"';
@ -1847,7 +1823,7 @@ class PMA_Util
$query_parts = self::splitURLQuery($url);
foreach ($query_parts as $query_pair) {
list($eachvar, $eachval) = explode('=', $query_pair);
if ($pmaString->strlen($eachval) > $suhosin_get_MaxValueLength) {
if (/*overload*/mb_strlen($eachval) > $suhosin_get_MaxValueLength) {
$in_suhosin_limits = false;
break;
}
@ -1990,7 +1966,7 @@ class PMA_Util
$format_string = '';
$charbuff = false;
for ($i = 0, $str_len = $GLOBALS['PMA_String']->strlen($string);
for ($i = 0, $str_len = /*overload*/mb_strlen($string);
$i < $str_len;
$i++
) {
@ -2098,9 +2074,6 @@ class PMA_Util
$nonprimary_condition_array = array();
$condition_array = array();
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
for ($i = 0; $i < $fields_cnt; ++$i) {
$con_val = '';
@ -2108,7 +2081,7 @@ class PMA_Util
$meta = $fields_meta[$i];
// do not use a column alias in a condition
if (! isset($meta->orgname) || ! $pmaString->strlen($meta->orgname)) {
if (! isset($meta->orgname) || ! /*overload*/mb_strlen($meta->orgname)) {
$meta->orgname = $meta->name;
if (isset($GLOBALS['analyzed_sql'][0]['select_expr'])
@ -2182,7 +2155,7 @@ class PMA_Util
// hexify only if this is a true not empty BLOB or a BINARY
// do not waste memory building a too big condition
if ($pmaString->strlen($row[$i]) < 1000) {
if (/*overload*/mb_strlen($row[$i]) < 1000) {
// use a CAST if possible, to avoid problems
// if the field contains wildcard characters % or _
$con_val = '= CAST(0x' . bin2hex($row[$i]) . ' AS BINARY)';
@ -2190,7 +2163,7 @@ class PMA_Util
// when this blob is the only field present
// try settling with length comparison
$condition = ' CHAR_LENGTH(' . $con_key . ') ';
$con_val = ' = ' . $pmaString->strlen($row[$i]);
$con_val = ' = ' . /*overload*/mb_strlen($row[$i]);
} else {
// this blob won't be part of the final condition
$con_val = null;
@ -2199,7 +2172,7 @@ class PMA_Util
&& ! empty($row[$i])
) {
// do not build a too big condition
if ($pmaString->strlen($row[$i]) < 5000) {
if (/*overload*/mb_strlen($row[$i]) < 5000) {
$condition .= '=0x' . bin2hex($row[$i]) . ' AND';
} else {
$condition = '';
@ -2561,7 +2534,7 @@ class PMA_Util
public static function userDir($dir)
{
// add trailing slash
if ($GLOBALS['PMA_String']->substr($dir, -1) != '/') {
if (/*overload*/mb_substr($dir, -1) != '/') {
$dir .= '/';
}
@ -2577,11 +2550,8 @@ class PMA_Util
*/
public static function getDbLink($database = null)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if (! $pmaString->strlen($database)) {
if (! $pmaString->strlen($GLOBALS['db'])) {
if (! /*overload*/mb_strlen($database)) {
if (! /*overload*/mb_strlen($GLOBALS['db'])) {
return '';
}
$database = $GLOBALS['db'];
@ -2975,27 +2945,24 @@ class PMA_Util
*/
public static function extractColumnSpec($columnspec)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$first_bracket_pos = $pmaString->strpos($columnspec, '(');
$first_bracket_pos = /*overload*/mb_strpos($columnspec, '(');
if ($first_bracket_pos) {
$spec_in_brackets = chop(
$pmaString->substr(
/*overload*/mb_substr(
$columnspec,
$first_bracket_pos + 1,
($pmaString->strrpos($columnspec, ')') - $first_bracket_pos - 1)
(/*overload*/mb_strrpos($columnspec, ')') - $first_bracket_pos - 1)
)
);
// convert to lowercase just to be sure
$type = $pmaString->strtolower(
chop($pmaString->substr($columnspec, 0, $first_bracket_pos))
$type = /*overload*/mb_strtolower(
chop(/*overload*/mb_substr($columnspec, 0, $first_bracket_pos))
);
} else {
// Split trailing attributes such as unsigned,
// binary, zerofill and get data type name
$type_parts = explode(' ', $columnspec);
$type = $pmaString->strtolower($type_parts[0]);
$type = /*overload*/mb_strtolower($type_parts[0]);
$spec_in_brackets = '';
}
@ -3011,7 +2978,7 @@ class PMA_Util
$enum_set_values = array();
/* Create printable type name */
$printtype = $pmaString->strtolower($columnspec);
$printtype = /*overload*/mb_strtolower($columnspec);
// Strip the "BINARY" attribute, except if we find "BINARY(" because
// this would be a BINARY or VARBINARY column type;
@ -3059,11 +3026,10 @@ class PMA_Util
// for the case ENUM('&#8211;','&ldquo;')
$displayed_type = htmlspecialchars($printtype);
if ($pmaString->strlen($printtype) > $GLOBALS['cfg']['LimitChars']) {
$displayed_type = '<abbr title="'
. htmlspecialchars($printtype) . '">';
if (/*overload*/mb_strlen($printtype) > $GLOBALS['cfg']['LimitChars']) {
$displayed_type = '<abbr title="' . htmlspecialchars($printtype) . '">';
$displayed_type .= htmlspecialchars(
$GLOBALS['PMA_String']->substr(
/*overload*/mb_substr(
$printtype, 0, $GLOBALS['cfg']['LimitChars']
)
);
@ -3093,7 +3059,7 @@ class PMA_Util
*/
public static function isForeignKeySupported($engine)
{
$engine = $GLOBALS['PMA_String']->strtoupper($engine);
$engine = strtoupper($engine);
if (($engine == 'INNODB') || ($engine == 'PBXT')) {
return true;
} elseif ($engine == 'NDBCLUSTER' || $engine == 'NDB') {
@ -3164,7 +3130,7 @@ class PMA_Util
*/
public static function duplicateFirstNewline($string)
{
$first_occurence = $GLOBALS['PMA_String']->strpos($string, "\r\n");
$first_occurence = /*overload*/mb_strpos($string, "\r\n");
if ($first_occurence === 0) {
$string = "\n" . $string;
}
@ -3275,16 +3241,13 @@ class PMA_Util
}
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
/* Backward compatibility in 3.5.x */
if ($pmaString->strpos($string, '@FIELDS@') !== false) {
if (/*overload*/mb_strpos($string, '@FIELDS@') !== false) {
$string = strtr($string, array('@FIELDS@' => '@COLUMNS@'));
}
/* Fetch columns list if required */
if ($pmaString->strpos($string, '@COLUMNS@') !== false) {
if (/*overload*/mb_strpos($string, '@COLUMNS@') !== false) {
$columns_list = $GLOBALS['dbi']->getColumns(
$GLOBALS['db'], $GLOBALS['table']
);
@ -3544,7 +3507,7 @@ class PMA_Util
if ($upper_case) {
for ($i = 0, $nb = count($gis_data_types); $i < $nb; $i++) {
$gis_data_types[$i]
= $GLOBALS['PMA_String']->strtoupper($gis_data_types[$i]);
= /*overload*/mb_strtoupper($gis_data_types[$i]);
}
}
return $gis_data_types;
@ -3601,7 +3564,7 @@ class PMA_Util
$funcs['IsEmpty'] = array('params' => 1, 'type' => 'int');
$funcs['IsSimple'] = array('params' => 1, 'type' => 'int');
$geom_type = trim($GLOBALS['PMA_String']->strtolower($geom_type));
$geom_type = trim(/*overload*/mb_strtolower($geom_type));
if ($display && $geom_type != 'geometry' && $geom_type != 'multipoint') {
$funcs[] = array('display' => '--------');
}
@ -3908,21 +3871,18 @@ class PMA_Util
*/
public static function getServerType()
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$server_type = 'MySQL';
if (PMA_DRIZZLE) {
$server_type = 'Drizzle';
return $server_type;
}
if ($pmaString->stripos(PMA_MYSQL_STR_VERSION, 'mariadb') !== false) {
if (/*overload*/mb_stripos(PMA_MYSQL_STR_VERSION, 'mariadb') !== false) {
$server_type = 'MariaDB';
return $server_type;
}
if ($pmaString->stripos(PMA_MYSQL_VERSION_COMMENT, 'percona') !== false) {
if (/*overload*/mb_stripos(PMA_MYSQL_VERSION_COMMENT, 'percona') !== false) {
$server_type = 'Percona Server';
return $server_type;
}
@ -3986,15 +3946,12 @@ class PMA_Util
$in_string = false;
$buffer = '';
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
for ($i=0, $length = $pmaString->strlen($values_string);
for ($i=0, $length = /*overload*/mb_strlen($values_string);
$i < $length;
$i++
) {
$curr = $values_string[$i];
$next = ($i == $pmaString->strlen($values_string)-1)
$next = ($i == /*overload*/mb_strlen($values_string)-1)
? ''
: $values_string[$i+1];
@ -4018,7 +3975,7 @@ class PMA_Util
}
if ($pmaString->strlen($buffer) > 0) {
if (/*overload*/mb_strlen($buffer) > 0) {
// The leftovers in the buffer are the last value (if any)
$values[] = $buffer;
}
@ -4044,11 +4001,8 @@ class PMA_Util
public static function fillTooltip(
&$tooltip_truename, &$tooltip_aliasname, $table
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strstr($table['Comment'], '; InnoDB free') === false) {
if (!$pmaString->strstr($table['Comment'], 'InnoDB free') === false) {
if (/*overload*/mb_strstr($table['Comment'], '; InnoDB free') === false) {
if (!/*overload*/mb_strstr($table['Comment'], 'InnoDB free') === false) {
// here we have just InnoDB generated part
$table['Comment'] = '';
}
@ -4193,15 +4147,12 @@ class PMA_Util
*/
public static function handleContext(array $context)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strlen($GLOBALS['cfg']['ProxyUrl'])) {
if (/*overload*/mb_strlen($GLOBALS['cfg']['ProxyUrl'])) {
$context['http'] = array(
'proxy' => $GLOBALS['cfg']['ProxyUrl'],
'request_fulluri' => true
);
if ($pmaString->strlen($GLOBALS['cfg']['ProxyUser'])) {
if (/*overload*/mb_strlen($GLOBALS['cfg']['ProxyUser'])) {
$auth = base64_encode(
$GLOBALS['cfg']['ProxyUser'] . ':' . $GLOBALS['cfg']['ProxyPass']
);
@ -4222,12 +4173,9 @@ class PMA_Util
*/
public static function configureCurl(resource $curl_handle)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strlen($GLOBALS['cfg']['ProxyUrl'])) {
if (/*overload*/mb_strlen($GLOBALS['cfg']['ProxyUrl'])) {
curl_setopt($curl_handle, CURLOPT_PROXY, $GLOBALS['cfg']['ProxyUrl']);
if ($pmaString->strlen($GLOBALS['cfg']['ProxyUser'])) {
if (/*overload*/mb_strlen($GLOBALS['cfg']['ProxyUser'])) {
curl_setopt(
$curl_handle,
CURLOPT_PROXYUSERPWD,
@ -4300,13 +4248,10 @@ class PMA_Util
}
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$data = json_decode($response);
if (is_object($data)
&& $pmaString->strlen($data->version)
&& $pmaString->strlen($data->date)
&& /*overload*/mb_strlen($data->version)
&& /*overload*/mb_strlen($data->date)
&& $save
) {
if (! isset($_SESSION) && ! defined('TESTSUITE')) {
@ -4400,19 +4345,16 @@ class PMA_Util
*/
public static function addMicroseconds($value)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if (empty($value) || $value == 'CURRENT_TIMESTAMP') {
return $value;
}
if ($pmaString->strpos($value, '.') === false) {
if (/*overload*/mb_strpos($value, '.') === false) {
return $value . '.000000';
}
$value .= '000000';
return $pmaString->substr($value, 0, $pmaString->strpos($value, '.') + 7);
return /*overload*/mb_substr($value, 0, /*overload*/mb_strpos($value, '.') + 7);
}
/**
@ -4425,19 +4367,13 @@ class PMA_Util
*/
public static function getCompressionMimeType($file)
{
//Can't use PMA_StringMB here, so force use of PMA_StringNative.
include_once 'libraries/StringNative.class.php';
$pmaString = new PMA_StringNative();
$test = fread($file, 4);
$len = $pmaString->strlen($test);
$len = strlen($test);
fclose($file);
if ($len >= 2 && $test[0] == $pmaString->chr(31)
&& $test[1] == $pmaString->chr(139)
) {
if ($len >= 2 && $test[0] == chr(31) && $test[1] == chr(139)) {
return 'application/gzip';
}
if ($len >= 3 && $pmaString->substr($test, 0, 3) == 'BZh') {
if ($len >= 3 && substr($test, 0, 3) == 'BZh') {
return 'application/bzip2';
}
if ($len >= 4 && $test == "PK\003\004") {

View File

@ -218,11 +218,9 @@ function PMA_Bookmark_save($bkm_fields, $all_users = false)
$cfgBookmark = PMA_Bookmark_getParams();
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if (!(isset($bkm_fields['bkm_sql_query']) && isset($bkm_fields['bkm_label'])
&& $pmaString->strlen($bkm_fields['bkm_sql_query']) > 0
&& $pmaString->strlen($bkm_fields['bkm_label']) > 0)
&& /*overload*/mb_strlen($bkm_fields['bkm_sql_query']) > 0
&& /*overload*/mb_strlen($bkm_fields['bkm_label']) > 0)
) {
return false;
}

View File

@ -180,9 +180,8 @@ function PMA_getHtmlForRelationalFieldSelection($db, $table, $field, $foreignDat
*/
function PMA_getDescriptionAndTitle($description)
{
$pmaString = $GLOBALS['PMA_String'];
$limitChars = $GLOBALS['cfg']['LimitChars'];
if ($pmaString->strlen($description) <= $limitChars) {
if (/*overload*/mb_strlen($description) <= $limitChars) {
$description = htmlspecialchars(
$description
);
@ -192,7 +191,7 @@ function PMA_getDescriptionAndTitle($description)
$description
);
$description = htmlspecialchars(
$pmaString->substr(
/*overload*/mb_substr(
$description, 0, $limitChars
)
. '...'

View File

@ -132,8 +132,6 @@ function PMA_buildHtmlForDb(
}
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
foreach ($replication_types as $type) {
if ($replication_info[$type]['status']) {
$out .= '<td class="tool" style="text-align: center;">';
@ -142,14 +140,14 @@ function PMA_buildHtmlForDb(
$current["SCHEMA_NAME"],
$replication_info[$type]['Ignore_DB']
);
if ($pmaString->strlen($key) > 0) {
if (/*overload*/mb_strlen($key) > 0) {
$out .= PMA_Util::getIcon('s_cancel.png', __('Not replicated'));
} else {
$key = array_search(
$current["SCHEMA_NAME"], $replication_info[$type]['Do_DB']
);
if ($pmaString->strlen($key) > 0
if (/*overload*/mb_strlen($key) > 0
|| ($replication_info[$type]['Do_DB'][0] == ""
&& count($replication_info[$type]['Do_DB']) == 1)
) {

View File

@ -746,9 +746,6 @@ function PMA_getHTMLforAddCentralColumn($total_rows, $pos, $db)
*/
function PMA_getHTMLforCentralColumnsTableRow($row, $odd_row, $row_num, $db)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$tableHtml = '<tr data-rownum="' . $row_num . '" id="f_' . $row_num . '" '
. 'class="' . ($odd_row ? 'odd' : 'even') . '">'
. PMA_URL_getHiddenInputs(
@ -779,7 +776,7 @@ function PMA_getHTMLforCentralColumnsTableRow($row, $odd_row, $row_num, $db)
'<td name = "col_type" class="nowrap"><span>'
. htmlspecialchars($row['col_type']) . '</span>'
. PMA_getHtmlForColumnType(
$row_num, 1, 0, $pmaString->strtoupper($row['col_type']), array()
$row_num, 1, 0, /*overload*/mb_strtoupper($row['col_type']), array()
)
. '</td>';
$tableHtml .=
@ -829,7 +826,7 @@ function PMA_getHTMLforCentralColumnsTableRow($row, $odd_row, $row_num, $db)
? htmlspecialchars($row['col_default']) : 'None')
. '</span>'
. PMA_getHtmlForColumnDefault(
$row_num, 5, 0, $pmaString->strtoupper($row['col_type']), '', $meta
$row_num, 5, 0, /*overload*/mb_strtoupper($row['col_type']), '', $meta
)
. '</td>';
$tableHtml .= '</tr>';

View File

@ -69,22 +69,19 @@ function PMA_analyseShowGrant()
$re0 = '(^|(\\\\\\\\)+|[^\\\\])'; // non-escaped wildcards
$re1 = '(^|[^\\\\])(\\\)+'; // escaped wildcards
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
while ($row = $GLOBALS['dbi']->fetchRow($rs_usr)) {
// extract db from GRANT ... ON *.* or GRANT ... ON db.*
$db_name_offset = $pmaString->strpos($row[0], ' ON ') + 4;
$show_grants_dbname = $pmaString->substr(
$db_name_offset = /*overload*/mb_strpos($row[0], ' ON ') + 4;
$show_grants_dbname = /*overload*/mb_substr(
$row[0], $db_name_offset,
$pmaString->strpos($row[0], '.', $db_name_offset) - $db_name_offset
/*overload*/mb_strpos($row[0], '.', $db_name_offset) - $db_name_offset
);
$show_grants_dbname = PMA_Util::unQuote($show_grants_dbname, '`');
$show_grants_str = $pmaString->substr(
$show_grants_str = /*overload*/mb_substr(
$row[0],
6,
($pmaString->strpos($row[0], ' ON ') - 6)
(/*overload*/mb_strpos($row[0], ' ON ') - 6)
);
if ($show_grants_str == 'RELOAD') {
$GLOBALS['is_reload_priv'] = true;
@ -97,7 +94,7 @@ function PMA_analyseShowGrant()
if ($show_grants_str == 'ALL'
|| $show_grants_str == 'ALL PRIVILEGES'
|| $show_grants_str == 'CREATE'
|| $pmaString->strpos($show_grants_str, 'CREATE,') !== false
|| strpos($show_grants_str, 'CREATE,') !== false
) {
if ($show_grants_dbname == '*') {
// a global CREATE privilege
@ -127,7 +124,7 @@ function PMA_analyseShowGrant()
'/' . $re1 . '(%|_)/', '\\1\\3', $dbname_to_test
)
)
&& $pmaString->substr($GLOBALS['dbi']->getError(), 1, 4) != 1044)
&& /*overload*/mb_substr($GLOBALS['dbi']->getError(), 1, 4) != 1044)
) {
/**
* Do not handle the underscore wildcard

View File

@ -167,10 +167,10 @@ if (! empty($_PATH_INFO) && ! empty($PMA_PHP_SELF)) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$path_info_pos = $pmaString->strrpos($PMA_PHP_SELF, $_PATH_INFO);
$pathLength = $path_info_pos + $pmaString->strlen($_PATH_INFO);
if ($pathLength === $pmaString->strlen($PMA_PHP_SELF)) {
$PMA_PHP_SELF = $pmaString->substr($PMA_PHP_SELF, 0, $path_info_pos);
$path_info_pos = /*overload*/mb_strrpos($PMA_PHP_SELF, $_PATH_INFO);
$pathLength = $path_info_pos + /*overload*/mb_strlen($_PATH_INFO);
if ($pathLength === /*overload*/mb_strlen($PMA_PHP_SELF)) {
$PMA_PHP_SELF = /*overload*/mb_substr($PMA_PHP_SELF, 0, $path_info_pos);
}
}
$PMA_PHP_SELF = htmlspecialchars($PMA_PHP_SELF);
@ -745,11 +745,11 @@ if (! defined('PMA_MINIMUM_COMMON')) {
&& ! is_numeric($_REQUEST['server'])
) {
foreach ($cfg['Servers'] as $i => $server) {
$verboseLower = $PMA_String->strtolower($server['verbose']);
$verboseLower = /*overload*/mb_strtolower($server['verbose']);
if ($server['host'] == $_REQUEST['server']
|| $server['verbose'] == $_REQUEST['server']
|| $verboseLower == $PMA_String->strtolower($_REQUEST['server'])
|| md5($verboseLower) == $PMA_String->strtolower($_REQUEST['server'])
|| $verboseLower == /*overload*/mb_strtolower($_REQUEST['server'])
|| md5($verboseLower) == /*overload*/mb_strtolower($_REQUEST['server'])
) {
$_REQUEST['server'] = $i;
break;
@ -839,7 +839,7 @@ if (! defined('PMA_MINIMUM_COMMON')) {
// to allow HTTP or http
$cfg['Server']['auth_type']
= $PMA_String->strtolower($cfg['Server']['auth_type']);
= /*overload*/mb_strtolower($cfg['Server']['auth_type']);
/**
* the required auth type plugin
@ -928,7 +928,7 @@ if (! defined('PMA_MINIMUM_COMMON')) {
}
// if using TCP socket is not needed
if ($PMA_String->strtolower($cfg['Server']['connect_type']) == 'tcp') {
if (/*overload*/mb_strtolower($cfg['Server']['connect_type']) == 'tcp') {
$cfg['Server']['socket'] = '';
}

View File

@ -2096,6 +2096,13 @@ $cfg['Import']['sql_compatibility'] = 'NONE';
*/
$cfg['Import']['sql_no_auto_value_on_zero'] = true;
/**
*
*
* @global string $cfg['Import']['sql_read_as_multibytes']
*/
$cfg['Import']['sql_read_as_multibytes'] = false;
/**
*
*

View File

@ -75,11 +75,8 @@ class Form
*/
public function getOptionType($option_name)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$key = ltrim(
$pmaString->substr($option_name, $pmaString->strrpos($option_name, '/')),
/*overload*/mb_substr($option_name, /*overload*/mb_strrpos($option_name, '/')),
'/'
);
return isset($this->_fieldsTypes[$key])
@ -175,16 +172,13 @@ class Form
$this->fields = array();
array_walk($form, array($this, '_readFormPathsCallback'), '');
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// $this->fields is an array of the form: [0..n] => 'field path'
// change numeric indexes to contain field names (last part of the path)
$paths = $this->fields;
$this->fields = array();
foreach ($paths as $path) {
$key = ltrim(
$pmaString->substr($path, $pmaString->strrpos($path, '/')),
/*overload*/mb_substr($path, /*overload*/mb_strrpos($path, '/')),
'/'
);
$this->fields[$key] = $path;
@ -199,12 +193,9 @@ class Form
*/
protected function readTypes()
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$cf = $this->_configFile;
foreach ($this->fields as $name => $path) {
if ($pmaString->strpos($name, ':group:') === 0) {
if (/*overload*/mb_strpos($name, ':group:') === 0) {
$this->_fieldsTypes[$name] = 'group';
continue;
}

View File

@ -358,9 +358,6 @@ class FormDisplay
$opts['errors'] = $this->_errors[$work_path];
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
switch ($form->getOptionType($field)) {
case 'string':
$type = 'text';
@ -386,8 +383,8 @@ class FormDisplay
break;
case 'group':
// :group:end is changed to :group:end:{unique id} in Form class
if ($pmaString->substr($field, 7, 4) != 'end:') {
PMA_displayGroupHeader($pmaString->substr($field, 7));
if (/*overload*/mb_substr($field, 7, 4) != 'end:') {
PMA_displayGroupHeader(/*overload*/mb_substr($field, 7));
} else {
PMA_displayGroupFooter();
}
@ -399,7 +396,7 @@ class FormDisplay
// detect password fields
if ($type === 'text'
&& $pmaString->substr($translated_path, -9) === '-password'
&& /*overload*/mb_substr($translated_path, -9) === '-password'
) {
$type = 'password';
}
@ -704,7 +701,7 @@ class FormDisplay
*/
public function getDocLink($path)
{
$test = $GLOBALS['PMA_String']->substr($path, 0, 6);
$test = /*overload*/mb_substr($path, 0, 6);
if ($test == 'Import' || $test == 'Export') {
return '';
}

View File

@ -254,7 +254,7 @@ function PMA_displayInput($path, $name, $type, $value, $description = '',
foreach ($opts['values'] as $opt_value_key => $opt_value) {
// set names for boolean values
if (is_bool($opt_value)) {
$opt_value = $GLOBALS['PMA_String']->strtolower(
$opt_value = /*overload*/mb_strtolower(
$opt_value ? __('Yes') : __('No')
);
}

View File

@ -338,7 +338,7 @@ class ServerConfigChecks
} else {
$blowfishWarnings = array();
// check length
if ($GLOBALS['PMA_String']->strlen($blowfishSecret) < 8) {
if (/*overload*/mb_strlen($blowfishSecret) < 8) {
// too short key
$blowfishWarnings[] = __('Key is too short, it should have at least 8 characters.');
}

View File

@ -47,9 +47,6 @@ class PMA_Validator
return $validators;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// not in setup script: load additional validators for user
// preferences we need original config values not overwritten
// by user preferences, creating a new PMA_Config instance is a
@ -62,9 +59,9 @@ class PMA_Validator
continue;
}
for ($i = 1, $nb = count($uv); $i < $nb; $i++) {
if ($pmaString->substr($uv[$i], 0, 6) == 'value:') {
if (/*overload*/mb_substr($uv[$i], 0, 6) == 'value:') {
$uv[$i] = PMA_arrayRead(
$pmaString->substr($uv[$i], 6),
/*overload*/mb_substr($uv[$i], 6),
$GLOBALS['PMA_Config']->base_settings
);
}
@ -116,7 +113,7 @@ class PMA_Validator
$key_map = array();
foreach ($values as $k => $v) {
$k2 = $isPostSource ? str_replace('-', '/', $k) : $k;
$k2 = $GLOBALS['PMA_String']->strpos($k2, '/')
$k2 = /*overload*/mb_strpos($k2, '/')
? $cf->getCanonicalPath($k2)
: $k2;
$key_map[$k2] = $k;

View File

@ -142,7 +142,8 @@ $forms['Import']['Import_defaults'] = array(
'Import/skip_queries');
$forms['Import']['Sql'] = array(
'Import/sql_compatibility',
'Import/sql_no_auto_value_on_zero');
'Import/sql_no_auto_value_on_zero',
'Import/sql_read_as_multibytes');
$forms['Import']['Csv'] = array(
':group:' . __('CSV'),
'Import/csv_replace',

View File

@ -11,6 +11,13 @@ if (! defined('PHPMYADMIN')) {
exit;
}
/**
* String handling (security)
*/
require_once 'libraries/string.lib.php';
require_once 'libraries/String.class.php';
$PMA_String = new PMA_String();
/**
* checks given $var and returns it if valid, or $default of not valid
* given $var is also checked for type being 'similar' as $default
@ -107,11 +114,8 @@ function PMA_isValid(&$var, $type = 'length', $compare = null)
return in_array($var, $type);
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// allow some aliases of var types
$type = $pmaString->strtolower($type);
$type = strtolower($type);
switch ($type) {
case 'identic' :
$type = 'identical';
@ -159,7 +163,7 @@ function PMA_isValid(&$var, $type = 'length', $compare = null)
if ($type === 'length' || $type === 'scalar') {
$is_scalar = is_scalar($var);
if ($is_scalar && $type === 'length') {
return (bool) $pmaString->strlen($var);
return (bool) /*overload*/mb_strlen($var);
}
return $is_scalar;
}
@ -370,20 +374,18 @@ function PMA_getRealSize($size = 0)
'b' => 1,
);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
foreach ($scan as $unit => $factor) {
$sizeLength = $pmaString->strlen($size);
$unitLength = $pmaString->strlen($unit);
$sizeLength = strlen($size);
$unitLength = strlen($unit);
if ($sizeLength > $unitLength
&& $pmaString->strtolower(
$pmaString->substr(
&& strtolower(
substr(
$size,
$sizeLength - $unitLength
)
) == $unit
) {
return $pmaString->substr(
return substr(
$size,
0,
$sizeLength - $unitLength
@ -513,15 +515,13 @@ function PMA_checkPageValidity(&$page, $whitelist)
return true;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$_page = $pmaString->substr($page, 0, $pmaString->strpos($page . '?', '?'));
$_page = /*overload*/mb_substr($page, 0, /*overload*/mb_strpos($page . '?', '?'));
if (in_array($_page, $whitelist)) {
return true;
}
$_page = urldecode($page);
$_page = $pmaString->substr($_page, 0, $pmaString->strpos($_page . '?', '?'));
$_page = /*overload*/mb_substr($_page, 0, /*overload*/mb_strpos($_page . '?', '?'));
if (in_array($_page, $whitelist)) {
return true;
}
@ -572,9 +572,7 @@ function PMA_getenv($var_name)
*/
function PMA_sendHeaderLocation($uri, $use_refresh = false)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if (PMA_IS_IIS && $pmaString->strlen($uri) > 600) {
if (PMA_IS_IIS && /*overload*/mb_strlen($uri) > 600) {
include_once './libraries/js_escape.lib.php';
PMA_Response::getInstance()->disable();
@ -603,7 +601,7 @@ function PMA_sendHeaderLocation($uri, $use_refresh = false)
}
if (SID) {
if ($pmaString->strpos($uri, '?') === false) {
if (/*overload*/mb_strpos($uri, '?') === false) {
header('Location: ' . $uri . '?' . SID);
} else {
$separator = PMA_URL_getArgSeparator();
@ -697,7 +695,7 @@ function PMA_downloadHeader($filename, $mimetype, $length = 0, $no_cache = true)
header('Content-Type: ' . $mimetype);
// inform the server that compression has been done,
// to avoid a double compression (for example with Apache + mod_deflate)
if ($GLOBALS['PMA_String']->strpos($mimetype, 'gzip') !== false) {
if (strpos($mimetype, 'gzip') !== false) {
header('Content-Encoding: gzip');
}
header('Content-Transfer-Encoding: binary');
@ -875,7 +873,7 @@ function PMA_isAllowedDomain($url)
/* Following are doubtful ones. */
'www.primebase.com','pbxt.blogspot.com'
);
if (in_array($GLOBALS['PMA_String']->strtolower($domain), $domainWhiteList)) {
if (in_array(/*overload*/mb_strtolower($domain), $domainWhiteList)) {
return true;
}

View File

@ -38,7 +38,7 @@ $pmaString = $GLOBALS['PMA_String'];
* headers
*/
if (! isset($is_db) || ! $is_db) {
if ($pmaString->strlen($db)) {
if (/*overload*/mb_strlen($db)) {
$is_db = $GLOBALS['dbi']->selectDb($db);
// This "Command out of sync" 2014 error may happen, for example
// after calling a MySQL procedure; at this point we can't select
@ -54,7 +54,7 @@ if (! isset($is_db) || ! $is_db) {
$uri = $cfg['PmaAbsoluteUri'] . 'index.php'
. PMA_URL_getCommon(array(), 'text')
. (isset($message) ? '&message=' . urlencode($message) : '') . '&reload=1';
if (!$pmaString->strlen($db) || ! $is_db) {
if (!/*overload*/mb_strlen($db) || ! $is_db) {
$response = PMA_Response::getInstance();
if ($response->isAjax()) {
$response->isSuccess(false);

View File

@ -706,22 +706,19 @@ function PMA_getDatabaseTables(
$html .= '<img src="' . $_SESSION['PMA_Theme']->getImgPath()
. 'pmd/Field_small';
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strstr($tab_column[$t_n]["TYPE"][$j], 'char')
|| $pmaString->strstr($tab_column[$t_n]["TYPE"][$j], 'text')
if (/*overload*/mb_strstr($tab_column[$t_n]["TYPE"][$j], 'char')
|| /*overload*/mb_strstr($tab_column[$t_n]["TYPE"][$j], 'text')
) {
$html .= '_char';
} elseif ($pmaString->strstr($tab_column[$t_n]["TYPE"][$j], 'int')
|| $pmaString->strstr($tab_column[$t_n]["TYPE"][$j], 'float')
|| $pmaString->strstr($tab_column[$t_n]["TYPE"][$j], 'double')
|| $pmaString->strstr($tab_column[$t_n]["TYPE"][$j], 'decimal')
} elseif (/*overload*/mb_strstr($tab_column[$t_n]["TYPE"][$j], 'int')
|| /*overload*/mb_strstr($tab_column[$t_n]["TYPE"][$j], 'float')
|| /*overload*/mb_strstr($tab_column[$t_n]["TYPE"][$j], 'double')
|| /*overload*/mb_strstr($tab_column[$t_n]["TYPE"][$j], 'decimal')
) {
$html .= '_int';
} elseif ($pmaString->strstr($tab_column[$t_n]["TYPE"][$j], 'date')
|| $pmaString->strstr($tab_column[$t_n]["TYPE"][$j], 'time')
|| $pmaString->strstr($tab_column[$t_n]["TYPE"][$j], 'year')
} elseif (/*overload*/mb_strstr($tab_column[$t_n]["TYPE"][$j], 'date')
|| /*overload*/mb_strstr($tab_column[$t_n]["TYPE"][$j], 'time')
|| /*overload*/mb_strstr($tab_column[$t_n]["TYPE"][$j], 'year')
) {
$html .= '_date';
}

View File

@ -13,7 +13,7 @@ if (! defined('PHPMYADMIN')) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if (empty($is_db)) {
if ($pmaString->strlen($db)) {
if (/*overload*/mb_strlen($db)) {
$is_db = @$GLOBALS['dbi']->selectDb($db);
} else {
$is_db = false;
@ -56,7 +56,7 @@ if (empty($is_table)
) {
// Not a valid table name -> back to the db_sql.php
if ($pmaString->strlen($table)) {
if (/*overload*/mb_strlen($table)) {
$is_table = isset(PMA_Table::$cache[$db][$table]);
if (! $is_table) {
@ -74,7 +74,7 @@ if (empty($is_table)
if (! $is_table) {
if (!defined('IS_TRANSFORMATION_WRAPPER')) {
if ($pmaString->strlen($table)) {
if (/*overload*/mb_strlen($table)) {
// SHOW TABLES doesn't show temporary tables, so try select
// (as it can happen just in case temporary table, it should be
// fast):

View File

@ -38,9 +38,7 @@ function PMA_getHtmlForChangePassword($username, $hostname)
$html .= PMA_URL_getHiddenInputs();
/** @var PMA_String $pmaStr */
$pmaStr = $GLOBALS['PMA_String'];
if ($pmaStr->strpos($GLOBALS['PMA_PHP_SELF'], 'server_privileges') !== false) {
if (strpos($GLOBALS['PMA_PHP_SELF'], 'server_privileges') !== false) {
$html .= '<input type="hidden" name="username" '
. 'value="' . htmlspecialchars($username) . '" />'
. '<input type="hidden" name="hostname" '

View File

@ -74,7 +74,7 @@ function PMA_getHtmlForExportSelectOptions($tmp_select = '')
$is_selected = '';
}
} elseif (!empty($tmp_select)) {
if ($GLOBALS['PMA_String']->strpos(
if (/*overload*/mb_strpos(
' ' . $tmp_select,
'|' . $current_db . '|'
)) {
@ -713,7 +713,7 @@ function PMA_getHtmlForExportOptions(
$html .= PMA_getHtmlForExportOptionsMethod();
$html .= PMA_getHtmlForExportOptionsSelection($export_type, $multi_values);
$tableLength = $GLOBALS['PMA_String']->strlen($table);
$tableLength = /*overload*/mb_strlen($table);
if ($tableLength && empty($num_tables) && ! PMA_Table::isMerge($db, $table)) {
$html .= PMA_getHtmlForExportOptionsRows($db, $table, $unlim_num_rows);
}
@ -776,9 +776,6 @@ function PMA_getHtmlForAliasModalDialog($db = '', $table = '')
);
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$html = '<div id="alias_modal" class="hide" title="' . $title . '">';
$db_html = '<label class="col-2">' . __('Select database') . ': '
. '</label><select id="db_alias_select">';
@ -792,7 +789,7 @@ function PMA_getHtmlForAliasModalDialog($db = '', $table = '')
}
$db = htmlspecialchars($db);
$name_attr = 'aliases[' . $db . '][alias]';
$id_attr = $pmaString->substr(md5($name_attr), 0, 12);
$id_attr = substr(md5($name_attr), 0, 12);
$class = 'hide';
if ($first_db) {
$first_db = false;
@ -816,7 +813,7 @@ function PMA_getHtmlForAliasModalDialog($db = '', $table = '')
}
$table = htmlspecialchars($table);
$name_attr = 'aliases[' . $db . '][tables][' . $table . '][alias]';
$id_attr = $pmaString->substr(md5($name_attr), 0, 12);
$id_attr = substr(md5($name_attr), 0, 12);
$class = 'hide';
if ($first_tbl) {
$first_tbl = false;
@ -844,7 +841,7 @@ function PMA_getHtmlForAliasModalDialog($db = '', $table = '')
$column = htmlspecialchars($column);
$name_attr = 'aliases[' . $db . '][tables][' . $table
. '][columns][' . $column . ']';
$id_attr = $pmaString->substr(md5($name_attr), 0, 12);
$id_attr = substr(md5($name_attr), 0, 12);
$col_html .= '<tr class="' . $class . '">';
$col_html .= '<th><label for="' . $id_attr . '">' . $column
. '</label></th>';

View File

@ -26,7 +26,7 @@ function PMA_printGitRevision()
$GLOBALS['PMA_Config']->checkGitRevision();
// if using a remote commit fast-forwarded, link to GitHub
$commit_hash = $GLOBALS['PMA_String']->substr(
$commit_hash = substr(
$GLOBALS['PMA_Config']->get('PMA_VERSION_GIT_COMMITHASH'),
0,
7

View File

@ -293,12 +293,10 @@ function PMA_getLineNumber($filenames, $cumulative_number)
*/
function PMA_translateStacktrace($stack)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
foreach ($stack as &$level) {
foreach ($level["context"] as &$line) {
if ($pmaString->strlen($line) > 80) {
$line = $pmaString->substr($line, 0, 75) . "//...";
if (/*overload*/mb_strlen($line) > 80) {
$line = /*overload*/mb_substr($line, 0, 75) . "//...";
}
}
if (preg_match("<js/get_scripts.js.php\?(.*)>", $level["url"], $matches)) {

View File

@ -20,7 +20,7 @@ function PMA_shutdownDuringExport()
{
$a = error_get_last();
if ($a != null
&& $GLOBALS['PMA_String']->strpos($a['message'], "execution time")
&& /*overload*/mb_strpos($a['message'], "execution time")
) {
//write in partially downloaded file for future reference of user
print_r($a);
@ -86,16 +86,13 @@ function PMA_exportOutputHandler($line)
);
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// If we have to buffer data, we will perform everything at once at the end
if ($GLOBALS['buffer_needed']) {
$dump_buffer .= $line;
if ($GLOBALS['onfly_compression']) {
$dump_buffer_len += $pmaString->strlen($line);
$dump_buffer_len += /*overload*/mb_strlen($line);
if ($dump_buffer_len > $GLOBALS['memory_limit']) {
if ($GLOBALS['output_charset_conversion']) {
@ -114,7 +111,7 @@ function PMA_exportOutputHandler($line)
}
if ($GLOBALS['save_on_server']) {
$write_result = @fwrite($GLOBALS['file_handle'], $dump_buffer);
if ($write_result != $pmaString->strlen($dump_buffer)) {
if ($write_result != /*overload*/mb_strlen($dump_buffer)) {
$GLOBALS['message'] = PMA_Message::error(
__('Insufficient space to save the file %s.')
);
@ -143,10 +140,10 @@ function PMA_exportOutputHandler($line)
$line
);
}
if ($GLOBALS['save_on_server'] && $pmaString->strlen($line) > 0) {
if ($GLOBALS['save_on_server'] && /*overload*/mb_strlen($line) > 0) {
$write_result = @fwrite($GLOBALS['file_handle'], $line);
if (! $write_result
|| $write_result != $pmaString->strlen($line)
|| $write_result != /*overload*/mb_strlen($line)
) {
$GLOBALS['message'] = PMA_Message::error(
__('Insufficient space to save the file %s.')
@ -206,12 +203,9 @@ function PMA_getHtmlForDisplayedExportFooter($back_button)
*/
function PMA_getMemoryLimitForExport()
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$memory_limit = trim(@ini_get('memory_limit'));
$memory_limit_num = (int)$pmaString->substr($memory_limit, 0, -1);
$lowerLastChar = $pmaString->strtolower($pmaString->substr($memory_limit, -1));
$memory_limit_num = (int)substr($memory_limit, 0, -1);
$lowerLastChar = strtolower(substr($memory_limit, -1));
// 2 MB as default
if (empty($memory_limit) || '-1' == $memory_limit) {
$memory_limit = 2 * 1024 * 1024;
@ -282,19 +276,17 @@ function PMA_getExportFilenameAndMimetype(
// part of the filename) to avoid a remote code execution vulnerability
$filename = PMA_sanitizeFilename($filename, $replaceDots = true);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Grab basic dump extension and mime type
// Check if the user already added extension;
// get the substring where the extension would be if it was included
$extension_start_pos = $pmaString->strlen($filename) - $pmaString->strlen(
$extension_start_pos = /*overload*/mb_strlen($filename) - /*overload*/mb_strlen(
$export_plugin->getProperties()->getExtension()
) - 1;
$user_extension = $pmaString->substr(
$filename, $extension_start_pos, $pmaString->strlen($filename)
$user_extension = /*overload*/mb_substr(
$filename, $extension_start_pos, /*overload*/mb_strlen($filename)
);
$required_extension = "." . $export_plugin->getProperties()->getExtension();
if ($pmaString->strtolower($user_extension) != $required_extension) {
if (/*overload*/mb_strtolower($user_extension) != $required_extension) {
$filename .= $required_extension;
}
$mime_type = $export_plugin->getProperties()->getMimeType();
@ -370,13 +362,10 @@ function PMA_openExportFile($filename, $quick_export)
*/
function PMA_closeExportFile($file_handle, $dump_buffer, $save_filename)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$write_result = @fwrite($file_handle, $dump_buffer);
fclose($file_handle);
if ($pmaString->strlen($dump_buffer) > 0
&& (! $write_result || ($write_result != $pmaString->strlen($dump_buffer)))
if (/*overload*/mb_strlen($dump_buffer) > 0
&& (! $write_result || ($write_result != /*overload*/mb_strlen($dump_buffer)))
) {
$message = new PMA_Message(
__('Insufficient space to save the file %s.'),
@ -408,7 +397,7 @@ function PMA_compressExport($dump_buffer, $compression, $filename)
$zipfile = new ZipFile();
$zipfile->addFile(
$dump_buffer,
$GLOBALS['PMA_String']->substr($filename, 0, -4)
substr($filename, 0, -4)
);
$dump_buffer = $zipfile->file();
} elseif ($compression == 'gzip' && PMA_gzencodeNeeded()) {
@ -492,9 +481,6 @@ function PMA_exportServer(
$export_type, $do_relation, $do_comments, $do_mime, $do_dates,
$aliases
) {
/** @var PMA_String $pmaStr */
$pmaStr = $GLOBALS['PMA_String'];
if (! empty($db_select)) {
$tmp_select = implode($db_select, '|');
$tmp_select = '|' . $tmp_select . '|';
@ -502,7 +488,7 @@ function PMA_exportServer(
// Walk over databases
foreach ($GLOBALS['pma']->databases as $current_db) {
if (isset($tmp_select)
&& $pmaStr->strpos(' ' . $tmp_select, '|' . $current_db . '|')
&& /*overload*/mb_strpos(' ' . $tmp_select, '|' . $current_db . '|')
) {
$tables = $GLOBALS['dbi']->getTables($current_db);
PMA_exportDatabase(
@ -547,7 +533,7 @@ function PMA_exportDatabase(
}
if (method_exists($export_plugin, 'exportRoutines')
&& $GLOBALS['PMA_String']->strpos(
&& /*overload*/mb_strpos(
$GLOBALS['sql_structure_or_data'],
'structure'
) !== false

View File

@ -24,7 +24,7 @@ function PMA_getDirContent($dir, $expression = '')
}
$result = array();
if ($GLOBALS['PMA_String']->substr($dir, -1) != '/') {
if (substr($dir, -1) != '/') {
$dir .= '/';
}
while ($file = @readdir($handle)) {

View File

@ -32,16 +32,13 @@ class PMA_GIS_Factory
{
include_once './libraries/gis/GIS_Geometry.class.php';
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$file = './libraries/gis/GIS_'
. ucfirst($pmaString->strtolower($type)) . '.class.php';
. ucfirst(/*overload*/mb_strtolower($type)) . '.class.php';
if (! file_exists($file)) {
return false;
}
if (include_once $file) {
switch($pmaString->strtoupper($type)) {
switch(/*overload*/mb_strtoupper($type)) {
case 'MULTIPOLYGON' :
return PMA_GIS_Multipolygon::singleton();
case 'POLYGON' :

View File

@ -177,13 +177,10 @@ abstract class PMA_GIS_Geometry
$srid = 0;
$wkt = '';
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if (preg_match("/^'" . $geom_types . "\(.*\)',[0-9]*$/i", $value)) {
$last_comma = $pmaString->strripos($value, ",");
$srid = trim($pmaString->substr($value, $last_comma + 1));
$wkt = trim($pmaString->substr($value, 1, $last_comma - 2));
$last_comma = /*overload*/mb_strripos($value, ",");
$srid = trim(/*overload*/mb_substr($value, $last_comma + 1));
$wkt = trim(/*overload*/mb_substr($value, 1, $last_comma - 2));
} elseif (preg_match("/^" . $geom_types . "\(.*\)$/i", $value)) {
$wkt = $value;
}
@ -255,13 +252,10 @@ abstract class PMA_GIS_Geometry
$ol_array .= $this->getPolygonForOpenLayers($rings, $srid) . ', ';
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$ol_array = $pmaString->substr(
$ol_array = /*overload*/mb_substr(
$ol_array,
0,
$pmaString->strlen($ol_array) - 2
/*overload*/mb_strlen($ol_array) - 2
);
$ol_array .= ')';
@ -308,13 +302,10 @@ abstract class PMA_GIS_Geometry
$ol_array .= ', ';
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$ol_array = $pmaString->substr(
$ol_array = /*overload*/mb_substr(
$ol_array,
0,
$pmaString->strlen($ol_array) - 2
/*overload*/mb_strlen($ol_array) - 2
);
$ol_array .= ')';
@ -356,13 +347,10 @@ abstract class PMA_GIS_Geometry
$ol_array .= $this->getPointForOpenLayers($point, $srid) . ', ';
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$ol_array = $pmaString->substr(
$ol_array = /*overload*/mb_substr(
$ol_array,
0,
$pmaString->strlen($ol_array) - 2
/*overload*/mb_strlen($ol_array) - 2
);
$ol_array .= ')';

View File

@ -57,22 +57,19 @@ class PMA_GIS_Geometrycollection extends PMA_GIS_Geometry
{
$min_max = array();
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'GEOMETRYCOLLECTION(' and trailing ')'
$goem_col = $pmaString->substr(
$goem_col = /*overload*/mb_substr(
$spatial,
19,
$pmaString->strlen($spatial) - 20
/*overload*/mb_strlen($spatial) - 20
);
// Split the geometry collection object to get its constituents.
$sub_parts = $this->_explodeGeomCol($goem_col);
foreach ($sub_parts as $sub_part) {
$type_pos = $pmaString->stripos($sub_part, '(');
$type = $pmaString->substr($sub_part, 0, $type_pos);
$type_pos = /*overload*/mb_stripos($sub_part, '(');
$type = /*overload*/mb_substr($sub_part, 0, $type_pos);
$gis_obj = PMA_GIS_Factory::factory($type);
if (! $gis_obj) {
@ -118,21 +115,18 @@ class PMA_GIS_Geometrycollection extends PMA_GIS_Geometry
*/
public function prepareRowAsPng($spatial, $label, $color, $scale_data, $image)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'GEOMETRYCOLLECTION(' and trailing ')'
$goem_col = $pmaString->substr(
$goem_col = /*overload*/mb_substr(
$spatial,
19,
$pmaString->strlen($spatial) - 20
/*overload*/mb_strlen($spatial) - 20
);
// Split the geometry collection object to get its constituents.
$sub_parts = $this->_explodeGeomCol($goem_col);
foreach ($sub_parts as $sub_part) {
$type_pos = $pmaString->stripos($sub_part, '(');
$type = $pmaString->substr($sub_part, 0, $type_pos);
$type_pos = /*overload*/mb_stripos($sub_part, '(');
$type = /*overload*/mb_substr($sub_part, 0, $type_pos);
$gis_obj = PMA_GIS_Factory::factory($type);
if (! $gis_obj) {
@ -159,21 +153,18 @@ class PMA_GIS_Geometrycollection extends PMA_GIS_Geometry
*/
public function prepareRowAsPdf($spatial, $label, $color, $scale_data, $pdf)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'GEOMETRYCOLLECTION(' and trailing ')'
$goem_col = $pmaString->substr(
$goem_col = /*overload*/mb_substr(
$spatial,
19,
$pmaString->strlen($spatial) - 20
/*overload*/mb_strlen($spatial) - 20
);
// Split the geometry collection object to get its constituents.
$sub_parts = $this->_explodeGeomCol($goem_col);
foreach ($sub_parts as $sub_part) {
$type_pos = $pmaString->stripos($sub_part, '(');
$type = $pmaString->substr($sub_part, 0, $type_pos);
$type_pos = /*overload*/mb_stripos($sub_part, '(');
$type = /*overload*/mb_substr($sub_part, 0, $type_pos);
$gis_obj = PMA_GIS_Factory::factory($type);
if (! $gis_obj) {
@ -201,21 +192,18 @@ class PMA_GIS_Geometrycollection extends PMA_GIS_Geometry
{
$row = '';
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'GEOMETRYCOLLECTION(' and trailing ')'
$goem_col = $pmaString->substr(
$goem_col = /*overload*/mb_substr(
$spatial,
19,
$pmaString->strlen($spatial) - 20
/*overload*/mb_strlen($spatial) - 20
);
// Split the geometry collection object to get its constituents.
$sub_parts = $this->_explodeGeomCol($goem_col);
foreach ($sub_parts as $sub_part) {
$type_pos = $pmaString->stripos($sub_part, '(');
$type = $pmaString->substr($sub_part, 0, $type_pos);
$type_pos = /*overload*/mb_stripos($sub_part, '(');
$type = /*overload*/mb_substr($sub_part, 0, $type_pos);
$gis_obj = PMA_GIS_Factory::factory($type);
if (! $gis_obj) {
@ -245,21 +233,18 @@ class PMA_GIS_Geometrycollection extends PMA_GIS_Geometry
{
$row = '';
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'GEOMETRYCOLLECTION(' and trailing ')'
$goem_col = $pmaString->substr(
$goem_col = /*overload*/mb_substr(
$spatial,
19,
$pmaString->strlen($spatial) - 20
/*overload*/mb_strlen($spatial) - 20
);
// Split the geometry collection object to get its constituents.
$sub_parts = $this->_explodeGeomCol($goem_col);
foreach ($sub_parts as $sub_part) {
$type_pos = $pmaString->stripos($sub_part, '(');
$type = $pmaString->substr($sub_part, 0, $type_pos);
$type_pos = /*overload*/mb_stripos($sub_part, '(');
$type = /*overload*/mb_substr($sub_part, 0, $type_pos);
$gis_obj = PMA_GIS_Factory::factory($type);
if (! $gis_obj) {
@ -292,7 +277,7 @@ class PMA_GIS_Geometrycollection extends PMA_GIS_Geometry
} elseif ($char == ')') {
$br_count--;
if ($br_count == 0) {
$sub_parts[] = $GLOBALS['PMA_String']->substr(
$sub_parts[] = /*overload*/mb_substr(
$goem_col,
$start,
($count + 1 - $start)
@ -331,10 +316,7 @@ class PMA_GIS_Geometrycollection extends PMA_GIS_Geometry
}
}
if (isset($gis_data[0]['gis_type'])) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$wkt = $pmaString->substr($wkt, 0, $pmaString->strlen($wkt) - 1);
$wkt = /*overload*/mb_substr($wkt, 0, /*overload*/mb_strlen($wkt) - 1);
}
$wkt .= ')';
return $wkt;
@ -355,19 +337,16 @@ class PMA_GIS_Geometrycollection extends PMA_GIS_Geometry
$params['srid'] = $data['srid'];
$wkt = $data['wkt'];
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'GEOMETRYCOLLECTION(' and trailing ')'
$goem_col = $pmaString->substr($wkt, 19, ($pmaString->strlen($wkt) - 20));
$goem_col = /*overload*/mb_substr($wkt, 19, (/*overload*/mb_strlen($wkt) - 20));
// Split the geometry collection object to get its constituents.
$sub_parts = $this->_explodeGeomCol($goem_col);
$params['GEOMETRYCOLLECTION']['geom_count'] = count($sub_parts);
$i = 0;
foreach ($sub_parts as $sub_part) {
$type_pos = $pmaString->stripos($sub_part, '(');
$type = $pmaString->substr($sub_part, 0, $type_pos);
$type_pos = /*overload*/mb_stripos($sub_part, '(');
$type = /*overload*/mb_substr($sub_part, 0, $type_pos);
$gis_obj = PMA_GIS_Factory::factory($type);
if (! $gis_obj) {
continue;

View File

@ -55,16 +55,13 @@ class PMA_GIS_Linestring extends PMA_GIS_Geometry
*/
public function scaleRow($spatial)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'LINESTRING(' and trailing ')'
$linesrting = $pmaString->substr(
$linestring = /*overload*/mb_substr(
$spatial,
11,
$pmaString->strlen($spatial) - 12
/*overload*/mb_strlen($spatial) - 12
);
return $this->setMinMax($linesrting, array());
return $this->setMinMax($linestring, array());
}
/**
@ -82,24 +79,18 @@ class PMA_GIS_Linestring extends PMA_GIS_Geometry
public function prepareRowAsPng($spatial, $label, $line_color,
$scale_data, $image
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// allocate colors
$black = imagecolorallocate($image, 0, 0, 0);
$red = hexdec($pmaString->substr($line_color, 1, 2));
$green = hexdec($pmaString->substr($line_color, 3, 2));
$blue = hexdec($pmaString->substr($line_color, 4, 2));
$red = hexdec(/*overload*/mb_substr($line_color, 1, 2));
$green = hexdec(/*overload*/mb_substr($line_color, 3, 2));
$blue = hexdec(/*overload*/mb_substr($line_color, 4, 2));
$color = imagecolorallocate($image, $red, $green, $blue);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'LINESTRING(' and trailing ')'
$linesrting = $pmaString->substr(
$linesrting = /*overload*/mb_substr(
$spatial,
11,
$pmaString->strlen($spatial) - 12
/*overload*/mb_strlen($spatial) - 12
);
$points_arr = $this->extractPoints($linesrting, $scale_data);
@ -139,20 +130,17 @@ class PMA_GIS_Linestring extends PMA_GIS_Geometry
*/
public function prepareRowAsPdf($spatial, $label, $line_color, $scale_data, $pdf)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// allocate colors
$red = hexdec($pmaString->substr($line_color, 1, 2));
$green = hexdec($pmaString->substr($line_color, 3, 2));
$blue = hexdec($pmaString->substr($line_color, 4, 2));
$red = hexdec(/*overload*/mb_substr($line_color, 1, 2));
$green = hexdec(/*overload*/mb_substr($line_color, 3, 2));
$blue = hexdec(/*overload*/mb_substr($line_color, 4, 2));
$line = array('width' => 1.5, 'color' => array($red, $green, $blue));
// Trim to remove leading 'LINESTRING(' and trailing ')'
$linesrting = $pmaString->substr(
$linesrting = /*overload*/mb_substr(
$spatial,
11,
$pmaString->strlen($spatial) - 12
/*overload*/mb_strlen($spatial) - 12
);
$points_arr = $this->extractPoints($linesrting, $scale_data);
@ -199,14 +187,11 @@ class PMA_GIS_Linestring extends PMA_GIS_Geometry
'stroke-width'=> 2,
);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'LINESTRING(' and trailing ')'
$linesrting = $pmaString->substr(
$linesrting = /*overload*/mb_substr(
$spatial,
11,
$pmaString->strlen($spatial) - 12
/*overload*/mb_strlen($spatial) - 12
);
$points_arr = $this->extractPoints($linesrting, $scale_data);
@ -249,14 +234,11 @@ class PMA_GIS_Linestring extends PMA_GIS_Geometry
}
$result = $this->getBoundsForOl($srid, $scale_data);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'LINESTRING(' and trailing ')'
$linesrting = $pmaString->substr(
$linesrting = /*overload*/mb_substr(
$spatial,
11,
$pmaString->strlen($spatial) - 12
/*overload*/mb_strlen($spatial) - 12
);
$points_arr = $this->extractPoints($linesrting, null);
@ -292,10 +274,8 @@ class PMA_GIS_Linestring extends PMA_GIS_Geometry
&& trim($gis_data[$index]['LINESTRING'][$i]['y']) != '')
? $gis_data[$index]['LINESTRING'][$i]['y'] : $empty) . ',';
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$wkt = $pmaString->substr($wkt, 0, $pmaString->strlen($wkt) - 1);
$wkt = /*overload*/mb_substr($wkt, 0, /*overload*/mb_strlen($wkt) - 1);
$wkt .= ')';
return $wkt;
}
@ -322,11 +302,8 @@ class PMA_GIS_Linestring extends PMA_GIS_Geometry
$wkt = $value;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'LINESTRING(' and trailing ')'
$linestring = $pmaString->substr($wkt, 11, ($pmaString->strlen($wkt) - 12));
$linestring = /*overload*/mb_substr($wkt, 11, (/*overload*/mb_strlen($wkt) - 12));
$points_arr = $this->extractPoints($linestring, null);
$no_of_points = count($points_arr);

View File

@ -57,14 +57,11 @@ class PMA_GIS_Multilinestring extends PMA_GIS_Geometry
{
$min_max = array();
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'MULTILINESTRING((' and trailing '))'
$multilinestirng = $pmaString->substr(
$multilinestirng = /*overload*/mb_substr(
$spatial,
17,
$pmaString->strlen($spatial) - 19
/*overload*/mb_strlen($spatial) - 19
);
// Separate each linestring
$linestirngs = explode("),(", $multilinestirng);
@ -91,21 +88,18 @@ class PMA_GIS_Multilinestring extends PMA_GIS_Geometry
public function prepareRowAsPng($spatial, $label, $line_color,
$scale_data, $image
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// allocate colors
$black = imagecolorallocate($image, 0, 0, 0);
$red = hexdec($pmaString->substr($line_color, 1, 2));
$green = hexdec($pmaString->substr($line_color, 3, 2));
$blue = hexdec($pmaString->substr($line_color, 4, 2));
$red = hexdec(/*overload*/mb_substr($line_color, 1, 2));
$green = hexdec(/*overload*/mb_substr($line_color, 3, 2));
$blue = hexdec(/*overload*/mb_substr($line_color, 4, 2));
$color = imagecolorallocate($image, $red, $green, $blue);
// Trim to remove leading 'MULTILINESTRING((' and trailing '))'
$multilinestirng = $pmaString->substr(
$multilinestirng = /*overload*/mb_substr(
$spatial,
17,
$pmaString->strlen($spatial) - 19
/*overload*/mb_strlen($spatial) - 19
);
// Separate each linestring
$linestirngs = explode("),(", $multilinestirng);
@ -152,19 +146,16 @@ class PMA_GIS_Multilinestring extends PMA_GIS_Geometry
*/
public function prepareRowAsPdf($spatial, $label, $line_color, $scale_data, $pdf)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// allocate colors
$red = hexdec($pmaString->substr($line_color, 1, 2));
$green = hexdec($pmaString->substr($line_color, 3, 2));
$blue = hexdec($pmaString->substr($line_color, 4, 2));
$red = hexdec(/*overload*/mb_substr($line_color, 1, 2));
$green = hexdec(/*overload*/mb_substr($line_color, 3, 2));
$blue = hexdec(/*overload*/mb_substr($line_color, 4, 2));
$line = array('width' => 1.5, 'color' => array($red, $green, $blue));
// Trim to remove leading 'MULTILINESTRING((' and trailing '))'
$multilinestirng = $pmaString->substr(
$multilinestirng = /*overload*/mb_substr(
$spatial,
17, $pmaString->strlen($spatial) - 19
17, /*overload*/mb_strlen($spatial) - 19
);
// Separate each linestring
$linestirngs = explode("),(", $multilinestirng);
@ -216,14 +207,11 @@ class PMA_GIS_Multilinestring extends PMA_GIS_Geometry
'stroke-width'=> 2,
);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'MULTILINESTRING((' and trailing '))'
$multilinestirng = $pmaString->substr(
$multilinestirng = /*overload*/mb_substr(
$spatial,
17,
$pmaString->strlen($spatial) - 19
/*overload*/mb_strlen($spatial) - 19
);
// Separate each linestring
$linestirngs = explode("),(", $multilinestirng);
@ -273,14 +261,11 @@ class PMA_GIS_Multilinestring extends PMA_GIS_Geometry
}
$row = $this->getBoundsForOl($srid, $scale_data);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'MULTILINESTRING((' and trailing '))'
$multilinestirng = $pmaString->substr(
$multilinestirng = /*overload*/mb_substr(
$spatial,
17,
$pmaString->strlen($spatial) - 19
/*overload*/mb_strlen($spatial) - 19
);
// Separate each linestring
$linestirngs = explode("),(", $multilinestirng);
@ -312,9 +297,6 @@ class PMA_GIS_Multilinestring extends PMA_GIS_Geometry
$no_of_lines = 1;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$wkt = 'MULTILINESTRING(';
for ($i = 0; $i < $no_of_lines; $i++) {
$no_of_points = isset($data_row[$i]['no_of_points'])
@ -331,10 +313,10 @@ class PMA_GIS_Multilinestring extends PMA_GIS_Geometry
&& trim($data_row[$i][$j]['y']) != '')
? $data_row[$i][$j]['y'] : $empty) . ',';
}
$wkt = $pmaString->substr($wkt, 0, $pmaString->strlen($wkt) - 1);
$wkt = /*overload*/mb_substr($wkt, 0, /*overload*/mb_strlen($wkt) - 1);
$wkt .= '),';
}
$wkt = $pmaString->substr($wkt, 0, $pmaString->strlen($wkt) - 1);
$wkt = /*overload*/mb_substr($wkt, 0, /*overload*/mb_strlen($wkt) - 1);
$wkt .= ')';
return $wkt;
}
@ -349,19 +331,16 @@ class PMA_GIS_Multilinestring extends PMA_GIS_Geometry
*/
public function getShape($row_data)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$wkt = 'MULTILINESTRING(';
for ($i = 0; $i < $row_data['numparts']; $i++) {
$wkt .= '(';
foreach ($row_data['parts'][$i]['points'] as $point) {
$wkt .= $point['x'] . ' ' . $point['y'] . ',';
}
$wkt = $pmaString->substr($wkt, 0, $pmaString->strlen($wkt) - 1);
$wkt = /*overload*/mb_substr($wkt, 0, /*overload*/mb_strlen($wkt) - 1);
$wkt .= '),';
}
$wkt = $pmaString->substr($wkt, 0, $pmaString->strlen($wkt) - 1);
$wkt = /*overload*/mb_substr($wkt, 0, /*overload*/mb_strlen($wkt) - 1);
$wkt .= ')';
return $wkt;
}
@ -388,14 +367,11 @@ class PMA_GIS_Multilinestring extends PMA_GIS_Geometry
$wkt = $value;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'MULTILINESTRING((' and trailing '))'
$multilinestirng = $pmaString->substr(
$multilinestirng = /*overload*/mb_substr(
$wkt,
17,
$pmaString->strlen($wkt) - 19
/*overload*/mb_strlen($wkt) - 19
);
// Seperate each linestring
$linestirngs = explode("),(", $multilinestirng);

View File

@ -55,11 +55,8 @@ class PMA_GIS_Multipoint extends PMA_GIS_Geometry
*/
public function scaleRow($spatial)
{
/** @var PMA_String $pmaStr */
$pmaStr = $GLOBALS['PMA_String'];
// Trim to remove leading 'MULTIPOINT(' and trailing ')'
$multipoint = $pmaStr->substr($spatial, 11, $pmaStr->strlen($spatial) - 12);
$multipoint = /*overload*/mb_substr($spatial, 11, /*overload*/mb_strlen($spatial) - 12);
return $this->setMinMax($multipoint, array());
}
@ -78,21 +75,18 @@ class PMA_GIS_Multipoint extends PMA_GIS_Geometry
public function prepareRowAsPng($spatial, $label, $point_color,
$scale_data, $image
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// allocate colors
$black = imagecolorallocate($image, 0, 0, 0);
$red = hexdec($pmaString->substr($point_color, 1, 2));
$green = hexdec($pmaString->substr($point_color, 3, 2));
$blue = hexdec($pmaString->substr($point_color, 4, 2));
$red = hexdec(/*overload*/mb_substr($point_color, 1, 2));
$green = hexdec(/*overload*/mb_substr($point_color, 3, 2));
$blue = hexdec(/*overload*/mb_substr($point_color, 4, 2));
$color = imagecolorallocate($image, $red, $green, $blue);
// Trim to remove leading 'MULTIPOINT(' and trailing ')'
$multipoint = $pmaString->substr(
$multipoint = /*overload*/mb_substr(
$spatial,
11,
$pmaString->strlen($spatial) - 12
/*overload*/mb_strlen($spatial) - 12
);
$points_arr = $this->extractPoints($multipoint, $scale_data);
@ -128,20 +122,17 @@ class PMA_GIS_Multipoint extends PMA_GIS_Geometry
public function prepareRowAsPdf($spatial, $label, $point_color,
$scale_data, $pdf
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// allocate colors
$red = hexdec($pmaString->substr($point_color, 1, 2));
$green = hexdec($pmaString->substr($point_color, 3, 2));
$blue = hexdec($pmaString->substr($point_color, 4, 2));
$red = hexdec(/*overload*/mb_substr($point_color, 1, 2));
$green = hexdec(/*overload*/mb_substr($point_color, 3, 2));
$blue = hexdec(/*overload*/mb_substr($point_color, 4, 2));
$line = array('width' => 1.25, 'color' => array($red, $green, $blue));
// Trim to remove leading 'MULTIPOINT(' and trailing ')'
$multipoint = $pmaString->substr(
$multipoint = /*overload*/mb_substr(
$spatial,
11,
$pmaString->strlen($spatial) - 12
/*overload*/mb_strlen($spatial) - 12
);
$points_arr = $this->extractPoints($multipoint, $scale_data);
@ -183,14 +174,11 @@ class PMA_GIS_Multipoint extends PMA_GIS_Geometry
'stroke-width'=> 2,
);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'MULTIPOINT(' and trailing ')'
$multipoint = $pmaString->substr(
$multipoint = /*overload*/mb_substr(
$spatial,
11,
$pmaString->strlen($spatial) - 12
/*overload*/mb_strlen($spatial) - 12
);
$points_arr = $this->extractPoints($multipoint, $scale_data);
@ -240,14 +228,11 @@ class PMA_GIS_Multipoint extends PMA_GIS_Geometry
}
$result = $this->getBoundsForOl($srid, $scale_data);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'MULTIPOINT(' and trailing ')'
$multipoint = $pmaString->substr(
$multipoint = /*overload*/mb_substr(
$spatial,
11,
$pmaString->strlen($spatial) - 12
/*overload*/mb_strlen($spatial) - 12
);
$points_arr = $this->extractPoints($multipoint, null);
@ -285,10 +270,7 @@ class PMA_GIS_Multipoint extends PMA_GIS_Geometry
? $gis_data[$index]['MULTIPOINT'][$i]['y'] : '') . ',';
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$wkt = $pmaString->substr($wkt, 0, $pmaString->strlen($wkt) - 1);
$wkt = /*overload*/mb_substr($wkt, 0, /*overload*/mb_strlen($wkt) - 1);
$wkt .= ')';
return $wkt;
}
@ -309,10 +291,7 @@ class PMA_GIS_Multipoint extends PMA_GIS_Geometry
. $row_data['points'][$i]['y'] . ',';
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$wkt = $pmaString->substr($wkt, 0, $pmaString->strlen($wkt) - 1);
$wkt = /*overload*/mb_substr($wkt, 0, /*overload*/mb_strlen($wkt) - 1);
$wkt .= ')';
return $wkt;
}
@ -339,11 +318,8 @@ class PMA_GIS_Multipoint extends PMA_GIS_Geometry
$wkt = $value;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'MULTIPOINT(' and trailing ')'
$points = $pmaString->substr($wkt, 11, $pmaString->strlen($wkt) - 12);
$points = /*overload*/mb_substr($wkt, 11, /*overload*/mb_strlen($wkt) - 12);
$points_arr = $this->extractPoints($points, null);
$no_of_points = count($points_arr);
@ -375,12 +351,9 @@ class PMA_GIS_Multipoint extends PMA_GIS_Geometry
}
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$olArrayLength = $pmaString->strlen($ol_array);
if ($pmaString->substr($ol_array, $olArrayLength - 2) == ', ') {
$ol_array = $pmaString->substr($ol_array, 0, $olArrayLength - 2);
$olArrayLength = /*overload*/mb_strlen($ol_array);
if (/*overload*/mb_substr($ol_array, $olArrayLength - 2) == ', ') {
$ol_array = /*overload*/mb_substr($ol_array, 0, $olArrayLength - 2);
}
$ol_array .= ')';

View File

@ -55,23 +55,20 @@ class PMA_GIS_Multipolygon extends PMA_GIS_Geometry
*/
public function scaleRow($spatial)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$min_max = array();
// Trim to remove leading 'MULTIPOLYGON(((' and trailing ')))'
$multipolygon = $pmaString->substr(
$multipolygon = /*overload*/mb_substr(
$spatial,
15,
$pmaString->strlen($spatial) - 18
/*overload*/mb_strlen($spatial) - 18
);
// Separate each polygon
$polygons = explode(")),((", $multipolygon);
foreach ($polygons as $polygon) {
// If the polygon doesn't have an inner ring, use polygon itself
if ($pmaString->strpos($polygon, "),(") === false) {
if (/*overload*/mb_strpos($polygon, "),(") === false) {
$ring = $polygon;
} else {
// Separate outer ring and use it to determine min-max
@ -99,21 +96,18 @@ class PMA_GIS_Multipolygon extends PMA_GIS_Geometry
public function prepareRowAsPng($spatial, $label, $fill_color,
$scale_data, $image
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// allocate colors
$black = imagecolorallocate($image, 0, 0, 0);
$red = hexdec($pmaString->substr($fill_color, 1, 2));
$green = hexdec($pmaString->substr($fill_color, 3, 2));
$blue = hexdec($pmaString->substr($fill_color, 4, 2));
$red = hexdec(/*overload*/mb_substr($fill_color, 1, 2));
$green = hexdec(/*overload*/mb_substr($fill_color, 3, 2));
$blue = hexdec(/*overload*/mb_substr($fill_color, 4, 2));
$color = imagecolorallocate($image, $red, $green, $blue);
// Trim to remove leading 'MULTIPOLYGON(((' and trailing ')))'
$multipolygon = $pmaString->substr(
$multipolygon = /*overload*/mb_substr(
$spatial,
15,
$pmaString->strlen($spatial) - 18
/*overload*/mb_strlen($spatial) - 18
);
// Separate each polygon
$polygons = explode(")),((", $multipolygon);
@ -121,7 +115,7 @@ class PMA_GIS_Multipolygon extends PMA_GIS_Geometry
$first_poly = true;
foreach ($polygons as $polygon) {
// If the polygon doesn't have an inner polygon
if ($pmaString->strpos($polygon, "),(") === false) {
if (/*overload*/mb_strpos($polygon, "),(") === false) {
$points_arr = $this->extractPoints($polygon, $scale_data, true);
} else {
// Separate outer and inner polygons
@ -169,20 +163,17 @@ class PMA_GIS_Multipolygon extends PMA_GIS_Geometry
*/
public function prepareRowAsPdf($spatial, $label, $fill_color, $scale_data, $pdf)
{
/** @var PMA_String $pmaStr */
$pmaStr = $GLOBALS['PMA_String'];
// allocate colors
$red = hexdec($pmaStr->substr($fill_color, 1, 2));
$green = hexdec($pmaStr->substr($fill_color, 3, 2));
$blue = hexdec($pmaStr->substr($fill_color, 4, 2));
$red = hexdec(/*overload*/mb_substr($fill_color, 1, 2));
$green = hexdec(/*overload*/mb_substr($fill_color, 3, 2));
$blue = hexdec(/*overload*/mb_substr($fill_color, 4, 2));
$color = array($red, $green, $blue);
// Trim to remove leading 'MULTIPOLYGON(((' and trailing ')))'
$multipolygon = $pmaStr->substr(
$multipolygon = /*overload*/mb_substr(
$spatial,
15,
$pmaStr->strlen($spatial) - 18
/*overload*/mb_strlen($spatial) - 18
);
// Separate each polygon
$polygons = explode(")),((", $multipolygon);
@ -190,7 +181,7 @@ class PMA_GIS_Multipolygon extends PMA_GIS_Geometry
$first_poly = true;
foreach ($polygons as $polygon) {
// If the polygon doesn't have an inner polygon
if ($pmaStr->strpos($polygon, "),(") === false) {
if (/*overload*/mb_strpos($polygon, "),(") === false) {
$points_arr = $this->extractPoints($polygon, $scale_data, true);
} else {
// Separate outer and inner polygons
@ -250,14 +241,11 @@ class PMA_GIS_Multipolygon extends PMA_GIS_Geometry
$row = '';
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'MULTIPOLYGON(((' and trailing ')))'
$multipolygon = $pmaString->substr(
$multipolygon = /*overload*/mb_substr(
$spatial,
15,
$pmaString->strlen($spatial) - 18
/*overload*/mb_strlen($spatial) - 18
);
// Separate each polygon
$polygons = explode(")),((", $multipolygon);
@ -266,7 +254,7 @@ class PMA_GIS_Multipolygon extends PMA_GIS_Geometry
$row .= '<path d="';
// If the polygon doesnt have an inner polygon
if ($pmaString->strpos($polygon, "),(") === false) {
if (/*overload*/mb_strpos($polygon, "),(") === false) {
$row .= $this->_drawPath($polygon, $scale_data);
} else {
// Seperate outer and inner polygons
@ -319,14 +307,11 @@ class PMA_GIS_Multipolygon extends PMA_GIS_Geometry
}
$row = $this->getBoundsForOl($srid, $scale_data);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'MULTIPOLYGON(((' and trailing ')))'
$multipolygon = $pmaString->substr(
$multipolygon = /*overload*/mb_substr(
$spatial,
15,
$pmaString->strlen($spatial) - 18
/*overload*/mb_strlen($spatial) - 18
);
// Separate each polygon
$polygons = explode(")),((", $multipolygon);
@ -381,9 +366,6 @@ class PMA_GIS_Multipolygon extends PMA_GIS_Geometry
$no_of_polygons = 1;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$wkt = 'MULTIPOLYGON(';
for ($k = 0; $k < $no_of_polygons; $k++) {
$no_of_lines = isset($data_row[$k]['no_of_lines'])
@ -407,13 +389,13 @@ class PMA_GIS_Multipolygon extends PMA_GIS_Geometry
&& trim($data_row[$k][$i][$j]['y']) != '')
? $data_row[$k][$i][$j]['y'] : $empty) . ',';
}
$wkt = $pmaString->substr($wkt, 0, $pmaString->strlen($wkt) - 1);
$wkt = /*overload*/mb_substr($wkt, 0, /*overload*/mb_strlen($wkt) - 1);
$wkt .= '),';
}
$wkt = $pmaString->substr($wkt, 0, $pmaString->strlen($wkt) - 1);
$wkt = /*overload*/mb_substr($wkt, 0, /*overload*/mb_strlen($wkt) - 1);
$wkt .= '),';
}
$wkt = $pmaString->substr($wkt, 0, $pmaString->strlen($wkt) - 1);
$wkt = /*overload*/mb_substr($wkt, 0, /*overload*/mb_strlen($wkt) - 1);
$wkt .= ')';
return $wkt;
}
@ -468,9 +450,6 @@ class PMA_GIS_Multipolygon extends PMA_GIS_Geometry
}
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$wkt = 'MULTIPOLYGON(';
// for each polygon
foreach ($row_data['parts'] as $ring) {
@ -484,7 +463,7 @@ class PMA_GIS_Multipolygon extends PMA_GIS_Geometry
foreach ($ring['points'] as $point) {
$wkt .= $point['x'] . ' ' . $point['y'] . ',';
}
$wkt = $pmaString->substr($wkt, 0, $pmaString->strlen($wkt) - 1);
$wkt = /*overload*/mb_substr($wkt, 0, /*overload*/mb_strlen($wkt) - 1);
$wkt .= ')'; // end of outer ring
// inner rings if any
@ -494,14 +473,14 @@ class PMA_GIS_Multipolygon extends PMA_GIS_Geometry
foreach ($row_data['parts'][$j]['points'] as $innerPoint) {
$wkt .= $innerPoint['x'] . ' ' . $innerPoint['y'] . ',';
}
$wkt = $pmaString->substr($wkt, 0, $pmaString->strlen($wkt) - 1);
$wkt = /*overload*/mb_substr($wkt, 0, /*overload*/mb_strlen($wkt) - 1);
$wkt .= ')'; // end of inner ring
}
}
$wkt .= '),'; // end of polygon
}
$wkt = $pmaString->substr($wkt, 0, $pmaString->strlen($wkt) - 1);
$wkt = /*overload*/mb_substr($wkt, 0, /*overload*/mb_strlen($wkt) - 1);
$wkt .= ')'; // end of multipolygon
return $wkt;
@ -529,11 +508,8 @@ class PMA_GIS_Multipolygon extends PMA_GIS_Geometry
$wkt = $value;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'MULTIPOLYGON(((' and trailing ')))'
$multipolygon = $pmaString->substr($wkt, 15, $pmaString->strlen($wkt) - 18);
$multipolygon = /*overload*/mb_substr($wkt, 15, /*overload*/mb_strlen($wkt) - 18);
// Separate each polygon
$polygons = explode(")),((", $multipolygon);
@ -543,7 +519,7 @@ class PMA_GIS_Multipolygon extends PMA_GIS_Geometry
$k = 0;
foreach ($polygons as $polygon) {
// If the polygon doesnt have an inner polygon
if ($pmaString->strpos($polygon, "),(") === false) {
if (/*overload*/mb_strpos($polygon, "),(") === false) {
$param_row[$k]['no_of_lines'] = 1;
$points_arr = $this->extractPoints($polygon, null);
$no_of_points = count($points_arr);

View File

@ -55,11 +55,8 @@ class PMA_GIS_Point extends PMA_GIS_Geometry
*/
public function scaleRow($spatial)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'POINT(' and trailing ')'
$point = $pmaString->substr($spatial, 6, $pmaString->strlen($spatial) - 7);
$point = /*overload*/mb_substr($spatial, 6, /*overload*/mb_strlen($spatial) - 7);
return $this->setMinMax($point, array());
}
@ -78,18 +75,15 @@ class PMA_GIS_Point extends PMA_GIS_Geometry
public function prepareRowAsPng($spatial, $label, $point_color,
$scale_data, $image
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// allocate colors
$black = imagecolorallocate($image, 0, 0, 0);
$red = hexdec($pmaString->substr($point_color, 1, 2));
$green = hexdec($pmaString->substr($point_color, 3, 2));
$blue = hexdec($pmaString->substr($point_color, 4, 2));
$red = hexdec(/*overload*/mb_substr($point_color, 1, 2));
$green = hexdec(/*overload*/mb_substr($point_color, 3, 2));
$blue = hexdec(/*overload*/mb_substr($point_color, 4, 2));
$color = imagecolorallocate($image, $red, $green, $blue);
// Trim to remove leading 'POINT(' and trailing ')'
$point = $pmaString->substr($spatial, 6, $pmaString->strlen($spatial) - 7);
$point = /*overload*/mb_substr($spatial, 6, /*overload*/mb_strlen($spatial) - 7);
$points_arr = $this->extractPoints($point, $scale_data);
// draw a small circle to mark the point
@ -123,17 +117,14 @@ class PMA_GIS_Point extends PMA_GIS_Geometry
public function prepareRowAsPdf($spatial, $label, $point_color,
$scale_data, $pdf
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// allocate colors
$red = hexdec($pmaString->substr($point_color, 1, 2));
$green = hexdec($pmaString->substr($point_color, 3, 2));
$blue = hexdec($pmaString->substr($point_color, 4, 2));
$red = hexdec(/*overload*/mb_substr($point_color, 1, 2));
$green = hexdec(/*overload*/mb_substr($point_color, 3, 2));
$blue = hexdec(/*overload*/mb_substr($point_color, 4, 2));
$line = array('width' => 1.25, 'color' => array($red, $green, $blue));
// Trim to remove leading 'POINT(' and trailing ')'
$point = $pmaString->substr($spatial, 6, $pmaString->strlen($spatial) - 7);
$point = /*overload*/mb_substr($spatial, 6, /*overload*/mb_strlen($spatial) - 7);
$points_arr = $this->extractPoints($point, $scale_data);
// draw a small circle to mark the point
@ -173,11 +164,8 @@ class PMA_GIS_Point extends PMA_GIS_Geometry
'stroke-width'=> 2,
);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'POINT(' and trailing ')'
$point = $pmaString->substr($spatial, 6, $pmaString->strlen($spatial) - 7);
$point = /*overload*/mb_substr($spatial, 6, /*overload*/mb_strlen($spatial) - 7);
$points_arr = $this->extractPoints($point, $scale_data);
$row = '';
@ -223,11 +211,8 @@ class PMA_GIS_Point extends PMA_GIS_Geometry
}
$result = $this->getBoundsForOl($srid, $scale_data);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'POINT(' and trailing ')'
$point = $pmaString->substr($spatial, 6, $pmaString->strlen($spatial) - 7);
$point = /*overload*/mb_substr($spatial, 6, /*overload*/mb_strlen($spatial) - 7);
$points_arr = $this->extractPoints($point, null);
if ($points_arr[0][0] != '' && $points_arr[0][1] != '') {
@ -296,11 +281,8 @@ class PMA_GIS_Point extends PMA_GIS_Geometry
$wkt = $value;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'POINT(' and trailing ')'
$point = $pmaString->substr($wkt, 6, $pmaString->strlen($wkt) - 7);
$point = /*overload*/mb_substr($wkt, 6, /*overload*/mb_strlen($wkt) - 7);
$points_arr = $this->extractPoints($point, null);
$params[$index]['POINT']['x'] = $points_arr[0][0];

View File

@ -55,18 +55,15 @@ class PMA_GIS_Polygon extends PMA_GIS_Geometry
*/
public function scaleRow($spatial)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'POLYGON((' and trailing '))'
$polygon = $pmaString->substr(
$polygon = /*overload*/mb_substr(
$spatial,
9,
$pmaString->strlen($spatial) - 11
/*overload*/mb_strlen($spatial) - 11
);
// If the polygon doesn't have an inner ring, use polygon itself
if ($pmaString->strpos($polygon, "),(") === false) {
if (/*overload*/mb_strpos($polygon, "),(") === false) {
$ring = $polygon;
} else {
// Separate outer ring and use it to determine min-max
@ -91,25 +88,22 @@ class PMA_GIS_Polygon extends PMA_GIS_Geometry
public function prepareRowAsPng($spatial, $label, $fill_color,
$scale_data, $image
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// allocate colors
$black = imagecolorallocate($image, 0, 0, 0);
$red = hexdec($pmaString->substr($fill_color, 1, 2));
$green = hexdec($pmaString->substr($fill_color, 3, 2));
$blue = hexdec($pmaString->substr($fill_color, 4, 2));
$red = hexdec(/*overload*/mb_substr($fill_color, 1, 2));
$green = hexdec(/*overload*/mb_substr($fill_color, 3, 2));
$blue = hexdec(/*overload*/mb_substr($fill_color, 4, 2));
$color = imagecolorallocate($image, $red, $green, $blue);
// Trim to remove leading 'POLYGON((' and trailing '))'
$polygon = $pmaString->substr(
$polygon = /*overload*/mb_substr(
$spatial,
9,
$pmaString->strlen($spatial) - 11
/*overload*/mb_strlen($spatial) - 11
);
// If the polygon doesn't have an inner polygon
if ($pmaString->strpos($polygon, "),(") === false) {
if (/*overload*/mb_strpos($polygon, "),(") === false) {
$points_arr = $this->extractPoints($polygon, $scale_data, true);
} else {
// Separate outer and inner polygons
@ -151,20 +145,17 @@ class PMA_GIS_Polygon extends PMA_GIS_Geometry
*/
public function prepareRowAsPdf($spatial, $label, $fill_color, $scale_data, $pdf)
{
/** @var PMA_String $pmaStr */
$pmaStr = $GLOBALS['PMA_String'];
// allocate colors
$red = hexdec($pmaStr->substr($fill_color, 1, 2));
$green = hexdec($pmaStr->substr($fill_color, 3, 2));
$blue = hexdec($pmaStr->substr($fill_color, 4, 2));
$red = hexdec(/*overload*/mb_substr($fill_color, 1, 2));
$green = hexdec(/*overload*/mb_substr($fill_color, 3, 2));
$blue = hexdec(/*overload*/mb_substr($fill_color, 4, 2));
$color = array($red, $green, $blue);
// Trim to remove leading 'POLYGON((' and trailing '))'
$polygon = $pmaStr->substr($spatial, 9, $pmaStr->strlen($spatial) - 11);
$polygon = /*overload*/mb_substr($spatial, 9, /*overload*/mb_strlen($spatial) - 11);
// If the polygon doesn't have an inner polygon
if ($pmaStr->strpos($polygon, "),(") === false) {
if (/*overload*/mb_strpos($polygon, "),(") === false) {
$points_arr = $this->extractPoints($polygon, $scale_data, true);
} else {
// Separate outer and inner polygons
@ -216,20 +207,17 @@ class PMA_GIS_Polygon extends PMA_GIS_Geometry
'fill-opacity'=> 0.8,
);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'POLYGON((' and trailing '))'
$polygon = $pmaString->substr(
$polygon = /*overload*/mb_substr(
$spatial,
9,
$pmaString->strlen($spatial) - 11
/*overload*/mb_strlen($spatial) - 11
);
$row = '<path d="';
// If the polygon doesnt have an inner polygon
if ($pmaString->strpos($polygon, "),(") === false) {
if (/*overload*/mb_strpos($polygon, "),(") === false) {
$row .= $this->_drawPath($polygon, $scale_data);
} else {
// Separate outer and inner polygons
@ -280,14 +268,11 @@ class PMA_GIS_Polygon extends PMA_GIS_Geometry
}
$row = $this->getBoundsForOl($srid, $scale_data);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'POLYGON((' and trailing '))'
$polygon = $pmaString->substr(
$polygon = /*overload*/mb_substr(
$spatial,
9,
$pmaString->strlen($spatial) - 11
/*overload*/mb_strlen($spatial) - 11
);
// Separate outer and inner polygons
@ -339,9 +324,6 @@ class PMA_GIS_Polygon extends PMA_GIS_Geometry
$no_of_lines = 1;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$wkt = 'POLYGON(';
for ($i = 0; $i < $no_of_lines; $i++) {
$no_of_points = isset($gis_data[$index]['POLYGON'][$i]['no_of_points'])
@ -358,10 +340,10 @@ class PMA_GIS_Polygon extends PMA_GIS_Geometry
&& trim($gis_data[$index]['POLYGON'][$i][$j]['y']) != '')
? $gis_data[$index]['POLYGON'][$i][$j]['y'] : $empty) . ',';
}
$wkt = $pmaString->substr($wkt, 0, $pmaString->strlen($wkt) - 1);
$wkt = /*overload*/mb_substr($wkt, 0, /*overload*/mb_strlen($wkt) - 1);
$wkt .= '),';
}
$wkt = $pmaString->substr($wkt, 0, $pmaString->strlen($wkt) - 1);
$wkt = /*overload*/mb_substr($wkt, 0, /*overload*/mb_strlen($wkt) - 1);
$wkt .= ')';
return $wkt;
}
@ -571,11 +553,8 @@ class PMA_GIS_Polygon extends PMA_GIS_Geometry
$wkt = $value;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Trim to remove leading 'POLYGON((' and trailing '))'
$polygon = $pmaString->substr($wkt, 9, ($pmaString->strlen($wkt) - 11));
$polygon = /*overload*/mb_substr($wkt, 9, (/*overload*/mb_strlen($wkt) - 11));
// Seperate each linestring
$linerings = explode("),(", $polygon);
$params[$index]['POLYGON']['no_of_lines'] = count($linerings);

View File

@ -126,18 +126,15 @@ class PMA_GIS_Visualization
{
$file_name = PMA_sanitizeFilename($file_name);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Check if the user already added extension;
// get the substring where the extension would be if it was included
$extension_start_pos = $pmaString->strlen($file_name)
- $pmaString->strlen($ext) - 1;
$user_extension = $pmaString->substr(
$file_name, $extension_start_pos, $pmaString->strlen($file_name)
$extension_start_pos = /*overload*/mb_strlen($file_name)
- /*overload*/mb_strlen($ext) - 1;
$user_extension = /*overload*/mb_substr(
$file_name, $extension_start_pos, /*overload*/mb_strlen($file_name)
);
$required_extension = "." . $ext;
if ($pmaString->strtolower($user_extension) != $required_extension) {
if (/*overload*/mb_strtolower($user_extension) != $required_extension) {
$file_name .= $required_extension;
}
return $file_name;
@ -374,15 +371,12 @@ class PMA_GIS_Visualization
$plot_width = $this->_settings['width'] - 2 * $border;
$plot_height = $this->_settings['height'] - 2 * $border;
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
foreach ($data as $row) {
// Figure out the data type
$ref_data = $row[$this->_settings['spatialColumn']];
$type_pos = $pmaString->stripos($ref_data, '(');
$type = $pmaString->substr($ref_data, 0, $type_pos);
$type_pos = /*overload*/mb_stripos($ref_data, '(');
$type = /*overload*/mb_substr($ref_data, 0, $type_pos);
$gis_obj = PMA_GIS_Factory::factory($type);
if (! $gis_obj) {
@ -461,17 +455,14 @@ class PMA_GIS_Visualization
{
$color_number = 0;
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// loop through the rows
foreach ($data as $row) {
$index = $color_number % sizeof($this->_settings['colors']);
// Figure out the data type
$ref_data = $row[$this->_settings['spatialColumn']];
$type_pos = $pmaString->stripos($ref_data, '(');
$type = $pmaString->substr($ref_data, 0, $type_pos);
$type_pos = /*overload*/mb_stripos($ref_data, '(');
$type = /*overload*/mb_substr($ref_data, 0, $type_pos);
$gis_obj = PMA_GIS_Factory::factory($type);
if (! $gis_obj) {

View File

@ -75,12 +75,9 @@ function PMA_convertAIXMapCharsets($in_charset, $out_charset)
{
global $gnu_iconv_to_aix_iconv_codepage_map;
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// Check for transliteration argument at the end of output character set name
$translit_search = $pmaString->strpos(
$pmaString->strtolower($out_charset),
$translit_search = /*overload*/mb_strpos(
/*overload*/mb_strtolower($out_charset),
'//translit'
);
$using_translit = (!($translit_search === false));
@ -88,28 +85,28 @@ function PMA_convertAIXMapCharsets($in_charset, $out_charset)
// Extract "plain" output character set name
// (without any transliteration argument)
$out_charset_plain = ($using_translit
? $pmaString->substr($out_charset, 0, $translit_search)
? /*overload*/mb_substr($out_charset, 0, $translit_search)
: $out_charset);
// Transform name of input character set (if found)
$in_charset_exisits = array_key_exists(
$pmaString->strtolower($in_charset),
/*overload*/mb_strtolower($in_charset),
$gnu_iconv_to_aix_iconv_codepage_map
);
if ($in_charset_exisits) {
$in_charset = $gnu_iconv_to_aix_iconv_codepage_map[
$pmaString->strtolower($in_charset)
/*overload*/mb_strtolower($in_charset)
];
}
// Transform name of "plain" output character set (if found)
$out_charset_plain_exists = array_key_exists(
$pmaString->strtolower($out_charset_plain),
/*overload*/mb_strtolower($out_charset_plain),
$gnu_iconv_to_aix_iconv_codepage_map
);
if ($out_charset_plain_exists) {
$out_charset_plain = $gnu_iconv_to_aix_iconv_codepage_map[
$pmaString->strtolower($out_charset_plain)
/*overload*/mb_strtolower($out_charset_plain)
];
}

View File

@ -97,8 +97,6 @@ function PMA_importRunQuery($sql = '', $full = '', $controluser = false,
return;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if (! empty($import_run_buffer['sql'])
&& trim($import_run_buffer['sql']) != ''
) {
@ -106,13 +104,13 @@ function PMA_importRunQuery($sql = '', $full = '', $controluser = false,
// USE query changes the database, son need to track
// while running multiple queries
$is_use_query
= ($pmaString->stripos($import_run_buffer['sql'], "use ") !== false)
= (/*overload*/mb_stripos($import_run_buffer['sql'], "use ") !== false)
? true
: false;
$max_sql_len = max(
$max_sql_len,
$pmaString->strlen($import_run_buffer['sql'])
/*overload*/mb_strlen($import_run_buffer['sql'])
);
if (! $sql_query_disabled) {
$sql_query .= $import_run_buffer['full'];
@ -129,6 +127,7 @@ function PMA_importRunQuery($sql = '', $full = '', $controluser = false,
$error = true;
} else {
$executed_queries++;
$pattern = '/^[\s]*(SELECT|SHOW|HANDLER)/i';
@ -255,7 +254,7 @@ function PMA_importRunQuery($sql = '', $full = '', $controluser = false,
// the complete query in the textarea)
if (! $go_sql && $run_query) {
if (! empty($sql_query)) {
if ($pmaString->strlen($sql_query) > 50000
if (/*overload*/mb_strlen($sql_query) > 50000
|| $executed_queries > 50
|| $max_sql_len > 1000
) {
@ -355,19 +354,16 @@ function PMA_importGetNextChunk($size = 32768)
return true;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($GLOBALS['import_file'] == 'none') {
// Well this is not yet supported and tested,
// but should return content of textarea
if ($pmaString->strlen($GLOBALS['import_text']) < $size) {
if (/*overload*/mb_strlen($GLOBALS['import_text']) < $size) {
$GLOBALS['finished'] = true;
return $GLOBALS['import_text'];
} else {
$r = $pmaString->substr($GLOBALS['import_text'], 0, $size);
$r = /*overload*/mb_substr($GLOBALS['import_text'], 0, $size);
$GLOBALS['offset'] += $size;
$GLOBALS['import_text'] = $pmaString
->substr($GLOBALS['import_text'], $size);
$GLOBALS['import_text'] = /*overload*/mb_substr($GLOBALS['import_text'], $size);
return $r;
}
}
@ -382,8 +378,8 @@ function PMA_importGetNextChunk($size = 32768)
$GLOBALS['finished'] = feof($import_handle);
break;
case 'application/zip':
$result = $pmaString->substr($GLOBALS['import_text'], 0, $size);
$GLOBALS['import_text'] = $pmaString->substr($GLOBALS['import_text'], $size);
$result = /*overload*/mb_substr($GLOBALS['import_text'], 0, $size);
$GLOBALS['import_text'] = /*overload*/mb_substr($GLOBALS['import_text'], $size);
$GLOBALS['finished'] = empty($GLOBALS['import_text']);
break;
case 'none':
@ -407,12 +403,12 @@ function PMA_importGetNextChunk($size = 32768)
if ($GLOBALS['offset'] == $size) {
// UTF-8
if (strncmp($result, "\xEF\xBB\xBF", 3) == 0) {
$result = $pmaString->substr($result, 3);
$result = /*overload*/mb_substr($result, 3);
// UTF-16 BE, LE
} elseif (strncmp($result, "\xFE\xFF", 2) == 0
|| strncmp($result, "\xFF\xFE", 2) == 0
) {
$result = $pmaString->substr($result, 2);
$result = /*overload*/mb_substr($result, 2);
}
}
return $result;
@ -464,16 +460,13 @@ function PMA_getColumnAlphaName($num)
$num = $remain;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($num == 0) {
// use 'Z' if column number is 0,
// this is necessary because A-Z has no 'zero'
$col_name .= $pmaString->chr(($A + 26) - 1);
$col_name .= /*overload*/mb_chr(($A + 26) - 1);
} else {
// convert column number to ASCII character
$col_name .= $pmaString->chr(($A + $num) - 1);
$col_name .= /*overload*/mb_chr(($A + $num) - 1);
}
return $col_name;
@ -499,10 +492,8 @@ function PMA_getColumnNumberFromName($name)
return 0;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$name = $pmaString->strtoupper($name);
$num_chars = $pmaString->strlen($name);
$name = /*overload*/mb_strtoupper($name);
$num_chars = /*overload*/mb_strlen($name);
$column_number = 0;
for ($i = 0; $i < $num_chars; ++$i) {
// read string from back to front
@ -512,7 +503,7 @@ function PMA_getColumnNumberFromName($name)
// 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 = (int)($pmaString->ord($name[$char_pos]) - 64);
$number = (int)(/*overload*/mb_ord($name[$char_pos]) - 64);
// base26 to base10 conversion : multiply each number
// with corresponding value of the position, in this case
@ -559,12 +550,10 @@ define("FORMATTEDSQL", 2);
*/
function PMA_getDecimalPrecision($last_cumulative_size)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
return (int)$pmaString->substr(
return (int)substr(
$last_cumulative_size,
0,
$pmaString->strpos($last_cumulative_size, ",")
strpos($last_cumulative_size, ",")
);
}
@ -579,13 +568,10 @@ function PMA_getDecimalPrecision($last_cumulative_size)
*/
function PMA_getDecimalScale($last_cumulative_size)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
return (int) $pmaString->substr(
return (int)substr(
$last_cumulative_size,
($pmaString->strpos($last_cumulative_size, ",") + 1),
($pmaString->strlen($last_cumulative_size)
- $pmaString->strpos($last_cumulative_size, ","))
(strpos($last_cumulative_size, ",") + 1),
(strlen($last_cumulative_size) - strpos($last_cumulative_size, ","))
);
}
@ -600,10 +586,8 @@ function PMA_getDecimalScale($last_cumulative_size)
*/
function PMA_getDecimalSize($cell)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$curr_size = $pmaString->strlen((string)$cell);
$decPos = $pmaString->strpos($cell, ".");
$curr_size = /*overload*/mb_strlen((string)$cell);
$decPos = /*overload*/mb_strpos($cell, ".");
$decPrecision = ($curr_size - 1) - $decPos;
$m = $curr_size - 1;
@ -630,9 +614,7 @@ function PMA_getDecimalSize($cell)
function PMA_detectSize($last_cumulative_size, $last_cumulative_type,
$curr_type, $cell
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$curr_size = $pmaString->strlen((string)$cell);
$curr_size = /*overload*/mb_strlen((string)$cell);
/**
* If the cell is NULL, don't treat it as a varchar
@ -770,7 +752,7 @@ function PMA_detectSize($last_cumulative_size, $last_cumulative_type,
$oldM = PMA_getDecimalPrecision($last_cumulative_size);
$oldD = PMA_getDecimalScale($last_cumulative_size);
$oldInt = $oldM - $oldD;
$newInt = $pmaString->strlen((string)$cell);
$newInt = /*overload*/mb_strlen((string)$cell);
/* See which has the larger integer length */
if ($oldInt >= $newInt) {
@ -843,16 +825,13 @@ function PMA_detectType($last_cumulative_type, $cell)
return $last_cumulative_type;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if (!is_numeric($cell)) {
return VARCHAR;
}
if ($cell == (string)(float)$cell
&& $pmaString->strpos($cell, ".") !== false
&& $pmaString->substrCount($cell, ".") == 1
&& /*overload*/mb_strpos($cell, ".") !== false
&& /*overload*/mb_substr_count($cell, ".") == 1
) {
return DECIMAL;
}

View File

@ -313,11 +313,8 @@ function PMA_getColumnTitle($column, $comments_map)
*/
function PMA_isColumn($column, $types)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
foreach ($types as $one_type) {
if ($pmaString->stripos($column['Type'], $one_type) === 0) {
if (/*overload*/mb_stripos($column['Type'], $one_type) === 0) {
return true;
}
}
@ -383,9 +380,6 @@ function PMA_getFunctionColumn($column, $is_upload, $column_name_appendix,
$unnullify_trigger, $no_support_types, $tabindex_for_function,
$tabindex, $idindex, $insert_mode
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$html_output = '';
if (($GLOBALS['cfg']['ProtectBinary'] === 'blob'
&& $column['is_blob'] && !$is_upload)
@ -395,8 +389,8 @@ function PMA_getFunctionColumn($column, $is_upload, $column_name_appendix,
&& $column['is_binary'])
) {
$html_output .= '<td class="center">' . __('Binary') . '</td>' . "\n";
} elseif ($pmaString->strstr($column['True_Type'], 'enum')
|| $pmaString->strstr($column['True_Type'], 'set')
} elseif (/*overload*/mb_strstr($column['True_Type'], 'enum')
|| /*overload*/mb_strstr($column['True_Type'], 'set')
|| in_array($column['pma_type'], $no_support_types)
) {
$html_output .= '<td class="center">--</td>' . "\n";
@ -480,16 +474,14 @@ function PMA_getNullColumn($column, $column_name_appendix, $real_null_value,
*/
function PMA_getNullifyCodeForNullColumn($column, $foreigners, $foreignData)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$foreigner = PMA_searchColumnInForeigners($foreigners, $column['Field']);
if ($pmaString->strstr($column['True_Type'], 'enum')) {
if ($pmaString->strlen($column['Type']) > 20) {
if (/*overload*/mb_strstr($column['True_Type'], 'enum')) {
if (/*overload*/mb_strlen($column['Type']) > 20) {
$nullify_code = '1';
} else {
$nullify_code = '2';
}
} elseif ($pmaString->strstr($column['True_Type'], 'set')) {
} elseif (/*overload*/mb_strstr($column['True_Type'], 'set')) {
$nullify_code = '3';
} elseif ($foreigners
&& $foreigner
@ -557,8 +549,6 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix,
$data_type = $GLOBALS['PMA_Types']->getTypeClass($column['True_Type']);
$html_output = '';
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($foreignData['foreign_link'] == true) {
$html_output .= PMA_getForeignLink(
$column, $backup_field, $column_name_appendix,
@ -574,7 +564,7 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix,
);
} elseif ($GLOBALS['cfg']['LongtextDoubleTextarea']
&& $pmaString->strstr($column['pma_type'], 'longtext')
&& /*overload*/mb_strstr($column['pma_type'], 'longtext')
) {
$html_output = '&nbsp;</td>';
$html_output .= '</tr>';
@ -586,7 +576,7 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix,
$special_chars_encoded, $data_type
);
} elseif ($pmaString->strstr($column['pma_type'], 'text')) {
} elseif (/*overload*/mb_strstr($column['pma_type'], 'text')) {
$html_output .= PMA_getTextarea(
$column, $backup_field, $column_name_appendix, $unnullify_trigger,
@ -594,7 +584,7 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix,
$special_chars_encoded, $data_type
);
$html_output .= "\n";
if ($pmaString->strlen($special_chars) > 32000) {
if (/*overload*/mb_strlen($special_chars) > 32000) {
$html_output .= "</td>\n";
$html_output .= '<td>' . __(
'Because of its length,<br /> this column might not be editable.'
@ -764,7 +754,7 @@ function PMA_getTextarea($column, $backup_field, $column_name_appendix,
$extracted_columnspec = PMA_Util::extractColumnSpec($column['Type']);
$maxlength = $extracted_columnspec['spec_in_brackets'];
} elseif ($GLOBALS['cfg']['LongtextDoubleTextarea']
&& $GLOBALS['PMA_String']->strstr($column['pma_type'], 'longtext')
&& /*overload*/mb_strstr($column['pma_type'], 'longtext')
) {
$textAreaRows = $GLOBALS['cfg']['TextareaRows'] * 2;
$textareaCols = $GLOBALS['cfg']['TextareaCols'] * 2;
@ -819,7 +809,7 @@ function PMA_getPmaTypeEnum($column, $backup_field, $column_name_appendix,
$html_output .= '<input type="hidden" name="fields'
. $column_name_appendix . '" value="" />';
$html_output .= "\n" . ' ' . $backup_field . "\n";
if ($GLOBALS['PMA_String']->strlen($column['Type']) > 20) {
if (/*overload*/mb_strlen($column['Type']) > 20) {
$html_output .= PMA_getDropDownDependingOnLength(
$column, $column_name_appendix, $unnullify_trigger,
$tabindex, $tabindex_for_value, $idindex, $data, $column_enum_values
@ -1052,7 +1042,7 @@ function PMA_getBinaryAndBlobColumn(
$html_output .= __('Binary - do not edit');
if (isset($data)) {
$data_size = PMA_Util::formatByteDown(
$GLOBALS['PMA_String']->strlen(stripslashes($data)), 3, 1
/*overload*/mb_strlen(stripslashes($data)), 3, 1
);
$html_output .= ' (' . $data_size[0] . ' ' . $data_size[1] . ')';
unset($data_size);
@ -1256,16 +1246,13 @@ function PMA_getValueColumnForOtherDatatypes($column, $default_char_editing,
$tabindex_for_value, $idindex, $text_dir, $special_chars_encoded, $data,
$extracted_columnspec
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// HTML5 data-* attribute data-type
$data_type = $GLOBALS['PMA_Types']->getTypeClass($column['True_Type']);
$fieldsize = PMA_getColumnSize($column, $extracted_columnspec);
$html_output = $backup_field . "\n";
if ($column['is_char']
&& ($GLOBALS['cfg']['CharEditing'] == 'textarea'
|| $pmaString->strpos($data, "\n") !== false)
|| /*overload*/mb_strpos($data, "\n") !== false)
) {
$html_output .= "\n";
$GLOBALS['cfg']['CharEditing'] = $default_char_editing;
@ -1284,11 +1271,11 @@ function PMA_getValueColumnForOtherDatatypes($column, $default_char_editing,
$html_output .= '<input type="hidden" name="auto_increment'
. $column_name_appendix . '" value="1" />';
}
if ($pmaString->substr($column['pma_type'], 0, 9) == 'timestamp') {
if (substr($column['pma_type'], 0, 9) == 'timestamp') {
$html_output .= '<input type="hidden" name="fields_type'
. $column_name_appendix . '" value="timestamp" />';
}
if ($pmaString->substr($column['pma_type'], 0, 8) == 'datetime') {
if (substr($column['pma_type'], 0, 8) == 'datetime') {
$html_output .= '<input type="hidden" name="fields_type'
. $column_name_appendix . '" value="datetime" />';
}
@ -1298,7 +1285,7 @@ function PMA_getValueColumnForOtherDatatypes($column, $default_char_editing,
}
if ($column['pma_type'] == 'date'
|| $column['pma_type'] == 'datetime'
|| $pmaString->substr($column['pma_type'], 0, 9) == 'timestamp'
|| substr($column['pma_type'], 0, 9) == 'timestamp'
) {
// the _3 suffix points to the date field
// the _2 suffix points to the corresponding NULL checkbox
@ -1611,9 +1598,6 @@ function PMA_getSpecialCharsAndBackupFieldForExistingRow(
$current_row, $column, $extracted_columnspec,
$real_null_value, $gis_data_types, $column_name_appendix, $as_is
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$special_chars_encoded = '';
$data = null;
// (we are editing)
@ -1629,10 +1613,10 @@ function PMA_getSpecialCharsAndBackupFieldForExistingRow(
$current_row[$column['Field']],
$extracted_columnspec['spec_in_brackets']
);
} elseif (($pmaString->substr($column['True_Type'], 0, 9) == 'timestamp'
} elseif ((substr($column['True_Type'], 0, 9) == 'timestamp'
|| $column['True_Type'] == 'datetime'
|| $column['True_Type'] == 'time')
&& ($pmaString->strpos($current_row[$column['Field']], ".") !== false)
&& (/*overload*/mb_strpos($current_row[$column['Field']], ".") !== false)
) {
$current_row[$column['Field']] = $as_is
? $current_row[$column['Field']]
@ -1675,7 +1659,7 @@ function PMA_getSpecialCharsAndBackupFieldForExistingRow(
&& $_REQUEST['default_action'] === 'insert'
) {
if ($column['Key'] === 'PRI'
&& $pmaString->strpos($column['Extra'], 'auto_increment') !== false
&& /*overload*/mb_strpos($column['Extra'], 'auto_increment') !== false
) {
$data = $special_chars_encoded = $special_chars = null;
}
@ -1721,7 +1705,7 @@ function PMA_getSpecialCharsAndBackupFieldForInsertingMode(
if ($trueType == 'bit') {
$special_chars = PMA_Util::convertBitDefaultValue($column['Default']);
} elseif ($GLOBALS['PMA_String']->substr($trueType, 0, 9) == 'timestamp'
} elseif (substr($trueType, 0, 9) == 'timestamp'
|| $trueType == 'datetime'
|| $trueType == 'time'
) {
@ -1830,9 +1814,6 @@ function PMA_setSessionForEditNext($one_where_clause)
*/
function PMA_getGotoInclude($goto_include)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$valid_options = array('new_insert', 'same_insert', 'edit_next');
if (isset($_REQUEST['after_insert'])
&& in_array($_REQUEST['after_insert'], $valid_options)
@ -1847,13 +1828,13 @@ function PMA_getGotoInclude($goto_include)
$goto_include = $GLOBALS['goto'];
}
if ($GLOBALS['goto'] == 'db_sql.php'
&& $pmaString->strlen($GLOBALS['table'])
&& /*overload*/mb_strlen($GLOBALS['table'])
) {
$GLOBALS['table'] = '';
}
}
if (! $goto_include) {
if (! $pmaString->strlen($GLOBALS['table'])) {
if (! /*overload*/mb_strlen($GLOBALS['table'])) {
$goto_include = 'db_sql.php';
} else {
$goto_include = 'tbl_sql.php';
@ -2011,7 +1992,7 @@ function PMA_getDisplayValueForForeignTableColumn($where_comparison,
$foreigner['foreign_table']
);
// Field to display from the foreign table?
if (isset($display_field) && $GLOBALS['PMA_String']->strlen($display_field)) {
if (isset($display_field) && /*overload*/mb_strlen($display_field)) {
$dispsql = 'SELECT ' . PMA_Util::backquote($display_field)
. ' FROM ' . PMA_Util::backquote($foreigner['foreign_db'])
. '.' . PMA_Util::backquote($foreigner['foreign_table'])
@ -2152,9 +2133,6 @@ function PMA_getCurrentValueAsAnArrayForMultipleEdit( $multi_edit_funcs,
$gis_from_text_functions, $current_value, $gis_from_wkb_functions,
$func_optional_param, $func_no_param, $key
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if (empty($multi_edit_funcs[$key])) {
return $current_value;
} elseif ('UUID' === $multi_edit_funcs[$key]) {
@ -2162,13 +2140,11 @@ function PMA_getCurrentValueAsAnArrayForMultipleEdit( $multi_edit_funcs,
$uuid = $GLOBALS['dbi']->fetchValue('SELECT UUID()');
return "'" . $uuid . "'";
} elseif ((in_array($multi_edit_funcs[$key], $gis_from_text_functions)
&& $pmaString->substr($current_value, 0, 3) == "'''")
&& substr($current_value, 0, 3) == "'''")
|| in_array($multi_edit_funcs[$key], $gis_from_wkb_functions)
) {
// Remove enclosing apostrophes
$current_value = $pmaString->substr(
$current_value, 1, $pmaString->strlen($current_value) - 2
);
$current_value = /*overload*/mb_substr($current_value, 1, -1);
// Remove escaping apostrophes
$current_value = str_replace("''", "'", $current_value);
return $multi_edit_funcs[$key] . '(' . $current_value . ')';
@ -2217,7 +2193,7 @@ function PMA_getQueryValuesForInsertAndUpdateInMultipleEdit($multi_edit_columns_
// i n s e r t
if ($is_insert) {
// no need to add column into the valuelist
if ($GLOBALS['PMA_String']->strlen($current_value_as_an_array)) {
if (/*overload*/mb_strlen($current_value_as_an_array)) {
$query_values[] = $current_value_as_an_array;
// first inserted row so prepare the list of fields
if (empty($value_sets)) {
@ -2304,7 +2280,7 @@ function PMA_getCurrentValueForDifferentTypes($possibly_uploaded_val, $key,
}
if ($type != 'protected' && $type != 'set'
&& 0 === $GLOBALS['PMA_String']->strlen($current_value)
&& 0 === /*overload*/mb_strlen($current_value)
) {
// best way to avoid problems in strict mode
// (works also in non-strict mode)
@ -2399,7 +2375,7 @@ function PMA_verifyWhetherValueCanBeTruncatedAndAppendExtraData(
$meta = $fields_meta[0];
$new_value = $GLOBALS['dbi']->fetchValue($result);
if ($new_value !== false) {
if (($GLOBALS['PMA_String']->substr($meta->type, 0, 9) == 'timestamp')
if ((substr($meta->type, 0, 9) == 'timestamp')
|| ($meta->type == 'datetime')
|| ($meta->type == 'time')
) {
@ -2589,7 +2565,7 @@ function PMA_getHtmlForFunctionOption($odd_row, $column, $column_name_appendix)
return '<tr class="noclick ' . ($odd_row ? 'odd' : 'even' ) . '">'
. '<td '
. ($longDoubleTextArea
&& $GLOBALS['PMA_String']->strstr($column['True_Type'], 'longtext')
&& /*overload*/mb_strstr($column['True_Type'], 'longtext')
? 'rowspan="2"'
: ''
)

View File

@ -65,11 +65,8 @@ function PMA_getIp()
*/
function PMA_ipMaskTest($testRange, $ipToTest)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strpos($testRange, ':') > -1
|| $pmaString->strpos($ipToTest, ':') > -1
if (/*overload*/mb_strpos($testRange, ':') > -1
|| /*overload*/mb_strpos($ipToTest, ':') > -1
) {
// assume IPv6
$result = PMA_ipv6MaskTest($testRange, $ipToTest);
@ -181,15 +178,12 @@ function PMA_ipv6MaskTest($test_range, $ip_to_test)
{
$result = true;
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// convert to lowercase for easier comparison
$test_range = $pmaString->strtolower($test_range);
$ip_to_test = $pmaString->strtolower($ip_to_test);
$test_range = /*overload*/mb_strtolower($test_range);
$ip_to_test = /*overload*/mb_strtolower($ip_to_test);
$is_cidr = $pmaString->strpos($test_range, '/') > -1;
$is_range = $pmaString->strpos($test_range, '[') > -1;
$is_cidr = /*overload*/mb_strpos($test_range, '/') > -1;
$is_range = /*overload*/mb_strpos($test_range, '[') > -1;
$is_single = ! $is_cidr && ! $is_range;
$ip_hex = bin2hex(inet_pton($ip_to_test));
@ -238,7 +232,7 @@ function PMA_ipv6MaskTest($test_range, $ip_to_test)
$pos = 31;
while ($flexbits > 0) {
// Get the character at this position
$orig = $pmaString->substr($last_hex, $pos, 1);
$orig = /*overload*/mb_substr($last_hex, $pos, 1);
// Convert it to an integer
$origval = hexdec($orig);

View File

@ -19,16 +19,14 @@ if (! defined('PHPMYADMIN')) {
*/
function PMA_detectMIME(&$test)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$len = $pmaString->strlen($test);
$len = /*overload*/mb_strlen($test);
if ($len >= 2 && $test[0] == chr(0xff) && $test[1] == chr(0xd8)) {
return 'image/jpeg';
}
if ($len >= 3 && $pmaString->substr($test, 0, 3) == 'GIF') {
if ($len >= 3 && substr($test, 0, 3) == 'GIF') {
return 'image/gif';
}
if ($len >= 4 && $pmaString->substr($test, 0, 4) == "\x89PNG") {
if ($len >= 4 && /*overload*/mb_substr($test, 0, 4) == "\x89PNG") {
return 'image/png';
}
return 'application/octet-stream';

View File

@ -154,11 +154,11 @@ if (!empty($submit_mult) && !empty($what)) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strlen($table)) {
if (/*overload*/mb_strlen($table)) {
include './libraries/tbl_common.inc.php';
$url_query .= '&amp;goto=tbl_sql.php&amp;back=tbl_sql.php';
include './libraries/tbl_info.inc.php';
} elseif ($pmaString->strlen($db)) {
} elseif (/*overload*/mb_strlen($db)) {
include './libraries/db_common.inc.php';
include './libraries/db_info.inc.php';
} else {

View File

@ -34,11 +34,9 @@ function PMA_getUrlParams(
'query_type' => $what,
'reload' => (! empty($reload) ? 1 : 0),
);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strpos(' ' . $action, 'db_') == 1) {
if (/*overload*/mb_strpos(' ' . $action, 'db_') == 1) {
$_url_params['db']= $db;
} elseif ($pmaString->strpos(' ' . $action, 'tbl_') == 1
} elseif (/*overload*/mb_strpos(' ' . $action, 'tbl_') == 1
|| $what == 'row_delete'
) {
$_url_params['db']= $db;
@ -104,9 +102,6 @@ function PMA_getQueryStrFromSelected(
$selected_cnt = count($selected);
$deletes = false;
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
for ($i = 0; $i < $selected_cnt; $i++) {
switch ($query_type) {
case 'row_delete':
@ -231,11 +226,10 @@ function PMA_getQueryStrFromSelected(
case 'replace_prefix_tbl':
$current = $selected[$i];
$subFromPrefix = $pmaString
->substr($current, 0, $pmaString->strlen($from_prefix));
$subFromPrefix = /*overload*/mb_substr($current, 0, /*overload*/mb_strlen($from_prefix));
if ($subFromPrefix == $from_prefix) {
$newtablename = $to_prefix
. $pmaString->substr($current, $pmaString->strlen($from_prefix));
. /*overload*/mb_substr($current, /*overload*/mb_strlen($from_prefix));
} else {
$newtablename = $current;
}
@ -250,7 +244,7 @@ function PMA_getQueryStrFromSelected(
case 'copy_tbl_change_prefix':
$current = $selected[$i];
$newtablename = $to_prefix .
$pmaString->substr($current, $pmaString->strlen($from_prefix));
/*overload*/mb_substr($current, /*overload*/mb_strlen($from_prefix));
// COPY TABLE AND CHANGE PREFIX PATTERN
$a_query = 'CREATE TABLE '
. PMA_Util::backquote($newtablename)

View File

@ -106,14 +106,11 @@ class PMA_NavigationHeader
$retval .= '" target="_blank"';
break;
case 'main':
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// do not add our parameters for an external link
$navLogoLinkLower = $pmaString->strtolower(
$navLogoLinkLower = /*overload*/mb_strtolower(
$GLOBALS['cfg']['NavigationLogoLink']
);
if ($pmaString->substr($navLogoLinkLower, 0, 4) !== '://') {
if (/*overload*/mb_substr($navLogoLinkLower, 0, 4) !== '://') {
$retval .= '?' . $GLOBALS['url_query'] . '"';
} else {
$retval .= '" target="_blank"';

View File

@ -568,7 +568,7 @@ class PMA_NavigationTree
$separators = array();
if (is_array($node->separator)) {
$separators = $node->separator;
} else if ($pmaString->strlen($node->separator)) {
} else if (strlen($node->separator)) {
$separators[] = $node->separator;
}
$prefixes = array();
@ -576,9 +576,9 @@ class PMA_NavigationTree
foreach ($node->children as $child) {
$prefix_pos = false;
foreach ($separators as $separator) {
$sep_pos = $pmaString->strpos($child->name, $separator);
$sep_pos = /*overload*/mb_strpos($child->name, $separator);
if ($sep_pos != false
&& $sep_pos != $pmaString->strlen($child->name)
&& $sep_pos != /*overload*/mb_strlen($child->name)
&& $sep_pos != 0
&& ($prefix_pos == false || $sep_pos < $prefix_pos)
) {
@ -586,7 +586,7 @@ class PMA_NavigationTree
}
}
if ($prefix_pos !== false) {
$prefix = $pmaString->substr($child->name, 0, $prefix_pos);
$prefix = /*overload*/mb_substr($child->name, 0, $prefix_pos);
if (! isset($prefixes[$prefix])) {
$prefixes[$prefix] = 1;
} else {
@ -641,12 +641,15 @@ class PMA_NavigationTree
}
$node->addChild($groups[$key]);
foreach ($separators as $separator) {
$separatorLength = strlen($separator);
// FIXME: this could be more efficient
foreach ($node->children as $child) {
$name_substring = $pmaString->substr(
$keySeparatorLength = /*overload*/mb_strlen($key)
+ $separatorLength;
$name_substring = /*overload*/mb_substr(
$child->name,
0,
$pmaString->strlen($key) + $pmaString->strlen($separator)
$keySeparatorLength
);
if (($name_substring != $key . $separator
&& $child->name != $key)
@ -657,10 +660,9 @@ class PMA_NavigationTree
$class = get_class($child);
$new_child = PMA_NodeFactory::getInstance(
$class,
$pmaString->substr(
/*overload*/mb_substr(
$child->name,
$pmaString->strlen($key)
+ $pmaString->strlen($separator)
$keySeparatorLength
)
);
$new_child->real_name = $child->real_name;
@ -896,7 +898,7 @@ class PMA_NavigationTree
$iClass = " class='first'";
}
$retval .= "<i$iClass></i>";
if ($GLOBALS['PMA_String']->strpos($class, 'last') === false) {
if (strpos($class, 'last') === false) {
$retval .= "<b></b>";
}

View File

@ -474,7 +474,7 @@ class Node_Database extends Node
. "." . PMA_Util::backquote($cfgRelation['navigationhiding']);
$sqlQuery = "SELECT `item_name` FROM " . $navTable
. " WHERE `username`='" . $cfgRelation['user'] . "'"
. " AND `item_type`='" . $GLOBALS['PMA_String']->substr($type, 0, -1)
. " AND `item_type`='" . substr($type, 0, -1)
. "'" . " AND `db_name`='" . PMA_Util::sqlAddSlashes($db) . "'";
$result = PMA_queryAsControlUser($sqlQuery, false);
if ($result) {

View File

@ -43,7 +43,7 @@ function PMA_getHtmlForColumnsList(
$type = $extracted_columnspec['type'];
}
if (empty($columnTypeList)
|| in_array($GLOBALS['PMA_String']->strtoupper($type), $columnTypeList)
|| in_array(/*overload*/mb_strtoupper($type), $columnTypeList)
) {
if ($listType == 'checkbox') {
$selectColHtml .= '<input type="checkbox" value="'

View File

@ -312,7 +312,7 @@ function PMA_getSqlQueryAndCreateDbBeforeCopy()
'SHOW VARIABLES LIKE "lower_case_table_names"', 0, 1
);
if ($lowerCaseTableNames === '1') {
$_REQUEST['newname'] = $GLOBALS['PMA_String']->strtolower(
$_REQUEST['newname'] = /*overload*/mb_strtolower(
$_REQUEST['newname']
);
}
@ -854,9 +854,7 @@ function PMA_getTableOptionFieldset($comment, $tbl_collation,
);
} // end if (ARIA)
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strlen($auto_increment) > 0
if (/*overload*/mb_strlen($auto_increment) > 0
&& ($is_myisam_or_aria || $is_innodb || $is_pbxt)
) {
$html_output .= '<tr><td>'
@ -877,7 +875,7 @@ function PMA_getTableOptionFieldset($comment, $tbl_collation,
if (isset($possible_row_formats[$tbl_storage_engine])) {
$current_row_format
= $pmaString->strtoupper($GLOBALS['showtable']['Row_format']);
= /*overload*/mb_strtoupper($GLOBALS['showtable']['Row_format']);
$html_output .= '<tr><td>'
. '<label for="new_row_format">ROW_FORMAT</label></td>'
. '<td>';
@ -1450,10 +1448,8 @@ function PMA_getTableAltersArray($is_myisam_or_aria, $is_isam, $pack_keys,
. PMA_Util::sqlAddSlashes($_REQUEST['comment']) . '\'';
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if (! empty($newTblStorageEngine)
&& $pmaString->strtolower($newTblStorageEngine) !== $pmaString->strtolower($GLOBALS['tbl_storage_engine'])
&& /*overload*/mb_strtolower($newTblStorageEngine) !== /*overload*/mb_strtolower($GLOBALS['tbl_storage_engine'])
) {
$table_alters[] = 'ENGINE = ' . $newTblStorageEngine;
}
@ -1512,11 +1508,11 @@ function PMA_getTableAltersArray($is_myisam_or_aria, $is_isam, $pack_keys,
}
$newRowFormat = $_REQUEST['new_row_format'];
$newRowFormatLower = $pmaString->strtolower($newRowFormat);
$newRowFormatLower = /*overload*/mb_strtolower($newRowFormat);
if (($is_myisam_or_aria || $is_innodb || $is_pbxt)
&& ! empty($newRowFormat)
&& (!$pmaString->strlen($row_format)
|| $newRowFormatLower !== $pmaString->strtolower($row_format))
&& (!/*overload*/mb_strlen($row_format)
|| $newRowFormatLower !== /*overload*/mb_strtolower($row_format))
) {
$table_alters[] = 'ROW_FORMAT = ' . PMA_Util::sqlAddSlashes($newRowFormat);
}
@ -1534,7 +1530,7 @@ function PMA_getTableAltersArray($is_myisam_or_aria, $is_isam, $pack_keys,
*/
function PMA_setGlobalVariablesForEngine($tbl_storage_engine)
{
$upperTblStorEngine = $GLOBALS['PMA_String']->strtoupper($tbl_storage_engine);
$upperTblStorEngine = /*overload*/mb_strtoupper($tbl_storage_engine);
//Options that apply to MYISAM usually apply to ARIA
$is_myisam_or_aria = ($upperTblStorEngine == 'MYISAM'
@ -1600,7 +1596,7 @@ function PMA_getQueryAndResultForPartition()
/**
* Move or copy a table
* Move or copy a table
*
* @param string $db current database name
* @param string $table current table name

View File

@ -130,7 +130,7 @@ if ($is_select) {
$table = $analyzed_sql[0]['table_ref'][0]['table_true_name'];
}
if (isset($analyzed_sql[0]['table_ref'][0]['db'])
&& $GLOBALS['PMA_String']->strlen($analyzed_sql[0]['table_ref'][0]['db'])
&& /*overload*/mb_strlen($analyzed_sql[0]['table_ref'][0]['db'])
) {
$db = $analyzed_sql[0]['table_ref'][0]['db'];
} else {

View File

@ -23,14 +23,11 @@ function PMA_getPlugin(
$plugins_dir,
$plugin_param = false
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$GLOBALS['plugin_param'] = $plugin_param;
$class_name = $pmaString->strtoupper($plugin_type[0])
. $pmaString->strtolower($pmaString->substr($plugin_type, 1))
. $pmaString->strtoupper($plugin_format[0])
. $pmaString->strtolower($pmaString->substr($plugin_format, 1));
$class_name = /*overload*/mb_strtoupper($plugin_type[0])
. /*overload*/mb_strtolower(/*overload*/mb_substr($plugin_type, 1))
. /*overload*/mb_strtoupper($plugin_format[0])
. /*overload*/mb_strtolower(/*overload*/mb_substr($plugin_format, 1));
$file = $class_name . ".class.php";
if (is_file($plugins_dir . $file)) {
include_once $plugins_dir . $file;
@ -60,8 +57,6 @@ function PMA_getPlugins($plugin_type, $plugins_dir, $plugin_param)
return $plugin_list;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
//@todo Find a way to use PMA_StringMB with UTF-8 instead of mb_*.
while ($file = @readdir($handle)) {
// In some situations, Mac OS creates a new file for each file
@ -69,7 +64,7 @@ function PMA_getPlugins($plugin_type, $plugins_dir, $plugin_param)
// matches a file which does not start with a dot but ends
// with ".php"
$class_type = mb_strtoupper($plugin_type[0], 'UTF-8')
. mb_strtolower($pmaString->substr($plugin_type, 1), 'UTF-8');
. mb_strtolower(/*overload*/mb_substr($plugin_type, 1), 'UTF-8');
if (is_file($plugins_dir . $file)
&& preg_match(
'@^' . $class_type . '(.+)\.class\.php$@i',
@ -196,11 +191,9 @@ function PMA_pluginGetChoice($section, $name, &$list, $cfgname = null)
}
$ret = '<select id="plugins" name="' . $name . '">';
$default = PMA_pluginGetDefault($section, $cfgname);
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
foreach ($list as $plugin) {
$plugin_name = $pmaString->strtolower(
$pmaString->substr(get_class($plugin), $pmaString->strlen($section))
$plugin_name = /*overload*/mb_strtolower(
/*overload*/mb_substr(get_class($plugin), /*overload*/mb_strlen($section))
);
$ret .= '<option';
// If the form is being repopulated using $_GET data, that is priority
@ -225,8 +218,8 @@ function PMA_pluginGetChoice($section, $name, &$list, $cfgname = null)
// Whether each plugin has to be saved as a file
foreach ($list as $plugin) {
$plugin_name = $pmaString->strtolower(
$pmaString->substr(get_class($plugin), $pmaString->strlen($section))
$plugin_name = /*overload*/mb_strtolower(
/*overload*/mb_substr(get_class($plugin), /*overload*/mb_strlen($section))
);
$ret .= '<input type="hidden" id="force_file_' . $plugin_name
. '" value="';
@ -261,14 +254,11 @@ function PMA_pluginGetOneOption(
&$propertyGroup,
$is_subgroup = false
) {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$ret = "\n";
if (! $is_subgroup) {
// for subgroup headers
if ($pmaString->strpos(get_class($propertyGroup), "PropertyItem")) {
if (/*overload*/mb_strpos(get_class($propertyGroup), "PropertyItem")) {
$properties = array($propertyGroup);
} else {
// for main groups
@ -297,7 +287,7 @@ function PMA_pluginGetOneOption(
foreach ($properties as $propertyItem) {
$property_class = get_class($propertyItem);
// if the property is a subgroup, we deal with it recursively
if ($pmaString->strpos($property_class, "Subgroup")) {
if (/*overload*/mb_strpos($property_class, "Subgroup")) {
// for subgroups
// each subgroup can have a header, which may also be a form element
$subgroup_header = $propertyItem->getSubgroupHeader();
@ -512,9 +502,6 @@ function PMA_getHtmlForProperty(
*/
function PMA_pluginGetOptions($section, &$list)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$ret = '';
// Options for plugins that support them
foreach ($list as $plugin) {
@ -524,8 +511,8 @@ function PMA_pluginGetOptions($section, &$list)
$options = $properties->getOptions();
}
$plugin_name = $pmaString->strtolower(
$pmaString->substr(get_class($plugin), $pmaString->strlen($section))
$plugin_name = /*overload*/mb_strtolower(
/*overload*/mb_substr(get_class($plugin), /*overload*/mb_strlen($section))
);
$ret .= '<div id="' . $plugin_name
. '_options" class="format_specific_options">';

View File

@ -63,10 +63,7 @@ abstract class ImportPlugin
*/
protected function getDbnameAndOptions($currentDb, $defaultDb)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strlen($currentDb)) {
if (/*overload*/mb_strlen($currentDb)) {
$db_name = $currentDb;
$options = array('create_db' => false);
} else {

View File

@ -593,15 +593,12 @@ class AuthenticationCookie extends AuthenticationPlugin
// URL where to go:
$redirect_url = $cfg['PmaAbsoluteUri'] . 'index.php';
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
// any parameters to pass?
$url_params = array();
if ($pmaString->strlen($GLOBALS['db'])) {
if (/*overload*/mb_strlen($GLOBALS['db'])) {
$url_params['db'] = $GLOBALS['db'];
}
if ($pmaString->strlen($GLOBALS['table'])) {
if (/*overload*/mb_strlen($GLOBALS['table'])) {
$url_params['table'] = $GLOBALS['table'];
}
// any target to pass?

View File

@ -132,7 +132,7 @@ class ExportCsv extends ExportPlugin
}
} else {
if (empty($csv_terminated)
|| $GLOBALS['PMA_String']->strtolower($csv_terminated) == 'auto'
|| /*overload*/mb_strtolower($csv_terminated) == 'auto'
) {
$csv_terminated = $GLOBALS['crlf'];
} else {
@ -244,7 +244,7 @@ class ExportCsv extends ExportPlugin
$schema_insert .= $csv_separator;
} // end for
$schema_insert = trim(
$GLOBALS['PMA_String']->substr($schema_insert, 0, -1)
/*overload*/mb_substr($schema_insert, 0, -1)
);
if (! PMA_exportOutputHandler($schema_insert . $csv_terminated)) {
return false;

View File

@ -343,7 +343,7 @@ class ExportLatex extends ExportPlugin
. self::texEscape(stripslashes($columns_alias[$i])) . '}} & ';
}
$buffer = $GLOBALS['PMA_String']->substr($buffer, 0, -2)
$buffer = /*overload*/mb_substr($buffer, 0, -2)
. '\\\\ \\hline \hline ';
if (! PMA_exportOutputHandler($buffer . ' \\endfirsthead ' . $crlf)) {
return false;
@ -566,9 +566,6 @@ class ExportLatex extends ExportPlugin
return false;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$fields = $GLOBALS['dbi']->getColumns($db, $table);
foreach ($fields as $row) {
$extracted_columnspec
@ -620,16 +617,16 @@ class ExportLatex extends ExportPlugin
}
$local_buffer = self::texEscape($local_buffer);
if ($row['Key']=='PRI') {
$pos = $pmaString->strpos($local_buffer, "\000");
$pos = /*overload*/mb_strpos($local_buffer, "\000");
$local_buffer = '\\textit{'
. $pmaString->substr($local_buffer, 0, $pos)
. '}' . $pmaString->substr($local_buffer, $pos);
. /*overload*/mb_substr($local_buffer, 0, $pos)
. '}' . /*overload*/mb_substr($local_buffer, $pos);
}
if (in_array($field_name, $unique_keys)) {
$pos = $pmaString->strpos($local_buffer, "\000");
$pos = /*overload*/mb_strpos($local_buffer, "\000");
$local_buffer = '\\textbf{'
. $pmaString->substr($local_buffer, 0, $pos)
. '}' . $pmaString->substr($local_buffer, $pos);
. /*overload*/mb_substr($local_buffer, 0, $pos)
. '}' . /*overload*/mb_substr($local_buffer, $pos);
}
$buffer = str_replace("\000", ' & ', $local_buffer);
$buffer .= ' \\\\ \\hline ' . $crlf;

View File

@ -791,15 +791,12 @@ class ExportSql extends ExportPlugin
if (PMA_DRIZZLE) {
$create_query .= ' COLLATE ' . $collation;
} else {
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strpos($collation, '_')) {
if (/*overload*/mb_strpos($collation, '_')) {
$create_query .= ' DEFAULT CHARACTER SET '
. $pmaString->substr(
. /*overload*/mb_substr(
$collation,
0,
$pmaString->strpos($collation, '_')
/*overload*/mb_strpos($collation, '_')
)
. ' COLLATE ' . $collation;
} else {
@ -1217,20 +1214,17 @@ class ExportSql extends ExportPlugin
return $this->_exportComment(__('in use') . '(' . $tmp_error . ')');
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$warning = '';
if ($result != false && ($row = $GLOBALS['dbi']->fetchRow($result))) {
$create_query = $row[1];
unset($row);
// Convert end of line chars to one that we want (note that MySQL
// doesn't return query it will accept in all cases)
if ($pmaString->strpos($create_query, "(\r\n ")) {
if (/*overload*/mb_strpos($create_query, "(\r\n ")) {
$create_query = str_replace("\r\n", $crlf, $create_query);
} elseif ($pmaString->strpos($create_query, "(\n ")) {
} elseif (/*overload*/mb_strpos($create_query, "(\n ")) {
$create_query = str_replace("\n", $crlf, $create_query);
} elseif ($pmaString->strpos($create_query, "(\r ")) {
} elseif (/*overload*/mb_strpos($create_query, "(\r ")) {
$create_query = str_replace("\r", $crlf, $create_query);
}
@ -1444,9 +1438,9 @@ class ExportSql extends ExportPlugin
$sql_lines[$k]
)) {
//adds auto increment value
$increment_value = $pmaString->substr(
$increment_value = /*overload*/mb_substr(
$sql_lines[$k],
$pmaString->strpos($sql_lines[$k], "AUTO_INCREMENT")
/*overload*/mb_strpos($sql_lines[$k], "AUTO_INCREMENT")
);
$increment_value_array = explode(' ', $increment_value);
$sql_auto_increments .= $increment_value_array[0] . ";";
@ -1455,7 +1449,7 @@ class ExportSql extends ExportPlugin
}
if ($sql_auto_increments != '') {
$sql_auto_increments = $pmaString->substr(
$sql_auto_increments = /*overload*/mb_substr(
$sql_auto_increments, 0, -1
) . ';';
}
@ -1481,7 +1475,7 @@ class ExportSql extends ExportPlugin
if (! $first) {
$sql_constraints .= $crlf;
}
$posConstraint = $pmaString->strpos(
$posConstraint = /*overload*/mb_strpos(
$sql_lines[$j],
'CONSTRAINT'
);
@ -2062,8 +2056,6 @@ class ExportSql extends ExportPlugin
$separator = ';';
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
while ($row = $GLOBALS['dbi']->fetchRow($result)) {
if ($current_row == 0) {
$head = $this->_possibleCRLF()
@ -2182,7 +2174,7 @@ class ExportSql extends ExportPlugin
. implode(', ', $values) . ')';
} else {
$insert_line = '(' . implode(', ', $values) . ')';
$insertLineSize = $pmaString->strlen($insert_line);
$insertLineSize = /*overload*/mb_strlen($insert_line);
$sql_max_size = $GLOBALS['sql_max_query_size'];
if (isset($sql_max_size)
&& $sql_max_size > 0
@ -2196,7 +2188,7 @@ class ExportSql extends ExportPlugin
$insert_line = $schema_insert . $insert_line;
}
}
$query_size += $pmaString->strlen($insert_line);
$query_size += /*overload*/mb_strlen($insert_line);
// Other inserts case
} else {
$insert_line = $schema_insert
@ -2397,9 +2389,6 @@ class ExportSql extends ExportPlugin
$on_seen = false;
$size = $tokens['len'];
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
for ($i = 0; $i < $size && !$query_end; $i++) {
$type = $tokens[$i]['type'];
$data = $tokens[$i]['data'];
@ -2409,9 +2398,9 @@ class ExportSql extends ExportPlugin
$d_unq = PMA_Util::unQuote($data);
$d_unq_next = PMA_Util::unQuote($data_next);
$d_unq_prev = PMA_Util::unQuote($data_prev);
$d_upper = $pmaString->strtoupper($d_unq);
$d_upper_next = $pmaString->strtoupper($d_unq_next);
$d_upper_prev = $pmaString->strtoupper($d_unq_prev);
$d_upper = /*overload*/mb_strtoupper($d_unq);
$d_upper_next = /*overload*/mb_strtoupper($d_unq_next);
$d_upper_prev = /*overload*/mb_strtoupper($d_unq_prev);
$pos = $tokens[$i]['pos'] + $offset;
if ($type === 'alpha_reservedWord') {
if ($query_type === ''
@ -2564,8 +2553,8 @@ class ExportSql extends ExportPlugin
if (!empty($GLOBALS['sql_backquotes'])) {
$alias = PMA_Util::backquote($alias);
}
$alias_len = $GLOBALS['PMA_String']->strlen($alias);
$data_len = $GLOBALS['PMA_String']->strlen($data);
$alias_len = /*overload*/mb_strlen($alias);
$data_len = /*overload*/mb_strlen($data);
if (isset($offset)) {
$offset += ($alias_len - $data_len);
}

View File

@ -9,7 +9,7 @@
if (! defined('PHPMYADMIN')) {
exit;
}
if (!$GLOBALS['PMA_String']->strlen($GLOBALS['db'])) { /* Can't do server export */
if (!/*overload*/mb_strlen($GLOBALS['db'])) { /* Can't do server export */
$GLOBALS['skip_import'] = true;
return;
}
@ -274,8 +274,7 @@ class ExportXml extends ExportPlugin
. $trigger['name'] . '">' . $crlf;
// Do some formatting
$code = $GLOBALS['PMA_String']
->substr(rtrim($code), 0, -3);
$code = /*overload*/mb_substr(rtrim($code), 0, -3);
$code = " " . htmlspecialchars($code);
$code = str_replace("\n", "\n ", $code);

View File

@ -82,11 +82,9 @@ class TableProperty
*/
function getPureType()
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$pos = $pmaString->strpos($this->type, "(");
$pos = /*overload*/mb_strpos($this->type, "(");
if ($pos > 0) {
return $pmaString->substr($this->type, 0, $pos);
return /*overload*/mb_substr($this->type, 0, $pos);
}
return $this->type;
}
@ -118,30 +116,28 @@ class TableProperty
*/
function getDotNetPrimitiveType()
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strpos($this->type, "int") === 0) {
if (/*overload*/mb_strpos($this->type, "int") === 0) {
return "int";
}
if ($pmaString->strpos($this->type, "longtext") === 0) {
if (/*overload*/mb_strpos($this->type, "longtext") === 0) {
return "string";
}
if ($pmaString->strpos($this->type, "long") === 0) {
if (/*overload*/mb_strpos($this->type, "long") === 0) {
return "long";
}
if ($pmaString->strpos($this->type, "char") === 0) {
if (/*overload*/mb_strpos($this->type, "char") === 0) {
return "string";
}
if ($pmaString->strpos($this->type, "varchar") === 0) {
if (/*overload*/mb_strpos($this->type, "varchar") === 0) {
return "string";
}
if ($pmaString->strpos($this->type, "text") === 0) {
if (/*overload*/mb_strpos($this->type, "text") === 0) {
return "string";
}
if ($pmaString->strpos($this->type, "tinyint") === 0) {
if (/*overload*/mb_strpos($this->type, "tinyint") === 0) {
return "bool";
}
if ($pmaString->strpos($this->type, "datetime") === 0) {
if (/*overload*/mb_strpos($this->type, "datetime") === 0) {
return "DateTime";
}
return "unknown";
@ -154,30 +150,28 @@ class TableProperty
*/
function getDotNetObjectType()
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($pmaString->strpos($this->type, "int") === 0) {
if (/*overload*/mb_strpos($this->type, "int") === 0) {
return "Int32";
}
if ($pmaString->strpos($this->type, "longtext") === 0) {
if (/*overload*/mb_strpos($this->type, "longtext") === 0) {
return "String";
}
if ($pmaString->strpos($this->type, "long") === 0) {
if (/*overload*/mb_strpos($this->type, "long") === 0) {
return "Long";
}
if ($pmaString->strpos($this->type, "char") === 0) {
if (/*overload*/mb_strpos($this->type, "char") === 0) {
return "String";
}
if ($pmaString->strpos($this->type, "varchar") === 0) {
if (/*overload*/mb_strpos($this->type, "varchar") === 0) {
return "String";
}
if ($pmaString->strpos($this->type, "text") === 0) {
if (/*overload*/mb_strpos($this->type, "text") === 0) {
return "String";
}
if ($pmaString->strpos($this->type, "tinyint") === 0) {
if (/*overload*/mb_strpos($this->type, "tinyint") === 0) {
return "Boolean";
}
if ($pmaString->strpos($this->type, "datetime") === 0) {
if (/*overload*/mb_strpos($this->type, "datetime") === 0) {
return "DateTime";
}
return "Unknown";
@ -190,7 +184,7 @@ class TableProperty
*/
function getIndexName()
{
if ($GLOBALS['PMA_String']->strlen($this->key) > 0) {
if (/*overload*/mb_strlen($this->key) > 0) {
return "index=\""
. htmlspecialchars($this->name, ENT_COMPAT, 'UTF-8')
. "\"";

View File

@ -104,9 +104,6 @@ class ImportCsv extends AbstractImportCsv
// but we use directly from $_POST
global $error, $timeout_passed, $finished, $message;
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$replacements = array(
'\\n' => "\n",
'\\t' => "\t",
@ -118,7 +115,7 @@ class ImportCsv extends AbstractImportCsv
$csv_new_line = strtr($csv_new_line, $replacements);
$param_error = false;
if ($pmaString->strlen($csv_terminated) < 1) {
if (/*overload*/mb_strlen($csv_terminated) < 1) {
$message = PMA_Message::error(
__('Invalid parameter for CSV import: %s')
);
@ -133,21 +130,21 @@ class ImportCsv extends AbstractImportCsv
// confuses this script.
// But the parser won't work correctly with strings so we allow just
// one character.
} elseif ($pmaString->strlen($csv_enclosed) > 1) {
} elseif (/*overload*/mb_strlen($csv_enclosed) > 1) {
$message = PMA_Message::error(
__('Invalid parameter for CSV import: %s')
);
$message->addParam(__('Columns enclosed with'), false);
$error = true;
$param_error = true;
} elseif ($pmaString->strlen($csv_escaped) != 1) {
} elseif (/*overload*/mb_strlen($csv_escaped) != 1) {
$message = PMA_Message::error(
__('Invalid parameter for CSV import: %s')
);
$message->addParam(__('Columns escaped with'), false);
$error = true;
$param_error = true;
} elseif ($pmaString->strlen($csv_new_line) != 1
} elseif (/*overload*/mb_strlen($csv_new_line) != 1
&& $csv_new_line != 'auto'
) {
$message = PMA_Message::error(
@ -238,7 +235,7 @@ class ImportCsv extends AbstractImportCsv
$col_count = 0;
$max_cols = 0;
$csv_terminated_len = $pmaString->strlen($csv_terminated);
$csv_terminated_len = /*overload*/mb_strlen($csv_terminated);
while (! ($finished && $i >= $len) && ! $error && ! $timeout_passed) {
$data = PMA_importGetNextChunk();
if ($data === false) {
@ -254,7 +251,7 @@ class ImportCsv extends AbstractImportCsv
// Force a trailing new line at EOF to prevent parsing problems
if ($finished && $buffer) {
$finalch = $pmaString->substr($buffer, -1);
$finalch = /*overload*/mb_substr($buffer, -1);
if ($csv_new_line == 'auto'
&& $finalch != "\r"
&& $finalch != "\n"
@ -270,19 +267,20 @@ class ImportCsv extends AbstractImportCsv
// Do not parse string when we're not at the end
// and don't have new line inside
if (($csv_new_line == 'auto'
&& $pmaString->strpos($buffer, "\r") === false
&& $pmaString->strpos($buffer, "\n") === false)
&& /*overload*/mb_strpos($buffer, "\r") === false
&& /*overload*/mb_strpos($buffer, "\n") === false)
|| ($csv_new_line != 'auto'
&& $pmaString->strpos($buffer, $csv_new_line) === false)
&& /*overload*/mb_strpos($buffer, $csv_new_line) === false)
) {
continue;
}
}
// Current length of our buffer
$len = $pmaString->strlen($buffer);
$len = /*overload*/mb_strlen($buffer);
// Currently parsed char
$ch = $buffer[$i];
$ch = mb_substr($buffer, $i, 1);
if ($csv_terminated_len > 1 && $ch == $csv_terminated[0]) {
$ch = $this->readCsvTerminatedString(
$buffer, $ch, $i, $csv_terminated_len
@ -312,7 +310,7 @@ class ImportCsv extends AbstractImportCsv
}
$values[] = '';
$i++;
$ch = $buffer[$i];
$ch = mb_substr($buffer, $i, 1);
if ($csv_terminated_len > 1 && $ch == $csv_terminated[0]) {
$ch = $this->readCsvTerminatedString(
$buffer, $ch, $i, $csv_terminated_len
@ -330,7 +328,7 @@ class ImportCsv extends AbstractImportCsv
}
$need_end = true;
$i++;
$ch = $buffer[$i];
$ch = mb_substr($buffer, $i, 1);
if ($csv_terminated_len > 1 && $ch == $csv_terminated[0]) {
$ch = $this->readCsvTerminatedString(
$buffer, $ch, $i, $csv_terminated_len
@ -356,7 +354,7 @@ class ImportCsv extends AbstractImportCsv
break;
}
$i++;
$ch = $buffer[$i];
$ch = mb_substr($buffer, $i, 1);
if ($csv_terminated_len > 1
&& $ch == $csv_terminated[0]
) {
@ -382,7 +380,7 @@ class ImportCsv extends AbstractImportCsv
break;
}
$i++;
$ch = $buffer[$i];
$ch = mb_substr($buffer, $i, 1);
if ($csv_terminated_len > 1 && $ch == $csv_terminated[0]) {
$ch = $this->readCsvTerminatedString(
$buffer, $ch, $i, $csv_terminated_len
@ -398,7 +396,7 @@ class ImportCsv extends AbstractImportCsv
if ($fail) {
$i = $fallbacki;
$ch = $buffer[$i];
$ch = mb_substr($buffer, $i, 1);
if ($csv_terminated_len > 1 && $ch == $csv_terminated[0]) {
$i += $csv_terminated_len-1;
}
@ -410,7 +408,7 @@ class ImportCsv extends AbstractImportCsv
$ch = null;
} elseif ($i == $len - 1) {
$i = $fallbacki;
$ch = $buffer[$i];
$ch = mb_substr($buffer, $i, 1);
if ($csv_terminated_len > 1
&& $ch == $csv_terminated[0]
) {
@ -419,7 +417,7 @@ class ImportCsv extends AbstractImportCsv
break;
} else {
$i++;
$ch = $buffer[$i];
$ch = mb_substr($buffer, $i, 1);
if ($csv_terminated_len > 1
&& $ch == $csv_terminated[0]
) {
@ -441,7 +439,7 @@ class ImportCsv extends AbstractImportCsv
if ($ch == $csv_terminated) {
if ($i == $len - 1) {
$i = $fallbacki;
$ch = $buffer[$i];
$ch = mb_substr($buffer, $i, 1);
if ($csv_terminated_len > 1
&& $ch == $csv_terminated[0]
) {
@ -450,7 +448,7 @@ class ImportCsv extends AbstractImportCsv
break;
}
$i++;
$ch = $buffer[$i];
$ch = mb_substr($buffer, $i, 1);
if ($csv_terminated_len > 1
&& $ch == $csv_terminated[0]
) {
@ -473,7 +471,7 @@ class ImportCsv extends AbstractImportCsv
if ($i >= ($len - 2) && ! $finished) {
break; // We need more data to decide new line
}
if ($buffer[$i + 1] == "\n") {
if (mb_substr($buffer, $i+1, 1) == "\n") {
$i++;
}
}
@ -544,11 +542,11 @@ class ImportCsv extends AbstractImportCsv
$line++;
$csv_finish = false;
$values = array();
$buffer = $pmaString->substr($buffer, $i + 1);
$len = $pmaString->strlen($buffer);
$buffer = /*overload*/mb_substr($buffer, $i + 1);
$len = /*overload*/mb_strlen($buffer);
$i = 0;
$lasti = -1;
$ch = $buffer[0];
$ch = mb_substr($buffer, 0);
}
} // End of parser loop
} // End of import loop
@ -580,7 +578,7 @@ class ImportCsv extends AbstractImportCsv
}
}
if ($pmaString->strlen($db)) {
if (/*overload*/mb_strlen($db)) {
$result = $GLOBALS['dbi']->fetchResult('SHOW TABLES');
$tbl_name = 'TABLE ' . (count($result) + 1);
} else {
@ -653,7 +651,7 @@ class ImportCsv extends AbstractImportCsv
{
for ($j = 0; $j < $csv_terminated_len - 1; $j++) {
$i++;
$ch .= $buffer[$i];
$ch .= mb_substr($buffer, $i, 1);
}
return $ch;
}

View File

@ -93,15 +93,12 @@ class ImportMediawiki extends ImportPlugin
// Initialize the name of the current table
$cur_table_name = "";
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
while (! $finished && ! $error && ! $timeout_passed ) {
$data = PMA_importGetNextChunk();
if ($data === false) {
// Subtract data we didn't handle yet and stop processing
$GLOBALS['offset'] -= $pmaString->strlen($buffer);
$GLOBALS['offset'] -= /*overload*/mb_strlen($buffer);
break;
} elseif ($data === true) {
// Handle rest of buffer
@ -111,7 +108,7 @@ class ImportMediawiki extends ImportPlugin
unset($data);
// Don't parse string if we're not at the end
// and don't have a new line inside
if ($pmaString->strpos($buffer, $mediawiki_new_line) === false ) {
if (/*overload*/mb_strpos($buffer, $mediawiki_new_line) === false ) {
continue;
}
}
@ -145,12 +142,12 @@ class ImportMediawiki extends ImportPlugin
$matches = array();
// Check beginning of comment
if (! strcmp($pmaString->substr($cur_buffer_line, 0, 4), "<!--")) {
if (! strcmp(/*overload*/mb_substr($cur_buffer_line, 0, 4), "<!--")) {
$inside_comment = true;
continue;
} elseif ($inside_comment) {
// Check end of comment
if (!strcmp($pmaString->substr($cur_buffer_line, 0, 4), "-->")) {
if (!strcmp(/*overload*/mb_substr($cur_buffer_line, 0, 4), "-->")) {
// Only data comments are closed. The structure comments
// will be closed when a data comment begins (in order to
// skip structure tables)
@ -206,9 +203,9 @@ class ImportMediawiki extends ImportPlugin
$in_table_header = false;
// End processing because the current line does not
// contain any column information
} elseif ($pmaString->substr($cur_buffer_line, 0, 2) === '|-'
|| $pmaString->substr($cur_buffer_line, 0, 2) === '|+'
|| $pmaString->substr($cur_buffer_line, 0, 2) === '|}'
} elseif (/*overload*/mb_substr($cur_buffer_line, 0, 2) === '|-'
|| /*overload*/mb_substr($cur_buffer_line, 0, 2) === '|+'
|| /*overload*/mb_substr($cur_buffer_line, 0, 2) === '|}'
) {
// Check begin row or end table
@ -230,7 +227,7 @@ class ImportMediawiki extends ImportPlugin
$cur_temp_line = array();
// No more processing required at the end of the table
if ($pmaString->substr($cur_buffer_line, 0, 2) === '|}') {
if (/*overload*/mb_substr($cur_buffer_line, 0, 2) === '|}') {
$current_table = array(
$cur_table_name,
$cur_temp_table_headers,
@ -266,7 +263,7 @@ class ImportMediawiki extends ImportPlugin
// A '|' inside an invalid link should not
// be mistaken as delimiting cell parameters
if ($pmaString->strpos($cell_data[0], '[[') === true ) {
if (/*overload*/mb_strpos($cell_data[0], '[[') === true ) {
if (count($cell_data) == 1) {
$cell = $cell_data[0];
} else {
@ -278,8 +275,8 @@ class ImportMediawiki extends ImportPlugin
$cell = trim($cell);
$col_start_chars = array( "|", "!");
foreach ($col_start_chars as $col_start_char) {
if ($pmaString->strpos($cell, $col_start_char) === 0) {
$cell = trim($pmaString->substr($cell, 1));
if (/*overload*/mb_strpos($cell, $col_start_char) === 0) {
$cell = trim(/*overload*/mb_substr($cell, 1));
}
}

View File

@ -69,9 +69,6 @@ class ImportShp extends ImportPlugin
global $db, $error, $finished, $compression,
$import_file, $local_import_file, $message;
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$GLOBALS['finished'] = false;
$shp = new PMA_ShapeFile(1);
@ -110,8 +107,8 @@ class ImportShp extends ImportPlugin
$temp_dbf_file = true;
// Replace the .dbf with .*, as required
// by the bsShapeFiles library.
$file_name = $pmaString->substr(
$dbf_file_path, 0, $pmaString->strlen($dbf_file_path) - 4
$file_name = /*overload*/mb_substr(
$dbf_file_path, 0, /*overload*/mb_strlen($dbf_file_path) - 4
) . '.*';
$shp->FileName = $file_name;
}
@ -124,10 +121,10 @@ class ImportShp extends ImportPlugin
// to load extra data.
// Replace the .shp with .*,
// so the bsShapeFiles library correctly locates .dbf file.
$file_name = $pmaString->substr(
$file_name = /*overload*/mb_substr(
$import_file,
0,
$pmaString->strlen($import_file) - 4
/*overload*/mb_strlen($import_file) - 4
) . '.*';
$shp->FileName = $file_name;
}
@ -261,7 +258,7 @@ class ImportShp extends ImportPlugin
}
// Set table name based on the number of tables
if ($pmaString->strlen($db)) {
if (/*overload*/mb_strlen($db)) {
$result = $GLOBALS['dbi']->fetchResult('SHOW TABLES');
$table_name = 'TABLE ' . (count($result) + 1);
} else {
@ -278,7 +275,7 @@ class ImportShp extends ImportPlugin
$analyses[$table_no][FORMATTEDSQL][$spatial_col] = true;
// Set database name to the currently selected one, if applicable
if ($pmaString->strlen($db)) {
if (/*overload*/mb_strlen($db)) {
$db_name = $db;
$options = array('create_db' => false);
} else {

View File

@ -21,6 +21,47 @@ require_once 'libraries/plugins/ImportPlugin.class.php';
*/
class ImportSql extends ImportPlugin
{
const BIG_VALUE = 2147483647;
const READ_MB_FALSE = 0;
const READ_MB_TRUE = 1;
private $_delimiter;
private $_delimiterLength;
private $_delimiterPosition = false;
private $_queryBeginPosition = 0;
private $_isInString = false;
private $_quote = null;
private $_isInComment = false;
private $_openingComment = null;
private $_isInDelimiter = false;
private $_delimiterKeyword = 'DELIMITER ';
private $_readMb = self::READ_MB_FALSE;
private $_data = null;
private $_dataLength = 0;
//@todo Move this part in string functions definition file.
private $_stringFunctions = array(
self::READ_MB_FALSE => array(
'substr' => 'substr',
'strlen' => 'strlen',
'strpos' => 'strpos',
),
self::READ_MB_TRUE => array(
'substr' => 'mb_substr',
'strlen' => 'mb_strlen',
'strpos' => 'mb_strpos',
),
);
private $_stringFctToUse = false;
/**
* Constructor
*/
@ -91,6 +132,13 @@ class ImportSql extends ImportPlugin
);
$generalOptions->addProperty($leaf);
$leaf = new BoolPropertyItem();
$leaf->setName("read_as_multibytes");
$leaf->setText(
__('Read as multibytes')
);
$generalOptions->addProperty($leaf);
// add the main group to the root group
$importSpecificOptions->addProperty($generalOptions);
// set the options for the import plugin property item
@ -100,6 +148,185 @@ class ImportSql extends ImportPlugin
$this->properties = $importPluginProperties;
}
/**
* Look for end of string
*
* @return bool End of string found
*/
private function _searchStringEnd()
{
//Search for closing quote
$posClosingString = $this->_stringFctToUse['strpos'](
$this->_data, $this->_quote, $this->_delimiterPosition
);
if (false === $posClosingString) {
return false;
}
//Quotes escaped by quote will be considered as 2 consecutive strings
//and won't pass in this loop.
$posEscape = $posClosingString-1;
while ($this->_stringFctToUse['substr']($this->_data, $posEscape, 1) == '\\'
) {
$posEscape--;
}
// Odd count means it was escaped
$quoteEscaped = (((($posClosingString - 1) - $posEscape) % 2) === 1);
//Move after the escaped guote.
$this->_delimiterPosition = $posClosingString + 1;
if ($quoteEscaped) {
return true;
}
$this->_isInString = false;
$this->_quote = null;
return true;
}
/**
* Return the position of first SQL delimiter or false if no SQL delimiter found.
*
* @return int|bool Delimiter position or false if no delimiter found
*/
private function _findDelimiterPosition()
{
$firstSearchChar = null;
$firstSqlDelimiter = null;
$matches = null;
/* while not at end of line */
while ($this->_delimiterPosition < $this->_dataLength) {
if ($this->_isInString) {
if (false === $this->_searchStringEnd()) {
return false;
}
continue;
}
if ($this->_isInComment) {
if (in_array($this->_openingComment, array('#', '-- '))) {
$posClosingComment = $this->_stringFctToUse['strpos'](
$this->_data,
"\n",
$this->_delimiterPosition
);
if (false === $posClosingComment) {
return false;
}
//Move after the end of the line.
$this->_delimiterPosition = $posClosingComment + 1;
$this->_isInComment = false;
$this->_openingComment = null;
} elseif ('/*' === $this->_openingComment) {
//Search for closing comment
$posClosingComment = $this->_stringFctToUse['strpos'](
$this->_data,
'*/',
$this->_delimiterPosition
);
if (false === $posClosingComment) {
return false;
}
//Move after closing comment.
$this->_delimiterPosition = $posClosingComment + 2;
$this->_isInComment = false;
$this->_openingComment = null;
} else {
//We shouldn't be able to come here.
//throw new Exception('Unknown case.');
break;
}
continue;
}
if ($this->_isInDelimiter) {
//Search for new line.
if (!preg_match(
"/^(.*)\n/",
$this->_stringFctToUse['substr'](
$this->_data,
$this->_delimiterPosition
),
$matches,
PREG_OFFSET_CAPTURE
)) {
return false;
}
$this->_setDelimiter($matches[1][0]);
//Start after delimiter and new line.
$this->_queryBeginPosition = $this->_delimiterPosition
+ $matches[1][1] + $this->_delimiterLength + 1;
$this->_delimiterPosition = $this->_queryBeginPosition;
$this->_isInDelimiter = false;
$firstSqlDelimiter = null;
$firstSearchChar = null;
continue;
}
list($matches, $firstSearchChar) = $this->_searchSpecialChars(
$this->_data,
$firstSearchChar,
$matches
);
$firstSqlDelimiter = $this->_searchSqlDelimiter(
$this->_data,
$firstSqlDelimiter
);
if (false === $firstSqlDelimiter && false === $firstSearchChar) {
return false;
}
//If first char is delimiter.
if (false === $firstSearchChar
|| (false !== $firstSqlDelimiter && $firstSqlDelimiter < $firstSearchChar)
) {
$this->_delimiterPosition = $firstSqlDelimiter;
return true;
}
//Else first char is result of preg_match.
$specialChars = $matches[1][0];
//If string is opened.
if (in_array($specialChars, array('\'', '"', '`'))) {
$this->_isInString = true;
$this->_quote = $specialChars;
//Move after quote.
$this->_delimiterPosition = $firstSearchChar + 1;
continue;
}
//If comment is opened.
if (in_array($specialChars, array('#', '-- ', '/*'))) {
$this->_isInComment = true;
$this->_openingComment = $specialChars;
//Move after comment opening.
$this->_delimiterPosition = $firstSearchChar
+ $this->_stringFctToUse['strlen']($specialChars);
continue;
}
//If DELIMITER is found.
if ($specialChars === $this->_delimiterKeyword) {
$this->_isInDelimiter = true;
$this->_delimiterPosition = $firstSearchChar
+ $this->_stringFctToUse['strlen']($specialChars);
continue;
}
}
return false;
}
/**
* Handles the whole import logic
*
@ -111,42 +338,23 @@ class ImportSql extends ImportPlugin
{
global $error, $timeout_passed;
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$buffer = '';
// Defaults for parser
$sql = '';
$start_pos = 0;
$posInQueryString = 0;
$len= 0;
$big_value = 2147483647;
// include the space because it's mandatory
$delimiter_keyword = 'DELIMITER ';
$length_of_delimiter_keyword = $pmaString->strlen($delimiter_keyword);
//Manage multibytes or not
if (isset($_REQUEST['sql_read_as_multibytes'])) {
$this->_readMb = self::READ_MB_TRUE;
}
$this->_stringFctToUse = $this->_stringFunctions[$this->_readMb];
if (isset($_POST['sql_delimiter'])) {
$sql_delimiter = $_POST['sql_delimiter'];
$this->_setDelimiter($_POST['sql_delimiter']);
} else {
$sql_delimiter = ';';
$this->_setDelimiter(';');
}
// Handle compatibility options
$sql_modes = array();
if (isset($_REQUEST['sql_compatibility'])
&& 'NONE' != $_REQUEST['sql_compatibility']
) {
$sql_modes[] = $_REQUEST['sql_compatibility'];
}
if (isset($_REQUEST['sql_no_auto_value_on_zero'])) {
$sql_modes[] = 'NO_AUTO_VALUE_ON_ZERO';
}
if (count($sql_modes) > 0) {
$GLOBALS['dbi']->tryQuery(
'SET SQL_MODE="' . implode(',', $sql_modes) . '"'
);
}
unset($sql_modes);
$this->_setSQLMode($GLOBALS['dbi'], $_REQUEST);
//Initialise data.
$this->_setData(null);
/**
* will be set in PMA_importGetNextChunk()
@ -154,332 +362,196 @@ class ImportSql extends ImportPlugin
* @global boolean $GLOBALS['finished']
*/
$GLOBALS['finished'] = false;
$delimiterFound = false;
while (! ($GLOBALS['finished'] && $posInQueryString >= $len)
&& ! $error
&& ! $timeout_passed
) {
$data = PMA_importGetNextChunk();
if ($data === false) {
// subtract data we didn't handle yet and stop processing
$GLOBALS['offset'] -= $pmaString->strlen($buffer);
break;
} elseif ($data === true) {
// Handle rest of buffer
} else {
// Append new data to buffer
$buffer .= $data;
// free memory
unset($data);
// Do not parse string when we're not at the end
// and don't have ; inside
if ($pmaString->strpos($buffer, $sql_delimiter, $posInQueryString) === false
&& ! $GLOBALS['finished']
) {
continue;
}
}
// Convert CR (but not CRLF) to LF otherwise all queries
// may not get executed on some platforms
$buffer = preg_replace("/\r($|[^\n])/", "\n$1", $buffer);
// Current length of our buffer
$len = $pmaString->strlen($buffer);
// Grab some SQL queries out of it
while ($posInQueryString < $len) {
$found_delimiter = false;
// Find first interesting character
$old_i = $posInQueryString;
// this is about 7 times faster that looking for each sequence i
// one by one with strpos()
$posPattern = $pmaString->pregStrpos(
'/(\'|"|#|-- |\/\*|`|(?i)(?<![A-Z0-9_])'
. $delimiter_keyword . ')/',
$buffer,
$posInQueryString
);
if (false !== $posPattern) {
// in $matches, index 0 contains the match for the complete
// expression but we don't use it
$first_position = $posPattern;
} else {
$first_position = $big_value;
}
// the cost of doing this one with preg_match() would be too high
$first_sql_delimiter = $pmaString->strpos(
$buffer,
$sql_delimiter,
$posInQueryString
);
if ($first_sql_delimiter === false) {
$first_sql_delimiter = $big_value;
} else {
$found_delimiter = true;
}
// set $i to the position of the first quote,
// comment.start or delimiter found
$posInQueryString = min($first_position, $first_sql_delimiter);
if ($posInQueryString == $big_value) {
// none of the above was found in the string
$posInQueryString = $old_i;
if (! $GLOBALS['finished']) {
break;
}
// at the end there might be some whitespace...
if (trim($buffer) == '') {
$buffer = '';
$len = 0;
break;
}
// We hit end of query, go there!
$posInQueryString = $pmaString->strlen($buffer) - 1;
}
// Grab current character
//$ch = $buffer[$i]; //Don't use this syntax, because of UTF8 strings
$ch = $pmaString->substr($buffer, $posInQueryString, 1);
// Quotes
if ($pmaString->strpos('\'"`', $ch) !== false) {
$quote = $ch;
$endq = false;
while (! $endq) {
// Find next quote
$posQuote = $pmaString
->strpos($buffer, $quote, $posInQueryString + 1);
/*
* Behave same as MySQL and accept end of query as end
* of backtick.
* I know this is sick, but MySQL behaves like this:
*
* SELECT * FROM `table
*
* is treated like
*
* SELECT * FROM `table`
*/
if ($posQuote === false && $quote == '`'
&& $found_delimiter
) {
$posQuote = $first_sql_delimiter - 1;
} elseif ($posQuote === false) {// No quote? Too short string
// We hit end of string => unclosed quote,
// but we handle it as end of query
list($endq, $posInQueryString) = $this
->getEndQuoteAndPos($len, $endq, $posInQueryString);
$found_delimiter = false;
break;
}
// Was not the quote escaped?
$posEscape = $posQuote - 1;
while ($pmaString->substr($buffer, $posEscape, 1) == '\\') {
$posEscape--;
}
// Even count means it was not escaped
$endq = (((($posQuote - 1) - $posEscape) % 2) == 0);
// Skip the string
$posInQueryString = $posQuote;
if ($first_sql_delimiter < $posQuote) {
$found_delimiter = false;
}
}
if (! $endq) {
break;
}
$posInQueryString++;
// Aren't we at the end?
if ($GLOBALS['finished'] && $posInQueryString == $len) {
$posInQueryString--;
} else {
continue;
}
}
// Not enough data to decide
if ((($posInQueryString == ($len - 1) && ($ch == '-' || $ch == '/'))
|| ($posInQueryString == ($len - 2) && (($ch == '-'
&& $pmaString->substr($buffer, $posInQueryString + 1, 1) == '-')
|| ($ch == '/'
&& $pmaString->substr($buffer, $posInQueryString + 1, 1) == '*'))))
&& ! $GLOBALS['finished']
) {
while (!$error && !$timeout_passed) {
if (false === $delimiterFound) {
$newData = PMA_importGetNextChunk(200);
if ($newData === false) {
// subtract data we didn't handle yet and stop processing
$GLOBALS['offset'] -= $this->_dataLength;
break;
}
// Comments
if ($ch == '#'
|| ($posInQueryString < ($len - 1) && $ch == '-'
&& $pmaString->substr($buffer, $posInQueryString + 1, 1) == '-'
&& (($posInQueryString < ($len - 2)
&& $pmaString->substr($buffer, $posInQueryString + 2, 1) <= ' ')
|| ($posInQueryString == ($len - 1) && $GLOBALS['finished'])))
|| ($posInQueryString < ($len - 1) && $ch == '/'
&& $pmaString->substr($buffer, $posInQueryString + 1, 1) == '*')
) {
// Copy current string to SQL
if ($start_pos != $posInQueryString) {
$sql .= $pmaString->substr(
$buffer,
$start_pos,
$posInQueryString - $start_pos
);
}
// Skip the rest
$start_of_comment = $posInQueryString;
// do not use PHP_EOL here instead of "\n", because the export
// file might have been produced on a different system
$posInQueryString = $pmaString->strpos(
$buffer,
$ch == '/' ? '*/' : "\n",
$posInQueryString
);
// didn't we hit end of string?
if ($posInQueryString === false) {
if ($GLOBALS['finished']) {
$posInQueryString = $len - 1;
} else {
break;
}
}
// Skip *
if ($ch == '/') {
$posInQueryString++;
}
// Skip last char
$posInQueryString++;
// We need to send the comment part in case we are defining
// a procedure or function and comments in it are valuable
$sql .= $pmaString->substr(
$buffer,
$start_of_comment,
$posInQueryString - $start_of_comment
);
// Next query part will start here
$start_pos = $posInQueryString;
// Aren't we at the end?
if ($posInQueryString == $len) {
$posInQueryString--;
} else {
continue;
}
}
// Change delimiter, if redefined, and skip it
// (don't send to server!)
if (($posInQueryString + $length_of_delimiter_keyword < $len)
&& $pmaString->strtoupper(
$pmaString->substr($buffer, $posInQueryString, $length_of_delimiter_keyword)
) == $delimiter_keyword
) {
// look for EOL on the character immediately after 'DELIMITER '
// (see previous comment about PHP_EOL)
$new_line_pos = $pmaString->strpos(
$buffer,
"\n",
$posInQueryString + $length_of_delimiter_keyword
);
// it might happen that there is no EOL
if (false === $new_line_pos) {
$new_line_pos = $len;
}
$sql_delimiter = $pmaString->substr(
$buffer,
$posInQueryString + $length_of_delimiter_keyword,
$new_line_pos - $posInQueryString - $length_of_delimiter_keyword
);
$posInQueryString = $new_line_pos + 1;
// Next query part will start here
$start_pos = $posInQueryString;
continue;
if ($newData === true) {
$GLOBALS['finished'] = true;
break;
}
// End of SQL
if ($found_delimiter
|| ($GLOBALS['finished']
&& ($posInQueryString == $len - 1))
) {
$tmp_sql = $sql;
if ($start_pos < $len) {
$length_to_grab = $posInQueryString - $start_pos;
//Convert CR (but not CRLF) to LF otherwise all queries
//may not get executed on some platforms
$this->_addData(preg_replace("/\r($|[^\n])/", "\n$1", $newData));
unset($newData);
}
if (! $found_delimiter) {
$length_to_grab++;
}
$tmp_sql .= $pmaString->substr(
$buffer,
$start_pos,
$length_to_grab
);
unset($length_to_grab);
}
// Do not try to execute empty SQL
if (! preg_match('/^([\s]*;)*$/', trim($tmp_sql))) {
$sql = $tmp_sql;
PMA_importRunQuery(
$sql,
$pmaString->substr(
$buffer,
0,
$posInQueryString + $pmaString->strlen($sql_delimiter)
),
false,
$sql_data
);
$buffer = $pmaString->substr(
$buffer,
$posInQueryString + $pmaString->strlen($sql_delimiter)
);
// Reset parser:
$len = $pmaString->strlen($buffer);
$sql = '';
$posInQueryString = 0;
$start_pos = 0;
// Any chance we will get a complete query?
//if ((strpos($buffer, ';') === false)
//&& ! $GLOBALS['finished']) {
if ($pmaString->strpos($buffer, $sql_delimiter) === false
&& ! $GLOBALS['finished']
) {
break;
}
} else {
$posInQueryString++;
$start_pos = $posInQueryString;
}
}
} // End of parser loop
} // End of import loop
// Commit any possible data in buffers
PMA_importRunQuery(
'',
$pmaString->substr($buffer, 0, $len),
false,
$sql_data
);
//Find quotes, comments, delimiter definition or delimiter itself.
$delimiterFound = $this->_findDelimiterPosition();
//If no delimiter found, restart and get more data.
if (false === $delimiterFound) {
continue;
}
PMA_importRunQuery(
$this->_stringFctToUse['substr'](
$this->_data,
$this->_queryBeginPosition,
$this->_delimiterPosition - $this->_queryBeginPosition
), //Query to execute
$this->_stringFctToUse['substr'](
$this->_data,
0,
$this->_delimiterPosition + $this->_delimiterLength
), //Query to display
false,
$sql_data
);
$this->_setData(
$this->_stringFctToUse['substr'](
$this->_data,
$this->_delimiterPosition + $this->_delimiterLength
)
);
}
//Commit any possible data in buffers
PMA_importRunQuery('', $this->_data, false, $sql_data);
PMA_importRunQuery('', '', false, $sql_data);
}
/**
* Get end quote and position
* Handle compatibility options
*
* @param int $len Length
* @param bool $endq End quote
* @param int $position Position
* @param PMA_DatabaseInterface $dbi Database interface
* @param array $request Request array
*
* @return array End quote, position
* @return void
*/
protected function getEndQuoteAndPos($len, $endq, $position)
private function _setSQLMode($dbi, $request)
{
if ($GLOBALS['finished']) {
$endq = true;
$position = $len - 1;
$sql_modes = array();
if (isset($request['sql_compatibility'])
&& 'NONE' != $request['sql_compatibility']
) {
$sql_modes[] = $request['sql_compatibility'];
}
return array($endq, $position);
if (isset($request['sql_no_auto_value_on_zero'])) {
$sql_modes[] = 'NO_AUTO_VALUE_ON_ZERO';
}
if (count($sql_modes) > 0) {
$dbi->tryQuery(
'SET SQL_MODE="' . implode(',', $sql_modes) . '"'
);
}
}
/**
* Look for special chars: comment, string or DELIMITER
*
* @param string $data Data to parse
* @param int $firstSearchChar First found char position
* @param array $matches Special chars found in $data
*
* @return array 0: matches, 1: first found char position
*/
private function _searchSpecialChars(
$data,
$firstSearchChar,
$matches
) {
//Don't look for a string/comment/"DELIMITER" if not found previously
//or if it's still after current position.
if (null === $firstSearchChar
|| (false !== $firstSearchChar && $firstSearchChar < $this->_delimiterPosition)
) {
$bFind = preg_match(
'/(\'|"|#|-- |\/\*|`|(?i)(?<![A-Z0-9_])'
. $this->_delimiterKeyword . ')/',
$this->_stringFctToUse['substr']($data, $this->_delimiterPosition),
$matches,
PREG_OFFSET_CAPTURE
);
if (1 === $bFind) {
$firstSearchChar = $matches[1][1] + $this->_delimiterPosition;
} else {
$firstSearchChar = false;
}
}
return array($matches, $firstSearchChar);
}
/**
* Look for SQL delimiter
*
* @param string $data Data to parse
* @param int $firstSqlDelimiter First found char position
*
* @return int
*/
private function _searchSqlDelimiter($data, $firstSqlDelimiter)
{
//Don't look for the SQL delimiter if not found previously
//or if it's still after current position.
if (null === $firstSqlDelimiter
|| (false !== $firstSqlDelimiter && $firstSqlDelimiter < $this->_delimiterPosition)
) {
// the cost of doing this one with preg_match() would be too high
$firstSqlDelimiter = $this->_stringFctToUse['strpos'](
$data,
$this->_delimiter,
$this->_delimiterPosition
);
}
return $firstSqlDelimiter;
}
/**
* Set new delimiter
*
* @param string $delimiter New delimiter
*
* @return int delimiter length
*/
private function _setDelimiter($delimiter)
{
$this->_delimiter = $delimiter;
$this->_delimiterLength = $this->_stringFctToUse['strlen']($delimiter);
return $this->_delimiterLength;
}
/**
* Set data to parse
*
* @param string $data Data to parse
*
* @return int Data length
*/
private function _setData($data)
{
$this->_data = ltrim($data);
$this->_dataLength = $this->_stringFctToUse['strlen']($this->_data);
$this->_queryBeginPosition = 0;
$this->_delimiterPosition = 0;
return $this->_dataLength;
}
/**
* Add data to parse
*
* @param string $data Data to add to data to parse
*
* @return int Data length
*/
private function _addData($data)
{
$this->_data .= $data;
$this->_dataLength += $this->_stringFctToUse['strlen']($data);
return $this->_dataLength;
}
}

View File

@ -178,7 +178,7 @@ class PMA_DIA extends XMLWriter
PMA_downloadHeader(
$fileName . '.dia',
'application/x-dia-diagram',
$GLOBALS['PMA_String']->strlen($output)
/*overload*/mb_strlen($output)
);
print $output;
}

View File

@ -297,7 +297,7 @@ class PMA_EPS
PMA_downloadHeader(
$fileName . '.eps',
'image/x-eps',
$GLOBALS['PMA_String']->strlen($output)
/*overload*/mb_strlen($output)
);
print $output;
}

View File

@ -345,16 +345,13 @@ class PMA_Schema_PDF extends PMA_PDF
*/
function NbLines($w, $txt)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$cw = &$this->CurrentFont['cw'];
if ($w == 0) {
$w = $this->w - $this->rMargin - $this->x;
}
$wmax = ($w-2 * $this->cMargin) * 1000 / $this->FontSize;
$s = str_replace("\r", '', $txt);
$nb = $pmaString->strlen($s);
$nb = /*overload*/mb_strlen($s);
if ($nb > 0 and $s[$nb-1] == "\n") {
$nb--;
}
@ -376,7 +373,7 @@ class PMA_Schema_PDF extends PMA_PDF
if ($c == ' ') {
$sep = $i;
}
$l += isset($cw[$pmaString->ord($c)])?$cw[$pmaString->ord($c)]:0 ;
$l += isset($cw[/*overload*/mb_ord($c)])?$cw[/*overload*/mb_ord($c)]:0 ;
if ($l > $wmax) {
if ($sep == -1) {
if ($i == $j) {

View File

@ -190,7 +190,7 @@ class PMA_SVG extends XMLWriter
PMA_downloadHeader(
$fileName . '.svg',
'image/svg+xml',
$GLOBALS['PMA_String']->strlen($output)
/*overload*/mb_strlen($output)
);
print $output;
}

View File

@ -58,13 +58,10 @@ abstract class DateFormatTransformationsPlugin extends TransformationsPlugin
$options[0] = 0;
}
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if (empty($options[2])) {
$options[2] = 'local';
} else {
$options[2] = $pmaString->strtolower($options[2]);
$options[2] = /*overload*/mb_strtolower($options[2]);
}
if (empty($options[1])) {
@ -89,8 +86,8 @@ abstract class DateFormatTransformationsPlugin extends TransformationsPlugin
// for example TIMESTAMP(8) means YYYYMMDD)
} else if (preg_match('/^(\d{2}){3,7}$/', $buffer)) {
if ($pmaString->strlen($buffer) == 14
|| $pmaString->strlen($buffer) == 8
if (/*overload*/mb_strlen($buffer) == 14
|| /*overload*/mb_strlen($buffer) == 8
) {
$offset = 4;
} else {
@ -98,12 +95,12 @@ abstract class DateFormatTransformationsPlugin extends TransformationsPlugin
}
$aDate = array();
$aDate['year'] = $pmaString->substr($buffer, 0, $offset);
$aDate['month'] = $pmaString->substr($buffer, $offset, 2);
$aDate['day'] = $pmaString->substr($buffer, $offset + 2, 2);
$aDate['hour'] = $pmaString->substr($buffer, $offset + 4, 2);
$aDate['minute'] = $pmaString->substr($buffer, $offset + 6, 2);
$aDate['second'] = $pmaString->substr($buffer, $offset + 8, 2);
$aDate['year'] = (int)/*overload*/mb_substr($buffer, 0, $offset);
$aDate['month'] = (int)/*overload*/mb_substr($buffer, $offset, 2);
$aDate['day'] = (int)/*overload*/mb_substr($buffer, $offset + 2, 2);
$aDate['hour'] = (int)/*overload*/mb_substr($buffer, $offset + 4, 2);
$aDate['minute'] = (int)/*overload*/mb_substr($buffer, $offset + 6, 2);
$aDate['second'] = (int)/*overload*/mb_substr($buffer, $offset + 8, 2);
if (checkdate($aDate['month'], $aDate['day'], $aDate['year'])) {
$timestamp = mktime(

View File

@ -52,18 +52,16 @@ abstract class SubstringTransformationsPlugin extends TransformationsPlugin
// further operations on $buffer using the $options[] array.
$options = $this->getOptions($options, array(0, 'all', '…'));
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
if ($options[1] != 'all') {
$newtext = $pmaString->substr(
$newtext = /*overload*/mb_substr(
$buffer, $options[0], $options[1]
);
} else {
$newtext = $pmaString->substr($buffer, $options[0]);
$newtext = /*overload*/mb_substr($buffer, $options[0]);
}
$length = $pmaString->strlen($newtext);
$baselength = $pmaString->strlen($buffer);
$length = /*overload*/mb_strlen($newtext);
$baselength = /*overload*/mb_strlen($buffer);
if ($length != $baselength) {
if ($options[0] != 0) {
$newtext = $options[2] . $newtext;

View File

@ -55,7 +55,7 @@ function PMA_getTablesInfo()
$one_table['TABLE_NAME'], ENT_QUOTES
);
$GLOBALS['PMD']['TABLE_TYPE'][$i] = $GLOBALS['PMA_String']->strtoupper(
$GLOBALS['PMD']['TABLE_TYPE'][$i] = /*overload*/mb_strtoupper(
$one_table['ENGINE']
);
@ -471,13 +471,10 @@ function PMA_saveDisplayField($db, $table, $field)
*/
function PMA_addNewRelation($db, $T1, $F1, $T2, $F2, $on_delete, $on_update)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
$tables = $GLOBALS['dbi']->getTablesFull($db, $T1);
$type_T1 = $pmaString->strtoupper($tables[$T1]['ENGINE']);
$type_T1 = /*overload*/mb_strtoupper($tables[$T1]['ENGINE']);
$tables = $GLOBALS['dbi']->getTablesFull($db, $T2);
$type_T2 = $pmaString->strtoupper($tables[$T2]['ENGINE']);
$type_T2 = /*overload*/mb_strtoupper($tables[$T2]['ENGINE']);
// native foreign key
if (PMA_Util::isForeignKeySupported($type_T1)
@ -594,16 +591,13 @@ function PMA_addNewRelation($db, $T1, $F1, $T2, $F2, $on_delete, $on_update)
*/
function PMA_removeRelation($T1, $F1, $T2, $F2)
{
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
list($DB1, $T1) = explode(".", $T1);
list($DB2, $T2) = explode(".", $T2);
$tables = $GLOBALS['dbi']->getTablesFull($DB1, $T1);
$type_T1 = $pmaString->strtoupper($tables[$T1]['ENGINE']);
$type_T1 = /*overload*/mb_strtoupper($tables[$T1]['ENGINE']);
$tables = $GLOBALS['dbi']->getTablesFull($DB2, $T2);
$type_T2 = $pmaString->strtoupper($tables[$T2]['ENGINE']);
$type_T2 = /*overload*/mb_strtoupper($tables[$T2]['ENGINE']);
$try_to_delete_internal_relation = false;

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