2012-06-04 16:58:40 +02:00
< ? php
//customization - begin
//includes
include " root.php " ;
require_once " includes/require.php " ;
2013-07-06 07:50:55 +02:00
require_once " resources/check_auth.php " ;
2012-06-04 16:58:40 +02:00
//only allow users in the superadmin group to use this feature
if ( if_group ( " superadmin " )) {
//echo "access granted";
}
else {
echo " access denied " ;
exit ;
}
//customization - end
/** Adminer - Compact database management
* @ link http :// www . adminer . org /
* @ author Jakub Vrana , http :// www . vrana . cz /
* @ copyright 2007 Jakub Vrana
* @ license http :// www . apache . org / licenses / LICENSE - 2.0 Apache License , Version 2.0
* @ license http :// www . gnu . org / licenses / gpl - 2.0 . html GNU General Public License , version 2 ( one or other )
*/
error_reporting ( 6135 ); $_e = ( ! ereg ( '^(unsafe_raw)?$' , ini_get ( " filter.default " )) || ini_get ( " filter.default_flags " )); if ( $_e ){ foreach ( array ( '_GET' , '_POST' , '_COOKIE' , '_SERVER' ) as $b ){ $be = filter_input_array ( constant ( " INPUT $b " ), FILTER_UNSAFE_RAW ); if ( $be ){ $$b = $be ;}}} if ( isset ( $_GET [ " file " ])){ header ( " Expires: " . gmdate ( " D, d M Y H:i:s " , time () + 365 * 24 * 60 * 60 ) . " GMT " ); if ( $_GET [ " file " ] == " favicon.ico " ){ header ( " Content-Type: image/x-icon " ); echo
base64_decode ( " AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAA/wBhTgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERERAAAAAAETMzEQAAAAATERExAAAAABMRETEAAAAAExERMQAAAAATERExAAAAABMRETEAAAAAEzMzMREREQATERExEhEhABEzMxEhEREAAREREhERIRAAAAARIRESEAAAAAESEiEQAAAAABEREQAAAAAAAAAAD//9UAwP/VAIB/AACAf/AAgH+kAIB/gACAfwAAgH8AAIABAACAAf8AgAH/AMAA/wD+AP8A/wAIAf+B1QD//9UA " );} elseif ( $_GET [ " file " ] == " default.css " ){ header ( " Content-Type: text/css; charset=utf-8 " ); echo 'body{color:#000;background:#fff;font:90%/1.25 Verdana,Arial,Helvetica,sans-serif;margin:0;}a{color:blue;}a:visited{color:navy;}a:hover{color:red;}h1{font-size:150%;margin:0;padding:.8em 1em;border-bottom:1px solid #999;font-weight:normal;color:#777;background:#eee;}h2{font-size:150%;margin:0 0 20px -18px;padding:.8em 1em;border-bottom:1px solid #000;color:#000;font-weight:normal;background:#ddf;}h3{font-weight:normal;font-size:130%;margin:1em 0 0;}form{margin:0;}table{margin:1em 20px 0 0;border:0;border-top:1px solid #999;border-left:1px solid #999;font-size:90%;}td,th{border:0;border-right:1px solid #999;border-bottom:1px solid #999;padding:.2em .3em;}th{background:#eee;text-align:left;}thead th{text-align:center;}thead td,thead th{background:#ddf;}fieldset{display:inline;vertical-align:top;padding:.5em .8em;margin:.8em .5em 0 0;border:1px solid #999;}p{margin:.8em 20px 0 0;}img{vertical-align:middle;border:0;}td img{max-width:200px;max-height:200px;}code{background:#eee;}tr:hover td,tr:hover th{background:#ddf;}pre{margin:1em 0 0;}.version{color:#777;font-size:67%;}.js .hidden,.nojs .jsonly{display:none;}.nowrap td,.nowrap th,td.nowrap{white-space:pre;}.wrap td{white-space:normal;}.error{color:red;background:#fee;}.error b{background:#fff;font-weight:normal;}.message{color:green;background:#efe;}.error,.message{padding:.5em .8em;margin:1em 20px 0 0;}.char{color:#007F00;}.date{color:#7F007F;}.enum{color:#007F7F;}.binary{color:red;}.odd td{background:#F5F5F5;}.time{color:silver;font-size:70%;}.function{text-align:right;}.number{text-align:right;}.datetime{text-align:right;}.type{width:15ex;width:auto\\9;}.options select{width:20ex;width:auto\\9;}.active{font-weight:bold;}.sqlarea{width:98%;}#menu{position:absolute;margin:10px 0 0;padding:0 0 30px 0;top:2em;left:0;width:19em;overflow:auto;overflow-y:hidden;white-space:nowrap;}#menu p{padding:.8em 1em;margin:0;border-bottom:1px solid #ccc;}#content{margin:2em 0 0 21em;padding:10px 20px 20px 0;}#lang{position:absolute;top:0;left:0;line-height:1.8em;padding:.3em 1em;}#breadcrumb{white-space:nowrap;position:absolute;top:0;left:21em;background:#eee;height:2em;line-height:1.8em;padding:0 1em;margin:0 0 0 -18px;}#loader{position:fixed;top:0;left:18em;z-index:1;}#h1{color:#777;text-decoration:none;font-style:italic;}#version{font-size:67%;color:red;}#schema{margin-left:60px;position:relative;}#schema .table{border:1px solid silver;padding:0 2px;cursor:move;position:absolute;}#schema .references{position:absolute;}.rtl h2{margin:0 -18px 20px 0;}.rtl p,.rtl table,.rtl .error,.rtl .message{margin:1em 0 0 20px;}.rtl #content{margin:2em 21em 0 0;padding:10px 0 20px 20px;}.rtl #breadcrumb{left:auto;right:21em;margin:0 -18px 0 0;}.rtl #lang,.rtl #menu{left:auto;right:0;}@media print{#lang,#menu{display:none;}#content{margin-left:1em;}#breadcrumb{left:1em;}.nowrap td,.nowrap th,td.nowrap{white-space:normal;}}' ;} elseif ( $_GET [ " file " ] == " functions.js " ){ header ( " Content-Type: text/javascript; charset=utf-8 " ); ?>
function toggle ( id ){ var el = document . getElementById ( id ); el . className = ( el . className == 'hidden' ? '' : 'hidden' ); return true ;}
function cookie ( assign , days ){ var date = new Date (); date . setDate ( date . getDate () + days ); document . cookie = assign + '; expires=' + date ;}
function verifyVersion (){ cookie ( 'adminer_version=0' , 1 ); var script = document . createElement ( 'script' ); script . src = location . protocol + '//www.adminer.org/version.php' ; document . body . appendChild ( script );}
function selectValue ( select ){ var selected = select . options [ select . selectedIndex ]; return (( selected . attributes . value || {}) . specified ? selected . value : selected . text );}
function formCheck ( el , name ){ var elems = el . form . elements ; for ( var i = 0 ; i < elems . length ; i ++ ){ if ( name . test ( elems [ i ] . name )){ elems [ i ] . checked = el . checked ;}}}
function formUncheck ( id ){ document . getElementById ( id ) . checked = false ;}
function formChecked ( el , name ){ var checked = 0 ; var elems = el . form . elements ; for ( var i = 0 ; i < elems . length ; i ++ ){ if ( name . test ( elems [ i ] . name ) && elems [ i ] . checked ){ checked ++ ;}}
return checked ;}
function tableClick ( event ){ var el = event . target || event . srcElement ; while ( !/^ tr $ / i . test ( el . tagName )){ if ( /^ ( table | a | input | textarea ) $ / i . test ( el . tagName )){ return ;}
el = el . parentNode ;}
el = el . firstChild . firstChild ; el . click && el . click (); el . onclick && el . onclick ();}
function setHtml ( id , html ){ var el = document . getElementById ( id ); if ( el ){ if ( html == undefined ){ el . parentNode . innerHTML = ' ' ;} else { el . innerHTML = html . replace ( /< noscript >.*< \ / noscript >/ i , '' );}}}
function nodePosition ( el ){ var pos = 0 ; while ( el = el . previousSibling ){ pos ++ ;}
return pos ;}
function pageClick ( href , page , event ){ if ( ! isNaN ( page ) && page ){ href += ( page != 1 ? '&page=' + ( page - 1 ) : '' ); if ( ! ajaxSend ( href )){ location . href = href ;}}}
function selectAddRow ( field ){ field . onchange = function (){}; var row = field . parentNode . cloneNode ( true ); var selects = row . getElementsByTagName ( 'select' ); for ( var i = 0 ; i < selects . length ; i ++ ){ selects [ i ] . name = selects [ i ] . name . replace ( / [ a - z ] \ [ \d +/ , '$&1' ); selects [ i ] . selectedIndex = 0 ;}
var inputs = row . getElementsByTagName ( 'input' ); if ( inputs . length ){ inputs [ 0 ] . name = inputs [ 0 ] . name . replace ( / [ a - z ] \ [ \d +/ , '$&1' ); inputs [ 0 ] . value = '' ; inputs [ 0 ] . className = '' ;}
field . parentNode . parentNode . appendChild ( row );}
function textareaKeydown ( target , event ){ if ( ! event . shiftKey &&! event . altKey &&! event . ctrlKey &&! event . metaKey ){ if ( event . keyCode == 9 ){ if ( target . setSelectionRange ){ var start = target . selectionStart ; var scrolled = target . scrollTop ; target . value = target . value . substr ( 0 , start ) + '\t' + target . value . substr ( target . selectionEnd ); target . setSelectionRange ( start + 1 , start + 1 ); target . scrollTop = scrolled ; return false ;} else if ( target . createTextRange ){ document . selection . createRange () . text = '\t' ; return false ;}}
if ( event . keyCode == 27 ){ var els = target . form . elements ; for ( var i = 1 ; i < els . length ; i ++ ){ if ( els [ i - 1 ] == target ){ els [ i ] . focus (); break ;}}
return false ;}}
return true ;}
function bodyKeydown ( event ){ var target = event . target || event . srcElement ; if ( event . ctrlKey && ( event . keyCode == 13 || event . keyCode == 10 ) &&! event . altKey &&! event . metaKey &&/ select | textarea / i . test ( target . tagName )){ target . blur (); if (( ! target . form . onsubmit || target . form . onsubmit () !== false ) &&! ajaxForm ( target . form )){ target . form . submit ();}
return false ;}}
function editingKeydown ( event ){ if (( event . keyCode == 40 || event . keyCode == 38 ) && event . ctrlKey &&! event . altKey &&! event . metaKey ){ var target = event . target || event . srcElement ; var sibling = ( event . keyCode == 40 ? 'nextSibling' : 'previousSibling' ); var el = target . parentNode . parentNode [ sibling ]; if ( el && ( /^ tr $ / i . test ( el . tagName ) || ( el = el [ sibling ])) &&/^ tr $ / i . test ( el . tagName ) && ( el = el . childNodes [ nodePosition ( target . parentNode )]) && ( el = el . childNodes [ nodePosition ( target )])){ el . focus ();}
return false ;}
return true ;}
function functionChange ( select ){ var input = select . form [ select . name . replace ( /^ function / , 'fields' )]; if ( selectValue ( select )){ if ( input . origMaxLength === undefined ){ input . origMaxLength = input . maxLength ;}
input . removeAttribute ( 'maxlength' );} else if ( input . origMaxLength >= 0 ){ input . maxLength = input . origMaxLength ;}}
function ajax ( url , callback , data ){ var xmlhttp = ( window . XMLHttpRequest ? new XMLHttpRequest () : ( window . ActiveXObject ? new ActiveXObject ( 'Microsoft.XMLHTTP' ) : false )); if ( xmlhttp ){ xmlhttp . open (( data ? 'POST' : 'GET' ), url ); if ( data ){ xmlhttp . setRequestHeader ( 'Content-Type' , 'application/x-www-form-urlencoded' );}
xmlhttp . setRequestHeader ( 'X-Requested-With' , 'XMLHttpRequest' ); xmlhttp . onreadystatechange = function (){ if ( xmlhttp . readyState == 4 ){ callback ( xmlhttp );}}; xmlhttp . send ( data );}
return xmlhttp ;}
function ajaxSetHtml ( url ){ return ajax ( url , function ( xmlhttp ){ if ( xmlhttp . status ){ var data = eval ( '(' + xmlhttp . responseText + ')' ); for ( var key in data ){ setHtml ( key , data [ key ]);}}});}
function replaceFavicon ( href ){ var favicon = document . getElementById ( 'favicon' ); favicon . href = href ; favicon . parentNode . appendChild ( favicon );}
var ajaxState = 0 ; function ajaxSend ( url , data , popState ){ if ( ! history . pushState ){ return false ;}
var currentState =++ ajaxState ; onblur = function (){ replaceFavicon ( location . pathname + '?file=loader.gif&version=3.2.2' );}; setHtml ( 'loader' , '<img src="' + location . pathname + '?file=loader.gif&version=3.2.2" alt="">' ); return ajax ( url , function ( xmlhttp ){ if ( currentState == ajaxState ){ var title = xmlhttp . getResponseHeader ( 'X-AJAX-Title' ); if ( title ){ document . title = decodeURIComponent ( title );}
var redirect = xmlhttp . getResponseHeader ( 'X-AJAX-Redirect' ); if ( redirect ){ return ajaxSend ( redirect , '' , popState );}
onblur = function (){}; replaceFavicon ( location . pathname + '?file=favicon.ico&version=3.2.2' ); if ( ! xmlhttp . status ){ setHtml ( 'loader' , '' );} else { if ( ! popState ){ if ( data || url != location . href ){ history . pushState ( data , '' , url );}
scrollTo ( 0 , 0 );}
setHtml ( 'content' , xmlhttp . responseText ); var content = document . getElementById ( 'content' ); var scripts = content . getElementsByTagName ( 'script' ); var length = scripts . length ; for ( var i = 0 ; i < length ; i ++ ){ var script = document . createElement ( 'script' ); script . text = scripts [ i ] . text ; content . appendChild ( script );}
var as = document . getElementById ( 'menu' ) . getElementsByTagName ( 'a' ); var href = location . href . replace ( / ( & ( sql =| dump =| ( select | table ) = [ ^& ] * )) .*/ , '$1' ); for ( var i = 0 ; i < as . length ; i ++ ){ if ( href == as [ i ] . href ){ as [ i ] . className = 'active' ;} else if ( as [ i ] . className == 'active' ){ as [ i ] . className = '' ;}}
var dump = document . getElementById ( 'dump' ); if ( dump ){ var match =/& ( select | table ) = ([ ^& ] + ) /. exec ( href ); dump . href = dump . href . replace ( / [ ^= ] + $ / , '' ) + ( match ? match [ 2 ] : '' );}
if ( window . jush ){ jush . highlight_tag ( 'code' , 0 );}}}}, data );}
onpopstate = function ( event ){ if ( ajaxState || event . state ){ ajaxSend ( location . href ,( event . state && confirm ( areYouSure ) ? event . state : '' ), 1 );} else { ajaxState ++ ;}}
function ajaxForm ( form , data ){ if ( /& ( database | scheme | create | view | sql | user | dump | call ) =/. test ( location . href ) &&!/ \ ./. test ( data )){ return false ;}
var params = []; for ( var i = 0 ; i < form . elements . length ; i ++ ){ var el = form . elements [ i ]; if ( / file / i . test ( el . type ) && el . value ){ return false ;} else if ( el . name && ( !/ checkbox | radio | submit | file / i . test ( el . type ) || el . checked )){ params . push ( encodeURIComponent ( el . name ) + '=' + encodeURIComponent ( / select / i . test ( el . tagName ) ? selectValue ( el ) : el . value ));}}
if ( data ){ params . push ( data );}
if ( form . method == 'post' ){ return ajaxSend (( / \ ? /. test ( form . action ) ? form . action : location . href ), params . join ( '&' ));}
return ajaxSend (( form . action || location . href ) . replace ( / \ ? .*/ , '' ) + '?' + params . join ( '&' ));}
function selectDblClick ( td , event , text ){ td . ondblclick = function (){}; var pos = event . rangeOffset ; var value = ( td . firstChild . alt ? td . firstChild . alt : ( td . textContent ? td . textContent : td . innerText )); var input = document . createElement ( text ? 'textarea' : 'input' ); input . style . width = Math . max ( td . clientWidth - 14 , 20 ) + 'px' ; if ( text ){ var rows = 1 ; value . replace ( / \n / g , function (){ rows ++ ;}); input . rows = rows ;}
if ( value == '\u00A0' || td . getElementsByTagName ( 'i' ) . length ){ value = '' ;}
if ( document . selection ){ var range = document . selection . createRange (); range . moveToPoint ( event . clientX , event . clientY ); var range2 = range . duplicate (); range2 . moveToElementText ( td ); range2 . setEndPoint ( 'EndToEnd' , range ); pos = range2 . text . length ;}
td . innerHTML = '' ; td . appendChild ( input ); input . focus (); if ( text == 2 ){ return ajax ( location . href + '&' + encodeURIComponent ( td . id ) + '=' , function ( xmlhttp ){ if ( xmlhttp . status ){ input . value = xmlhttp . responseText ; input . name = td . id ;}});}
input . value = value ; input . name = td . id ; input . selectionStart = pos ; input . selectionEnd = pos ; if ( document . selection ){ var range = document . selection . createRange (); range . moveEnd ( 'character' , - input . value . length + pos ); range . select ();}}
function bodyClick ( event , db , ns ){ if ( event . button || event . ctrlKey || event . shiftKey || event . altKey || event . metaKey ){ return ;}
if ( event . getPreventDefault ? event . getPreventDefault () : event . returnValue === false ){ return false ;}
var el = event . target || event . srcElement ; if ( /^ a $ / i . test ( el . parentNode . tagName )){ el = el . parentNode ;}
if ( /^ a $ / i . test ( el . tagName ) &&!/^:| #|&download=/i.test(el.getAttribute('href'))&&/[&?]username=/.test(el.href)){var match=/&db=([^&]*)/.exec(el.href);var match2=/&ns=([^&]*)/.exec(el.href);return!(db==(match?match[1]:'')&&ns==(match2?match2[1]:'')&&ajaxSend(el.href));}
if ( /^ input $ / i . test ( el . tagName ) &&/ image | submit /. test ( el . type )){ return ! ajaxForm ( el . form ,( el . name ? encodeURIComponent ( el . name ) + ( el . type == 'image' ? '.x' : '' ) + '=1' : '' ));}
return true ;}
function eventStop ( event ){ if ( event . stopPropagation ){ event . stopPropagation ();} else { event . cancelBubble = true ;}}
var jushRoot = location . protocol + '//www.adminer.org/static/' ; function bodyLoad ( version ){ if ( history . state !== undefined ){ onpopstate ( history );}
if ( jushRoot ){ var script = document . createElement ( 'script' ); script . src = jushRoot + 'jush.js' ; script . onload = function (){ if ( window . jush ){ jush . create_links = ' target="_blank" rel="noreferrer"' ; jush . urls . sql_sqlset = jush . urls . sql [ 0 ] = jush . urls . sqlset [ 0 ] = jush . urls . sqlstatus [ 0 ] = 'http://dev.mysql.com/doc/refman/' + version + '/en/$key' ; var pgsql = 'http://www.postgresql.org/docs/' + version + '/static/' ; jush . urls . pgsql_pgsqlset = jush . urls . pgsql [ 0 ] = pgsql + '$key' ; jush . urls . pgsqlset [ 0 ] = pgsql + 'runtime-config-$key.html#GUC-$1' ; jush . style ( jushRoot + 'jush.css' ); if ( window . jushLinks ){ jush . custom_links = jushLinks ;}
jush . highlight_tag ( 'code' , 0 );}}; script . onreadystatechange = function (){ if ( /^ ( loaded | complete ) $ /. test ( script . readyState )){ script . onload ();}}; document . body . appendChild ( script );}}
function formField ( form , name ){ for ( var i = 0 ; i < form . length ; i ++ ){ if ( form [ i ] . name == name ){ return form [ i ];}}}
function typePassword ( el , disable ){ try { el . type = ( disable ? 'text' : 'password' );} catch ( e ){}}
function loginDriver ( driver ){ var trs = driver . parentNode . parentNode . parentNode . rows ; for ( var i = 1 ; i < trs . length ; i ++ ){ trs [ i ] . className = ( / sqlite /. test ( driver . value ) ? 'hidden' : '' );}}
var added = '.' , rowCount ; function delimiterEqual ( val , a , b ){ return ( val == a + '_' + b || val == a + b || val == a + b . charAt ( 0 ) . toUpperCase () + b . substr ( 1 ));}
function idfEscape ( s ){ return s . replace ( / `/,'` ` ' );}
function editingNameChange ( field ){ var name = field . name . substr ( 0 , field . name . length - 7 ); var type = formField ( field . form , name + '[type]' ); var opts = type . options ; var candidate ; var val = field . value ; for ( var i = opts . length ; i -- ;){ var match =/ ( .+ ) `(.+)/.exec(opts[i].value);if(!match){if(candidate&&i==opts.length-2&&val==opts[candidate].value.replace(/.+` / , '' ) && name == 'fields[1]' ){ return ;}
break ;}
var table = match [ 1 ]; var column = match [ 2 ]; var tables = [ table , table . replace ( / s $ / , '' ), table . replace ( / es $ / , '' )]; for ( var j = 0 ; j < tables . length ; j ++ ){ table = tables [ j ]; if ( val == column || val == table || delimiterEqual ( val , table , column ) || delimiterEqual ( val , column , table )){ if ( candidate ){ return ;}
candidate = i ; break ;}}}
if ( candidate ){ type . selectedIndex = candidate ; type . onchange ();}}
function editingAddRow ( button , allowed , focus ){ if ( allowed && rowCount >= allowed ){ return false ;}
var match =/ ( \d + )( \ . \d + ) ? /. exec ( button . name ); var x = match [ 0 ] + ( match [ 2 ] ? added . substr ( match [ 2 ] . length ) : added ) + '1' ; var row = button . parentNode . parentNode ; var row2 = row . cloneNode ( true ); var tags = row . getElementsByTagName ( 'select' ); var tags2 = row2 . getElementsByTagName ( 'select' ); for ( var i = 0 ; i < tags . length ; i ++ ){ tags2 [ i ] . name = tags [ i ] . name . replace ( / ([ 0 - 9. ] + ) / , x ); tags2 [ i ] . selectedIndex = tags [ i ] . selectedIndex ;}
tags = row . getElementsByTagName ( 'input' ); tags2 = row2 . getElementsByTagName ( 'input' ); var input = tags2 [ 0 ]; for ( var i = 0 ; i < tags . length ; i ++ ){ if ( tags [ i ] . name == 'auto_increment_col' ){ tags2 [ i ] . value = x ; tags2 [ i ] . checked = false ;}
tags2 [ i ] . name = tags [ i ] . name . replace ( / ([ 0 - 9. ] + ) / , x ); if ( / \ [( orig | field | comment | default ) /. test ( tags [ i ] . name )){ tags2 [ i ] . value = '' ;}
if ( / \ [( has_default ) /. test ( tags [ i ] . name )){ tags2 [ i ] . checked = false ;}}
tags [ 0 ] . onchange = function (){ editingNameChange ( tags [ 0 ]);}; row . parentNode . insertBefore ( row2 , row . nextSibling ); if ( focus ){ input . onchange = function (){ editingNameChange ( input );}; input . focus ();}
added += '0' ; rowCount ++ ; return true ;}
function editingRemoveRow ( button ){ var field = formField ( button . form , button . name . replace ( / drop_col ( .+ ) / , 'fields$1[field]' )); field . parentNode . removeChild ( field ); button . parentNode . parentNode . style . display = 'none' ; return true ;}
var lastType = '' ; function editingTypeChange ( type ){ var name = type . name . substr ( 0 , type . name . length - 6 ); var text = selectValue ( type ); for ( var i = 0 ; i < type . form . elements . length ; i ++ ){ var el = type . form . elements [ i ]; if ( el . name == name + '[length]' &&! (( / ( char | binary ) $ /. test ( lastType ) &&/ ( char | binary ) $ /. test ( text )) || ( / ( enum | set ) $ /. test ( lastType ) &&/ ( enum | set ) $ /. test ( text )))){ el . value = '' ;}
if ( lastType == 'timestamp' && el . name == name + '[has_default]' &&/ timestamp / i . test ( formField ( type . form , name + '[default]' ) . value )){ el . checked = false ;}
if ( el . name == name + '[collation]' ){ el . className = ( / ( char | text | enum | set ) $ /. test ( text ) ? '' : 'hidden' );}
if ( el . name == name + '[unsigned]' ){ el . className = ( / ( int | float | double | decimal ) $ /. test ( text ) ? '' : 'hidden' );}
if ( el . name == name + '[on_delete]' ){ el . className = ( / ` /. test ( text ) ? '' : 'hidden' );}}}
function editingLengthFocus ( field ){ var td = field . parentNode ; if ( / ( enum | set ) $ /. test ( selectValue ( td . previousSibling . firstChild ))){ var edit = document . getElementById ( 'enum-edit' ); var val = field . value ; edit . value = ( /^ '.+' , '.+' $ /. test ( val ) ? val . substr ( 1 , val . length - 2 ) . replace ( / ',' / g , " \n " ) . replace ( / '' / g , " ' " ) : val ); td . appendChild ( edit ); field . style . display = 'none' ; edit . style . display = 'inline' ; edit . focus ();}}
function editingLengthBlur ( edit ){ var field = edit . parentNode . firstChild ; var val = edit . value ; field . value = ( / \n /. test ( val ) ? " ' " + val . replace ( / \n + $ / , '' ) . replace ( / '/g,"' '").replace(/\n/g,"' , '")+"' " :val);field.style.display='inline';edit.style.display='none';}
function columnShow ( checked , column ){ var trs = document . getElementById ( 'edit-fields' ) . getElementsByTagName ( 'tr' ); for ( var i = 0 ; i < trs . length ; i ++ ){ trs [ i ] . getElementsByTagName ( 'td' )[ column ] . className = ( checked ? '' : 'hidden' );}}
function partitionByChange ( el ){ var partitionTable =/ RANGE | LIST /. test ( selectValue ( el )); el . form [ 'partitions' ] . className = ( partitionTable ||! el . selectedIndex ? 'hidden' : '' ); document . getElementById ( 'partition-table' ) . className = ( partitionTable ? '' : 'hidden' );}
function partitionNameChange ( el ){ var row = el . parentNode . parentNode . cloneNode ( true ); row . firstChild . firstChild . value = '' ; el . parentNode . parentNode . parentNode . appendChild ( row ); el . onchange = function (){};}
function foreignAddRow ( field ){ field . onchange = function (){}; var row = field . parentNode . parentNode . cloneNode ( true ); var selects = row . getElementsByTagName ( 'select' ); for ( var i = 0 ; i < selects . length ; i ++ ){ selects [ i ] . name = selects [ i ] . name . replace ( / \ ] / , '1$&' ); selects [ i ] . selectedIndex = 0 ;}
field . parentNode . parentNode . parentNode . appendChild ( row );}
function indexesAddRow ( field ){ field . onchange = function (){}; var row = field . parentNode . parentNode . cloneNode ( true ); var spans = row . getElementsByTagName ( 'span' ); for ( var i = 0 ; i < spans . length - 1 ; i ++ ){ row . removeChild ( spans [ i ]);}
var selects = row . getElementsByTagName ( 'select' ); for ( var i = 0 ; i < selects . length ; i ++ ){ selects [ i ] . name = selects [ i ] . name . replace ( / indexes\ [ \d +/ , '$&1' ); selects [ i ] . selectedIndex = 0 ;}
var input = row . getElementsByTagName ( 'input' )[ 0 ]; input . name = input . name . replace ( / indexes\ [ \d +/ , '$&1' ); input . value = '' ; field . parentNode . parentNode . parentNode . appendChild ( row );}
function indexesAddColumn ( field ){ field . onchange = function (){}; var column = field . parentNode . cloneNode ( true ); var select = column . getElementsByTagName ( 'select' )[ 0 ]; select . name = select . name . replace ( / \ ] \ [ \d +/ , '$&1' ); select . selectedIndex = 0 ; var input = column . getElementsByTagName ( 'input' )[ 0 ]; input . name = input . name . replace ( / \ ] \ [ \d +/ , '$&1' ); input . value = '' ; field . parentNode . parentNode . appendChild ( column ); select = field . form [ field . name . replace ( / \ ] .*/ , '][type]' )]; if ( ! select . selectedIndex ){ select . selectedIndex = 3 ;}}
var that , x , y , em , tablePos ; function schemaMousedown ( el , event ){ that = el ; x = event . clientX - el . offsetLeft ; y = event . clientY - el . offsetTop ;}
function schemaMousemove ( ev ){ if ( that !== undefined ){ ev = ev || event ; var left = ( ev . clientX - x ) / em ; var top = ( ev . clientY - y ) / em ; var divs = that . getElementsByTagName ( 'div' ); var lineSet = {}; for ( var i = 0 ; i < divs . length ; i ++ ){ if ( divs [ i ] . className == 'references' ){ var div2 = document . getElementById (( divs [ i ] . id . substr ( 0 , 4 ) == 'refs' ? 'refd' : 'refs' ) + divs [ i ] . id . substr ( 4 )); var ref = ( tablePos [ divs [ i ] . title ] ? tablePos [ divs [ i ] . title ] : [ div2 . parentNode . offsetTop / em , 0 ]); var left1 =- 1 ; var isTop = true ; var id = divs [ i ] . id . replace ( /^ ref . ( .+ ) -.+/ , '$1' ); if ( divs [ i ] . parentNode != div2 . parentNode ){ left1 = Math . min ( 0 , ref [ 1 ] - left ) - 1 ; divs [ i ] . style . left = left1 + 'em' ; divs [ i ] . getElementsByTagName ( 'div' )[ 0 ] . style . width =- left1 + 'em' ; var left2 = Math . min ( 0 , left - ref [ 1 ]) - 1 ; div2 . style . left = left2 + 'em' ; div2 . getElementsByTagName ( 'div' )[ 0 ] . style . width =- left2 + 'em' ; isTop = ( div2 . offsetTop + ref [ 0 ] * em > divs [ i ] . offsetTop + top * em );}
if ( ! lineSet [ id ]){ var line = document . getElementById ( divs [ i ] . id . replace ( /^.... ( .+ ) - \d + $ / , 'refl$1' )); var shift = ev . clientY - y - that . offsetTop ; line . style . left = ( left + left1 ) + 'em' ; if ( isTop ){ line . style . top = ( line . offsetTop + shift ) / em + 'em' ;}
if ( divs [ i ] . parentNode != div2 . parentNode ){ line = line . getElementsByTagName ( 'div' )[ 0 ]; line . style . height = ( line . offsetHeight + ( isTop ? - 1 : 1 ) * shift ) / em + 'em' ;}
lineSet [ id ] = true ;}}}
that . style . left = left + 'em' ; that . style . top = top + 'em' ;}}
function schemaMouseup ( ev , db ){ if ( that !== undefined ){ ev = ev || event ; tablePos [ that . firstChild . firstChild . firstChild . data ] = [( ev . clientY - y ) / em ,( ev . clientX - x ) / em ]; that = undefined ; var s = '' ; for ( var key in tablePos ){ s += '_' + key + ':' + Math . round ( tablePos [ key ][ 0 ] * 10000 ) / 10000 + 'x' + Math . round ( tablePos [ key ][ 1 ] * 10000 ) / 10000 ;}
s = encodeURIComponent ( s . substr ( 1 )); var link = document . getElementById ( 'schema-link' ); link . href = link . href . replace ( / [ ^= ] + $ / , '' ) + s ; cookie ( 'adminer_schema-' + db + '=' + s , 30 );}} < ? php
} else { header ( " Content-Type: image/gif " ); switch ( $_GET [ " file " ]){ case " plus.gif " : echo
base64_decode ( " R0lGODdhEgASAKEAAO7u7gAAAJmZmQAAACwAAAAAEgASAAACIYSPqcvtD00I8cwqKb5v+q8pIAhxlRmhZYi17iPE8kzLBQA7 " ); break ; case " cross.gif " : echo
base64_decode ( " R0lGODdhEgASAKEAAO7u7gAAAJmZmQAAACwAAAAAEgASAAACI4SPqcvtDyMKYdZGb355wy6BX3dhlOEx57FK7gtHwkzXNl0AADs= " ); break ; case " up.gif " : echo
base64_decode ( " R0lGODdhEgASAKEAAO7u7gAAAJmZmQAAACwAAAAAEgASAAACIISPqcvtD00IUU4K730T9J5hFTiKEXmaYcW2rgDH8hwXADs= " ); break ; case " down.gif " : echo
base64_decode ( " R0lGODdhEgASAKEAAO7u7gAAAJmZmQAAACwAAAAAEgASAAACIISPqcvtD00I8cwqKb5bV/5cosdMJtmcHca2lQDH8hwXADs= " ); break ; case " arrow.gif " : echo
base64_decode ( " R0lGODlhCAAKAIAAAICAgP///yH5BAEAAAEALAAAAAAIAAoAAAIPBIJplrGLnpQRqtOy3rsAADs= " ); break ; case " loader.gif " : echo
base64_decode ( " R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA== " ); break ;}} exit ;} function
connection (){ global $g ; return $g ;} function
idf_unescape ( $N ){ $xb = substr ( $N , - 1 ); return
str_replace ( $xb . $xb , $xb , substr ( $N , 1 , - 1 ));} function
escape_string ( $b ){ return
substr ( q ( $b ), 1 , - 1 );} function
remove_slashes ( $ub ){ if ( get_magic_quotes_gpc ()){ while ( list ( $d , $b ) = each ( $ub )){ foreach ( $b
as $Ma => $y ){ unset ( $ub [ $d ][ $Ma ]); if ( is_array ( $y )){ $ub [ $d ][ stripslashes ( $Ma )] = $y ; $ub [] =& $ub [ $d ][ stripslashes ( $Ma )];} else { $ub [ $d ][ stripslashes ( $Ma )] = ( $_e ? $y : stripslashes ( $y ));}}}}} function
bracket_escape ( $N , $pf = false ){ static $Xd = array ( ':' => ':1' , ']' => ':2' , '[' => ':3' ); return
strtr ( $N ,( $pf ? array_flip ( $Xd ) : $Xd ));} function
h ( $I ){ return
htmlspecialchars ( $I , ENT_QUOTES );} function
nbsp ( $I ){ return ( trim ( $I ) != " " ? h ( $I ) : " " );} function
nl_br ( $I ){ return
str_replace ( " \n " , " <br> " , $I );} function
checkbox ( $f , $q , $ab , $Ud = " " , $ae = " " ){ static $S = 0 ; $S ++ ; $c = " <input type='checkbox' " . ( $f ? " name=' $f ' value=' " . h ( $q ) . " ' " : " class='jsonly' " ) . ( $ab ? " checked " : " " ) . ( $ae ? " onclick= \" $ae\ " " : " " ). " id = 'checkbox-$S' > " ;return( $Ud != " " ? " < label for = 'checkbox-$S' > $c " .h( $Ud ). " </ label > " : $c );}function
optionlist ( $Wc , $Mf = null , $oe = false ){ $c = " " ; foreach ( $Wc
as $Ma => $y ){ $ge = array ( $Ma => $y ); if ( is_array ( $y )){ $c .= '<optgroup label="' . h ( $Ma ) . '">' ; $ge = $y ;} foreach ( $ge
as $d => $b ){ $c .= '<option' . ( $oe || is_string ( $d ) ? ' value="' . h ( $d ) . '"' : '' ) . (( $oe || is_string ( $d ) ? ( string ) $d : $b ) === $Mf ? ' selected' : '' ) . '>' . h ( $b );} if ( is_array ( $y )){ $c .= '</optgroup>' ;}} return $c ;} function
adminer_html_select ( $f , $Wc , $q = " " , $Qb = true ){ if ( $Qb ){ return " <select name=' " . h ( $f ) . " ' " . ( is_string ( $Qb ) ? " onchange= \" $Qb\ " " : " " ). " > " .optionlist( $Wc , $q ). " </ select > " ;} $c = " " ;foreach( $Wc
as $d => $b ){ $c .= " <label><input type='radio' name=' " . h ( $f ) . " ' value=' " . h ( $d ) . " ' " . ( $d == $q ? " checked " : " " ) . " > " . h ( $b ) . " </label> " ;} return $c ;} function
confirm ( $Qc = " " , $Sf = false ){ return " onclick= \" " . ( $Sf ? " eventStop(event); " : " " ) . " return confirm(' " . lang ( 0 ) . ( $Qc ? " (' + $Qc + ') " : " " ) . " '); \" " ;} function
js_escape ( $I ){ return
addcslashes ( $I , " \r \n ' \\ / " );} function
ini_bool ( $Rf ){ $b = ini_get ( $Rf ); return ( eregi ( '^(on|true|yes)$' , $b ) || ( int ) $b );} function
sid (){ static $c ; if ( ! isset ( $c )){ $c = ( SID &&! ( $_COOKIE && ini_bool ( " session.use_cookies " )));} return $c ;} function
q ( $I ){ global $g ; return $g -> quote ( $I );} function
get_vals ( $j , $C = 0 ){ global $g ; $c = array (); $i = $g -> query ( $j ); if ( is_object ( $i )){ while ( $a = $i -> fetch_row ()){ $c [] = $a [ $C ];}} return $c ;} function
get_key_vals ( $j , $G = null ){ global $g ; if ( ! is_object ( $G )){ $G = $g ;} $c = array (); $i = $G -> query ( $j ); if ( is_object ( $i )){ while ( $a = $i -> fetch_row ()){ $c [ $a [ 0 ]] = $a [ 1 ];}} return $c ;} function
get_rows ( $j , $G = null , $n = " <p class='error'> " ){ global $g ; if ( ! is_object ( $G )){ $G = $g ;} $c = array (); $i = $G -> query ( $j ); if ( is_object ( $i )){ while ( $a = $i -> fetch_assoc ()){ $c [] = $a ;}} elseif ( ! $i && $g -> error && $n && defined ( " PAGE_HEADER " )){ echo $n . error () . " \n " ;} return $c ;} function
unique_array ( $a , $J ){ foreach ( $J
as $x ){ if ( ereg ( " PRIMARY|UNIQUE " , $x [ " type " ])){ $c = array (); foreach ( $x [ " columns " ] as $d ){ if ( ! isset ( $a [ $d ])){ continue
2 ;} $c [ $d ] = $a [ $d ];} return $c ;}} $c = array (); foreach ( $a
as $d => $b ){ if ( ! preg_match ( '~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~' , $d )){ $c [ $d ] = $b ;}} return $c ;} function
where ( $s ){ global $v ; $c = array (); foreach (( array ) $s [ " where " ] as $d => $b ){ $c [] = idf_escape ( bracket_escape ( $d , 1 )) . ( ereg ( '\\.' , $b ) || $v == " mssql " ? " LIKE " . exact_value ( addcslashes ( $b , " %_ " )) : " = " . exact_value ( $b ));} foreach (( array ) $s [ " null " ] as $d ){ $c [] = idf_escape ( $d ) . " IS NULL " ;} return
implode ( " AND " , $c );} function
where_check ( $b ){ parse_str ( $b , $fe ); remove_slashes ( array ( & $fe )); return
where ( $fe );} function
where_link ( $l , $C , $q , $If = " = " ){ return " &where%5B $l %5D%5Bcol%5D= " . urlencode ( $C ) . " &where%5B $l %5D%5Bop%5D= " . urlencode (( isset ( $q ) ? $If : " IS NULL " )) . " &where%5B $l %5D%5Bval%5D= " . urlencode ( $q );} function
cookie ( $f , $q ){ global $Ac ; $xc = array ( $f ,( ereg ( " \n " , $q ) ? " " : $q ), time () + 2592000 , preg_replace ( '~\\?.*~' , '' , $_SERVER [ " REQUEST_URI " ]), " " , $Ac ); if ( version_compare ( PHP_VERSION , '5.2.0' ) >= 0 ){ $xc [] = true ;} return
call_user_func_array ( 'setcookie' , $xc );} function
restart_session (){ if ( ! ini_bool ( " session.use_cookies " )){ session_start ();}} function & get_session ( $d ){ return $_SESSION [ $d ][ DRIVER ][ SERVER ][ $_GET [ " username " ]];} function
set_session ( $d , $b ){ $_SESSION [ $d ][ DRIVER ][ SERVER ][ $_GET [ " username " ]] = $b ;} function
auth_url ( $Ib , $F , $P ){ global $na ; preg_match ( '~([^?]*)\\??(.*)~' , remove_from_uri ( implode ( " | " , array_keys ( $na )) . " |username| " . session_name ()), $k ); return " $k[1] ? " . ( sid () ? SID . " & " : " " ) . ( $Ib != " server " || $F != " " ? urlencode ( $Ib ) . " = " . urlencode ( $F ) . " & " : " " ) . " username= " . urlencode ( $P ) . ( $k [ 2 ] ? " & $k[2] " : " " );} function
is_ajax (){ return ( $_SERVER [ " HTTP_X_REQUESTED_WITH " ] == " XMLHttpRequest " );} function
redirect ( $ga , $va = null ){ if ( isset ( $va )){ restart_session (); $_SESSION [ " messages " ][ preg_replace ( '~^[^?]*~' , '' ,( isset ( $ga ) ? $ga : $_SERVER [ " REQUEST_URI " ]))][] = $va ;} if ( isset ( $ga )){ if ( $ga == " " ){ $ga = " . " ;} header (( is_ajax () ? " X-AJAX-Redirect " : " Location " ) . " : $ga " ); exit ;}} function
query_redirect ( $j , $ga , $va , $fd = true , $Ef = true , $bf = false ){ global $g , $n , $o ; if ( $Ef ){ $bf =! $g -> query ( $j );} $xd = " " ; if ( $j ){ $xd = $o -> messageQuery ( " $j ; " );} if ( $bf ){ $n = error () . $xd ; return
false ;} if ( $fd ){ redirect ( $ga , $va . $xd );} return
true ;} function
queries ( $j = null ){ global $g ; static $jb = array (); if ( ! isset ( $j )){ return
implode ( " ; \n " , $jb );} $jb [] = ( ereg ( ';$' , $j ) ? " DELIMITER ;; \n $j ; \n DELIMITER " : $j ); return $g -> query ( $j );} function
apply_queries ( $j , $E , $Df = 'table' ){ foreach ( $E
as $h ){ if ( ! queries ( " $j " . $Df ( $h ))){ return
false ;}} return
true ;} function
queries_redirect ( $ga , $va , $fd ){ return
query_redirect ( queries (), $ga , $va , $fd , false , ! $fd );} function
remove_from_uri ( $Za = " " ){ return
substr ( preg_replace ( " ~(?<=[?&])( $Za " . ( SID ? " " : " | " . session_name ()) . " )=[^&]*&~ " , '' , " $_SERVER[REQUEST_URI] & " ), 0 , - 1 );} function
pagination ( $ca , $zf ){ return " " . ( $ca == $zf ? $ca + 1 : '<a href="' . h ( remove_from_uri ( " page " ) . ( $ca ? " &page= $ca " : " " )) . '">' . ( $ca + 1 ) . " </a> " );} function
get_file ( $d , $sd = false ){ $Ia = $_FILES [ $d ]; if ( ! $Ia || $Ia [ " error " ]){ return $Ia [ " error " ];} $c = file_get_contents ( $sd && ereg ( '\\.gz$' , $Ia [ " name " ]) ? " compress.zlib:// $Ia[tmp_name] " : ( $sd && ereg ( '\\.bz2$' , $Ia [ " name " ]) ? " compress.bzip2:// $Ia[tmp_name] " : $Ia [ " tmp_name " ])); if ( $sd ){ $Fb = substr ( $c , 0 , 3 ); if ( function_exists ( " iconv " ) && ereg ( " ^ \xFE \xFF |^ \xFF \xFE " , $Fb , $Xf )){ $c = iconv ( " utf-16 " , " utf-8 " , $c );} elseif ( $Fb == " \xEF \xBB \xBF " ){ $c = substr ( $c , 3 );}} return $c ;} function
upload_error ( $n ){ $gf = ( $n == UPLOAD_ERR_INI_SIZE ? ini_get ( " upload_max_filesize " ) : null ); return ( $n ? lang ( 1 ) . ( $gf ? " " . lang ( 2 , $gf ) : " " ) : lang ( 3 ));} function
odd ( $c = ' class="odd"' ){ static $l = 0 ; if ( ! $c ){ $l =- 1 ;} return ( $l ++%
2 ? $c : '' );} function
json_row ( $d , $b = null ){ static $Ba = true ; if ( $Ba ){ echo " { " ;} if ( $d != " " ){ echo ( $Ba ? " " : " , " ) . " \n \t \" " . addcslashes ( $d , " \r \n \" \\ " ) . '": ' . ( isset ( $b ) ? '"' . addcslashes ( $b , " \r \n \" \\ " ) . '"' : 'undefined' ); $Ba = false ;} else { echo " \n } \n " ; $Ba = true ;}} function
is_utf8 ( $b ){ return ( preg_match ( '~~u' , $b ) &&! preg_match ( '~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~' , $b ));} function
repeat_pattern ( $ba , $W ){ return
str_repeat ( " $ba { 0,65535} " , $W / 65535 ) . " $ba { 0, " . ( $W
%
65535 ) . " } " ;} function
shorten_utf8 ( $I , $W = 80 , $Af = " " ){ if ( ! preg_match ( " (^( " . repeat_pattern ( " [ \t \r \n - \ x { FFFF}] " , $W ) . " )( $ )?)u " , $I , $k )){ preg_match ( " (^( " . repeat_pattern ( " [ \t \r \n -~] " , $W ) . " )( $ )?) " , $I , $k );} return
h ( $k [ 1 ]) . $Af . ( isset ( $k [ 2 ]) ? " " : " <i>...</i> " );} function
friendly_url ( $b ){ return
preg_replace ( '~[^a-z0-9_]~i' , '-' , $b );} function
hidden_fields ( $ub , $Qf = array ()){ while ( list ( $d , $b ) = each ( $ub )){ if ( is_array ( $b )){ foreach ( $b
as $Ma => $y ){ $ub [ $d . " [ $Ma ] " ] = $y ;}} elseif ( ! in_array ( $d , $Qf )){ echo '<input type="hidden" name="' . h ( $d ) . '" value="' . h ( $b ) . '">' ;}}} function
hidden_fields_get (){ echo ( sid () ? '<input type="hidden" name="' . session_name () . '" value="' . h ( session_id ()) . '">' : '' ),( SERVER !== null ? '<input type="hidden" name="' . DRIVER . '" value="' . h ( SERVER ) . '">' : " " ), '<input type="hidden" name="username" value="' . h ( $_GET [ " username " ]) . '">' ;} function
column_foreign_keys ( $h ){ global $o ; $c = array (); foreach ( $o -> foreignKeys ( $h ) as $A ){ foreach ( $A [ " source " ] as $b ){ $c [ $b ][] = $A ;}} return $c ;} function
enum_input ( $z , $Ra , $e , $q , $hc = null ){ global $o ; preg_match_all ( " ~'((?:[^']|'')*)'~ " , $e [ " length " ], $oa ); $c = ( isset ( $hc ) ? " <label><input type=' $z ' $Ra value=' $hc ' " . (( is_array ( $q ) ? in_array ( $hc , $q ) : $q === 0 ) ? " checked " : " " ) . " ><i> " . lang ( 4 ) . " </i></label> " : " " ); foreach ( $oa [ 1 ] as $l => $b ){ $b = stripcslashes ( str_replace ( " '' " , " ' " , $b )); $ab = ( is_int ( $q ) ? $q == $l + 1 : ( is_array ( $q ) ? in_array ( $l + 1 , $q ) : $q === $b )); $c .= " <label><input type=' $z ' $Ra value=' " . ( $l + 1 ) . " ' " . ( $ab ? ' checked' : '' ) . '>' . h ( $o -> editVal ( $b , $e )) . '</label>' ;} return $c ;} function
input ( $e , $q , $K ){ global $R , $o , $v ; $f = h ( bracket_escape ( $e [ " field " ])); echo " <td class='function'> " ; $De = ( $v == " mssql " && $e [ " auto_increment " ]); if ( $De &&! $_POST [ " save " ]){ $K = null ;} $da = ( isset ( $_GET [ " select " ]) || $De ? array ( " orig " => lang ( 5 )) : array ()) + $o -> editFunctions ( $e ); $Ra = " name='fields[ $f ]' " ; if ( $e [ " type " ] == " enum " ){ echo
nbsp ( $da [ " " ]) . " <td> " . $o -> editInput ( $_GET [ " edit " ], $e , $Ra , $q );} else { $Ba = 0 ; foreach ( $da
as $d => $b ){ if ( $d === " " ||! $b ){ break ;} $Ba ++ ;} $Qb = ( $Ba ? " onchange= \" var f = this.form['function[ " . js_escape ( $f ) . " ]']; if ( $Ba > f.selectedIndex) f.selectedIndex = $Ba ; \" " : " " ); $Ra .= $Qb ; echo ( count ( $da ) > 1 ? adminer_html_select ( " function[ $f ] " , $da , ! isset ( $K ) || in_array ( $K , $da ) || isset ( $da [ $K ]) ? $K : " " , " functionChange(this); " ) : nbsp ( reset ( $da ))) . '<td>' ; $Ae = $o -> editInput ( $_GET [ " edit " ], $e , $Ra , $q ); if ( $Ae != " " ){ echo $Ae ;} elseif ( $e [ " type " ] == " set " ){ preg_match_all ( " ~'((?:[^']|'')*)'~ " , $e [ " length " ], $oa ); foreach ( $oa [ 1 ] as $l => $b ){ $b = stripcslashes ( str_replace ( " '' " , " ' " , $b )); $ab = ( is_int ( $q ) ? ( $q >> $l ) & 1 : in_array ( $b , explode ( " , " , $q ), true )); echo " <label><input type='checkbox' name='fields[ $f ][ $l ]' value=' " . ( 1 << $l ) . " ' " . ( $ab ? ' checked' : '' ) . " $Qb > " . h ( $o -> editVal ( $b , $e )) . '</label>' ;}} elseif ( ereg ( 'blob|bytea|raw|file' , $e [ " type " ]) && ini_bool ( " file_uploads " )){ echo " <input type='file' name='fields- $f ' $Qb > " ;} elseif ( ereg ( 'text|lob' , $e [ " type " ])){ echo " <textarea " . ( $v != " sqlite " || ereg ( " \n " , $q ) ? " cols='50' rows='12' " : " cols='30' rows='1' style='height: 1.2em;' " ) . " $Ra > " . h ( $q ) . '</textarea>' ;} else { $nd = ( ! ereg ( 'int' , $e [ " type " ]) && preg_match ( '~^(\\d+)(,(\\d+))?$~' , $e [ " length " ], $k ) ? (( ereg ( " binary " , $e [ " type " ]) ? 2 : 1 ) * $k [ 1 ] + ( $k [ 3 ] ? 1 : 0 ) + ( $k [ 2 ] &&! $e [ " unsigned " ] ? 1 : 0 )) : ( $R [ $e [ " type " ]] ? $R [ $e [ " type " ]] + ( $e [ " unsigned " ] ? 0 : 1 ) : 0 )); echo " <input value=' " . h ( $q ) . " ' " . ( $nd ? " maxlength=' $nd ' " : " " ) . ( ereg ( 'char|binary' , $e [ " type " ]) && $nd > 20 ? " size='40' " : " " ) . " $Ra > " ;}}} function
process_input ( $e ){ global $o ; $N = bracket_escape ( $e [ " field " ]); $K = $_POST [ " function " ][ $N ]; $q = $_POST [ " fields " ][ $N ]; if ( $e [ " type " ] == " enum " ){ if ( $q ==- 1 ){ return
false ;} if ( $q == " " ){ return " NULL " ;} return + $q ;} if ( $e [ " auto_increment " ] && $q == " " ){ return
null ;} if ( $K == " orig " ){ return
false ;} if ( $K == " NULL " ){ return " NULL " ;} if ( $e [ " type " ] == " set " ){ return
array_sum (( array ) $q );} if ( ereg ( 'blob|bytea|raw|file' , $e [ " type " ]) && ini_bool ( " file_uploads " )){ $Ia = get_file ( " fields- $N " ); if ( ! is_string ( $Ia )){ return
false ;} return
q ( $Ia );} return $o -> processInput ( $e , $q , $K );} function
search_tables (){ global $o , $g ; $_GET [ " where " ][ 0 ][ " op " ] = " LIKE %% " ; $_GET [ " where " ][ 0 ][ " val " ] = $_POST [ " query " ]; $ta = false ; foreach ( table_status () as $h => $D ){ $f = $o -> tableName ( $D ); if ( isset ( $D [ " Engine " ]) && $f != " " && ( ! $_POST [ " tables " ] || in_array ( $h , $_POST [ " tables " ]))){ $i = $g -> query ( " SELECT " . limit ( " 1 FROM " . table ( $h ), " WHERE " . implode ( " AND " , $o -> selectSearchProcess ( fields ( $h ), array ())), 1 )); if ( $i -> fetch_row ()){ if ( ! $ta ){ echo " <ul> \n " ; $ta = true ;} echo " <li><a href=' " . h ( ME . " select= " . urlencode ( $h ) . " &where[0][op]= " . urlencode ( $_GET [ " where " ][ 0 ][ " op " ]) . " &where[0][val]= " . urlencode ( $_GET [ " where " ][ 0 ][ " val " ])) . " '> $f </a> \n " ;}}} echo ( $ta ? " </ul> " : " <p class='message'> " . lang ( 6 )) . " \n " ;} function
dump_headers ( $Sc , $_d = false ){ global $o ; $c = $o -> dumpHeaders ( $Sc , $_d ); $Na = $_POST [ " output " ]; if ( $Na != " text " ){ header ( " Content-Disposition: attachment; filename= " . ( $Sc != " " ? friendly_url ( $Sc ) : " dump " ) . " . $c " . ( $Na != " file " &&! ereg ( '[^0-9a-z]' , $Na ) ? " . $Na " : " " ));} session_write_close (); return $c ;} function
dump_csv ( $a ){ foreach ( $a
as $d => $b ){ if ( preg_match ( " ~[ \" \n ,; \t ]~ " , $b ) || $b === " " ){ $a [ $d ] = '"' . str_replace ( '"' , '""' , $b ) . '"' ;}} echo
implode (( $_POST [ " format " ] == " csv " ? " , " : ( $_POST [ " format " ] == " tsv " ? " \t " : " ; " )), $a ) . " \r \n " ;} function
apply_sql_function ( $K , $C ){ return ( $K ? ( $K == " unixepoch " ? " DATETIME( $C , ' $K ') " : ( $K == " count distinct " ? " COUNT(DISTINCT " : strtoupper ( " $K ( " )) . " $C ) " ) : $C );} function
password_file (){ $Rc = ini_get ( " upload_tmp_dir " ); if ( ! $Rc ){ if ( function_exists ( 'sys_get_temp_dir' )){ $Rc = sys_get_temp_dir ();} else { $ja =@ tempnam ( " " , " " ); if ( ! $ja ){ return
false ;} $Rc = dirname ( $ja ); unlink ( $ja );}} $ja = " $Rc /adminer.key " ; $c =@ file_get_contents ( $ja ); if ( $c ){ return $c ;} $Pa =@ fopen ( $ja , " w " ); if ( $Pa ){ $c = md5 ( uniqid ( mt_rand (), true )); fwrite ( $Pa , $c ); fclose ( $Pa );} return $c ;} function
is_mail ( $xf ){ $Ne = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]' ; $vc = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])' ; $ba = " $Ne +( \\ . $Ne +)*@( $vc ? \\ .)+ $vc " ; return
preg_match ( " (^ $ba (, \\ s* $ba )* \$ )i " , $xf );} function
is_url ( $I ){ $vc = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])' ; return ( preg_match ( " ~^(https?)://( $vc ? \\ .)+ $vc (: \\ d+)?(/.*)?( \\ ?.*)?(#.*)? \$ ~i " , $I , $k ) ? strtolower ( $k [ 1 ]) : " " );} function
print_fieldset ( $S , $Of , $Kf = false ){ echo " <fieldset><legend><a href='#fieldset- $S ' onclick= \" return !toggle('fieldset- $S '); \" > $Of </a></legend><div id='fieldset- $S ' " . ( $Kf ? " " : " class='hidden' " ) . " > \n " ;} function
bold ( $Lf ){ return ( $Lf ? " class='active' " : " " );} global $o , $g , $na , $Nb , $Gb , $n , $da , $lb , $Ac , $jc , $v , $ua , $Lb , $fb , $La , $M , $Y , $R , $ob , $tc ; if ( ! isset ( $_SERVER [ " REQUEST_URI " ])){ $_SERVER [ " REQUEST_URI " ] = $_SERVER [ " ORIG_PATH_INFO " ] . ( $_SERVER [ " QUERY_STRING " ] != " " ? " ? $_SERVER[QUERY_STRING] " : " " );} $Ac = $_SERVER [ " HTTPS " ] && strcasecmp ( $_SERVER [ " HTTPS " ], " off " ); @ ini_set ( " session.use_trans_sid " , false ); if ( ! defined ( " SID " )){ session_name ( " adminer_sid " ); $xc = array ( 0 , preg_replace ( '~\\?.*~' , '' , $_SERVER [ " REQUEST_URI " ]), " " , $Ac ); if ( version_compare ( PHP_VERSION , '5.2.0' ) >= 0 ){ $xc [] = true ;} call_user_func_array ( 'session_set_cookie_params' , $xc ); session_start ();} remove_slashes ( array ( & $_GET , & $_POST , & $_COOKIE )); if ( function_exists ( " set_magic_quotes_runtime " )){ set_magic_quotes_runtime ( false );} @ set_time_limit ( 0 ); @ ini_set ( " zend.ze1_compatibility_mode " , false ); @ ini_set ( " precision " , 20 ); $Lb = array ( 'en' => 'English' , 'cs' => 'Čeština' , 'sk' => 'Slovenčina' , 'nl' => 'Nederlands' , 'es' => 'Español' , 'de' => 'Deutsch' , 'fr' => 'Français' , 'it' => 'Italiano' , 'et' => 'Eesti' , 'hu' => 'Magyar' , 'pl' => 'Polski' , 'ca' => 'Català' , 'pt' => 'Português' , 'sl' => 'Slovenski' , 'tr' => 'Türkçe' , 'ru' => 'Русский язык' , 'zh' => '简体中文' , 'zh-tw' => '繁體中文' , 'ja' => '日本語' , 'ta' => 'தமிழ்' , 'ar' => 'العربية' ,); function
get_lang (){ global $ua ; return $ua ;} function
lang ( $N , $lc = null ){ global $ua , $Y ; $kc = $Y [ $N ]; if ( is_array ( $kc ) && $kc ){ $uc = ( $lc == 1 || ( ! $lc && $ua == 'fr' ) ? 0 : ( $ua == 'sl' && ( ! $lc || $lc > 2 ) ? 1 : 0 ) + (( ! $lc || $lc >= 5 ) && ereg ( 'cs|sk|ru|sl|pl' , $ua ) ? 2 : 1 )); $kc = $kc [ $uc ];} $Be = func_get_args (); array_shift ( $Be ); return
vsprintf (( isset ( $kc ) ? $kc : $N ), $Be );} function
switch_lang (){ global $ua , $Lb ; echo " <form action=''> \n <div id='lang'> " ; hidden_fields ( $_GET , array ( 'lang' )); echo
lang ( 7 ) . " : " . adminer_html_select ( " lang " , $Lb , $ua , " var loc = location.search.replace(/[?&]lang=[^&]*/, ''); location.search = loc + (loc ? '&' : '') + 'lang=' + this.value; " ), " <input type='submit' value=' " . lang ( 8 ) . " ' class='hidden'> \n " , " </div> \n </form> \n " ;} if ( isset ( $_GET [ " lang " ])){ $_COOKIE [ " adminer_lang " ] = $_GET [ " lang " ]; $_SESSION [ " lang " ] = $_GET [ " lang " ];} $ua = " en " ; if ( isset ( $Lb [ $_COOKIE [ " adminer_lang " ]])){ cookie ( " adminer_lang " , $_COOKIE [ " adminer_lang " ]); $ua = $_COOKIE [ " adminer_lang " ];} elseif ( isset ( $Lb [ $_SESSION [ " lang " ]])){ $ua = $_SESSION [ " lang " ];} else { $cd = array (); preg_match_all ( '~([-a-z]+)(;q=([0-9.]+))?~' , str_replace ( " _ " , " - " , strtolower ( $_SERVER [ " HTTP_ACCEPT_LANGUAGE " ])), $oa , PREG_SET_ORDER ); foreach ( $oa
as $k ){ $cd [ $k [ 1 ]] = ( isset ( $k [ 3 ]) ? $k [ 3 ] : 1 );} arsort ( $cd ); foreach ( $cd
as $d => $aa ){ if ( isset ( $Lb [ $d ])){ $ua = $d ; break ;} $d = preg_replace ( '~-.*~' , '' , $d ); if ( ! isset ( $cd [ $d ]) && isset ( $Lb [ $d ])){ $ua = $d ; break ;}}} switch ( $ua ){ case " en " : $Y = array ( 'Are you sure?' , 'Unable to upload a file.' , 'Maximum allowed file size is %sB.' , 'File does not exist.' , 'empty' , 'original' , 'No tables.' , 'Language' , 'Use' , 'Please use one of the extensions %s.' , 'File exists.' , 'User types' , 'Numbers' , 'Date and time' , 'Strings' , 'Binary' , 'Network' , 'Geometry' , 'Lists' , 'System' , 'Server' , 'Username' , 'Password' , 'Login' , 'Permanent login' , 'Select data' , 'Show structure' , 'Alter view' , 'Alter table' , 'New item' , 'Last page' , 'Edit' , array ( '%d byte' , '%d bytes' ), 'Select' , 'Functions' , 'Aggregation' , 'Search' , 'anywhere' , 'Sort' , 'descending' , 'Limit' , 'Text length' , 'Action' , 'SQL command' , 'open' , 'save' , 'Alter database' , 'Alter schema' , 'Create schema' , 'Dump' , 'Logout' , 'database' , 'schema' , 'Create new table' , 'select' , 'ltr' , 'Resend POST data?' , 'Invalid CSRF token. Send the form again.' , 'Logout successful.' , 'Session support must be enabled.' , 'Session expired, please login again.' , 'Invalid credentials.' , 'No extension' , 'None of the supported PHP extensions (%s) are available.' , 'Too big POST data. Reduce the data or increase the %s configuration directive.' , 'Database' , 'Invalid database.' , 'Databases have been dropped.' , 'Select database' , 'Create new database' , 'Privileges' , 'Process list' , 'Variables' , 'Status' , '%s version: %s through PHP extension %s' , 'Logged as: %s' , 'Collation' , 'Tables' , 'Drop' , 'Refresh' , 'Schema' , 'Invalid schema.' , 'No rows.' , '%.3f s' , 'Foreign keys' , 'collation' , 'ON DELETE' , 'Column name' , 'Parameter name' , 'Type' , 'Length' , 'Options' , 'Auto Increment' , 'Default values' , 'Comment' , 'Add next' , 'Move up' , 'Move down' , 'Remove' , 'View' , 'Table' , 'Column' , 'Indexes' , 'Alter indexes' , 'Source' , 'Target' , 'ON UPDATE' , 'Alter' , 'Add foreign key' , 'Triggers' , 'Add trigger' , 'Database schema' , 'Permanent link' , 'Export' , 'Output' , 'Format' , 'Routines' , 'Events' , 'Data' , 'edit' , 'Create user' , array ( 'Query executed OK, %d row affected.' , 'Query executed OK, %d rows affected.' ), array ( '%d row' , '%d rows' ), 'Error in query' , 'No commands to execute.' , array ( '%d query executed OK.' , '%d queries executed OK.' ), 'File upload' , 'File uploads are disabled.' , 'Execute' , 'Stop on error' , 'Show only errors' , 'From server' , 'Webserver file %s' , 'Run file' , 'History' , 'Clear' , 'Edit all' , 'Item has been deleted.' , 'Item has been updated.' , 'Item%s has been inserted.' , 'Insert' , 'Save' , 'Save and continue edit' , 'Save and insert next' , 'Delete' , 'Table has been dropped.' , 'Table has been altered.' , 'Table has been created.' , 'Create table' , 'Maximum number of allowed fields exceeded. Please increase %s and %s.' , 'Table name' , 'engine' , 'Partition by' , 'Partitions' , 'Partition name' , 'Values' , 'Indexes have been altered.' , 'Index Type' , 'Column (length)' , 'Database has been dropped.' , 'Database has been renamed.' , 'Database has been created.' , 'Database has been altered.' , 'Create database' , 'Schema has been dropped.' , 'Schema has been created.' , 'Schema has been altered.' , 'Call' , array ( 'Routine has been called, %d row affected.' , 'Routine has been called, %d rows affected.' ), 'Foreign key has been dropped.' , 'Foreign key has been altered.' , 'Foreign key has been created.' , 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' , 'Foreign key' , 'Target table' , 'Change' , 'Add column' , 'View has been dropped.' , 'View has been altered.' , 'View has been created.' , 'Create view' , 'Name' , 'Event has been dropped.' , 'Event has been altered.' , 'Event has been created.' , 'Alter event' , 'Create event' , 'Start' , 'End' , 'Every' , 'On completion preserve' , 'Routine has been dropped.' , 'Routine has been altered.' , 'Routine has been created.' , 'Alter function' , 'Alter procedure' , 'Create function' , 'Create procedure' , 'Return type' , 'Sequence has been dropped.' , 'Sequence has been created.' , 'Sequence has been altered.' , 'Alter sequence' , 'Create sequence' , 'Type has been dropped.' , 'Type has been created.' , 'Alter type' , 'Create type' , 'Trigger has been dropped.' , 'Trigger has been altered.' , 'Trigger has been created.' , 'Alter trigger' , 'Create trigger'
Min_PDO
extends
PDO { var $_result , $server_info , $affected_rows , $error ; function
__construct (){} function
dsn ( $lf , $P , $T , $of = 'auth_error' ){ set_exception_handler ( $of ); parent :: __construct ( $lf , $P , $T ); restore_exception_handler (); $this -> setAttribute ( 13 , array ( 'Min_PDOStatement' )); $this -> server_info = $this -> getAttribute ( 4 );} function
query ( $j , $db = false ){ $i = parent :: query ( $j ); if ( ! $i ){ $nf = $this -> errorInfo (); $this -> error = $nf [ 2 ]; return
false ;} $this -> store_result ( $i ); return $i ;} function
multi_query ( $j ){ return $this -> _result = $this -> query ( $j );} function
store_result ( $i = null ){ if ( ! $i ){ $i = $this -> _result ;} if ( $i -> columnCount ()){ $i -> num_rows = $i -> rowCount (); return $i ;} $this -> affected_rows = $i -> rowCount (); return
true ;} function
next_result (){ return $this -> _result -> nextRowset ();} function
result ( $j , $e = 0 ){ $i = $this -> query ( $j ); if ( ! $i ){ return
false ;} $a = $i -> fetch (); return $a [ $e ];}} class
Min_PDOStatement
extends
PDOStatement { var $_offset = 0 , $num_rows ; function
fetch_assoc (){ return $this -> fetch ( 2 );} function
fetch_row (){ return $this -> fetch ( 3 );} function
fetch_field (){ $a = ( object ) $this -> getColumnMeta ( $this -> _offset ++ ); $a -> orgtable = $a -> table ; $a -> orgname = $a -> name ; $a -> charsetnr = ( in_array ( " blob " , $a -> flags ) ? 63 : 0 ); return $a ;}}} $na = array (); $na [ " sqlite " ] = " SQLite 3 " ; $na [ " sqlite2 " ] = " SQLite 2 " ; if ( isset ( $_GET [ " sqlite " ]) || isset ( $_GET [ " sqlite2 " ])){ $oc = array (( isset ( $_GET [ " sqlite " ]) ? " SQLite3 " : " SQLite " ), " PDO_SQLite " ); define ( " DRIVER " ,( isset ( $_GET [ " sqlite " ]) ? " sqlite " : " sqlite2 " )); if ( extension_loaded ( isset ( $_GET [ " sqlite " ]) ? " sqlite3 " : " sqlite " )){ if ( isset ( $_GET [ " sqlite " ])){ class
Min_SQLite { var $extension = " SQLite3 " , $server_info , $affected_rows , $error , $_link ; function
Min_SQLite ( $ja ){ $this -> _link = new
SQLite3 ( $ja ); $Kd = $this -> _link -> version (); $this -> server_info = $Kd [ " versionString " ];} function
query ( $j ){ $i =@ $this -> _link -> query ( $j ); if ( ! $i ){ $this -> error = $this -> _link -> lastErrorMsg (); return
false ;} elseif ( $i -> numColumns ()){ return
new
Min_Result ( $i );} $this -> affected_rows = $this -> _link -> changes (); return
true ;} function
quote ( $I ){ return " ' " . $this -> _link -> escapeString ( $I ) . " ' " ;} function
store_result (){ return $this -> _result ;} function
result ( $j , $e = 0 ){ $i = $this -> query ( $j ); if ( ! is_object ( $i )){ return
false ;} $a = $i -> _result -> fetchArray (); return $a [ $e ];}} class
Min_Result { var $_result , $_offset = 0 , $num_rows ; function
Min_Result ( $i ){ $this -> _result = $i ;} function
fetch_assoc (){ return $this -> _result -> fetchArray ( SQLITE3_ASSOC );} function
fetch_row (){ return $this -> _result -> fetchArray ( SQLITE3_NUM );} function
fetch_field (){ $C = $this -> _offset ++ ; $z = $this -> _result -> columnType ( $C ); return ( object ) array ( " name " => $this -> _result -> columnName ( $C ), " type " => $z , " charsetnr " => ( $z == SQLITE3_BLOB ? 63 : 0 ),);} function
__desctruct (){ return $this -> _result -> finalize ();}}} else { class
Min_SQLite { var $extension = " SQLite " , $server_info , $affected_rows , $error , $_link ; function
Min_SQLite ( $ja ){ $this -> server_info = sqlite_libversion (); $this -> _link = new
SQLiteDatabase ( $ja );} function
query ( $j , $db = false ){ $qf = ( $db ? " unbufferedQuery " : " query " ); $i =@ $this -> _link -> $qf ( $j , SQLITE_BOTH , $n ); if ( ! $i ){ $this -> error = $n ; return
false ;} elseif ( $i === true ){ $this -> affected_rows = $this -> changes (); return
true ;} return
new
Min_Result ( $i );} function
quote ( $I ){ return " ' " . sqlite_escape_string ( $I ) . " ' " ;} function
store_result (){ return $this -> _result ;} function
result ( $j , $e = 0 ){ $i = $this -> query ( $j ); if ( ! is_object ( $i )){ return
false ;} $a = $i -> _result -> fetch (); return $a [ $e ];}} class
Min_Result { var $_result , $_offset = 0 , $num_rows ; function
Min_Result ( $i ){ $this -> _result = $i ; if ( method_exists ( $i , 'numRows' )){ $this -> num_rows = $i -> numRows ();}} function
fetch_assoc (){ $a = $this -> _result -> fetch ( SQLITE_ASSOC ); if ( ! $a ){ return
false ;} $c = array (); foreach ( $a
as $d => $b ){ $c [( $d [ 0 ] == '"' ? idf_unescape ( $d ) : $d )] = $b ;} return $c ;} function
fetch_row (){ return $this -> _result -> fetch ( SQLITE_NUM );} function
fetch_field (){ $f = $this -> _result -> fieldName ( $this -> _offset ++ ); $ba = '(\\[.*]|"(?:[^"]|"")*"|(.+))' ; if ( preg_match ( " ~^( $ba\\ .)? $ba\ $ ~ " , $f , $k )){ $h = ( $k [ 3 ] != " " ? $k [ 3 ] : idf_unescape ( $k [ 2 ])); $f = ( $k [ 5 ] != " " ? $k [ 5 ] : idf_unescape ( $k [ 4 ]));} return ( object ) array ( " name " => $f , " orgname " => $f , " orgtable " => $h ,);}}}} elseif ( extension_loaded ( " pdo_sqlite " )){ class
Min_SQLite
extends
Min_PDO { var $extension = " PDO_SQLite " ; function
Min_SQLite ( $ja ){ $this -> dsn ( DRIVER . " : $ja " , " " , " " );}}} if ( class_exists ( " Min_SQLite " )){ class
Min_DB
extends
Min_SQLite { function
Min_DB (){ $this -> Min_SQLite ( " :memory: " );} function
select_db ( $ja ){ if ( is_readable ( $ja ) && $this -> query ( " ATTACH " . $this -> quote ( ereg ( " (^[/ \\ ]|:) " , $ja ) ? $ja : dirname ( $_SERVER [ " SCRIPT_FILENAME " ]) . " / $ja " ) . " AS a " )){ $this -> Min_SQLite ( $ja ); return
true ;} return
false ;} function
multi_query ( $j ){ return $this -> _result = $this -> query ( $j );} function
next_result (){ return
false ;}}} function
idf_escape ( $N ){ return '"' . str_replace ( '"' , '""' , $N ) . '"' ;} function
table ( $N ){ return
idf_escape ( $N );} function
connect (){ return
new
Min_DB ;} function
get_databases (){ return
array ();} function
limit ( $j , $s , $O , $L = 0 , $Wa = " " ){ return " $j $s " . ( isset ( $O ) ? $Wa . " LIMIT $O " . ( $L ? " OFFSET $L " : " " ) : " " );} function
limit1 ( $j , $s ){ global $g ; return ( $g -> result ( " SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT') " ) ? limit ( $j , $s , 1 ) : " $j $s " );} function
db_collation ( $t , $Z ){ global $g ; return $g -> result ( " PRAGMA encoding " );} function
engines (){ return
array ();} function
logged_user (){ return
get_current_user ();} function
tables_list (){ return
get_key_vals ( " SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view') ORDER BY (name = 'sqlite_sequence'), name " , 1 );} function
count_tables ( $_ ){ return
array ();} function
table_status ( $f = " " ){ $c = array (); foreach ( get_rows ( " SELECT name AS Name, type AS Engine FROM sqlite_master WHERE type IN ('table', 'view') " . ( $f != " " ? " AND name = " . q ( $f ) : " " )) as $a ){ $a [ " Auto_increment " ] = " " ; $c [ $a [ " Name " ]] = $a ;} foreach ( get_rows ( " SELECT * FROM sqlite_sequence " , null , " " ) as $a ){ $c [ $a [ " name " ]][ " Auto_increment " ] = $a [ " seq " ];} return ( $f != " " ? $c [ $f ] : $c );} function
is_view ( $D ){ return $D [ " Engine " ] == " view " ;} function
fk_support ( $D ){ global $g ; return ! $g -> result ( " SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY') " );} function
fields ( $h ){ $c = array (); foreach ( get_rows ( " PRAGMA table_info( " . table ( $h ) . " ) " ) as $a ){ $z = strtolower ( $a [ " type " ]); $za = $a [ " dflt_value " ]; $c [ $a [ " name " ]] = array ( " field " => $a [ " name " ], " type " => ( eregi ( " int " , $z ) ? " integer " : ( eregi ( " char|clob|text " , $z ) ? " text " : ( eregi ( " blob " , $z ) ? " blob " : ( eregi ( " real|floa|doub " , $z ) ? " real " : " numeric " )))), " full_type " => $z , " default " => ( ereg ( " '(.*)' " , $za , $k ) ? str_replace ( " '' " , " ' " , $k [ 1 ]) : ( $za == " NULL " ? null : $za )), " null " =>! $a [ " notnull " ], " auto_increment " => eregi ( '^integer$' , $z ) && $a [ " pk " ], " privileges " => array ( " select " => 1 , " insert " => 1 , " update " => 1 ), " primary " => $a [ " pk " ],);} return $c ;} function
indexes ( $h , $G = null ){ $c = array (); $Qa = array (); foreach ( fields ( $h ) as $e ){ if ( $e [ " primary " ]){ $Qa [] = $e [ " field " ];}} if ( $Qa ){ $c [ " " ] = array ( " type " => " PRIMARY " , " columns " => $Qa , " lengths " => array ());} foreach ( get_rows ( " PRAGMA index_list( " . table ( $h ) . " ) " ) as $a ){ $c [ $a [ " name " ]][ " type " ] = ( $a [ " unique " ] ? " UNIQUE " : " INDEX " ); $c [ $a [ " name " ]][ " lengths " ] = array (); foreach ( get_rows ( " PRAGMA index_info( " . idf_escape ( $a [ " name " ]) . " ) " ) as $dd ){ $c [ $a [ " name " ]][ " columns " ][] = $dd [ " name " ];}} return $c ;} function
foreign_keys ( $h ){ $c = array (); foreach ( get_rows ( " PRAGMA foreign_key_list( " . table ( $h ) . " ) " ) as $a ){ $A =& $c [ $a [ " id " ]]; if ( ! $A ){ $A = $a ;} $A [ " source " ][] = $a [ " from " ]; $A [ " target " ][] = $a [ " to " ];} return $c ;} function
view ( $f ){ global $g ; return
array ( " select " => preg_replace ( '~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\\s+~iU' , '' , $g -> result ( " SELECT sql FROM sqlite_master WHERE name = " . q ( $f ))));} function
collations (){ return ( isset ( $_GET [ " create " ]) ? get_vals ( " PRAGMA collation_list " , 1 ) : array ());} function
information_schema ( $t ){ return
false ;} function
error (){ global $g ; return
h ( $g -> error );} function
exact_value ( $b ){ return
q ( $b );} function
check_sqlite_name ( $f ){ global $g ; $Re = " db|sdb|sqlite " ; if ( ! preg_match ( " ~^[^ \\ 0]* \\ .( $Re ) \$ ~ " , $f )){ $g -> error = lang ( 9 , str_replace ( " | " , " , " , $Re )); return
false ;} return
true ;} function
create_database ( $t , $U ){ global $g ; if ( file_exists ( $t )){ $g -> error = lang ( 10 ); return
false ;} if ( ! check_sqlite_name ( $t )){ return
false ;} $w = new
Min_SQLite ( $t ); $w -> query ( 'PRAGMA encoding = "UTF-8"' ); $w -> query ( 'CREATE TABLE adminer (i)' ); $w -> query ( 'DROP TABLE adminer' ); return
true ;} function
drop_databases ( $_ ){ global $g ; $g -> Min_SQLite ( " :memory: " ); foreach ( $_
as $t ){ if ( !@ unlink ( $t )){ $g -> error = lang ( 10 ); return
false ;}} return
true ;} function
rename_database ( $f , $U ){ global $g ; if ( ! check_sqlite_name ( $f )){ return
false ;} $g -> Min_SQLite ( " :memory: " ); $g -> error = lang ( 10 ); return @ rename ( DB , $f );} function
auto_increment (){ return " PRIMARY KEY " . ( DRIVER == " sqlite " ? " AUTOINCREMENT " : " " );} function
alter_table ( $h , $f , $p , $Oa , $_a , $yb , $U , $Sa , $vb ){ $u = array (); foreach ( $p
as $e ){ if ( $e [ 1 ]){ $u [] = ( $h != " " && $e [ 0 ] == " " ? " ADD " : " " ) . implode ( $e [ 1 ]);}} $u = array_merge ( $u , $Oa ); if ( $h != " " ){ foreach ( $u
as $b ){ if ( ! queries ( " ALTER TABLE " . table ( $h ) . " $b " )){ return
false ;}} if ( $h != $f &&! queries ( " ALTER TABLE " . table ( $h ) . " RENAME TO " . table ( $f ))){ return
false ;}} elseif ( ! queries ( " CREATE TABLE " . table ( $f ) . " ( \n " . implode ( " , \n " , $u ) . " \n ) " )){ return
false ;} if ( $Sa ){ queries ( " UPDATE sqlite_sequence SET seq = $Sa WHERE name = " . q ( $f ));} return
true ;} function
alter_indexes ( $h , $u ){ foreach ( $u
as $b ){ if ( ! queries (( $b [ 2 ] ? " DROP INDEX " : " CREATE " . ( $b [ 0 ] != " INDEX " ? " UNIQUE " : " " ) . " INDEX " . idf_escape ( uniqid ( $h . " _ " )) . " ON " . table ( $h )) . " $b[1] " )){ return
false ;}} return
true ;} function
truncate_tables ( $E ){ return
apply_queries ( " DELETE FROM " , $E );} function
drop_views ( $X ){ return
apply_queries ( " DROP VIEW " , $X );} function
drop_tables ( $E ){ return
apply_queries ( " DROP TABLE " , $E );} function
move_tables ( $E , $X , $ea ){ return
false ;} function
trigger ( $f ){ global $g ; preg_match ( '~^CREATE\\s+TRIGGER\\s*(?:[^`"\\s]+|`[^`]*`|"[^"]*")+\\s*([a-z]+)\\s+([a-z]+)\\s+ON\\s*(?:[^`"\\s]+|`[^`]*`|"[^"]*")+\\s*(?:FOR\\s*EACH\\s*ROW\\s)?(.*)~is' , $g -> result ( " SELECT sql FROM sqlite_master WHERE name = " . q ( $f )), $k ); return
array ( " Timing " => strtoupper ( $k [ 1 ]), " Event " => strtoupper ( $k [ 2 ]), " Trigger " => $f , " Statement " => $k [ 3 ]);} function
triggers ( $h ){ $c = array (); foreach ( get_rows ( " SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = " . q ( $h )) as $a ){ preg_match ( '~^CREATE\\s+TRIGGER\\s*(?:[^`"\\s]+|`[^`]*`|"[^"]*")+\\s*([a-z]+)\\s*([a-z]+)~i' , $a [ " sql " ], $k ); $c [ $a [ " name " ]] = array ( $k [ 1 ], $k [ 2 ]);} return $c ;} function
trigger_options (){ return
array ( " Timing " => array ( " BEFORE " , " AFTER " , " INSTEAD OF " ), " Type " => array ( " FOR EACH ROW " ),);} function
routine ( $f , $z ){} function
routines (){} function
begin (){ return
queries ( " BEGIN " );} function
insert_into ( $h , $r ){ return
queries ( " INSERT INTO " . table ( $h ) . ( $r ? " ( " . implode ( " , " , array_keys ( $r )) . " ) \n VALUES ( " . implode ( " , " , $r ) . " ) " : " DEFAULT VALUES " ));} function
insert_update ( $h , $r , $Qa ){ return
queries ( " REPLACE INTO " . table ( $h ) . " ( " . implode ( " , " , array_keys ( $r )) . " ) VALUES ( " . implode ( " , " , $r ) . " ) " );} function
last_id (){ global $g ; return $g -> result ( " SELECT LAST_INSERT_ROWID() " );} function
explain ( $g , $j ){ return $g -> query ( " EXPLAIN $j " );} function
types (){ return
array ();} function
schemas (){ return
array ();} function
get_schema (){ return " " ;} function
set_schema ( $Ed ){ return
true ;} function
create_sql ( $h , $Sa ){ global $g ; return $g -> result ( " SELECT sql FROM sqlite_master WHERE type = 'table' AND name = " . q ( $h ));} function
truncate_sql ( $h ){ return " DELETE FROM " . table ( $h );} function
use_sql ( $ia ){} function
trigger_sql ( $h , $V ){ return
implode ( get_vals ( " SELECT sql || ';; \n ' FROM sqlite_master WHERE type = 'trigger' AND name = " . q ( $h )));} function
show_variables (){ global $g ; $c = array (); foreach ( array ( " auto_vacuum " , " cache_size " , " count_changes " , " default_cache_size " , " empty_result_callbacks " , " encoding " , " foreign_keys " , " full_column_names " , " fullfsync " , " journal_mode " , " journal_size_limit " , " legacy_file_format " , " locking_mode " , " page_size " , " max_page_count " , " read_uncommitted " , " recursive_triggers " , " reverse_unordered_selects " , " secure_delete " , " short_column_names " , " synchronous " , " temp_store " , " temp_store_directory " , " schema_version " , " integrity_check " , " quick_check " ) as $d ){ $c [ $d ] = $g -> result ( " PRAGMA $d " );} return $c ;} function
show_status (){ $c = array (); foreach ( get_vals ( " PRAGMA compile_options " ) as $sf ){ list ( $d , $b ) = explode ( " = " , $sf , 2 ); $c [ $d ] = $b ;} return $c ;} function
support ( $rb ){ return
ereg ( '^(view|trigger|variables|status|dump)$' , $rb );} $v = " sqlite " ; $R = array ( " integer " => 0 , " real " => 0 , " numeric " => 0 , " text " => 0 , " blob " => 0 ); $La = array_keys ( $R ); $ob = array (); $gc = array ( " = " , " < " , " > " , " <= " , " >= " , " != " , " LIKE " , " LIKE %% " , " IN " , " IS NULL " , " NOT LIKE " , " NOT IN " , " IS NOT NULL " , " " ); $da = array ( " hex " , " length " , " lower " , " round " , " unixepoch " , " upper " ); $lb = array ( " avg " , " count " , " count distinct " , " group_concat " , " max " , " min " , " sum " ); $Nb = array ( array (), array ( " integer|real|numeric " => " +/- " , " text " => " || " ,));} $na [ " pgsql " ] = " PostgreSQL " ; if ( isset ( $_GET [ " pgsql " ])){ $oc = array ( " PgSQL " , " PDO_PgSQL " ); define ( " DRIVER " , " pgsql " ); if ( extension_loaded ( " pgsql " )){ class
Min_DB { var $extension = " PgSQL " , $_link , $_result , $_string , $_database = true , $server_info , $affected_rows , $error ; function
_error ( $mf , $n ){ if ( ini_bool ( " html_errors " )){ $n = html_entity_decode ( strip_tags ( $n ));} $n = ereg_replace ( '^[^:]*: ' , '' , $n ); $this -> error = $n ;} function
connect ( $F , $P , $T ){ set_error_handler ( array ( $this , '_error' )); $this -> _string = " host=' " . str_replace ( " : " , " ' port=' " , addcslashes ( $F , " ' \\ " )) . " ' user=' " . addcslashes ( $P , " ' \\ " ) . " ' password=' " . addcslashes ( $T , " ' \\ " ) . " ' " ; $this -> _link =@ pg_connect ( $this -> _string . ( DB != " " ? " dbname=' " . addcslashes ( DB , " ' \\ " ) . " ' " : " dbname='template1' " ), PGSQL_CONNECT_FORCE_NEW ); if ( ! $this -> _link && DB != " " ){ $this -> _database = false ; $this -> _link =@ pg_connect ( " $this->_string dbname='template1' " , PGSQL_CONNECT_FORCE_NEW );} restore_error_handler (); if ( $this -> _link ){ $Kd = pg_version ( $this -> _link ); $this -> server_info = $Kd [ " server " ]; pg_set_client_encoding ( $this -> _link , " UTF8 " );} return ( bool ) $this -> _link ;} function
quote ( $I ){ return " ' " . pg_escape_string ( $this -> _link , $I ) . " ' " ;} function
select_db ( $ia ){ if ( $ia == DB ){ return $this -> _database ;} $c =@ pg_connect ( " $this->_string dbname=' " . addcslashes ( $ia , " ' \\ " ) . " ' " , PGSQL_CONNECT_FORCE_NEW ); if ( $c ){ $this -> _link = $c ;} return $c ;} function
close (){ $this -> _link =@ pg_connect ( " $this->_string dbname='template1' " );} function
query ( $j , $db = false ){ $i =@ pg_query ( $this -> _link , $j ); if ( ! $i ){ $this -> error = pg_last_error ( $this -> _link ); return
false ;} elseif ( ! pg_num_fields ( $i )){ $this -> affected_rows = pg_affected_rows ( $i ); return
true ;} return
new
Min_Result ( $i );} function
multi_query ( $j ){ return $this -> _result = $this -> query ( $j );} function
store_result (){ return $this -> _result ;} function
next_result (){ return
false ;} function
result ( $j , $e = 0 ){ $i = $this -> query ( $j ); if ( ! $i ||! $i -> num_rows ){ return
false ;} return
pg_fetch_result ( $i -> _result , 0 , $e );}} class
Min_Result { var $_result , $_offset = 0 , $num_rows ; function
Min_Result ( $i ){ $this -> _result = $i ; $this -> num_rows = pg_num_rows ( $i );} function
fetch_assoc (){ return
pg_fetch_assoc ( $this -> _result );} function
fetch_row (){ return
pg_fetch_row ( $this -> _result );} function
fetch_field (){ $C = $this -> _offset ++ ; $c = new
stdClass ; if ( function_exists ( 'pg_field_table' )){ $c -> orgtable = pg_field_table ( $this -> _result , $C );} $c -> name = pg_field_name ( $this -> _result , $C ); $c -> orgname = $c -> name ; $c -> type = pg_field_type ( $this -> _result , $C ); $c -> charsetnr = ( $c -> type == " bytea " ? 63 : 0 ); return $c ;} function
__destruct (){ pg_free_result ( $this -> _result );}}} elseif ( extension_loaded ( " pdo_pgsql " )){ class
Min_DB
extends
Min_PDO { var $extension = " PDO_PgSQL " ; function
connect ( $F , $P , $T ){ $I = " pgsql:host=' " . str_replace ( " : " , " ' port=' " , addcslashes ( $F , " ' \\ " )) . " ' options='-c client_encoding=utf8' " ; $this -> dsn ( $I . ( DB != " " ? " dbname=' " . addcslashes ( DB , " ' \\ " ) . " ' " : " " ), $P , $T ); return
true ;} function
select_db ( $ia ){ return ( DB == $ia );} function
close (){}}} function
idf_escape ( $N ){ return '"' . str_replace ( '"' , '""' , $N ) . '"' ;} function
table ( $N ){ return
idf_escape ( $N );} function
connect (){ global $o ; $g = new
Min_DB ; $ya = $o -> credentials (); if ( $g -> connect ( $ya [ 0 ], $ya [ 1 ], $ya [ 2 ])){ return $g ;} return $g -> error ;} function
get_databases (){ return
get_vals ( " SELECT datname FROM pg_database " );} function
limit ( $j , $s , $O , $L = 0 , $Wa = " " ){ return " $j $s " . ( isset ( $O ) ? $Wa . " LIMIT $O " . ( $L ? " OFFSET $L " : " " ) : " " );} function
limit1 ( $j , $s ){ return " $j $s " ;} function
db_collation ( $t , $Z ){ global $g ; return $g -> result ( " SHOW LC_COLLATE " );} function
engines (){ return
array ();} function
logged_user (){ global $g ; return $g -> result ( " SELECT user " );} function
tables_list (){ return
get_key_vals ( " SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema() ORDER BY table_name " );} function
count_tables ( $_ ){ return
array ();} function
table_status ( $f = " " ){ $c = array (); foreach ( get_rows ( " SELECT relname AS \" Name \" , CASE relkind WHEN 'r' THEN '' ELSE 'view' END AS \" Engine \" , pg_relation_size(oid) AS \" Data_length \" , pg_total_relation_size(oid) - pg_relation_size(oid) AS \" Index_length \" , obj_description(oid, 'pg_class') AS \" Comment \" , relhasoids AS \" Oid \"
FROM pg_class
WHERE relkind IN ( 'r' , 'v' )
AND relnamespace = ( SELECT oid FROM pg_namespace WHERE nspname = current_schema ()) " .( $f != " " ? " AND relname = " .q( $f ): " " ))as $a ) { $c [ $a [ " Name " ]] = $a ; } return( $f != " " ? $c[$f] : $c );}function
is_view ( $D ){ return $D [ " Engine " ] == " view " ;} function
fk_support ( $D ){ return
true ;} function
fields ( $h ){ $c = array (); foreach ( get_rows ( " SELECT a.attname AS field, format_type(a.atttypid, a.atttypmod) AS full_type, d.adsrc AS default, a.attnotnull, col_description(c.oid, a.attnum) AS comment
FROM pg_class c
JOIN pg_namespace n ON c . relnamespace = n . oid
JOIN pg_attribute a ON c . oid = a . attrelid
LEFT JOIN pg_attrdef d ON c . oid = d . adrelid AND a . attnum = d . adnum
WHERE c . relname = " .q( $h ). "
AND n . nspname = current_schema ()
AND NOT a . attisdropped
AND a . attnum > 0
ORDER BY a . attnum " )as $a ) { ereg('(.*)( \\ ((.*) \\ ))?', $a["full_type"] , $k );list(, $a["type"] ,, $a["length"] )= $k ; $a["full_type"] = $a["type"] .( $a["length"] ? " ( $a [ length ]) " : " " ); $a["null"] =( $a["attnotnull"] == " f " ); $a["auto_increment"] =eregi( " ^ nextval\\ ( " , $a["default"] ); $a["privileges"] =array( " insert " =>1, " select " =>1, " update " =>1); $c[$a["field"] ]= $a ;}return $c ;}function
indexes ( $h , $G = null ){ global $g ; if ( ! is_object ( $G )){ $G = $g ;} $c = array (); $af = $G -> result ( " SELECT oid FROM pg_class WHERE relname = " . q ( $h )); $B = get_key_vals ( " SELECT attnum, attname FROM pg_attribute WHERE attrelid = $af AND attnum > 0 " , $G ); foreach ( get_rows ( " SELECT relname, indisunique, indisprimary, indkey FROM pg_index i, pg_class ci WHERE i.indrelid = $af AND ci.oid = i.indexrelid " , $G ) as $a ){ $c [ $a [ " relname " ]][ " type " ] = ( $a [ " indisprimary " ] == " t " ? " PRIMARY " : ( $a [ " indisunique " ] == " t " ? " UNIQUE " : " INDEX " )); $c [ $a [ " relname " ]][ " columns " ] = array (); foreach ( explode ( " " , $a [ " indkey " ]) as $yf ){ $c [ $a [ " relname " ]][ " columns " ][] = $B [ $yf ];} $c [ $a [ " relname " ]][ " lengths " ] = array ();} return $c ;} function
foreign_keys ( $h ){ $c = array (); foreach ( get_rows ( " SELECT tc.constraint_name, kcu.column_name, rc.update_rule AS on_update, rc.delete_rule AS on_delete, ccu.table_name AS table, ccu.column_name AS ref
FROM information_schema . table_constraints tc
LEFT JOIN information_schema . key_column_usage kcu USING ( constraint_catalog , constraint_schema , constraint_name )
LEFT JOIN information_schema . referential_constraints rc USING ( constraint_catalog , constraint_schema , constraint_name )
LEFT JOIN information_schema . constraint_column_usage ccu ON rc . unique_constraint_catalog = ccu . constraint_catalog AND rc . unique_constraint_schema = ccu . constraint_schema AND rc . unique_constraint_name = ccu . constraint_name
WHERE tc . constraint_type = 'FOREIGN KEY' AND tc . table_name = " .q( $h ))as $a ) { $A =& $c [ $a [ " constraint_name " ]]; if ( ! $A ){ $A = $a ; } $A["source"] []= $a["column_name"] ; $A["target"] []= $a["ref"] ;}return $c ;}function
view ( $f ){ global $g ; return
array ( " select " => $g -> result ( " SELECT pg_get_viewdef( " . q ( $f ) . " ) " ));} function
collations (){ return
array ();} function
information_schema ( $t ){ return ( $t == " information_schema " );} function
error (){ global $g ; $c = h ( $g -> error ); if ( preg_match ( '~^(.*\\n)?([^\\n]*)\\n( *)\\^(\\n.*)?$~s' , $c , $k )){ $c = $k [ 1 ] . preg_replace ( '~((?:[^&]|&[^;]*;){' . strlen ( $k [ 3 ]) . '})(.*)~' , '\\1<b>\\2</b>' , $k [ 2 ]) . $k [ 4 ];} return
nl_br ( $c );} function
exact_value ( $b ){ return
q ( $b );} function
create_database ( $t , $U ){ return
queries ( " CREATE DATABASE " . idf_escape ( $t ) . ( $U ? " ENCODING " . idf_escape ( $U ) : " " ));} function
drop_databases ( $_ ){ global $g ; $g -> close (); return
apply_queries ( " DROP DATABASE " , $_ , 'idf_escape' );} function
rename_database ( $f , $U ){ return
queries ( " ALTER DATABASE " . idf_escape ( DB ) . " RENAME TO " . idf_escape ( $f ));} function
auto_increment (){ return " " ;} function
alter_table ( $h , $f , $p , $Oa , $_a , $yb , $U , $Sa , $vb ){ $u = array (); $jb = array (); foreach ( $p
as $e ){ $C = idf_escape ( $e [ 0 ]); $b = $e [ 1 ]; if ( ! $b ){ $u [] = " DROP $C " ;} else { $od = $b [ 5 ]; unset ( $b [ 5 ]); if ( isset ( $b [ 6 ]) && $e [ 0 ] == " " ){ $b [ 1 ] = ( $b [ 1 ] == " bigint " ? " big " : " " ) . " serial " ;} if ( $e [ 0 ] == " " ){ $u [] = ( $h != " " ? " ADD " : " " ) . implode ( $b );} else { if ( $C != $b [ 0 ]){ $jb [] = " ALTER TABLE " . table ( $h ) . " RENAME $C TO $b[0] " ;} $u [] = " ALTER $C TYPE $b[1] " ; if ( ! $b [ 6 ]){ $u [] = " ALTER $C " . ( $b [ 3 ] ? " SET $b[3] " : " DROP DEFAULT " ); $u [] = " ALTER $C " . ( $b [ 2 ] == " NULL " ? " DROP NOT " : " SET " ) . $b [ 2 ];}} if ( $e [ 0 ] != " " || $od != " " ){ $jb [] = " COMMENT ON COLUMN " . table ( $h ) . " . $b[0] IS " . ( $od != " " ? substr ( $od , 9 ) : " '' " );}}} $u = array_merge ( $u , $Oa ); if ( $h == " " ){ array_unshift ( $jb , " CREATE TABLE " . table ( $f ) . " ( \n " . implode ( " , \n " , $u ) . " \n ) " );} elseif ( $u ){ array_unshift ( $jb , " ALTER TABLE " . table ( $h ) . " \n " . implode ( " , \n " , $u ));} if ( $h != " " && $h != $f ){ $jb [] = " ALTER TABLE " . table ( $h ) . " RENAME TO " . table ( $f );} if ( $h != " " || $_a != " " ){ $jb [] = " COMMENT ON TABLE " . table ( $f ) . " IS " . q ( $_a );} if ( $Sa != " " ){} foreach ( $jb
as $j ){ if ( ! queries ( $j )){ return
false ;}} return
true ;} function
alter_indexes ( $h , $u ){ $la = array (); $Ha = array (); foreach ( $u
as $b ){ if ( $b [ 0 ] != " INDEX " ){ $la [] = ( $b [ 2 ] ? " \n DROP CONSTRAINT " : " \n ADD $b[0] " . ( $b [ 0 ] == " PRIMARY " ? " KEY " : " " )) . $b [ 1 ];} elseif ( $b [ 2 ]){ $Ha [] = $b [ 1 ];} elseif ( ! queries ( " CREATE INDEX " . idf_escape ( uniqid ( $h . " _ " )) . " ON " . table ( $h ) . " $b[1] " )){ return
false ;}} return (( ! $la || queries ( " ALTER TABLE " . table ( $h ) . implode ( " , " , $la ))) && ( ! $Ha || queries ( " DROP INDEX " . implode ( " , " , $Ha ))));} function
truncate_tables ( $E ){ return
queries ( " TRUNCATE " . implode ( " , " , array_map ( 'table' , $E ))); return
true ;} function
drop_views ( $X ){ return
queries ( " DROP VIEW " . implode ( " , " , array_map ( 'table' , $X )));} function
drop_tables ( $E ){ return
queries ( " DROP TABLE " . implode ( " , " , array_map ( 'table' , $E )));} function
move_tables ( $E , $X , $ea ){ foreach ( $E
as $h ){ if ( ! queries ( " ALTER TABLE " . table ( $h ) . " SET SCHEMA " . idf_escape ( $ea ))){ return
false ;}} foreach ( $X
as $h ){ if ( ! queries ( " ALTER VIEW " . table ( $h ) . " SET SCHEMA " . idf_escape ( $ea ))){ return
false ;}} return
true ;} function
trigger ( $f ){ $H = get_rows ( 'SELECT trigger_name AS "Trigger", condition_timing AS "Timing", event_manipulation AS "Event", \'FOR EACH \' || action_orientation AS "Type", action_statement AS "Statement" FROM information_schema.triggers WHERE event_object_table = ' . q ( $_GET [ " trigger " ]) . ' AND trigger_name = ' . q ( $f )); return
reset ( $H );} function
triggers ( $h ){ $c = array (); foreach ( get_rows ( " SELECT * FROM information_schema.triggers WHERE event_object_table = " . q ( $h )) as $a ){ $c [ $a [ " trigger_name " ]] = array ( $a [ " condition_timing " ], $a [ " event_manipulation " ]);} return $c ;} function
trigger_options (){ return
array ( " Timing " => array ( " BEFORE " , " AFTER " ), " Type " => array ( " FOR EACH ROW " , " FOR EACH STATEMENT " ),);} function
begin (){ return
queries ( " BEGIN " );} function
insert_into ( $h , $r ){ return
queries ( " INSERT INTO " . table ( $h ) . ( $r ? " ( " . implode ( " , " , array_keys ( $r )) . " ) \n VALUES ( " . implode ( " , " , $r ) . " ) " : " DEFAULT VALUES " ));} function
insert_update ( $h , $r , $Qa ){ global $g ; $qa = array (); $s = array (); foreach ( $r
as $d => $b ){ $qa [] = " $d = $b " ; if ( isset ( $Qa [ idf_unescape ( $d )])){ $s [] = " $d = $b " ;}} return ( $s && queries ( " UPDATE " . table ( $h ) . " SET " . implode ( " , " , $qa ) . " WHERE " . implode ( " AND " , $s )) && $g -> affected_rows ) || queries ( " INSERT INTO " . table ( $h ) . " ( " . implode ( " , " , array_keys ( $r )) . " ) VALUES ( " . implode ( " , " , $r ) . " ) " );} function
last_id (){ return
0 ;} function
explain ( $g , $j ){ return $g -> query ( " EXPLAIN $j " );} function
types (){ return
get_vals ( " SELECT typname
FROM pg_type
WHERE typnamespace = ( SELECT oid FROM pg_namespace WHERE nspname = current_schema ())
AND typtype IN ( 'b' , 'd' , 'e' )
AND typelem = 0 " );}function
schemas (){ return
get_vals ( " SELECT nspname FROM pg_namespace " );} function
get_schema (){ global $g ; return $g -> result ( " SELECT current_schema() " );} function
set_schema ( $Ka ){ global $g , $R , $La ; $c = $g -> query ( " SET search_path TO " . idf_escape ( $Ka )); foreach ( types () as $z ){ if ( ! isset ( $R [ $z ])){ $R [ $z ] = 0 ; $La [ lang ( 11 )][] = $z ;}} return $c ;} function
use_sql ( $ia ){ return " \ connect " . idf_escape ( $ia );} function
show_variables (){ return
get_key_vals ( " SHOW ALL " );} function
show_status (){} function
support ( $rb ){ return
ereg ( '^(comment|view|scheme|sequence|trigger|type|variables|drop_col)$' , $rb );} $v = " pgsql " ; $R = array (); $La = array (); foreach ( array ( lang ( 12 ) => array ( " smallint " => 5 , " integer " => 10 , " bigint " => 19 , " boolean " => 1 , " numeric " => 0 , " real " => 7 , " double precision " => 16 , " money " => 20 ), lang ( 13 ) => array ( " date " => 13 , " time " => 17 , " timestamp " => 20 , " interval " => 0 ), lang ( 14 ) => array ( " character " => 0 , " character varying " => 0 , " text " => 0 , " tsquery " => 0 , " tsvector " => 0 , " uuid " => 0 , " xml " => 0 ), lang ( 15 ) => array ( " bit " => 0 , " bit varying " => 0 , " bytea " => 0 ), lang ( 16 ) => array ( " cidr " => 43 , " inet " => 43 , " macaddr " => 17 , " txid_snapshot " => 0 ), lang ( 17 ) => array ( " box " => 0 , " circle " => 0 , " line " => 0 , " lseg " => 0 , " path " => 0 , " point " => 0 , " polygon " => 0 ),) as $d => $b ){ $R += $b ; $La [ $d ] = array_keys ( $b );} $ob = array (); $gc = array ( " = " , " < " , " > " , " <= " , " >= " , " != " , " ~ " , " !~ " , " LIKE " , " LIKE %% " , " IN " , " IS NULL " , " NOT LIKE " , " NOT IN " , " IS NOT NULL " , " " ); $da = array ( " char_length " , " lower " , " round " , " to_hex " , " to_timestamp " , " upper " ); $lb = array ( " avg " , " count " , " count distinct " , " max " , " min " , " sum " ); $Nb = array ( array ( " char " => " md5 " , " date|time " => " now " ,), array ( " int|numeric|real|money " => " +/- " , " date|time " => " + interval/- interval " , " char|text " => " || " ,));} $na [ " oracle " ] = " Oracle " ; if ( isset ( $_GET [ " oracle " ])){ $oc = array ( " OCI8 " , " PDO_OCI " ); define ( " DRIVER " , " oracle " ); if ( extension_loaded ( " oci8 " )){ class
Min_DB { var $extension = " oci8 " , $_link , $_result , $server_info , $affected_rows , $error ; function
_error ( $mf , $n ){ if ( ini_bool ( " html_errors " )){ $n = html_entity_decode ( strip_tags ( $n ));} $n = ereg_replace ( '^[^:]*: ' , '' , $n ); $this -> error = $n ;} function
connect ( $F , $P , $T ){ $this -> _link =@ oci_new_connect ( $P , $T , $F , " AL32UTF8 " ); if ( $this -> _link ){ $this -> server_info = oci_server_version ( $this -> _link ); return
true ;} $n = oci_error (); $this -> error = $n [ " message " ]; return
false ;} function
quote ( $I ){ return " ' " . str_replace ( " ' " , " '' " , $I ) . " ' " ;} function
select_db ( $ia ){ return
true ;} function
query ( $j , $db = false ){ $i = oci_parse ( $this -> _link , $j ); if ( ! $i ){ $n = oci_error ( $this -> _link ); $this -> error = $n [ " message " ]; return
false ;} set_error_handler ( array ( $this , '_error' )); $c =@ oci_execute ( $i ); restore_error_handler (); if ( $c ){ if ( oci_num_fields ( $i )){ return
new
Min_Result ( $i );} $this -> affected_rows = oci_num_rows ( $i );} return $c ;} function
multi_query ( $j ){ return $this -> _result = $this -> query ( $j );} function
store_result (){ return $this -> _result ;} function
next_result (){ return
false ;} function
result ( $j , $e = 1 ){ $i = $this -> query ( $j ); if ( ! is_object ( $i ) ||! oci_fetch ( $i -> _result )){ return
false ;} return
oci_result ( $i -> _result , $e );}} class
Min_Result { var $_result , $_offset = 1 , $num_rows ; function
Min_Result ( $i ){ $this -> _result = $i ;} function
_convert ( $a ){ foreach (( array ) $a
as $d => $b ){ if ( is_a ( $b , 'OCI-Lob' )){ $a [ $d ] = $b -> load ();}} return $a ;} function
fetch_assoc (){ return $this -> _convert ( oci_fetch_assoc ( $this -> _result ));} function
fetch_row (){ return $this -> _convert ( oci_fetch_row ( $this -> _result ));} function
fetch_field (){ $C = $this -> _offset ++ ; $c = new
stdClass ; $c -> name = oci_field_name ( $this -> _result , $C ); $c -> orgname = $c -> name ; $c -> type = oci_field_type ( $this -> _result , $C ); $c -> charsetnr = ( ereg ( " raw|blob|bfile " , $c -> type ) ? 63 : 0 ); return $c ;} function
__destruct (){ oci_free_statement ( $this -> _result );}}} elseif ( extension_loaded ( " pdo_oci " )){ class
Min_DB
extends
Min_PDO { var $extension = " PDO_OCI " ; function
connect ( $F , $P , $T ){ $this -> dsn ( " oci:dbname=// $F ;charset=AL32UTF8 " , $P , $T ); return
true ;} function
select_db ( $ia ){ return
true ;}}} function
idf_escape ( $N ){ return '"' . str_replace ( '"' , '""' , $N ) . '"' ;} function
table ( $N ){ return
idf_escape ( $N );} function
connect (){ global $o ; $g = new
Min_DB ; $ya = $o -> credentials (); if ( $g -> connect ( $ya [ 0 ], $ya [ 1 ], $ya [ 2 ])){ return $g ;} return $g -> error ;} function
get_databases (){ return
get_vals ( " SELECT tablespace_name FROM user_tablespaces " );} function
limit ( $j , $s , $O , $L = 0 , $Wa = " " ){ return " $j $s " . ( isset ( $O ) ? ( $s ? " AND " : $Wa . " WHERE " ) . ( $L ? " rownum > $L AND " : " " ) . " rownum <= " . ( $O + $L ) : " " );} function
limit1 ( $j , $s ){ return " $j $s " ;} function
db_collation ( $t , $Z ){ global $g ; return $g -> result ( " SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET' " );} function
engines (){ return
array ();} function
logged_user (){ global $g ; return $g -> result ( " SELECT USER FROM DUAL " );} function
tables_list (){ return
get_key_vals ( " SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = " . q ( DB ) . "
UNION SELECT view_name , 'view' FROM user_views " );}function
count_tables ( $_ ){ return
array ();} function
table_status ( $f = " " ){ $c = array (); $Ve = q ( $f ); foreach ( get_rows ( 'SELECT table_name "Name", \'table\' "Engine" FROM all_tables WHERE tablespace_name = ' . q ( DB ) . ( $f != " " ? " AND table_name = $Ve " : " " ) . "
UNION SELECT view_name , 'view' FROM user_views " .( $f != " " ? " WHERE view_name = $Ve " : " " ))as $a ) { if( $f != " " ) { return $a ;} $c[$a["Name"] ]= $a ;}return $c ;}function
is_view ( $D ){ return $D [ " Engine " ] == " view " ;} function
fk_support ( $D ){ return
true ;} function
fields ( $h ){ $c = array (); foreach ( get_rows ( " SELECT * FROM all_tab_columns WHERE table_name = " . q ( $h ) . " ORDER BY column_id " ) as $a ){ $z = $a [ " DATA_TYPE " ]; $W = " $a[DATA_PRECISION] , $a[DATA_SCALE] " ; if ( $W == " , " ){ $W = $a [ " DATA_LENGTH " ];} $c [ $a [ " COLUMN_NAME " ]] = array ( " field " => $a [ " COLUMN_NAME " ], " full_type " => $z . ( $W ? " ( $W ) " : " " ), " type " => strtolower ( $z ), " length " => $W , " default " => $a [ " DATA_DEFAULT " ], " null " => ( $a [ " NULLABLE " ] == " Y " ), " privileges " => array ( " insert " => 1 , " select " => 1 , " update " => 1 ),);} return $c ;} function
indexes ( $h , $G = null ){ return
array ();} function
view ( $f ){ $H = get_rows ( 'SELECT text "select" FROM user_views WHERE view_name = ' . q ( $f )); return
reset ( $H );} function
collations (){ return
array ();} function
information_schema ( $t ){ return
false ;} function
error (){ global $g ; return
h ( $g -> error );} function
exact_value ( $b ){ return
q ( $b );} function
explain ( $g , $j ){ $g -> query ( " EXPLAIN PLAN FOR $j " ); return $g -> query ( " SELECT * FROM plan_table " );} function
alter_table ( $h , $f , $p , $Oa , $_a , $yb , $U , $Sa , $vb ){ $u = $Ha = array (); foreach ( $p
as $e ){ $b = $e [ 1 ]; if ( $b && $e [ 0 ] != " " && idf_escape ( $e [ 0 ]) != $b [ 0 ]){ queries ( " ALTER TABLE " . table ( $h ) . " RENAME COLUMN " . idf_escape ( $e [ 0 ]) . " TO $b[0] " );} if ( $b ){ $u [] = ( $h != " " ? ( $e [ 0 ] != " " ? " MODIFY ( " : " ADD ( " ) : " " ) . implode ( $b ) . ( $h != " " ? " ) " : " " );} else { $Ha [] = idf_escape ( $e [ 0 ]);}} if ( $h == " " ){ return
queries ( " CREATE TABLE " . table ( $f ) . " ( \n " . implode ( " , \n " , $u ) . " \n ) " );} return ( ! $u || queries ( " ALTER TABLE " . table ( $h ) . " \n " . implode ( " \n " , $u ))) && ( ! $Ha || queries ( " ALTER TABLE " . table ( $h ) . " DROP ( " . implode ( " , " , $Ha ) . " ) " )) && ( $h == $f || queries ( " ALTER TABLE " . table ( $h ) . " RENAME TO " . table ( $f )));} function
foreign_keys ( $h ){ return
array ();} function
truncate_tables ( $E ){ return
apply_queries ( " TRUNCATE TABLE " , $E );} function
drop_views ( $X ){ return
apply_queries ( " DROP VIEW " , $X );} function
drop_tables ( $E ){ return
apply_queries ( " DROP TABLE " , $E );} function
begin (){ return
true ;} function
insert_into ( $h , $r ){ return
queries ( " INSERT INTO " . table ( $h ) . " ( " . implode ( " , " , array_keys ( $r )) . " ) \n VALUES ( " . implode ( " , " , $r ) . " ) " );} function
last_id (){ return
0 ;} function
schemas (){ return
array ();} function
get_schema (){ return " " ;} function
set_schema ( $Ed ){ return
true ;} function
show_variables (){ return
get_key_vals ( 'SELECT name, display_value FROM v$parameter' );} function
show_status (){ $H = get_rows ( 'SELECT * FROM v$instance' ); return
reset ( $H );} function
support ( $rb ){ return
ereg ( " view|drop_col|variables|status " , $rb );} $v = " oracle " ; $R = array (); $La = array (); foreach ( array ( lang ( 12 ) => array ( " number " => 38 , " binary_float " => 12 , " binary_double " => 21 ), lang ( 13 ) => array ( " date " => 10 , " timestamp " => 29 , " interval year " => 12 , " interval day " => 28 ), lang ( 14 ) => array ( " char " => 2000 , " varchar2 " => 4000 , " nchar " => 2000 , " nvarchar2 " => 4000 , " clob " => 4294967295 , " nclob " => 4294967295 ), lang ( 15 ) => array ( " raw " => 2000 , " long raw " => 2147483648 , " blob " => 4294967295 , " bfile " => 4294967296 ),) as $d => $b ){ $R += $b ; $La [ $d ] = array_keys ( $b );} $ob = array (); $gc = array ( " = " , " < " , " > " , " <= " , " >= " , " != " , " LIKE " , " LIKE %% " , " IN " , " IS NULL " , " NOT LIKE " , " NOT REGEXP " , " NOT IN " , " IS NOT NULL " , " " ); $da = array ( " length " , " lower " , " round " , " upper " ); $lb = array ( " avg " , " count " , " count distinct " , " max " , " min " , " sum " ); $Nb = array ( array ( " date " => " current_date " , " timestamp " => " current_timestamp " ,), array ( " number|float|double " => " +/- " , " date|timestamp " => " + interval/- interval " , " char|clob " => " || " ,));} $na [ " mssql " ] = " MS SQL " ; if ( isset ( $_GET [ " mssql " ])){ $oc = array ( " SQLSRV " , " MSSQL " ); define ( " DRIVER " , " mssql " ); if ( extension_loaded ( " sqlsrv " )){ class
Min_DB { var $extension = " sqlsrv " , $_link , $_result , $server_info , $affected_rows , $error ; function
_get_error (){ $this -> error = " " ; foreach ( sqlsrv_errors () as $n ){ $this -> error .= " $n[message] \n " ;} $this -> error = rtrim ( $this -> error );} function
connect ( $F , $P , $T ){ $this -> _link =@ sqlsrv_connect ( $F , array ( " UID " => $P , " PWD " => $T )); if ( $this -> _link ){ $rf = sqlsrv_server_info ( $this -> _link ); $this -> server_info = $rf [ 'SQLServerVersion' ];} else { $this -> _get_error ();} return ( bool ) $this -> _link ;} function
quote ( $I ){ return " ' " . str_replace ( " ' " , " '' " , $I ) . " ' " ;} function
select_db ( $ia ){ return $this -> query ( " USE $ia " );} function
query ( $j , $db = false ){ $i = sqlsrv_query ( $this -> _link , $j ); if ( ! $i ){ $this -> _get_error (); return
false ;} return $this -> store_result ( $i );} function
multi_query ( $j ){ $this -> _result = sqlsrv_query ( $this -> _link , $j ); if ( ! $this -> _result ){ $this -> _get_error (); return
false ;} return
true ;} function
store_result ( $i = null ){ if ( ! $i ){ $i = $this -> _result ;} if ( sqlsrv_field_metadata ( $i )){ return
new
Min_Result ( $i );} $this -> affected_rows = sqlsrv_rows_affected ( $i ); return
true ;} function
next_result (){ return
sqlsrv_next_result ( $this -> _result );} function
result ( $j , $e = 0 ){ $i = $this -> query ( $j ); if ( ! is_object ( $i )){ return
false ;} $a = $i -> fetch_row (); return $a [ $e ];}} class
Min_Result { var $_result , $_offset = 0 , $_fields , $num_rows ; function
Min_Result ( $i ){ $this -> _result = $i ;} function
_convert ( $a ){ foreach (( array ) $a
as $d => $b ){ if ( is_a ( $b , 'DateTime' )){ $a [ $d ] = $b -> format ( " Y-m-d H:i:s " );}} return $a ;} function
fetch_assoc (){ return $this -> _convert ( sqlsrv_fetch_array ( $this -> _result , SQLSRV_FETCH_ASSOC , SQLSRV_SCROLL_NEXT ));} function
fetch_row (){ return $this -> _convert ( sqlsrv_fetch_array ( $this -> _result , SQLSRV_FETCH_NUMERIC , SQLSRV_SCROLL_NEXT ));} function
fetch_field (){ if ( ! $this -> _fields ){ $this -> _fields = sqlsrv_field_metadata ( $this -> _result );} $e = $this -> _fields [ $this -> _offset ++ ]; $c = new
stdClass ; $c -> name = $e [ " Name " ]; $c -> orgname = $e [ " Name " ]; $c -> type = ( $e [ " Type " ] == 1 ? 254 : 0 ); return $c ;} function
seek ( $L ){ for ( $l = 0 ; $l < $L ; $l ++ ){ sqlsrv_fetch ( $this -> _result );}} function
__destruct (){ sqlsrv_free_stmt ( $this -> _result );}}} elseif ( extension_loaded ( " mssql " )){ class
Min_DB { var $extension = " MSSQL " , $_link , $_result , $server_info , $affected_rows , $error ; function
connect ( $F , $P , $T ){ $this -> _link =@ mssql_connect ( $F , $P , $T ); if ( $this -> _link ){ $i = $this -> query ( " SELECT SERVERPROPERTY('ProductLevel'), SERVERPROPERTY('Edition') " ); $a = $i -> fetch_row (); $this -> server_info = $this -> result ( " sp_server_info 2 " , 2 ) . " [ $a[0] ] $a[1] " ;} else { $this -> error = mssql_get_last_message ();} return ( bool ) $this -> _link ;} function
quote ( $I ){ return " ' " . str_replace ( " ' " , " '' " , $I ) . " ' " ;} function
select_db ( $ia ){ return
mssql_select_db ( $ia );} function
query ( $j , $db = false ){ $i = mssql_query ( $j , $this -> _link ); if ( ! $i ){ $this -> error = mssql_get_last_message (); return
false ;} if ( $i === true ){ $this -> affected_rows = mssql_rows_affected ( $this -> _link ); return
true ;} return
new
Min_Result ( $i );} function
multi_query ( $j ){ return $this -> _result = $this -> query ( $j );} function
store_result (){ return $this -> _result ;} function
next_result (){ return
mssql_next_result ( $this -> _result );} function
result ( $j , $e = 0 ){ $i = $this -> query ( $j ); if ( ! is_object ( $i )){ return
false ;} return
mssql_result ( $i -> _result , 0 , $e );}} class
Min_Result { var $_result , $_offset = 0 , $_fields , $num_rows ; function
Min_Result ( $i ){ $this -> _result = $i ; $this -> num_rows = mssql_num_rows ( $i );} function
fetch_assoc (){ return
mssql_fetch_assoc ( $this -> _result );} function
fetch_row (){ return
mssql_fetch_row ( $this -> _result );} function
num_rows (){ return
mssql_num_rows ( $this -> _result );} function
fetch_field (){ $c = mssql_fetch_field ( $this -> _result ); $c -> orgtable = $c -> table ; $c -> orgname = $c -> name ; return $c ;} function
seek ( $L ){ mssql_data_seek ( $this -> _result , $L );} function
__destruct (){ mssql_free_result ( $this -> _result );}}} function
idf_escape ( $N ){ return " [ " . str_replace ( " ] " , " ]] " , $N ) . " ] " ;} function
table ( $N ){ return ( $_GET [ " ns " ] != " " ? idf_escape ( $_GET [ " ns " ]) . " . " : " " ) . idf_escape ( $N );} function
connect (){ global $o ; $g = new
Min_DB ; $ya = $o -> credentials (); if ( $g -> connect ( $ya [ 0 ], $ya [ 1 ], $ya [ 2 ])){ return $g ;} return $g -> error ;} function
get_databases (){ return
get_vals ( " EXEC sp_databases " );} function
limit ( $j , $s , $O , $L = 0 , $Wa = " " ){ return ( isset ( $O ) ? " TOP ( " . ( $O + $L ) . " ) " : " " ) . " $j $s " ;} function
limit1 ( $j , $s ){ return
limit ( $j , $s , 1 );} function
db_collation ( $t , $Z ){ global $g ; return $g -> result ( " SELECT collation_name FROM sys.databases WHERE name = " . q ( $t ));} function
engines (){ return
array ();} function
logged_user (){ global $g ; return $g -> result ( " SELECT SUSER_NAME() " );} function
tables_list (){ return
get_key_vals ( " SELECT name, type_desc FROM sys.all_objects WHERE schema_id = SCHEMA_ID( " . q ( get_schema ()) . " ) AND type IN ('S', 'U', 'V') ORDER BY name " );} function
count_tables ( $_ ){ global $g ; $c = array (); foreach ( $_
as $t ){ $g -> select_db ( $t ); $c [ $t ] = $g -> result ( " SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES " );} return $c ;} function
table_status ( $f = " " ){ $c = array (); foreach ( get_rows ( " SELECT name AS Name, type_desc AS Engine FROM sys.all_objects WHERE schema_id = SCHEMA_ID( " . q ( get_schema ()) . " ) AND type IN ('S', 'U', 'V') " . ( $f != " " ? " AND name = " . q ( $f ) : " " )) as $a ){ if ( $f != " " ){ return $a ;} $c [ $a [ " Name " ]] = $a ;} return $c ;} function
is_view ( $D ){ return $D [ " Engine " ] == " VIEW " ;} function
fk_support ( $D ){ return
true ;} function
fields ( $h ){ $c = array (); foreach ( get_rows ( " SELECT c.*, t.name type, d.definition [default]
FROM sys . all_columns c
JOIN sys . all_objects o ON c . object_id = o . object_id
JOIN sys . types t ON c . user_type_id = t . user_type_id
LEFT JOIN sys . default_constraints d ON c . default_object_id = d . parent_column_id
WHERE o . schema_id = SCHEMA_ID ( " .q(get_schema()). " ) AND o . type IN ( 'S' , 'U' , 'V' ) AND o . name = " .q( $h ))as $a ) { $z = $a [ " type " ]; $W = ( ereg ( " char|binary " , $z ) ? $a [ " max_length " ] : ( $z == " decimal " ? " $a[precision] , $a[scale] " : " " )); $c [ $a [ " name " ]] = array ( " field " => $a [ " name " ], " full_type " => $z . ( $W ? " ( $W ) " : " " ), " type " => $z , " length " => $W , " default " => $a [ " default " ], " null " => $a [ " is_nullable " ], " auto_increment " => $a [ " is_identity " ], " collation " => $a [ " collation_name " ], " privileges " => array ( " insert " => 1 , " select " => 1 , " update " => 1 ), " primary " => $a [ " is_identity " ],); } return $c ;}function
indexes ( $h , $G = null ){ global $g ; if ( ! is_object ( $G )){ $G = $g ;} $c = array (); foreach ( get_rows ( " SELECT i.name, key_ordinal, is_unique, is_primary_key, c.name AS column_name
FROM sys . indexes i
INNER JOIN sys . index_columns ic ON i . object_id = ic . object_id AND i . index_id = ic . index_id
INNER JOIN sys . columns c ON ic . object_id = c . object_id AND ic . column_id = c . column_id
WHERE OBJECT_NAME ( i . object_id ) = " .q( $h ), $G )as $a ) { $c [ $a [ " name " ]][ " type " ] = ( $a [ " is_primary_key " ] ? " PRIMARY " : ( $a [ " is_unique " ] ? " UNIQUE " : " INDEX " )); $c [ $a [ " name " ]][ " lengths " ] = array (); $c [ $a [ " name " ]][ " columns " ][ $a [ " key_ordinal " ]] = $a [ " column_name " ]; } return $c ;}function
view ( $f ){ global $g ; return
array ( " select " => preg_replace ( '~^(?:[^[]|\\[[^]]*])*\\s+AS\\s+~isU' , '' , $g -> result ( " SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = " . q ( $f ))));} function
collations (){ $c = array (); foreach ( get_vals ( " SELECT name FROM fn_helpcollations() " ) as $U ){ $c [ ereg_replace ( " _.* " , " " , $U )][] = $U ;} return $c ;} function
information_schema ( $t ){ return
false ;} function
error (){ global $g ; return
nl_br ( h ( preg_replace ( '~^(\\[[^]]*])+~m' , '' , $g -> error )));} function
exact_value ( $b ){ return
q ( $b );} function
create_database ( $t , $U ){ return
queries ( " CREATE DATABASE " . idf_escape ( $t ) . ( eregi ( '^[a-z0-9_]+$' , $U ) ? " COLLATE $U " : " " ));} function
drop_databases ( $_ ){ return
queries ( " DROP DATABASE " . implode ( " , " , array_map ( 'idf_escape' , $_ )));} function
rename_database ( $f , $U ){ if ( eregi ( '^[a-z0-9_]+$' , $U )){ queries ( " ALTER DATABASE " . idf_escape ( DB ) . " COLLATE $U " );} queries ( " ALTER DATABASE " . idf_escape ( DB ) . " MODIFY NAME = " . idf_escape ( $f )); return
true ;} function
auto_increment (){ return " IDENTITY " . ( $_POST [ " Auto_increment " ] != " " ? " ( " . ( + $_POST [ " Auto_increment " ]) . " ,1) " : " " ) . " PRIMARY KEY " ;} function
alter_table ( $h , $f , $p , $Oa , $_a , $yb , $U , $Sa , $vb ){ $u = array (); foreach ( $p
as $e ){ $C = idf_escape ( $e [ 0 ]); $b = $e [ 1 ]; if ( ! $b ){ $u [ " DROP " ][] = " COLUMN $C " ;} else { $b [ 1 ] = preg_replace ( " ~( COLLATE )'( \\ w+)'~ " , " \\ 1 \\ 2 " , $b [ 1 ]); if ( $e [ 0 ] == " " ){ $u [ " ADD " ][] = " \n " . implode ( " " , $b ) . ( $h == " " ? substr ( $Oa [ $b [ 0 ]], 16 + strlen ( $b [ 0 ])) : " " );} else { unset ( $b [ 6 ]); if ( $C != $b [ 0 ]){ queries ( " EXEC sp_rename " . q ( table ( $h ) . " . $C " ) . " , " . q ( idf_unescape ( $b [ 0 ])) . " , 'COLUMN' " );} $u [ " ALTER COLUMN " . implode ( " " , $b )][] = " " ;}}} if ( $h == " " ){ return
queries ( " CREATE TABLE " . table ( $f ) . " ( " . implode ( " , " ,( array ) $u [ " ADD " ]) . " \n ) " );} if ( $h != $f ){ queries ( " EXEC sp_rename " . q ( table ( $h )) . " , " . q ( $f ));} if ( $Oa ){ $u [ " " ] = $Oa ;} foreach ( $u
as $d => $b ){ if ( ! queries ( " ALTER TABLE " . idf_escape ( $f ) . " $d " . implode ( " , " , $b ))){ return
false ;}} return
true ;} function
alter_indexes ( $h , $u ){ $x = array (); $Ha = array (); foreach ( $u
as $b ){ if ( $b [ 2 ]){ if ( $b [ 0 ] == " PRIMARY " ){ $Ha [] = $b [ 1 ];} else { $x [] = " $b[1] ON " . table ( $h );}} elseif ( ! queries (( $b [ 0 ] != " PRIMARY " ? " CREATE " . ( $b [ 0 ] != " INDEX " ? " UNIQUE " : " " ) . " INDEX " . idf_escape ( uniqid ( $h . " _ " )) . " ON " . table ( $h ) : " ALTER TABLE " . table ( $h ) . " ADD PRIMARY KEY " ) . " $b[1] " )){ return
false ;}} return ( ! $x || queries ( " DROP INDEX " . implode ( " , " , $x ))) && ( ! $Ha || queries ( " ALTER TABLE " . table ( $h ) . " DROP " . implode ( " , " , $Ha )));} function
begin (){ return
queries ( " BEGIN TRANSACTION " );} function
insert_into ( $h , $r ){ return
queries ( " INSERT INTO " . table ( $h ) . ( $r ? " ( " . implode ( " , " , array_keys ( $r )) . " ) \n VALUES ( " . implode ( " , " , $r ) . " ) " : " DEFAULT VALUES " ));} function
insert_update ( $h , $r , $Qa ){ $qa = array (); $s = array (); foreach ( $r
as $d => $b ){ $qa [] = " $d = $b " ; if ( isset ( $Qa [ idf_unescape ( $d )])){ $s [] = " $d = $b " ;}} return
queries ( " MERGE " . table ( $h ) . " USING (VALUES( " . implode ( " , " , $r ) . " )) AS source (c " . implode ( " , c " , range ( 1 , count ( $r ))) . " ) ON " . implode ( " AND " , $s ) . " WHEN MATCHED THEN UPDATE SET " . implode ( " , " , $qa ) . " WHEN NOT MATCHED THEN INSERT ( " . implode ( " , " , array_keys ( $r )) . " ) VALUES ( " . implode ( " , " , $r ) . " ); " );} function
last_id (){ global $g ; return $g -> result ( " SELECT SCOPE_IDENTITY() " );} function
explain ( $g , $j ){ $g -> query ( " SET SHOWPLAN_ALL ON " ); $c = $g -> query ( $j ); $g -> query ( " SET SHOWPLAN_ALL OFF " ); return $c ;} function
foreign_keys ( $h ){ $c = array (); foreach ( get_rows ( " EXEC sp_fkeys @fktable_name = " . q ( $h )) as $a ){ $A =& $c [ $a [ " FK_NAME " ]]; $A [ " table " ] = $a [ " PKTABLE_NAME " ]; $A [ " source " ][] = $a [ " FKCOLUMN_NAME " ]; $A [ " target " ][] = $a [ " PKCOLUMN_NAME " ];} return $c ;} function
truncate_tables ( $E ){ return
apply_queries ( " TRUNCATE TABLE " , $E );} function
drop_views ( $X ){ return
queries ( " DROP VIEW " . implode ( " , " , array_map ( 'table' , $X )));} function
drop_tables ( $E ){ return
queries ( " DROP TABLE " . implode ( " , " , array_map ( 'table' , $E )));} function
move_tables ( $E , $X , $ea ){ return
apply_queries ( " ALTER SCHEMA " . idf_escape ( $ea ) . " TRANSFER " , array_merge ( $E , $X ));} function
trigger ( $f ){ $H = get_rows ( " SELECT s.name [Trigger],
CASE WHEN OBJECTPROPERTY ( s . id , 'ExecIsInsertTrigger' ) = 1 THEN 'INSERT' WHEN OBJECTPROPERTY ( s . id , 'ExecIsUpdateTrigger' ) = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY ( s . id , 'ExecIsDeleteTrigger' ) = 1 THEN 'DELETE' END [ Event ],
CASE WHEN OBJECTPROPERTY ( s . id , 'ExecIsInsteadOfTrigger' ) = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [ Timing ],
c . text
FROM sysobjects s
JOIN syscomments c ON s . id = c . id
WHERE s . xtype = 'TR' AND s . name = " .q( $f )); $c =reset( $H );if( $c ) { $c [ " Statement " ] = preg_replace ( '~^.+\\s+AS\\s+~isU' , '' , $c [ " text " ]); } return $c ;}function
triggers ( $h ){ $c = array (); foreach ( get_rows ( " SELECT sys1.name,
CASE WHEN OBJECTPROPERTY ( sys1 . id , 'ExecIsInsertTrigger' ) = 1 THEN 'INSERT' WHEN OBJECTPROPERTY ( sys1 . id , 'ExecIsUpdateTrigger' ) = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY ( sys1 . id , 'ExecIsDeleteTrigger' ) = 1 THEN 'DELETE' END [ Event ],
CASE WHEN OBJECTPROPERTY ( sys1 . id , 'ExecIsInsteadOfTrigger' ) = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [ Timing ]
FROM sysobjects sys1
JOIN sysobjects sys2 ON sys1 . parent_obj = sys2 . id
WHERE sys1 . xtype = 'TR' AND sys2 . name = " .q( $h ))as $a ) { $c [ $a [ " name " ]] = array ( $a [ " Timing " ], $a [ " Event " ]); } return $c ;}function
trigger_options (){ return
array ( " Timing " => array ( " AFTER " , " INSTEAD OF " ), " Type " => array ( " AS " ),);} function
schemas (){ return
get_vals ( " SELECT name FROM sys.schemas " );} function
get_schema (){ global $g ; if ( $_GET [ " ns " ] != " " ){ return $_GET [ " ns " ];} return $g -> result ( " SELECT SCHEMA_NAME() " );} function
set_schema ( $Ka ){ return
true ;} function
use_sql ( $ia ){ return " USE " . idf_escape ( $ia );} function
show_variables (){ return
array ();} function
show_status (){ return
array ();} function
support ( $rb ){ return
ereg ( '^(scheme|trigger|view|drop_col)$' , $rb );} $v = " mssql " ; $R = array (); $La = array (); foreach ( array ( lang ( 12 ) => array ( " tinyint " => 3 , " smallint " => 5 , " int " => 10 , " bigint " => 20 , " bit " => 1 , " decimal " => 0 , " real " => 12 , " float " => 53 , " smallmoney " => 10 , " money " => 20 ), lang ( 13 ) => array ( " date " => 10 , " smalldatetime " => 19 , " datetime " => 19 , " datetime2 " => 19 , " time " => 8 , " datetimeoffset " => 10 ), lang ( 14 ) => array ( " char " => 8000 , " varchar " => 8000 , " text " => 2147483647 , " nchar " => 4000 , " nvarchar " => 4000 , " ntext " => 1073741823 ), lang ( 15 ) => array ( " binary " => 8000 , " varbinary " => 8000 , " image " => 2147483647 ),) as $d => $b ){ $R += $b ; $La [ $d ] = array_keys ( $b );} $ob = array (); $gc = array ( " = " , " < " , " > " , " <= " , " >= " , " != " , " LIKE " , " LIKE %% " , " IN " , " IS NULL " , " NOT LIKE " , " NOT IN " , " IS NOT NULL " , " " ); $da = array ( " len " , " lower " , " round " , " upper " ); $lb = array ( " avg " , " count " , " count distinct " , " max " , " min " , " sum " ); $Nb = array ( array ( " date|time " => " getdate " ,), array ( " int|decimal|real|float|money|datetime " => " +/- " , " char|text " => " + " ,));} $na = array ( " server " => " MySQL " ) + $na ; if ( ! defined ( " DRIVER " )){ $oc = array ( " MySQLi " , " MySQL " , " PDO_MySQL " ); define ( " DRIVER " , " server " ); if ( extension_loaded ( " mysqli " )){ class
Min_DB
extends
MySQLi { var $extension = " MySQLi " ; function
Min_DB (){ parent :: init ();} function
connect ( $F , $P , $T ){ mysqli_report ( MYSQLI_REPORT_OFF ); list ( $tf , $Lc ) = explode ( " : " , $F , 2 ); $c =@ $this -> real_connect (( $F != " " ? $tf : ini_get ( " mysqli.default_host " )),( " $F $P " != " " ? $P : ini_get ( " mysqli.default_user " )),( " $F $P $T " != " " ? $T : ini_get ( " mysqli.default_pw " )), null ,( is_numeric ( $Lc ) ? $Lc : ini_get ( " mysqli.default_port " )),( ! is_numeric ( $Lc ) ? $Lc : null )); if ( $c ){ if ( method_exists ( $this , 'set_charset' )){ $this -> set_charset ( " utf8 " );} else { $this -> query ( " SET NAMES utf8 " );}} return $c ;} function
result ( $j , $e = 0 ){ $i = $this -> query ( $j ); if ( ! $i ){ return
false ;} $a = $i -> fetch_array (); return $a [ $e ];} function
quote ( $I ){ return " ' " . $this -> escape_string ( $I ) . " ' " ;}}} elseif ( extension_loaded ( " mysql " )){ class
Min_DB { var $extension = " MySQL " , $server_info , $affected_rows , $error , $_link , $_result ; function
connect ( $F , $P , $T ){ $this -> _link =@ mysql_connect (( $F != " " ? $F : ini_get ( " mysql.default_host " )),( " $F $P " != " " ? $P : ini_get ( " mysql.default_user " )),( " $F $P $T " != " " ? $T : ini_get ( " mysql.default_password " )), true , 131072 ); if ( $this -> _link ){ $this -> server_info = mysql_get_server_info ( $this -> _link ); if ( function_exists ( 'mysql_set_charset' )){ mysql_set_charset ( " utf8 " , $this -> _link );} else { $this -> query ( " SET NAMES utf8 " );}} else { $this -> error = mysql_error ();} return ( bool ) $this -> _link ;} function
quote ( $I ){ return " ' " . mysql_real_escape_string ( $I , $this -> _link ) . " ' " ;} function
select_db ( $ia ){ return
mysql_select_db ( $ia , $this -> _link );} function
query ( $j , $db = false ){ $i =@ ( $db ? mysql_unbuffered_query ( $j , $this -> _link ) : mysql_query ( $j , $this -> _link )); if ( ! $i ){ $this -> error = mysql_error ( $this -> _link ); return
false ;} if ( $i === true ){ $this -> affected_rows = mysql_affected_rows ( $this -> _link ); $this -> info = mysql_info ( $this -> _link ); return
true ;} return
new
Min_Result ( $i );} function
multi_query ( $j ){ return $this -> _result = $this -> query ( $j );} function
store_result (){ return $this -> _result ;} function
next_result (){ return
false ;} function
result ( $j , $e = 0 ){ $i = $this -> query ( $j ); if ( ! $i ||! $i -> num_rows ){ return
false ;} return
mysql_result ( $i -> _result , 0 , $e );}} class
Min_Result { var $num_rows , $_result , $_offset = 0 ; function
Min_Result ( $i ){ $this -> _result = $i ; $this -> num_rows = mysql_num_rows ( $i );} function
fetch_assoc (){ return
mysql_fetch_assoc ( $this -> _result );} function
fetch_row (){ return
mysql_fetch_row ( $this -> _result );} function
fetch_field (){ $c = mysql_fetch_field ( $this -> _result , $this -> _offset ++ ); $c -> orgtable = $c -> table ; $c -> orgname = $c -> name ; $c -> charsetnr = ( $c -> blob ? 63 : 0 ); return $c ;} function
__destruct (){ mysql_free_result ( $this -> _result );}}} elseif ( extension_loaded ( " pdo_mysql " )){ class
Min_DB
extends
Min_PDO { var $extension = " PDO_MySQL " ; function
connect ( $F , $P , $T ){ $this -> dsn ( " mysql:host= " . str_replace ( " : " , " ;unix_socket= " , preg_replace ( '~:(\\d)~' , ';port=\\1' , $F )), $P , $T ); $this -> query ( " SET NAMES utf8 " ); return
true ;} function
select_db ( $ia ){ return $this -> query ( " USE " . idf_escape ( $ia ));} function
query ( $j , $db = false ){ $this -> setAttribute ( 1000 , ! $db ); return
parent :: query ( $j , $db );}}} function
idf_escape ( $N ){ return " ` " . str_replace ( " ` " , " `` " , $N ) . " ` " ;} function
table ( $N ){ return
idf_escape ( $N );} function
connect (){ global $o ; $g = new
Min_DB ; $ya = $o -> credentials (); if ( $g -> connect ( $ya [ 0 ], $ya [ 1 ], $ya [ 2 ])){ $g -> query ( " SET sql_quote_show_create = 1 " ); return $g ;} return $g -> error ;} function
get_databases ( $jf = true ){ global $g ; $c =& get_session ( " dbs " ); if ( ! isset ( $c )){ if ( $jf ){ restart_session (); ob_flush (); flush ();} $c = get_vals ( $g -> server_info >= 5 ? " SELECT SCHEMA_NAME FROM information_schema.SCHEMATA " : " SHOW DATABASES " );} return $c ;} function
limit ( $j , $s , $O , $L = 0 , $Wa = " " ){ return " $j $s " . ( isset ( $O ) ? $Wa . " LIMIT $O " . ( $L ? " OFFSET $L " : " " ) : " " );} function
limit1 ( $j , $s ){ return
limit ( $j , $s , 1 );} function
db_collation ( $t , $Z ){ global $g ; $c = null ; $la = $g -> result ( " SHOW CREATE DATABASE " . idf_escape ( $t ), 1 ); if ( preg_match ( '~ COLLATE ([^ ]+)~' , $la , $k )){ $c = $k [ 1 ];} elseif ( preg_match ( '~ CHARACTER SET ([^ ]+)~' , $la , $k )){ $c = $Z [ $k [ 1 ]][ - 1 ];} return $c ;} function
engines (){ $c = array (); foreach ( get_rows ( " SHOW ENGINES " ) as $a ){ if ( ereg ( " YES|DEFAULT " , $a [ " Support " ])){ $c [] = $a [ " Engine " ];}} return $c ;} function
logged_user (){ global $g ; return $g -> result ( " SELECT USER() " );} function
tables_list (){ global $g ; return
get_key_vals ( " SHOW " . ( $g -> server_info >= 5 ? " FULL " : " " ) . " TABLES " );} function
count_tables ( $_ ){ $c = array (); foreach ( $_
as $t ){ $c [ $t ] = count ( get_vals ( " SHOW TABLES IN " . idf_escape ( $t )));} return $c ;} function
table_status ( $f = " " ){ $c = array (); foreach ( get_rows ( " SHOW TABLE STATUS " . ( $f != " " ? " LIKE " . q ( addcslashes ( $f , " %_ " )) : " " )) as $a ){ if ( $a [ " Engine " ] == " InnoDB " ){ $a [ " Comment " ] = preg_replace ( '~(?:(.+); )?InnoDB free: .*~' , '\\1' , $a [ " Comment " ]);} if ( ! isset ( $a [ " Rows " ])){ $a [ " Comment " ] = " " ;} if ( $f != " " ){ return $a ;} $c [ $a [ " Name " ]] = $a ;} return $c ;} function
is_view ( $D ){ return ! isset ( $D [ " Rows " ]);} function
fk_support ( $D ){ return ( $D [ " Engine " ] == " InnoDB " );} function
fields ( $h ){ $c = array (); foreach ( get_rows ( " SHOW FULL COLUMNS FROM " . table ( $h )) as $a ){ preg_match ( '~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~' , $a [ " Type " ], $k ); $c [ $a [ " Field " ]] = array ( " field " => $a [ " Field " ], " full_type " => $a [ " Type " ], " type " => $k [ 1 ], " length " => $k [ 2 ], " unsigned " => ltrim ( $k [ 3 ] . $k [ 4 ]), " default " => ( $a [ " Default " ] != " " || ereg ( " char " , $k [ 1 ]) ? $a [ " Default " ] : null ), " null " => ( $a [ " Null " ] == " YES " ), " auto_increment " => ( $a [ " Extra " ] == " auto_increment " ), " on_update " => ( eregi ( '^on update (.+)' , $a [ " Extra " ], $k ) ? $k [ 1 ] : " " ), " collation " => $a [ " Collation " ], " privileges " => array_flip ( explode ( " , " , $a [ " Privileges " ])), " comment " => $a [ " Comment " ], " primary " => ( $a [ " Key " ] == " PRI " ),);} return $c ;} function
indexes ( $h , $G = null ){ global $g ; if ( ! is_object ( $G )){ $G = $g ;} $c = array (); foreach ( get_rows ( " SHOW INDEX FROM " . table ( $h ), $G ) as $a ){ $c [ $a [ " Key_name " ]][ " type " ] = ( $a [ " Key_name " ] == " PRIMARY " ? " PRIMARY " : ( $a [ " Index_type " ] == " FULLTEXT " ? " FULLTEXT " : ( $a [ " Non_unique " ] ? " INDEX " : " UNIQUE " ))); $c [ $a [ " Key_name " ]][ " columns " ][] = $a [ " Column_name " ]; $c [ $a [ " Key_name " ]][ " lengths " ][] = $a [ " Sub_part " ];} return $c ;} function
foreign_keys ( $h ){ global $g , $fb ; static $ba = '`(?:[^`]|``)+`' ; $c = array (); $if = $g -> result ( " SHOW CREATE TABLE " . table ( $h ), 1 ); if ( $if ){ preg_match_all ( " ~CONSTRAINT ( $ba ) FOREIGN KEY \\ (((?: $ba ,? ?)+) \\ ) REFERENCES ( $ba )(?: \\ .( $ba ))? \\ (((?: $ba ,? ?)+) \\ )(?: ON DELETE ( " . implode ( " | " , $fb ) . " ))?(?: ON UPDATE ( " . implode ( " | " , $fb ) . " ))?~ " , $if , $oa , PREG_SET_ORDER ); foreach ( $oa
as $k ){ preg_match_all ( " ~ $ba ~ " , $k [ 2 ], $Ga ); preg_match_all ( " ~ $ba ~ " , $k [ 5 ], $ea ); $c [ idf_unescape ( $k [ 1 ])] = array ( " db " => idf_unescape ( $k [ 4 ] != " " ? $k [ 3 ] : $k [ 4 ]), " table " => idf_unescape ( $k [ 4 ] != " " ? $k [ 4 ] : $k [ 3 ]), " source " => array_map ( 'idf_unescape' , $Ga [ 0 ]), " target " => array_map ( 'idf_unescape' , $ea [ 0 ]), " on_delete " => $k [ 6 ], " on_update " => $k [ 7 ],);}} return $c ;} function
view ( $f ){ global $g ; return
array ( " select " => preg_replace ( '~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU' , '' , $g -> result ( " SHOW CREATE VIEW " . table ( $f ), 1 )));} function
collations (){ $c = array (); foreach ( get_rows ( " SHOW COLLATION " ) as $a ){ if ( $a [ " Default " ]){ $c [ $a [ " Charset " ]][ - 1 ] = $a [ " Collation " ];} else { $c [ $a [ " Charset " ]][] = $a [ " Collation " ];}} ksort ( $c ); foreach ( $c
as $d => $b ){ asort ( $c [ $d ]);} return $c ;} function
information_schema ( $t ){ global $g ; return ( $g -> server_info >= 5 && $t == " information_schema " );} function
error (){ global $g ; return
h ( preg_replace ( '~^You have an error.*syntax to use~U' , " Syntax error " , $g -> error ));} function
exact_value ( $b ){ return
q ( $b ) . " COLLATE utf8_bin " ;} function
create_database ( $t , $U ){ set_session ( " dbs " , null ); return
queries ( " CREATE DATABASE " . idf_escape ( $t ) . ( $U ? " COLLATE " . q ( $U ) : " " ));} function
drop_databases ( $_ ){ set_session ( " dbs " , null ); return
apply_queries ( " DROP DATABASE " , $_ , 'idf_escape' );} function
rename_database ( $f , $U ){ if ( create_database ( $f , $U )){ $dc = array (); foreach ( tables_list () as $h => $z ){ $dc [] = table ( $h ) . " TO " . idf_escape ( $f ) . " . " . table ( $h );} if ( ! $dc || queries ( " RENAME TABLE " . implode ( " , " , $dc ))){ queries ( " DROP DATABASE " . idf_escape ( DB )); return
true ;}} return
false ;} function
auto_increment (){ $Dd = " PRIMARY KEY " ; if ( $_GET [ " create " ] != " " && $_POST [ " auto_increment_col " ]){ foreach ( indexes ( $_GET [ " create " ]) as $x ){ if ( in_array ( $_POST [ " fields " ][ $_POST [ " auto_increment_col " ]][ " orig " ], $x [ " columns " ], true )){ $Dd = " " ; break ;} if ( $x [ " type " ] == " PRIMARY " ){ $Dd = " UNIQUE " ;}}} return " AUTO_INCREMENT $Dd " ;} function
alter_table ( $h , $f , $p , $Oa , $_a , $yb , $U , $Sa , $vb ){ $u = array (); foreach ( $p
as $e ){ $u [] = ( $e [ 1 ] ? ( $h != " " ? ( $e [ 0 ] != " " ? " CHANGE " . idf_escape ( $e [ 0 ]) : " ADD " ) : " " ) . " " . implode ( $e [ 1 ]) . ( $h != " " ? " $e[2] " : " " ) : " DROP " . idf_escape ( $e [ 0 ]));} $u = array_merge ( $u , $Oa ); $fc = " COMMENT= " . q ( $_a ) . ( $yb ? " ENGINE= " . q ( $yb ) : " " ) . ( $U ? " COLLATE " . q ( $U ) : " " ) . ( $Sa != " " ? " AUTO_INCREMENT= $Sa " : " " ) . $vb ; if ( $h == " " ){ return
queries ( " CREATE TABLE " . table ( $f ) . " ( \n " . implode ( " , \n " , $u ) . " \n ) $fc " );} if ( $h != $f ){ $u [] = " RENAME TO " . table ( $f );} $u [] = $fc ; return
queries ( " ALTER TABLE " . table ( $h ) . " \n " . implode ( " , \n " , $u ));} function
alter_indexes ( $h , $u ){ foreach ( $u
as $d => $b ){ $u [ $d ] = ( $b [ 2 ] ? " \n DROP INDEX " : " \n ADD $b[0] " . ( $b [ 0 ] == " PRIMARY " ? " KEY " : " " )) . $b [ 1 ];} return
queries ( " ALTER TABLE " . table ( $h ) . implode ( " , " , $u ));} function
truncate_tables ( $E ){ return
apply_queries ( " TRUNCATE TABLE " , $E );} function
drop_views ( $X ){ return
queries ( " DROP VIEW " . implode ( " , " , array_map ( 'table' , $X )));} function
drop_tables ( $E ){ return
queries ( " DROP TABLE " . implode ( " , " , array_map ( 'table' , $E )));} function
move_tables ( $E , $X , $ea ){ $dc = array (); foreach ( array_merge ( $E , $X ) as $h ){ $dc [] = table ( $h ) . " TO " . idf_escape ( $ea ) . " . " . table ( $h );} return
queries ( " RENAME TABLE " . implode ( " , " , $dc ));} function
copy_tables ( $E , $X , $ea ){ foreach ( $E
as $h ){ $f = ( $ea == DB ? table ( " copy_ $h " ) : idf_escape ( $ea ) . " . " . table ( $h )); if ( ! queries ( " DROP TABLE IF EXISTS $f " ) ||! queries ( " CREATE TABLE $f LIKE " . table ( $h )) ||! queries ( " INSERT INTO $f SELECT * FROM " . table ( $h ))){ return
false ;}} foreach ( $X
as $h ){ $f = ( $ea == DB ? table ( " copy_ $h " ) : idf_escape ( $ea ) . " . " . table ( $h )); $cc = view ( $h ); if ( ! queries ( " DROP VIEW IF EXISTS $f " ) ||! queries ( " CREATE VIEW $f AS $cc[select] " )){ return
false ;}} return
true ;} function
trigger ( $f ){ $H = get_rows ( " SHOW TRIGGERS WHERE `Trigger` = " . q ( $f )); return
reset ( $H );} function
triggers ( $h ){ $c = array (); foreach ( get_rows ( " SHOW TRIGGERS LIKE " . q ( addcslashes ( $h , " %_ " ))) as $a ){ $c [ $a [ " Trigger " ]] = array ( $a [ " Timing " ], $a [ " Event " ]);} return $c ;} function
trigger_options (){ return
array ( " Timing " => array ( " BEFORE " , " AFTER " ), " Type " => array ( " FOR EACH ROW " ),);} function
routine ( $f , $z ){ global $g , $Gb , $jc , $R ; $kf = array ( " bool " , " boolean " , " integer " , " double precision " , " real " , " dec " , " numeric " , " fixed " , " national char " , " national varchar " ); $Ce = " (( " . implode ( " | " , array_merge ( array_keys ( $R ), $kf )) . " )(?: \\ s* \\ (((?:[^' \" )]*| $Gb )+) \\ ))? \\ s*(zerofill \\ s*)?(unsigned(?: \\ s+zerofill)?)?)(?: \\ s*(?:CHARSET|CHARACTER \\ s+SET) \\ s*[' \" ]?([^' \" \\ s]+)[' \" ]?)? " ; $ba = " \\ s*( " . ( $z == " FUNCTION " ? " " : implode ( " | " , $jc )) . " )? \\ s*(?:`((?:[^`]|``)*)` \\ s*| \\ b( \\ S+) \\ s+) $Ce " ; $la = $g -> result ( " SHOW CREATE $z " . idf_escape ( $f ), 2 ); preg_match ( " ~ \\ (((?: $ba\\s *,?)*) \\ ) " . ( $z == " FUNCTION " ? " \\ s*RETURNS \\ s+ $Ce " : " " ) . " \\ s*(.*)~is " , $la , $k ); $p = array (); preg_match_all ( " ~ $ba\\s *,?~is " , $k [ 1 ], $oa , PREG_SET_ORDER ); foreach ( $oa
as $Za ){ $f = str_replace ( " `` " , " ` " , $Za [ 2 ]) . $Za [ 3 ]; $p [] = array ( " field " => $f , " type " => strtolower ( $Za [ 5 ]), " length " => preg_replace_callback ( " ~ $Gb ~s " , 'normalize_enum' , $Za [ 6 ]), " unsigned " => strtolower ( preg_replace ( '~\\s+~' , ' ' , trim ( " $Za[8] $Za[7] " ))), " full_type " => $Za [ 4 ], " inout " => strtoupper ( $Za [ 1 ]), " collation " => strtolower ( $Za [ 9 ]),);} if ( $z != " FUNCTION " ){ return
array ( " fields " => $p , " definition " => $k [ 11 ]);} return
array ( " fields " => $p , " returns " => array ( " type " => $k [ 12 ], " length " => $k [ 13 ], " unsigned " => $k [ 15 ], " collation " => $k [ 16 ]), " definition " => $k [ 17 ],);} function
routines (){ return
get_rows ( " SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = " . q ( DB ));} function
begin (){ return
queries ( " BEGIN " );} function
insert_into ( $h , $r ){ return
queries ( " INSERT INTO " . table ( $h ) . " ( " . implode ( " , " , array_keys ( $r )) . " ) \n VALUES ( " . implode ( " , " , $r ) . " ) " );} function
insert_update ( $h , $r , $Qa ){ foreach ( $r
as $d => $b ){ $r [ $d ] = " $d = $b " ;} $qa = implode ( " , " , $r ); return
queries ( " INSERT INTO " . table ( $h ) . " SET $qa ON DUPLICATE KEY UPDATE $qa " );} function
last_id (){ global $g ; return $g -> result ( " SELECT LAST_INSERT_ID() " );} function
explain ( $g , $j ){ return $g -> query ( " EXPLAIN $j " );} function
types (){ return
array ();} function
schemas (){ return
array ();} function
get_schema (){ return " " ;} function
set_schema ( $Ka ){ return
true ;} function
create_sql ( $h , $Sa ){ global $g ; $c = $g -> result ( " SHOW CREATE TABLE " . table ( $h ), 1 ); if ( ! $Sa ){ $c = preg_replace ( '~ AUTO_INCREMENT=\\d+~' , '' , $c );} return $c ;} function
truncate_sql ( $h ){ return " TRUNCATE " . table ( $h );} function
use_sql ( $ia ){ return " USE " . idf_escape ( $ia );} function
trigger_sql ( $h , $V ){ $c = " " ; foreach ( get_rows ( " SHOW TRIGGERS LIKE " . q ( addcslashes ( $h , " %_ " )), null , " -- " ) as $a ){ $c .= " \n " . ( $V == 'CREATE+ALTER' ? " DROP TRIGGER IF EXISTS " . idf_escape ( $a [ " Trigger " ]) . " ;; \n " : " " ) . " CREATE TRIGGER " . idf_escape ( $a [ " Trigger " ]) . " $a[Timing] $a[Event] ON " . table ( $a [ " Table " ]) . " FOR EACH ROW \n $a[Statement] ;; \n " ;} return $c ;} function
show_variables (){ return
get_key_vals ( " SHOW VARIABLES " );} function
show_status (){ return
get_key_vals ( " SHOW STATUS " );} function
support ( $rb ){ global $g ; return ! ereg ( " scheme|sequence|type " . ( $g -> server_info < 5.1 ? " |event|partitioning " . ( $g -> server_info < 5 ? " |view|routine|trigger " : " " ) : " " ), $rb );} $v = " sql " ; $R = array (); $La = array (); foreach ( array ( lang ( 12 ) => array ( " tinyint " => 3 , " smallint " => 5 , " mediumint " => 8 , " int " => 10 , " bigint " => 20 , " decimal " => 66 , " float " => 12 , " double " => 21 ), lang ( 13 ) => array ( " date " => 10 , " datetime " => 19 , " timestamp " => 19 , " time " => 10 , " year " => 4 ), lang ( 14 ) => array ( " char " => 255 , " varchar " => 65535 , " tinytext " => 255 , " text " => 65535 , " mediumtext " => 16777215 , " longtext " => 4294967295 ), lang ( 15 ) => array ( " bit " => 20 , " binary " => 255 , " varbinary " => 65535 , " tinyblob " => 255 , " blob " => 65535 , " mediumblob " => 16777215 , " longblob " => 4294967295 ), lang ( 18 ) => array ( " enum " => 65535 , " set " => 64 ),) as $d => $b ){ $R += $b ; $La [ $d ] = array_keys ( $b );} $ob = array ( " unsigned " , " zerofill " , " unsigned zerofill " ); $gc = array ( " = " , " < " , " > " , " <= " , " >= " , " != " , " LIKE " , " LIKE %% " , " REGEXP " , " IN " , " IS NULL " , " NOT LIKE " , " NOT REGEXP " , " NOT IN " , " IS NOT NULL " , " " ); $da = array ( " char_length " , " date " , " from_unixtime " , " hex " , " lower " , " round " , " sec_to_time " , " time_to_sec " , " upper " ); $lb = array ( " avg " , " count " , " count distinct " , " group_concat " , " max " , " min " , " sum " ); $Nb = array ( array ( " char " => " md5/sha1/password/encrypt/uuid " , " binary " => " md5/sha1/hex " , " date|time " => " now " ,), array ( " int|float|double|decimal " => " +/- " , " date " => " + interval/- interval " , " time " => " addtime/subtime " , " char|text " => " concat " ,));} define ( " SERVER " , $_GET [ DRIVER ]); define ( " DB " , $_GET [ " db " ]); define ( " ME " , preg_replace ( '~^[^?]*/([^?]*).*~' , '\\1' , $_SERVER [ " REQUEST_URI " ]) . '?' . ( sid () ? SID . '&' : '' ) . ( SERVER !== null ? DRIVER . " = " . urlencode ( SERVER ) . '&' : '' ) . ( isset ( $_GET [ " username " ]) ? " username= " . urlencode ( $_GET [ " username " ]) . '&' : '' ) . ( DB != " " ? 'db=' . urlencode ( DB ) . '&' . ( isset ( $_GET [ " ns " ]) ? " ns= " . urlencode ( $_GET [ " ns " ]) . " & " : " " ) : '' )); $tc = " 3.2.2 " ; class
Adminer { var $operators ; function
name (){ return " Adminer " ;} function
credentials (){ return
array ( SERVER , $_GET [ " username " ], get_session ( " pwds " ));} function
permanentLogin (){ return
password_file ();} function
database (){ return
DB ;} function
headers (){ header ( " X-Frame-Options: deny " ); header ( " X-XSS-Protection: 0 " );} function
head (){ return
true ;} function
loginForm (){ global $na ; echo ' < table cellspacing = " 0 " >
< tr >< th > ',lang(19),' < td > ',adminer_html_select("driver",$na,DRIVER,"loginDriver(this);"),' < tr >< th > ',lang(20),' < td >< input name = " server " value = " ',h(SERVER),' " >
< tr >< th > ',lang(21),' < td >< input id = " username " name = " username " value = " ',h( $_GET["username"] ),' " >
< tr >< th > ' , lang ( 22 ); ?> <td><input type="password" name="password">
</ table >
< script type = " text/javascript " >
var username = document . getElementById ( 'username' );
username . focus ();
username . form [ 'driver' ] . onchange ();
</ script >
< ? php
echo " <p><input type='submit' value=' " . lang ( 23 ) . " '> \n " , checkbox ( " permanent " , 1 , $_COOKIE [ " adminer_permanent " ], lang ( 24 )) . " \n " ;} function
login ( $Vf , $T ){ return
true ;} function
tableName ( $gd ){ return
h ( $gd [ " Name " ]);} function
fieldName ( $e , $Xa = 0 ){ return '<span title="' . h ( $e [ " full_type " ]) . '">' . h ( $e [ " field " ]) . '</span>' ;} function
selectLinks ( $gd , $r = " " ){ echo '<p class="tabs">' ; $Ja = array ( " select " => lang ( 25 ), " table " => lang ( 26 )); if ( is_view ( $gd )){ $Ja [ " view " ] = lang ( 27 );} else { $Ja [ " create " ] = lang ( 28 );} if ( isset ( $r )){ $Ja [ " edit " ] = lang ( 29 );} foreach ( $Ja
as $d => $b ){ echo " <a href=' " . h ( ME ) . " $d = " . urlencode ( $gd [ " Name " ]) . ( $d == " edit " ? $r : " " ) . " ' " . bold ( isset ( $_GET [ $d ])) . " > $b </a> " ;} echo " \n " ;} function
foreignKeys ( $h ){ return
foreign_keys ( $h );} function
backwardKeys ( $h , $Zf ){ return
array ();} function
backwardKeysPrint ( $ag , $a ){} function
selectQuery ( $j ){ global $v ; return " <p><a href=' " . h ( remove_from_uri ( " page " )) . " &page=last' title=' " . lang ( 30 ) . " '>>></a> <code class='jush- $v '> " . h ( str_replace ( " \n " , " " , $j )) . " </code> <a href=' " . h ( ME ) . " sql= " . urlencode ( $j ) . " '> " . lang ( 31 ) . " </a></p> \n " ;} function
rowDescription ( $h ){ return " " ;} function
rowDescriptions ( $H , $vf ){ return $H ;} function
selectVal ( $b , $w , $e ){ $c = ( $b != " <i>NULL</i> " && ereg ( " char|binary " , $e [ " type " ]) &&! ereg ( " var " , $e [ " type " ]) ? " <code> $b </code> " : $b ); if ( ereg ( 'blob|bytea|raw|file' , $e [ " type " ]) &&! is_utf8 ( $b )){ $c = lang ( 32 , strlen ( html_entity_decode ( $b , ENT_QUOTES )));} return ( $w ? " <a href=' $w '> $c </a> " : $c );} function
editVal ( $b , $e ){ return ( ereg ( " binary " , $e [ " type " ]) ? reset ( unpack ( " H* " , $b )) : $b );} function
selectColumnsPrint ( $Q , $B ){ global $da , $lb ; print_fieldset ( " select " , lang ( 33 ), $Q ); $l = 0 ; $Oe = array ( lang ( 34 ) => $da , lang ( 35 ) => $lb ); foreach ( $Q
as $d => $b ){ $b = $_GET [ " columns " ][ $d ]; echo " <div> " . adminer_html_select ( " columns[ $l ][fun] " , array ( - 1 => " " ) + $Oe , $b [ " fun " ]), " (<select name='columns[ $l ][col]'><option> " . optionlist ( $B , $b [ " col " ], true ) . " </select>)</div> \n " ; $l ++ ;} echo " <div> " . adminer_html_select ( " columns[ $l ][fun] " , array ( - 1 => " " ) + $Oe , " " , " this.nextSibling.nextSibling.onchange(); " ), " (<select name='columns[ $l ][col]' onchange='selectAddRow(this);'><option> " . optionlist ( $B , null , true ) . " </select>)</div> \n " , " </div></fieldset> \n " ;} function
selectSearchPrint ( $s , $B , $J ){ print_fieldset ( " search " , lang ( 36 ), $s ); foreach ( $J
as $l => $x ){ if ( $x [ " type " ] == " FULLTEXT " ){ echo " (<i> " . implode ( " </i>, <i> " , array_map ( 'h' , $x [ " columns " ])) . " </i>) AGAINST " , " <input name='fulltext[ $l ]' value=' " . h ( $_GET [ " fulltext " ][ $l ]) . " '> " , checkbox ( " boolean[ $l ] " , 1 , isset ( $_GET [ " boolean " ][ $l ]), " BOOL " ), " <br> \n " ;}} $l = 0 ; foreach (( array ) $_GET [ " where " ] as $b ){ if ( " $b[col] $b[val] " != " " && in_array ( $b [ " op " ], $this -> operators )){ echo " <div><select name='where[ $l ][col]'><option value=''>( " . lang ( 37 ) . " ) " . optionlist ( $B , $b [ " col " ], true ) . " </select> " , adminer_html_select ( " where[ $l ][op] " , $this -> operators , $b [ " op " ]), " <input name='where[ $l ][val]' value=' " . h ( $b [ " val " ]) . " '></div> \n " ; $l ++ ;}} echo " <div><select name='where[ $l ][col]' onchange='selectAddRow(this);'><option value=''>( " . lang ( 37 ) . " ) " . optionlist ( $B , null , true ) . " </select> " , adminer_html_select ( " where[ $l ][op] " , $this -> operators , " = " ), " <input name='where[ $l ][val]'></div> \n " , " </div></fieldset> \n " ;} function
selectOrderPrint ( $Xa , $B , $J ){ print_fieldset ( " sort " , lang ( 38 ), $Xa ); $l = 0 ; foreach (( array ) $_GET [ " order " ] as $d => $b ){ if ( isset ( $B [ $b ])){ echo " <div><select name='order[ $l ]'><option> " . optionlist ( $B , $b , true ) . " </select> " , checkbox ( " desc[ $l ] " , 1 , isset ( $_GET [ " desc " ][ $d ]), lang ( 39 )) . " </div> \n " ; $l ++ ;}} echo " <div><select name='order[ $l ]' onchange='selectAddRow(this);'><option> " . optionlist ( $B , null , true ) . " </select> " , " <label><input type='checkbox' name='desc[ $l ]' value='1'> " . lang ( 39 ) . " </label></div> \n " ; echo " </div></fieldset> \n " ;} function
selectLimitPrint ( $O ){ echo " <fieldset><legend> " . lang ( 40 ) . " </legend><div> " ; echo " <input name='limit' size='3' value=' " . h ( $O ) . " '> " , " </div></fieldset> \n " ;} function
selectLengthPrint ( $Db ){ if ( isset ( $Db )){ echo " <fieldset><legend> " . lang ( 41 ) . " </legend><div> " , '<input name="text_length" size="3" value="' . h ( $Db ) . '">' , " </div></fieldset> \n " ;}} function
selectActionPrint (){ echo " <fieldset><legend> " . lang ( 42 ) . " </legend><div> " , " <input type='submit' value=' " . lang ( 33 ) . " '> " , " </div></fieldset> \n " ;} function
selectEmailPrint ( $bg , $B ){} function
selectColumnsProcess ( $B , $J ){ global $da , $lb ; $Q = array (); $pa = array (); foreach (( array ) $_GET [ " columns " ] as $d => $b ){ if ( $b [ " fun " ] == " count " || ( isset ( $B [ $b [ " col " ]]) && ( ! $b [ " fun " ] || in_array ( $b [ " fun " ], $da ) || in_array ( $b [ " fun " ], $lb )))){ $Q [ $d ] = apply_sql_function ( $b [ " fun " ],( isset ( $B [ $b [ " col " ]]) ? idf_escape ( $b [ " col " ]) : " * " )); if ( ! in_array ( $b [ " fun " ], $lb )){ $pa [] = $Q [ $d ];}}} return
array ( $Q , $pa );} function
selectSearchProcess ( $p , $J ){ global $v ; $c = array (); foreach ( $J
as $l => $x ){ if ( $x [ " type " ] == " FULLTEXT " && $_GET [ " fulltext " ][ $l ] != " " ){ $c [] = " MATCH ( " . implode ( " , " , array_map ( 'idf_escape' , $x [ " columns " ])) . " ) AGAINST ( " . q ( $_GET [ " fulltext " ][ $l ]) . ( isset ( $_GET [ " boolean " ][ $l ]) ? " IN BOOLEAN MODE " : " " ) . " ) " ;}} foreach (( array ) $_GET [ " where " ] as $b ){ if ( " $b[col] $b[val] " != " " && in_array ( $b [ " op " ], $this -> operators )){ $Ub = " $b[op] " ; if ( ereg ( 'IN$' , $b [ " op " ])){ $Tb = process_length ( $b [ " val " ]); $Ub .= " ( " . ( $Tb != " " ? $Tb : " NULL " ) . " ) " ;} elseif ( ! $b [ " op " ]){ $Ub .= $b [ " val " ];} elseif ( $b [ " op " ] == " LIKE %% " ){ $Ub = " LIKE " . $this -> processInput ( $p [ $b [ " col " ]], " % $b[val] % " );} elseif ( ! ereg ( 'NULL$' , $b [ " op " ])){ $Ub .= " " . $this -> processInput ( $p [ $b [ " col " ]], $b [ " val " ]);} if ( $b [ " col " ] != " " ){ $c [] = idf_escape ( $b [ " col " ]) . $Ub ;} else { $mb = array (); foreach ( $p
as $f => $e ){ if ( is_numeric ( $b [ " val " ]) ||! ereg ( 'int|float|double|decimal' , $e [ " type " ])){ $f = idf_escape ( $f ); $mb [] = ( $v == " sql " && ereg ( 'char|text|enum|set' , $e [ " type " ]) &&! ereg ( '^utf8' , $e [ " collation " ]) ? " CONVERT( $f USING utf8) " : $f );}} $c [] = ( $mb ? " ( " . implode ( " $Ub OR " , $mb ) . " $Ub ) " : " 0 " );}}} return $c ;} function
selectOrderProcess ( $p , $J ){ $c = array (); foreach (( array ) $_GET [ " order " ] as $d => $b ){ if ( isset ( $p [ $b ]) || preg_match ( '~^((COUNT\\(DISTINCT |[A-Z0-9_]+\\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\\)|COUNT\\(\\*\\))$~' , $b )){ $c [] = ( isset ( $p [ $b ]) ? idf_escape ( $b ) : $b ) . ( isset ( $_GET [ " desc " ][ $d ]) ? " DESC " : " " );}} return $c ;} function
selectLimitProcess (){ return ( isset ( $_GET [ " limit " ]) ? $_GET [ " limit " ] : " 30 " );} function
selectLengthProcess (){ return ( isset ( $_GET [ " text_length " ]) ? $_GET [ " text_length " ] : " 100 " );} function
selectEmailProcess ( $s , $vf ){ return
false ;} function
messageQuery ( $j ){ global $v ; static $Qc = 0 ; restart_session (); $S = " sql- " . ( $Qc ++ ); $eb =& get_session ( " queries " ); if ( strlen ( $j ) > 1e6 ){ $j = ereg_replace ( '[\x80-\xFF]+$' , '' , substr ( $j , 0 , 1e6 )) . " \n ... " ;} $eb [ $_GET [ " db " ]][] = $j ; return " <a href='# $S ' onclick= \" return !toggle(' $S '); \" > " . lang ( 43 ) . " </a><div id=' $S ' class='hidden'><pre><code class='jush- $v '> " . shorten_utf8 ( $j , 1000 ) . '</code></pre><p><a href="' . h ( str_replace ( " db= " . urlencode ( DB ), " db= " . urlencode ( $_GET [ " db " ]), ME ) . 'sql=&history=' . ( count ( $eb [ $_GET [ " db " ]]) - 1 )) . '">' . lang ( 31 ) . '</a></div>' ;} function
editFunctions ( $e ){ global $Nb ; $c = ( $e [ " null " ] ? " NULL/ " : " " ); foreach ( $Nb
as $d => $da ){ if ( ! $d || ( ! isset ( $_GET [ " call " ]) && ( isset ( $_GET [ " select " ]) || where ( $_GET )))){ foreach ( $da
as $ba => $b ){ if ( ! $ba || ereg ( $ba , $e [ " type " ])){ $c .= " / $b " ;}} if ( $d &&! ereg ( 'set|blob|bytea|raw|file' , $e [ " type " ])){ $c .= " /= " ;}}} return
explode ( " / " , $c );} function
editInput ( $h , $e , $Ra , $q ){ if ( $e [ " type " ] == " enum " ){ return ( isset ( $_GET [ " select " ]) ? " <label><input type='radio' $Ra value='-1' checked><i> " . lang ( 5 ) . " </i></label> " : " " ) . ( $e [ " null " ] ? " <label><input type='radio' $Ra value='' " . ( isset ( $q ) || isset ( $_GET [ " select " ]) ? " " : " checked " ) . " ><i>NULL</i></label> " : " " ) . enum_input ( " radio " , $Ra , $e , $q , 0 );} return " " ;} function
processInput ( $e , $q , $K = " " ){ if ( $K == " = " ){ return $q ;} $f = $e [ " field " ]; $c = ( $e [ " type " ] == " bit " && ereg ( '^[0-9]+$' , $q ) ? $q : q ( $q )); if ( ereg ( '^(now|getdate|uuid)$' , $K )){ $c = " $K () " ;} elseif ( ereg ( '^current_(date|timestamp)$' , $K )){ $c = $K ;} elseif ( ereg ( '^([+-]|\\|\\|)$' , $K )){ $c = idf_escape ( $f ) . " $K $c " ;} elseif ( ereg ( '^[+-] interval$' , $K )){ $c = idf_escape ( $f ) . " $K " . ( preg_match ( " ~^( \\ d+|'[0-9.: -]') [A-Z_]+ $ ~i " , $q ) ? $q : $c );} elseif ( ereg ( '^(addtime|subtime|concat)$' , $K )){ $c = " $K ( " . idf_escape ( $f ) . " , $c ) " ;} elseif ( ereg ( '^(md5|sha1|password|encrypt|hex)$' , $K )){ $c = " $K ( $c ) " ;} if ( ereg ( " binary " , $e [ " type " ])){ $c = " unhex( $c ) " ;} return $c ;} function
dumpOutput (){ $c = array ( 'text' => lang ( 44 ), 'file' => lang ( 45 )); if ( function_exists ( 'gzencode' )){ $c [ 'gz' ] = 'gzip' ;} if ( function_exists ( 'bzcompress' )){ $c [ 'bz2' ] = 'bzip2' ;} return $c ;} function
dumpFormat (){ return
array ( 'sql' => 'SQL' , 'csv' => 'CSV,' , 'csv;' => 'CSV;' , 'tsv' => 'TSV' );} function
dumpTable ( $h , $V , $bd = false ){ if ( $_POST [ " format " ] != " sql " ){ echo " \xef \xbb \xbf " ; if ( $V ){ dump_csv ( array_keys ( fields ( $h )));}} elseif ( $V ){ $la = create_sql ( $h , $_POST [ " auto_increment " ]); if ( $la ){ if ( $V == " DROP+CREATE " ){ echo " DROP " . ( $bd ? " VIEW " : " TABLE " ) . " IF EXISTS " . table ( $h ) . " ; \n " ;} if ( $bd ){ $la = preg_replace ( '~^([A-Z =]+) DEFINER=`' . preg_replace ( '~@(.*)~' , '`@`(%|\\1)' , logged_user ()) . '`~' , '\\1' , $la );} echo ( $V != " CREATE+ALTER " ? $la : ( $bd ? substr_replace ( $la , " OR REPLACE " , 6 , 0 ) : substr_replace ( $la , " IF NOT EXISTS " , 12 , 0 ))) . " ; \n \n " ;} if ( $V == " CREATE+ALTER " &&! $bd ){ $j = " SELECT COLUMN_NAME, COLUMN_DEFAULT, IS_NULLABLE, COLLATION_NAME, COLUMN_TYPE, EXTRA, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = " . q ( $h ) . " ORDER BY ORDINAL_POSITION " ; echo " DELIMITER ;;
CREATE PROCEDURE adminer_alter ( INOUT alter_command text ) BEGIN
DECLARE _column_name , _collation_name , after varchar ( 64 ) DEFAULT '' ;
DECLARE _column_type , _column_default text ;
DECLARE _is_nullable char ( 3 );
DECLARE _extra varchar ( 30 );
DECLARE _column_comment varchar ( 255 );
DECLARE done , set_after bool DEFAULT 0 ;
DECLARE add_columns text DEFAULT '";$p=array();$Jb="";foreach(get_rows($j)as$a){$za=$a["COLUMN_DEFAULT"];$a["default"]=(isset($za)?q($za):"NULL");$a["after"]=q($Jb);$a["alter"]=escape_string(idf_escape($a["COLUMN_NAME"])." $a[COLUMN_TYPE]".($a["COLLATION_NAME"]?" COLLATE $a[COLLATION_NAME]":"").(isset($za)?" DEFAULT ".($za=="CURRENT_TIMESTAMP"?$za:$a["default"]):"").($a["IS_NULLABLE"]=="YES"?"":" NOT NULL").($a["EXTRA"]?" $a[EXTRA]":"").($a["COLUMN_COMMENT"]?" COMMENT ".q($a["COLUMN_COMMENT"]):"").($Jb?" AFTER ".idf_escape($Jb):" FIRST"));echo", ADD $a[alter]";$p[]=$a;$Jb=$a["COLUMN_NAME"];}echo"' ;
DECLARE columns CURSOR FOR $j ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1 ;
SET @ alter_table = '' ;
OPEN columns ;
REPEAT
FETCH columns INTO _column_name , _column_default , _is_nullable , _collation_name , _column_type , _extra , _column_comment ;
IF NOT done THEN
SET set_after = 1 ;
CASE _column_name " ;foreach( $p
as $a ){ echo "
WHEN " .q( $a["COLUMN_NAME"] ). " THEN
SET add_columns = REPLACE ( add_columns , ', ADD $a[alter]' , '' );
IF NOT ( _column_default <=> $a [ default ]) OR _is_nullable != '$a[IS_NULLABLE]' OR _collation_name != '$a[COLLATION_NAME]' OR _column_type != " .q( $a["COLUMN_TYPE"] ). " OR _extra != '$a[EXTRA]' OR _column_comment != " .q( $a["COLUMN_COMMENT"] ). " OR after != $a [ after ] THEN
SET @ alter_table = CONCAT ( @ alter_table , ', MODIFY $a[alter]' );
END IF ; " ;}echo "
ELSE
SET @ alter_table = CONCAT ( @ alter_table , ', DROP ' , _column_name );
SET set_after = 0 ;
END CASE ;
IF set_after THEN
SET after = _column_name ;
END IF ;
END IF ;
UNTIL done END REPEAT ;
CLOSE columns ;
IF @ alter_table != '' OR add_columns != '' THEN
SET alter_command = CONCAT ( alter_command , 'ALTER TABLE ".table($h)."' , SUBSTR ( CONCAT ( add_columns , @ alter_table ), 2 ), ';\\n' );
END IF ;
END ;;
DELIMITER ;
CALL adminer_alter ( @ adminer_alter );
DROP PROCEDURE adminer_alter ;
" ;}}}function
dumpData ( $h , $V , $j ){ global $g , $v ; $Ke = ( $v == " sqlite " ? 0 : 1048576 ); if ( $V ){ if ( $_POST [ " format " ] == " sql " && $V == " TRUNCATE+INSERT " ){ echo
truncate_sql ( $h ) . " ; \n " ;} if ( $_POST [ " format " ] == " sql " ){ $p = fields ( $h );} $i = $g -> query ( $j , 1 ); if ( $i ){ $sc = " " ; $kb = " " ; while ( $a = $i -> fetch_assoc ()){ if ( $_POST [ " format " ] != " sql " ){ if ( $V == " table " ){ dump_csv ( array_keys ( $a )); $V = " INSERT " ;} dump_csv ( $a );} else { if ( ! $sc ){ $sc = " INSERT INTO " . table ( $h ) . " ( " . implode ( " , " , array_map ( 'idf_escape' , array_keys ( $a ))) . " ) VALUES " ;} foreach ( $a
as $d => $b ){ $a [ $d ] = ( isset ( $b ) ? ( ereg ( 'int|float|double|decimal' , $p [ $d ][ " type " ]) ? $b : q ( $b )) : " NULL " );} $ma = implode ( " , \t " , $a ); if ( $V == " INSERT+UPDATE " ){ $r = array (); foreach ( $a
as $d => $b ){ $r [] = idf_escape ( $d ) . " = $b " ;} echo " $sc ( $ma ) ON DUPLICATE KEY UPDATE " . implode ( " , " , $r ) . " ; \n " ;} else { $ma = ( $Ke ? " \n " : " " ) . " ( $ma ) " ; if ( ! $kb ){ $kb = $sc . $ma ;} elseif ( strlen ( $kb ) + 2 + strlen ( $ma ) < $Ke ){ $kb .= " , $ma " ;} else { $kb .= " ; \n " ; echo $kb ; $kb = $sc . $ma ;}}}} if ( $_POST [ " format " ] == " sql " && $V != " INSERT+UPDATE " && $kb ){ $kb .= " ; \n " ; echo $kb ;}} elseif ( $_POST [ " format " ] == " sql " ){ echo " -- " . str_replace ( " \n " , " " , $g -> error ) . " \n " ;}}} function
dumpHeaders ( $Sc , $_d = false ){ $Na = $_POST [ " output " ]; $Hb = ( $_POST [ " format " ] == " sql " ? " sql " : ( $_d ? " tar " : " csv " )); header ( " Content-Type: " . ( $Na == " bz2 " ? " application/x-bzip " : ( $Na == " gz " ? " application/x-gzip " : ( $Hb == " tar " ? " application/x-tar " : ( $Hb == " sql " || $Na != " file " ? " text/plain " : " text/csv " ) . " ; charset=utf-8 " )))); if ( $Na == " bz2 " ){ ob_start ( 'bzcompress' , 1e6 );} if ( $Na == " gz " ){ ob_start ( 'gzencode' , 1e6 );} return $Hb ;} function
homepage (){ echo '<p>' . ( $_GET [ " ns " ] == " " ? '<a href="' . h ( ME ) . 'database=">' . lang ( 46 ) . " </a> \n " : " " ); if ( support ( " scheme " )){ echo " <a href=' " . h ( ME ) . " scheme='> " . ( $_GET [ " ns " ] != " " ? lang ( 47 ) : lang ( 48 )) . " </a> \n " ;} return
true ;} function
navigation ( $Zb ){ global $tc , $g , $M , $v , $na ; echo ' < h1 >
< a href = " http://www.adminer.org/ " id = " h1 " > ',$this->name(),' </ a >
< span class = " version " > ',$tc,' </ span >
< a href = " http://www.adminer.org/#download " id = " version " > ',(version_compare($tc,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),' </ a >
</ h1 >
' ; if ( $Zb == " auth " ){ $Ba = true ; foreach (( array ) $_SESSION [ " pwds " ] as $Ib => $Uf ){ foreach ( $Uf
as $F => $Nf ){ foreach ( $Nf
as $P => $T ){ if ( isset ( $T )){ if ( $Ba ){ echo " <p onclick='eventStop(event);'> \n " ; $Ba = false ;} echo " <a href=' " . h ( auth_url ( $Ib , $F , $P )) . " '>( $na[$Ib] ) " . h ( $P . ( $F != " " ? " @ $F " : " " )) . " </a><br> \n " ;}}}}} else { $_ = get_databases (); echo ' < form action = " " method = " post " >
< p class = " logout " >
';if(DB==""||!$Zb){echo"<a href=' " .h(ME). " sql = '".bold(isset($_GET["sql"])).">".lang(43)."</a>\n";if(support("dump")){echo"<a href=' " .h(ME). " dump = " .urlencode(isset( $_GET["table"] )? $_GET["table"] : $_GET["select"] ). " ' id=' dump '".bold(isset($_GET["dump"])).">".lang(49)."</a>\n";}}echo' < input type = " submit " name = " logout " value = " ',lang(50),' " onclick = " eventStop(event); " >
< input type = " hidden " name = " token " value = " ', $M ,' " >
</ p >
</ form >
< form action = " " >
< p >
';hidden_fields_get();echo($_?adminer_html_select("db",array(""=>"(".lang(51).")")+$_,DB,"this.form.submit();"):' < input name = " db " value = " '.h(DB).' " > '),' < input type = " submit " value = " ',lang(8),' " ',($_?" class=' hidden '":""),' onclick = " eventStop(event); " >
';if($Zb!="db"&&DB!=""&&$g->select_db(DB)){if(support("scheme")){echo"<br>".adminer_html_select("ns",array(""=>"(".lang(52).")")+schemas(),$_GET["ns"],"this.form.submit();");if($_GET["ns"]!=""){set_schema($_GET["ns"]);}}if($_GET["ns"]!==""&&!$Zb){echo' < p >< a href = " '.h(ME).'create= " '.bold($_GET["create"]==="").">".lang(53)."</a>\n";$E=tables_list();if(!$E){echo"<p class=' message ' > " .lang(6). " \n " ;}else { $this->tablesPrint ( $E ); $Ja =array();foreach( $E
as $h => $z ){ $Ja [] = preg_quote ( $h , '/' );} echo " <script type='text/javascript'> \n " , " var jushLinks = { $v : [ ' " . js_escape ( ME ) . " table= \$ &', / \\ b( " . implode ( " | " , $Ja ) . " ) \\ b/g ] }; \n " ; foreach ( array ( " bac " , " bra " , " sqlite_quo " , " mssql_bra " ) as $b ){ echo " jushLinks. $b = jushLinks. $v ; \n " ;} echo " </script> \n " ;}}} echo ( isset ( $_GET [ " sql " ]) ? '<input type="hidden" name="sql" value="">' : ( isset ( $_GET [ " schema " ]) ? '<input type="hidden" name="schema" value="">' : ( isset ( $_GET [ " dump " ]) ? '<input type="hidden" name="dump" value="">' : " " ))), " </p></form> \n " ;}} function
tablesPrint ( $E ){ echo " <p id='tables'> \n " ; foreach ( $E
as $h => $z ){ echo '<a href="' . h ( ME ) . 'select=' . urlencode ( $h ) . '"' . bold ( $_GET [ " select " ] == $h ) . " > " . lang ( 54 ) . " </a> " , '<a href="' . h ( ME ) . 'table=' . urlencode ( $h ) . '"' . bold ( $_GET [ " table " ] == $h ) . " > " . $this -> tableName ( array ( " Name " => $h )) . " </a><br> \n " ;}}} $o = ( function_exists ( 'adminer_object' ) ? adminer_object () : new
Adminer ); if ( ! isset ( $o -> operators )){ $o -> operators = $gc ;} function
page_header ( $Je , $n = " " , $pc = array (), $Ie = " " ){ global $ua , $o , $g , $na ; header ( " Content-Type: text/html; charset=utf-8 " ); $o -> headers (); $He = $Je . ( $Ie != " " ? " : " . h ( $Ie ) : " " ); $Le = strip_tags ( $He . ( SERVER != " " && SERVER != " localhost " ? h ( " - " . SERVER ) : " " ) . " - " . $o -> name ()); if ( is_ajax ()){ header ( " X-AJAX-Title: " . rawurlencode ( $Le ));} else { echo ' <! DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.01//EN " >
< html lang = " ', $ua ,' " dir = " ',lang(55),' " >
< meta http - equiv = " Content-Type " content = " text/html; charset=utf-8 " >
< meta http - equiv = " Content-Script-Type " content = " text/javascript " >
< meta name = " robots " content = " noindex " >
< title > ',$Le,' </ title >
< link rel = " shortcut icon " type = " image/x-icon " href = " ',h(preg_replace( " ~ \\ ? .*~ " , " " ,ME)). " ? file = favicon . ico & amp ; version = 3.2 . 2 " ,' " id = " favicon " >
< link rel = " stylesheet " type = " text/css " href = " ',h(preg_replace( " ~ \\ ? .*~ " , " " ,ME)). " ? file = default . css & amp ; version = 3.2 . 2 " ,' " >
< script type = " text/javascript " >
var areYouSure = \ '' , lang ( 56 ), ' \ ' ;
</ script >
< script type = " text/javascript " src = " ',h(preg_replace( " ~ \\ ? .*~ " , " " ,ME)). " ? file = functions . js & amp ; version = 3.2 . 2 " ,' " ></ script >
';if($o->head()&&file_exists("adminer.css")){echo' < link rel = " stylesheet " type = " text/css " href = " adminer.css " >
';}echo'
< body class = " ',lang(55),' nojs " onclick = " return bodyClick(event, \ '',js_escape(DB),' \ ', \ '',js_escape( $_GET["ns"] ),' \ '); " onkeydown = " bodyKeydown(event); " onload = " bodyLoad( \ '',(is_object( $g )?substr( $g->server_info ,0,3): " " ),' \ ');',(isset( $_COOKIE["adminer_version"] )? " " : " verifyVersion (); " );?> " >
< script type = " text/javascript " >
document . body . className = document . body . className . replace ( / ( ^| \s ) nojs ( \s | $ ) / , '$1js$2' );
</ script >
< div id = " content " >
< ? php
} if ( isset ( $pc )){ $w = substr ( preg_replace ( '~(username|db|ns)=[^&]*&~' , '' , ME ), 0 , - 1 ); echo '<p id="breadcrumb"><a href="' . ( $w ? h ( $w ) : " . " ) . '">' . $na [ DRIVER ] . '</a> » ' ; $w = substr ( preg_replace ( '~(db|ns)=[^&]*&~' , '' , ME ), 0 , - 1 ); $F = ( SERVER != " " ? h ( SERVER ) : lang ( 20 )); if ( $pc === false ){ echo " $F\n " ;} else { echo " <a href=' " . ( $w ? h ( $w ) : " . " ) . " '> $F </a> » " ; if ( $_GET [ " ns " ] != " " || ( DB != " " && is_array ( $pc ))){ echo '<a href="' . h ( $w . " &db= " . urlencode ( DB ) . ( support ( " scheme " ) ? " &ns= " : " " )) . '">' . h ( DB ) . '</a> » ' ;} if ( is_array ( $pc )){ if ( $_GET [ " ns " ] != " " ){ echo '<a href="' . h ( substr ( ME , 0 , - 1 )) . '">' . h ( $_GET [ " ns " ]) . '</a> » ' ;} foreach ( $pc
as $d => $b ){ $rc = ( is_array ( $b ) ? $b [ 1 ] : $b ); if ( $rc != " " ){ echo '<a href="' . h ( ME . " $d = " ) . urlencode ( is_array ( $b ) ? $b [ 0 ] : $b ) . '">' . h ( $rc ) . '</a> » ' ;}}} echo " $Je\n " ;}} echo " <span id='loader'></span> \n " , " <h2> $He </h2> \n " ; restart_session (); $Me = preg_replace ( '~^[^?]*~' , '' , $_SERVER [ " REQUEST_URI " ]); $Qe = $_SESSION [ " messages " ][ $Me ]; if ( $Qe ){ echo " <div class='message'> " . implode ( " </div> \n <div class='message'> " , $Qe ) . " </div> \n " ; unset ( $_SESSION [ " messages " ][ $Me ]);} $_ =& get_session ( " dbs " ); if ( DB != " " && $_ &&! in_array ( DB , $_ , true )){ $_ = null ;} if ( $n ){ echo " <div class='error'> $n </div> \n " ;} define ( " PAGE_HEADER " , 1 );} function
page_footer ( $Zb = " " ){ global $o ; if ( ! is_ajax ()){ echo ' </ div >
';switch_lang();echo' < div id = " menu " >
';$o->navigation($Zb);echo' </ div >
' ;}} function
int32 ( $fa ){ while ( $fa >= 2147483648 ){ $fa -= 4294967296 ;} while ( $fa <=- 2147483649 ){ $fa += 4294967296 ;} return ( int ) $fa ;} function
long2str ( $y , $Hd ){ $ma = '' ; foreach ( $y
as $b ){ $ma .= pack ( 'V' , $b );} if ( $Hd ){ return
substr ( $ma , 0 , end ( $y ));} return $ma ;} function
str2long ( $ma , $Hd ){ $y = array_values ( unpack ( 'V*' , str_pad ( $ma , 4 * ceil ( strlen ( $ma ) / 4 ), " \0 " ))); if ( $Hd ){ $y [] = strlen ( $ma );} return $y ;} function
xxtea_mx ( $Ca , $xa , $Fa , $Ma ){ return
int32 ((( $Ca >> 5 & 0x7FFFFFF ) ^ $xa << 2 ) + (( $xa >> 3 & 0x1FFFFFFF ) ^ $Ca << 4 )) ^ int32 (( $Fa ^ $xa ) + ( $Ma ^ $Ca ));} function
encrypt_string ( $Fc , $d ){ if ( $Fc == " " ){ return " " ;} $d = array_values ( unpack ( " V* " , pack ( " H* " , md5 ( $d )))); $y = str2long ( $Fc , true ); $fa = count ( $y ) - 1 ; $Ca = $y [ $fa ]; $xa = $y [ 0 ]; $aa = floor ( 6 + 52 / ( $fa + 1 )); $Fa = 0 ; while ( $aa --> 0 ){ $Fa = int32 ( $Fa + 0x9E3779B9 ); $Ec = $Fa >> 2 & 3 ; for ( $wa = 0 ; $wa < $fa ; $wa ++ ){ $xa = $y [ $wa + 1 ]; $Mb = xxtea_mx ( $Ca , $xa , $Fa , $d [ $wa & 3 ^ $Ec ]); $Ca = int32 ( $y [ $wa ] + $Mb ); $y [ $wa ] = $Ca ;} $xa = $y [ 0 ]; $Mb = xxtea_mx ( $Ca , $xa , $Fa , $d [ $wa & 3 ^ $Ec ]); $Ca = int32 ( $y [ $fa ] + $Mb ); $y [ $fa ] = $Ca ;} return
long2str ( $y , false );} function
decrypt_string ( $Fc , $d ){ if ( $Fc == " " ){ return " " ;} $d = array_values ( unpack ( " V* " , pack ( " H* " , md5 ( $d )))); $y = str2long ( $Fc , false ); $fa = count ( $y ) - 1 ; $Ca = $y [ $fa ]; $xa = $y [ 0 ]; $aa = floor ( 6 + 52 / ( $fa + 1 )); $Fa = int32 ( $aa * 0x9E3779B9 ); while ( $Fa ){ $Ec = $Fa >> 2 & 3 ; for ( $wa = $fa ; $wa > 0 ; $wa -- ){ $Ca = $y [ $wa - 1 ]; $Mb = xxtea_mx ( $Ca , $xa , $Fa , $d [ $wa & 3 ^ $Ec ]); $xa = int32 ( $y [ $wa ] - $Mb ); $y [ $wa ] = $xa ;} $Ca = $y [ $fa ]; $Mb = xxtea_mx ( $Ca , $xa , $Fa , $d [ $wa & 3 ^ $Ec ]); $xa = int32 ( $y [ 0 ] - $Mb ); $y [ 0 ] = $xa ; $Fa = int32 ( $Fa - 0x9E3779B9 );} return
long2str ( $y , true );} $g = '' ; $M = $_SESSION [ " token " ]; if ( ! $_SESSION [ " token " ]){ $_SESSION [ " token " ] = rand ( 1 , 1e6 );} $_b = array (); if ( $_COOKIE [ " adminer_permanent " ]){ foreach ( explode ( " " , $_COOKIE [ " adminer_permanent " ]) as $b ){ list ( $d ) = explode ( " : " , $b ); $_b [ $d ] = $b ;}} if ( isset ( $_POST [ " server " ])){ session_regenerate_id (); $_SESSION [ " pwds " ][ $_POST [ " driver " ]][ $_POST [ " server " ]][ $_POST [ " username " ]] = $_POST [ " password " ]; if ( $_POST [ " permanent " ]){ $d = base64_encode ( $_POST [ " driver " ]) . " - " . base64_encode ( $_POST [ " server " ]) . " - " . base64_encode ( $_POST [ " username " ]); $Vc = $o -> permanentLogin (); $_b [ $d ] = " $d : " . base64_encode ( $Vc ? encrypt_string ( $_POST [ " password " ], $Vc ) : " " ); cookie ( " adminer_permanent " , implode ( " " , $_b ));} if ( count ( $_POST ) == ( $_POST [ " permanent " ] ? 5 : 4 ) || DRIVER != $_POST [ " driver " ] || SERVER != $_POST [ " server " ] || $_GET [ " username " ] !== $_POST [ " username " ]){ redirect ( auth_url ( $_POST [ " driver " ], $_POST [ " server " ], $_POST [ " username " ]));}} elseif ( $_POST [ " logout " ]){ if ( $M && $_POST [ " token " ] != $M ){ page_header ( lang ( 50 ), lang ( 57 )); page_footer ( " db " ); exit ;} else { foreach ( array ( " pwds " , " dbs " , " queries " ) as $d ){ set_session ( $d , null );} $d = base64_encode ( DRIVER ) . " - " . base64_encode ( SERVER ) . " - " . base64_encode ( $_GET [ " username " ]); if ( $_b [ $d ]){ unset ( $_b [ $d ]); cookie ( " adminer_permanent " , implode ( " " , $_b ));} redirect ( substr ( preg_replace ( '~(username|db|ns)=[^&]*&~' , '' , ME ), 0 , - 1 ), lang ( 58 ));}} elseif ( $_b &&! $_SESSION [ " pwds " ]){ session_regenerate_id (); $Vc = $o -> permanentLogin (); foreach ( $_b
as $d => $b ){ list (, $Pf ) = explode ( " : " , $b ); list ( $Ib , $F , $P ) = array_map ( 'base64_decode' , explode ( " - " , $d )); $_SESSION [ " pwds " ][ $Ib ][ $F ][ $P ] = decrypt_string ( base64_decode ( $Pf ), $Vc );}} function
auth_error ( $ze = null ){ global $g , $o , $M ; $Tc = session_name (); $n = " " ; if ( ! $_COOKIE [ $Tc ] && $_GET [ $Tc ] && ini_bool ( " session.use_only_cookies " )){ $n = lang ( 59 );} elseif ( isset ( $_GET [ " username " ])){ if (( $_COOKIE [ $Tc ] || $_GET [ $Tc ]) &&! $M ){ $n = lang ( 60 );} else { $T =& get_session ( " pwds " ); if ( isset ( $T )){ $n = h ( $ze ? $ze -> getMessage () : ( is_string ( $g ) ? $g : lang ( 61 ))); $T = null ;}}} page_header ( lang ( 23 ), $n , null ); echo " <form action='' method='post' onclick='eventStop(event);'> \n " ; $o -> loginForm (); echo " <div> " ; hidden_fields ( $_POST , array ( " driver " , " server " , " username " , " password " , " permanent " )); echo " </div> \n " , " </form> \n " ; page_footer ( " auth " );} if ( isset ( $_GET [ " username " ])){ if ( ! class_exists ( " Min_DB " )){ unset ( $_SESSION [ " pwds " ][ DRIVER ]); page_header ( lang ( 62 ), lang ( 63 , implode ( " , " , $oc )), false ); page_footer ( " auth " ); exit ;} $g = connect ();} if ( is_string ( $g ) ||! $o -> login ( $_GET [ " username " ], get_session ( " pwds " ))){ auth_error (); exit ;} $M = $_SESSION [ " token " ]; if ( isset ( $_POST [ " server " ]) && $_POST [ " token " ]){ $_POST [ " token " ] = $M ;} $n = ( $_POST ? ( $_POST [ " token " ] == $M ? " " : lang ( 57 )) : ( $_SERVER [ " REQUEST_METHOD " ] != " POST " ? " " : lang ( 64 , '"post_max_size"' ))); function
connect_error (){ global $g , $M , $n , $na ; $_ = array (); if ( DB != " " ){ page_header ( lang ( 65 ) . " : " . h ( DB ), lang ( 66 ), true );} else { if ( $_POST [ " db " ] &&! $n ){ queries_redirect ( substr ( ME , 0 , - 1 ), lang ( 67 ), drop_databases ( $_POST [ " db " ]));} page_header ( lang ( 68 ), $n , false ); echo " <p><a href=' " . h ( ME ) . " database='> " . lang ( 69 ) . " </a> \n " ; foreach ( array ( 'privileges' => lang ( 70 ), 'processlist' => lang ( 71 ), 'variables' => lang ( 72 ), 'status' => lang ( 73 ),) as $d => $b ){ if ( support ( $d )){ echo " <a href=' " . h ( ME ) . " $d ='> $b </a> \n " ;}} echo " <p> " . lang ( 74 , $na [ DRIVER ], " <b> $g->server_info </b> " , " <b> $g->extension </b> " ) . " \n " , " <p> " . lang ( 75 , " <b> " . h ( logged_user ()) . " </b> " ) . " \n " ; if ( $_GET [ " refresh " ]){ set_session ( " dbs " , null );} $_ = get_databases (); if ( $_ ){ $Ed = support ( " scheme " ); $Z = collations (); echo " <form action='' method='post'> \n " , " <table cellspacing='0' onclick='tableClick(event);'> \n " , " <thead><tr><td> <th> " . lang ( 65 ) . " <td> " . lang ( 76 ) . " <td> " . lang ( 77 ) . " </thead> \n " ; foreach ( $_
as $t ){ $Jd = h ( ME ) . " db= " . urlencode ( $t ); echo " <tr " . odd () . " ><td> " . checkbox ( " db[] " , $t , in_array ( $t ,( array ) $_POST [ " db " ])), " <th><a href=' $Jd '> " . h ( $t ) . " </a> " , " <td><a href=' $Jd " . ( $Ed ? " &ns= " : " " ) . " &database='> " . nbsp ( db_collation ( $t , $Z )) . " </a> " , " <td align='right'><a href=' $Jd &schema=' id='tables- " . h ( $t ) . " '>?</a> " , " \n " ;} echo " </table> \n " , " <p><input type='submit' name='drop' value=' " . lang ( 78 ) . " ' " . confirm ( " formChecked(this, /db/) " , 1 ) . " > \n " ; echo " <input type='hidden' name='token' value=' $M '> \n " , " <a href=' " . h ( ME ) . " refresh=1' onclick='eventStop(event);'> " . lang ( 79 ) . " </a> \n " , " </form> \n " ;}} page_footer ( " db " ); if ( $_ ){ echo " <script type='text/javascript'>ajaxSetHtml(' " . js_escape ( ME ) . " script=connect');</script> \n " ;}} if ( isset ( $_GET [ " status " ])){ $_GET [ " variables " ] = $_GET [ " status " ];} if ( ! ( DB != " " ? $g -> select_db ( DB ) : isset ( $_GET [ " sql " ]) || isset ( $_GET [ " dump " ]) || isset ( $_GET [ " database " ]) || isset ( $_GET [ " processlist " ]) || isset ( $_GET [ " privileges " ]) || isset ( $_GET [ " user " ]) || isset ( $_GET [ " variables " ]) || $_GET [ " script " ] == " connect " )){ if ( DB != " " ){ set_session ( " dbs " , null );} connect_error (); exit ;} if ( support ( " scheme " ) && DB != " " && $_GET [ " ns " ] !== " " ){ if ( ! isset ( $_GET [ " ns " ])){ redirect ( preg_replace ( '~ns=[^&]*&~' , '' , ME ) . " ns= " . get_schema ());} if ( ! set_schema ( $_GET [ " ns " ])){ page_header ( lang ( 80 ) . " : " . h ( $_GET [ " ns " ]), lang ( 81 ), true ); page_footer ( " ns " ); exit ;}} function
select ( $i , $G = null , $ye = " " ){ $Ja = array (); $J = array (); $B = array (); $xe = array (); $R = array (); odd ( '' ); for ( $l = 0 ; $a = $i -> fetch_row (); $l ++ ){ if ( ! $l ){ echo " <table cellspacing='0' class='nowrap'> \n " , " <thead><tr> " ; for ( $ra = 0 ; $ra < count ( $a ); $ra ++ ){ $e = $i -> fetch_field (); $Da = $e -> orgtable ; $Bc = $e -> orgname ; if ( $Da != " " ){ if ( ! isset ( $J [ $Da ])){ $J [ $Da ] = array (); foreach ( indexes ( $Da , $G ) as $x ){ if ( $x [ " type " ] == " PRIMARY " ){ $J [ $Da ] = array_flip ( $x [ " columns " ]); break ;}} $B [ $Da ] = $J [ $Da ];} if ( isset ( $B [ $Da ][ $Bc ])){ unset ( $B [ $Da ][ $Bc ]); $J [ $Da ][ $Bc ] = $ra ; $Ja [ $ra ] = $Da ;}} if ( $e -> charsetnr == 63 ){ $xe [ $ra ] = true ;} $R [ $ra ] = $e -> type ; $f = h ( $e -> name ); echo " <th " . ( $Da != " " || $e -> name != $Bc ? " title=' " . h (( $Da != " " ? " $Da . " : " " ) . $Bc ) . " ' " : " " ) . " > " . ( $ye ? " <a href=' $ye " . strtolower ( $f ) . " ' target='_blank' rel='noreferrer'> $f </a> " : $f );} echo " </thead> \n " ;} echo " <tr " . odd () . " > " ; foreach ( $a
as $d => $b ){ if ( ! isset ( $b )){ $b = " <i>NULL</i> " ;} else { if ( $xe [ $d ] &&! is_utf8 ( $b )){ $b = " <i> " . lang ( 32 , strlen ( $b )) . " </i> " ;} elseif ( ! strlen ( $b )){ $b = " " ;} else { $b = h ( $b ); if ( $R [ $d ] == 254 ){ $b = " <code> $b </code> " ;}} if ( isset ( $Ja [ $d ]) &&! $B [ $Ja [ $d ]]){ $w = " edit= " . urlencode ( $Ja [ $d ]); foreach ( $J [ $Ja [ $d ]] as $Pc => $ra ){ $w .= " &where " . urlencode ( " [ " . bracket_escape ( $Pc ) . " ] " ) . " = " . urlencode ( $a [ $ra ]);} $b = " <a href=' " . h ( ME . $w ) . " '> $b </a> " ;}} echo " <td> $b " ;}} echo ( $l ? " </table> " : " <p class='message'> " . lang ( 82 )) . " \n " ;} function
referencable_primary ( $Tf ){ $c = array (); foreach ( table_status () as $Ea => $h ){ if ( $Ea != $Tf && fk_support ( $h )){ foreach ( fields ( $Ea ) as $e ){ if ( $e [ " primary " ]){ if ( $c [ $Ea ]){ unset ( $c [ $Ea ]); break ;} $c [ $Ea ] = $e ;}}}} return $c ;} function
textarea ( $f , $q , $H = 10 , $mb = 80 ){ echo " <textarea name=' $f ' rows=' $H ' cols=' $mb ' class='sqlarea' spellcheck='false' wrap='off' onkeydown='return textareaKeydown(this, event);'> " ; if ( is_array ( $q )){ foreach ( $q
as $b ){ echo
h ( $b ) . " \n \n \n " ;}} else { echo
h ( $q );} echo " </textarea> " ;} function
format_time ( $Fb , $Cc ){ return " <span class='time'>( " . lang ( 83 , max ( 0 , $Cc [ 0 ] - $Fb [ 0 ] + $Cc [ 1 ] - $Fb [ 1 ])) . " )</span> " ;} function
edit_type ( $d , $e , $Z , $ha = array ()){ global $La , $R , $ob , $fb ; echo '<td><select name="' , $d , '[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);">' , optionlist (( ! $e [ " type " ] || isset ( $R [ $e [ " type " ]]) ? array () : array ( $e [ " type " ])) + $La + ( $ha ? array ( lang ( 84 ) => $ha ) : array ()), $e [ " type " ]), ' </ select >
< td >< input name = " ', $d ,'[length] " value = " ',h( $e["length"] ),' " size = " 3 " onfocus = " editingLengthFocus(this); " >< td class = " options " > ',"<select name=' $d " . " [ collation ] '".(ereg(' ( char | text | enum | set ) $ ',$e["type"])?"":" class=' hidden '").' >< option value = " " > ( '.lang(85).' ) '.optionlist($Z,$e["collation"]).' </ select > ',($ob?"<select name=' $d " . " [ unsigned ] '".(!$e["type"]||ereg(' ( int | float | double | decimal ) $ ',$e["type"])?"":" class=' hidden '").' >< option > '.optionlist($ob,$e["unsigned"]).' </ select > ':' '),($ha?"<select name=' $d " . " [ on_delete ] '".(ereg("`",$e["type"])?"":" class=' hidden '")."><option value=' ' > ( " .lang(86). " ) " .optionlist( $fb , $e["on_delete"] ). " </ select > " : " " );}function
process_length ( $W ){ global $Gb ; return ( preg_match ( " ~^ \\ s*(?: $Gb )(?: \\ s*, \\ s*(?: $Gb ))* \\ s* \$ ~ " , $W ) && preg_match_all ( " ~ $Gb ~ " , $W , $oa ) ? implode ( " , " , $oa [ 0 ]) : preg_replace ( '~[^0-9,+-]~' , '' , $W ));} function
process_type ( $e , $Dc = " COLLATE " ){ global $ob ; return " $e[type] " . ( $e [ " length " ] != " " ? " ( " . process_length ( $e [ " length " ]) . " ) " : " " ) . ( ereg ( 'int|float|double|decimal' , $e [ " type " ]) && in_array ( $e [ " unsigned " ], $ob ) ? " $e[unsigned] " : " " ) . ( ereg ( 'char|text|enum|set' , $e [ " type " ]) && $e [ " collation " ] ? " $Dc " . q ( $e [ " collation " ]) : " " );} function
process_field ( $e , $Uc ){ return
array ( idf_escape ( $e [ " field " ]), process_type ( $Uc ),( $e [ " null " ] ? " NULL " : " NOT NULL " ),( isset ( $e [ " default " ]) ? " DEFAULT " . ( $e [ " type " ] == " timestamp " && eregi ( " ^CURRENT_TIMESTAMP $ " , $e [ " default " ]) ? $e [ " default " ] : q ( $e [ " default " ])) : " " ),( $e [ " on_update " ] ? " ON UPDATE $e[on_update] " : " " ),( support ( " comment " ) && $e [ " comment " ] != " " ? " COMMENT " . q ( $e [ " comment " ]) : " " ),( $e [ " auto_increment " ] ? auto_increment () : null ),);} function
type_class ( $z ){ foreach ( array ( 'char' => 'text' , 'date' => 'time|year' , 'binary' => 'blob' , 'enum' => 'set' ,) as $d => $b ){ if ( ereg ( " $d | $b " , $z )){ return " class=' $d ' " ;}}} function
edit_fields ( $p , $Z , $z = " TABLE " , $we = 0 , $ha = array (), $Kb = false ){ global $jc ; foreach ( $p
as $e ){ if ( $e [ " comment " ] != " " ){ $Kb = true ; break ;}} echo ' < thead >< tr class = " wrap " >
';if($z=="PROCEDURE"){echo' < td >& nbsp ; ';}echo' < th > ',($z=="TABLE"?lang(87):lang(88)),' < td > ',lang(89),' < textarea id = " enum-edit " rows = " 4 " cols = " 12 " wrap = " off " style = " display: none; " onblur = " editingLengthBlur(this); " ></ textarea >
< td > ',lang(90),' < td > ',lang(91);if($z=="TABLE"){echo' < td > NULL
< td >< input type = " radio " name = " auto_increment_col " value = " " >< acronym title = " ',lang(92),' " > AI </ acronym >
< td class = " hidden " > ',lang(93),(support("comment")?"<td".($Kb?"":" class=' hidden '").">".lang(94):"");}echo' < td > ',"<input type=' image ' name=' add [ " .(support( " move_col " )?0:count( $p )). " ] ' src=' " .h(preg_replace( " ~ \\ ? .*~ " , " " ,ME)). " ? file = plus . gif & amp ; version = 3.2 . 2 ' alt=' + ' title=' " .lang(95). " '>",' < script type = " text/javascript " > row_count = ',count($p),' ; </ script >
</ thead >
< tbody onkeydown = " return editingKeydown(event); " >
' ; foreach ( $p
as $l => $e ){ $l ++ ; $zd = $e [( $_POST ? " orig " : " field " )]; $Ee = ( isset ( $_POST [ " add " ][ $l - 1 ]) || ( isset ( $e [ " field " ]) &&! $_POST [ " drop_col " ][ $l ])) && ( support ( " drop_col " ) || $zd == " " ); echo '<tr' ,( $Ee ? " " : " style='display: none;' " ), ' >
',($z=="PROCEDURE"?"<td>".adminer_html_select("fields[$l][inout]",$jc,$e["inout"]):""),' < th > ';if($Ee){echo' < input name = " fields[', $l ,'][field] " value = " ',h( $e["field"] ),' " onchange = " ',( $e["field"] != " " ||count( $p )>1? " " : " editingAddRow ( this , $we ); " ),'editingNameChange(this); " maxlength = " 64 " > ';}echo' < input type = " hidden " name = " fields[', $l ,'][orig] " value = " ',h( $zd ),' " >
';edit_type("fields[$l]",$e,$Z,$ha);if($z=="TABLE"){echo' < td > ',checkbox("fields[$l][null]",1,$e["null"]),' < td >< input type = " radio " name = " auto_increment_col " value = " ', $l ,' " ';if($e["auto_increment"]){echo' checked ';}?> onclick="var field = this.form[' fields [ ' + this.value + ' ][ field ] ']; if (!field.value) { field.value = ' id ' ; field . onchange (); } " >
< td class = " hidden " >< ? php echo
checkbox ( " fields[ $l ][has_default] " , 1 , $e [ " has_default " ]), '<input name="fields[' , $l , '][default]" value="' , h ( $e [ " default " ]), ' " onchange= " this . previousSibling . checked = true ; " >
',(support("comment")?"<td".($Kb?"":" class=' hidden '")."><input name=' fields [ $l ][ comment ] ' value=' " .h( $e["comment"] ). " ' maxlength=' 255 '>":"");}echo"<td>",(support("move_col")?"<input type=' image ' name=' add [ $l ] ' src=' " .h(preg_replace( " ~ \\ ? .*~ " , " " ,ME)). " ? file = plus . gif & amp ; version = 3.2 . 2 ' alt=' + ' title=' " .lang(95). " ' onclick=' return ! editingAddRow ( this , $we , 1 ); '> "."<input type=' image ' name=' up [ $l ] ' src=' " .h(preg_replace( " ~ \\ ? .*~ " , " " ,ME)). " ? file = up . gif & amp ; version = 3.2 . 2 ' alt=' ^ ' title=' " .lang(96). " '> "."<input type=' image ' name=' down [ $l ] ' src=' " .h(preg_replace( " ~ \\ ? .*~ " , " " ,ME)). " ? file = down . gif & amp ; version = 3.2 . 2 ' alt=' v ' title=' " .lang(97). " '> ":""),($zd==""||support("drop_col")?"<input type=' image ' name=' drop_col [ $l ] ' src=' " .h(preg_replace( " ~ \\ ? .*~ " , " " ,ME)). " ? file = cross . gif & amp ; version = 3.2 . 2 ' alt=' x ' title=' " .lang(98). " ' onclick=' return ! editingRemoveRow ( this ); ' > " : " " ), " \n " ;}return $Kb ;}function
process_fields ( & $p ){ ksort ( $p ); $L = 0 ; if ( $_POST [ " up " ]){ $xb = 0 ; foreach ( $p
as $d => $e ){ if ( key ( $_POST [ " up " ]) == $d ){ unset ( $p [ $d ]); array_splice ( $p , $xb , 0 , array ( $e )); break ;} if ( isset ( $e [ " field " ])){ $xb = $L ;} $L ++ ;}} if ( $_POST [ " down " ]){ $ta = false ; foreach ( $p
as $d => $e ){ if ( isset ( $e [ " field " ]) && $ta ){ unset ( $p [ key ( $_POST [ " down " ])]); array_splice ( $p , $L , 0 , array ( $ta )); break ;} if ( key ( $_POST [ " down " ]) == $d ){ $ta = $e ;} $L ++ ;}} $p = array_values ( $p ); if ( $_POST [ " add " ]){ array_splice ( $p , key ( $_POST [ " add " ]), 0 , array ( array ()));}} function
normalize_enum ( $k ){ return " ' " . str_replace ( " ' " , " '' " , addcslashes ( stripcslashes ( str_replace ( $k [ 0 ][ 0 ] . $k [ 0 ][ 0 ], $k [ 0 ][ 0 ], substr ( $k [ 0 ], 1 , - 1 ))), '\\' )) . " ' " ;} function
grant ( $ka , $sa , $B , $Cb ){ if ( ! $sa ){ return
true ;} if ( $sa == array ( " ALL PRIVILEGES " , " GRANT OPTION " )){ return ( $ka == " GRANT " ? queries ( " $ka ALL PRIVILEGES $Cb WITH GRANT OPTION " ) : queries ( " $ka ALL PRIVILEGES $Cb " ) && queries ( " $ka GRANT OPTION $Cb " ));} return
queries ( " $ka " . preg_replace ( '~(GRANT OPTION)\\([^)]*\\)~' , '\\1' , implode ( " $B , " , $sa ) . $B ) . $Cb );} function
drop_create ( $Ha , $la , $ga , $Se , $Jf , $Bf , $f ){ if ( $_POST [ " drop " ]){ return
query_redirect ( $Ha , $ga , $Se , true , ! $_POST [ " dropped " ]);} $hb = $f != " " && ( $_POST [ " dropped " ] || queries ( $Ha )); $_f = queries ( $la ); if ( ! queries_redirect ( $ga ,( $f != " " ? $Jf : $Bf ), $_f ) && $hb ){ redirect ( null , $Se );} return $hb ;} function
tar_file ( $ja , $rd ){ $c = pack ( " a100a8a8a8a12a12 " , $ja , 644 , 0 , 0 , decoct ( strlen ( $rd )), decoct ( time ())); $ef = 8 * 32 ; for ( $l = 0 ; $l < strlen ( $c ); $l ++ ){ $ef += ord ( $c { $l });} $c .= sprintf ( " %06o " , $ef ) . " \0 " ; return $c . str_repeat ( " \0 " , 512 - strlen ( $c )) . $rd . str_repeat ( " \0 " , 511 - ( strlen ( $rd ) + 511 ) %
512 );} session_cache_limiter ( " " ); if ( ! ini_bool ( " session.use_cookies " ) ||@ ini_set ( " session.use_cookies " , false ) !== false ){ session_write_close ();} $fb = array ( " RESTRICT " , " CASCADE " , " SET NULL " , " NO ACTION " ); $Gb = " '(?:''|[^' \\ \\ ]| \\ \\ .)*+' " ; $jc = array ( " IN " , " OUT " , " INOUT " ); if ( isset ( $_GET [ " select " ]) && ( $_POST [ " edit " ] || $_POST [ " clone " ]) &&! $_POST [ " save " ]){ $_GET [ " edit " ] = $_GET [ " select " ];} if ( isset ( $_GET [ " callf " ])){ $_GET [ " call " ] = $_GET [ " callf " ];} if ( isset ( $_GET [ " function " ])){ $_GET [ " procedure " ] = $_GET [ " function " ];} if ( isset ( $_GET [ " download " ])){ $m = $_GET [ " download " ]; header ( " Content-Type: application/octet-stream " ); header ( " Content-Disposition: attachment; filename= " . friendly_url ( " $m - " . implode ( " _ " , $_GET [ " where " ])) . " . " . friendly_url ( $_GET [ " field " ])); echo $g -> result ( " SELECT " . limit ( idf_escape ( $_GET [ " field " ]) . " FROM " . table ( $m ), " WHERE " . where ( $_GET ), 1 )); exit ;} elseif ( isset ( $_GET [ " table " ])){ $m = $_GET [ " table " ]; $p = fields ( $m ); if ( ! $p ){ $n = error ();} $D = ( $p ? table_status ( $m ) : array ()); page_header (( $p && is_view ( $D ) ? lang ( 99 ) : lang ( 100 )) . " : " . h ( $m ), $n ); $o -> selectLinks ( $D ); $_a = $D [ " Comment " ]; if ( $_a != " " ){ echo " <p> " . lang ( 94 ) . " : " . h ( $_a ) . " \n " ;} if ( $p ){ echo " <table cellspacing='0'> \n " , " <thead><tr><th> " . lang ( 101 ) . " <td> " . lang ( 89 ) . ( support ( " comment " ) ? " <td> " . lang ( 94 ) : " " ) . " </thead> \n " ; foreach ( $p
as $e ){ echo " <tr " . odd () . " ><th> " . h ( $e [ " field " ]), " <td> " . h ( $e [ " full_type " ]) . ( $e [ " null " ] ? " <i>NULL</i> " : " " ) . ( $e [ " auto_increment " ] ? " <i> " . lang ( 92 ) . " </i> " : " " ),( support ( " comment " ) ? " <td> " . nbsp ( $e [ " comment " ]) : " " ), " \n " ;} echo " </table> \n " ; if ( ! is_view ( $D )){ echo " <h3> " . lang ( 102 ) . " </h3> \n " ; $J = indexes ( $m ); if ( $J ){ echo " <table cellspacing='0'> \n " ; foreach ( $J
as $f => $x ){ ksort ( $x [ " columns " ]); $zb = array (); foreach ( $x [ " columns " ] as $d => $b ){ $zb [] = " <i> " . h ( $b ) . " </i> " . ( $x [ " lengths " ][ $d ] ? " ( " . $x [ " lengths " ][ $d ] . " ) " : " " );} echo " <tr title=' " . h ( $f ) . " '><th> $x[type] <td> " . implode ( " , " , $zb ) . " \n " ;} echo " </table> \n " ;} echo '<p><a href="' . h ( ME ) . 'indexes=' . urlencode ( $m ) . '">' . lang ( 103 ) . " </a> \n " ; if ( fk_support ( $D )){ echo " <h3> " . lang ( 84 ) . " </h3> \n " ; $ha = foreign_keys ( $m ); if ( $ha ){ echo " <table cellspacing='0'> \n " , " <thead><tr><th> " . lang ( 104 ) . " <td> " . lang ( 105 ) . " <td> " . lang ( 86 ) . " <td> " . lang ( 106 ) . ( $v != " sqlite " ? " <td> " : " " ) . " </thead> \n " ; foreach ( $ha
as $f => $A ){ $w = ( $A [ " db " ] != " " ? " <b> " . h ( $A [ " db " ]) . " </b>. " : " " ) . h ( $A [ " table " ]); echo " <tr> " , " <th><i> " . implode ( " </i>, <i> " , array_map ( 'h' , $A [ " source " ])) . " </i> " , " <td><a href=' " . h ( $A [ " db " ] != " " ? preg_replace ( '~db=[^&]*~' , " db= " . urlencode ( $A [ " db " ]), ME ) : ME ) . " table= " . urlencode ( $A [ " table " ]) . " '> $w </a> " , " (<i> " . implode ( " </i>, <i> " , array_map ( 'h' , $A [ " target " ])) . " </i>) " , " <td> $A[on_delete] \n " , " <td> $A[on_update] \n " ; if ( $v != " sqlite " ){ echo '<td><a href="' . h ( ME . 'foreign=' . urlencode ( $m ) . '&name=' . urlencode ( $f )) . '">' . lang ( 107 ) . '</a>' ;}} echo " </table> \n " ;} if ( $v != " sqlite " ){ echo '<p><a href="' . h ( ME ) . 'foreign=' . urlencode ( $m ) . '">' . lang ( 108 ) . " </a> \n " ;}} if ( support ( " trigger " )){ echo " <h3> " . lang ( 109 ) . " </h3> \n " ; $Mc = triggers ( $m ); if ( $Mc ){ echo " <table cellspacing='0'> \n " ; foreach ( $Mc
as $d => $b ){ echo " <tr valign='top'><td> $b[0] <td> $b[1] <th> " . h ( $d ) . " <td><a href=' " . h ( ME . 'trigger=' . urlencode ( $m ) . '&name=' . urlencode ( $d )) . " '> " . lang ( 107 ) . " </a> \n " ;} echo " </table> \n " ;} echo '<p><a href="' . h ( ME ) . 'trigger=' . urlencode ( $m ) . '">' . lang ( 110 ) . " </a> \n " ;}}}} elseif ( isset ( $_GET [ " schema " ])){ page_header ( lang ( 111 ), " " , array (), DB ); $sb = array (); $ve = array (); $f = " adminer_schema " ; $hf = ( $_GET [ " schema " ] ? $_GET [ " schema " ] : $_COOKIE [( $_COOKIE [ " $f - " . DB ] ? " $f - " . DB : $f )]); preg_match_all ( '~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~' , $hf , $oa , PREG_SET_ORDER ); foreach ( $oa
as $l => $k ){ $sb [ $k [ 1 ]] = array ( $k [ 2 ], $k [ 3 ]); $ve [] = " \n \t ' " . js_escape ( $k [ 1 ]) . " ': [ $k[2] , $k[3] ] " ;} $Wb = 0 ; $cf =- 1 ; $Ka = array (); $df = array (); $We = array (); foreach ( table_status () as $a ){ if ( ! isset ( $a [ " Engine " ])){ continue ;} $uc = 0 ; $Ka [ $a [ " Name " ]][ " fields " ] = array (); foreach ( fields ( $a [ " Name " ]) as $f => $e ){ $uc += 1.25 ; $e [ " pos " ] = $uc ; $Ka [ $a [ " Name " ]][ " fields " ][ $f ] = $e ;} $Ka [ $a [ " Name " ]][ " pos " ] = ( $sb [ $a [ " Name " ]] ? $sb [ $a [ " Name " ]] : array ( $Wb , 0 )); foreach ( $o -> foreignKeys ( $a [ " Name " ]) as $b ){ if ( ! $b [ " db " ]){ $Aa = $cf ; if ( $sb [ $a [ " Name " ]][ 1 ] || $sb [ $b [ " table " ]][ 1 ]){ $Aa = min ( floatval ( $sb [ $a [ " Name " ]][ 1 ]), floatval ( $sb [ $b [ " table " ]][ 1 ])) - 1 ;} else { $cf -=. 1 ;} while ( $We [( string ) $Aa ]){ $Aa -=. 0001 ;} $Ka [ $a [ " Name " ]][ " references " ][ $b [ " table " ]][( string ) $Aa ] = array ( $b [ " source " ], $b [ " target " ]); $df [ $b [ " table " ]][ $a [ " Name " ]][( string ) $Aa ] = $b [ " target " ]; $We [( string ) $Aa ] = true ;}} $Wb = max ( $Wb , $Ka [ $a [ " Name " ]][ " pos " ][ 0 ] + 2.5 + $uc );} echo '<div id="schema" style="height: ' , $Wb , ' em ; " >
< script type = " text/javascript " >
tablePos = { ',implode(",",$ve)."\n",' };
em = document . getElementById ( \ 'schema\').offsetHeight / ' , $Wb , ' ;
document . onmousemove = schemaMousemove ;
document . onmouseup = function ( ev ) {
schemaMouseup ( ev , \ '' , js_escape ( DB ), ' \ ' );
};
</ script >
' ; foreach ( $Ka
as $f => $h ){ echo " <div class='table' style='top: " . $h [ " pos " ][ 0 ] . " em; left: " . $h [ " pos " ][ 1 ] . " em;' onmousedown='schemaMousedown(this, event);'> " , '<a href="' . h ( ME ) . 'table=' . urlencode ( $f ) . '"><b>' . h ( $f ) . " </b></a><br> \n " ; foreach ( $h [ " fields " ] as $e ){ $b = '<span' . type_class ( $e [ " type " ]) . ' title="' . h ( $e [ " full_type " ] . ( $e [ " null " ] ? " NULL " : '' )) . '">' . h ( $e [ " field " ]) . '</span>' ; echo ( $e [ " primary " ] ? " <i> $b </i> " : $b ) . " <br> \n " ;} foreach (( array ) $h [ " references " ] as $Vb => $_c ){ foreach ( $_c
as $Aa => $hd ){ $wc = $Aa - $sb [ $f ][ 1 ]; $l = 0 ; foreach ( $hd [ 0 ] as $Ga ){ echo " <div class='references' title=' " . h ( $Vb ) . " ' id='refs $Aa - " . ( $l ++ ) . " ' style='left: $wc " . " em; top: " . $h [ " fields " ][ $Ga ][ " pos " ] . " em; padding-top: .5em;'><div style='border-top: 1px solid Gray; width: " . ( - $wc ) . " em;'></div></div> \n " ;}}} foreach (( array ) $df [ $f ] as $Vb => $_c ){ foreach ( $_c
as $Aa => $B ){ $wc = $Aa - $sb [ $f ][ 1 ]; $l = 0 ; foreach ( $B
as $ea ){ echo " <div class='references' title=' " . h ( $Vb ) . " ' id='refd $Aa - " . ( $l ++ ) . " ' style='left: $wc " . " em; top: " . $h [ " fields " ][ $ea ][ " pos " ] . " em; height: 1.25em; background: url( " . h ( preg_replace ( " ~ \\ ?.*~ " , " " , ME )) . " ?file=arrow.gif) no-repeat right center;&version=3.2.2'><div style='height: .5em; border-bottom: 1px solid Gray; width: " . ( - $wc ) . " em;'></div></div> \n " ;}}} echo " </div> \n " ;} foreach ( $Ka
as $f => $h ){ foreach (( array ) $h [ " references " ] as $Vb => $_c ){ foreach ( $_c
as $Aa => $hd ){ $ed = $Wb ; $ud =- 10 ; foreach ( $hd [ 0 ] as $d => $Ga ){ $Te = $h [ " pos " ][ 0 ] + $h [ " fields " ][ $Ga ][ " pos " ]; $Xe = $Ka [ $Vb ][ " pos " ][ 0 ] + $Ka [ $Vb ][ " fields " ][ $hd [ 1 ][ $d ]][ " pos " ]; $ed = min ( $ed , $Te , $Xe ); $ud = max ( $ud , $Te , $Xe );} echo " <div class='references' id='refl $Aa ' style='left: $Aa " . " em; top: $ed " . " em; padding: .5em 0;'><div style='border-right: 1px solid Gray; margin-top: 1px; height: " . ( $ud - $ed ) . " em;'></div></div> \n " ;}}} echo ' </ div >
< p >< a href = " ',h(ME. " schema = " .urlencode( $hf )),' " id = " schema-link " > ',lang(112),' </ a >
' ;} elseif ( isset ( $_GET [ " dump " ])){ $m = $_GET [ " dump " ]; if ( $_POST ){ $Ye = " " ; foreach ( array ( " output " , " format " , " db_style " , " routines " , " events " , " table_style " , " auto_increment " , " triggers " , " data_style " ) as $d ){ $Ye .= " & $d = " . urlencode ( $_POST [ $d ]);} cookie ( " adminer_export " , substr ( $Ye , 1 )); $Hb = dump_headers (( $m != " " ? $m : DB ),( DB == " " || count (( array ) $_POST [ " tables " ] + ( array ) $_POST [ " data " ]) > 1 )); $tb = ( $_POST [ " format " ] == " sql " ); if ( $tb ){ echo " -- Adminer $tc " . $na [ DRIVER ] . " dump
" .( $v != " sql " ? " " : " SET NAMES utf8 ;
SET foreign_key_checks = 0 ;
SET time_zone = " .q( $g->result ( " SELECT @@ time_zone " )). " ;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO' ;
" );} $V = $_POST["db_style"] ; $_ =array(DB);if(DB== " " ) { $_ = $_POST [ " databases " ]; if ( is_string ( $_ )){ $_ = explode ( " \n " , rtrim ( str_replace ( " \r " , " " , $_ ), " \n " )); } }foreach((array) $_
as $t ){ if ( $g -> select_db ( $t )){ if ( $tb && ereg ( 'CREATE' , $V ) && ( $la = $g -> result ( " SHOW CREATE DATABASE " . idf_escape ( $t ), 1 ))){ if ( $V == " DROP+CREATE " ){ echo " DROP DATABASE IF EXISTS " . idf_escape ( $t ) . " ; \n " ;} echo ( $V == " CREATE+ALTER " ? preg_replace ( '~^CREATE DATABASE ~' , '\\0IF NOT EXISTS ' , $la ) : $la ) . " ; \n " ;} if ( $tb ){ if ( $V ){ echo
use_sql ( $t ) . " ; \n \n " ;} if ( in_array ( " CREATE+ALTER " , array ( $V , $_POST [ " table_style " ]))){ echo " SET @adminer_alter = ''; \n \n " ;} $qb = " " ; if ( $_POST [ " routines " ]){ foreach ( array ( " FUNCTION " , " PROCEDURE " ) as $Ta ){ foreach ( get_rows ( " SHOW $Ta STATUS WHERE Db = " . q ( $t ), null , " -- " ) as $a ){ $qb .= ( $V != 'DROP+CREATE' ? " DROP $Ta IF EXISTS " . idf_escape ( $a [ " Name " ]) . " ;; \n " : " " ) . $g -> result ( " SHOW CREATE $Ta " . idf_escape ( $a [ " Name " ]), 2 ) . " ;; \n \n " ;}}} if ( $_POST [ " events " ]){ foreach ( get_rows ( " SHOW EVENTS " , null , " -- " ) as $a ){ $qb .= ( $V != 'DROP+CREATE' ? " DROP EVENT IF EXISTS " . idf_escape ( $a [ " Name " ]) . " ;; \n " : " " ) . $g -> result ( " SHOW CREATE EVENT " . idf_escape ( $a [ " Name " ]), 3 ) . " ;; \n \n " ;}} if ( $qb ){ echo " DELIMITER ;; \n \n $qb " . " DELIMITER ; \n \n " ;}} if ( $_POST [ " table_style " ] || $_POST [ " data_style " ]){ $X = array (); foreach ( table_status () as $a ){ $h = ( DB == " " || in_array ( $a [ " Name " ],( array ) $_POST [ " tables " ])); $Ze = ( DB == " " || in_array ( $a [ " Name " ],( array ) $_POST [ " data " ])); if ( $h || $Ze ){ if ( ! is_view ( $a )){ if ( $Hb == " tar " ){ ob_start ();} $o -> dumpTable ( $a [ " Name " ],( $h ? $_POST [ " table_style " ] : " " )); if ( $Ze ){ $o -> dumpData ( $a [ " Name " ], $_POST [ " data_style " ], " SELECT * FROM " . table ( $a [ " Name " ]));} if ( $tb && $_POST [ " triggers " ] && $h && ( $Mc = trigger_sql ( $a [ " Name " ], $_POST [ " table_style " ]))){ echo " \n DELIMITER ;; \n $Mc\nDELIMITER ; \n " ;} if ( $Hb == " tar " ){ echo
tar_file (( DB != " " ? " " : " $t / " ) . " $a[Name] .csv " , ob_get_clean ());} elseif ( $tb ){ echo " \n " ;}} elseif ( $tb ){ $X [] = $a [ " Name " ];}}} foreach ( $X
as $cc ){ $o -> dumpTable ( $cc , $_POST [ " table_style " ], true );} if ( $Hb == " tar " ){ echo
pack ( " x512 " );}} if ( $V == " CREATE+ALTER " && $tb ){ $j = " SELECT TABLE_NAME, ENGINE, TABLE_COLLATION, TABLE_COMMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() " ; echo " DELIMITER ;;
CREATE PROCEDURE adminer_alter ( INOUT alter_command text ) BEGIN
DECLARE _table_name , _engine , _table_collation varchar ( 64 );
DECLARE _table_comment varchar ( 64 );
DECLARE done bool DEFAULT 0 ;
DECLARE tables CURSOR FOR $j ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1 ;
OPEN tables ;
REPEAT
FETCH tables INTO _table_name , _engine , _table_collation , _table_comment ;
IF NOT done THEN
CASE _table_name " ;foreach(get_rows( $j )as $a ) { $_a =q( $a["ENGINE"] == " InnoDB " ?preg_replace('~(?:(.+); )?InnoDB free: .*~',' \\ 1', $a["TABLE_COMMENT"] ): $a["TABLE_COMMENT"] );echo "
WHEN " .q( $a["TABLE_NAME"] ). " THEN
" .(isset( $a["ENGINE"] )? " IF _engine != '$a[ENGINE]' OR _table_collation != '$a[TABLE_COLLATION]' OR _table_comment != $_a THEN
ALTER TABLE " .idf_escape( $a["TABLE_NAME"] ). " ENGINE = $a [ ENGINE ] COLLATE = $a [ TABLE_COLLATION ] COMMENT = $_a ;
END IF " : " BEGIN END " ). " ; " ;}echo "
ELSE
SET alter_command = CONCAT ( alter_command , 'DROP TABLE `' , REPLACE ( _table_name , '`' , '``' ), '`;\\n' );
END CASE ;
END IF ;
UNTIL done END REPEAT ;
CLOSE tables ;
END ;;
DELIMITER ;
CALL adminer_alter ( @ adminer_alter );
DROP PROCEDURE adminer_alter ;
" ;}if(in_array( " CREATE + ALTER " ,array( $V , $_POST["table_style"] ))&& $tb ) { echo " SELECT @ adminer_alter ; \n " ;}}}if( $tb ) { echo " -- " . $g->result ( " SELECT NOW () " ). " \n " ;}exit;}page_header(lang(113), " " ,( $_GET["export"] != " " ?array( " table " => $_GET["export"] ):array()),DB);echo'
< form action = " " method = " post " >
< table cellspacing = " 0 " >
';$Ge=array(' ',' USE ',' DROP + CREATE ',' CREATE ');$se=array(' ',' DROP + CREATE ',' CREATE ');$Vd=array(' ',' TRUNCATE + INSERT ',' INSERT ');if($v=="sql"){$Ge[]=' CREATE + ALTER ';$se[]=' CREATE + ALTER ';$Vd[]=' INSERT + UPDATE ';}parse_str($_COOKIE["adminer_export"],$a);if(!$a){$a=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");}if(!isset($a["events"])){$a["routines"]=$a["events"]=($_GET["dump"]=="");$a["auto_increment"]=$a["triggers"]=$a["table_style"];}echo"<tr><th>".lang(114)."<td>".adminer_html_select("output",$o->dumpOutput(),$a["output"],0)."\n";echo"<tr><th>".lang(115)."<td>".adminer_html_select("format",$o->dumpFormat(),$a["format"],0)."\n";echo($v=="sqlite"?"":"<tr><th>".lang(65)."<td>".adminer_html_select(' db_style ',$Ge,$a["db_style"]).(support("routine")?checkbox("routines",1,$a["routines"],lang(116)):"").(support("event")?checkbox("events",1,$a["events"],lang(117)):"")),"<tr><th>".lang(77)."<td>".adminer_html_select(' table_style ',$se,$a["table_style"]).checkbox("auto_increment",1,$a["auto_increment"],lang(92)).(support("trigger")?checkbox("triggers",1,$a["triggers"],lang(109)):""),"<tr><th>".lang(118)."<td>".adminer_html_select(' data_style ',$Vd,$a["data_style"]),' </ table >
< p >< input type = " submit " value = " ',lang(113),' " >
< table cellspacing = " 0 " >
';$kd=array();if(DB!=""){$ab=($m!=""?"":" checked");echo"<thead><tr>","<th style=' text - align : left ; '><label><input type=' checkbox ' id=' check - tables '$ab onclick=' formCheck ( this , /^ tables\\ [ / ); '>".lang(77)."</label>","<th style=' text - align : right ; '><label>".lang(118)."<input type=' checkbox ' id=' check - data '$ab onclick=' formCheck ( this , /^ data\\ [ / ); '></label>","</thead>\n";$X="";foreach(table_status()as$a){$f=$a["Name"];$zc=ereg_replace("_.*","",$f);$ab=($m==""||$m==(substr($m,-1)=="%"?"$zc%":$f));$zb="<tr><td>".checkbox("tables[]",$f,$ab,$f,"formUncheck(' check - tables ');");if(is_view($a)){$X.="$zb\n";}else{echo"$zb<td align=' right '><label>".($a["Engine"]=="InnoDB"&&$a["Rows"]?"~ ":"").$a["Rows"].checkbox("data[]",$f,$ab,"","formUncheck(' check - data ');")."</label>\n";}$kd[$zc]++;}echo$X;}else{echo"<thead><tr><th style=' text - align : left ; '><label><input type=' checkbox ' id=' check - databases '".($m==""?" checked":"")." onclick=' formCheck ( this , /^ databases\\ [ / ); ' > " .lang(65). " </ label ></ thead > \n " ; $_ =get_databases();if( $_ ) { foreach( $_
as $t ){ if ( ! information_schema ( $t )){ $zc = ereg_replace ( " _.* " , " " , $t ); echo " <tr><td> " . checkbox ( " databases[] " , $t , $m == " " || $m == " $zc % " , $t , " formUncheck('check-databases'); " ) . " </label> \n " ; $kd [ $zc ] ++ ;}}} else { echo " <tr><td><textarea name='databases' rows='10' cols='20'></textarea> " ;}} echo ' </ table >
</ form >
' ; $Ba = true ; foreach ( $kd
as $d => $b ){ if ( $d != " " && $b > 1 ){ echo ( $Ba ? " <p> " : " " ) . " <a href=' " . h ( ME ) . " dump= " . urlencode ( " $d % " ) . " '> " . h ( $d ) . " </a> " ; $Ba = false ;}}} elseif ( isset ( $_GET [ " privileges " ])){ page_header ( lang ( 70 )); $i = $g -> query ( " SELECT User, Host FROM mysql.user ORDER BY Host, User " ); if ( ! $i ){ echo ' < form action = " " >< p >
' ; hidden_fields_get (); echo
lang ( 21 ), ' : < input name = " user " >
',lang(20),' : < input name = " host " value = " localhost " >
< input type = " hidden " name = " grant " value = " " >
< input type = " submit " value = " ',lang(31),' " >
</ form >
';$i=$g->query("SELECT SUBSTRING_INDEX(CURRENT_USER, ' @ ', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, ' @ ', -1) AS Host");}echo"<table cellspacing=' 0 '>\n","<thead><tr><th> <th>".lang(21)."<th>".lang(20)."</thead>\n";while($a=$i->fetch_assoc()){echo' < tr '.odd().' >< td >< a href = " '.h(ME.'user='.urlencode( $a["User"] ).'&host='.urlencode( $a["Host"] )).' " > '.lang(119).' </ a >< td > '.h($a["User"])."<td>".h($a["Host"])."\n";}echo"</table>\n",' < p >< a href = " '.h(ME).'user= " > '.lang(120)."</a>";}elseif(isset($_GET["sql"])){if(!$n&&$_POST["export"]){dump_headers("sql");$o->dumpTable("","");$o->dumpData("","table",$_POST["query"]);exit;}restart_session();$Ff=&get_session("queries");$eb=&$Ff[DB];if(!$n&&$_POST["clear"]){$eb=array();redirect(remove_from_uri("history"));}page_header(lang(43),$n);if(!$n&&$_POST){$Pa=false;$j=$_POST["query"];if($_POST["webfile"]){$Pa=@fopen((file_exists("adminer.sql")?"adminer.sql":(file_exists("adminer.sql.gz")?"compress.zlib://adminer.sql.gz":"compress.bzip2://adminer.sql.bz2")),"rb");$j=($Pa?fread($Pa,1e6):false);}elseif($_FILES&&$_FILES["sql_file"]["error"]!=4){$j=get_file("sql_file",true);}if(is_string($j)){if(function_exists(' memory_get_usage ')){@ini_set("memory_limit",2*strlen($j)+memory_get_usage()+8e6);}if($j!=""&&strlen($j)<1e6){$aa=$j.(ereg(' ; $ ',$j)?"":";");if(!$eb||end($eb)!=$aa){$eb[]=$aa;}}$yc="(?:\\s|/\\*.*\\*/|(?:#|-- )[^\n]*\n|--\n)";if(!ini_bool("session.use_cookies")){session_write_close();}$ld=";";$L=0;$hc=true;$G=connect();if(is_object($G)&&DB!=""){$G->select_db(DB);}$Ab=0;$Zc=array();$Gf=' [ \ '`"]' . ( $v == " pgsql " ? '|\\$[^$]*\\$' : ( $v == " mssql " || $v == " sqlite " ? '|\\[' : '' )) . '|/\\*|-- |#' ; $Hf = explode ( " " , microtime ()); parse_str ( $_COOKIE [ " adminer_export " ], $Xb ); $Rd = $o -> dumpFormat (); unset ( $Rd [ " sql " ]); while ( $j != " " ){ if ( ! $L && $v == " sql " && preg_match ( " ~^ $yc *DELIMITER \\ s+(.+)~i " , $j , $k )){ $ld = $k [ 1 ]; $j = substr ( $j , strlen ( $k [ 0 ]));} else { preg_match ( '(' . preg_quote ( $ld ) . " | $Gf | \$ ) " , $j , $k , PREG_OFFSET_CAPTURE , $L ); $ta = $k [ 0 ][ 0 ]; $L = $k [ 0 ][ 1 ] + strlen ( $ta ); if ( ! $ta && $Pa &&! feof ( $Pa )){ $j .= fread ( $Pa , 1e5 );} else { if ( ! $ta && rtrim ( $j ) == " " ){ break ;} if ( $ta && $ta != $ld ){ while ( preg_match ( '(' . ( $ta == '/*' ? '\\*/' : ( $ta == '[' ? ']' : ( ereg ( '^-- |^#' , $ta ) ? " \n " : preg_quote ( $ta ) . " | \\ \\ . " ))) . '|$)s' , $j , $k , PREG_OFFSET_CAPTURE , $L )){ $ma = $k [ 0 ][ 0 ]; $L = $k [ 0 ][ 1 ] + strlen ( $ma ); if ( ! $ma && $Pa &&! feof ( $Pa )){ $j .= fread ( $Pa , 1e6 );} elseif ( $ma [ 0 ] != " \\ " ){ break ;}}} else { $hc = false ; $aa = substr ( $j , 0 , $k [ 0 ][ 1 ]); $Ab ++ ; $zb = " <pre id='sql- $Ab '><code class='jush- $v '> " . shorten_utf8 ( trim ( $aa ), 1000 ) . " </code></pre> \n " ; if ( ! $_POST [ " only_errors " ]){ echo $zb ; ob_flush (); flush ();} $Fb = explode ( " " , microtime ()); if ( $g -> multi_query ( $aa )){ if ( is_object ( $G ) && preg_match ( " ~^ $yc *USE \\ b~isU " , $aa )){ $G -> query ( $aa );} do { $i = $g -> store_result (); $Cc = explode ( " " , microtime ()); $Qd = format_time ( $Fb , $Cc ) . ( strlen ( $aa ) < 1000 ? " <a href=' " . h ( ME ) . " sql= " . urlencode ( trim ( $aa )) . " '> " . lang ( 31 ) . " </a> " : " " ); if ( ! is_object ( $i )){ if ( preg_match ( " ~^ $yc *(CREATE|DROP|ALTER) $yc +(DATABASE|SCHEMA) \\ b~isU " , $aa )){ restart_session (); set_session ( " dbs " , null ); session_write_close ();} if ( ! $_POST [ " only_errors " ]){ echo " <p class='message' title=' " . h ( $g -> info ) . " '> " . lang ( 121 , $g -> affected_rows ) . " $Qd\n " ;}} else { select ( $i , $G ); if ( ! $_POST [ " only_errors " ]){ echo " <form action='' method='post'> \n " , " <p> " . ( $i -> num_rows ? lang ( 122 , $i -> num_rows ) : " " ) . $Qd ; $S = " export- $Ab " ; $Od = " , <a href='# $S ' onclick= \" return !toggle(' $S '); \" > " . lang ( 113 ) . " </a><span id=' $S ' class='hidden'>: " . adminer_html_select ( " output " , $o -> dumpOutput (), $Xb [ " output " ]) . " " . adminer_html_select ( " format " , $Rd , $Xb [ " format " ]) . " <input type='hidden' name='query' value=' " . h ( $aa ) . " '> " . " <input type='submit' name='export' value=' " . lang ( 113 ) . " ' onclick='eventStop(event);'><input type='hidden' name='token' value=' $M '></span> " ; if ( $G && preg_match ( " ~^( $yc | \\ ()*SELECT \\ b~isU " , $aa ) && ( $Cf = explain ( $G , $aa ))){ $S = " explain- $Ab " ; echo " , <a href='# $S ' onclick= \" return !toggle(' $S '); \" >EXPLAIN</a> $Od\n " , " <div id=' $S ' class='hidden'> \n " ; select ( $Cf , $G ,( $v == " sql " ? " http://dev.mysql.com/doc/refman/ " . substr ( $g -> server_info , 0 , 3 ) . " /en/explain-output.html# " : " " )); echo " </div> \n " ;} else { echo " $Od\n " ;} echo " </form> \n " ;}} $Fb = $Cc ;} while ( $g -> next_result ());} elseif ( $g -> error ){ echo ( $_POS
< form action = " " method = " post " enctype = " multipart/form-data " >
< p > ';$aa=$_GET["sql"];if($_POST){$aa=$_POST["query"];}elseif($_GET["history"]=="all"){$aa=$eb;}elseif($_GET["history"]!=""){$aa=$eb[$_GET["history"]];}textarea("query",$aa,20);echo($_POST?"":"<script type=' text / javascript '>document.getElementsByTagName(' textarea ')[0].focus();</script>\n"),"<p>".(ini_bool("file_uploads")?lang(126).' : < input type = " file " name = " sql_file " '.($_FILES&&$_FILES["sql_file"]["error"]!=4?' ':' onchange = " this.form[ \ 'only_errors \ '].checked = true; " ').' > ( & lt ; '.ini_get("upload_max_filesize").' B ) ':lang(127)),' < p >
< input type = " submit " value = " ',lang(128),' " title = " Ctrl+Enter " >
< input type = " hidden " name = " token " value = " ', $M ,' " >
' , checkbox ( " error_stops " , 1 , $_POST [ " error_stops " ], lang ( 129 )) . " \n " , checkbox ( " only_errors " , 1 , $_POST [ " only_errors " ], lang ( 130 )) . " \n " ; print_fieldset ( " webfile " , lang ( 131 ), $_POST [ " webfile " ]); $td = array (); foreach ( array ( " gz " => " zlib " , " bz2 " => " bz2 " ) as $d => $b ){ if ( extension_loaded ( $b )){ $td [] = " . $d " ;}} echo
lang ( 132 , " <code>adminer.sql " . ( $td ? " [ " . implode ( " | " , $td ) . " ] " : " " ) . " </code> " ), ' <input type="submit" name="webfile" value="' . lang ( 133 ) . '">' , " </div></fieldset> \n " ; if ( $eb ){ print_fieldset ( " history " , lang ( 134 ), $_GET [ " history " ] != " " ); foreach ( $eb
as $d => $b ){ echo '<a href="' . h ( ME . " sql=&history= $d " ) . '">' . lang ( 31 ) . " </a> <code class='jush- $v '> " . shorten_utf8 ( ltrim ( str_replace ( " \n " , " " , str_replace ( " \r " , " " , preg_replace ( '~^(#|-- ).*~m' , '' , $b )))), 80 , " </code> " ) . " <br> \n " ;} echo " <input type='submit' name='clear' value=' " . lang ( 135 ) . " '> \n " , " <a href=' " . h ( ME . " sql=&history=all " ) . " '> " . lang ( 136 ) . " </a> \n " , " </div></fieldset> \n " ;} echo '
</ form >
' ;} elseif ( isset ( $_GET [ " edit " ])){ $m = $_GET [ " edit " ]; $s = ( isset ( $_GET [ " select " ]) ? ( count ( $_POST [ " check " ]) == 1 ? where_check ( $_POST [ " check " ][ 0 ]) : " " ) : where ( $_GET )); $qa = ( isset ( $_GET [ " select " ]) ? $_POST [ " edit " ] : $s ); $p = fields ( $m ); foreach ( $p
as $f => $e ){ if ( ! isset ( $e [ " privileges " ][ $qa ? " update " : " insert " ]) || $o -> fieldName ( $e ) == " " ){ unset ( $p [ $f ]);}} if ( $_POST &&! $n &&! isset ( $_GET [ " select " ])){ $ga = $_POST [ " referer " ]; if ( $_POST [ " insert " ]){ $ga = ( $qa ? null : $_SERVER [ " REQUEST_URI " ]);} elseif ( ! ereg ( '^.+&select=.+$' , $ga )){ $ga = ME . " select= " . urlencode ( $m );} if ( isset ( $_POST [ " delete " ])){ query_redirect ( " DELETE " . limit1 ( " FROM " . table ( $m ), " WHERE $s " ), $ga , lang ( 137 ));} else { $r = array (); foreach ( $p
as $f => $e ){ $b = process_input ( $e ); if ( $b !== false && $b !== null ){ $r [ idf_escape ( $f )] = ( $qa ? " \n " . idf_escape ( $f ) . " = $b " : $b );}} if ( $qa ){ if ( ! $r ){ redirect ( $ga );} query_redirect ( " UPDATE " . limit1 ( table ( $m ) . " SET " . implode ( " , " , $r ), " \n WHERE $s " ), $ga , lang ( 138 ));} else { $i = insert_into ( $m , $r ); $ue = ( $i ? last_id () : 0 ); queries_redirect ( $ga , lang ( 139 ,( $ue ? " $ue " : " " )), $i );}}} $Ea = $o -> tableName ( table_status ( $m )); page_header (( $qa ? lang ( 31 ) : lang ( 140 )), $n , array ( " select " => array ( $m , $Ea )), $Ea ); $a = null ; if ( $_POST [ " save " ]){ $a = ( array ) $_POST [ " fields " ];} elseif ( $s ){ $Q = array (); foreach ( $p
as $f => $e ){ if ( isset ( $e [ " privileges " ][ " select " ])){ $Q [] = ( $_POST [ " clone " ] && $e [ " auto_increment " ] ? " '' AS " : ( ereg ( " enum|set " , $e [ " type " ]) ? " 1* " . idf_escape ( $f ) . " AS " : " " )) . idf_escape ( $f );}} $a = array (); if ( $Q ){ $H = get_rows ( " SELECT " . limit ( implode ( " , " , $Q ) . " FROM " . table ( $m ), " WHERE $s " ,( isset ( $_GET [ " select " ]) ? 2 : 1 ))); $a = ( isset ( $_GET [ " select " ]) && count ( $H ) != 1 ? null : reset ( $H ));}} echo '
< form action = " " method = " post " enctype = " multipart/form-data " id = " form " >
';if($p){echo"<table cellspacing=' 0 ' onkeydown=' return editingKeydown ( event ); ' > \n " ;foreach( $p
as $f => $e ){ echo " <tr><th> " . $o -> fieldName ( $e ); $za = $_GET [ " set " ][ bracket_escape ( $f )]; $q = ( isset ( $a ) ? ( $a [ $f ] != " " && ereg ( " enum|set " , $e [ " type " ]) ? + $a [ $f ] : $a [ $f ]) : ( ! $qa && $e [ " auto_increment " ] ? " " : ( isset ( $_GET [ " select " ]) ? false : ( isset ( $za ) ? $za : $e [ " default " ])))); if ( ! $_POST [ " save " ] && is_string ( $q )){ $q = $o -> editVal ( $q , $e );} $K = ( $_POST [ " save " ] ? ( string ) $_POST [ " function " ][ $f ] : ( $s && $e [ " on_update " ] == " CURRENT_TIMESTAMP " ? " now " : ( $q === false ? null : ( isset ( $q ) ? '' : 'NULL' )))); if ( $e [ " type " ] == " timestamp " && $q == " CURRENT_TIMESTAMP " ){ $q = " " ; $K = " now " ;} input ( $e , $q , $K ); echo " \n " ;} echo " </table> \n " ;} echo ' < p >
';if($p){echo"<input type=' submit ' value=' " .lang(141). " '>\n";if(!isset($_GET["select"])){echo' < input type = " submit " name = " insert " value = " '.( $qa ?lang(142):lang(143)). " \ " > \n " ;}} echo ( $qa ? " <input type='submit' name='delete' value=' " . lang ( 144 ) . " ' onclick= \" return confirm(' " . lang ( 0 ) . " '); \" > \n " : ( $_POST ||! $p ? " " : " <script type='text/javascript'>document.getElementById('form').getElementsByTagName('td')[1].firstChild.focus();</script> \n " )); if ( isset ( $_GET [ " select " ])){ hidden_fields ( array ( " check " => ( array ) $_POST [ " check " ], " clone " => $_POST [ " clone " ], " all " => $_POST [ " all " ]));} echo '<input type="hidden" name="referer" value="' , h ( isset ( $_POST [ " referer " ]) ? $_POST [ " referer " ] : $_SERVER [ " HTTP_REFERER " ]), ' " >
< input type = " hidden " name = " save " value = " 1 " >
< input type = " hidden " name = " token " value = " ', $M ,' " >
</ form >
';}elseif(isset($_GET["create"])){$m=$_GET["create"];$pe=array(' HASH ',' LINEAR HASH ',' KEY ',' LINEAR KEY ',' RANGE ',' LIST ' ); $ce = referencable_primary ( $m ); $ha = array (); foreach ( $ce
as $Ea => $e ){ $ha [ str_replace ( " ` " , " `` " , $Ea ) . " ` " . str_replace ( " ` " , " `` " , $e [ " field " ])] = $Ea ;} $Kc = array (); $Jc = array (); if ( $m != " " ){ $Kc = fields ( $m ); $Jc = table_status ( $m );} if ( $_POST &&! $_POST [ " fields " ]){ $_POST [ " fields " ] = array ();} if ( $_POST &&! $n &&! $_POST [ " add " ] &&! $_POST [ " drop_col " ] &&! $_POST [ " up " ] &&! $_POST [ " down " ]){ if ( $_POST [ " drop " ]){ query_redirect ( " DROP TABLE " . table ( $m ), substr ( ME , 0 , - 1 ), lang ( 145 ));} else { $p = array (); $Oa = array (); ksort ( $_POST [ " fields " ]); $vd = reset ( $Kc ); $Jb = " FIRST " ; foreach ( $_POST [ " fields " ] as $d => $e ){ $A = $ha [ $e [ " type " ]]; $Uc = ( isset ( $A ) ? $ce [ $A ] : $e ); if ( $e [ " field " ] != " " ){ if ( ! $e [ " has_default " ]){ $e [ " default " ] = null ;} $za = eregi_replace ( " *on update CURRENT_TIMESTAMP " , " " , $e [ " default " ]); if ( $za != $e [ " default " ]){ $e [ " on_update " ] = " CURRENT_TIMESTAMP " ; $e [ " default " ] = $za ;} if ( $d == $_POST [ " auto_increment_col " ]){ $e [ " auto_increment " ] = true ;} $qe = process_field ( $e , $Uc ); if ( $qe != process_field ( $vd , $vd )){ $p [] = array ( $e [ " orig " ], $qe , $Jb );} if ( isset ( $A )){ $Oa [ idf_escape ( $e [ " field " ])] = ( $m != " " ? " ADD " : " " ) . " FOREIGN KEY ( " . idf_escape ( $e [ " field " ]) . " ) REFERENCES " . table ( $ha [ $e [ " type " ]]) . " ( " . idf_escape ( $Uc [ " field " ]) . " ) " . ( in_array ( $e [ " on_delete " ], $fb ) ? " ON DELETE $e[on_delete] " : " " );} $Jb = " AFTER " . idf_escape ( $e [ " field " ]);} elseif ( $e [ " orig " ] != " " ){ $p [] = array ( $e [ " orig " ]);} if ( $e [ " orig " ] != " " ){ $vd = next ( $Kc );}} $vb = " " ; if ( in_array ( $_POST [ " partition_by " ], $pe )){ $yd = array (); if ( $_POST [ " partition_by " ] == 'RANGE' || $_POST [ " partition_by " ] == 'LIST' ){ foreach ( array_filter ( $_POST [ " partition_names " ]) as $d => $b ){ $q = $_POST [ " partition_values " ][ $d ]; $yd [] = " \n PARTITION " . idf_escape ( $b ) . " VALUES " . ( $_POST [ " partition_by " ] == 'RANGE' ? " LESS THAN " : " IN " ) . ( $q != " " ? " ( $q ) " : " MAXVALUE " );}} $vb .= " \n PARTITION BY $_POST[partition_by] ( $_POST[partition] ) " . ( $yd ? " ( " . implode ( " , " , $yd ) . " \n ) " : ( $_POST [ " partitions " ] ? " PARTITIONS " . ( + $_POST [ " partitions " ]) : " " ));} elseif ( $m != " " && support ( " partitioning " )){ $vb .= " \n REMOVE PARTITIONING " ;} $va = lang ( 146 ); if ( $m == " " ){ cookie ( " adminer_engine " , $_POST [ " Engine " ]); $va = lang ( 147 );} queries_redirect ( ME . " table= " . urlencode ( $_POST [ " name " ]), $va , alter_table ( $m , $_POST [ " name " ], $p , $Oa , $_POST [ " Comment " ],( $_POST [ " Engine " ] && $_POST [ " Engine " ] != $Jc [ " Engine " ] ? $_POST [ " Engine " ] : " " ),( $_POST [ " Collation " ] && $_POST [ " Collation " ] != $Jc [ " Collation " ] ? $_POST [ " Collation " ] : " " ),( $_POST [ " Auto_increment " ] != " " ? + $_POST [ " Auto_increment " ] : " " ), $vb ));}} page_header (( $m != " " ? lang ( 28 ) : lang ( 148 )), $n , array ( " table " => $m ), $m ); $a = array ( " Engine " => $_COOKIE [ " adminer_engine " ], " fields " => array ( array ( " field " => " " , " type " => ( isset ( $R [ " int " ]) ? " int " : ( isset ( $R [ " integer " ]) ? " integer " : " " )))), " partition_names " => array ( " " ),); if ( $_POST ){ $a = $_POST ; if ( $a [ " auto_increment_col " ]){ $a [ " fields " ][ $a [ " auto_increment_col " ]][ " auto_increment " ] = true ;} process_fields ( $a [ " fields " ]);} elseif ( $m != " " ){ $a = $Jc ; $a [ " name " ] = $m ; $a [ " fields " ] = array (); if ( ! $_GET [ " auto_increment " ]){ $a [ " Auto_increment " ] = " " ;} foreach ( $Kc
as $e ){ $e [ " has_default " ] = isset ( $e [ " default " ]); if ( $e [ " on_update " ]){ $e [ " default " ] .= " ON UPDATE $e[on_update] " ;} $a [ " fields " ][] = $e ;} if ( support ( " partitioning " )){ $Yb = " FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = " . q ( DB ) . " AND TABLE_NAME = " . q ( $m ); $i = $g -> query ( " SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $Yb ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1 " ); list ( $a [ " partition_by " ], $a [ " partitions " ], $a [ " partition " ]) = $i -> fetch_row (); $a [ " partition_names " ] = array (); $a [ " partition_values " ] = array (); foreach ( get_rows ( " SELECT PARTITION_NAME, PARTITION_DESCRIPTION $Yb AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION " ) as $dd ){ $a [ " partition_names " ][] = $dd [ " PARTITION_NAME " ]; $a [ " partition_values " ][] = $dd [ " PARTITION_DESCRIPTION " ];} $a [ " partition_names " ][] = " " ;}} $Z = collations (); $qd = floor ( extension_loaded ( " suhosin " ) ? ( min ( ini_get ( " suhosin.request.max_vars " ), ini_get ( " suhosin.post.max_vars " )) - 13 ) / 10 : 0 ); if ( $qd && count ( $a [ " fields " ]) > $qd ){ echo " <p class='error'> " . h ( lang ( 149 , 'suhosin.post.max_vars' , 'suhosin.request.max_vars' )) . " \n " ;} $wd = engines (); foreach ( $wd
as $yb ){ if ( ! strcasecmp ( $yb , $a [ " Engine " ])){ $a [ " Engine " ] = $yb ; break ;}} echo '
< form action = " " method = " post " id = " form " >
< p >
',lang(150),' : < input name = " name " maxlength = " 64 " value = " ',h( $a["name"] ),' " >
';if($m==""&&!$_POST){?><script type=' text / javascript '>document.getElementById(' form ')[' name '].focus();</script><?php }echo($wd?adminer_html_select("Engine",array(""=>"(".lang(151).")")+$wd,$a["Engine"]):""),' ',($Z&&!ereg("sqlite|mssql",$v)?adminer_html_select("Collation",array(""=>"(".lang(85).")")+$Z,$a["Collation"]):""),' < input type = " submit " value = " ',lang(141),' " >
< table cellspacing = " 0 " id = " edit-fields " class = " nowrap " >
';$Kb=edit_fields($a["fields"],$Z,"TABLE",$qd,$ha,$a["Comment"]!="");echo' </ table >
< p >
',lang(92),' : < input name = " Auto_increment " size = " 6 " value = " ',h( $a["Auto_increment"] ),' " >
< label class = " jsonly " >< input type = " checkbox " onclick = " columnShow(this.checked, 5); " > ',lang(93),' </ label >
',(support("comment")?checkbox("","",$Kb,lang(94),"columnShow(this.checked, 6); toggle(' Comment '); if (this.checked) this.form[' Comment '].focus();").' < input id = " Comment " name = " Comment " value = " '.h( $a["Comment"] ).' " maxlength = " 60 " '.($Kb?' ':' class = " hidden " ').' > ':' '),' < p >
< input type = " submit " value = " ',lang(141),' " >
';if($_GET["create"]!=""){echo' < input type = " submit " name = " drop " value = " ',lang(78),' " ',confirm(),' > ';}echo' < input type = " hidden " name = " token " value = " ', $M ,' " >
';if(support("partitioning")){$me=ereg(' RANGE | LIST ',$a["partition_by"]);print_fieldset("partition",lang(152),$a["partition_by"]);echo' < p >
',adminer_html_select("partition_by",array(-1=>"")+$pe,$a["partition_by"],"partitionByChange(this);"),' ( < input name = " partition " value = " ',h( $a["partition"] ),' " > )
',lang(153),' : < input name = " partitions " size = " 2 " value = " ',h( $a["partitions"] ),' " ',($me||!$a["partition_by"]?" class=' hidden '":""),' >
< table cellspacing = " 0 " id = " partition-table " ',($me?"":" class=' hidden '"),' >
< thead >< tr >< th > ',lang(154),' < th > ',lang(155),' </ thead >
';foreach($a["partition_names"]as$d=>$b){echo' < tr > ',' < td >< input name = " partition_names[] " value = " '.h( $b ).' " '.($d==count($a["partition_names"])-1?' onchange = " partitionNameChange(this); " ':' ').' > ',' < td >< input name = " partition_values[] " value = " '.h( $a["partition_values"] [ $d ]).' " > ';}echo' </ table >
</ div ></ fieldset >
';}echo' </ form >
' ;} elseif ( isset ( $_GET [ " indexes " ])){ $m = $_GET [ " indexes " ]; $Nc = array ( " PRIMARY " , " UNIQUE " , " INDEX " ); $D = table_status ( $m ); if ( eregi ( " MyISAM|M?aria " , $D [ " Engine " ])){ $Nc [] = " FULLTEXT " ;} $J = indexes ( $m ); if ( $v == " sqlite " ){ unset ( $Nc [ 0 ]); unset ( $J [ " " ]);} if ( $_POST &&! $n &&! $_POST [ " add " ]){ $u = array (); foreach ( $_POST [ " indexes " ] as $x ){ if ( in_array ( $x [ " type " ], $Nc )){ $B = array (); $ec = array (); $r = array (); ksort ( $x [ " columns " ]); foreach ( $x [ " columns " ] as $d => $C ){ if ( $C != " " ){ $W = $x [ " lengths " ][ $d ]; $r [] = idf_escape ( $C ) . ( $W ? " ( " . ( + $W ) . " ) " : " " ); $B [] = $C ; $ec [] = ( $W ? $W : null );}} if ( $B ){ foreach ( $J
as $f => $Bb ){ ksort ( $Bb [ " columns " ]); ksort ( $Bb [ " lengths " ]); if ( $x [ " type " ] == $Bb [ " type " ] && array_values ( $Bb [ " columns " ]) === $B && ( ! $Bb [ " lengths " ] || array_values ( $Bb [ " lengths " ]) === $ec )){ unset ( $J [ $f ]); continue
2 ;}} $u [] = array ( $x [ " type " ], " ( " . implode ( " , " , $r ) . " ) " );}}} foreach ( $J
as $f => $Bb ){ $u [] = array ( $Bb [ " type " ], idf_escape ( $f ), " DROP " );} if ( ! $u ){ redirect ( ME . " table= " . urlencode ( $m ));} queries_redirect ( ME . " table= " . urlencode ( $m ), lang ( 156 ), alter_indexes ( $m , $u ));} page_header ( lang ( 102 ), $n , array ( " table " => $m ), $m ); $p = array_keys ( fields ( $m )); $a = array ( " indexes " => $J ); if ( $_POST ){ $a = $_POST ; if ( $_POST [ " add " ]){ foreach ( $a [ " indexes " ] as $d => $x ){ if ( $x [ " columns " ][ count ( $x [ " columns " ])] != " " ){ $a [ " indexes " ][ $d ][ " columns " ][] = " " ;}} $x = end ( $a [ " indexes " ]); if ( $x [ " type " ] || array_filter ( $x [ " columns " ], 'strlen' ) || array_filter ( $x [ " lengths " ], 'strlen' )){ $a [ " indexes " ][] = array ( " columns " => array ( 1 => " " ));}}} else { foreach ( $a [ " indexes " ] as $d => $x ){ $a [ " indexes " ][ $d ][ " columns " ][] = " " ;} $a [ " indexes " ][] = array ( " columns " => array ( 1 => " " ));} echo '
< form action = " " method = " post " >
< table cellspacing = " 0 " class = " nowrap " >
< thead >< tr >< th > ',lang(157),' < th > ',lang(158),' </ thead >
';$ra=1;foreach($a["indexes"]as$x){echo"<tr><td>".adminer_html_select("indexes[$ra][type]",array(-1=>"")+$Nc,$x["type"],($ra==count($a["indexes"])?"indexesAddRow(this);":1))."<td>";ksort($x["columns"]);$l=1;foreach($x["columns"]as$d=>$C){echo"<span>".adminer_html_select("indexes[$ra][columns][$l]",array(-1=>"")+$p,$C,($l==count($x["columns"])?"indexesAddColumn(this);":1)),"<input name=' indexes [ $ra ][ lengths ][ $l ] ' size=' 2 ' value=' " .h( $x["lengths"] [ $d ]). " '> </span>";$l++;}$ra++;}echo' </ table >
< p >
< input type = " submit " value = " ',lang(141),' " >
< noscript >< p >< input type = " submit " name = " add " value = " ',lang(95),' " ></ noscript >
< input type = " hidden " name = " token " value = " ', $M ,' " >
</ form >
';}elseif(isset($_GET["database"])){if($_POST&&!$n&&!isset($_POST["add_x"])){restart_session();if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(159),drop_databases(array(DB)));}elseif(DB!==$_POST["name"]){if(DB!=""){$_GET["db"]=$_POST["name"];queries_redirect(preg_replace(' ~ db = [ ^& ] *&~ ',' ' , ME ) . " db= " . urlencode ( $_POST [ " name " ]), lang ( 160 ), rename_database ( $_POST [ " name " ], $_POST [ " collation " ]));} else { $_ = explode ( " \n " , str_replace ( " \r " , " " , $_POST [ " name " ])); $ee = true ; $xb = " " ; foreach ( $_
as $t ){ if ( count ( $_ ) == 1 || $t != " " ){ if ( ! create_database ( $t , $_POST [ " collation " ])){ $ee = false ;} $xb = $t ;}} queries_redirect ( ME . " db= " . urlencode ( $xb ), lang ( 161 ), $ee );}} else { if ( ! $_POST [ " collation " ]){ redirect ( substr ( ME , 0 , - 1 ));} query_redirect ( " ALTER DATABASE " . idf_escape ( $_POST [ " name " ]) . ( eregi ( '^[a-z0-9_]+$' , $_POST [ " collation " ]) ? " COLLATE $_POST[collation] " : " " ), substr ( ME , 0 , - 1 ), lang ( 162 ));}} page_header ( DB != " " ? lang ( 46 ) : lang ( 163 ), $n , array (), DB ); $Z = collations (); $f = DB ; $Dc = null ; if ( $_POST ){ $f = $_POST [ " name " ]; $Dc = $_POST [ " collation " ];} elseif ( DB != " " ){ $Dc = db_collation ( DB , $Z );} elseif ( $v == " sql " ){ foreach ( get_vals ( " SHOW GRANTS " ) as $ka ){ if ( preg_match ( '~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~' , $ka , $k ) && $k [ 1 ]){ $f = stripcslashes ( idf_unescape ( " ` $k[2] ` " )); break ;}}} echo '
< form action = " " method = " post " >
< p >
',($_POST["add_x"]||strpos($f,"\n")?' < textarea id = " name " name = " name " rows = " 10 " cols = " 40 " > '.h($f).' </ textarea >< br > ':' < input id = " name " name = " name " value = " '.h( $f ).' " maxlength = " 64 " > ' ) . " \n " . ( $Z ? adminer_html_select ( " collation " , array ( " " => " ( " . lang ( 85 ) . " ) " ) + $Z , $Dc ) : " " ); ?>
< script type = 'text/javascript' > document . getElementById ( 'name' ) . focus (); </ script >
< input type = " submit " value = " <?php echo
lang ( 141 ), ' " >
';if(DB!=""){echo"<input type=' submit ' name=' drop ' value=' " .lang(78). " '".confirm().">\n";}elseif(!$_POST["add_x"]&&$_GET["db"]==""){echo"<input type=' image ' name=' add ' src=' " .h(preg_replace( " ~ \\ ? .*~ " , " " ,ME)). " ? file = plus . gif & amp ; version = 3.2 . 2 ' alt=' + ' title=' " .lang(95). " '>\n";}echo' < input type = " hidden " name = " token " value = " ', $M ,' " >
</ form >
';}elseif(isset($_GET["scheme"])){if($_POST&&!$n){$w=preg_replace(' ~ ns = [ ^& ] *&~ ',' ',ME)."ns=";if($_POST["drop"]){query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$w,lang(164));}else{$w.=urlencode($_POST["name"]);if($_GET["ns"]==""){query_redirect("CREATE SCHEMA ".idf_escape($_POST["name"]),$w,lang(165));}elseif($_GET["ns"]!=$_POST["name"]){query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($_POST["name"]),$w,lang(166));}else{redirect($w);}}}page_header($_GET["ns"]!=""?lang(47):lang(48),$n);$a=array("name"=>$_GET["ns"]);if($_POST){$a=$_POST;}echo'
< form action = " " method = " post " >
< p >< input name = " name " value = " ',h( $a["name"] ),' " >
< input type = " submit " value = " ',lang(141),' " >
';if($_GET["ns"]!=""){echo"<input type=' submit ' name=' drop ' value=' " .lang(78). " '".confirm().">\n";}echo' < input type = " hidden " name = " token " value = " ', $M ,' " >
</ form >
';}elseif(isset($_GET["call"])){$Va=$_GET["call"];page_header(lang(167).": ".h($Va),$n);$Ta=routine($Va,(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Tb=array();$qb=array();foreach($Ta["fields"]as$l=>$e){if(substr($e["inout"],-3)=="OUT"){$qb[$l]="@".idf_escape($e["field"])." AS ".idf_escape($e["field"]);}if(!$e["inout"]||substr($e["inout"],0,2)=="IN"){$Tb[]=$l;}}if(!$n&&$_POST){$de=array();foreach($Ta["fields"]as$d=>$e){if(in_array($d,$Tb)){$b=process_input($e);if($b===false){$b="' '";}if(isset($qb[$d])){$g->query("SET @".idf_escape($e["field"])." = $b");}}$de[]=(isset($qb[$d])?"@".idf_escape($e["field"]):$b);}$j=(isset($_GET["callf"])?"SELECT":"CALL")." ".idf_escape($Va)."(".implode(", ",$de).")";echo"<p><code class=' jush - $v '>".h($j)."</code> <a href=' " .h(ME). " sql = " .urlencode( $j ). " '>".lang(31)."</a>\n";if(!$g->multi_query($j)){echo"<p class=' error '>".error()."\n";}else{do{$i=$g->store_result();if(is_object($i)){select($i);}else{echo"<p class=' message '>".lang(168,$g->affected_rows)."\n";}}while($g->next_result());if($qb){select($g->query("SELECT ".implode(", ",$qb)));}}}echo'
< form action = " " method = " post " >
';if($Tb){echo"<table cellspacing=' 0 ' > \n " ;foreach( $Tb
as $d ){ $e = $Ta [ " fields " ][ $d ]; $f = $e [ " field " ]; echo " <tr><th> " . $o -> fieldName ( $e ); $q = $_POST [ " fields " ][ $f ]; if ( $q != " " ){ if ( $e [ " type " ] == " enum " ){ $q =+ $q ;} if ( $e [ " type " ] == " set " ){ $q = array_sum ( $q );}} input ( $e , $q ,( string ) $_POST [ " function " ][ $f ]); echo " \n " ;} echo " </table> \n " ;} echo ' < p >
< input type = " submit " value = " ',lang(167),' " >
< input type = " hidden " name = " token " value = " ', $M ,' " >
</ form >
';}elseif(isset($_GET["foreign"])){$m=$_GET["foreign"];if($_POST&&!$n&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if($_POST["drop"]){query_redirect("ALTER TABLE ".table($m)."\nDROP ".($v=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($_GET["name"]),ME."table=".urlencode($m),lang(169));}else{$Ga=array_filter($_POST["source"],' strlen ' ); ksort ( $Ga ); $ea = array (); foreach ( $Ga
as $d => $b ){ $ea [ $d ] = $_POST [ " target " ][ $d ];} query_redirect ( " ALTER TABLE " . table ( $m ) . ( $_GET [ " name " ] != " " ? " \n DROP FOREIGN KEY " . idf_escape ( $_GET [ " name " ]) . " , " : " " ) . " \n ADD FOREIGN KEY ( " . implode ( " , " , array_map ( 'idf_escape' , $Ga )) . " ) REFERENCES " . table ( $_POST [ " table " ]) . " ( " . implode ( " , " , array_map ( 'idf_escape' , $ea )) . " ) " . ( in_array ( $_POST [ " on_delete " ], $fb ) ? " ON DELETE $_POST[on_delete] " : " " ) . ( in_array ( $_POST [ " on_update " ], $fb ) ? " ON UPDATE $_POST[on_update] " : " " ), ME . " table= " . urlencode ( $m ),( $_GET [ " name " ] != " " ? lang ( 170 ) : lang ( 171 ))); $n = lang ( 172 ) . " <br> $n " ;}} page_header ( lang ( 173 ), $n , array ( " table " => $m ), $m ); $a = array ( " table " => $m , " source " => array ( " " )); if ( $_POST ){ $a = $_POST ; ksort ( $a [ " source " ]); if ( $_POST [ " add " ]){ $a [ " source " ][] = " " ;} elseif ( $_POST [ " change " ] || $_POST [ " change-js " ]){ $a [ " target " ] = array ();}} elseif ( $_GET [ " name " ] != " " ){ $ha = foreign_keys ( $m ); $a = $ha [ $_GET [ " name " ]]; $a [ " source " ][] = " " ;} $Ga = array_keys ( fields ( $m )); $ea = ( $m === $a [ " table " ] ? $Ga : array_keys ( fields ( $a [ " table " ]))); $je = array (); foreach ( table_status () as $f => $D ){ if ( fk_support ( $D )){ $je [] = $f ;}} echo '
< form action = " " method = " post " >
< p >
' ; if ( $a [ " db " ] == " " ){ echo
lang ( 174 ), ' :
',adminer_html_select("table",$je,$a["table"],"this.form[' change - js '].value = ' 1 '; this.form.submit();"),' < input type = " hidden " name = " change-js " value = " " >
< noscript >< p >< input type = " submit " name = " change " value = " ',lang(175),' " ></ noscript >
< table cellspacing = " 0 " >
< thead >< tr >< th > ',lang(104),' < th > ',lang(105),' </ thead >
';$ra=0;foreach($a["source"]as$d=>$b){echo"<tr>","<td>".adminer_html_select("source[".(+$d)."]",array(-1=>"")+$Ga,$b,($ra==count($a["source"])-1?"foreignAddRow(this);":1)),"<td>".adminer_html_select("target[".(+$d)."]",$ea,$a["target"][$d]);$ra++;}echo' </ table >
< p >
',lang(86),' : ',adminer_html_select("on_delete",array(-1=>"")+$fb,$a["on_delete"]),' ',lang(106),' : ',adminer_html_select("on_update",array(-1=>"")+$fb,$a["on_update"]),' < p >
< input type = " submit " value = " ',lang(141),' " >
< noscript >< p >< input type = " submit " name = " add " value = " ',lang(176),' " ></ noscript >
';}if($_GET["name"]!=""){echo' < input type = " submit " name = " drop " value = " ',lang(78),' " ',confirm(),' > ';}echo' < input type = " hidden " name = " token " value = " ', $M ,' " >
</ form >
';}elseif(isset($_GET["view"])){$m=$_GET["view"];$hb=false;if($_POST&&!$n){$hb=drop_create("DROP VIEW ".table($m),"CREATE VIEW ".table($_POST["name"])." AS\n$_POST[select]",($_POST["drop"]?substr(ME,0,-1):ME."table=".urlencode($_POST["name"])),lang(177),lang(178),lang(179),$m);}page_header(($m!=""?lang(27):lang(180)),$n,array("table"=>$m),$m);$a=array();if($_POST){$a=$_POST;}elseif($m!=""){$a=view($m);$a["name"]=$m;}echo'
< form action = " " method = " post " >
< p > ',lang(181),' : < input name = " name " value = " ',h( $a["name"] ),' " maxlength = " 64 " >
< p > ';textarea("select",$a["select"]);echo' < p >
';if($hb){echo' < input type = " hidden " name = " dropped " value = " 1 " > ';}echo' < input type = " submit " value = " ',lang(141),' " >
';if($_GET["view"]!=""){echo' < input type = " submit " name = " drop " value = " ',lang(78),' " ',confirm(),' > ';}echo' < input type = " hidden " name = " token " value = " ', $M ,' " >
</ form >
';}elseif(isset($_GET["event"])){$ib=$_GET["event"];$ie=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Md=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");if($_POST&&!$n){if($_POST["drop"]){query_redirect("DROP EVENT ".idf_escape($ib),substr(ME,0,-1),lang(182));}elseif(in_array($_POST["INTERVAL_FIELD"],$ie)&&isset($Md[$_POST["STATUS"]])){$he="\nON SCHEDULE ".($_POST["INTERVAL_VALUE"]?"EVERY ".q($_POST["INTERVAL_VALUE"])." $_POST[INTERVAL_FIELD]".($_POST["STARTS"]?" STARTS ".q($_POST["STARTS"]):"").($_POST["ENDS"]?" ENDS ".q($_POST["ENDS"]):""):"AT ".q($_POST["STARTS"]))." ON COMPLETION".($_POST["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($ib!=""?lang(183):lang(184)),queries(($ib!=""?"ALTER EVENT ".idf_escape($ib).$he.($ib!=$_POST["EVENT_NAME"]?"\nRENAME TO ".idf_escape($_POST["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($_POST["EVENT_NAME"]).$he)."\n".$Md[$_POST["STATUS"]]." COMMENT ".q($_POST["EVENT_COMMENT"]).rtrim(" DO\n$_POST[EVENT_DEFINITION]",";").";"));}}page_header(($ib!=""?lang(185).": ".h($ib):lang(186)),$n);$a=array();if($_POST){$a=$_POST;}elseif($ib!=""){$H=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($ib));$a=reset($H);}echo'
< form action = " " method = " post " >
< table cellspacing = " 0 " >
< tr >< th > ',lang(181),' < td >< input name = " EVENT_NAME " value = " ',h( $a["EVENT_NAME"] ),' " maxlength = " 64 " >
< tr >< th > ',lang(187),' < td >< input name = " STARTS " value = " ',h( " $a [ EXECUTE_AT ] $a [ STARTS ] " ),' " >
< tr >< th > ',lang(188),' < td >< input name = " ENDS " value = " ',h( $a["ENDS"] ),' " >
< tr >< th > ',lang(189),' < td >< input name = " INTERVAL_VALUE " value = " ',h( $a["INTERVAL_VALUE"] ),' " size = " 6 " > ',adminer_html_select("INTERVAL_FIELD",$ie,$a["INTERVAL_FIELD"]),' < tr >< th > ',lang(73),' < td > ',adminer_html_select("STATUS",$Md,$a["STATUS"]),' < tr >< th > ',lang(94),' < td >< input name = " EVENT_COMMENT " value = " ',h( $a["EVENT_COMMENT"] ),' " maxlength = " 64 " >
< tr >< th >& nbsp ; < td > ',checkbox("ON_COMPLETION","PRESERVE",$a["ON_COMPLETION"]=="PRESERVE",lang(190)),' </ table >
< p > ';textarea("EVENT_DEFINITION",$a["EVENT_DEFINITION"]);echo' < p >
< input type = " submit " value = " ',lang(141),' " >
';if($ib!=""){echo' < input type = " submit " name = " drop " value = " ',lang(78),' " ',confirm(),' > ';}echo' < input type = " hidden " name = " token " value = " ', $M ,' " >
</ form >
' ;} elseif ( isset ( $_GET [ " procedure " ])){ $Va = $_GET [ " procedure " ]; $Ta = ( isset ( $_GET [ " function " ]) ? " FUNCTION " : " PROCEDURE " ); $hb = false ; if ( $_POST &&! $n &&! $_POST [ " add " ] &&! $_POST [ " drop_col " ] &&! $_POST [ " up " ] &&! $_POST [ " down " ]){ $r = array (); $p = ( array ) $_POST [ " fields " ]; ksort ( $p ); foreach ( $p
as $e ){ if ( $e [ " field " ] != " " ){ $r [] = ( in_array ( $e [ " inout " ], $jc ) ? " $e[inout] " : " " ) . idf_escape ( $e [ " field " ]) . process_type ( $e , " CHARACTER SET " );}} $hb = drop_create ( " DROP $Ta " . idf_escape ( $Va ), " CREATE $Ta " . idf_escape ( $_POST [ " name " ]) . " ( " . implode ( " , " , $r ) . " ) " . ( isset ( $_GET [ " function " ]) ? " RETURNS " . process_type ( $_POST [ " returns " ], " CHARACTER SET " ) : " " ) . rtrim ( " \n $_POST[definition] " , " ; " ) . " ; " , substr ( ME , 0 , - 1 ), lang ( 191 ), lang ( 192 ), lang ( 193 ), $Va );} page_header (( $Va != " " ? ( isset ( $_GET [ " function " ]) ? lang ( 194 ) : lang ( 195 )) . " : " . h ( $Va ) : ( isset ( $_GET [ " function " ]) ? lang ( 196 ) : lang ( 197 ))), $n ); $Z = get_vals ( " SHOW CHARACTER SET " ); sort ( $Z ); $a = array ( " fields " => array ()); if ( $_POST ){ $a = $_POST ; $a [ " fields " ] = ( array ) $a [ " fields " ]; process_fields ( $a [ " fields " ]);} elseif ( $Va != " " ){ $a = routine ( $Va , $Ta ); $a [ " name " ] = $Va ;} echo '
< form action = " " method = " post " id = " form " >
< p > ',lang(181),' : < input name = " name " value = " ',h( $a["name"] ),' " maxlength = " 64 " >
< table cellspacing = " 0 " class = " nowrap " >
';edit_fields($a["fields"],$Z,$Ta);if(isset($_GET["function"])){echo"<tr><td>".lang(198);edit_type("returns",$a["returns"],$Z);}echo' </ table >
< p > ';textarea("definition",$a["definition"]);echo' < p >
< input type = " submit " value = " ',lang(141),' " >
';if($Va!=""){echo' < input type = " submit " name = " drop " value = " ',lang(78),' " ',confirm(),' > ';}if($hb){echo' < input type = " hidden " name = " dropped " value = " 1 " > ';}echo' < input type = " hidden " name = " token " value = " ', $M ,' " >
</ form >
';}elseif(isset($_GET["sequence"])){$Eb=$_GET["sequence"];if($_POST&&!$n){$w=substr(ME,0,-1);if($_POST["drop"]){query_redirect("DROP SEQUENCE ".idf_escape($Eb),$w,lang(199));}elseif($Eb==""){query_redirect("CREATE SEQUENCE ".idf_escape($_POST["name"]),$w,lang(200));}elseif($Eb!=$_POST["name"]){query_redirect("ALTER SEQUENCE ".idf_escape($Eb)." RENAME TO ".idf_escape($_POST["name"]),$w,lang(201));}else{redirect($w);}}page_header($Eb!=""?lang(202).": ".h($Eb):lang(203),$n);$a=array("name"=>$Eb);if($_POST){$a=$_POST;}echo'
< form action = " " method = " post " >
< p >< input name = " name " value = " ',h( $a["name"] ),' " >
< input type = " submit " value = " ',lang(141),' " >
';if($Eb!=""){echo"<input type=' submit ' name=' drop ' value=' " .lang(78). " '".confirm().">\n";}echo' < input type = " hidden " name = " token " value = " ', $M ,' " >
</ form >
';}elseif(isset($_GET["type"])){$Oc=$_GET["type"];if($_POST&&!$n){$w=substr(ME,0,-1);if($_POST["drop"]){query_redirect("DROP TYPE ".idf_escape($Oc),$w,lang(204));}else{query_redirect("CREATE TYPE ".idf_escape($_POST["name"])." $_POST[as]",$w,lang(205));}}page_header($Oc!=""?lang(206).": ".h($Oc):lang(207),$n);$a["as"]="AS ";if($_POST){$a=$_POST;}echo'
< form action = " " method = " post " >
< p >
';if($Oc!=""){echo"<input type=' submit ' name=' drop ' value=' " .lang(78). " '".confirm().">\n";}else{echo"<input name=' name ' value=' " .h( $a['name'] ). " '>\n";textarea("as",$a["as"]);echo"<p><input type=' submit ' value=' " .lang(141). " '>\n";}echo' < input type = " hidden " name = " token " value = " ', $M ,' " >
</ form >
';}elseif(isset($_GET["trigger"])){$m=$_GET["trigger"];$Ic=trigger_options();$te=array("INSERT","UPDATE","DELETE");$hb=false;if($_POST&&!$n&&in_array($_POST["Timing"],$Ic["Timing"])&&in_array($_POST["Event"],$te)&&in_array($_POST["Type"],$Ic["Type"])){$re=" $_POST[Timing] $_POST[Event]";$Cb=" ON ".table($m);$hb=drop_create("DROP TRIGGER ".idf_escape($_GET["name"]).($v=="pgsql"?$Cb:""),"CREATE TRIGGER ".idf_escape($_POST["Trigger"]).($v=="mssql"?$Cb.$re:$re.$Cb).rtrim(" $_POST[Type]\n$_POST[Statement]",";").";",ME."table=".urlencode($m),lang(208),lang(209),lang(210),$_GET["name"]);}page_header(($_GET["name"]!=""?lang(211).": ".h($_GET["name"]):lang(212)),$n,array("table"=>$m));$a=array("Trigger"=>$m."_bi");if($_POST){$a=$_POST;}elseif($_GET["name"]!=""){$a=trigger($_GET["name"]);}echo'
< form action = " " method = " post " id = " form " >
< table cellspacing = " 0 " >
< tr >< th > ',lang(213),' < td > ',adminer_html_select("Timing",$Ic["Timing"],$a["Timing"],"if (/^".h(preg_quote($m,"/"))."_[ba][iud]$/.test(this.form[' Trigger '].value)) this.form[' Trigger '].value = ' " .h(js_escape( $m )). " _ ' + selectValue(this).charAt(0).toLowerCase() + selectValue(this.form[' Event ']).charAt(0).toLowerCase();"),' < tr >< th > ',lang(214),' < td > ',adminer_html_select("Event",$te,$a["Event"],"this.form[' Timing '].onchange();"),' < tr >< th > ',lang(89),' < td > ',adminer_html_select("Type",$Ic["Type"],$a["Type"]),' </ table >
< p > ',lang(181),' : < input name = " Trigger " value = " ',h( $a["Trigger"] ),' " maxlength = " 64 " >
< p > ';textarea("Statement",$a["Statement"]);echo' < p >
< input type = " submit " value = " ',lang(141),' " >
';if($_GET["name"]!=""){echo' < input type = " submit " name = " drop " value = " ',lang(78),' " ',confirm(),' > ';}if($hb){echo' < input type = " hidden " name = " dropped " value = " 1 " > ';}echo' < input type = " hidden " name = " token " value = " ', $M ,' " >
</ form >
';}elseif(isset($_GET["user"])){$Fd=$_GET["user"];$sa=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$a){foreach(explode(",",($a["Privilege"]=="Grant option"?"":$a["Context"]))as$Gc){$sa[$Gc][$a["Privilege"]]=$a["Comment"];}}$sa["Server Admin"]+=$sa["File access on server"];$sa["Databases"]["Create routine"]=$sa["Procedures"]["Create routine"];unset($sa["Procedures"]["Create routine"]);$sa["Columns"]=array();foreach(array("Select","Insert","Update","References")as$b){$sa["Columns"][$b]=$sa["Tables"][$b];}unset($sa["Server Admin"]["Usage"]);foreach($sa["Tables"]as$d=>$b){unset($sa["Databases"][$d]);}$nc=array();if($_POST){foreach($_POST["objects"]as$d=>$b){$nc[$b]=(array)$nc[$b]+(array)$_POST["grants"][$d];}}$nb=array();$Xc="";if(isset($_GET["host"])&&($i=$g->query("SHOW GRANTS FOR ".q($Fd)."@".q($_GET["host"])))){while($a=$i->fetch_row()){if(preg_match(' ~ GRANT ( .* ) ON ( .* ) TO ~ ',$a[0],$k)&&preg_match_all(' ~ * ([ ^ (,] * [ ^ ,(])( * \\ ([ ^ )] + \\ )) ? ~ ' , $k [ 1 ], $oa , PREG_SET_ORDER )){ foreach ( $oa
as $b ){ if ( $b [ 1 ] != " USAGE " ){ $nb [ " $k[2] $b[2] " ][ $b [ 1 ]] = true ;} if ( ereg ( ' WITH GRANT OPTION' , $a [ 0 ])){ $nb [ " $k[2] $b[2] " ][ " GRANT OPTION " ] = true ;}}} if ( preg_match ( " ~ IDENTIFIED BY PASSWORD '([^']+)~ " , $a [ 0 ], $k )){ $Xc = $k [ 1 ];}}} if ( $_POST &&! $n ){ $ac = ( isset ( $_GET [ " host " ]) ? q ( $Fd ) . " @ " . q ( $_GET [ " host " ]) : " '' " ); $pb = q ( $_POST [ " user " ]) . " @ " . q ( $_POST [ " host " ]); $Ad = q ( $_POST [ " pass " ]); if ( $_POST [ " drop " ]){ query_redirect ( " DROP USER $ac " , ME . " privileges= " , lang ( 215 ));} else { if ( $ac != $pb ){ $n =! queries (( $g -> server_info < 5 ? " GRANT USAGE ON *.* TO " : " CREATE USER " ) . " $pb IDENTIFIED BY " . ( $_POST [ " hashed " ] ? " PASSWORD " : " " ) . " $Ad " );} elseif ( $_POST [ " pass " ] != $Xc ||! $_POST [ " hashed " ]){ queries ( " SET PASSWORD FOR $pb = " . ( $_POST [ " hashed " ] ? $Ad : " PASSWORD( $Ad ) " ));} if ( ! $n ){ $qc = array (); foreach ( $nc
as $bb => $ka ){ if ( isset ( $_GET [ " grant " ])){ $ka = array_filter ( $ka );} $ka = array_keys ( $ka ); if ( isset ( $_GET [ " grant " ])){ $qc = array_diff ( array_keys ( array_filter ( $nc [ $bb ], 'strlen' )), $ka );} elseif ( $ac == $pb ){ $Sd = array_keys (( array ) $nb [ $bb ]); $qc = array_diff ( $Sd , $ka ); $ka = array_diff ( $ka , $Sd ); unset ( $nb [ $bb ]);} if ( preg_match ( '~^(.+)\\s*(\\(.*\\))?$~U' , $bb , $k ) && ( ! grant ( " REVOKE " , $qc , $k [ 2 ], " ON $k[1] FROM $pb " ) ||! grant ( " GRANT " , $ka , $k [ 2 ], " ON $k[1] TO $pb " ))){ $n = true ; break ;}}} if ( ! $n && isset ( $_GET [ " host " ])){ if ( $ac != $pb ){ queries ( " DROP USER $ac " );} elseif ( ! isset ( $_GET [ " grant " ])){ foreach ( $nb
as $bb => $qc ){ if ( preg_match ( '~^(.+)(\\(.*\\))?$~U' , $bb , $k )){ grant ( " REVOKE " , array_keys ( $qc ), $k [ 2 ], " ON $k[1] FROM $pb " );}}}} queries_redirect ( ME . " privileges= " ,( isset ( $_GET [ " host " ]) ? lang ( 216 ) : lang ( 217 )), ! $n ); if ( $ac != $pb ){ $g -> query ( " DROP USER $pb " );}}} page_header (( isset ( $_GET [ " host " ]) ? lang ( 21 ) . " : " . h ( " $Fd @ $_GET[host] " ) : lang ( 120 )), $n , array ( " privileges " => array ( '' , lang ( 70 )))); if ( $_POST ){ $a = $_POST ; $nb = $nc ;} else { $a = $_GET + array ( " host " => $g -> result ( " SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1) " )); $a [ " pass " ] = $Xc ; if ( $Xc != " " ){ $a [ " hashed " ] = true ;} $nb [ " " ] = true ;} echo ' < form action = " " method = " post " >
< table cellspacing = " 0 " >
< tr >< th > ',lang(21),' < td >< input name = " user " maxlength = " 16 " value = " ',h( $a["user"] ),' " >
< tr >< th > ',lang(20),' < td >< input name = " host " maxlength = " 60 " value = " ',h( $a["host"] ),' " >
< tr >< th > ',lang(22),' < td >< input id = " pass " name = " pass " value = " ',h( $a["pass"] ),' " >
';if(!$a["hashed"]){echo' < script type = " text/javascript " > typePassword ( document . getElementById ( \ 'pass\'));</script>' ;} echo
checkbox ( " hashed " , 1 , $a [ " hashed " ], lang ( 218 ), " typePassword(this.form['pass'], this.checked); " ), ' </ table >
';echo"<table cellspacing=' 0 '>\n","<thead><tr><th colspan=' 2 '><a href=' http :// dev . mysql . com / doc / refman / " .substr( $g->server_info ,0,3). " / en / grant . html #priv_level' target='_blank' rel='noreferrer'>".lang(70)."</a>";$l=0;foreach($nb
as $bb => $ka ){ echo '<th>' . ( $bb != " *.* " ? " <input name='objects[ $l ]' value=' " . h ( $bb ) . " ' size='10'> " : " <input type='hidden' name='objects[ $l ]' value='*.*' size='10'>*.* " ); $l ++ ;} echo " </thead> \n " ; foreach ( array ( " " => " " , " Server Admin " => lang ( 20 ), " Databases " => lang ( 65 ), " Tables " => lang ( 100 ), " Columns " => lang ( 101 ), " Procedures " => lang ( 219 ),) as $Gc => $rc ){ foreach (( array ) $sa [ $Gc ] as $mc => $_a ){ echo " <tr " . odd () . " ><td " . ( $rc ? " > $rc <td " : " colspan='2' " ) . ' lang="en" title="' . h ( $_a ) . '">' . h ( $mc ); $l = 0 ; foreach ( $nb
as $bb => $ka ){ $f = " 'grants[ $l ][ " . h ( strtoupper ( $mc )) . " ]' " ; $q = $ka [ strtoupper ( $mc )]; if ( $Gc == " Server Admin " && $bb != ( isset ( $nb [ " *.* " ]) ? " *.* " : " " )){ echo " <td> " ;} elseif ( isset ( $_GET [ " grant " ])){ echo " <td><select name= $f ><option><option value='1' " . ( $q ? " selected " : " " ) . " > " . lang ( 220 ) . " <option value='0' " . ( $q == " 0 " ? " selected " : " " ) . " > " . lang ( 221 ) . " </select> " ;} else { echo " <td align='center'><input type='checkbox' name= $f value='1' " . ( $q ? " checked " : " " ) . ( $mc == " All privileges " ? " id='grants- $l -all' " : ( $mc == " Grant option " ? " " : " onclick= \" if (this.checked) formUncheck('grants- $l -all'); \" " )) . " > " ;} $l ++ ;}}} echo " </table> \n " , ' < p >
< input type = " submit " value = " ',lang(141),' " >
';if(isset($_GET["host"])){echo' < input type = " submit " name = " drop " value = " ',lang(78),' " ',confirm(),' > ';}echo' < input type = " hidden " name = " token " value = " ', $M ,' " >
</ form >
';}elseif(isset($_GET["processlist"])){if($_POST&&!$n){$Id=0;foreach((array)$_POST["kill"]as$b){if(queries("KILL ".(+$b))){$Id++;}}queries_redirect(ME."processlist=",lang(222,$Id),$Id||!$_POST["kill"]);}page_header(lang(71),$n);echo'
< form action = " " method = " post " >
< table cellspacing = " 0 " onclick = " tableClick(event); " class = " nowrap " >
';$l=-1;foreach(get_rows("SHOW FULL PROCESSLIST")as$l=>$a){if(!$l){echo"<thead><tr lang=' en ' >< th >& nbsp ; < th > " .implode( " < th > " ,array_keys( $a )). " </ thead > \n " ;}echo " < tr " .odd(). " >< td > " .checkbox( " kill [] " , $a["Id"] ,0);foreach( $a
as $d => $b ){ echo " <td> " . ( $d == " Info " && $b != " " ? " <code class='jush- $v '> " . shorten_utf8 ( $b , 100 , " </code> " ) . ' <a href="' . h ( ME . ( $a [ " db " ] != " " ? " db= " . urlencode ( $a [ " db " ]) . " & " : " " ) . " sql= " . urlencode ( $b )) . '">' . lang ( 31 ) . '</a>' : nbsp ( $b ));} echo " \n " ;} echo ' </ table >
< p > ',($l+1)."/".lang(223,$g->result("SELECT @@max_connections")),' < p >
< input type = " submit " value = " ',lang(224),' " >
< input type = " hidden " name = " token " value = " ', $M ,' " >
</ form >
' ;} elseif ( isset ( $_GET [ " select " ])){ $m = $_GET [ " select " ]; $D = table_status ( $m ); $J = indexes ( $m ); $p = fields ( $m ); $ha = column_foreign_keys ( $m ); if ( $D [ " Oid " ] == " t " ){ $J [] = array ( " type " => " PRIMARY " , " columns " => array ( " oid " ));} $Td = array (); $B = array (); $Db = null ; foreach ( $p
as $d => $e ){ $f = $o -> fieldName ( $e ); if ( isset ( $e [ " privileges " ][ " select " ]) && $f != " " ){ $B [ $d ] = html_entity_decode ( strip_tags ( $f )); if ( ereg ( 'text|lob' , $e [ " type " ])){ $Db = $o -> selectLengthProcess ();}} $Td += $e [ " privileges " ];} list ( $Q , $pa ) = $o -> selectColumnsProcess ( $B , $J ); $s = $o -> selectSearchProcess ( $p , $J ); $Xa = $o -> selectOrderProcess ( $p , $J ); $O = $o -> selectLimitProcess (); $Yb = ( $Q ? implode ( " , " , $Q ) : ( $D [ " Oid " ] == " t " ? " oid, " : " " ) . " * " ) . " \n FROM " . table ( $m ); $Ld = ( $pa && count ( $pa ) < count ( $Q ) ? " \n GROUP BY " . implode ( " , " , $pa ) : " " ) . ( $Xa ? " \n ORDER BY " . implode ( " , " , $Xa ) : " " ); if ( $_GET [ " val " ] && is_ajax ()){ header ( " Content-Type: text/plain; charset=utf-8 " ); foreach ( $_GET [ " val " ] as $gb => $a ){ echo $g -> result ( " SELECT " . limit ( idf_escape ( key ( $a )) . " FROM " . table ( $m ), " WHERE " . where_check ( $gb ) . ( $s ? " AND " . implode ( " AND " , $s ) : " " ) . ( $Xa ? " ORDER BY " . implode ( " , " , $Xa ) : " " ), 1 ));} exit ;} if ( $_POST &&! $n ){ $ne = " ( " . implode ( " ) OR ( " , array_map ( 'where_check' ,( array ) $_POST [ " check " ])) . " ) " ; $Qa = $ad = null ; foreach ( $J
as $x ){ if ( $x [ " type " ] == " PRIMARY " ){ $Qa = array_flip ( $x [ " columns " ]); $ad = ( $Q ? $Qa : array ()); break ;}} foreach ( $Q
as $d => $b ){ $b = $_GET [ " columns " ][ $d ]; if ( ! $b [ " fun " ]){ unset ( $ad [ $b [ " col " ]]);}} if ( $_POST [ " export " ]){ dump_headers ( $m ); $o -> dumpTable ( $m , " " ); if ( ! is_array ( $_POST [ " check " ]) || $ad === array ()){ $bc = $s ; if ( is_array ( $_POST [ " check " ])){ $bc [] = " ( $ne ) " ;} $j = " SELECT $Yb " . ( $bc ? " \n WHERE " . implode ( " AND " , $bc ) : " " ) . $Ld ;} else { $Zd = array (); foreach ( $_POST [ " check " ] as $b ){ $Zd [] = " (SELECT " . limit ( $Yb , " \n WHERE " . ( $s ? implode ( " AND " , $s ) . " AND " : " " ) . where_check ( $b ) . $Ld , 1 ) . " ) " ;} $j = implode ( " UNION ALL " , $Zd );} $o -> dumpData ( $m , " table " , $j ); exit ;} if ( ! $o -> selectEmailProcess ( $s , $ha )){ if ( $_POST [ " save " ] || $_POST [ " delete " ]){ $i = true ; $wb = 0 ; $j = table ( $m ); $r = array (); if ( ! $_POST [ " delete " ]){ foreach ( $B
as $f => $b ){ $b = process_input ( $p [ $f ]); if ( $b !== null ){ if ( $_POST [ " clone " ]){ $r [ idf_escape ( $f )] = ( $b !== false ? $b : idf_escape ( $f ));} elseif ( $b !== false ){ $r [] = idf_escape ( $f ) . " = $b " ;}}} $j .= ( $_POST [ " clone " ] ? " ( " . implode ( " , " , array_keys ( $r )) . " ) \n SELECT " . implode ( " , " , $r ) . " \n FROM " . table ( $m ) : " SET \n " . implode ( " , \n " , $r ));} if ( $_POST [ " delete " ] || $r ){ $id = " UPDATE " ; if ( $_POST [ " delete " ]){ $id = " DELETE " ; $j = " FROM $j " ;} if ( $_POST [ " clone " ]){ $id = " INSERT " ; $j = " INTO $j " ;} if ( $_POST [ " all " ] || ( $ad === array () && $_POST [ " check " ]) || count ( $pa ) < count ( $Q )){ $i = queries ( $id . " $j " . ( $_POST [ " all " ] ? ( $s ? " \n WHERE " . implode ( " AND " , $s ) : " " ) : " \n WHERE $ne " )); $wb = $g -> affected_rows ;} else { foreach (( array ) $_POST [ " check " ] as $b ){ $i = queries ( $id . limit1 ( $j , " \n WHERE " . where_check ( $b ))); if ( ! $i ){ break ;} $wb += $g -> affected_rows ;}}} queries_redirect ( remove_from_uri ( " page " ), lang ( 225 , $wb ), $i );} elseif ( ! $_POST [ " import " ]){ if ( ! $_POST [ " val " ]){ $n = lang ( 226 );} else { $i = true ; $wb = 0 ; foreach ( $_POST [ " val " ] as $gb => $a ){ $r = array (); foreach ( $a
as $d => $b ){ $d = bracket_escape ( $d , 1 ); $r [] = idf_escape ( $d ) . " = " . ( ereg ( 'char|text' , $p [ $d ][ " type " ]) || $b != " " ? $o -> processInput ( $p [ $d ], $b ) : " NULL " );} $j = table ( $m ) . " SET " . implode ( " , " , $r ); $bc = " WHERE " . where_check ( $gb ) . ( $s ? " AND " . implode ( " AND " , $s ) : " " ); $i = queries ( " UPDATE " . ( count ( $pa ) < count ( $Q ) ? " $j $bc " : limit1 ( $j , $bc ))); if ( ! $i ){ break ;} $wb += $g -> affected_rows ;} queries_redirect ( remove_from_uri (), lang ( 225 , $wb ), $i );}} elseif ( is_string ( $Ia = get_file ( " csv_file " , true ))){ $i = true ; $mb = array_keys ( $p ); preg_match_all ( '~(?>"[^"]*"|[^"\\r\\n]+)+~' , $Ia , $oa ); $wb = count ( $oa [ 0 ]); begin (); $Wa = ( $_POST [ " separator " ] == " csv " ? " , " : ( $_POST [ " separator " ] == " tsv " ? " \t " : " ; " )); foreach ( $oa [ 0 ] as $d => $b ){ preg_match_all ( " ~(( \" [^ \" ]* \" )+|[^ $Wa ]*) $Wa ~ " , $b . $Wa , $Gd ); if ( ! $d &&! array_diff ( $Gd [ 1 ], $mb )){ $mb = $Gd [ 1 ]; $wb -- ;} else { $r = array (); foreach ( $Gd [ 1 ] as $l => $Pc ){ $r [ idf_escape ( $mb [ $l ])] = ( $Pc == " " && $p [ $mb [ $l ]][ " null " ] ? " NULL " : q ( str_replace ( '""' , '"' , preg_replace ( '~^"|"$~' , '' , $Pc ))));} $i = insert_update ( $m , $r , $Qa ); if ( ! $i ){ break ;}}} if ( $i ){ queries ( " COMMIT " );} queries_redirect ( remove_from_uri ( " page " ), lang ( 227 , $wb ), $i ); queries ( " ROLLBACK " );} else { $n = upload_error ( $Ia );}}} $Ea = $o -> tableName ( $D ); page_header ( lang ( 33 ) . " : $Ea " , $n ); session_write_close (); $r = null ; if ( isset ( $Td [ " insert " ])){ $r = " " ; foreach (( array ) $_GET [ " where " ] as $b ){ if ( count ( $ha [ $b [ " col " ]]) == 1 && ( $b [ " op " ] == " = " || ( ! $b [ " op " ] &&! ereg ( '[_%]' , $b [ " val " ])))){ $r .= " &set " . urlencode ( " [ " . bracket_escape ( $b [ " col " ]) . " ] " ) . " = " . urlencode ( $b [ " val " ]);}}} $o -> selectLinks ( $D , $r ); if ( ! $B ){ echo " <p class='error'> " . lang ( 228 ) . ( $p ? " . " : " : " . error ()) . " \n " ;} else { echo " <form action='' id='form'> \n " , " <div style='display: none;'> " ; hidden_fields_get (); echo ( DB != " " ? '<input type="hidden" name="db" value="' . h ( DB ) . '">' . ( isset ( $_GET [ " ns " ]) ? '<input type="hidden" name="ns" value="' . h ( $_GET [ " ns " ]) . '">' : " " ) : " " ); echo '<input type="hidden" name="select" value="' . h ( $m ) . '">' , " </div> \n " ; $o -> selectColumnsPrint ( $Q , $B ); $o -> selectSearchPrint ( $s , $B , $J ); $o -> selectOrderPrint ( $Xa , $B , $J ); $o -> selectLimitPrint ( $O ); $o -> selectLengthPrint ( $Db ); $o -> selectActionPrint ( $Db ); echo " </form> \n " ; $ca = $_GET [ " page " ]; if ( $ca == " last " ){ $Ya = $g -> result ( " SELECT COUNT(*) FROM " . table ( $m ) . ( $s ? " WHERE " . implode ( " AND " , $s ) : " " )); $ca = floor ( max ( 0 , $Ya - 1 ) / $O );} $j = " SELECT " . limit (( + $O && $pa && count ( $pa ) < count ( $Q ) && $v == " sql " ? " SQL_CALC_FOUND_ROWS " : " " ) . $Yb ,( $s ? " \n WHERE " . implode ( " AND " , $s ) : " " ) . $Ld ,( $O != " " ? + $O : null ),( $ca ? $O * $ca : 0 ), " \n " ); echo $o -> selectQuery ( $j ); $i = $g -> query ( $j ); if ( ! $i ){ echo " <p class='error'> " . error () . " \n " ;} else { if ( $v == " mssql " ){ $i -> seek ( $O * $ca );} $Hc = array (); echo " <form action='' method='post' enctype='multipart/form-data'> \n " ; $H = array (); while ( $a = $i -> fetch_assoc ()){ $H [] = $a ;} if ( $_GET [ " page " ] != " last " ){ $Ya = ( + $O && $pa && count ( $pa ) < count ( $Q ) ? ( $v == " sql " ? $g -> result ( " SELECT FOUND_ROWS() " ) : $g -> result ( " SELECT COUNT(*) FROM ( $j ) x " )) : count ( $H ));} if ( ! $H ){ echo " <p class='message'> " . lang ( 82 ) . " \n " ;} else { $Bd = $o -> backwardKeys ( $m , $Ea ); echo " <table cellspacing='0' class='nowrap' onclick='tableClick(event);' onkeydown='return editingKeydown(event);'> \n " , " <thead><tr> " . ( ! $pa && $Q ? " " : " <td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href=' " . h ( $_GET [ " modify " ] ? remove_from_uri ( " modify " ) : $_SERVER [ " REQUEST_URI " ] . " &modify=1 " ) . " '> " . lang ( 119 ) . " </a> " ); $Cd = array (); $da = array (); reset ( $Q ); $ke = 1 ; foreach ( $H [ 0 ] as $d => $b ){ if ( $D [ " Oid " ] != " t " || $d != " oid " ){ $b = $_GET [ " columns " ][ key ( $Q )]; $e = $p [ $Q ? $b [ " col " ] : $d ]; $f = ( $e ? $o -> fieldName ( $e , $ke ) : " * " ); if ( $f != " " ){ $ke ++ ; $Cd [ $d ] = $f ; $C = idf_escape ( $d ); echo '<th><a href="' . h ( remove_from_uri ( '(order|desc)[^=]*|page' ) . '&order%5B0%5D=' . urlencode ( $d ) . ( $Xa [ 0 ] == $C || $Xa [ 0 ] == $d || ( ! $Xa && $pa [ 0 ] == $C ) ? '&desc%5B0%5D=1' : '' )) . '">' . apply_sql_function ( $b [ " fun " ], $f ) . " </a> " ;} $da [ $d ] = $b [ " fun " ]; next ( $Q );}} $ec = array (); if ( $_GET [ " modify " ]){ foreach ( $H
as $a ){ foreach ( $a
as $d => $b ){ $ec [ $d ] = max ( $ec [ $d ], min ( 40 , strlen ( utf8_decode ( $b ))));}}} echo ( $Bd ? " <th> " . lang ( 229 ) : " " ) . " </thead> \n " ; foreach ( $o -> rowDescriptions ( $H , $ha ) as $fa => $a ){ $pd = unique_array ( $H [ $fa ], $J ); $gb = " " ; foreach ( $pd
as $d => $b ){ $gb .= " & " . ( isset ( $b ) ? urlencode ( " where[ " . bracket_escape ( $d ) . " ] " ) . " = " . urlencode ( $b ) : " null%5B%5D= " . urlencode ( $d ));} echo " <tr " . odd () . " > " . ( ! $pa && $Q ? " " : " <td> " . checkbox ( " check[] " , substr ( $gb , 1 ), in_array ( substr ( $gb , 1 ),( array ) $_POST [ " check " ]), " " , " this.form['all'].checked = false; formUncheck('all-page'); " ) . ( count ( $pa ) < count ( $Q ) || information_schema ( DB ) ? " " : " <a href=' " . h ( ME . " edit= " . urlencode ( $m ) . $gb ) . " '> " . lang ( 119 ) . " </a> " )); foreach ( $a
as $d => $b ){ if ( isset ( $Cd [ $d ])){ $e = $p [ $d ]; if ( $b != " " && ( ! isset ( $Hc [ $d ]) || $Hc [ $d ] != " " )){ $Hc [ $d ] = ( is_mail ( $b ) ? $Cd [ $d ] : " " );} $w = " " ; $b = $o -> editVal ( $b , $e ); if ( ! isset ( $b )){ $b = " <i>NULL</i> " ;} else { if ( ereg ( 'blob|bytea|raw|file' , $e [ " type " ]) && $b != " " ){ $w = h ( ME . 'download=' . urlencode ( $m ) . '&field=' . urlencode ( $d ) . $gb );} if ( $b === " " ){ $b = " " ;} elseif ( $Db != " " && ereg ( 'text|blob' , $e [ " type " ]) && is_utf8 ( $b )){ $b = shorten_utf8 ( $b , max ( 0 , + $Db ));} else { $b = h ( $b );} if ( ! $w ){ foreach (( array ) $ha [ $d ] as $A ){ if ( count ( $ha [ $d ]) == 1 || end ( $A [ " source " ]) == $d ){ $w = " " ; foreach ( $A [ " source " ] as $l => $Ga ){ $w .= where_link ( $l , $A [ " target " ][ $l ], $H [ $fa ][ $Ga ]);} $w = h (( $A [ " db " ] != " " ? preg_replace ( '~([?&]db=)[^&]+~' , '\\1' . urlencode ( $A [ " db " ]), ME ) : ME ) . 'select=' . urlencode ( $A [ " table " ]) . $w ); if ( count ( $A [ " source " ]) == 1 ){ break ;}}}} if ( $d == " COUNT(*) " ){ $w = h ( ME . " select= " . urlencode ( $m )); $l = 0 ; foreach (( array ) $_GET [ " where " ] as $y ){ if ( ! array_key_exists ( $y [ " col " ], $pd )){ $w .= h ( where_link ( $l ++ , $y [ " col " ], $y [ " val " ], $y [ " op " ]));}} foreach ( $pd
as $Ma => $y ){ $w .= h ( where_link ( $l ++ , $Ma , $y ));}}} if ( ! $w ){ if ( is_mail ( $b )){ $w = " mailto: $b " ;} if ( $le = is_url ( $a [ $d ])){ $w = ( $le == " http " && $Ac ? $a [ $d ] : " $le ://www.adminer.org/redirect/?url= " . urlencode ( $a [ $d ]));}} $S = h ( " val[ $gb ][ " . bracket_escape ( $d ) . " ] " ); $q = $_POST [ " val " ][ $gb ][ bracket_escape ( $d )]; $Pd = h ( isset ( $q ) ? $q : $a [ $d ]); $uf = strpos ( $b , " <i>...</i> " ); $Yd = is_utf8 ( $b ) && $H [ $fa ][ $d ] == $a [ $d ] &&! $da [ $d ]; $Wd = ereg ( 'text|lob' , $e [ " type " ]); echo (( $_GET [ " modify " ] && $Yd ) || isset ( $q ) ? " <td> " . ( $Wd ? " <textarea name=' $S ' cols='30' rows=' " . ( substr_count ( $a [ $d ], " \n " ) + 1 ) . " '> $Pd </textarea> " : " <input name=' $S ' value=' $Pd ' size=' $ec[$d] '> " ) : " <td id=' $S ' ondblclick= \" " . ( $Yd ? " selectDblClick(this, event " . ( $uf ? " , 2 " : ( $Wd ? " , 1 " : " " )) . " ) " : " alert(' " . h ( lang ( 230 )) . " ') " ) . " ; \" > " . $o -> selectVal ( $b , $w , $e ));}} if ( $Bd ){ echo " <td> " ;} $o -> backwardKeysPrint ( $Bd , $H [ $fa ]); echo " </tr> \n " ;} echo " </table> \n " ;} parse_str ( $_COOKIE [ " adminer_export " ], $Xb ); if ( $H || $ca ){ $md = true ; if ( $_GET [ " page " ] != " last " &&+ $O && count ( $pa ) >= count ( $Q ) && ( $Ya >= $O || $ca )){ $Ya = $D [ " Rows " ]; if ( ! isset ( $Ya ) || $s || ( $D [ " Engine " ] == " InnoDB " && $Ya < max ( 1e4 , 2 * ( $ca + 1 ) * $O ))){ ob_flush (); flush (); $Ya = $g -> result ( " SELECT COUNT(*) FROM " . table ( $m ) . ( $s ? " WHERE " . implode ( " AND " , $s ) : " " ));} else { $md = false ;}} echo " <p class='pages'> " ; if ( + $O && $Ya > $O ){ $Nd = floor (( $Ya - 1 ) / $O ); echo '<a href="' . h ( remove_from_uri ( " page " )) . " \" onclick= \" pageClick(this.href, +prompt(' " . lang ( 231 ) . " ', ' " . ( $ca + 1 ) . " '), event); return false; \" > " . lang ( 231 ) . " </a>: " , pagination ( 0 , $ca ) . ( $ca > 5 ? " ... " : " " ); for ( $l = max ( 1 , $ca - 4 ); $l < min ( $Nd , $ca + 5 ); $l ++ ){ echo
pagination ( $l , $ca );} echo ( $ca + 5 < $Nd ? " ... " : " " ) . ( $md ? pagination ( $Nd , $ca ) : ' <a href="' . h ( remove_from_uri () . " &page=last " ) . '">' . lang ( 232 ) . " </a> " );} echo " ( " . ( $md ? " " : " ~ " ) . lang ( 122 , $Ya ) . " ) " . checkbox ( " all " , 1 , 0 , lang ( 233 )) . " \n " ; if ( ! information_schema ( DB )){ echo '<fieldset><legend>' , lang ( 31 ), ' </ legend >< div >
< input type = " submit " value = " ',lang(141),' " title = " ',lang(226),' " class = " jsonly " >
< input type = " submit " name = " edit " value = " ',lang(31),' " >
< input type = " submit " name = " clone " value = " ',lang(234),' " >
< input type = " submit " name = " delete " value = " ',lang(144),' " onclick = " return confirm( \ '',lang(0);?> (' + (this.form['all'].checked ? <?php echo $Ya ,' : formChecked(this, /check/)) + \ ') \ '); " >
</ div ></ fieldset >
';}print_fieldset("export",lang(113));$Na=$o->dumpOutput();echo($Na?adminer_html_select("output",$Na,$Xb["output"])." ":""),adminer_html_select("format",$o->dumpFormat(),$Xb["format"])," <input type=' submit ' name=' export ' value=' " .lang(113). " ' onclick=' eventStop ( event ); '>\n","</div></fieldset>\n";}print_fieldset("import",lang(235),!$H);echo"<input type=' file ' name=' csv_file '> ",adminer_html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$Xb["format"],1);echo" <input type=' submit ' name=' import ' value=' " .lang(235). " '>","<input type=' hidden ' name=' token ' value=' $M '>\n","</div></fieldset>\n";$o->selectEmailPrint(array_filter($Hc,' strlen '),$B);echo"</form>\n";}}}elseif(isset($_GET["variables"])){$fc=isset($_GET["status"]);page_header($fc?lang(73):lang(72));$Pe=($fc?show_status():show_variables());if(!$Pe){echo"<p class=' message '>".lang(82)."\n";}else{echo"<table cellspacing=' 0 ' > \n " ;foreach( $Pe
as $d => $b ){ echo " <tr> " , " <th><code class='jush- " . $v . ( $fc ? " status " : " set " ) . " '> " . h ( $d ) . " </code> " , " <td> " . nbsp ( $b );} echo " </table> \n " ;}} elseif ( isset ( $_GET [ " script " ])){ header ( " Content-Type: text/javascript; charset=utf-8 " ); if ( $_GET [ " script " ] == " db " ){ $Yc = array ( " Data_length " => 0 , " Index_length " => 0 , " Data_free " => 0 ); foreach ( table_status () as $a ){ $S = js_escape ( $a [ " Name " ]); json_row ( " Comment- $S " , nbsp ( $a [ " Comment " ])); if ( ! is_view ( $a )){ foreach ( array ( " Engine " , " Collation " ) as $d ){ json_row ( " $d - $S " , nbsp ( $a [ $d ]));} foreach ( $Yc + array ( " Auto_increment " => 0 , " Rows " => 0 ) as $d => $b ){ if ( $a [ $d ] != " " ){ $b = number_format ( $a [ $d ], 0 , '.' , lang ( 236 )); json_row ( " $d - $S " ,( $d == " Rows " && $a [ " Engine " ] == " InnoDB " && $b ? " ~ $b " : $b )); if ( isset ( $Yc [ $d ])){ $Yc [ $d ] += ( $a [ " Engine " ] != " InnoDB " || $d != " Data_free " ? $a [ $d ] : 0 );}} elseif ( array_key_exists ( $d , $a )){ json_row ( " $d - $S " );}}}} foreach ( $Yc
as $d => $b ){ json_row ( " sum- $d " , number_format ( $b , 0 , '.' , lang ( 236 )));} json_row ( " " );} else { foreach ( count_tables ( get_databases ()) as $t => $b ){ json_row ( " tables- " . js_escape ( $t ), $b );} json_row ( " " );} exit ;} else { $Fe = array_merge (( array ) $_POST [ " tables " ],( array ) $_POST [ " views " ]); if ( $Fe &&! $n &&! $_POST [ " search " ]){ $i = true ; $va = " " ; if ( $v == " sql " && count ( $_POST [ " tables " ]) > 1 && ( $_POST [ " drop " ] || $_POST [ " truncate " ] || $_POST [ " copy " ])){ queries ( " SET foreign_key_checks = 0 " );} if ( $_POST [ " truncate " ]){ if ( $_POST [ " tables " ]){ $i = truncate_tables ( $_POST [ " tables " ]);} $va = lang ( 237 );} elseif ( $_POST [ " move " ]){ $i = move_tables (( array ) $_POST [ " tables " ],( array ) $_POST [ " views " ], $_POST [ " target " ]); $va = lang ( 238 );} elseif ( $_POST [ " copy " ]){ $i = copy_tables (( array ) $_POST [ " tables " ],( array ) $_POST [ " views " ], $_POST [ " target " ]); $va = lang ( 239 );} elseif ( $_POST [ " drop " ]){ if ( $_POST [ " views " ]){ $i = drop_views ( $_POST [ " views " ]);} if ( $i && $_POST [ " tables " ]){ $i = drop_tables ( $_POST [ " tables " ]);} $va = lang ( 240 );} elseif ( $_POST [ " tables " ] && ( $i = queries (( $_POST [ " optimize " ] ? " OPTIMIZE " : ( $_POST [ " check " ] ? " CHECK " : ( $_POST [ " repair " ] ? " REPAIR " : " ANALYZE " ))) . " TABLE " . implode ( " , " , array_map ( 'idf_escape' , $_POST [ " tables " ]))))){ while ( $a = $i -> fetch_assoc ()){ $va .= " <b> " . h ( $a [ " Table " ]) . " </b>: " . h ( $a [ " Msg_text " ]) . " <br> " ;}} queries_redirect ( substr ( ME , 0 , - 1 ), $va , $i );} page_header (( $_GET [ " ns " ] == " " ? lang ( 65 ) . " : " . h ( DB ) : lang ( 80 ) . " : " . h ( $_GET [ " ns " ])), $n , true ); if ( $o -> homepage ()){ if ( $_GET [ " ns " ] !== " " ){ echo '<a href="' . h ( ME ) . 'schema=">' . lang ( 111 ) . " </a> \n " , " <h3> " . lang ( 241 ) . " </h3> \n " ; $jd = tables_list (); if ( ! $jd ){ echo " <p class='message'> " . lang ( 6 ) . " \n " ;} else { echo " <form action='' method='post'> \n " , " <p> " . lang ( 242 ) . " : <input name='query' value=' " . h ( $_POST [ " query " ]) . " '> <input type='submit' name='search' value=' " . lang ( 36 ) . " '> \n " ; if ( $_POST [ " search " ] && $_POST [ " query " ] != " " ){ search_tables ();} echo " <table cellspacing='0' class='nowrap' onclick='tableClick(event);'> \n " , '<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);"><th>' . lang ( 100 ) . '<td>' . lang ( 243 ) . '<td>' . lang ( 76 ) . '<td>' . lang ( 244 ) . '<td>' . lang ( 245 ) . '<td>' . lang ( 246 ) . '<td>' . lang ( 92 ) . '<td>' . lang ( 247 ) . ( support ( " comment " ) ? '<td>' . lang ( 94 ) : '' ) . " </thead> \n " ; foreach ( $jd
as $f => $z ){ $cc = ( isset ( $z ) &&! eregi ( " table " , $z )); echo '<tr' . odd () . '><td>' . checkbox (( $cc ? " views[] " : " tables[] " ), $f , in_array ( $f , $Fe , true ), " " , " formUncheck('check-all'); " ), '<th><a href="' . h ( ME ) . 'table=' . urlencode ( $f ) . '">' . h ( $f ) . '</a>' ; if ( $cc ){ echo '<td colspan="6"><a href="' . h ( ME ) . " view= " . urlencode ( $f ) . '">' . lang ( 99 ) . '</a>' , '<td align="right"><a href="' . h ( ME ) . " select= " . urlencode ( $f ) . '">?</a>' ;} else { foreach ( array ( " Engine " => " " , " Collation " => " " , " Data_length " => " create " , " Index_length " => " indexes " , " Data_free " => " edit " , " Auto_increment " => " auto_increment=1&create " , " Rows " => " select " ) as $d => $w ){ echo ( $w ? " <td align='right'><a href=' " . h ( ME . " $w = " ) . urlencode ( $f ) . " ' id=' $d - " . h ( $f ) . " '>?</a> " : " <td id=' $d - " . h ( $f ) . " '> " );}} echo ( support ( " comment " ) ? " <td id='Comment- " . h ( $f ) . " '> " : " " );} echo " <tr><td> <th> " . lang ( 223 , count ( $jd )), " <td> " . nbsp ( $v == " sql " ? $g -> result ( " SELECT @@storage_engine " ) : " " ), " <td> " . nbsp ( db_collation ( DB , collations ())); foreach ( array ( " Data_length " , " Index_length " , " Data_free " ) as $d ){ echo " <td align='right' id='sum- $d '> " ;} echo " </table> \n " ; if ( ! information_schema ( DB )){ echo " <p> " . ( $v == " sql " ? " <input type='submit' value=' " . lang ( 248 ) . " '> <input type='submit' name='optimize' value=' " . lang ( 249 ) . " '> <input type='submit' name='check' value=' " . lang ( 250 ) . " '> <input type='submit' name='repair' value=' " . lang ( 251 ) . " '> " : " " ) . " <input type='submit' name='truncate' value=' " . lang ( 252 ) . " ' " . confirm ( " formChecked(this, /tables/) " ) . " > <input type='submit' name='drop' value=' " . lang ( 78 ) . " ' " . confirm ( " formChecked(this, /tables|views/) " , 1 ) . " > \n " ; $_ = ( support ( " scheme " ) ? schemas () : get_databases ()); if ( count ( $_ ) != 1 && $v != " sqlite " ){ $t = ( isset ( $_POST [ " target " ]) ? $_POST [ " target " ] : ( support ( " scheme " ) ? $_GET [ " ns " ] : DB )); echo " <p> " . lang ( 253 ) . " : " ,( $_ ? adminer_html_select ( " target " , $_ , $t ) : '<input name="target" value="' . h ( $t ) . '">' ), " <input type='submit' name='move' value=' " . lang ( 254 ) . " ' onclick='eventStop(event);'> " ,( support ( " copy " ) ? " <input type='submit' name='copy' value=' " . lang ( 255 ) . " ' onclick='eventStop(event);'> " : " " ), " \n " ;} echo " <input type='hidden' name='token' value=' $M '> \n " ;} echo " </form> \n " ;} echo '<p><a href="' . h ( ME ) . 'create=">' . lang ( 148 ) . " </a> \n " ; if ( support ( " view " )){ echo '<a href="' . h ( ME ) . 'view=">' . lang ( 180 ) . " </a> \n " ;} if ( support ( " routine " )){ echo " <h3> " . lang ( 116 ) . " </h3> \n " ; $Ue = routines (); if ( $Ue ){ echo " <table cellspacing='0'> \n " , '<thead><tr><th>' . lang ( 181 ) . '<td>' . lang ( 89 ) . '<td>' . lang ( 198 ) . " <td> </thead> \n " ; odd ( '' ); foreach ( $Ue
as $a ){ echo '<tr' . odd () . '>' , '<th><a href="' . h ( ME ) . ( $a [ " ROUTINE_TYPE " ] == " FUNCTION " ? 'callf=' : 'call=' ) . urlencode ( $a [ " ROUTINE_NAME " ]) . '">' . h ( $a [ " ROUTINE_NAME " ]) . '</a>' , '<td>' . h ( $a [ " ROUTINE_TYPE " ]), '<td>' . h ( $a [ " DTD_IDENTIFIER " ]), '<td><a href="' . h ( ME ) . ( $a [ " ROUTINE_TYPE " ] == " FUNCTION " ? 'function=' : 'procedure=' ) . urlencode ( $a [ " ROUTINE_NAME " ]) . '">' . lang ( 107 ) . " </a> " ;} echo " </table> \n " ;} echo '<p><a href="' . h ( ME ) . 'procedure=">' . lang ( 197 ) . '</a> <a href="' . h ( ME ) . 'function=">' . lang ( 196 ) . " </a> \n " ;} if ( support ( " sequence " )){ echo " <h3> " . lang ( 256 ) . " </h3> \n " ; $ff = get_vals ( " SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() " ); if ( $ff ){ echo " <table cellspacing='0'> \n " , " <thead><tr><th> " . lang ( 181 ) . " </thead> \n " ; odd ( '' ); foreach ( $ff
as $b ){ echo " <tr " . odd () . " ><th><a href=' " . h ( ME ) . " sequence= " . urlencode ( $b ) . " '> " . h ( $b ) . " </a> \n " ;} echo " </table> \n " ;} echo " <p><a href=' " . h ( ME ) . " sequence='> " . lang ( 203 ) . " </a> \n " ;} if ( support ( " type " )){ echo " <h3> " . lang ( 11 ) . " </h3> \n " ; $R = types (); if ( $R ){ echo " <table cellspacing='0'> \n " , " <thead><tr><th> " . lang ( 181 ) . " </thead> \n " ; odd ( '' ); foreach ( $R
as $b ){ echo " <tr " . odd () . " ><th><a href=' " . h ( ME ) . " type= " . urlencode ( $b ) . " '> " . h ( $b ) . " </a> \n " ;} echo " </table> \n " ;} echo " <p><a href=' " . h ( ME ) . " type='> " . lang ( 207 ) . " </a> \n " ;} if ( support ( " event " )){ echo " <h3> " . lang ( 117 ) . " </h3> \n " ; $H = get_rows ( " SHOW EVENTS " ); if ( $H ){ echo " <table cellspacing='0'> \n " , " <thead><tr><th> " . lang ( 181 ) . " <td> " . lang ( 257 ) . " <td> " . lang ( 187 ) . " <td> " . lang ( 188 ) . " </thead> \n " ; foreach ( $H
as $a ){ echo " <tr> " , '<th><a href="' . h ( ME ) . 'event=' . urlencode ( $a [ " Name " ]) . '">' . h ( $a [ " Name " ]) . " </a> " , " <td> " . ( $a [ " Execute at " ] ? lang ( 258 ) . " <td> " . $a [ " Execute at " ] : lang ( 189 ) . " " . $a [ " Interval value " ] . " " . $a [ " Interval field " ] . " <td> $a[Starts] " ), " <td> $a[Ends] " ;} echo " </table> \n " ;} echo '<p><a href="' . h ( ME ) . 'event=">' . lang ( 186 ) . " </a> \n " ;} if ( $jd ){ echo " <script type='text/javascript'>ajaxSetHtml(' " . js_escape ( ME ) . " script=db');</script> \n " ;}}}} page_footer ();