00001 <?php
00002
00003
00004
00054 if (!isset($is_minimum_common)) {
00055 $is_minimum_common = FALSE;
00056 }
00057
00061 if (!isset($use_backquotes)) {
00062 $use_backquotes = 0;
00063 }
00064 if (!isset($pos)) {
00065 $pos = 0;
00066 }
00067
00071 if (file_exists('./config.inc.developer.php')) {
00072 $cfgfile_to_load = './config.inc.developer.php';
00073 } else {
00074 $cfgfile_to_load = './config.inc.php';
00075 }
00076
00081 $old_error_reporting = error_reporting(0);
00082 include_once($cfgfile_to_load);
00083
00084 if (!isset($cfgServers) && !isset($cfg['Servers'])) {
00085
00086 $cfg = array('DefaultLang' => 'en-iso-8859-1',
00087 'AllowAnywhereRecoding' => FALSE);
00088
00089 require_once('./libraries/select_lang.lib.php');
00090
00091 header('Content-Type: text/html; charset=' . $charset);
00092
00093 ?>
00094 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
00095 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
00096 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $available_languages[$lang][2]; ?>" lang="<?php echo $available_languages[$lang][2]; ?>" dir="<?php echo $text_dir; ?>">
00097
00098 <head>
00099 <title>phpMyAdmin</title>
00100 <meta http-equiv="Content-Type" content="text/html; charset=<?php echo $charset; ?>" />
00101
00102 <style type="text/css">
00103 <!--
00104 body {font-family: sans-serif; font-size: small; color: #000000; background-color: #F5F5F5}
00105 h1 {font-family: sans-serif; font-size: large; font-weight: bold}
00106
00107 </style>
00108 </head>
00109
00110
00111 <body bgcolor="#ffffff">
00112 <h1>phpMyAdmin - <?php echo $strError; ?></h1>
00113 <p>
00114 <?php echo $strConfigFileError; ?><br /><br />
00115 <a href="config.inc.php" target="_blank">config.inc.php</a>
00116 </p>
00117 </body>
00118
00119 </html>
00120 <?php
00121 exit();
00122 }
00123 error_reporting($old_error_reporting);
00124 unset($old_error_reporting, $cfgfile_to_load);
00125
00130 if (isset($cfg['FileRevision'])) {
00131
00132
00133 $cfg['FileRevision'] = str_replace('$' . 'Revision: ', '', $cfg['FileRevision']);
00134 $cfg['FileRevision'] = str_replace(' $', '', $cfg['FileRevision']);
00135 $cfg['FileRevision'] = explode('.', $cfg['FileRevision']);
00136 } else {
00137 $cfg['FileRevision'] = array(1, 1);
00138 }
00139 if ($cfg['FileRevision'][0] < 2 || ($cfg['FileRevision'][0] == 2 && $cfg['FileRevision'][1] < 4)) {
00140 require_once('./libraries/config_import.lib.php');
00141 }
00142
00146 require_once('./libraries/select_lang.lib.php');
00147
00148 if ($is_minimum_common == FALSE) {
00152 require_once('./libraries/mysql_wrappers.lib.php');
00153 }
00154
00160 require_once('./libraries/defines.lib.php');
00161
00162 if ($is_minimum_common == FALSE) {
00167 $is_upload = TRUE;
00168 if (strtolower(@ini_get('file_uploads')) == 'off'
00169 || @ini_get('file_uploads') == 0) {
00170 $is_upload = FALSE;
00171 }
00172
00180 function get_real_size($size=0) {
00182 if (!$size) {
00183 return 0;
00184 }
00185 $scan['MB'] = 1048576;
00186 $scan['Mb'] = 1048576;
00187 $scan['M'] = 1048576;
00188 $scan['m'] = 1048576;
00189 $scan['KB'] = 1024;
00190 $scan['Kb'] = 1024;
00191 $scan['K'] = 1024;
00192 $scan['k'] = 1024;
00193
00194 while (list($key) = each($scan)) {
00195 if ((strlen($size)>strlen($key))&&(substr($size, strlen($size) - strlen($key))==$key)) {
00196 $size = substr($size, 0, strlen($size) - strlen($key)) * $scan[$key];
00197 break;
00198 }
00199 }
00200 return $size;
00201 }
00202
00203
00204 if (!$filesize = ini_get('upload_max_filesize')) {
00205 $filesize = "5M";
00206 }
00207 $max_upload_size = get_real_size($filesize);
00208
00209 if ($postsize = ini_get('post_max_size')) {
00210 $postsize = get_real_size($postsize);
00211 if ($postsize < $max_upload_size) {
00212 $max_upload_size = $postsize;
00213 }
00214 }
00215 unset($filesize);
00216 unset($postsize);
00217
00231 function PMA_displayMaximumUploadSize($max_upload_size) {
00232 list($max_size, $max_unit) = PMA_formatByteDown($max_upload_size);
00233 return '(' . sprintf($GLOBALS['strMaximumSize'], $max_size, $max_unit) . ')';
00234 }
00235
00246 function PMA_generateHiddenMaxFileSize($max_size){
00247 return '<input type="hidden" name="MAX_FILE_SIZE" value="' .$max_size . '" />';
00248 }
00249
00253 require_once('./libraries/charset_conversion.lib.php');
00254 }
00255
00256 if ($is_minimum_common == FALSE) {
00260 require_once('./libraries/string.lib.php');
00261 }
00262
00263
00264
00265 if (@ini_get('zlib.output_compression')) {
00266 $cfg['OBGzip'] = FALSE;
00267 }
00268
00269
00270 if (strtolower($cfg['OBGzip']) == 'auto') {
00271 if (PMA_USR_BROWSER_AGENT == 'IE' && PMA_USR_BROWSER_VER >= 6 && PMA_USR_BROWSER_VER < 7) {
00272 $cfg['OBGzip'] = FALSE;
00273 } else {
00274 $cfg['OBGzip'] = TRUE;
00275 }
00276 }
00277
00278 if ($is_minimum_common == FALSE) {
00282 require_once('./libraries/url_generating.lib.php');
00283
00287 if (!@function_exists('mysql_connect')) {
00288 PMA_dl('mysql');
00289 }
00290
00291
00292 if (!@function_exists('mysql_connect')) {
00293 if (empty($is_header_sent)) {
00294 require_once('./libraries/header_http.inc.php');
00295 }
00296 echo $strCantLoadMySQL . '<br />' . "\n"
00297 . '<a href="./Documentation.html#faqmysql" target="documentation">' . $GLOBALS['strDocu'] . '</a>' . "\n";
00298 exit();
00299 }
00300
00301
00316 function PMA_sqlAddslashes($a_string = '', $is_like = FALSE, $crlf = FALSE)
00317 {
00318 if ($is_like) {
00319 $a_string = str_replace('\\', '\\\\\\\\', $a_string);
00320 } else {
00321 $a_string = str_replace('\\', '\\\\', $a_string);
00322 }
00323
00324 if ($crlf) {
00325 $a_string = str_replace("\n", '\n', $a_string);
00326 $a_string = str_replace("\r", '\r', $a_string);
00327 $a_string = str_replace("\t", '\t', $a_string);
00328 }
00329
00330 $a_string = str_replace('\'', '\\\'', $a_string);
00331
00332 return $a_string;
00333 }
00334
00335
00347 function PMA_escape_mysql_wildcards($name)
00348 {
00349 $name = str_replace('_', '\\_', $name);
00350 $name = str_replace('%', '\\%', $name);
00351
00352 return $name;
00353 }
00354
00355
00370 function PMA_formatSql($parsed_sql, $unparsed_sql = '')
00371 {
00372 global $cfg;
00373
00374
00375
00376
00377 if (PMA_SQP_isError()) {
00378 return $parsed_sql;
00379 }
00380
00381 if (!is_array($parsed_sql)) {
00382
00383
00384 $formatted_sql = '<pre>' . "\n"
00385 . (($cfg['SQP']['fmtType'] == 'none' && $unparsed_sql != '') ? $unparsed_sql : $parsed_sql) . "\n"
00386 . '</pre>';
00387 return $formatted_sql;
00388 }
00389
00390 $formatted_sql = '';
00391
00392 switch ($cfg['SQP']['fmtType']) {
00393 case 'none':
00394 if ($unparsed_sql != '') {
00395 $formatted_sql = "<pre>\n" . PMA_SQP_formatNone(array('raw' => $unparsed_sql)) . "\n</pre>";
00396 } else {
00397 $formatted_sql = PMA_SQP_formatNone($parsed_sql);
00398 }
00399 break;
00400 case 'html':
00401 $formatted_sql = PMA_SQP_formatHtml($parsed_sql,'color');
00402 break;
00403 case 'text':
00404
00405 $formatted_sql = PMA_SQP_formatHtml($parsed_sql,'text');
00406 break;
00407 default:
00408 break;
00409 }
00410
00411 return $formatted_sql;
00412 }
00413
00414
00425 function PMA_showMySQLDocu($chapter, $link)
00426 {
00427 if (!empty($GLOBALS['cfg']['MySQLManualBase'])) {
00428 if (!empty($GLOBALS['cfg']['MySQLManualType'])) {
00429 switch ($GLOBALS['cfg']['MySQLManualType']) {
00430 case 'old':
00431 return '[<a href="' . $GLOBALS['cfg']['MySQLManualBase'] . '/' . $link[0] . '/' . $link[1] . '/' . $link . '.html" target="mysql_doc">' . $GLOBALS['strDocu'] . '</a>]';
00432 case 'chapters':
00433 return '[<a href="' . $GLOBALS['cfg']['MySQLManualBase'] . '/manual_' . $chapter . '.html#' . $link . '" target="mysql_doc">' . $GLOBALS['strDocu'] . '</a>]';
00434 case 'big':
00435 return '[<a href="' . $GLOBALS['cfg']['MySQLManualBase'] . '#' . $link . '" target="mysql_doc">' . $GLOBALS['strDocu'] . '</a>]';
00436 case 'none':
00437 return '';
00438 case 'searchable':
00439 default:
00440 return '[<a href="' . $GLOBALS['cfg']['MySQLManualBase'] . '/' . $link . '.html" target="mysql_doc">' . $GLOBALS['strDocu'] . '</a>]';
00441 }
00442 } else {
00443
00444 return '[<a href="' . $GLOBALS['cfg']['MySQLManualBase'] . '/' . $link[0] . '/' . $link[1] . '/' . $link . '.html" target="mysql_doc">' . $GLOBALS['strDocu'] . '</a>]';
00445 }
00446 } else {
00447
00448 if (!empty($GLOBALS['cfg']['ManualBaseShort'])) {
00449
00450 return '[<a href="' . $GLOBALS['cfg']['MySQLManualBase'] . '/' . $link[0] . '/' . $link[1] . '/' . $link . '.html" target="mysql_doc">' . $GLOBALS['strDocu'] . '</a>]';
00451 } else {
00452 return '';
00453 }
00454 }
00455 }
00456
00470 function PMA_mysqlDie($error_message = '', $the_query = '',
00471 $is_modify_link = TRUE, $back_url = '',
00472 $exit = TRUE)
00473 {
00474 global $cfg, $table, $db, $sql_query;
00475
00476 require_once('./header.inc.php');
00477
00478 if (!$error_message) {
00479 $error_message = PMA_mysql_error();
00480 }
00481 if (!$the_query && !empty($GLOBALS['sql_query'])) {
00482 $the_query = $GLOBALS['sql_query'];
00483 }
00484
00485
00486
00487
00488 if (PMA_SQP_isError()) {
00489 $parsed_sql = htmlspecialchars($the_query);
00490 } else {
00491 $parsed_sql = PMA_SQP_parse($the_query);
00492 }
00493
00494
00495 echo '<p><b>'. $GLOBALS['strError'] . '</b></p>' . "\n";
00496
00497
00498
00499 if (!empty($the_query) && !strstr($the_query, 'connect')) {
00500
00501
00502
00503 if (PMA_SQP_isError()) {
00504 echo PMA_SQP_getErrorString();
00505 }
00506
00507 echo '<p>' . "\n";
00508 echo ' ' . $GLOBALS['strSQLQuery'] . ' : ' . "\n";
00509 if ($is_modify_link && isset($db)) {
00510 echo ' ['
00511 . '<a href="db_details.php?' . PMA_generate_common_url($GLOBALS['db']) . '&sql_query=' . urlencode($the_query) . '&show_query=1">' . $GLOBALS['strEdit'] . '</a>'
00512 . ']' . "\n";
00513 }
00514 echo '</p>' . "\n"
00515 . '<p>' . "\n"
00516 . ' ' . PMA_formatSql($parsed_sql, $the_query) . "\n"
00517 . '</p>' . "\n";
00518 }
00519 if (!empty($error_message)) {
00520 $error_message = htmlspecialchars($error_message);
00521 $error_message = preg_replace("@((\015\012)|(\015)|(\012)){3,}@", "\n\n", $error_message);
00522 }
00523 echo '<p>' . "\n"
00524 . ' ' . $GLOBALS['strMySQLSaid'] . '<br />' . "\n"
00525 . '</p>' . "\n";
00526
00527
00528
00529
00530
00531 $error_message = str_replace(' ', ' ', $error_message);
00532
00533 $error_message = str_replace("\t", ' ', $error_message);
00534
00535 $error_message = nl2br($error_message);
00536
00537 echo '<code>' . "\n"
00538 . $error_message . "\n"
00539 . '</code><br /><br />' . "\n";
00540
00541 echo PMA_showMySQLDocu('Error-returns', 'Error-returns');
00542
00543 if (!empty($back_url) && $exit) {
00544 echo ' · [<a href="' . (strstr($back_url, '?') ? $back_url . '&no_history=true' : $back_url . '?no_history=true') . '">' . $GLOBALS['strBack'] . '</a>]';
00545 }
00546 echo "\n";
00547
00548 if ($exit) {
00549 require_once('./footer.inc.php');
00550 }
00551 }
00552
00553
00565 function PMA_isInto($toFind = '', &$in)
00566 {
00567 $max = count($in);
00568 for ($i = 0; $i < $max && ($toFind != $in[$i]); $i++) {
00569
00570 }
00571
00572 return ($i < $max) ? $i : -1;
00573 }
00574 }
00575
00591 function PMA_safe_db_list($only_db_check, $dbh, $dblist_cnt, $rs, $userlink, $cfg, $dblist) {
00592
00593 if ($only_db_check == FALSE) {
00594
00595
00596 $is_safe_show_dbs = FALSE;
00597 if (PMA_MYSQL_INT_VERSION >= 40002) {
00598 $is_safe_show_dbs = 'ON';
00599 }
00600 else {
00601 $local_query = 'SHOW VARIABLES LIKE \'safe\\_show\\_database\'';
00602 $rs = PMA_mysql_query($local_query, $dbh);
00603 $is_safe_show_dbs = ($rs) ? @PMA_mysql_result($rs, 0, 'Value') : FALSE;
00604 mysql_free_result($rs);
00605 }
00606
00607
00608 if ($is_safe_show_dbs && strtoupper($is_safe_show_dbs) != 'OFF') {
00609 $uva_alldbs = mysql_list_dbs($userlink);
00610 while ($uva_row = PMA_mysql_fetch_array($uva_alldbs)) {
00611 $dblist[] = $uva_row[0];
00612 }
00613 $dblist_cnt = count($dblist);
00614 unset($uva_alldbs);
00615 }
00616
00617
00618 if (!$dblist_cnt) {
00619 $auth_query = 'SELECT User, Select_priv '
00620 . 'FROM mysql.user '
00621 . 'WHERE User = \'' . PMA_sqlAddslashes($cfg['Server']['user']) . '\'';
00622 $rs = PMA_mysql_query($auth_query, $dbh);
00623 }
00624 }
00625
00626
00627
00628 if (!$dblist_cnt
00629 && ($rs && @mysql_numrows($rs))) {
00630 $row = PMA_mysql_fetch_array($rs);
00631 mysql_free_result($rs);
00632
00633
00634
00635
00636
00637
00638
00639
00640
00641
00642 if ($row['Select_priv'] != 'Y') {
00643
00644
00645
00646 $local_query = 'SELECT DISTINCT Db FROM mysql.db WHERE Select_priv = \'Y\' AND (User = \'' . PMA_sqlAddslashes($cfg['Server']['user']) . '\' OR User = \'\')';
00647 $rs = PMA_mysql_query($local_query, $dbh);
00648 if ($rs && @mysql_numrows($rs)) {
00649
00650
00651
00652
00653
00654 $uva_mydbs = array();
00655
00656
00657
00658
00659 while ($row = PMA_mysql_fetch_array($rs)) {
00660
00661 if (empty($row['Db']) || $row['Db'] == '%') {
00662 $uva_mydbs['%'] = 1;
00663 break;
00664 }
00665
00666 if (!isset($uva_mydbs[$row['Db']])) {
00667 $uva_mydbs[$row['Db']] = 1;
00668 }
00669 }
00670 mysql_free_result($rs);
00671 $uva_alldbs = mysql_list_dbs($dbh);
00672
00673 if (isset($uva_mydbs['%'])) {
00674 while ($uva_row = PMA_mysql_fetch_array($uva_alldbs)) {
00675 $dblist[] = $uva_row[0];
00676 }
00677 }
00678 else {
00679 while ($uva_row = PMA_mysql_fetch_array($uva_alldbs)) {
00680 $uva_db = $uva_row[0];
00681 if (isset($uva_mydbs[$uva_db]) && $uva_mydbs[$uva_db] == 1) {
00682 $dblist[] = $uva_db;
00683 $uva_mydbs[$uva_db] = 0;
00684 } else if (!isset($dblist[$uva_db])) {
00685 foreach($uva_mydbs AS $uva_matchpattern => $uva_value) {
00686
00687
00688
00689 $re = '(^|(\\\\\\\\)+|[^\])';
00690 $uva_regex = ereg_replace($re . '%', '\\1.*', ereg_replace($re . '_', '\\1.{1}', $uva_matchpattern));
00691
00692
00693 if (ereg('^' . $uva_regex . '$', $uva_db)) {
00694 $dblist[] = $uva_db;
00695 break;
00696 }
00697 }
00698 }
00699 }
00700 }
00701 mysql_free_result($uva_alldbs);
00702 unset($uva_mydbs);
00703 }
00704
00705
00706 $local_query = 'SELECT DISTINCT Db FROM mysql.tables_priv WHERE Table_priv LIKE \'%Select%\' AND User = \'' . PMA_sqlAddslashes($cfg['Server']['user']) . '\'';
00707 $rs = PMA_mysql_query($local_query, $dbh);
00708 if ($rs && @mysql_numrows($rs)) {
00709 while ($row = PMA_mysql_fetch_array($rs)) {
00710 if (PMA_isInto($row['Db'], $dblist) == -1) {
00711 $dblist[] = $row['Db'];
00712 }
00713 }
00714 mysql_free_result($rs);
00715 }
00716 }
00717 }
00718
00719 return $dblist;
00720 }
00721
00740 function PMA_setFontSizes()
00741 {
00742 global $font_size, $font_biggest, $font_bigger, $font_smaller, $font_smallest;
00743
00744
00745 if (PMA_USR_OS == 'Win'
00746 && ((PMA_USR_BROWSER_AGENT == 'IE' && PMA_USR_BROWSER_VER < 6)
00747 || (PMA_USR_BROWSER_AGENT == 'OPERA' && PMA_USR_BROWSER_VER < 7))) {
00748 $font_size = 'x-small';
00749 $font_biggest = 'large';
00750 $font_bigger = 'medium';
00751 $font_smaller = '90%';
00752 $font_smallest = '7pt';
00753 }
00754
00755 else if (PMA_USR_OS == 'Win') {
00756 $font_size = 'small';
00757 $font_biggest = 'large';
00758 $font_bigger = 'medium';
00759 $font_smaller = (PMA_USR_BROWSER_AGENT == 'IE')
00760 ? '90%'
00761 : 'x-small';
00762 $font_smallest = 'x-small';
00763 }
00764
00765
00766
00767
00768
00769
00770 else if (PMA_USR_OS == 'Mac'
00771 && (PMA_USR_BROWSER_AGENT == 'OMNIWEB' || PMA_USR_BROWSER_AGENT == 'OPERA' || PMA_USR_BROWSER_AGENT == 'SAFARI')) {
00772 $font_size = 'x-small';
00773 $font_biggest = 'large';
00774 $font_bigger = 'medium';
00775 $font_smaller = '90%';
00776 $font_smallest = '7pt';
00777 }
00778
00779 else if ((PMA_USR_OS == 'Mac'
00780 && ((PMA_USR_BROWSER_AGENT != 'IE' && PMA_USR_BROWSER_AGENT != 'MOZILLA')
00781 || PMA_USR_BROWSER_VER < 5))
00782 || PMA_USR_BROWSER_AGENT == 'KONQUEROR') {
00783 $font_size = 'medium';
00784 $font_biggest = 'x-large';
00785 $font_bigger = 'large';
00786 $font_smaller = 'small';
00787 $font_smallest = 'x-small';
00788 }
00789
00790 else if (PMA_USR_OS == 'OS/2'
00791 && PMA_USR_BROWSER_AGENT == 'OPERA') {
00792 $font_size = 'small';
00793 $font_biggest = 'medium';
00794 $font_bigger = 'medium';
00795 $font_smaller = 'x-small';
00796 $font_smallest = 'x-small';
00797 }
00798 else {
00799 $font_size = 'small';
00800 $font_biggest = 'large';
00801 $font_bigger = 'medium';
00802 $font_smaller = 'x-small';
00803 $font_smallest = 'x-small';
00804 }
00805
00806 return TRUE;
00807 }
00808
00809
00810 if ($is_minimum_common == FALSE) {
00816 $display_pmaAbsoluteUri_warning = 0;
00817
00818
00819
00820
00821 if (empty($cfg['PmaAbsoluteUri'])) {
00822 if (!empty($_SERVER)) {
00823 $SERVER_ARRAY = '_SERVER';
00824 } else {
00825 $SERVER_ARRAY = 'GLOBALS';
00826 }
00827 if (isset(${$SERVER_ARRAY}['HTTP_HOST'])) {
00828 $HTTP_HOST = ${$SERVER_ARRAY}['HTTP_HOST'];
00829 }
00830 if (isset(${$SERVER_ARRAY}['HTTPS'])) {
00831 $HTTPS = ${$SERVER_ARRAY}['HTTPS'];
00832 }
00833 if (isset(${$SERVER_ARRAY}['SERVER_PORT'])) {
00834 $SERVER_PORT = ${$SERVER_ARRAY}['SERVER_PORT'];
00835 }
00836 if (isset(${$SERVER_ARRAY}['REQUEST_URI'])) {
00837 $REQUEST_URI = ${$SERVER_ARRAY}['REQUEST_URI'];
00838 }
00839 if (isset(${$SERVER_ARRAY}['PATH_INFO'])) {
00840 $PATH_INFO = ${$SERVER_ARRAY}['PATH_INFO'];
00841 }
00842 if (isset(${$SERVER_ARRAY}['HTTP_SCHEME'])) {
00843 $HTTP_SCHEME = ${$SERVER_ARRAY}['HTTP_SCHEME'];
00844 }
00845 if (!empty($HTTP_SCHEME)) {
00846 $cfg['PmaAbsoluteUri'] = $HTTP_SCHEME . ':
00847 } else {
00848 $cfg['PmaAbsoluteUri'] = ((!empty($HTTPS) && strtolower($HTTPS) != 'off') ? 'https' : 'http') . ':
00849 }
00850 $port_in_HTTP_HOST = (strpos($HTTP_HOST, ':') > 0);
00851 $cfg['PmaAbsoluteUri'] .= $HTTP_HOST;
00852
00853
00854
00855
00856 if (!(!$port_in_HTTP_HOST && !empty($SERVER_PORT) && ($SERVER_PORT == 80 || $SERVER_PORT == 443))) {
00857 $cfg['PmaAbsoluteUri'] .= ((!empty($SERVER_PORT) && !$port_in_HTTP_HOST) ? ':' . $SERVER_PORT : '');
00858 }
00859
00860
00861
00862 if (isset($REQUEST_URI)) {
00863 $cfg['PmaAbsoluteUri'] .= substr($REQUEST_URI, 0, strrpos($REQUEST_URI, '/') + 1);
00864 } else if (isset($PATH_INFO)) {
00865 $cfg['PmaAbsoluteUri'] .= substr($PATH_INFO, 0, strrpos($PATH_INFO, '/') + 1);
00866 } else {
00867 $cfg['PmaAbsoluteUri'] .= substr($PHP_SELF, 0, strrpos($PHP_SELF, '/') + 1);
00868 }
00869
00870
00871
00872
00873
00874
00875
00876 if ($cfg['PmaAbsoluteUri_DisableWarning'] == FALSE) {
00877 $display_pmaAbsoluteUri_warning = 1;
00878 }
00879 } else {
00880
00881
00882
00883
00884
00885 if (substr($cfg['PmaAbsoluteUri'], -1) != '/') {
00886 $cfg['PmaAbsoluteUri'] .= '/';
00887 }
00888
00889
00890
00891 if (substr($cfg['PmaAbsoluteUri'], 0, 7) != 'http:
00892 if (!empty($_SERVER)) {
00893 $SERVER_ARRAY = '_SERVER';
00894 } else {
00895 $SERVER_ARRAY = 'GLOBALS';
00896 }
00897 if (isset(${$SERVER_ARRAY}['HTTPS'])) {
00898 $HTTPS = ${$SERVER_ARRAY}['HTTPS'];
00899 }
00900
00901 $cfg['PmaAbsoluteUri'] = ((!empty($HTTPS) && strtolower($HTTPS) != 'off') ? 'https' : 'http') . ':'
00902 . (substr($cfg['PmaAbsoluteUri'], 0, 2) == '
00903 . $cfg['PmaAbsoluteUri'];
00904 }
00905 }
00906
00907
00911 $connect_func = ($cfg['PersistentConnections']) ? 'mysql_pconnect' : 'mysql_connect';
00912 $dblist = array();
00913
00914
00918 foreach($cfg['Servers'] AS $key => $val) {
00919
00920 if ( ($val['connect_type'] == 'tcp') && empty($val['host'])) {
00921 unset($cfg['Servers'][$key]);
00922 }
00923
00924
00925
00926
00927
00928
00929 if ( ($val['connect_type'] == 'socket') && empty($val['host']) && empty($val['verbose']) ) {
00930 $cfg['Servers'][$key]['verbose'] = sprintf($GLOBALS['strServer'], $key);
00931 $val['verbose'] = sprintf($GLOBALS['strServer'],$key);
00932 }
00933 }
00934
00935 if (empty($server) || !isset($cfg['Servers'][$server]) || !is_array($cfg['Servers'][$server])) {
00936 $server = $cfg['ServerDefault'];
00937 }
00938
00939
00948 if ($server == 0) {
00949 $cfg['Server'] = array();
00950 }
00951
00955 else if (isset($cfg['Servers'][$server])) {
00956 $cfg['Server'] = $cfg['Servers'][$server];
00957
00958
00959 $server_port = (empty($cfg['Server']['port']))
00960 ? ''
00961 : ':' . $cfg['Server']['port'];
00962 if (strtolower($cfg['Server']['connect_type']) == 'tcp') {
00963 $cfg['Server']['socket'] = '';
00964 }
00965 $server_socket = (empty($cfg['Server']['socket']))
00966 ? ''
00967 : ':' . $cfg['Server']['socket'];
00968 if (PMA_MYSQL_CLIENT_API >= 32349) {
00969 $client_flags = $cfg['Server']['compress'] && defined('MYSQL_CLIENT_COMPRESS') ? MYSQL_CLIENT_COMPRESS : 0;
00970 }
00971
00972
00973
00974
00975
00976 $coming_from_common = TRUE;
00977
00978 require_once('./libraries/auth/' . $cfg['Server']['auth_type'] . '.auth.lib.php');
00979 if (!PMA_auth_check()) {
00980 PMA_auth();
00981 } else {
00982 PMA_auth_set_user();
00983 }
00984
00985
00986
00987
00988
00989
00990
00991 if (isset($cfg['Server']['AllowDeny']) && isset($cfg['Server']['AllowDeny']['order'])) {
00992 require_once('./libraries/ip_allow_deny.lib.php');
00993
00994 $allowDeny_forbidden = FALSE;
00995 if ($cfg['Server']['AllowDeny']['order'] == 'allow,deny') {
00996 $allowDeny_forbidden = TRUE;
00997 if (PMA_allowDeny('allow')) {
00998 $allowDeny_forbidden = FALSE;
00999 }
01000 if (PMA_allowDeny('deny')) {
01001 $allowDeny_forbidden = TRUE;
01002 }
01003 } else if ($cfg['Server']['AllowDeny']['order'] == 'deny,allow') {
01004 if (PMA_allowDeny('deny')) {
01005 $allowDeny_forbidden = TRUE;
01006 }
01007 if (PMA_allowDeny('allow')) {
01008 $allowDeny_forbidden = FALSE;
01009 }
01010 } else if ($cfg['Server']['AllowDeny']['order'] == 'explicit') {
01011 if (PMA_allowDeny('allow')
01012 && !PMA_allowDeny('deny')) {
01013 $allowDeny_forbidden = FALSE;
01014 } else {
01015 $allowDeny_forbidden = TRUE;
01016 }
01017 }
01018
01019
01020 if ($allowDeny_forbidden) {
01021 PMA_auth_fails();
01022 }
01023 unset($allowDeny_forbidden);
01024 }
01025
01026
01027 if (isset($cfg['Server']['only_db']) && $cfg['Server']['only_db'] != '') {
01028 if (is_array($cfg['Server']['only_db'])) {
01029 $dblist = $cfg['Server']['only_db'];
01030 } else {
01031 $dblist[] = $cfg['Server']['only_db'];
01032 }
01033 }
01034
01035 $bkp_track_err = @ini_set('track_errors', 1);
01036
01037
01038
01039
01040
01041 if ($cfg['Server']['controluser'] != '') {
01042 if (empty($client_flags)) {
01043 $dbh = @$connect_func(
01044 $cfg['Server']['host'] . $server_port . $server_socket,
01045 $cfg['Server']['controluser'],
01046 $cfg['Server']['controlpass']
01047 );
01048 } else {
01049 $dbh = @$connect_func(
01050 $cfg['Server']['host'] . $server_port . $server_socket,
01051 $cfg['Server']['controluser'],
01052 $cfg['Server']['controlpass'],
01053 FALSE,
01054 $client_flags
01055 );
01056 }
01057 if ($dbh == FALSE) {
01058 if (PMA_mysql_error()) {
01059 $conn_error = PMA_mysql_error();
01060 } else if (isset($php_errormsg)) {
01061 $conn_error = $php_errormsg;
01062 } else {
01063 $conn_error = 'Cannot connect: invalid settings.';
01064 }
01065 $local_query = $connect_func . '('
01066 . $cfg['Server']['host'] . $server_port . $server_socket . ', '
01067 . $cfg['Server']['controluser'] . ', '
01068 . $cfg['Server']['controlpass']
01069 . (empty($client_flags) ? '' : ', FALSE, ' . $client_flags)
01070 . ')';
01071 require_once('./header.inc.php');
01072
01073 PMA_mysqlDie($conn_error, '', FALSE);
01074 }
01075 }
01076
01077
01078
01079
01080
01081 if (empty($client_flags)) {
01082 $userlink = @$connect_func(
01083 $cfg['Server']['host'] . $server_port . $server_socket,
01084 $cfg['Server']['user'],
01085 $cfg['Server']['password']
01086 );
01087 } else {
01088 $userlink = @$connect_func(
01089 $cfg['Server']['host'] . $server_port . $server_socket,
01090 $cfg['Server']['user'],
01091 $cfg['Server']['password'],
01092 FALSE,
01093 $client_flags
01094 );
01095 }
01096 if ($userlink == FALSE) {
01097 PMA_auth_fails();
01098 }
01099
01100
01101
01102
01103 @ini_set('track_errors', $bkp_track_err);
01104
01105
01106
01107 if ($cfg['Server']['controluser'] == '') {
01108 $dbh = $userlink;
01109 }
01110
01111
01112 require_once('./libraries/defines_mysql.lib.php');
01113
01117 require_once('./libraries/sqlparser.lib.php');
01118
01122 require_once('./libraries/sqlvalidator.lib.php');
01123
01124
01125
01126 $dblist_cnt = count($dblist);
01127 if ($dblist_cnt) {
01128 $true_dblist = array();
01129 $is_show_dbs = TRUE;
01130
01131 $dblist_asterisk_bool = FALSE;
01132 for ($i = 0; $i < $dblist_cnt; $i++) {
01133
01134
01135 if ($dblist[$i] == '*' && $dblist_asterisk_bool == FALSE) {
01136 $dblist_asterisk_bool = TRUE;
01137 $dblist_full = PMA_safe_db_list(FALSE, $dbh, FALSE, $rs, $userlink, $cfg, $dblist);
01138 foreach($dblist_full AS $dbl_key => $dbl_val) {
01139 if (!in_array($dbl_val, $dblist)) {
01140 $true_dblist[] = $dbl_val;
01141 }
01142 }
01143
01144 continue;
01145 } elseif ($dblist[$i] == '*') {
01146
01147 continue;
01148 }
01149 if ($is_show_dbs && ereg('(^|[^\])(_|%)', $dblist[$i])) {
01150 $local_query = 'SHOW DATABASES LIKE \'' . $dblist[$i] . '\'';
01151 $rs = PMA_mysql_query($local_query, $dbh);
01152
01153 if ($i == 0
01154 && (PMA_mysql_error() && mysql_errno() == 1045)) {
01155 $true_dblist[] = str_replace('\\_', '_', str_replace('\\%', '%', $dblist[$i]));
01156 $is_show_dbs = FALSE;
01157 }
01158
01159
01160
01161
01162 while ($row = @PMA_mysql_fetch_row($rs)) {
01163 $true_dblist[] = $row[0];
01164 }
01165 if ($rs) {
01166 mysql_free_result($rs);
01167 }
01168 } else {
01169 $true_dblist[] = str_replace('\\_', '_', str_replace('\\%', '%', $dblist[$i]));
01170 }
01171 }
01172 $dblist = $true_dblist;
01173 unset($true_dblist);
01174 $only_db_check = TRUE;
01175 }
01176
01177
01178 else {
01179 $only_db_check = FALSE;
01180 }
01181
01182 if (isset($dblist_full) && !count($dblist_full)) {
01183 $dblist = PMA_safe_db_list($only_db_check, $dbh, $dblist_cnt, $rs, $userlink, $cfg, $dblist);
01184 }
01185
01186 }
01190 else {
01191 echo $strHostEmpty;
01192 }
01193
01194
01205 function PMA_availableDatabases($error_url = '')
01206 {
01207 global $dblist;
01208 global $num_dbs;
01209
01210 $num_dbs = count($dblist);
01211
01212
01213
01214 if ($num_dbs) {
01215 $true_dblist = array();
01216 for ($i = 0; $i < $num_dbs; $i++) {
01217 $dblink = @PMA_mysql_select_db($dblist[$i]);
01218 if ($dblink) {
01219 $true_dblist[] = $dblist[$i];
01220 }
01221 }
01222 $dblist = array();
01223 $dblist = $true_dblist;
01224 unset($true_dblist);
01225 $num_dbs = count($dblist);
01226 }
01227
01228
01229
01230 else {
01231 $dbs = mysql_list_dbs() or PMA_mysqlDie('', 'SHOW DATABASES;', FALSE, $error_url);
01232 $num_dbs = ($dbs) ? @mysql_num_rows($dbs) : 0;
01233 $real_num_dbs = 0;
01234 for ($i = 0; $i < $num_dbs; $i++) {
01235 $db_name_tmp = PMA_mysql_dbname($dbs, $i);
01236 $dblink = @PMA_mysql_select_db($db_name_tmp);
01237 if ($dblink) {
01238 $dblist[] = $db_name_tmp;
01239 $real_num_dbs++;
01240 }
01241 }
01242 mysql_free_result($dbs);
01243 $num_dbs = $real_num_dbs;
01244 }
01245
01246 return TRUE;
01247 }
01248
01249
01250
01251
01252
01253
01270 function PMA_backquote($a_name, $do_it = TRUE)
01271 {
01272 if ($do_it
01273 && !empty($a_name) && $a_name != '*') {
01274
01275 if (is_array($a_name)) {
01276 $result = array();
01277 foreach($a_name AS $key => $val) {
01278 $result[$key] = '`' . $val . '`';
01279 }
01280 return $result;
01281 } else {
01282 return '`' . $a_name . '`';
01283 }
01284 } else {
01285 return $a_name;
01286 }
01287 }
01288
01289
01302 function PMA_jsFormat($a_string = '', $add_backquotes = TRUE)
01303 {
01304 if (is_string($a_string)) {
01305 $a_string = htmlspecialchars($a_string);
01306 $a_string = str_replace('\\', '\\\\', $a_string);
01307 $a_string = str_replace('\'', '\\\'', $a_string);
01308 $a_string = str_replace('#', '\\#', $a_string);
01309 $a_string = str_replace("\012", '\\\\n', $a_string);
01310 $a_string = str_replace("\015", '\\\\r', $a_string);
01311 }
01312
01313 return (($add_backquotes) ? PMA_backquote($a_string) : $a_string);
01314 }
01315
01316
01324 function PMA_whichCrlf()
01325 {
01326 $the_crlf = "\n";
01327
01328
01329
01330 if (PMA_USR_OS == 'Win') {
01331 $the_crlf = "\r\n";
01332 }
01333
01334 else if (PMA_USR_OS == 'Mac') {
01335 $the_crlf = "\r";
01336 }
01337
01338 else {
01339 $the_crlf = "\n";
01340 }
01341
01342 return $the_crlf;
01343 }
01344
01345
01360 function PMA_countRecords($db, $table, $ret = FALSE)
01361 {
01362 global $err_url, $cfg;
01363 $local_query = 'SHOW TABLE STATUS FROM ' . PMA_backquote($db) . ' LIKE \'' . PMA_sqlAddslashes($table, TRUE) . '\'';
01364 $result = PMA_mysql_query($local_query) or PMA_mysqlDie('', $local_query, '', $err_url);
01365 $showtable = PMA_mysql_fetch_array($result);
01366 $num = (isset($showtable['Rows']) ? $showtable['Rows'] : 0);
01367 if ($num < $cfg['MaxExactCount']) {
01368 unset($num);
01369 }
01370 mysql_free_result($result);
01371
01372 if (!isset($num)) {
01373 $result = PMA_mysql_query('SELECT COUNT(*) AS num FROM ' . PMA_backquote($db) . '.' . PMA_backquote($table)) or PMA_mysqlDie('', $local_query, '', $err_url);
01374 $num = ($result) ? PMA_mysql_result($result, 0, 'num') : 0;
01375 mysql_free_result($result);
01376 }
01377 if ($ret) {
01378 return $num;
01379 } else {
01380 echo number_format($num, 0, $GLOBALS['number_decimal_separator'], $GLOBALS['number_thousands_separator']);
01381 return TRUE;
01382 }
01383 }
01384
01385
01395 function PMA_showMessage($message)
01396 {
01397 global $cfg;
01398
01399 require_once('./header.inc.php');
01400
01401
01402 if (isset($GLOBALS['reload']) && $GLOBALS['reload']) {
01403 echo "\n";
01404 $reload_url = './left.php?' . PMA_generate_common_url((isset($GLOBALS['db']) ? $GLOBALS['db'] : ''), '', '&')
01405 ?>
01406 <script type="text/javascript" language="javascript1.2">
01407 <!--
01408 if (typeof(window.parent) != 'undefined'
01409 && typeof(window.parent.frames['nav']) != 'undefined') {
01410 window.parent.frames['nav'].location.replace('<?php echo $reload_url; ?>&hash=' + <?php echo (($cfg['QueryFrame'] && $cfg['QueryFrameJS']) ? 'window.parent.frames[\'queryframe\'].document.hashform.hash.value' : "'" . md5($cfg['PmaAbsoluteUri']) . "'"); ?>);
01411 }
01412
01413 </script>
01414 <?php
01415 unset($GLOBALS['reload']);
01416 }
01417
01418
01419 else if (!empty($GLOBALS['table']) && $cfg['ShowTooltip']) {
01420 $result = @PMA_mysql_query('SHOW TABLE STATUS FROM ' . PMA_backquote($GLOBALS['db']) . ' LIKE \'' . PMA_sqlAddslashes($GLOBALS['table'], TRUE) . '\'');
01421 if ($result) {
01422 $tbl_status = PMA_mysql_fetch_array($result, MYSQL_ASSOC);
01423 $tooltip = (empty($tbl_status['Comment']))
01424 ? ''
01425 : $tbl_status['Comment'] . ' ';
01426 $tooltip .= '(' . $tbl_status['Rows'] . ' ' . $GLOBALS['strRows'] . ')';
01427 mysql_free_result($result);
01428 $md5_tbl = md5($GLOBALS['table']);
01429 echo "\n";
01430 ?>
01431 <script type="text/javascript" language="javascript1.2">
01432 <!--
01433 if (typeof(document.getElementById) != 'undefined'
01434 && typeof(window.parent.frames['nav']) != 'undefined'
01435 && typeof(window.parent.frames['nav'].document) != 'undefined' && typeof(window.parent.frames['nav'].document) != 'unknown'
01436 && (window.parent.frames['nav'].document.getElementById('<?php echo 'tbl_' . $md5_tbl; ?>'))
01437 && typeof(window.parent.frames['nav'].document.getElementById('<?php echo 'tbl_' . $md5_tbl; ?>')) != 'undefined'
01438 && typeof(window.parent.frames['nav'].document.getElementById('<?php echo 'tbl_' . $md5_tbl; ?>').title) == 'string') {
01439 window.parent.frames['nav'].document.getElementById('<?php echo 'tbl_' . $md5_tbl; ?>').title = '<?php echo PMA_jsFormat($tooltip, FALSE); ?>';
01440 }
01441
01442 </script>
01443 <?php
01444 }
01445 }
01446
01447
01448 if (isset($GLOBALS['table']) && isset($GLOBALS['sql_query'])
01449 && $GLOBALS['sql_query'] == 'TRUNCATE TABLE ' . PMA_backquote($GLOBALS['table'])) {
01450 if (!isset($tbl_status)) {
01451 $result = @PMA_mysql_query('SHOW TABLE STATUS FROM ' . PMA_backquote($GLOBALS['db']) . ' LIKE \'' . PMA_sqlAddslashes($GLOBALS['table'], TRUE) . '\'');
01452 if ($result) {
01453 $tbl_status = PMA_mysql_fetch_array($result, MYSQL_ASSOC);
01454 mysql_free_result($result);
01455 }
01456 }
01457 if (isset($tbl_status) && (int) $tbl_status['Index_length'] > 1024) {
01458 @PMA_mysql_query('REPAIR TABLE ' . PMA_backquote($GLOBALS['table']));
01459 }
01460 }
01461 unset($tbl_status);
01462
01463 echo "\n";
01464 ?>
01465 <div align="<?php echo $GLOBALS['cell_align_left']; ?>">
01466 <table border="<?php echo $cfg['Border']; ?>" cellpadding="5">
01467 <tr>
01468 <td bgcolor="<?php echo $cfg['ThBgcolor']; ?>">
01469 <b><?php echo $message; ?></b><br />
01470 </td>
01471 </tr>
01472 <?php
01473 if ($cfg['ShowSQL'] == TRUE && (!empty($GLOBALS['sql_query']) || !empty($GLOBALS['display_query']))) {
01474 $local_query = !empty($GLOBALS['display_query']) ? $GLOBALS['display_query'] : (($cfg['SQP']['fmtType'] == 'none' && $GLOBALS['unparsed_sql'] != '') ? $GLOBALS['unparsed_sql'] : $GLOBALS['sql_query']);
01475
01476 $url_qpart = '?' . PMA_generate_common_url(isset($GLOBALS['db']) ? $GLOBALS['db'] : '', isset($GLOBALS['table']) ? $GLOBALS['table'] : '');
01477 echo "\n";
01478 ?>
01479 <tr>
01480 <td bgcolor="<?php echo $cfg['BgcolorOne']; ?>">
01481 <?php
01482 echo "\n";
01483
01484
01485
01486
01487
01488 $sqlnr = 1;
01489 if (!empty($GLOBALS['show_as_php'])) {
01490 $new_line = '\'<br />' . "\n" . ' . \' ';
01491 }
01492 if (isset($new_line)) {
01493
01494 $query_base = PMA_sqlAddslashes(htmlspecialchars($local_query));
01495
01496 $query_base = preg_replace("@((\015\012)|(\015)|(\012))+@", $new_line, $query_base);
01497 } else {
01498 $query_base = $local_query;
01499 }
01500 if (!empty($GLOBALS['show_as_php'])) {
01501 $query_base = '$sql = \'' . $query_base;
01502 } else if (!empty($GLOBALS['validatequery'])) {
01503 $query_base = PMA_validateSQL($query_base);
01504 } else {
01505 $parsed_sql = PMA_SQP_parse($query_base);
01506 $query_base = PMA_formatSql($parsed_sql, $query_base);
01507 }
01508
01509
01510
01511
01512
01513
01514
01515
01516 $edit_target = isset($GLOBALS['db']) ? (isset($GLOBALS['table']) ? 'tbl_properties.php' : 'db_details.php') : '';
01517
01518
01519
01520
01521
01522
01523 if (isset($cfg['SQLQuery']['Edit'])
01524 && ($cfg['SQLQuery']['Edit'] == TRUE )
01525 && (!empty($edit_target))) {
01526
01527 $onclick = '';
01528 if ($cfg['QueryFrameJS'] && $cfg['QueryFrame']) {
01529 $onclick = 'onclick="focus_querywindow(\'' . urlencode($local_query) . '\'); return false;"';
01530 }
01531
01532 $edit_link = ' [<a href="'
01533 . $edit_target
01534 . $url_qpart
01535 . '&sql_query=' . urlencode($local_query) . '&show_query=1#querybox" ' . $onclick . '>' . $GLOBALS['strEdit'] . '</a>]';
01536 } else {
01537 $edit_link = '';
01538 }
01539
01540
01541
01542
01543 if (isset($cfg['SQLQuery']['Explain'])
01544 && $cfg['SQLQuery']['Explain'] == TRUE) {
01545
01546
01547
01548 if (!empty($GLOBALS['validatequery'])) {
01549 $explain_link_validate = '&validatequery=1';
01550 } else {
01551 $explain_link_validate = '';
01552 }
01553
01554 $explain_link = ' [<a href="sql.php'
01555 . $url_qpart
01556 . $explain_link_validate
01557 . '&sql_query=';
01558
01559 if (preg_match('@^SELECT[[:space:]]+@i', $local_query)) {
01560 $explain_link .= urlencode('EXPLAIN ' . $local_query) . '">' . $GLOBALS['strExplain'];
01561 } else if (preg_match('@^EXPLAIN[[:space:]]+SELECT[[:space:]]+@i', $local_query)) {
01562 $explain_link .= urlencode(substr($local_query, 8)) . '">' . $GLOBALS['strNoExplain'];
01563 } else {
01564 $explain_link = '';
01565 }
01566 if(!empty($explain_link)) {
01567 $explain_link .= '</a>]';
01568 }
01569 } else {
01570 $explain_link = '';
01571 } //show explain
01572
01573 // Also we would like to get the SQL formed in some nice
01574 // php-code (Mike Beck 2002-05-22)
01575 if (isset($cfg['SQLQuery']['ShowAsPHP'])
01576 && $cfg['SQLQuery']['ShowAsPHP'] == TRUE) {
01577 $php_link = ' [<a href="sql.php'
01578 . $url_qpart
01579 . '&show_query=1'
01580 . '&sql_query=' . urlencode($local_query)
01581 . '&show_as_php=';
01582
01583 if (!empty($GLOBALS['show_as_php'])) {
01584 $php_link .= '0">' . $GLOBALS['strNoPhp'];
01585 } else {
01586 $php_link .= '1">' . $GLOBALS['strPhp'];
01587 }
01588 $php_link .= '</a>]';
01589
01590 if (isset($GLOBALS['show_as_php']) && $GLOBALS['show_as_php'] == '1') {
01591 $php_link .= ' [<a href="sql.php'
01592 . $url_qpart
01593 . '&show_query=1'
01594 . '&sql_query=' . urlencode($local_query)
01595 . '">' . $GLOBALS['strRunQuery'] . '</a>]';
01596 }
01597
01598 } else {
01599 $php_link = '';
01600 }
01601
01602 if (isset($cfg['SQLValidator']['use'])
01603 && $cfg['SQLValidator']['use'] == TRUE
01604 && isset($cfg['SQLQuery']['Validate'])
01605 && $cfg['SQLQuery']['Validate'] == TRUE) {
01606 $validate_link = ' [<a href="sql.php'
01607 . $url_qpart
01608 . '&show_query=1'
01609 . '&sql_query=' . urlencode($local_query)
01610 . '&validatequery=';
01611 if (!empty($GLOBALS['validatequery'])) {
01612 $validate_link .= '0">' . $GLOBALS['strNoValidateSQL'] ;
01613 } else {
01614 $validate_link .= '1">'. $GLOBALS['strValidateSQL'] ;
01615 }
01616 $validate_link .= '</a>]';
01617 } else {
01618 $validate_link = '';
01619 } //validator
01620
01621 // Displays the message
01622 echo ' ' . $GLOBALS['strSQLQuery'] . ' :';
01623 if (!empty($edit_target)) {
01624 echo $edit_link . $explain_link . $php_link . $validate_link;
01625 }
01626 echo '<br />' . "\n";
01627 echo ' ' . $query_base;
01628 // If a 'LIMIT' clause has been programatically added to the query
01629 // displays it
01630 if (!empty($GLOBALS['sql_limit_to_append'])) {
01631 if (!empty($GLOBALS['show_as_php'])) {
01632 echo $GLOBALS['sql_limit_to_append'];
01633 } else if (!empty($GLOBALS['validatequery'])) {
01634 // skip the extra bit here
01635 } else {
01636 echo ' ' . PMA_formatSql(PMA_SQP_parse($GLOBALS['sql_limit_to_append'], $GLOBALS['sql_limit_to_append']));
01637 }
01638 }
01639
01640 unset($local_query);
01641 //Clean up the end of the PHP
01642 if (!empty($GLOBALS['show_as_php'])) {
01643 echo '\';';
01644 }
01645 echo "\n";
01646 ?>
01647 </td>
01648 </tr>
01649 <?php
01650 }
01651 echo "\n";
01652 ?>
01653 </table>
01654 </div><br />
01655 <?php
01656 } // end of the 'PMA_showMessage()' function
01657
01658
01673 function PMA_formatByteDown($value, $limes = 6, $comma = 0)
01674 {
01675 $dh = pow(10, $comma);
01676 $li = pow(10, $limes);
01677 $return_value = $value;
01678 $unit = $GLOBALS['byteUnits'][0];
01679
01680 for ( $d = 6, $ex = 15; $d >= 1; $d--, $ex-=3 ) {
01681 if (isset($GLOBALS['byteUnits'][$d]) && $value >= $li * pow(10, $ex)) {
01682 $value = round($value / ( pow(1024, $d) / $dh) ) /$dh;
01683 $unit = $GLOBALS['byteUnits'][$d];
01684 break 1;
01685 } // end if
01686 } // end for
01687
01688 if ($unit != $GLOBALS['byteUnits'][0]) {
01689 $return_value = number_format($value, $comma, $GLOBALS['number_decimal_separator'], $GLOBALS['number_thousands_separator']);
01690 } else {
01691 $return_value = number_format($value, 0, $GLOBALS['number_decimal_separator'], $GLOBALS['number_thousands_separator']);
01692 }
01693
01694 return array($return_value, $unit);
01695 } // end of the 'PMA_formatByteDown' function
01696
01697
01708 function PMA_getEnumSetOptions($type_def) {
01709 $open = strpos($type_def, '(');
01710 $close = strrpos($type_def, ')');
01711 if (!$open || !$close) {
01712 return FALSE;
01713 }
01714 $options = substr($type_def, $open + 2, $close - $open - 3);
01715 $options = explode('\',\'', $options);
01716 return $options;
01717 } // end of the 'PMA_getEnumSetOptions' function
01718
01728 function PMA_localisedDate($timestamp = -1, $format = '')
01729 {
01730 global $datefmt, $month, $day_of_week;
01731
01732 if ($format == '') {
01733 $format = $datefmt;
01734 }
01735
01736 if ($timestamp == -1) {
01737 $timestamp = time();
01738 }
01739
01740 $date = preg_replace('@%[aA]@', $day_of_week[(int)strftime('%w', $timestamp)], $format);
01741 $date = preg_replace('@%[bB]@', $month[(int)strftime('%m', $timestamp)-1], $date);
01742
01743 return strftime($date, $timestamp);
01744 } // end of the 'PMA_localisedDate()' function
01745
01746
01762 function PMA_printTab($text, $link, $args = '', $attr = '', $sep = '?', $active = false) {
01763 global $PHP_SELF, $cfg;
01764 global $db_details_links_count_tabs;
01765
01766 if (((!isset($GLOBALS['active_page']) && basename($PHP_SELF) == $link) ||
01767 $active ||
01768 (isset($GLOBALS['active_page']) && $GLOBALS['active_page'] == $link)
01769 ) && ($text != $GLOBALS['strEmpty'] && $text != $GLOBALS['strDrop'])) {
01770 $bgcolor = 'silver';
01771 } else {
01772 $bgcolor = '#DFDFDF';
01773 }
01774
01775 $db_details_links_count_tabs++;
01776 if (!empty($attr)) {
01777 if ($cfg['LightTabs']) {
01778 $attr = ' ' . $attr;
01779 } else {
01780 $attr = ' style="display:block" ' . $attr;
01781 }
01782 } else {
01783 if ($cfg['LightTabs']) {
01784 $attr = ' ';
01785 } else {
01786 $attr = ' style="display:block" ';
01787 }
01788 }
01789
01790 if ($cfg['LightTabs']) {
01791 $out = '';
01792 if (strlen($link) > 0) {
01793 $out .= '<nobr><a href="' . $link . $sep . $args . '"' . $attr . '>'
01794 . '<b>' . $text . '</b></a></nobr>';
01795 } else {
01796 $out .= '<nobr><b>' . $text . '</b></nobr>';
01797 }
01798 $out = '[ ' . $out . ' ] ';
01799 } else {
01800 $out = "\n" . ' '
01801 . '<td bgcolor="' . $bgcolor . '" align="center" width="64" nowrap="nowrap" class="tab">'
01802 . "\n" . ' ';
01803 if (strlen($link) > 0) {
01804 $out .= '<nobr><a href="' . $link . $sep . $args . '"' . $attr . '>'
01805 . '<b>' . $text . '</b></a></nobr>';
01806 } else {
01807 $out .= '<nobr><b>' . $text . '</b></nobr>';
01808 }
01809 $out .= "\n" . ' '
01810 . '</td>'
01811 . "\n" . ' '
01812 . '<td width="8"> </td>';
01813 }
01814
01815 return $out;
01816 }
01817
01818
01829 function PMA_linkOrButton($url, $message, $js_conf)
01830 {
01831 if (strlen($url) <= 2047) {
01832 $onclick_url = (empty($js_conf) ? '' : ' onclick="return confirmLink(this, \'' . $js_conf . '\')"');
01833 $link_or_button = ' <a href="' . $url . '"' . $onclick_url . '>' . "\n"
01834 . ' ' . $message . '</a>' . "\n";
01835 }
01836 else {
01837 $edit_url_parts = parse_url($url);
01838 $query_parts = explode('&', $edit_url_parts['query']);
01839 $link_or_button = ' <form action="'
01840 . $edit_url_parts['path']
01841 . '" method="post">' . "\n";
01842 foreach($query_parts AS $query_pair) {
01843 list($eachvar, $eachval) = explode('=', $query_pair);
01844 $link_or_button .= ' <input type="hidden" name="' . str_replace('amp;', '', $eachvar) . '" value="' . htmlspecialchars(urldecode($eachval)) . '" />' . "\n";
01845 }
01846
01847 if (stristr($message, '<img')) {
01848 $link_or_button .= ' <input type="image" src="' . preg_replace('@^.*src="(.*)".*$@si', '\1', $message) . '" value="'
01849 . htmlspecialchars(preg_replace('@^.*alt="(.*)".*$@si', '\1', $message)) . '" />' . "\n" . '</form>' . "\n";
01850 } else {
01851 $link_or_button .= ' <input type="submit" value="'
01852 . htmlspecialchars($message) . '" />' . "\n" . '</form>' . "\n";
01853 }
01854 }
01855
01856 return $link_or_button;
01857 }
01858
01859
01867 function PMA_timespanFormat($seconds)
01868 {
01869 $return_string = '';
01870 $days = floor($seconds / 86400);
01871 if ($days > 0) {
01872 $seconds -= $days * 86400;
01873 }
01874 $hours = floor($seconds / 3600);
01875 if ($days > 0 || $hours > 0) {
01876 $seconds -= $hours * 3600;
01877 }
01878 $minutes = floor($seconds / 60);
01879 if ($days > 0 || $hours > 0 || $minutes > 0) {
01880 $seconds -= $minutes * 60;
01881 }
01882 return sprintf($GLOBALS['timespanfmt'], (string)$days, (string)$hours, (string)$minutes, (string)$seconds);
01883 }
01884
01897 function PMA_flipstring($string, $Separator = "<br />\n") {
01898 $format_string = '';
01899 $charbuff = false;
01900
01901 for ($i = 0; $i <= strlen($string); $i++) {
01902 $char = $string{$i};
01903 $append = false;
01904
01905 if ($char == '&') {
01906 $format_string .= $charbuff;
01907 $charbuff = $char;
01908 $append = true;
01909 } elseif (!empty($charbuff)) {
01910 $charbuff .= $char;
01911 } elseif ($char == ';' && !empty($charbuff)) {
01912 $format_string .= $charbuff;
01913 $charbuff = false;
01914 $append = true;
01915 } else {
01916 $format_string .= $char;
01917 $append = true;
01918 }
01919
01920 if ($append && ($i != strlen($string))) {
01921 $format_string .= $Separator;
01922 }
01923 }
01924
01925 return $format_string;
01926 }
01927
01928
01943 function PMA_checkParameters($params, $die = TRUE) {
01944 global $PHP_SELF;
01945
01946 $reported_script_name = basename($PHP_SELF);
01947 $found_error = FALSE;
01948 $error_message = '';
01949
01950 foreach($params AS $param) {
01951 if (!isset($GLOBALS[$param])) {
01952 $error_message .= $reported_script_name . ': Missing ' . $param . '<br />';
01953 $found_error = TRUE;
01954 }
01955 }
01956 if ($found_error) {
01957 require_once('./libraries/header_meta_style.inc.php');
01958 echo '</head><body><p>' . $error_message . '</p></body></html>';
01959 if ($die) {
01960 exit();
01961 }
01962 }
01963 }
01964
01965
01966
01967 if (@function_exists('mb_convert_encoding')
01968 && strpos(' ' . $lang, 'ja-')
01969 && file_exists('./libraries/kanji-encoding.lib.php')) {
01970 require_once('./libraries/kanji-encoding.lib.php');
01971 define('PMA_MULTIBYTE_ENCODING', 1);
01972 }
01973
01984 function PMA_checkFileExtensions($file, $extension) {
01985 if (substr($file, -1 * strlen($extension)) == $extension) {
01986 return TRUE;
01987 }
01988 if ($GLOBALS['cfg']['GZipDump'] && @function_exists('gzopen')) {
01989 if (substr($file, -3 - strlen($extension)) == $extension . '.gz') {
01990 return TRUE;
01991 }
01992 }
01993 if ($GLOBALS['cfg']['BZipDump'] && @function_exists('bzdecompress')) {
01994 if (substr($file, -4 - strlen($extension)) == $extension . '.bz2') {
01995 return TRUE;
01996 }
01997 }
01998 return FALSE;
01999 }
02000
02001 }
02002 ?>