Compare commits

...

19 Commits

Author SHA1 Message Date
b3956cb052 Remove "phpMyAdmin" section on home page 2025-04-22 00:06:40 -07:00
5ee643bbbb Remove non-English language support 2025-04-22 00:05:23 -07:00
96a499d4ec Remove unused files 2025-04-21 23:33:16 -07:00
cc0daa1dfe Autofocus on first input of add field form 2025-04-21 22:23:33 -07:00
236997cbc2 Use standard doctype 2025-04-21 22:03:03 -07:00
46e8124525 Remove version check 2025-04-21 21:14:59 -07:00
fe090bc88f Set auth type to "http" by default 2025-04-21 20:42:50 -07:00
41d9e77a5b Expand navigation bar
Gray out trivial database names
2025-04-21 20:40:48 -07:00
2541f5ff58 Fix deprecated preg_replace with eval 2025-04-21 18:29:22 -07:00
83bdc9bbd7 Cleanup indexes bar 2025-04-21 17:58:02 -07:00
ff375abc90 Highlight primary key 2025-04-21 17:49:07 -07:00
6c062ad532 Add Empty and Drop tabs to table view 2025-04-21 01:15:55 -07:00
cc1dc7a822 Enable spatial indexes for Aria 2025-04-21 01:03:11 -07:00
fa1b8d5c94 Remove more table actions dropdown
Add spatial index action icons
2025-04-21 00:26:28 -07:00
083031170c Remove pmahomme theme 2025-04-20 23:00:59 -07:00
126e3c3f71 Make original theme the default 2025-04-20 22:43:50 -07:00
7f805eccc8 Remove curly brace offset syntax 2025-04-20 22:42:37 -07:00
1dac9cc3df Add spatial indexes 2025-04-20 22:24:58 -07:00
65b1b6365e Remove create table shortcut 2025-04-20 22:07:01 -07:00
330 changed files with 285 additions and 660335 deletions

View File

@@ -1,8 +0,0 @@
phpMyAdmin - Credits
====================
Please have a look to the Documentation.txt or
Documentation.html files, or visit
http://www.phpmyadmin.net/home_page/team.php and
http://www.phpmyadmin.net/home_page/about.php

View File

@@ -1,5 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<!DOCTYPE html>
<!--
vim: expandtab ts=4 sw=4 sts=4 tw=78
-->

View File

@@ -1,6 +0,0 @@
phpMyAdmin - Installation
=========================
Please have a look to the Documentation.txt or Documentation.html files.

2
README
View File

@@ -1,7 +1,7 @@
phpMyAdmin - Readme
===================
Version 3.4.11.1
Retro Edition 😎
A set of PHP-scripts to manage MySQL over the web.

View File

@@ -1,37 +0,0 @@
phpMyAdmin - hints for distributing phpMyAdmin
==============================================
This document is intended to give advices to people who want to
redistribute phpMyAdmin inside other software package such as Linux
distribution or some all in one package including web server and MySQL
server.
Generally you can customize some basic aspects (paths to some files and
behavior) in libraries/vendor_config.php.
For example if you want setup script to generate config file in var,
change SETUP_CONFIG_FILE to /var/lib/phpmyadmin/config.inc.php and you
will also probably want to skip directory writable check, so set
SETUP_DIR_WRITABLE to false.
External libraries
------------------
phpMyAdmin includes several external libraries, you might want to
replace them with system ones if they are available, but please note
that you should test whether version you provide is compatible with the
one we ship.
Currently known list of external libraries:
js/jquery
jQuery js framework
js/colorpicker
jQuery based color picker
libraries/php-gettext
php-gettext library
libraries/tcpdf
tcpdf library, modified for our needs!
# vim: et ts=4 sw=4 sts=4 tw=72 spell spelllang=en_us

8
TODO
View File

@@ -1,8 +0,0 @@
phpMyAdmin - Todo
=================
We are currently using the Sourceforge Tracker as Todo list:
http://sourceforge.net/tracker/?atid=377411&group_id=23067&func=browse
-- swix/20010704

View File

@@ -72,12 +72,8 @@ if (is_array($foreignData['disp_row'])) {
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="<?php echo $available_languages[$lang][1]; ?>"
lang="<?php echo $available_languages[$lang][1]; ?>"
dir="<?php echo $text_dir; ?>">
<!DOCTYPE html>
<html lang="en" dir="<?php echo $text_dir; ?>">
<head>
<title>phpMyAdmin</title>

View File

@@ -97,8 +97,7 @@ $replaces = array(
header('Content-type: text/html; charset=utf-8');
echo '<?xml version="1.0" encoding="utf-8"?'.'>';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<link rel="icon" href="./favicon.ico" type="image/x-icon" />

View File

@@ -1,20 +0,0 @@
phpMyAdmin Third Party Contributions
====================================
This directory contains various stuff contributed by users that might be
useful to other. There is no guarantee it will work for you.
Current content of this directory:
packaging
Contains files needed for creating packages for various
distributions. Please prefer official packages from your vendor if
possible.
swekey.sample.conf
SweKey authentication configuration example.
htaccess
Sample Apache configuration for limit access for bots.
# vim: expandtab ts=4 sw=4 sts=4 tw=78

View File

@@ -1,19 +0,0 @@
RewriteEngine on
# Allow only GET and POST verbs
RewriteCond %{REQUEST_METHOD} !^(GET|POST)$ [NC,OR]
# Ban Typical Vulnerability Scanners and others
# Kick out Script Kiddies
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(libwww-perl|curl|wget|python|nikto|wkito|pikto|scan|acunetix).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]
# Ban Search Engines, Crawlers to your administrative panel
# No reasons to access from bots
# Ultimately Better than the useless robots.txt
# Did google respect robots.txt?
# Try google: intitle:phpMyAdmin intext:"Welcome to phpMyAdmin *.*.*" intext:"Log in" -wiki -forum -forums -questions intext:"Cookies must be enabled"
RewriteCond %{HTTP_USER_AGENT} ^.*(AdsBot-Google|ia_archiver|Scooter|Ask.Jeeves|Baiduspider|Exabot|FAST.Enterprise.Crawler|FAST-WebCrawler|www\.neomo\.de|Gigabot|Mediapartners-Google|Google.Desktop|Feedfetcher-Google|Googlebot|heise-IT-Markt-Crawler|heritrix|ibm.com\cs/crawler|ICCrawler|ichiro|MJ12bot|MetagerBot|msnbot-NewsBlogs|msnbot|msnbot-media|NG-Search|lucene.apache.org|NutchCVS|OmniExplorer_Bot|online.link.validator|psbot0|Seekbot|Sensis.Web.Crawler|SEO.search.Crawler|Seoma.\[SEO.Crawler\]|SEOsearch|Snappy|www.urltrends.com|www.tkl.iis.u-tokyo.ac.jp/~crawler|SynooBot|crawleradmin.t-info@telekom.de|TurnitinBot|voyager|W3.SiteSearch.Crawler|W3C-checklink|W3C_Validator|www.WISEnutbot.com|yacybot|Yahoo-MMCrawler|Yahoo\!.DE.Slurp|Yahoo\!.Slurp|YahooSeeker).* [NC]
RewriteRule .* - [F]

View File

@@ -1,44 +0,0 @@
# This is a typical file used to enable Swekey hardware authentication.
#
# To activate the Swekey authentication add the following line to your config.inc.php file.
# $cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey-pma.conf';
# Then rename this file "swekey-pma.conf" and copy it to the /etc directory.
# Add all the Swekey ids you want to grant access to in the file.
# After each Swekey id put the corresponding user name.
#
# If you don't know the id of a Swekey just visit http://www.swekey.com?sel=support
# while your Swekey is connected.
#
# If you need to purchase a Swekey please visit http://phpmyadmin.net/auth_key
# since this link provides funding to PhpMyAdmin.
#
0000000000000000000000000000763A:root
000000000000000000000000000089E4:steve
0000000000000000000000000000231E:scott
#
# It is recommended to include the following lines to contact the
# authentication servers in SSL mode.
#
SERVER_CHECK=https://auth-check-ssl.musbe.net
SERVER_RNDTOKEN=https://auth-rnd-gen-ssl.musbe.net
SERVER_STATUS=https://auth-status-ssl.musbe.net
#
# The path of the root certificate file used to ensure a secure
# communication with the authentication servers in SSL mode.
# If not specified, will use musbe-ca.crt found in your
# phpMyAdmin/libraries/auth/swekey.
#
#CA_FILE=/var/http-root/phpmyadmin/libraries/auth/swekey/musbe-ca.crt
#
# If your server receives many login requests, you can enable the random
# token caching to accelerate the authentication process.
# Token caching is enabled by default.
#
#ENABLE_TOKEN_CACHE=0

View File

@@ -91,12 +91,8 @@ $lang_iso_code = $GLOBALS['available_languages'][$GLOBALS['lang']][1];
// start output
include ('./libraries/header_http.inc.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="<?php echo $lang_iso_code; ?>"
lang="<?php echo $lang_iso_code; ?>"
dir="<?php echo $GLOBALS['text_dir']; ?>">
<!DOCTYPE html>
<html lang="en" dir="<?php echo $GLOBALS['text_dir']; ?>">
<head>
<link rel="icon" href="./favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="./favicon.ico" type="image/x-icon" />

View File

@@ -86,25 +86,6 @@ function parseVersionString (str) {
return maj * 100000000 + min * 1000000 + pat * 10000 + hotfix * 100 + add;
}
/**
* Indicates current available version on main page.
*/
function PMA_current_version() {
var current = parseVersionString(pmaversion);
var latest = parseVersionString(PMA_latest_version);
$('#li_pma_version').append(PMA_messages['strLatestAvailable'] + ' ' + PMA_latest_version);
if (latest > current) {
var message = $.sprintf(PMA_messages['strNewerVersion'], PMA_latest_version, PMA_latest_date);
if (Math.floor(latest / 10000) == Math.floor(current / 10000)) {
/* Security update */
klass = 'error';
} else {
klass = 'notice';
}
$('#maincontainer').after('<div class="' + klass + '">' + message + '</div>');
}
}
/**
* for libraries/display_change_password.lib.php
* libraries/user_password.php
@@ -1922,78 +1903,6 @@ $(document).ready(function() {
$("input[id='" + values_id + "']").attr("value", value_array.join(","));
disable_popup();
});
/**
* Hides certain table structure actions, replacing them with the word "More". They are displayed
* in a dropdown menu when the user hovers over the word "More."
*/
// Remove the actions from the table cells (they are available by default for JavaScript-disabled browsers)
// if the table is not a view or information_schema (otherwise there is only one action to hide and there's no point)
if($("input[type='hidden'][name='table_type']").val() == "table") {
var $table = $("table[id='tablestructure']");
$table.find("td[class='browse']").remove();
$table.find("td[class='primary']").remove();
$table.find("td[class='unique']").remove();
$table.find("td[class='index']").remove();
$table.find("td[class='fulltext']").remove();
$table.find("th[class='action']").attr("colspan", 3);
// Display the "more" text
$table.find("td[class='more_opts']").show();
// Position the dropdown
$(".structure_actions_dropdown").each(function() {
// Optimize DOM querying
var $this_dropdown = $(this);
// The top offset must be set for IE even if it didn't change
var cell_right_edge_offset = $this_dropdown.parent().offset().left + $this_dropdown.parent().innerWidth();
var left_offset = cell_right_edge_offset - $this_dropdown.innerWidth();
var top_offset = $this_dropdown.parent().offset().top + $this_dropdown.parent().innerHeight();
$this_dropdown.offset({ top: top_offset, left: left_offset });
});
// A hack for IE6 to prevent the after_field select element from being displayed on top of the dropdown by
// positioning an iframe directly on top of it
var $after_field = $("select[name='after_field']");
$("iframe[class='IE_hack']")
.width($after_field.width())
.height($after_field.height())
.offset({
top: $after_field.offset().top,
left: $after_field.offset().left
});
// When "more" is hovered over, show the hidden actions
$table.find("td[class='more_opts']")
.mouseenter(function() {
if($.browser.msie && $.browser.version == "6.0") {
$("iframe[class='IE_hack']")
.show()
.width($after_field.width()+4)
.height($after_field.height()+4)
.offset({
top: $after_field.offset().top,
left: $after_field.offset().left
});
}
$(".structure_actions_dropdown").hide(); // Hide all the other ones that may be open
$(this).children(".structure_actions_dropdown").show();
// Need to do this again for IE otherwise the offset is wrong
if($.browser.msie) {
var left_offset_IE = $(this).offset().left + $(this).innerWidth() - $(this).children(".structure_actions_dropdown").innerWidth();
var top_offset_IE = $(this).offset().top + $(this).innerHeight();
$(this).children(".structure_actions_dropdown").offset({
top: top_offset_IE,
left: left_offset_IE });
}
})
.mouseleave(function() {
$(this).children(".structure_actions_dropdown").hide();
if($.browser.msie && $.browser.version == "6.0") {
$("iframe[class='IE_hack']").hide();
}
});
}
});
/* Displays tooltips */
@@ -2269,13 +2178,6 @@ $(document).ready(function() {
$(this).closest("form").submit();
});
/**
* Load version information asynchronously.
*/
if ($('.jsversioncheck').length > 0) {
$.getScript('http://www.phpmyadmin.net/home_page/version.js', PMA_current_version);
}
/**
* Slider effect.
*/

View File

@@ -96,7 +96,7 @@ class PMA_Config
*/
function checkSystem()
{
$this->set('PMA_VERSION', '3.4.11.1');
$this->set('PMA_VERSION', 'Retro');
/**
* @deprecated
*/

View File

@@ -43,14 +43,14 @@ class PMA_Index
protected $_columns = array();
/**
* The index method used (BTREE, FULLTEXT, HASH, RTREE).
* The index method used (BTREE, SPATIAL, FULLTEXT, HASH, RTREE).
*
* @var string
*/
protected $_type = '';
/**
* The index choice (PRIMARY, UNIQUE, INDEX, FULLTEXT)
* The index choice (PRIMARY, UNIQUE, INDEX, SPATIAL, FULLTEXT)
*
* @var string
*/
@@ -269,6 +269,8 @@ class PMA_Index
$this->_choice = 'PRIMARY';
} elseif ('FULLTEXT' == $this->_type) {
$this->_choice = 'FULLTEXT';
} elseif ('SPATIAL' == $this->_type) {
$this->_choice = 'SPATIAL';
} elseif ('0' == $this->_non_unique) {
$this->_choice = 'UNIQUE';
} else {
@@ -323,6 +325,7 @@ class PMA_Index
'PRIMARY',
'INDEX',
'UNIQUE',
'SPATIAL',
'FULLTEXT',
);
}
@@ -462,7 +465,7 @@ class PMA_Index
$this_params['index'] = $index->getName();
$r .= '<td ' . $row_span . '>'
. ' <a href="tbl_indexes.php' . PMA_generate_common_url($this_params)
. '">' . PMA_getIcon('b_edit.png', __('Edit')) . '</a>'
. '">' . PMA_getOnlyIcon('b_edit.png', __('Edit')) . '</a>'
. '</td>' . "\n";
$this_params = $GLOBALS['url_params'];
@@ -484,7 +487,7 @@ class PMA_Index
}
$r .= ' href="sql.php' . PMA_generate_common_url($this_params)
. '" >'
. PMA_getIcon('b_drop.png', __('Drop')) . '</a>'
. PMA_getOnlyIcon('b_drop.png', __('Drop')) . '</a>'
. '</td>' . "\n";
}

View File

@@ -27,6 +27,16 @@ require_once './libraries/List.class.php';
*/
/*public*/ class PMA_List_Database extends PMA_List
{
/**
* @var array list of trivial database names
*/
protected $_trivial_db_names = array(
'information_schema',
'mysql',
'performance_schema',
'sys',
);
/**
* @var mixed database link resource|object to be used
*/
@@ -387,6 +397,9 @@ require_once './libraries/List.class.php';
if (! empty($db['comment'])) {
$return .= ' title="' . htmlspecialchars($db['comment']) . '"';
}
if (in_array($db['name'], $this->_trivial_db_names)) {
$return .= ' class="trivial"';
}
$return .= ' href="index.php?' . PMA_generate_common_url($db['name'])
. '" target="_parent">';
if ($cut) {

View File

@@ -213,13 +213,6 @@ if (top != self) {
PMA_Message::rawError($conn_error)->display();
}
// Displays the languages form
if (empty($GLOBALS['cfg']['Lang'])) {
require_once './libraries/display_select_lang.lib.php';
// use fieldset, don't show doc link
PMA_select_language(true, false);
}
?>
<br />
<!-- Login form -->

View File

@@ -123,6 +123,25 @@ function PMA_getIcon($icon, $alternate = '', $container = false, $force_text = f
return $button;
}
/**
* Creates a span with only an icon
*
* @uses $GLOBALS['pmaThemeImage']
* @uses htmlspecialchars()
* @param string $icon name of icon file
* @param string $alternate alternate text
* @return string span with icon
*/
function PMA_getOnlyIcon($icon, $alternate = '') {
$alternate = htmlspecialchars($alternate);
return '<span class="nowrap">'
. '<img src="' . $GLOBALS['pmaThemeImage'] . $icon . '"'
. ' title="' . $alternate . '" alt="' . $alternate . '"'
. ' class="icon" width="16" height="16" />';
}
/**
* Displays the maximum size for an upload
*
@@ -1944,7 +1963,7 @@ function PMA_flipstring($string, $Separator = "<br />\n")
$charbuff = false;
for ($i = 0, $str_len = strlen($string); $i < $str_len; $i++) {
$char = $string{$i};
$char = $string[$i];
$append = false;
if ($char == '&') {

View File

@@ -174,7 +174,7 @@ $cfg['Servers'][$i]['controlpass'] = '';
*
* @global string $cfg['Servers'][$i]['auth_type']
*/
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['auth_type'] = 'http';
/**
* HTTP Basic Auth Realm name to display (only used with 'HTTP' auth_type)
@@ -501,13 +501,6 @@ $cfg['ServerDefault'] = 1;
*/
$cfg['AjaxEnable'] = true;
/**
* whether version check is active
*
* @global boolean $cfg['VersionCheck']
*/
$cfg['VersionCheck'] = VERSION_CHECK_DEFAULT;
/**
* maximum number of db's displayed in left frame and database list
*
@@ -2068,8 +2061,10 @@ $cfg['DefaultConnectionCollation'] = 'utf8_general_ci';
/**
* Force: always use this language
* $cfg['Lang'] = 'en';
*
*/
$cfg['Lang'] = 'en';
/**
* Regular expression to limit listed languages, e.g. '^(cs|en)' for Czech and
* English only
*
@@ -2460,7 +2455,7 @@ $cfg['ThemeManager'] = true;
*
* @global string $cfg['ThemeDefault']
*/
$cfg['ThemeDefault'] = 'pmahomme';
$cfg['ThemeDefault'] = 'original';
/**
* allow different theme for each configured server

View File

@@ -44,8 +44,13 @@ function PMA_lang($lang_key)
$message = isset($GLOBALS["strConfig$lang_key"]) ? $GLOBALS["strConfig$lang_key"] : $lang_key;
$message = str_replace($search, $replace, $message);
// replace [a@"$1"]$2[/a] with <a href="$1">$2</a>
$message = preg_replace('#\[a@("?)([^\]]+)\1\]([^\[]+)\[/a\]#e',
"PMA_lang_link_replace('$2', '$3')", $message);
$message = preg_replace_callback(
'#\[a@("?)([^\]]+)\1\]([^\[]+)\[/a\]#',
function ($matches) {
return PMA_lang_link_replace($matches[2], $matches[3]);
},
$message
);
if (func_num_args() == 1) {
return $message;

View File

@@ -12,7 +12,7 @@ if (! defined('PHPMYADMIN')) {
header('Content-Type: text/html; charset=utf-8');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $lang; ?>" dir="<?php echo $dir; ?>">
<head>
<link rel="icon" href="./favicon.ico" type="image/x-icon" />

View File

@@ -68,7 +68,7 @@ function PMA_exportHeader() {
xmlns:x="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=' . (isset($charset_of_file) ? $charset_of_file : $charset) . '" />

View File

@@ -31,9 +31,8 @@ if ($GLOBALS['text_dir'] == 'ltr') {
/* echo '<?xml version="1.0" encoding="' . $GLOBALS['charset'] . '"?>'; */
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $GLOBALS['available_languages'][$GLOBALS['lang']][1]; ?>" lang="<?php echo $GLOBALS['available_languages'][$GLOBALS['lang']][1]; ?>" dir="<?php echo $GLOBALS['text_dir']; ?>">
<!DOCTYPE html>
<html lang="en" dir="<?php echo $GLOBALS['text_dir']; ?>">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $GLOBALS['charset']; ?>" />
<link rel="icon" href="./favicon.ico" type="image/x-icon" />

View File

@@ -38,9 +38,8 @@ if ($text_dir == 'ltr') {
$cell_align_right = 'left';
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $available_languages[$lang][1]; ?>" lang="<?php echo $available_languages[$lang][1]; ?>" dir="<?php echo $text_dir; ?>">
<!DOCTYPE html>
<html lang="en" dir="<?php echo $text_dir; ?>">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $charset; ?>" />

View File

@@ -88,6 +88,11 @@ if (! empty($submit_mult)
$query_type = 'unique_fld';
$mult_btn = __('Yes');
break;
case 'spatial':
unset($submit_mult);
$query_type = 'spatial_fld';
$mult_btn = __('Yes');
break;
case 'ftext':
unset($submit_mult);
$query_type = 'fulltext_fld';
@@ -368,6 +373,12 @@ elseif ($mult_btn == __('Yes')) {
. (($i == $selected_cnt-1) ? ');' : '');
break;
case 'spatial_fld':
$sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) . ' ADD SPATIAL( ' : ', ')
. PMA_backquote($selected[$i])
. (($i == $selected_cnt-1) ? ');' : '');
break;
case 'fulltext_fld':
$sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) . ' ADD FULLTEXT( ' : ', ')
. PMA_backquote($selected[$i])

View File

@@ -769,7 +769,7 @@ if (! defined('PMA_MINIMUM_COMMON')) {
}
} elseif (PMA_STR_binarySearchInArr($d_cur, $mysql_charsets, $mysql_charsets_count)
|| PMA_STR_binarySearchInArr($d_cur, $mysql_collations_flat, $mysql_collations_count)
|| ($d_cur{0} == '_' && PMA_STR_binarySearchInArr(substr($d_cur, 1), $mysql_charsets, $mysql_charsets_count))) {
|| ($d_cur[0] == '_' && PMA_STR_binarySearchInArr(substr($d_cur, 1), $mysql_charsets, $mysql_charsets_count))) {
$t_suffix = '_charset';
} else {
// Do nothing

View File

@@ -85,13 +85,12 @@ if (! $tbl_is_view && ! (isset($db_is_information_schema) && $db_is_information_
$tabs['operation']['link'] = 'tbl_operations.php';
$tabs['operation']['text'] = __('Operations');
}
if(PMA_Tracker::isActive()) {
$tabs['tracking']['icon'] = 'eye.png';
$tabs['tracking']['text'] = __('Tracking');
$tabs['tracking']['link'] = 'tbl_tracking.php';
}
if (! $tbl_is_view && ! (isset($db_is_information_schema) && $db_is_information_schema)) {
}
/**
* Views support a limited number of operations
@@ -102,6 +101,35 @@ if ($tbl_is_view && ! (isset($db_is_information_schema) && $db_is_information_sc
$tabs['operation']['text'] = __('Operations');
}
if (! $tbl_is_view && ! (isset($db_is_information_schema) && $db_is_information_schema)) {
$tabs['empty']['link'] = 'sql.php';
$tabs['empty']['args']['reload'] = 1;
$tabs['empty']['args']['sql_query'] = 'TRUNCATE TABLE ' . PMA_backquote($table);
$tabs['empty']['args']['zero_rows'] = sprintf(__('Table %s has been emptied'), htmlspecialchars($table));
$tabs['empty']['attr'] = 'onclick="return confirmLink(this, \'TRUNCATE TABLE ' . PMA_jsFormat($table) . '\')"';
$tabs['empty']['args']['goto'] = 'tbl_structure.php';
$tabs['empty']['class'] = 'caution';
$tabs['empty']['icon'] = 'b_empty.png';
$tabs['empty']['text'] = __('Empty');
if ($table_info_num_rows == 0) {
$tabs['empty']['warning'] = __('Table seems to be empty!');
}
$tabs['drop']['icon'] = 'b_deltbl.png';
$tabs['drop']['link'] = 'sql.php';
$tabs['drop']['url_params'] = array('table' => NULL);
$tabs['drop']['text'] = __('Drop');
$tabs['drop']['args']['reload'] = 1;
$tabs['drop']['args']['purge'] = 1;
$drop_command = 'DROP ' . ($tbl_is_view ? 'VIEW' : 'TABLE');
$tabs['drop']['args']['sql_query'] = $drop_command . ' ' . PMA_backquote($table);
$tabs['drop']['args']['goto'] = 'db_structure.php';
$tabs['drop']['args']['zero_rows'] = sprintf(($tbl_is_view ? __('View %s has been dropped') : __('Table %s has been dropped')), htmlspecialchars($table));
$tabs['drop']['attr'] = 'onclick="return confirmLink(this, \'' . $drop_command . ' ' . PMA_jsFormat($table) . '\')"';
unset($drop_command);
$tabs['drop']['class'] = 'caution';
}
if ($table_info_num_rows == 0 && !$tbl_is_view) {
$tabs['browse']['warning'] = __('Table seems to be empty!');
$tabs['search']['warning'] = __('Table seems to be empty!');

View File

@@ -787,6 +787,20 @@ if ($action == 'tbl_create.php') {
</fieldset>
<div id="properties_message"></div>
</form>
<?php
if ($action == 'tbl_addfield.php') {
?>
<script type="text/javascript">
// <![CDATA[
document.forms
.<?php echo ($action == 'tbl_create.php' ? 'create_table_form' : 'append_fields_form'); ?>
.querySelector('input[name="field_name[0]"]')
.focus();
// ]]>
</script>
<?php
} // end if ($action == 'tbl_addfield.php')
?>
<div id="enum_editor">
<a class="close_enum_editor"><?php echo __('Close'); ?></a>

View File

@@ -76,7 +76,7 @@
// dullus for text Justification.
// Bob Vincent (pillarsdotnet@users.sourceforge.net) for <li> value attribute.
// Patrick Benny for text stretch suggestion on Cell().
// Johannes Güntert for JavaScript support.
// Johannes G<EFBFBD>ntert for JavaScript support.
// Denis Van Nuffelen for Dynamic Form.
// Jacek Czekaj for multibyte justification
// Anthony Ferrara for the reintroduction of legacy image methods.
@@ -87,7 +87,7 @@
// Mohamad Ali Golkar, Saleh AlMatrafe, Charles Abbott for Arabic and Persian support.
// Moritz Wagner and Andreas Wurmser for graphic functions.
// Andrew Whitehead for core fonts support.
// Esteban Joël Marín for OpenType font conversion.
// Esteban Jo<EFBFBD>l Mar<EFBFBD>n for OpenType font conversion.
// Teus Hagen for several suggestions and fixes.
// Yukihiro Nakadaira for CID-0 CJK fonts fixes.
// Kosmas Papachristos for some CSS improvements.
@@ -2997,7 +2997,7 @@ class TCPDF {
if (empty($orientation)) {
$orientation = $default_orientation;
} else {
$orientation = strtoupper($orientation{0});
$orientation = strtoupper($orientation[0]);
}
if (in_array($orientation, $valid_orientations) AND ($orientation != $default_orientation)) {
$this->CurOrientation = $orientation;
@@ -6715,7 +6715,7 @@ class TCPDF {
* @param $cellpadding (float) Internal cell padding, if empty uses default cell padding.
* @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul> or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)))
* @return float Return the minimal height needed for multicell method for printing the $txt param.
* @author Alexander Escalona Fernández, Nicola Asuni
* @author Alexander Escalona Fern<EFBFBD>ndez, Nicola Asuni
* @public
* @since 4.5.011
*/
@@ -6822,7 +6822,7 @@ class TCPDF {
* @param $cellpadding (float) Internal cell padding, if empty uses default cell padding.
* @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul> or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)))
* @return float Return the minimal height needed for multicell method for printing the $txt param.
* @author Nicola Asuni, Alexander Escalona Fernández
* @author Nicola Asuni, Alexander Escalona Fern<EFBFBD>ndez
* @public
*/
public function getStringHeight($w, $txt, $reseth=false, $autopadding=true, $cellpadding='', $border=0) {
@@ -7515,7 +7515,7 @@ class TCPDF {
$cached_file = false;
}
} else { // image file
if ($file{0} === '*') {
if ($file[0] === '*') {
// image as external stream
$file = substr($file, 1);
$exurl = $file;
@@ -7604,7 +7604,7 @@ class TCPDF {
// height difference
$hdiff = ($oldh - $h);
// vertical alignment
switch (strtoupper($fitbox{1})) {
switch (strtoupper($fitbox[1])) {
case 'T': {
break;
}
@@ -7625,7 +7625,7 @@ class TCPDF {
// width difference
$wdiff = ($oldw - $w);
// horizontal alignment
switch (strtoupper($fitbox{0})) {
switch (strtoupper($fitbox[0])) {
case 'L': {
if ($this->rtl) {
$x -= $wdiff;
@@ -7912,7 +7912,7 @@ class TCPDF {
public function set_mqr($mqr) {
if (!defined('PHP_VERSION_ID')) {
$version = PHP_VERSION;
define('PHP_VERSION_ID', (($version{0} * 10000) + ($version{2} * 100) + $version{4}));
define('PHP_VERSION_ID', (($version[0] * 10000) + ($version[2] * 100) + $version[4]));
}
if (PHP_VERSION_ID < 50300) {
@set_magic_quotes_runtime($mqr);
@@ -7927,7 +7927,7 @@ class TCPDF {
public function get_mqr() {
if (!defined('PHP_VERSION_ID')) {
$version = PHP_VERSION;
define('PHP_VERSION_ID', (($version{0} * 10000) + ($version{2} * 100) + $version{4}));
define('PHP_VERSION_ID', (($version[0] * 10000) + ($version[2] * 100) + $version[4]));
}
if (PHP_VERSION_ID < 50300) {
return @get_magic_quotes_runtime();
@@ -8062,7 +8062,7 @@ class TCPDF {
if (count($icc) > 0) {
ksort($icc);
$icc = implode('', $icc);
if ((ord($icc{36}) != 0x61) OR (ord($icc{37}) != 0x63) OR (ord($icc{38}) != 0x73) OR (ord($icc{39}) != 0x70)) {
if ((ord($icc[36]) != 0x61) OR (ord($icc[37]) != 0x63) OR (ord($icc[38]) != 0x73) OR (ord($icc[39]) != 0x70)) {
// invalid ICC profile
$icc = false;
}
@@ -8146,9 +8146,9 @@ class TCPDF {
// read transparency info
$t = $this->rfread($f, $n);
if ($ct == 0) {
$trns = array(ord($t{1}));
$trns = array(ord($t[1]));
} elseif ($ct == 2) {
$trns = array(ord($t{1}), ord($t{3}), ord($t{5}));
$trns = array(ord($t[1]), ord($t[3]), ord($t[5]));
} else {
$pos = strpos($t, chr(0));
if ($pos !== false) {
@@ -8494,7 +8494,7 @@ class TCPDF {
$dest = $dest ? 'D' : 'F';
}
$dest = strtoupper($dest);
if ($dest{0} != 'F') {
if ($dest[0] != 'F') {
$name = preg_replace('/[\s]+/', '_', $name);
$name = preg_replace('/[^a-zA-Z0-9_\.-]/', '', $name);
}
@@ -11263,7 +11263,7 @@ class TCPDF {
$font = file_get_contents($fontfile);
$compressed = (substr($file, -2) == '.z');
if ((!$compressed) AND (isset($info['length2']))) {
$header = (ord($font{0}) == 128);
$header = (ord($font[0]) == 128);
if ($header) {
// strip first binary header
$font = substr($font, 6);
@@ -13396,7 +13396,7 @@ class TCPDF {
* @public
*/
public function addHtmlLink($url, $name, $fill=false, $firstline=false, $color='', $style=-1, $firstblock=false) {
if (!$this->empty_string($url) AND ($url{0} == '#')) {
if (!$this->empty_string($url) AND ($url[0] == '#')) {
// convert url to internal link
$lnkdata = explode(',', $url);
if (isset($lnkdata[0])) {
@@ -13521,7 +13521,7 @@ class TCPDF {
}
return $returncolor;
}
if ($color{0} != '#') {
if ($color[0] != '#') {
// COLOR NAME
if (isset($this->webcolor[$color])) {
// web color
@@ -14793,7 +14793,7 @@ class TCPDF {
}
/**
* Append a cubic Bézier curve to the current path. The curve shall extend from the current point to the point (x3, y3), using (x1, y1) and (x2, y2) as the Bézier control points.
* Append a cubic B<EFBFBD>zier curve to the current path. The curve shall extend from the current point to the point (x3, y3), using (x1, y1) and (x2, y2) as the B<EFBFBD>zier control points.
* The new current point shall be (x3, y3).
* @param $x1 (float) Abscissa of control point 1.
* @param $y1 (float) Ordinate of control point 1.
@@ -14809,7 +14809,7 @@ class TCPDF {
}
/**
* Append a cubic Bézier curve to the current path. The curve shall extend from the current point to the point (x3, y3), using the current point and (x2, y2) as the Bézier control points.
* Append a cubic B<EFBFBD>zier curve to the current path. The curve shall extend from the current point to the point (x3, y3), using the current point and (x2, y2) as the B<EFBFBD>zier control points.
* The new current point shall be (x3, y3).
* @param $x2 (float) Abscissa of control point 2.
* @param $y2 (float) Ordinate of control point 2.
@@ -14823,7 +14823,7 @@ class TCPDF {
}
/**
* Append a cubic Bézier curve to the current path. The curve shall extend from the current point to the point (x3, y3), using (x1, y1) and (x3, y3) as the Bézier control points.
* Append a cubic B<EFBFBD>zier curve to the current path. The curve shall extend from the current point to the point (x3, y3), using (x1, y1) and (x3, y3) as the B<EFBFBD>zier control points.
* The new current point shall be (x3, y3).
* @param $x1 (float) Abscissa of control point 1.
* @param $y1 (float) Ordinate of control point 1.
@@ -16193,7 +16193,7 @@ class TCPDF {
/**
* Create a javascript PDF string.
* @protected
* @author Johannes Güntert, Nicola Asuni
* @author Johannes G<EFBFBD>ntert, Nicola Asuni
* @since 5.9.098 (2011-06-23)
*/
protected function _putdests() {
@@ -16380,7 +16380,7 @@ class TCPDF {
* Adds a javascript
* @param $script (string) Javascript code
* @public
* @author Johannes Güntert, Nicola Asuni
* @author Johannes G<EFBFBD>ntert, Nicola Asuni
* @since 2.1.002 (2008-02-12)
*/
public function IncludeJS($script) {
@@ -16409,7 +16409,7 @@ class TCPDF {
/**
* Create a javascript PDF string.
* @protected
* @author Johannes Güntert, Nicola Asuni
* @author Johannes G<EFBFBD>ntert, Nicola Asuni
* @since 2.1.002 (2008-02-12)
*/
protected function _putjavascript() {
@@ -18350,7 +18350,7 @@ class TCPDF {
* @param $col1 (array) first color (Grayscale, RGB or CMYK components).
* @param $col2 (array) second color (Grayscale, RGB or CMYK components).
* @param $coords (array) array of the form (x1, y1, x2, y2) which defines the gradient vector (see linear_gradient_coords.jpg). The default value is from left to right (x1=0, y1=0, x2=1, y2=0).
* @author Andreas Würmser, Nicola Asuni
* @author Andreas W<EFBFBD>rmser, Nicola Asuni
* @since 3.1.000 (2008-06-09)
* @public
*/
@@ -18368,7 +18368,7 @@ class TCPDF {
* @param $col1 (array) first color (Grayscale, RGB or CMYK components).
* @param $col2 (array) second color (Grayscale, RGB or CMYK components).
* @param $coords (array) array of the form (fx, fy, cx, cy, r) where (fx, fy) is the starting point of the gradient with color1, (cx, cy) is the center of the circle with color2, and r is the radius of the circle (see radial_gradient_coords.jpg). (fx, fy) should be inside the circle, otherwise some areas will not be defined.
* @author Andreas Würmser, Nicola Asuni
* @author Andreas W<EFBFBD>rmser, Nicola Asuni
* @since 3.1.000 (2008-06-09)
* @public
*/
@@ -18391,7 +18391,7 @@ class TCPDF {
* @param $coords_min (array) minimum value used by the coordinates. If a coordinate's value is smaller than this it will be cut to coords_min. default: 0
* @param $coords_max (array) maximum value used by the coordinates. If a coordinate's value is greater than this it will be cut to coords_max. default: 1
* @param $antialias (boolean) A flag indicating whether to filter the shading function to prevent aliasing artifacts.
* @author Andreas Würmser, Nicola Asuni
* @author Andreas W<EFBFBD>rmser, Nicola Asuni
* @since 3.1.000 (2008-06-09)
* @public
*/
@@ -18483,7 +18483,7 @@ class TCPDF {
* @param $y (float) ordinate of the top left corner of the rectangle.
* @param $w (float) width of the rectangle.
* @param $h (float) height of the rectangle.
* @author Andreas Würmser, Nicola Asuni
* @author Andreas W<EFBFBD>rmser, Nicola Asuni
* @since 3.1.000 (2008-06-09)
* @protected
*/
@@ -18884,7 +18884,7 @@ class TCPDF {
// check page for no-write regions and adapt page margins if necessary
list($x, $y) = $this->checkPageRegions($h, $x, $y);
$k = $this->k;
if ($file{0} === '@') { // image from string
if ($file[0] === '@') { // image from string
$data = substr($file, 1);
} else { // EPS/AI file
$data = file_get_contents($file);
@@ -18997,7 +18997,7 @@ class TCPDF {
$cnt = count($lines);
for ($i=0; $i < $cnt; ++$i) {
$line = $lines[$i];
if (($line == '') OR ($line{0} == '%')) {
if (($line == '') OR ($line[0] == '%')) {
continue;
}
$len = strlen($line);
@@ -19989,19 +19989,19 @@ class TCPDF {
// remove empty blocks
$cssdata = preg_replace('/([^\}\{]+)\{\}/', '', $cssdata);
// replace media type parenthesis
$cssdata = preg_replace('/@media[\s]+([^\{]*)\{/i', '@media \\1§', $cssdata);
$cssdata = preg_replace('/\}\}/si', '}§', $cssdata);
$cssdata = preg_replace('/@media[\s]+([^\{]*)\{/i', '@media \\1<EFBFBD>', $cssdata);
$cssdata = preg_replace('/\}\}/si', '}<EFBFBD>', $cssdata);
// trim string
$cssdata = trim($cssdata);
// find media blocks (all, braille, embossed, handheld, print, projection, screen, speech, tty, tv)
$cssblocks = array();
$matches = array();
if (preg_match_all('/@media[\s]+([^\§]*)§([^§]*)§/i', $cssdata, $matches) > 0) {
if (preg_match_all('/@media[\s]+([^\<EFBFBD>]*)<EFBFBD>([^<EFBFBD>]*)<EFBFBD>/i', $cssdata, $matches) > 0) {
foreach ($matches[1] as $key => $type) {
$cssblocks[$type] = $matches[2][$key];
}
// remove media blocks
$cssdata = preg_replace('/@media[\s]+([^\§]*)§([^§]*)§/i', '', $cssdata);
$cssdata = preg_replace('/@media[\s]+([^\<EFBFBD>]*)<EFBFBD>([^<EFBFBD>]*)<EFBFBD>/i', '', $cssdata);
}
// keep 'all' and 'print' media, other media types are discarded
if (isset($cssblocks['all']) AND !empty($cssblocks['all'])) {
@@ -20093,7 +20093,7 @@ class TCPDF {
$attrib = strtolower(trim($attrib[0]));
if (!empty($attrib)) {
// check if matches class, id, attribute, pseudo-class or pseudo-element
switch ($attrib{0}) {
switch ($attrib[0]) {
case '.': { // class
if (in_array(substr($attrib, 1), $class)) {
$valid = true;
@@ -20160,7 +20160,7 @@ class TCPDF {
break;
}
case ':': { // pseudo-class or pseudo-element
if ($attrib{1} == ':') { // pseudo-element
if ($attrib[1] == ':') { // pseudo-element
// pseudo-elements are not supported!
// (::first-line, ::first-letter, ::before, ::after)
} else { // pseudo-class
@@ -20837,7 +20837,7 @@ class TCPDF {
$tagname = strtolower($tag[1]);
// check if we are inside a table header
if ($tagname == 'thead') {
if ($element{0} == '/') {
if ($element[0] == '/') {
$thead = false;
} else {
$thead = true;
@@ -20852,7 +20852,7 @@ class TCPDF {
} else {
$dom[$key]['block'] = false;
}
if ($element{0} == '/') {
if ($element[0] == '/') {
// *** closing html tag
$dom[$key]['opening'] = false;
$dom[$key]['parent'] = end($level);
@@ -21066,15 +21066,15 @@ class TCPDF {
}
// font style
if (isset($dom[$key]['style']['font-weight'])) {
if (strtolower($dom[$key]['style']['font-weight']{0}) == 'n') {
if (strtolower($dom[$key]['style']['font-weight'][0]) == 'n') {
if (strpos($dom[$key]['fontstyle'], 'B') !== false) {
$dom[$key]['fontstyle'] = str_replace('B', '', $dom[$key]['fontstyle']);
}
} elseif (strtolower($dom[$key]['style']['font-weight']{0}) == 'b') {
} elseif (strtolower($dom[$key]['style']['font-weight'][0]) == 'b') {
$dom[$key]['fontstyle'] .= 'B';
}
}
if (isset($dom[$key]['style']['font-style']) AND (strtolower($dom[$key]['style']['font-style']{0}) == 'i')) {
if (isset($dom[$key]['style']['font-style']) AND (strtolower($dom[$key]['style']['font-style'][0]) == 'i')) {
$dom[$key]['fontstyle'] .= 'I';
}
// font color
@@ -21093,13 +21093,13 @@ class TCPDF {
foreach ($decors as $dec) {
$dec = trim($dec);
if (!$this->empty_string($dec)) {
if ($dec{0} == 'u') {
if ($dec[0] == 'u') {
// underline
$dom[$key]['fontstyle'] .= 'U';
} elseif ($dec{0} == 'l') {
} elseif ($dec[0] == 'l') {
// line-trough
$dom[$key]['fontstyle'] .= 'D';
} elseif ($dec{0} == 'o') {
} elseif ($dec[0] == 'o') {
// overline
$dom[$key]['fontstyle'] .= 'O';
}
@@ -21118,7 +21118,7 @@ class TCPDF {
}
// check for text alignment
if (isset($dom[$key]['style']['text-align'])) {
$dom[$key]['align'] = strtoupper($dom[$key]['style']['text-align']{0});
$dom[$key]['align'] = strtoupper($dom[$key]['style']['text-align'][0]);
}
// check for CSS border properties
if (isset($dom[$key]['style']['border'])) {
@@ -21282,9 +21282,9 @@ class TCPDF {
// font size
if (isset($dom[$key]['attribute']['size'])) {
if ($key > 0) {
if ($dom[$key]['attribute']['size']{0} == '+') {
if ($dom[$key]['attribute']['size'][0] == '+') {
$dom[$key]['fontsize'] = $dom[($dom[$key]['parent'])]['fontsize'] + intval(substr($dom[$key]['attribute']['size'], 1));
} elseif ($dom[$key]['attribute']['size']{0} == '-') {
} elseif ($dom[$key]['attribute']['size'][0] == '-') {
$dom[$key]['fontsize'] = $dom[($dom[$key]['parent'])]['fontsize'] - intval(substr($dom[$key]['attribute']['size'], 1));
} else {
$dom[$key]['fontsize'] = intval($dom[$key]['attribute']['size']);
@@ -21326,10 +21326,10 @@ class TCPDF {
if (($dom[$key]['value'] == 'pre') OR ($dom[$key]['value'] == 'tt')) {
$dom[$key]['fontname'] = $this->default_monospaced_font;
}
if (($dom[$key]['value']{0} == 'h') AND (intval($dom[$key]['value']{1}) > 0) AND (intval($dom[$key]['value']{1}) < 7)) {
if (($dom[$key]['value'][0] == 'h') AND (intval($dom[$key]['value'][1]) > 0) AND (intval($dom[$key]['value'][1]) < 7)) {
// headings h1, h2, h3, h4, h5, h6
if (!isset($dom[$key]['attribute']['size']) AND !isset($dom[$key]['style']['font-size'])) {
$headsize = (4 - intval($dom[$key]['value']{1})) * 2;
$headsize = (4 - intval($dom[$key]['value'][1])) * 2;
$dom[$key]['fontsize'] = $dom[0]['fontsize'] + $headsize;
}
if (!isset($dom[$key]['style']['font-weight'])) {
@@ -21391,7 +21391,7 @@ class TCPDF {
}
// check for text alignment
if (isset($dom[$key]['attribute']['align']) AND (!$this->empty_string($dom[$key]['attribute']['align'])) AND ($dom[$key]['value'] !== 'img')) {
$dom[$key]['align'] = strtoupper($dom[$key]['attribute']['align']{0});
$dom[$key]['align'] = strtoupper($dom[$key]['attribute']['align'][0]);
}
// check for text rendering mode (the following attributes do not exist in HTML)
if (isset($dom[$key]['attribute']['stroke'])) {
@@ -23116,7 +23116,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
}
case 'img': {
if (isset($tag['attribute']['src'])) {
if ($tag['attribute']['src']{0} === '@') {
if ($tag['attribute']['src'][0] === '@') {
// data stream
$tag['attribute']['src'] = '@'.base64_decode(substr($tag['attribute']['src'], 1));
$type = '';
@@ -23178,7 +23178,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
$imglink = '';
if (isset($this->HREF['url']) AND !$this->empty_string($this->HREF['url'])) {
$imglink = $this->HREF['url'];
if ($imglink{0} == '#') {
if ($imglink[0] == '#') {
// convert url to internal link
$lnkdata = explode(',', $imglink);
if (isset($lnkdata[0])) {
@@ -27144,7 +27144,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
// convert SVG to raster image using GD or ImageMagick libraries
return $this->Image($file, $x, $y, $w, $h, 'SVG', $link, $align, true, 300, $palign, false, false, $border, false, false, false);
}
if ($file{0} === '@') { // image from string
if ($file[0] === '@') { // image from string
$this->svgdir = '';
$svgdata = substr($file, 1);
} else { // SVG file
@@ -28054,7 +28054,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
}
break;
}
case 'Q': { // quadratic Bézier curveto
case 'Q': { // quadratic B<EFBFBD>zier curveto
foreach ($params as $ck => $cp) {
$params[$ck] = $cp;
if ((($ck + 1) % 4) == 0) {
@@ -28080,7 +28080,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
}
break;
}
case 'T': { // shorthand/smooth quadratic Bézier curveto
case 'T': { // shorthand/smooth quadratic B<EFBFBD>zier curveto
foreach ($params as $ck => $cp) {
$params[$ck] = $cp;
if (($ck % 2) != 0) {
@@ -28631,7 +28631,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
$img = '@'.base64_decode(substr($img, strlen($m[0])));
} else {
// fix image path
if (!$this->empty_string($this->svgdir) AND (($img{0} == '.') OR (basename($img) == $img))) {
if (!$this->empty_string($this->svgdir) AND (($img[0] == '.') OR (basename($img) == $img))) {
// replace relative path with full server path
$img = $this->svgdir.'/'.$img;
}

View File

@@ -288,7 +288,7 @@ function PMA_get_arg_separator($encode = 'none')
if (strpos($php_arg_separator_input, ';') !== false) {
$separator = ';';
} elseif (strlen($php_arg_separator_input) > 0) {
$separator = $php_arg_separator_input{0};
$separator = $php_arg_separator_input[0];
} else {
$separator = '&';
}

View File

@@ -55,11 +55,6 @@ define('CUSTOM_HEADER_FILE', CONFIG_DIR . 'config.header.inc.php');
*/
define('CUSTOM_FOOTER_FILE', CONFIG_DIR . 'config.footer.inc.php');
/**
* Default value for check for version upgrades.
*/
define('VERSION_CHECK_DEFAULT', true);
/**
* Path to gettext.inc file. Useful when you want php-gettext somewhere else,
* eg. /usr/share/php/gettext/gettext.inc.

View File

@@ -119,14 +119,6 @@ echo '<div class="group">';
echo '<h2>' . __('Appearance Settings') . '</h2>';
echo ' <ul>';
// Displays language selection combo
if (empty($cfg['Lang'])) {
echo '<li id="li_select_lang">';
require_once './libraries/display_select_lang.lib.php';
PMA_select_language();
echo '</li>';
}
// ThemeManager if available
if ($GLOBALS['cfg']['ThemeManager']) {
@@ -199,30 +191,7 @@ if ($GLOBALS['cfg']['ShowServerInfo'] || $GLOBALS['cfg']['ShowPhpInfo']) {
echo ' </ul>';
echo ' </div>';
}
echo '<div class="group pmagroup">';
echo '<h2>phpMyAdmin</h2>';
echo '<ul>';
$class = null;
// workaround for bug 3302733; some browsers don't like the situation
// where phpMyAdmin is called on a secure page but a part of the page
// (the version check) refers to a non-secure page
if ($GLOBALS['cfg']['VersionCheck'] && ! $GLOBALS['PMA_Config']->get('is_https')) {
$class = 'jsversioncheck';
}
PMA_printListItem(__('Version information') . ': ' . PMA_VERSION, 'li_pma_version', null, null, null, null, $class);
PMA_printListItem(__('Documentation'), 'li_pma_docs', 'Documentation.html', null, '_blank');
PMA_printListItem(__('Wiki'), 'li_pma_wiki', PMA_linkURL('http://wiki.phpmyadmin.net/'), null, '_blank');
// does not work if no target specified, don't know why
PMA_printListItem(__('Official Homepage'), 'li_pma_homepage', PMA_linkURL('http://www.phpMyAdmin.net/'), null, '_blank');
PMA_printListItem(__('Contribute'), 'li_pma_contribute', PMA_linkURL('http://www.phpmyadmin.net/home_page/improve.php'), null, '_blank');
PMA_printListItem(__('Get support'), 'li_pma_support', PMA_linkURL('http://www.phpmyadmin.net/home_page/support.php'), null, '_blank');
PMA_printListItem(__('List of changes'), 'li_pma_changes', PMA_linkURL('changelog.php'), null, '_blank');
?>
</ul>
</div>
</div>
<?php

View File

@@ -110,12 +110,8 @@ require_once './libraries/header_http.inc.php';
// xml declaration moves IE into quirks mode, making much trouble with CSS
/* echo '<?xml version="1.0" encoding="' . $GLOBALS['charset'] . '"?>'; */
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="<?php echo $available_languages[$lang][1]; ?>"
lang="<?php echo $available_languages[$lang][1]; ?>"
dir="<?php echo $GLOBALS['text_dir']; ?>">
<!DOCTYPE html>
<html lang="en" dir="<?php echo $GLOBALS['text_dir']; ?>">
<head>
<link rel="icon" href="./favicon.ico" type="image/x-icon" />
@@ -187,37 +183,12 @@ if (! $GLOBALS['server']) {
echo '<p>' . __('No databases') . '</p>';
PMA_exitNavigationFrame();
} elseif ($GLOBALS['cfg']['LeftFrameLight'] && count($GLOBALS['pma']->databases) > 1) {
$list = $cfg['DisplayDatabasesList'];
if ($list === 'auto') {
if (empty($GLOBALS['db'])) {
$list = true;
} else {
$list = false;
}
}
if (!$list) {
// more than one database available and LeftFrameLight is true
// display db selectbox
//
// Light mode -> beginning of the select combo for databases
// Note: When javascript is active, the frameset will be changed from
// within navigation.php. With no JS (<noscript>) the whole frameset will
// be rebuilt with the new target frame.
?>
<div id="databaseList">
<form method="post" action="index.php" target="_parent" id="left">
<?php
echo PMA_generate_common_hidden_inputs() . "\n";
echo $GLOBALS['pma']->databases->getHtmlSelectGrouped(true, $_SESSION['tmp_user_values']['navi_limit_offset'], $GLOBALS['cfg']['MaxDbList']) . "\n";
echo '<noscript>' . "\n"
.'<input type="submit" name="Go" value="' . __('Go') . '" />' . "\n"
.'</noscript>' . "\n"
.'</form>' . "\n"
. '</div>' . "\n";
} else {
echo $GLOBALS['pma']->databases->getHtmlListGrouped(true, $_SESSION['tmp_user_values']['navi_limit_offset'], $GLOBALS['cfg']['MaxDbList']) . "\n";
}
echo $GLOBALS['pma']->databases->getHtmlListGrouped(true, $_SESSION['tmp_user_values']['navi_limit_offset'], $GLOBALS['cfg']['MaxDbList']) . "\n";
$_url_params = array('pos' => $pos);
PMA_listNavigator(count($GLOBALS['pma']->databases), $pos, $_url_params, 'navigation.php', 'frame_navigation', $GLOBALS['cfg']['MaxDbList']);
}
@@ -303,11 +274,6 @@ if ($GLOBALS['cfg']['LeftFrameLight'] && strlen($GLOBALS['db'])) {
echo __('No tables found in database.');
}
unset($table_list);
if ($db != 'information_schema') {
echo '<ul id="newtable"><li><a target="frame_content" href="tbl_create.php' . PMA_generate_common_url(array('db' => $GLOBALS['db'])) . '">'
.'<img class="icon" src="' . $GLOBALS['pmaThemeImage'] . 'b_snewtbl.png" id="icon_newtable" alt="' . _pgettext('short form', 'Create table') . '" />'
. _pgettext('short form', 'Create table') . '</a></li></ul>';
}
} elseif ($GLOBALS['cfg']['LeftFrameLight']) {
/* No need to tell user to select database if we're showing complete list */
if (!$list) {

View File

@@ -18,9 +18,8 @@ $tables_all_keys = get_all_keys();
$hidden = "hidden";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $GLOBALS['available_languages'][$GLOBALS['lang']][1]; ?>" lang="<?php echo $GLOBALS['available_languages'][$GLOBALS['lang']][1]; ?>" dir="<?php echo $GLOBALS['text_dir']; ?>">
<!DOCTYPE html>
<html lang="en" dir="<?php echo $GLOBALS['text_dir']; ?>">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $charset ?>" />
<link rel="icon" href="pmd/images/favicon.ico" type="image/x-icon" />

3
po/.gitignore vendored
View File

@@ -1,3 +0,0 @@
# pootle cache
.translation_index
*.pending

9962
po/af.po

File diff suppressed because it is too large Load Diff

9791
po/ar.po

File diff suppressed because it is too large Load Diff

10201
po/az.po

File diff suppressed because it is too large Load Diff

10676
po/be.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

9499
po/bg.po

File diff suppressed because it is too large Load Diff

9958
po/bn.po

File diff suppressed because it is too large Load Diff

9628
po/br.po

File diff suppressed because it is too large Load Diff

10193
po/bs.po

File diff suppressed because it is too large Load Diff

10081
po/ca.po

File diff suppressed because it is too large Load Diff

10082
po/cs.po

File diff suppressed because it is too large Load Diff

9744
po/cy.po

File diff suppressed because it is too large Load Diff

9994
po/da.po

File diff suppressed because it is too large Load Diff

10124
po/de.po

File diff suppressed because it is too large Load Diff

10165
po/el.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

10192
po/es.po

File diff suppressed because it is too large Load Diff

10294
po/et.po

File diff suppressed because it is too large Load Diff

10044
po/eu.po

File diff suppressed because it is too large Load Diff

9841
po/fa.po

File diff suppressed because it is too large Load Diff

10403
po/fi.po

File diff suppressed because it is too large Load Diff

10113
po/fr.po

File diff suppressed because it is too large Load Diff

10745
po/gl.po

File diff suppressed because it is too large Load Diff

10083
po/he.po

File diff suppressed because it is too large Load Diff

9497
po/hi.po

File diff suppressed because it is too large Load Diff

10371
po/hr.po

File diff suppressed because it is too large Load Diff

10151
po/hu.po

File diff suppressed because it is too large Load Diff

9607
po/id.po

File diff suppressed because it is too large Load Diff

10122
po/it.po

File diff suppressed because it is too large Load Diff

10191
po/ja.po

File diff suppressed because it is too large Load Diff

10559
po/ka.po

File diff suppressed because it is too large Load Diff

9730
po/ko.po

File diff suppressed because it is too large Load Diff

9811
po/lt.po

File diff suppressed because it is too large Load Diff

10252
po/lv.po

File diff suppressed because it is too large Load Diff

10302
po/mk.po

File diff suppressed because it is too large Load Diff

9288
po/ml.po

File diff suppressed because it is too large Load Diff

10248
po/mn.po

File diff suppressed because it is too large Load Diff

9996
po/ms.po

File diff suppressed because it is too large Load Diff

10145
po/nb.po

File diff suppressed because it is too large Load Diff

10117
po/nl.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

10109
po/pl.po

File diff suppressed because it is too large Load Diff

9804
po/pt.po

File diff suppressed because it is too large Load Diff

10024
po/pt_BR.po

File diff suppressed because it is too large Load Diff

10289
po/ro.po

File diff suppressed because it is too large Load Diff

10103
po/ru.po

File diff suppressed because it is too large Load Diff

9617
po/si.po

File diff suppressed because it is too large Load Diff

9989
po/sk.po

File diff suppressed because it is too large Load Diff

10006
po/sl.po

File diff suppressed because it is too large Load Diff

10056
po/sq.po

File diff suppressed because it is too large Load Diff

10161
po/sr.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

9981
po/sv.po

File diff suppressed because it is too large Load Diff

9366
po/ta.po

File diff suppressed because it is too large Load Diff

9489
po/te.po

File diff suppressed because it is too large Load Diff

9969
po/th.po

File diff suppressed because it is too large Load Diff

10029
po/tr.po

File diff suppressed because it is too large Load Diff

10106
po/tt.po

File diff suppressed because it is too large Load Diff

9567
po/ug.po

File diff suppressed because it is too large Load Diff

9671
po/uk.po

File diff suppressed because it is too large Load Diff

9518
po/ur.po

File diff suppressed because it is too large Load Diff

10902
po/uz.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

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