@@ -0,0 +1,909 @@
< ? php
/** Adminer - Compact database management
* @ link https :// www . adminer . org /
* @ author Jakub Vrana , https :// www . vrana . cz /
* @ copyright 2007 Jakub Vrana
* @ license https :// www . apache . org / licenses / LICENSE - 2.0 Apache License , Version 2.0
* @ license https :// www . gnu . org / licenses / gpl - 2.0 . html GNU General Public License , version 2 ( one or other )
* @ version 4.17 . 1
*/ $fa = " 4.17.1 " ; function
adminer_errors ( $jc , $lc ){ return !! preg_match ( '~^(Trying to access array offset on( value of type)? null|Undefined (array key|property))~' , $lc );} error_reporting ( 6135 ); set_error_handler ( 'adminer_errors' , E_WARNING ); $Cc =! preg_match ( '~^(unsafe_raw)?$~' , ini_get ( " filter.default " )); if ( $Cc || ini_get ( " filter.default_flags " )){ foreach ( array ( '_GET' , '_POST' , '_COOKIE' , '_SERVER' ) as $X ){ $sh = filter_input_array ( constant ( " INPUT $X " ), FILTER_UNSAFE_RAW ); if ( $sh ) $$X = $sh ;}} if ( function_exists ( " mb_internal_encoding " )) mb_internal_encoding ( " 8bit " ); function
connection (){ global $g ; return $g ;} function
adminer (){ global $c ; return $c ;} function
version (){ global $fa ; return $fa ;} function
idf_unescape ( $v ){ if ( ! preg_match ( '~^[`\'"[]~' , $v )) return $v ; $Fd = substr ( $v , - 1 ); return
str_replace ( $Fd . $Fd , $Fd , substr ( $v , 1 , - 1 ));} function
escape_string ( $X ){ return
substr ( q ( $X ), 1 , - 1 );} function
number ( $X ){ return
preg_replace ( '~[^0-9]+~' , '' , $X );} function
number_type (){ return '((?<!o)int(?!er)|numeric|real|float|double|decimal|money)' ;} function
remove_slashes ( $vf , $Cc = false ){ if ( function_exists ( " get_magic_quotes_gpc " ) && get_magic_quotes_gpc ()){ while ( list ( $z , $X ) = each ( $vf )){ foreach ( $X
as $yd => $W ){ unset ( $vf [ $z ][ $yd ]); if ( is_array ( $W )){ $vf [ $z ][ stripslashes ( $yd )] = $W ; $vf [] =& $vf [ $z ][ stripslashes ( $yd )];} else $vf [ $z ][ stripslashes ( $yd )] = ( $Cc ? $W : stripslashes ( $W ));}}}} function
bracket_escape ( $v , $Aa = false ){ static $fh = array ( ':' => ':1' , ']' => ':2' , '[' => ':3' , '"' => ':4' ); return
strtr ( $v ,( $Aa ? array_flip ( $fh ) : $fh ));} function
min_version ( $Gh , $Sd = " " , $h = null ){ global $g ; if ( ! $h ) $h = $g ; $dg = $h -> server_info ; if ( $Sd && preg_match ( '~([\d.]+)-MariaDB~' , $dg , $C )){ $dg = $C [ 1 ]; $Gh = $Sd ;} return $Gh && version_compare ( $dg , $Gh ) >= 0 ;} function
charset ( $g ){ return ( min_version ( " 5.5.3 " , 0 , $g ) ? " utf8mb4 " : " utf8 " );} function
script ( $ng , $eh = " \n " ){ return " <script " . nonce () . " > $ng </script> $eh " ;} function
script_src ( $xh ){ return " <script src=' " . h ( $xh ) . " ' " . nonce () . " ></script> \n " ;} function
nonce (){ return ' nonce="' . get_nonce () . '"' ;} function
target_blank (){ return ' target="_blank" rel="noreferrer noopener"' ;} function
h ( $yg ){ return
str_replace ( " \0 " , " � " , htmlspecialchars ( $yg , ENT_QUOTES , 'utf-8' ));} function
nl_br ( $yg ){ return
str_replace ( " \n " , " <br> " , $yg );} function
checkbox ( $E , $Y , $Ra , $Bd = " " , $Ce = " " , $Va = " " , $Cd = " " ){ $K = " <input type='checkbox' name=' $E ' value=' " . h ( $Y ) . " ' " . ( $Ra ? " checked " : " " ) . ( $Cd ? " aria-labelledby=' $Cd ' " : " " ) . " > " . ( $Ce ? script ( " qsl('input').onclick = function () { $Ce }; " , " " ) : " " ); return ( $Bd != " " || $Va ? " <label " . ( $Va ? " class=' $Va ' " : " " ) . " > $K " . h ( $Bd ) . " </label> " : $K );} function
optionlist ( $Ge , $Yf = null , $Ah = false ){ $K = " " ; foreach ( $Ge
as $yd => $W ){ $He = array ( $yd => $W ); if ( is_array ( $W )){ $K .= '<optgroup label="' . h ( $yd ) . '">' ; $He = $W ;} foreach ( $He
as $z => $X ) $K .= '<option' . ( $Ah || is_string ( $z ) ? ' value="' . h ( $z ) . '"' : '' ) . ( $Yf !== null && ( $Ah || is_string ( $z ) ? ( string ) $z : $X ) === $Yf ? ' selected' : '' ) . '>' . h ( $X ); if ( is_array ( $W )) $K .= '</optgroup>' ;} return $K ;} function
html_select ( $E , $Ge , $Y = " " , $Be = true , $Cd = " " ){ if ( $Be ) return " <select name=' " . h ( $E ) . " ' " . ( $Cd ? " aria-labelledby=' $Cd ' " : " " ) . " > " . optionlist ( $Ge , $Y ) . " </select> " . ( is_string ( $Be ) ? script ( " qsl('select').onchange = function () { $Be }; " , " " ) : " " ); $K = " " ; foreach ( $Ge
as $z => $X ) $K .= " <label><input type='radio' name=' " . h ( $E ) . " ' value=' " . h ( $z ) . " ' " . ( $z == $Y ? " checked " : " " ) . " > " . h ( $X ) . " </label> " ; return $K ;} function
confirm ( $D = " " , $Zf = " qsl('input') " ){ return
script ( " $Zf .onclick = function () { return confirm(' " . ( $D ? js_escape ( $D ) : lang ( 0 )) . " '); }; " , " " );} function
print_fieldset ( $u , $Kd , $Jh = false ){ echo " <fieldset><legend> " , " <a href='#fieldset- $u '> $Kd </a> " , script ( " qsl('a').onclick = partial(toggle, 'fieldset- $u '); " , " " ), " </legend> " , " <div id='fieldset- $u ' " . ( $Jh ? " " : " class='hidden' " ) . " > \n " ;} function
bold ( $Ha , $Va = " " ){ return ( $Ha ? " class='active $Va ' " : ( $Va ? " class=' $Va ' " : " " ));} function
js_escape ( $yg ){ return
addcslashes ( $yg , " \r \n ' \\ / " );} function
ini_bool ( $md ){ $X = ini_get ( $md ); return ( preg_match ( '~^(on|true|yes)$~i' , $X ) || ( int ) $X );} function
sid (){ static $K ; if ( $K === null ) $K = ( SID &&! ( $_COOKIE && ini_bool ( " session.use_cookies " ))); return $K ;} function
set_password ( $Fh , $O , $V , $df ){ $_SESSION [ " pwds " ][ $Fh ][ $O ][ $V ] = ( $_COOKIE [ " adminer_key " ] && is_string ( $df ) ? array ( encrypt_string ( $df , $_COOKIE [ " adminer_key " ])) : $df );} function
get_password (){ $K = get_session ( " pwds " ); if ( is_array ( $K )) $K = ( $_COOKIE [ " adminer_key " ] ? decrypt_string ( $K [ 0 ], $_COOKIE [ " adminer_key " ]) : false ); return $K ;} function
q ( $yg ){ global $g ; return $g -> quote ( $yg );} function
get_vals ( $I , $d = 0 ){ global $g ; $K = array (); $J = $g -> query ( $I ); if ( is_object ( $J )){ while ( $L = $J -> fetch_row ()) $K [] = $L [ $d ];} return $K ;} function
get_key_vals ( $I , $h = null , $gg = true ){ global $g ; if ( ! is_object ( $h )) $h = $g ; $K = array (); $J = $h -> query ( $I ); if ( is_object ( $J )){ while ( $L = $J -> fetch_row ()){ if ( $gg ) $K [ $L [ 0 ]] = $L [ 1 ]; else $K [] = $L [ 0 ];}} return $K ;} function
get_rows ( $I , $h = null , $m = " <p class='error'> " ){ global $g ; $kb = ( is_object ( $h ) ? $h : $g ); $K = array (); $J = $kb -> query ( $I ); if ( is_object ( $J )){ while ( $L = $J -> fetch_assoc ()) $K [] = $L ;} elseif ( ! $J &&! is_object ( $h ) && $m && ( defined ( " PAGE_HEADER " ) || $m == " -- " )) echo $m . error () . " \n " ; return $K ;} function
unique_array ( $L , $x ){ foreach ( $x
as $w ){ if ( preg_match ( " ~PRIMARY|UNIQUE~ " , $w [ " type " ])){ $K = array (); foreach ( $w [ " columns " ] as $z ){ if ( ! isset ( $L [ $z ])) continue
2 ; $K [ $z ] = $L [ $z ];} return $K ;}}} function
escape_key ( $z ){ if ( preg_match ( '(^([\w(]+)(' . str_replace ( " _ " , " .* " , preg_quote ( idf_escape ( " _ " ))) . ')([ \w)]+)$)' , $z , $C )) return $C [ 1 ] . idf_escape ( idf_unescape ( $C [ 2 ])) . $C [ 3 ]; return
idf_escape ( $z );} function
where ( $Z , $o = array ()){ global $g , $y ; $K = array (); foreach (( array ) $Z [ " where " ] as $z => $X ){ $z = bracket_escape ( $z , 1 ); $d = escape_key ( $z ); $K [] = $d . ( $y == " sql " && $o [ $z ][ " type " ] == " json " ? " = CAST( " . q ( $X ) . " AS JSON) " : ( $y == " sql " && is_numeric ( $X ) && preg_match ( '~\.~' , $X ) ? " LIKE " . q ( $X ) : ( $y == " mssql " ? " LIKE " . q ( preg_replace ( '~[_%[]~' , '[\0]' , $X )) : " = " . unconvert_field ( $o [ $z ], q ( $X ))))); if ( $y == " sql " && preg_match ( '~char|text~' , $o [ $z ][ " type " ]) && preg_match ( " ~[^ -@]~ " , $X )) $K [] = " $d = " . q ( $X ) . " COLLATE " . charset ( $g ) . " _bin " ;} foreach (( array ) $Z [ " null " ] as $z ) $K [] = escape_key ( $z ) . " IS NULL " ; return
implode ( " AND " , $K );} function
where_check ( $X , $o = array ()){ parse_str ( $X , $Pa ); remove_slashes ( array ( & $Pa )); return
where ( $Pa , $o );} function
where_link ( $t , $d , $Y , $De = " = " ){ return " &where%5B $t %5D%5Bcol%5D= " . urlencode ( $d ) . " &where%5B $t %5D%5Bop%5D= " . urlencode (( $Y !== null ? $De : " IS NULL " )) . " &where%5B $t %5D%5Bval%5D= " . urlencode ( $Y );} function
convert_fields ( $e , $o , $N = array ()){ $K = " " ; foreach ( $e
as $z => $X ){ if ( $N &&! in_array ( idf_escape ( $z ), $N )) continue ; $va = convert_field ( $o [ $z ]); if ( $va ) $K .= " , $va AS " . idf_escape ( $z );} return $K ;} function
cookie ( $E , $Y , $Nd = 2592000 ){ global $ba ; return
header ( " Set-Cookie: $E = " . urlencode ( $Y ) . ( $Nd ? " ; expires= " . gmdate ( " D, d M Y H:i:s " , time () + $Nd ) . " GMT " : " " ) . " ; path= " . preg_replace ( '~\?.*~' , '' , $_SERVER [ " REQUEST_URI " ]) . ( $ba ? " ; secure " : " " ) . " ; HttpOnly; SameSite=lax " , false );} function
restart_session (){ if ( ! ini_bool ( " session.use_cookies " )) session_start ();} function
stop_session ( $Gc = false ){ $_h = ini_bool ( " session.use_cookies " ); if ( ! $_h || $Gc ){ session_write_close (); if ( $_h &&@ ini_set ( " session.use_cookies " , false ) === false ) session_start ();}} function & get_session ( $z ){ return $_SESSION [ $z ][ DRIVER ][ SERVER ][ $_GET [ " username " ]];} function
set_session ( $z , $X ){ $_SESSION [ $z ][ DRIVER ][ SERVER ][ $_GET [ " username " ]] = $X ;} function
auth_url ( $Fh , $O , $V , $k = null ){ global $Qb ; preg_match ( '~([^?]*)\??(.*)~' , remove_from_uri ( implode ( " | " , array_keys ( $Qb )) . " |username| " . ( $k !== null ? " db| " : " " ) . session_name ()), $C ); return " $C[1] ? " . ( sid () ? SID . " & " : " " ) . ( $Fh != " server " || $O != " " ? urlencode ( $Fh ) . " = " . urlencode ( $O ) . " & " : " " ) . " username= " . urlencode ( $V ) . ( $k != " " ? " &db= " . urlencode ( $k ) : " " ) . ( $C [ 2 ] ? " & $C[2] " : " " );} function
is_ajax (){ return ( $_SERVER [ " HTTP_X_REQUESTED_WITH " ] == " XMLHttpRequest " );} function
redirect ( $B , $D = null ){ if ( $D !== null ){ restart_session (); $_SESSION [ " messages " ][ preg_replace ( '~^[^?]*~' , '' ,( $B !== null ? $B : $_SERVER [ " REQUEST_URI " ]))][] = $D ;} if ( $B !== null ){ if ( $B == " " ) $B = " . " ; header ( " Location: $B " ); exit ;}} function
query_redirect ( $I , $B , $D , $Cf = true , $qc = true , $xc = false , $Tg = " " ){ global $g , $m , $c ; if ( $qc ){ $ug = microtime ( true ); $xc =! $g -> query ( $I ); $Tg = format_time ( $ug );} $pg = " " ; if ( $I ) $pg = $c -> messageQuery ( $I , $Tg , $xc ); if ( $xc ){ $m = error () . $pg . script ( " messagesPrint(); " ); return
false ;} if ( $Cf ) redirect ( $B , $D . $pg ); return
true ;} function
queries ( $I ){ global $g ; static $yf = array (); static $ug ; if ( ! $ug ) $ug = microtime ( true ); if ( $I === null ) return
array ( implode ( " \n " , $yf ), format_time ( $ug )); $yf [] = ( preg_match ( '~;$~' , $I ) ? " DELIMITER ;; \n $I ; \n DELIMITER " : $I ) . " ; " ; return $g -> query ( $I );} function
apply_queries ( $I , $S , $mc = 'table' ){ foreach ( $S
as $Q ){ if ( ! queries ( " $I " . $mc ( $Q ))) return
false ;} return
true ;} function
queries_redirect ( $B , $D , $Cf ){ list ( $yf , $Tg ) = queries ( null ); return
query_redirect ( $yf , $B , $D , $Cf , false , ! $Cf , $Tg );} function
format_time ( $ug ){ return
lang ( 1 , max ( 0 , microtime ( true ) - $ug ));} function
relative_uri (){ return
str_replace ( " : " , " %3a " , preg_replace ( '~^[^?]*/([^?]*)~' , '\1' , $_SERVER [ " REQUEST_URI " ]));} function
remove_from_uri ( $Ve = " " ){ return
substr ( preg_replace ( " ~(?<=[?&])( $Ve " . ( SID ? " " : " | " . session_name ()) . " )=[^&]*&~ " , '' , relative_uri () . " & " ), 0 , - 1 );} function
pagination ( $G , $vb ){ return " " . ( $G == $vb ? $G + 1 : '<a href="' . h ( remove_from_uri ( " page " ) . ( $G ? " &page= $G " . ( $_GET [ " next " ] ? " &next= " . urlencode ( $_GET [ " next " ]) : " " ) : " " )) . '">' . ( $G + 1 ) . " </a> " );} function
get_file ( $z , $Cb = false ){ $Ac = $_FILES [ $z ]; if ( ! $Ac ) return
null ; foreach ( $Ac
as $z => $X ) $Ac [ $z ] = ( array ) $X ; $K = '' ; foreach ( $Ac [ " error " ] as $z => $m ){ if ( $m ) return $m ; $E = $Ac [ " name " ][ $z ]; $bh = $Ac [ " tmp_name " ][ $z ]; $lb = file_get_contents ( $Cb && preg_match ( '~\.gz$~' , $E ) ? " compress.zlib:// $bh " : $bh ); if ( $Cb ){ $ug = substr ( $lb , 0 , 3 ); if ( function_exists ( " iconv " ) && preg_match ( " ~^ \xFE \xFF |^ \xFF \xFE ~ " , $ug , $If )) $lb = iconv ( " utf-16 " , " utf-8 " , $lb ); elseif ( $ug == " \xEF \xBB \xBF " ) $lb = substr ( $lb , 3 ); $K .= $lb . " \n \n " ;} else $K .= $lb ;} return $K ;} function
upload_error ( $m ){ $Yd = ( $m == UPLOAD_ERR_INI_SIZE ? ini_get ( " upload_max_filesize " ) : 0 ); return ( $m ? lang ( 2 ) . ( $Yd ? " " . lang ( 3 , $Yd ) : " " ) : lang ( 4 ));} function
repeat_pattern ( $ff , $Ld ){ return
str_repeat ( " $ff { 0,65535} " , $Ld / 65535 ) . " $ff { 0, " . ( $Ld % 65535 ) . " } " ;} function
is_utf8 ( $X ){ return ( preg_match ( '~~u' , $X ) &&! preg_match ( '~[\0-\x8\xB\xC\xE-\x1F]~' , $X ));} function
shorten_utf8 ( $yg , $Ld = 80 , $Bg = " " ){ if ( ! preg_match ( " (^( " . repeat_pattern ( " [ \t \r \n - \ x { 10FFFF}] " , $Ld ) . " )( $ )?)u " , $yg , $C )) preg_match ( " (^( " . repeat_pattern ( " [ \t \r \n -~] " , $Ld ) . " )( $ )?) " , $yg , $C ); return
h ( $C [ 1 ]) . $Bg . ( isset ( $C [ 2 ]) ? " " : " <i>…</i> " );} function
format_number ( $X ){ return
strtr ( number_format ( $X , 0 , " . " , lang ( 5 )), preg_split ( '~~u' , lang ( 6 ), - 1 , PREG_SPLIT_NO_EMPTY ));} function
friendly_url ( $X ){ return
preg_replace ( '~[^a-z0-9_]~i' , '-' , $X );} function
hidden_fields ( $vf , $hd = array (), $of = '' ){ $K = false ; foreach ( $vf
as $z => $X ){ if ( ! in_array ( $z , $hd )){ if ( is_array ( $X )) hidden_fields ( $X , array (), $z ); else { $K = true ; echo '<input type="hidden" name="' . h ( $of ? $of . " [ $z ] " : $z ) . '" value="' . h ( $X ) . '">' ;}}} return $K ;} 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
table_status1 ( $Q , $yc = false ){ $K = table_status ( $Q , $yc ); return ( $K ? $K : array ( " Name " => $Q ));} function
column_foreign_keys ( $Q ){ global $c ; $K = array (); foreach ( $c -> foreignKeys ( $Q ) as $p ){ foreach ( $p [ " source " ] as $X ) $K [ $X ][] = $p ;} return $K ;} function
enum_input ( $U , $xa , $n , $Y , $ec = null ){ global $c , $y ; preg_match_all ( " ~'((?:[^']|'')*)'~ " , $n [ " length " ], $Td ); $K = ( $ec !== null ? " <label><input type=' $U ' $xa value=' $ec ' " . (( is_array ( $Y ) ? in_array ( $ec , $Y ) : $Y === 0 ) ? " checked " : " " ) . " ><i> " . lang ( 7 ) . " </i></label> " : " " ); foreach ( $Td [ 1 ] as $t => $X ){ $X = stripcslashes ( str_replace ( " '' " , " ' " , $X )); $Ra = ( is_int ( $Y ) ? $Y == $t + 1 : ( is_array ( $Y ) ? in_array ( $t + 1 , $Y ) : $Y === $X )); $K .= " <label><input type=' $U ' $xa value=' " . ( $y == " sql " ? $t + 1 : h ( $X )) . " ' " . ( $Ra ? ' checked' : '' ) . '>' . h ( $c -> editVal ( $X , $n )) . '</label>' ;} return $K ;} function
input ( $n , $Y , $r ){ global $nh , $zg , $c , $y ; $E = h ( bracket_escape ( $n [ " field " ])); echo " <td class='function'> " ; if ( is_array ( $Y ) &&! $r ){ $ua = array ( $Y ); if ( version_compare ( PHP_VERSION , 5.4 ) >= 0 ) $ua [] = JSON_PRETTY_PRINT ; $Y = call_user_func_array ( 'json_encode' , $ua ); $r = " json " ;} $Kf = ( $y == " mssql " && $n [ " auto_increment " ]); if ( $Kf &&! $_POST [ " save " ]) $r = null ; $Oc = ( isset ( $_GET [ " select " ]) || $Kf ? array ( " orig " => lang ( 8 )) : array ()) + $c -> editFunctions ( $n ); $Mb = stripos ( $n [ " default " ], " GENERATED ALWAYS AS " ) === 0 ? " disabled='' " : " " ; $xa = " name='fields[ $E ]' $Mb " ; if ( $y == " pgsql " && in_array ( $n [ " type " ],( array ) $zg [ lang ( 9 )])){ $ic = get_vals ( " SELECT enumlabel FROM pg_enum WHERE enumtypid = " . $nh [ $n [ " type " ]] . " ORDER BY enumsortorder " ); if ( $ic ){ $n [ " type " ] = " enum " ; $n [ " length " ] = " ' " . implode ( " ',' " , array_map ( 'addslashes' , $ic )) . " ' " ;}} if ( $n [ " type " ] == " enum " ) echo
h ( $Oc [ " " ]) . " <td> " . $c -> editInput ( $_GET [ " edit " ], $n , $xa , $Y ); else { $Yc = ( in_array ( $r , $Oc ) || isset ( $Oc [ $r ])); echo ( count ( $Oc ) > 1 ? " <select name='function[ $E ]' $Mb > " . optionlist ( $Oc , $r === null || $Yc ? $r : " " ) . " </select> " . on_help ( " getTarget(event).value.replace(/^SQL \$ /, '') " , 1 ) . script ( " qsl('select').onchange = functionChange; " , " " ) : h ( reset ( $Oc ))) . '<td>' ; $od = $c -> editInput ( $_GET [ " edit " ], $n , $xa , $Y ); if ( $od != " " ) echo $od ; elseif ( preg_match ( '~bool~' , $n [ " type " ])) echo " <input type='hidden' $xa value='0'> " . " <input type='checkbox' " . ( preg_match ( '~^(1|t|true|y|yes|on)$~i' , $Y ) ? " checked='checked' " : " " ) . " $xa value='1'> " ; elseif ( $n [ " type " ] == " set " ){ preg_match_all ( " ~'((?:[^']|'')*)'~ " , $n [ " length " ], $Td ); foreach ( $Td [ 1 ] as $t => $X ){ $X = stripcslashes ( str_replace ( " '' " , " ' " , $X )); $Ra = ( is_int ( $Y ) ? ( $Y >> $t ) & 1 : in_array ( $X , explode ( " , " , $Y ), true )); echo " <label><input type='checkbox' name='fields[ $E ][ $t ]' value=' " . ( 1 << $t ) . " ' " . ( $Ra ? ' checked' : '' ) . " > " . h ( $c -> editVal ( $X , $n )) . '</label>' ;}} elseif ( preg_match ( '~blob|bytea|raw|file~' , $n [ " type " ]) && ini_bool ( " file_uploads " )) echo " <input type='file' name='fields- $E '> " ; elseif (( $Rg = preg_match ( '~text|lob|memo~i' , $n [ " type " ])) || preg_match ( " ~ \n ~ " , $Y )){ if ( $Rg && $y != " sqlite " ) $xa .= " cols='50' rows='12' " ; else { $M = min ( 12 , substr_count ( $Y , " \n " ) + 1 ); $xa .= " cols='30' rows=' $M ' " . ( $M == 1 ? " style='height: 1.2em;' " : " " );} echo " <textarea $xa > " . h ( $Y ) . '</textarea>' ;} elseif ( $r == " json " || preg_match ( '~^jsonb?$~' , $n [ " type " ])) echo " <textarea $xa cols='50' rows='12' class='jush-js'> " . h ( $Y ) . '</textarea>' ; else { $ae = ( ! preg_match ( '~int~' , $n [ " type " ]) && preg_match ( '~^(\d+)(,(\d+))?$~' , $n [ " length " ], $C ) ? (( preg_match ( " ~binary~ " , $n [ " type " ]) ? 2 : 1 ) * $C [ 1 ] + ( $C [ 3 ] ? 1 : 0 ) + ( $C [ 2 ] &&! $n [ " unsigned " ] ? 1 : 0 )) : ( $nh [ $n [ " type " ]] ? $nh [ $n [ " type " ]] + ( $n [ " unsigned " ] ? 0 : 1 ) : 0 )); if ( $y == 'sql' && min_version ( 5.6 ) && preg_match ( '~time~' , $n [ " type " ])) $ae += 7 ; echo " <input " . (( ! $Yc || $r === " " ) && preg_match ( '~(?<!o)int(?!er)~' , $n [ " type " ]) &&! preg_match ( '~\[\]~' , $n [ " full_type " ]) ? " type='number' " : " " ) . " value=' " . h ( $Y ) . " ' " . ( $ae ? " data-maxlength=' $ae ' " : " " ) . ( preg_match ( '~char|binary~' , $n [ " type " ]) && $ae > 20 ? " size='40' " : " " ) . " $xa > " ;} echo $c -> editHint ( $_GET [ " edit " ], $n , $Y ); $Dc = 0 ; foreach ( $Oc
as $z => $X ){ if ( $z === " " ||! $X ) break ; $Dc ++ ;} if ( $Dc ) echo
script ( " mixin(qsl('td'), { onchange: partial(skipOriginal, $Dc ), oninput: function () { this.onchange(); }}); " );}} function
process_input ( $n ){ global $c , $l ; if ( stripos ( $n [ " default " ], " GENERATED ALWAYS AS " ) === 0 ) return
null ; $v = bracket_escape ( $n [ " field " ]); $r = $_POST [ " function " ][ $v ]; $Y = $_POST [ " fields " ][ $v ]; if ( $n [ " type " ] == " enum " ){ if ( $Y ==- 1 ) return
false ; if ( $Y == " " ) return " NULL " ; return + $Y ;} if ( $n [ " auto_increment " ] && $Y == " " ) return
null ; if ( $r == " orig " ) return ( preg_match ( '~^CURRENT_TIMESTAMP~i' , $n [ " on_update " ]) ? idf_escape ( $n [ " field " ]) : false ); if ( $r == " NULL " ) return " NULL " ; if ( $n [ " type " ] == " set " ) return
array_sum (( array ) $Y ); if ( $r == " json " ){ $r = " " ; $Y = json_decode ( $Y , true ); if ( ! is_array ( $Y )) return
false ; return $Y ;} if ( preg_match ( '~blob|bytea|raw|file~' , $n [ " type " ]) && ini_bool ( " file_uploads " )){ $Ac = get_file ( " fields- $v " ); if ( ! is_string ( $Ac )) return
false ; return $l -> quoteBinary ( $Ac );} return $c -> processInput ( $n , $Y , $r );} function
fields_from_edit (){ global $l ; $K = array (); foreach (( array ) $_POST [ " field_keys " ] as $z => $X ){ if ( $X != " " ){ $X = bracket_escape ( $X ); $_POST [ " function " ][ $X ] = $_POST [ " field_funs " ][ $z ]; $_POST [ " fields " ][ $X ] = $_POST [ " field_vals " ][ $z ];}} foreach (( array ) $_POST [ " fields " ] as $z => $X ){ $E = bracket_escape ( $z , 1 ); $K [ $E ] = array ( " field " => $E , " privileges " => array ( " insert " => 1 , " update " => 1 ), " null " => 1 , " auto_increment " => ( $z == $l -> primary ),);} return $K ;} function
search_tables (){ global $c , $g ; $_GET [ " where " ][ 0 ][ " val " ] = $_POST [ " query " ]; $bg = " <ul> \n " ; foreach ( table_status ( '' , true ) as $Q => $R ){ $E = $c -> tableName ( $R ); if ( isset ( $R [ " Engine " ]) && $E != " " && ( ! $_POST [ " tables " ] || in_array ( $Q , $_POST [ " tables " ]))){ $J = $g -> query ( " SELECT " . limit ( " 1 FROM " . table ( $Q ), " WHERE " . implode ( " AND " , $c -> selectSearchProcess ( fields ( $Q ), array ())), 1 )); if ( ! $J || $J -> fetch_row ()){ $rf = " <a href=' " . h ( ME . " select= " . urlencode ( $Q ) . " &where[0][op]= " . urlencode ( $_GET [ " where " ][ 0 ][ " op " ]) . " &where[0][val]= " . urlencode ( $_GET [ " where " ][ 0 ][ " val " ])) . " '> $E </a> " ; echo " $bg <li> " . ( $J ? $rf : " <p class='error'> $rf : " . error ()) . " \n " ; $bg = " " ;}}} echo ( $bg ? " <p class='message'> " . lang ( 10 ) : " </ul> " ) . " \n " ;} function
dump_headers ( $gd , $ie = false ){ global $c ; $K = $c -> dumpHeaders ( $gd , $ie ); $Se = $_POST [ " output " ]; if ( $Se != " text " ) header ( " Content-Disposition: attachment; filename= " . $c -> dumpFilename ( $gd ) . " . $K " . ( $Se != " file " && preg_match ( '~^[0-9a-z]+$~' , $Se ) ? " . $Se " : " " )); session_write_close (); ob_flush (); flush (); return $K ;} function
dump_csv ( $L ){ foreach ( $L
as $z => $X ){ if ( preg_match ( '~["\n,;\t]|^0|\.\d*0$~' , $X ) || $X === " " ) $L [ $z ] = '"' . str_replace ( '"' , '""' , $X ) . '"' ;} echo
implode (( $_POST [ " format " ] == " csv " ? " , " : ( $_POST [ " format " ] == " tsv " ? " \t " : " ; " )), $L ) . " \r \n " ;} function
apply_sql_function ( $r , $d ){ return ( $r ? ( $r == " unixepoch " ? " DATETIME( $d , ' $r ') " : ( $r == " count distinct " ? " COUNT(DISTINCT " : strtoupper ( " $r ( " )) . " $d ) " ) : $d );} function
get_temp_dir (){ $K = ini_get ( " upload_tmp_dir " ); if ( ! $K ){ if ( function_exists ( 'sys_get_temp_dir' )) $K = sys_get_temp_dir (); else { $Bc =@ tempnam ( " " , " " ); if ( ! $Bc ) return
false ; $K = dirname ( $Bc ); unlink ( $Bc );}} return $K ;} function
file_open_lock ( $Bc ){ $q =@ fopen ( $Bc , " r+ " ); if ( ! $q ){ $q =@ fopen ( $Bc , " w " ); if ( ! $q ) return ; chmod ( $Bc , 0660 );} flock ( $q , LOCK_EX ); return $q ;} function
file_write_unlock ( $q , $xb ){ rewind ( $q ); fwrite ( $q , $xb ); ftruncate ( $q , strlen ( $xb )); flock ( $q , LOCK_UN ); fclose ( $q );} function
password_file ( $i ){ $Bc = get_temp_dir () . " /adminer.key " ; $K =@ file_get_contents ( $Bc ); if ( $K ||! $i ) return $K ; $q =@ fopen ( $Bc , " w " ); if ( $q ){ chmod ( $Bc , 0660 ); $K = rand_string (); fwrite ( $q , $K ); fclose ( $q );} return $K ;} function
rand_string (){ return
md5 ( uniqid ( mt_rand (), true ));} function
select_value ( $X , $A , $n , $Sg ){ global $c ; if ( is_array ( $X )){ $K = " " ; foreach ( $X
as $yd => $W ) $K .= " <tr> " . ( $X != array_values ( $X ) ? " <th> " . h ( $yd ) : " " ) . " <td> " . select_value ( $W , $A , $n , $Sg ); return " <table> $K </table> " ;} if ( ! $A ) $A = $c -> selectLink ( $X , $n ); if ( $A === null ){ if ( is_mail ( $X )) $A = " mailto: $X " ; if ( is_url ( $X )) $A = $X ;} $K = $c -> editVal ( $X , $n ); if ( $K !== null ){ if ( ! is_utf8 ( $K )) $K = " \0 " ; elseif ( $Sg != " " && is_shortable ( $n )) $K = shorten_utf8 ( $K , max ( 0 , + $Sg )); else $K = h ( $K );} return $c -> selectVal ( $K , $A , $n , $X );} function
is_mail ( $bc ){ $wa = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]' ; $Pb = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])' ; $ff = " $wa +( \\ . $wa +)*@( $Pb ? \\ .)+ $Pb " ; return
is_string ( $bc ) && preg_match ( " (^ $ff (, \\ s* $ff )* \$ )i " , $bc );} function
is_url ( $yg ){ $Pb = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])' ; return
preg_match ( " ~^(https?)://( $Pb ? \\ .)+ $Pb (: \\ d+)?(/.*)?( \\ ?.*)?(#.*)? \$ ~i " , $yg );} function
is_shortable ( $n ){ return
preg_match ( '~char|text|json|lob|geometry|point|linestring|polygon|string|bytea~' , $n [ " type " ]);} function
count_rows ( $Q , $Z , $ud , $s ){ global $y ; $I = " FROM " . table ( $Q ) . ( $Z ? " WHERE " . implode ( " AND " , $Z ) : " " ); return ( $ud && ( $y == " sql " || count ( $s ) == 1 ) ? " SELECT COUNT(DISTINCT " . implode ( " , " , $s ) . " ) $I " : " SELECT COUNT(*) " . ( $ud ? " FROM (SELECT 1 $I GROUP BY " . implode ( " , " , $s ) . " ) x " : $I ));} function
slow_query ( $I ){ global $c , $T , $l ; $k = $c -> database (); $Ug = $c -> queryTimeout (); $lg = $l -> slowQuery ( $I , $Ug ); if ( ! $lg && support ( " kill " ) && is_object ( $h = connect ()) && ( $k == " " || $h -> select_db ( $k ))){ $_d = $h -> result ( connection_id ()); echo '<script' , nonce (), ' >
var timeout = setTimeout ( function () {
ajax ( \ '' , js_escape ( ME ), ' script = kill\ ' , function () {
}, \ 'kill=' , $_d , '&token=' , $T , ' \ ' );
}, ',1000*$Ug,' );
</ script >
' ;} else $h = null ; ob_flush (); flush (); $K =@ get_key_vals (( $lg ? $lg : $I ), $h , false ); if ( $h ){ echo
script ( " clearTimeout(timeout); " ); ob_flush (); flush ();} return $K ;} function
get_token (){ $Af = rand ( 1 , 1e6 ); return ( $Af ^ $_SESSION [ " token " ]) . " : $Af " ;} function
verify_token (){ list ( $T , $Af ) = explode ( " : " , $_POST [ " token " ]); return ( $Af ^ $_SESSION [ " token " ]) == $T ;} function
lzw_decompress ( $Ea ){ $Lb = 256 ; $Fa = 8 ; $Xa = array (); $Lf = 0 ; $Mf = 0 ; for ( $t = 0 ; $t < strlen ( $Ea ); $t ++ ){ $Lf = ( $Lf << 8 ) + ord ( $Ea [ $t ]); $Mf += 8 ; if ( $Mf >= $Fa ){ $Mf -= $Fa ; $Xa [] = $Lf >> $Mf ; $Lf &= ( 1 << $Mf ) - 1 ; $Lb ++ ; if ( $Lb >> $Fa ) $Fa ++ ;}} $Kb = range ( " \0 " , " \xFF " ); $K = " " ; foreach ( $Xa
as $t => $Wa ){ $ac = $Kb [ $Wa ]; if ( ! isset ( $ac )) $ac = $Ph . $Ph [ 0 ]; $K .= $ac ; if ( $t ) $Kb [] = $Ph . $ac [ 0 ]; $Ph = $ac ;} return $K ;} function
on_help ( $db , $jg = 0 ){ return
script ( " mixin(qsl('select, input'), { onmouseover: function (event) { helpMouseover.call(this, event, $db , $jg ) }, onmouseout: helpMouseout}); " , " " );} function
edit_form ( $Q , $o , $L , $vh ){ global $c , $y , $T , $m ; $Gg = $c -> tableName ( table_status1 ( $Q , true )); page_header (( $vh ? lang ( 11 ) : lang ( 12 )), $m , array ( " select " => array ( $Q , $Gg )), $Gg ); $c -> editRowPrint ( $Q , $o , $L , $vh ); if ( $L === false ){ echo " <p class='error'> " . lang ( 13 ) . " \n " ; return ;} echo ' < form action = " " method = " post " enctype = " multipart/form-data " id = " form " >
';if(!$o)echo"<p class=' error '>".lang(14)."\n";else{echo"<table class=' layout '>".script("qsl(' table ' ) . onkeydown = editingKeydown ; " );foreach( $o
as $E => $n ){ echo " <tr><th> " . $c -> fieldName ( $n ); $Db = $_GET [ " set " ][ bracket_escape ( $E )]; if ( $Db === null ){ $Db = $n [ " default " ]; if ( $n [ " type " ] == " bit " && preg_match ( " ~^b'([01]*)' \$ ~ " , $Db , $If )) $Db = $If [ 1 ];} $Y = ( $L !== null ? ( $L [ $E ] != " " && $y == " sql " && preg_match ( " ~enum|set~ " , $n [ " type " ]) ? ( is_array ( $L [ $E ]) ? array_sum ( $L [ $E ]) :+ $L [ $E ]) : ( is_bool ( $L [ $E ]) ? + $L [ $E ] : $L [ $E ])) : ( ! $vh && $n [ " auto_increment " ] ? " " : ( isset ( $_GET [ " select " ]) ? false : $Db ))); if ( ! $_POST [ " save " ] && is_string ( $Y )) $Y = $c -> editVal ( $Y , $n ); $r = ( $_POST [ " save " ] ? ( string ) $_POST [ " function " ][ $E ] : ( $vh && preg_match ( '~^CURRENT_TIMESTAMP~i' , $n [ " on_update " ]) ? " now " : ( $Y === false ? null : ( $Y !== null ? '' : 'NULL' )))); if ( ! $_POST &&! $vh && $Y == $n [ " default " ] && preg_match ( '~^[\w.]+\(~' , $Y )) $r = " SQL " ; if ( preg_match ( " ~time~ " , $n [ " type " ]) && preg_match ( '~^CURRENT_TIMESTAMP~i' , $Y )){ $Y = " " ; $r = " now " ;} if ( $n [ " type " ] == " uuid " && $Y == " uuid() " ){ $Y = " " ; $r = " uuid " ;} input ( $n , $Y , $r ); echo " \n " ;} if ( ! support ( " table " )) echo " <tr> " . " <th><input name='field_keys[]'> " . script ( " qsl('input').oninput = fieldChange; " ) . " <td class='function'> " . html_select ( " field_funs[] " , $c -> editFunctions ( array ( " null " => isset ( $_GET [ " select " ])))) . " <td><input name='field_vals[]'> " . " \n " ; echo " </table> \n " ;} echo " <p> \n " ; if ( $o ){ echo " <input type='submit' value=' " . lang ( 15 ) . " '> \n " ; if ( ! isset ( $_GET [ " select " ])){ echo " <input type='submit' name='insert' value=' " . ( $vh ? lang ( 16 ) : lang ( 17 )) . " ' title='Ctrl+Shift+Enter'> \n " ,( $vh ? script ( " qsl('input').onclick = function () { return !ajaxForm(this.form, ' " . lang ( 18 ) . " …', this); }; " ) : " " );}} echo ( $vh ? " <input type='submit' name='delete' value=' " . lang ( 19 ) . " '> " . confirm () . " \n " : ( $_POST ||! $o ? " " : script ( " focus(qsa('td', qs('#form'))[1].firstChild); " ))); 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 = " ', $T ,' " >
</ form >
' ;} if ( isset ( $_GET [ " file " ])){ if ( $_SERVER [ " HTTP_IF_MODIFIED_SINCE " ]){ header ( " HTTP/1.1 304 Not Modified " ); exit ;} header ( " Expires: " . gmdate ( " D, d M Y H:i:s " , time () + 365 * 24 * 60 * 60 ) . " GMT " ); header ( " Last-Modified: " . gmdate ( " D, d M Y H:i:s " ) . " GMT " ); header ( " Cache-Control: immutable " ); if ( $_GET [ " file " ] == " favicon.ico " ){ header ( " Content-Type: image/x-icon " ); echo
lzw_decompress ( " \0 \0 \0 ` \0 „ \0 \n @ \0 ´ C„ è\" \0 `EãQ¸à ÿ ‡?À tvM'”JdÁ d \\ Œb0\0 Ä\" ™ÀfÓˆ¤îs5›ÏçÑA� X P a J“0 „¥‘ 8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0 ¡Im? . «M¶ €\0 ȯ (̉ý À /( %Œ \0 " );} elseif ( $_GET [ " file " ] == " default.css " ){ header ( " Content-Type: text/css; charset=utf-8 " ); echo
lzw_decompress ( " \n 1 ̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn: ‡# (¼b. \r D c)ÈÈa7 E„ ‘¤Âl ¦Ã±”èi1ÌŽs ˜´ç-4™‡fÓ ÈÎi7 † º€´îi2 \r £1¤è-ƒH ² Ùôà ƒÂGF#aÔÊ;: O ó!– r0Ïãã£t~ßf� ':ñ”Éh„B¦'cÍ”Â:6T\r c£A¾zr cðXKŒg+—ÄZŽXk…Êév„ÞM7¸½Ôå‘7_Ì \" ë� Ï)––žöº { ¾ª÷}Øã…Æ£©ÌÐ-4NÎ } :¨rf§K) b { � H(Ɠєt1 É)tÚ}F¦p0™ • 8è\\ 82› D Œ> ® ÀN‡Cy·¾8 \0 惫 \0 F Á ê>¯Žã(Ò3� \n ú9)ƒ`vç-A o \r ¡èŠ&е¨XË º¡“± »në¾ð„¯ œ¨*A \0 ` A„ \0 ¡ˆq\0 oCÔö=σäú\r ¯² \\ –¿# { öþ¿ð ÈŒ� 2 ©Ã R ‡;0d BHL+ ¢H¢,Œ!oR”>� œNíA°| \" ¾Kɼ í0‘Pb ¼Jd^¨È‘”d²£Ð ÷=<ª’Ê:J# ¶ £Ú®¬«aŠ Ð‘‚¦>ÑTe òF ìk Æjš #ŽK 6 #‚Ž 9ÕET·Ë1K¼‘Å´ÀÈ +CÝF×I° (ÀðL|õ� ÏjPø„ pfúÓ Eu LQ G íØZ›ÁêˆØ2ŒÎ¥š2½! sk[ :¢1¬kˆå ½6%Œ Y pkf+W [Þ· \r rˆ L1 È ÌÔ \0 Ò� ŒŠ8è=½c˜áT .€ÜØ-ìº~ � –»#s OàávGö+Ýy¾O { ëJª9 C� OÕ î–ײ| `‡+(áMÏr \r ‘ OÀ5\n Ê4� £8÷‰( ¾-l‡Cj°2[r5yKÑ yŸ)ƒÂ¬¬+AÔk ¤äÍÉ ¯ ¨2ëgß³ 3iÄ”Â� ÜHS>–ÜWÆÖ<í®fá}Ú öÏjfM iBϹÐú84uÃL¦Ü ZCI \$ ‰2P• \r ¨øß… \" +ÿ 2¸n-� ~Cû24Ž ª€à:Žœ2çÄ,è ¥:È Ü‘ÕgcwGÒ¨öØÇƒè ¦‡ŒhÏV“Ðö] \\ ºŒÃ ê6`ýRŒ4=#xï^†1¿£ \0 ÃPç� Ù…Í â:� - å8ÞoŸé¾~”oïv>Æ£mØ·ØßÕùƒ'� è|Ð ÑëøC¸Â<� èØö¶Öè:G)M &W� YQQi=Ò ð \\ [ y a \r …¿²ÖB‘ e Æ \\  óB•� Ø7Ne}:� àl •©Ã k \$ 44rÆ q} \r P® ðØA L a§ C5’ sƒ¨m \r Áî È Y� ©� Î& °Ò ( ë ú ”² \n › \$ ¬j E%™ ^qx\r Æ Ðï — hW’ 0FuR „mŒJ: — Œz @:rðj7F5 ,wr©Á \n ' ú ‰i P| >‡8´ Wøfm2 9H @› \$ M’ \$ qX¦Ô¹! ü‡ \r ¡”9”0ΣR¨: \" ˆŒ7DÉ Þä” ”r”0ÊuÄ¢ÖÜŒJꉼ¹àFFÓ<”‘PÂYÊe òò^) 8 nÖ L o2EÊ”® \r Â1� 伸˩°CfÄ ,q ]N \0 � 8d8b* 4‚ J—îˆ \\ Mͺ’� 4ÃHl € àRÜd̯!a ÐJ ¡ð.šeØ5Ë€Ë ÎI 0Ñ’ Q \n C¨µ Q.n^ÄàÉ0Iü£‘† ž ØF¬� Ð7<R 3 wo MѦweDš¥È4 ¢ b7+‘‹ÓF» ¦á>gŠ6ž4Jj„`Ðt !ÁF¨öªx� ;©Åmã À¸Ìd8o è7B·j]˜=SjÀ¨Ö*ª ê¼ 0A”;¸¢� R–ÙÐQFD1Á¢\" OÉín“ɼ€Ï¨4 ʨ4ež±� q \n K” * ;9Hó ä9@ƒÕ‰ #ƹ'ì«Y‘íéS ó cl‰anÒ.Ͷk:h� \$ ‡„ª9ª ¸¦Öd9É \r ŒÌ1‡Pä€ÛqʃDy% ˜‹ Øsba¬ÆŸ£ø ¢Êœ \r À¶£’ ZÎ RH‹Œá_% \0 @Sˆ„ü Ô ›¹w¡€7 7ER³Éjw˜� M ¤Pô°2@ \n .Àa»W~íÝÛêJ H,—än ¸ÀJŸé`o·¡È à@zõ oN|¥LƒÚ¨VK ·x u ºÁ 3 *±qK‚ã` á]„Ž¡–AG˜Í ¦iU¹µ� °aàÞ È³ ‹Qre \$ [ W \" @b� …ĸU¥ \r Šðé =.E¿E¨ \0 âêˆ} rŽœDH Ž \" ImÇŒ� ïÍ utÏ®GPÖP ¬Ì—8Á \0 p¿D ò‡;ô¦VØsˆ‹¶(¤#æÈîR†uÊ–ã \$ ÇÈË– \0 cÏE” æB¡ \n ÌŽg¡Ú \000 4¿ó +� Þ‡™ð2c ön� f! > ž¢ÇŸ3õ]ÐJ35 |G‰tTaU ïHi'ç¥K¬ÉZg é¼Ò � #Í ‘ ˆ‡iV”ÀÏ…„¸’ 4TW� ò \0 É \" 1ÅÝ•Q½ÔºŠ_>“ }� â>Q‰qrç‚àm– Vá!<ù²d¬´‡—ƒ ƒ� Œ9S› ‰,v¡� ¨÷'í u ±æ ykb ]p¿Ûå—Mû y• I¾œ[&ØÉ ì \\ ©„ š9GvÀ� i¼‡ ±u7¸ãE« „ k‰^[× %AÊa; H# t,¦kð[– � ³XÝ‘ ½š5Q^ yÅI }Û§ ‚Uƒ(b \r ex ó%KÍ éÁÉ \\ Œä”Å“¬ÕÓ+!YÝ_ )òeø F`É [[nZœ‰=åw nü¤_ù \$ +\$ ÑÉ#F —FjÚ ïicÌ•l™Ÿkë¸ì·ç6[ÓY„®Ám ·ààt \r Qâ±x ´W%ºAØz ¥@º‡ƒ¿ ƒ� t \r €€4 \" n Ž,Ê4ÊÞCÉf aä|ž³óþva ŸGäÁtżúüïÅ„ýt \$ ? Y9“ ¿ý³� ÚìHt� ¿Îy0G¯ O¬Ø(ÑÀ§þü¤• šÙ<«ØùÐG¸W¶äÜÙj³ƒ¼W½R/—á_' û \\ z%>júžïë { Ÿ±ïZsÁ €¹ý?ÇýøÏçå“ð †âße³V/§@Ù0:ûh ú¬€ý .ÿFÄQ£Ö4j^/g� ]`ú F=nÆ&ï&& ¢ ¢je @p ° öûëÎüOnú© ö‡HÉÎX*+„5JêïÎ \n ŠŒ¼ÿ� Pë€u f&ªKZ÷OâÉO€×ÌŒöï� á…PX°fÇ l( øú Òú@Ú“ à÷� šõ À”€öÅpH { /� ¬d¹K˜÷0‚ý žÜP˜“ ¬ü€û ° &ÌÂ& |ÿ \0 οPd‡& æÎÁ NLËMŠÉP”ÜmË ¯üÉ Š� ìNU*) hü� E ŽERÜí@” � ãˆ8É -„<¡ 49 \0 è \r ¾ ÀÚ† \" žãû Ñ/ ‘6 @Ë CŒ ¢ý Ž \0 Ð \0 ¾~@Ç €[ Ña‘ i À¿ g3 (g cc‘ I ½‹A ±[ ñs à¾6 ï q`¥¨†šÄ¦ \0 f nô´É¬ Ѹ ³ ÑS G¶ \r ñi qÊ ß O k €ÊIQhU1É‹ \0 \r €¿ Qi £ è \r + ñÍ ‘ÿ æ •)VÒñ! ñu IÊ\0 r› ,; ñÛ Æ àì)±¡ \" Ò1 Qí \" é âÍ ®N7 “ äY2% QÑ#C1’ €ÒQ!Q™#ÊÜâêâBiC%јy‡� DÍî‹ N!M<0¤.- \" ˆ 3!1RQ@Ï iK #÷)Èi\" Bò ’ ¡*ÀÆ”²c 2« ‘ç*’£+r§ ò¿ \" àÙ ePƒ2 (* €Œ ²# ò˜ èg+2í,²½*2 ,R¬¡2ý, ñ0 Í*2Ñ ’É/2Õ ²Û q½ À� \$ ˆ¶–±h \0 Û Ò˜‘‹?2R«2³/ ã÷0lÍ ’¿,’ðB è¶’Œc%ÀBÒ”8ò¿/³ *Ññ4“ &é t`äah { ï‚•3u7“% àÖ ó @æ óŠn‘Ù6Q}93—+³`€Ór¶Ó…5à[ ãFgÉS3s± Që:R'*òÃ&Qa<2u\$ Ñû= ¿ Bã<RU<±Ã “Ü¡óÙ6²S €à óÑ?2)+ Ù?sû<Ó =€Ú”« > ™9ÒJ ô @sç=SåA£R e·ASÿBsÇB´ />ó©1³V q¸ TI.qR_’ 3E ØÜ \" e ” ôY à \" .3È‘‰ß \" Jq ±ÙBÉ«D)Ì� � Ö 4 # \$ � a Žà «l· (·S±<4[\" Që ¢êÖ d0´ %ÓùA4£ ô_ qiCŠ K±R0€Û7� HI:Kjø àÉ2SÁA3Ù t³?ÓÛNTí \$ âÏMos' \r ’™N³gPR½& È8ôéPóÇOR3Q23 €eHIR:\" � :‰R±#F”¨ Ðìàè ÑL¡KmSÀ¦Ñ* (ËÆ,Ôv8«Ž2\$ 35V¸ D˜ 3c \n 0ôø“ôüBÕ& \r ä+ÒŠ9õ0”ˆ: \r Õ8q AT ëTI*]5Jã 0JµSH&fàâÊ " );} elseif ( $_GET [ " file " ] == " functions.js " ){ header ( " Content-Type: text/javascript; charset=utf-8 " ); echo
lzw_decompress ( " f:›ŒgCI¼Ü \n 8œÅ 3)°Ë 7œ…†81ÐÊx: \n Og#)Ðêr7 \n \" †è´`ø|2 ÌgSi–H) N¦S‘ä§ \r ‡� \" 0¹Ä@ä) Ÿ` ( \$ s6O!ÓèœV/ =� Œ' T4æ=„˜iS˜ � 6IO G#Ò X·V C� Æs¡ Z1.Ðhp8, ³[¦Häµ ~Cz§Éå2¹l¾c3šÍés£‘ ÙI†bâ4\n éF8Tà† I˜Ý ©U*fz¹ är0žEÆ� ÀØy ޏñfŽY.: æ ƒIŒÊ( Øc·á ΋!� _l™í^·^(¶šN{ S–“)rËqÁY“–lÙ¦3Š3Ú \n ˜+G¥Óêyºí†Ëi¶ÂîxV3w ³u hã^rØÀº ´aÛ”ú¹� cØè \r “¨ë(.ˆº� ChÒ<\r ) èÑ£¡`æ7£íò43'm 5Œ£È \n � PÜ:2£P»ªŽ‹q òÿÅC“} Ä«ˆúÊÁê38‹ B Ø0ŽhR ‰Èr(œ0¥¡b\\ 0ŒHr44ŒÁB� !¡pÇ \$ ŽrZZ Ë2܉.Ƀ( \\ Ž5à | \n C(Î \" � €P … ðø.� ÐN ÌRTÊ Î“Àæ>� HN …� 8H Pá\\ ¬7J p~ „ Üû2%¡ÐOC¨1ã.ƒ§C8· HÈò*ˆj°… á ÷S( ¹/ ¡ì¬6KUœÊ ‡¡< 2 ‰pOI„ôÕ `� Ôä Ⳉd O� H Þ5� -üÆ4ŒãpX25-Ò¢òÛˆ°z7 £¸ \" (°P \\ 32 :] UÚ èíâß…!]¸<·AÛ Û¤’ÐßiÚ° ‹l \r Ô \0 v²Î#J8«Ïwmží ɤ¨<ŠÉ æü%m;p #ã`X� DŒø÷iZ� øN0Œ� •È9 ø¨å� Áè` …Ž w J� D¿ ¾2Ò9tŒ¢* øÎyìËNiIh \\ 9ÆÕèÐ: ƒ€æ áxïµyl*š ȈΠæY Ü ‡øê8’W³â?µŽ� Þ›3 ÙðÊ! \" 6 å›n[¬Ê \r *\$ ¶Æ§¾nzxÆ9\r ì|*3×£pÞ ï»¶ž: (p \\ ;ÔËmz ¢ü§ 9ó ÐÑÂŒü8N …Á� j2� ½ «Î \r ÉHî H&Œ²(Ãz„Á7iÛk£ ‹Š¤‚c¤‹eòžý§tœÌÌ2:SHóÈ Ã/)–xÞ@éåt‰ri9¥½õëœ8ÏÀËïyÒ·½°ŽVÄ+^WÚ¦¬kZæY—l ·Ê£� � Œ4 ÖÈÆ‹ª¶ À¬ ‚ð \\ EÈ { î7 \0 ¹p† €• D €„i”-TæþÚû0l°%=Á Р˃9( „5 ð \n \n € n,4‡ \0 è a } ܃.°ö Rs \0 2B\\ Ûb1ŸS± \000 3,ÔXPHJs påd“ Kƒ CA!°2*WŸ ÔñÚ2 \$ ä+ Âf^ \n „ 1Œ� ´òzEƒ Iv¤ \\ äœ2É .*A°™” E (d ±á°Ãbê ÂÜ„� Æ9‡‚â€ÁDh� &ª? Ä H°s� Q˜ 2’ x~nÃ� J‹ T2 ù &ãàe Rœ½™GÒQŽ� TwêÝ‘»õP ˆâã \\ )6¦ôâœÂòs h\\ 3¨ \0 R À' \r +*; R ðHà.“!Ñ[Í'~ %t< çpÜK#‘æ! ñlßÌðL eŒ³œ Ù, ÄÀ®&á \$ Á½`” –CXš ‰ Ó†0Öå¼û ³Ä:Méh çÚœGäÑ!&3 D� < !è� 23„Ã?h¤ J©e Úðhá \r ¡m•˜ðN i ¸£´Ž’†ÊNØH l7¡®v‚êWI å. ´Á-Ó5Ö§ey� \r EJ\n i * ¼ \$ @ÚRU0,\$ U ¿E†¦ÔÔªu)@(tÎ SJk áp! €~‚àd `Ì>¯• \n Ã;#\r p9† j ɹÜ]&Nc(r€ˆ•TQUª½S·Ú\0 8n `«—y•b¤Å ž LÜO5‚î,¤òž‘>Ž‚†xâ â ±fä´’âØ� +� –\" ÑI€ { kMÈ[ \r %Æ [ ¤ e ô aÔ1! èÿí³Ô®©F@«b)RŸ£72ˆî0¡ \n W ¨™±L²Üœ Ò®tdÕ+� í Ü 0wglø0n@òêÉ¢ÕiíM«ƒ \n A§M5nì \$ E³ ×± NÛál©Ý Ÿ× ì%ª1 AÜûº ú÷ÝkñrîiFB÷ Ïùol,muNx-Í_ Ö¤C( � � f é l \r 1p [ 9x (i´ BÒ–²ÛzQlüº8C Ô ´ ©XU Tb£ÝIÝ`•p+V \0 î‹Ñ;‹ CbÎÀXñ+Ï’� sïü]H÷Ò[ák‹x¬ G*ô†� ]·awnú!Å6‚òâÛÐ mSí¾“IÞÍKË~/� Ó¥7ÞùeeNÉò� ªS«/;dåA† >}l~žÏê ¨% ^´ fçØ¢pÚœDEîÃa·‚t \n x=ÃkÐŽ„ * dºê ðT —ºüûj 2ŸÉjœ� \n ‘ É ,˜e=‘†M8 4ôûÔ a•j@îTÃs� Ôänf©Ý \n î6ª\r dœ ¼0ÞíôYŠ'%Ô“í Þ~ � Ò¨†<Ö Ë –Aî‹–H¿G ‚� 8ñ ¿� ΃ \$ z «ð { ¶»²u2* † àa –À> »( wŒ K.bP‚ { …ƒ o ý ” ´ « zµ#ë 2 ö8=É 8>ª¤³A,°e°À…+ìCè§xõ*ÃáÒ-b=m‡™Ÿ,‹a’Ãlzk� � ï \$ W õ,� m� JiæÊ§á÷� +‹èý0°[ ¯ÿ.RÊsKùÇ äXç Ý Z LËç2� ` Ì (ïCàvZ¡ÜÝ À¶ è \$ � ×¹,åD?H±Ö NxX ôó)’îŽM ¨‰\$ ó,� Í* \n Ñ£ \$ <q ÿÅŸh!¿¹S“ âƒÀŸxsA!˜: ´K¥Á }Á² “ù¬£œRþšA2k·XŽp \n <÷ þ¦ýëlì §Ù3¯ø¦È •VV¬}£g &YÝ� !†+ó;<¸ YÇóŸYE3 r³ÙŽñ ›Cío5¦Åù¢Õ³Ïkkþ…ø°ÖÛ£«Ï t÷’Uø…)û[ýßÁî}ï Øu´«l ç¢:DŸø+Ï� _oã äh140ÖáÊ0ø¯bäK˜ã¬’ öþé » lGª„#ªš©êŽ †¦©ì|Udæ¶I K «êÂ7à^ìภ@º® O \0 H Å ðHiŠ6 \r ‡Û ©Ü \\ cg \0 öãë2 ŽB Ä*eà� \n €š …zr� !� nW z&� { H–ð'\$ X w@Ò8ë DGr*ëÄÝ HVéÞw 8ìJè \n m@¦OÈ#P²Ï@úYp²ÏöwàÊðÀP \r 8 ÀXë\$ Xü PÝd– ÀQ \0 Rx1 \" T] \" ê Ðè Í °êQÐðàÀbR`M Û ðà-àRSE8Go 0 ê æd‚ B^± \0 ÂÜ \" :Üm N.Þj % ß@æ3(ªx Âl Ì ÅÞ ‘ €W ß åÞ \n ç: \r \0 } ®@³qm ; @È-¢Þ ¤Zôg.zFÂf@Ì \r � žW®Äck‰ Œ ñ< é0‡Ëúz'4\r ñ \0 îjELY ˆð(ð %€ \n Mž‡ÄDàoFøB¨q‘ÖKg²ä#ÄZ¨¸³ àä \" � \n çÀЮÅê� hÞ Ò‹ 2 -n§ \" jy \" ¥ê§èþ� ì \" ÷ ðg ý!,Ä*ŒTù x� ¢ÅËPú‚5%Làèò`¾LÖM †¬@¶ Z @ºìÊÒ `^Q0R %9&jv‘ häX ðoŽöö‹G#æ’ö²DÙòHùK¼lX¼ï¦Í-äû2hWli+æ� &ÄÕ s'rzìàÉ( „ Òˆ‚ò¼¿%tKå6ûrâ¶ëràï áK� .‚*Ð ,*v� bg j� # ޲ó LÈ®v®Z‹€Q \$ pÜ� n*h òÀòvÂBñ ôâÀ \\ FJˆ X%x f \$ óA4K74 a #¤¦ 3 \n ¨(| ° Z , ³e2äl \r |� Kû0Ðò¿³ ¦ÎW2-m) )‘¾Z' %€Ü ªè7å.› *í*\0 O; ’®C¥*¯— \$ ËA;’VÌò¸ë‚(� €ÚlìØt‚ Kã.DÆ› _> á:¥v¢3Ÿ=dö \$ Ræ“ øSl ß7ˆ ºB[ ì� !@È]à[63zS…e>sòr„Dz€í;T0²SÁ*ï� C Ë+oª \\ \0 Ò À { D ´Ü kè €z @·= » ¥·Dª4Vç‚� Ê•* \0 W� ÿ³tÿäv¶¥yD Ì-¢5C Œæ3� • ¾…ýD´–t”›!’ _ U”XL´ ]F ÷Fn—F ì& @%b >cˆêPÜÛIö)3<’ @ `ä \r “55 Þ%¤/3Q œó@Gó5 \r ÍÄѱTŽ£è,§ÞEÍ NÈ&j \0 Æh̾ \$ � Üá È 353‘ T� B'FLâÀ¦'Däñ ø U #±LÑ� ÉPm*Ñ \\ \r @êò@¨)íþE ÓUUU•]V †ñïÞ `‡Mµ ÒóRD³FV { 4Õ `3U4•‹5§‚� #ÃT`èQ(ðßµq7M÷*@SVMÈ Ä¢#ê~ƒ 2 Õ´Ñjl¤@· \\ Ý.J|2“ U¡ \\ ¬º Ëv·°« \\ b;^ \0 Û6 x·Î‡]ëµ^uøîõULµZ§å—MPÖ™¬4 Hû9µ \$ 0å3Í'Vu Tõ@ƒ KW•|ñ Ž� /\$ J� *D´÷]î X“·_pª õšÞ•žÑ¥ ÄÕ² uü¤I¬Ü…z 䢮ÀÖr…Þ \n €Ò%¤8š“i^Èò»U¡1� 5³n;I \n § RŸ3§Ù QU45…5`z €ac¶b ° `qOtÙNu 6) õ T ÿ ¯‹jµ“X–´ReÈ# ÈJ-„S@á \" U¶ë ÀÎÒCÊUUß8³ ‘6Ø-ki í/YÊ ¡ R\$ ð¼!· \r n× [6VÝíqÕ€� Ê.åÎB‘ ¢ °¦cppps! \0 »Ow \" çngsôX³wGiÈ { Z \0 Su*k`”ÎžÖ a !Qo'd òx Caö ö¤cë !ƒºÞ6 0 P° \r Ê‚‹T¯ ÒœµËú¦ï¿,jÁ&ð@ ʃ( OA€æP÷ T¯jÕ ßGhλ b¶¯Ì \" %° \n ‹qX€z %‚ÃÅÈÎëm~@Ï~‹ r¶ÖJnWâ~ Î ¨] RXû FÖír’ÍxNmHp ñ+@Ñ kl#€Û \0 Ë� ívÔX&…Ø,i� Íd¥zÔÓ \0 äNýø ~wêü¸ „×û€Ø \0 äWá� ·ý� \0 ñ� KN Æm† 0� ÍpÓíB×¥Ó'X)„`Y†e±‡XyI : Ë` dÑ t¶ \n Ú('N \r €àHGuK š e¨ \0 Ÿ€Ä*3’ æ)n3ͤ oä“Vò}vö¯ ô¦æN \\ °ØØ� èÜ1i ) \" . Ž`t„> \r ØÛcÈß� ó—� fã ŒoA—© \" × ±³ É OyYïFÒ\r á[5B o*/t “(Å Å% ²úR[<òï8V‘“ \$ AMï ¨¬5¨±9 '*Œ X¤úö†‡ðÜ…ˆ\\ † æ \" jr DÔ \r e·ˆàX|ªê^©n#‚dÍ¥lÙÇn ‚©¦ªM¹¦t€~ \\ …Í› \0 ™›@ᛂg=Ñ2 ¬ À‚.†* \0 ž @Ô'9¾—yÚ ™ßž9æ dæ £zq„6ò€]œP~ \n € Pì:‰Ù<ƒ ¥œâ DY„ :]5[ [¢'I¢—ËFù� ö…º \$ Bâ<“P’ P— @N ”0 /Eú:^ D ÈJw¹ž ¥ \0 €_C d z#¢zFW4(Kú{ ¤U[¨ ý { � >\0 ^ Ž%ÐM@XS Ú‡£ZŒS lWº™ ¥…wYº� Þ” \" B *R` ঠ\n …Š àŽ ºÐQ CFè*Žº»ˆYÌͧ e‡Æ êˆ+âH ¸j™ \$ ÕQ À^\0 Zk`î ªV ¦B%Â(X**2š Íºè º»®æôN`° ºê| È ±„-©“ ‡í³«~8Zæ Æ‡Rz2 \" È Jî4› S~J»&tоe‚ m¤Và}®º NÖͳ'²Ú rú5f.&1ù� À›jâð‹ §§úK¤åm¹ { ‰¤` º† w Ü!•^# 5¥TK¥„¹Eâhq€å¦ \$ ÷ ñ®kçx|Úm¥:sDºd…zA§Ú‹? …¾ºˆ“[ðLÒȬZ²X œ®: ¹„ ¸[(!‡k¬X� ²V ¹yƒ¾° ©Â“ï \$ \0 C¢9ˆ dSi¹in‚ { � `”\n `ž À Ä|K  ¸:ç»5ä »º# t}xÐN„÷» { »[¸)êûC£ÊFK Zâ j™Â€PFY– BäpFk–›0 <Ú@ ÊD<JE™ºi 0“ 5ÃøŽ ®•T \" ¬ãVhº¬Á”ÄNÌŒ“HùWDeSsŒ’ûNŠô \0 Ëx
Line truncated
lzw_decompress ( " v0œ� F£©ÌÐ==˜ÎFS ÐÊ_6 MƳ˜èèr:™E‡CI´Êo:� C „”Xc‚ � \r æØ„J(:=ŸE†� ¦a28 ¡xð¸? Ä'ƒi°SA NN ‘ùðxs… N BáÌVl0›ŒçS œËU l� (D| Ò„çÊP¦À> šE†ã©¶yH c häÂ-3 Eb“å ¸ b½ßpEÁpÿ 9.Š� ˜Ì~ \n Ž? Kb±iw |È`Ç÷ d.¼x8EN¦ã!”Í 2™ ‡3©ˆá \r ‡� ÑYŽÌèy6 GFmYŽ8o7 \n \r ³0¤÷\0 � DbcÓ!¾Q 7 Шd8‹Áì ~‘¬N) ùEг`ôNsßð`ÆS)ÐOé— ·ç /º <� xÆ9Žo»ÔåµÁì 3 n«®2»!r¼:;ã+Â9ˆCȨ®‰Ã\n <ñ� `Èó¯bè \\ š?� `†4 \r #`È <¯Be ãB# ¤N Üã \r .D`¬«jê4ÿŽŽpé ar°ø 㢺÷>ò8Ó \$ Éc ¾1Écœ ¡c êÝ ê { n7 Àà ¡ ƒ AðN ÊRLi \r 1À¾ø!£(æ j´®+Âê62À XÊ8+ Ê âàä. \r Í Î ôƒÎ !x¼å ƒhù' ãâˆ6Sð \0 R ïÔôñOÒ \n ¼ …1(W0…ãœÇ7 qœë:NÃE:68n+ŽäÕ´ 5_(®s \r ã”ê‰ /m� 6PÔ@ÃEQ� àÄ9 \n ¨V-‹Áó \" ¦. :åJ� Ï8weÎq½|؇³XÐ ]µÝY XÁeåzWâü Ž7âûZ1� íhQfÙãu£jÑ4Z { p \\ AUËJ<õ† káÁ@¼É� Ãà@ „ }& „� ˆ L7 U°wuYh� Ô2¸È@ûu Pà7ËA†hèÌò°Þ3 Ûê çXEÍ…Zˆ]l á@Mp l vÂ) æ Á ÁHW‘ ‘Ôy >� Y � -øYŸè/«� ›ªÁî hC [*‹ûFã #~ †!Ð`ô \r #0P ïCË� —f ·¶ ¡îà \\ î›¶‡É� ^Ã%B <� \\ ½ fˆ Þ±ÅáÐÝã&/¦O‚ðL \\ jF� ¨jZ£1« \\ :Æ´>� N¹¯XaFÃAÀ ³²ðÃØÍf… h { \" s \n × 64‡ÜøÒ …¼? Ä8Ü^p� \" ë� °ñȸ \\ Úe(¸ P ƒNµìq[g¸Árÿ& }PhÊà¡ÀWÙí*Þír _sËP‡hà¼àÐ \n ÛËÃomõ¿¥Ãê—Ó#� §¡.Á \0 @é pdW ² \$ Òº°QÛ½T l0† ¾ ÃHdHë)š‡ Û� Ù À)P ÓÜØH� g àý Uþ„� ª Bèe \r †t:‡Õ \0 ) \" Åtô,´œ ’ÛÇ[� ( DøO \n R8!†Æ¬ÖšðÜlAüV… ¨4 hà £S q< žà@}ÃëÊgK±]®àè ]â=90°� '€å âøw A <‚ƒÐ ÑaÁ~€ò WšæƒD| A´††2 ÓXÙU2àéy ÅŠ� Š = ¡p)« \0 P ˜ s €µn…3 î� r„f \0 ¢F…·ºvÒÌG ® ÁI@é%¤”Ÿ+Àö_I`¶ ÌôÅ \r .ƒ N² ºËKI…[ ”Ê–SJò ©¾a Uf›Szûƒ«M §ô„ %¬·\" Q|9 €¨ Bc§aÁq \0 ©8Ÿ#Ò<a„³:z1Uf ª·>î Z ¹l‰‰ ¹� ÓÀ e5#U@iUG‚™©n¨%Ò° s¦„ Ë;gxL ´p Pš?BçŒÊQ� \\ — b „ÿ é¾’Q„=7� :¸ ¯Ý¡Qº\r :ƒtì¥ :y(Å × \n Ûd)¹ ÐÒ \n ÁX; ‹ìŽ ê CaA¬ \r áÝñŸP¨GHù!¡ ¢@È9 \n \n Al~H úªV \n sªÉÕ«� ƯÕbBr£ªö „’ ² ßû3ƒ\r žP¿% ¢Ñ„ \r }b/‰Î‘ \$ “ 5§PëCä \" w ÌB_çŽÉ UÕgAtë¤ô…夅é^QÄåUÉ ÄÖj™Áí Bvhì¡„4‡)¹ã +ª)<– j ^� <Lóà4U* õ� Bg ëÐæ è*n� Ê–è-ÿÜõÓ 9 O \$ ´‰Ø·zyM™3 „ \\ 9Üè ˜. oжšÌ ë¸E(iå àž œÄÓ7 tßšé� -&¢ \n j!\r � À yœyàD1gðÒö]«ÜyRÔ7\" ðæ § ·ƒˆ~ ÀíàÜ )TZ0E9MåYZ t Xe !Ýf†@ç { Ȭyl 8‡ ;� ¦ƒR { „ë8‡ Ä®ÁeØ+U Lñ'‚ F²1ý øæ8PE5- Ð_ !Ô7…ó [2‰JË Á;‡ HR²é ǹ€8 p痲݇@™£0,Õ®psK0 \r ¿4”¢\$ sJ¾� Ã4ÉDZ©ÕI ¢™'\$ cL”R� – MpY& ü½� Íiç z3G Í zÒšJ%ÁÌ PÜ-„� [É/xç³T¾ { p¶§ z‹ C Öv µ ¥Ó:ƒV'� \\ –’KJa¨ÃMƒ&º°£Ó¾ \" à²e� o^Q +h^â ÐiT� ð1ªORäl«, 5[ݘ \$ ¹·)¬ôjLÆ� U`£SË`Z ^ð| €‡r½=Ð ÷nç™»–˜TU 1Hyk›Çt+ \0 v áD¿ \r <œàÆ™ìñj G” žtÆ*3%k›Y ܲT *Ý |\" C Šü l hE§(È \r Ã8r‡× { Ü ñ0å²×þÙDÜ_Œ‡.6иè;ãü‡„rBj ƒO'Ûœ¥¥Ï> \$ ¤Ô`^6™Ì9‘# ¸¨§ æ4 X þ¥mh8:êûc‹ þ0 ø× ;Ø/Ô‰·¿¹Ø;ä \\ '( î„tú'+� ™òý¯Ì·°^� ]±NÑv¹ç#Ç, ëvð×ÃOÏ i� Ï–©>·Þ<S ïA \\ €\\ îµü!Ø3*tl`÷u� \0 p 'è7…Pà 9·bsœ { Àv® { ·ü7ˆ \" { ÛÆrîaÖ(¿^æ¼ÝE÷úÿë¹ gÒÜ/¡øžUÄ9g¶î÷/ÈÔ`Ä \n L\n � ) À†‚ (Aúað\" ž çØ Á &„Pø Â@O\n 師 0† (M & ©FJ 'Ú ! …0Š<ïHëîÂç Æù¥ *Ì|ìÆ*çOZím*n/bî/� ö®� Ô ˆ¹.ìâ©o \0 ÎÊdnÎ)� ù� Ži� :RŽÎëP2êmµ \0 /vìOX÷ð øFÊ³Ïˆî Œè® \" ñ®êöî¸÷0 õ0 ö‚¬© í0bËÐg jðð \$ ñné 0} ° î@ø = M Æ‚ 0nîPŸ /pæotì €÷°¨ð. Ì̽� g \0 Ð) o— \n 0È÷‰ \r F¶é € b¾i¶Ão}\n ° ̯… NQ °' ðxò FaÐJ îÎô� Lõ é ðÐ àÆ \r ÀÍ \r €Öö‘ 0Å ñ' ð¬Éd oe pÝ °4DÐÜ Ê� ¦q(~ÀÌ ê \r ‚ E °Û prùQVFHœl£‚Kj¦¿äN& j!ÍH`‚ _bh\r 1Ž º n !Í ÉŽ z™°¡ ð¥ Í \\ «¬\r Š íŠÃ`V_kÚà \" \\ ׂ' V ˆ« \0 ʾ`A CúÀ±Ï …¦VÆ` \r %¢’ Åì¦ \r ñâ ƒ‚k@NÀ°ü� Bñíš™ ¯ ·!È \n ’ \0 Z™ 6° \$ d Œ,% à%la íH× \n ‹ #¢S\$ !\$ @¶Ý 2±� „ I \$ r€ { !±°J‡2HàZ M \\ ÉÇhb,‡ '||cj~gÐr…`¼Ä¼º \$ ºÄ +êA1ðœE €Ç ÀÙ <ÊL¨ Ñ \$ âY%-FDªŠd€L 焳 ª \n @’ bVfè¾;2_(ëôLÄп ²<%@Úœ , \" êdÄÀN‚ erô \0 æƒ`Ä ¤Z €¾4Å 'ld9-ò#`äóÅ–…à¶Öãj6ëÆ£ãv ¶ àNÕÍ� f Ö @܆“&’B \$ å¶ (ðZ&„ßó27 8I à¿àP\r k \\ � §—2`¶\r dL b@ E öƒ 2`P( B'ã €¶ €º0²& ô { Â� •“§:®ªdBå1ò^؉* \r \0 c< K� | Ý5sZ¾`ºÀÀO3ê5=@å5ÀC>@ÂW* = \0 N<g¿6s67Sm7 u? { <&L Â. 3~DÄê \r Åš ¯x¹ í) ,rîi nÅ/ å O \0 o { 0kÎ]3> m‹ ”1 \0 ”I@Ô9 T34+Ô™@e ”GF MCÉ \r E3ËEtm! Û#1ÁD @‚ H(‘Ón ÃÆ<g,V`R]@úÂÇÉ3Cr7s~ÅG Iói@ \0 vÂÓ 5 \r Vß' ¬ ¤ Î £P ÀÔ \r â \$ <bÐ %(‡Ddƒ‹PWÄîÐÌbØ fO æx \0 è} Ü â”lb &‰v j 4µLS ¼¨Ö´Ô¶5&d sF Mó4Ì Ó \" .HËM0ó 1u L³ \" ÂÂ/J`ò { Çþ§€ÊxÇ� Yu* \" U.I53Q 3Qô»J„”g ’ 5… sàúŽ&jÑŒ’Õu‚ÙЪG Q MTmGBƒt l- cù*±þ \r Š«Z7Ôõ ó*hs/RUV·ðôªBŸNˈ¸Ã óãê ÔŠài¨Lk÷.©´Ätì 龩…rYi”Õé-Sµƒ3Í\\ šTëOM^ G>‘ ZQjÔ ‡™ \" ¤Ž¬i”ÖMsSãS \$ Ib f² âÑuæ¦ ´™å: ê SB|i¢ Y¦ ƒà8 v Ê# é”Dª4`‡†.€Ë^óHÅM‰_Õ¼ŠuÀ™UÊz`Z� J eçºÝ@Ceíëa‰ \" mób „6Ô¯JRÂ Ö ‘T� ?Ô£XMZÜÍІÍòpèÒ ¶ªQv¯j ÿjV¶{ ¶¼ÅCœ \r µÕ7 ‰TÊžª úí5 { Pö¿]’ \r Ó?QàAAÀè Ž‹’Í2ñ¾ “V)J i£Ü-N 9 9f– l J mÍò;u¨ @‚ <FþÑ ¾e†j €Ò Ħ� I‰<+CW@ð� çÀ¿Z‘ lÑ1É<2ÅiFý7` KG˜ ~L&+N� àYtWH飑w Ö •ƒ òl€Òs'g Éãq+Lézbiz«ÆÊŢР.ЊÇzW²Ç ùzd •W¦Û÷¹(� y)vÝE4, \0 Ô \" d¢¤\$ Bã { ²Ž!) 1U†5b p#Å}m =×È@ˆ w Ä P \0 ä \r ì ¢·‘€`O|ëÆ ö œÉ� üÅõûYôæJÕ‚ öE×ÙOuž_§ \n `F`È }MÂ.#1á‚ ¬fì*´Õ¡ µ§ ¿zàu cû€—³ xfÓ8kZR¯s2 Ê‚-†’§Z2+ ŽÊ·¯(åsU õcDòÑ·Ê ì˜ÝX! àÍuø&-vPÐØ± \0 'LïŒX øLà ¹Œˆo Ý ô>¸ÕŽ Ó \r @ÙP õ \r xF ×üE€ÌÈ ï%À ã ì®ü= 5NÖœƒ¸?„7ùNËÃ…©wŠ`ØhX«98 Ì� � ø¯q¬£zãÏd%6Ì‚tÍ/…•˜ä ¬ë� LúÍl¾Ê,ÜK a•N~Ï ÀÛìú ,ÿ'íÇ€M\r f9 £w� ˜ !x� ÷x[ˆÏ‘ØG’ 8;„xA˜ù-IÌ&5 \$ – D\$ ö¼³%…ØxѬÁ”È´À Œ]›¤õ‡&o‰-3� 9ÖLù½z� ü§y6 ¹;u¹zZ èÑ8ÿ_•É� x \0 D ?šX7†™«’y±OY.# 3Ÿ 8 ™Ç€˜e”Q¨=Ø€ * ˜™G Œw m ³Ú „Y‘ ù ÀÚ]Y OY¨F¨íšÙ)„z # \$ eŠš)† /Œz?£z;™—Ù ¬^ÛúFÒZg¤ù• Ì÷¥™§ƒš`^Úe¡ ¦º#§ “Øñ” ©Žú?œ¸e£€M£Ú3uÌå� ƒ 0¹>Ê \" ?Ÿö@ ×—Xv• \" ç ”Œ¹¬¦*Ô¢ \r 6v~‡ÃOV~� &ר� ^gü šÄ‘Ùž‡'Î €f 6:-Z~ ¹šO6;zx� ²;&!Û+ { 9M³ Ù³d¬ \r ,9Öí°ä·W ÆÝ:ê \r úÙœùã� @ç� ‚+¢·]œÌ-ž[gž™Û‡[s¶[ižÙ iÈq››y›éxé+“|7Í { 7Ë|w³} „¢› £E– ûW°€Wk¸|JØ� ¶ å‰xmˆ¸q xwyjŸ»˜#³˜e¼ ø(²©‰¸� � Àßž þ ™†ò³ { èßÚ� y“ »M»¸´@«æÉ‚“°Y� (gÍš-ÿ©º ©äí¡š ¡ØJ(¥ü� @ó… ;…yÂ#S¼‡ µY„Èp@Ï%èsžúoŸ9;°ê ¿ôõ¤¹+¯Ú ¥;«Áú ˆZ Nٯº§„š k¼V§·u‰[ñ¼x� …|q’ ¤ON ?€ ÉÕ …`uœ ¡6� | |X ¹¤—س|O ìx!ë:� ¨œÏ—Y]–¬¹Ž™c•¬À \r ¹hÍ9nÎ Á¬¬ë�
Line truncated
get_lang (){ global $a ; return $a ;} function
lang ( $v , $F = null ){ if ( is_string ( $v )){ $kf = array_search ( $v , get_translations ( " en " )); if ( $kf !== false ) $v = $kf ;} global $a , $hh ; $gh = ( $hh [ $v ] ? $hh [ $v ] : $v ); if ( is_array ( $gh )){ $kf = ( $F == 1 ? 0 : ( $a == 'cs' || $a == 'sk' ? ( $F && $F < 5 ? 1 : 2 ) : ( $a == 'fr' ? ( ! $F ? 0 : 1 ) : ( $a == 'pl' ? ( $F % 10 > 1 && $F % 10 < 5 && $F / 10 % 10 != 1 ? 1 : 2 ) : ( $a == 'sl' ? ( $F % 100 == 1 ? 0 : ( $F % 100 == 2 ? 1 : ( $F % 100 == 3 || $F % 100 == 4 ? 2 : 3 ))) : ( $a == 'lt' ? ( $F % 10 == 1 && $F % 100 != 11 ? 0 : ( $F % 10 > 1 && $F / 10 % 10 != 1 ? 1 : 2 )) : ( $a == 'lv' ? ( $F % 10 == 1 && $F % 100 != 11 ? 0 : ( $F ? 1 : 2 )) : ( $a == 'bs' || $a == 'ru' || $a == 'sr' || $a == 'uk' ? ( $F % 10 == 1 && $F % 100 != 11 ? 0 : ( $F % 10 > 1 && $F % 10 < 5 && $F / 10 % 10 != 1 ? 1 : 2 )) : 1 )))))))); $gh = $gh [ $kf ];} $ua = func_get_args (); array_shift ( $ua ); $Kc = str_replace ( " %d " , " %s " , $gh ); if ( $Kc != $gh ) $ua [ 0 ] = format_number ( $F ); return
vsprintf ( $Kc , $ua );} function
switch_lang (){ global $a , $Ed ; echo " <form action='' method='post'> \n <div id='lang'> " , lang ( 20 ) . " : " . html_select ( " lang " , $Ed , $a , " this.form.submit(); " ), " <input type='submit' value=' " . lang ( 21 ) . " ' class='hidden'> \n " , " <input type='hidden' name='token' value=' " . get_token () . " '> \n " ; echo " </div> \n </form> \n " ;} if ( isset ( $_POST [ " lang " ]) && verify_token ()){ cookie ( " adminer_lang " , $_POST [ " lang " ]); $_SESSION [ " lang " ] = $_POST [ " lang " ]; $_SESSION [ " translations " ] = array (); redirect ( remove_from_uri ());} $a = " en " ; if ( isset ( $Ed [ $_COOKIE [ " adminer_lang " ]])){ cookie ( " adminer_lang " , $_COOKIE [ " adminer_lang " ]); $a = $_COOKIE [ " adminer_lang " ];} elseif ( isset ( $Ed [ $_SESSION [ " lang " ]])) $a = $_SESSION [ " lang " ]; else { $ka = array (); preg_match_all ( '~([-a-z]+)(;q=([0-9.]+))?~' , str_replace ( " _ " , " - " , strtolower ( $_SERVER [ " HTTP_ACCEPT_LANGUAGE " ])), $Td , PREG_SET_ORDER ); foreach ( $Td
as $C ) $ka [ $C [ 1 ]] = ( isset ( $C [ 3 ]) ? $C [ 3 ] : 1 ); arsort ( $ka ); foreach ( $ka
as $z => $H ){ if ( isset ( $Ed [ $z ])){ $a = $z ; break ;} $z = preg_replace ( '~-.*~' , '' , $z ); if ( ! isset ( $ka [ $z ]) && isset ( $Ed [ $z ])){ $a = $z ; break ;}}} $hh = $_SESSION [ " translations " ]; if ( $_SESSION [ " translations_version " ] != 2038034077 ){ $hh = array (); $_SESSION [ " translations_version " ] = 2038034077 ;} function
get_translations ( $Dd ){ switch ( $Dd ){ case " en " : $f = " A9 D “yÔ@s:ÀGà¡(¸ffƒ‚Š¦ã ˆÙ : Ä S� °Þa2 \" 1¦.. L'ƒI´êm‘ #Çs,†K ƒšOP#IÌ@%9� ¥ i4 Èo2Ï� Æó €Ë,9� % ÀPÀb2� £a¸àr\n 2› N CÈ(Þr4™Í1CdHæe9 ,‡ \n H(� :Ebç9A Èi: ‰&ëyË w� ç { à(³ 'h ,@p´ ¨¦zMÊ5 2 N‘ƒDöåz2Ê \n y3(+W”‘ ¤&3y¸ék:À¦¸ \r v³c!µái¦ê~ _k3‚ˆ†X¾Œ L0›ŒçS r݉šégsu8åŠ9j� 5 ºá”9uÎQCn´ a9œÎös'+E økI†ûQ¸ (. k¢2¶Á <þ� B È6k€@£³ªZš„ ‚Î¦Œ# ƤŽnBE ¾ã ò ì \0 Ђà »àù>� `@ \$ cB 3 ¡ Ð: ƒ€æ áxï …É â<+8Î À� xá ¾c� È „J \0 |6¬éàÜ3,ð nÚ‡� x 5N`Ê1© \n ò×D㺠: C¬È„µ¢ ØÑ®,ÐÊ;Á3œ ¼¢Íh� ;„ Ê+Œ/[� 9¡‰ Ä<´ `HKEQ‹¨†7� ‰ { ü* + I� ¯km ލÈ@ÁŒh \r <À¹c0Â:Îa \0 ì0Òh§1L€PŒ:� Ó ÒÚÑ Î3 #;E]¿Õ� \n 1� \0 S¢<ŽãBáYBàPȤÃm“� ç¥à¨âÀÐ Î:Y \" \r tÚÖÕ`ØÓϨ8ÆèµÂˆ˜ 6”ë¢ú� ë£ü9µ“Ìé O� Íõ vBÂ0Óh D� `6t û_«}Õ…`‚ƒ2Í®¢JÅhˆ£Ä,Ã`£. t \" îP„ -è½j \" ' B~Ÿ,êr)t¨ [˜¸° \$ ;^5Se »%ã áD ˜ýæ¹%¯Òz:Q ×B¬¢8Ê7½³bË9½,z \r B CxÌ3 \r � jPýŒñ@ *\r èÔ 7 (Û 7CoˆÍV@ÏムjI „µÐ.í Hu R ì›5—µ! Ô9·Üð>æ¹ [Kª0ï Æ÷¾´lnÁ ûg V% £ \$ 7 \r iô°¸Ž°ë¤ AR á 6Œ Ói®1ƒ# Ʊ¼s DZøï ÁplŠ9HòJŽŠKct xv ¥.Ëó ãb)ØÐÒ€Œ‘r;� aÜS»ÇiBTò.2[ã&¤*xá馡t_ ö‘´q G‘ô� !wÁt� \$ xÙ¯ \\ ÚÊ– ,õÕ;Ì Ì¾ UÀ É \n ¢@A¬ž Òè ›: *G™ç›W2…P»|t¥5Ÿ2ãP êÎ \$ KŒî¢Rd ì tg´� † ̾Ü+m n!¸ŸÔH‰‹” \" _ µx=H \$ U� � 1 雟âîq‘ \\ Ž1³FHB€H\n DÑ¿³ A@\$ ˆ€’%^I� A(Ra¸â+§N¨ŒÀi3D \\ Î œO� 2 & \$ Íô˜ Ü«Ú鳇ÆÚ à ç–z� 'ÄŒ9¤´6ÞaÊV \n … >3è‰ \r *Èo…¥ ƒH@—[¥51Ú<:ð@ ˜R Æz çԬ͔‰ \$ ‰e»9 LJIY-%à€73Ô Ö£™‹&¤� 4œÀÈOŠz &¯¤ .ˆËZ¥ { €’D ! /ä†9 ùR¸ \r 1 &䨒C L K¾‘'t1‘æ 6 òK3Žu²Â‚Ó1BxS \n ‹ð0¾ ¤MSt—žŒÈ¸Ì– \r 9á 1u¤”é‡%‡ ‹ù WFP”5eàtHÙ #ð¶w p@× t¼' h‘„`© Ú -‰Ê ¦†i¾AÏ9p(iT´ � Ø xÀQ´ &T ÿ 𜠨P� * P M� \0 D ¡0 \" ÓÕ6¥ ´´ '´ÿ¨Z—� qì?KypSòƱ èdš‡ ”†ó`G*é°(çp Ot¨e \$ Ⱃɘü òPÐXi� 2FÁŸ D b� ¬uVl™2¢ ü Ø1£žˆˆ·Ÿó� 3G AYBÄ ú¢ ™y Ž”† ãÑ AÔ \\ (:†pÑ1b”TfÏ@ óù I ;eu”2Òb’²T� 3xŒÔY tkTä‹9Õí1Äó•^%‚t� ¶Ü� §dð ¥êx\n †¢;-0ð]S’û-w8º…2 \n � Ý´x ž” M©`g¥Á”²„5œ Ý cì\n ô62ЯÙú «N0´™ÃÒ€ ‚ @uÐSõCn•²Y4U• Õ L¡¶h ÞõX)5w‚ T ! \$ ¶\\ %샋³V&¡xê Nû-o ]ƨ� @ Á &1AÝG V¢ ‰¹q¯E1·âB ÂZ.ox¬‘5»zú@N1. \r ¤§ãXž 1Æ:ÅÆ.AãäÉ LBñlòüÏc@Æß‰C { Ä™ çå|� Ž v-ÂØË ålm’ Y}Ëùl ›‹Õ±E¢ \$ x� g pG3¦Tk =”§Ø@©9…= \0 (+†PÅ � q7™Š )+Š4¬ˆÈpfGt¸ Ðbô˜lȘ„9(€� ÑË=å˜ç¤¿ æ`� 02Dúº� Õ¦sc¨IÕ&DøIjìh > ÖE…˜ê½lwN p‰îu•kí[]שtÏ÷-tì`Ë]•‚tŽ»0œlêí2µÎÄ]5H° \$ rj«U±ân[õêÊÈYï0Æ è(º›ºÞ*ˆÝFÝâÔª™c Šˆ0wPŸW2 ±öŠÏ×Fȧ‚ 0¦ˆ¹Òª¡:§°ÊÚ@¶¶®¯ *·×æ ÄLJ ©ùþ¸pýi«6|ä°1׎ØN!x zz‘‰X Ð¥� bG ]dÈšä£ ¦!pfÇð€ òõBƒxþ¿¡üÑê“ü–c1ï:Éùü#^ ÆÚxÀdâqצ� Z ) Aå;K¦tî±y:×!‡¬{ ašë¯!Ú y»e6™)b|K¦îþ•Pì£ rä¦C+tYÑw¸A D.Ÿ ‚Ñ,ÓöµáR lWhhÍg«™w[ ÔÝ)í •õkÅ×Ë-ËðÉñ� …6 Âï1Ñ:× Ã©_ bîOaÚ ª:Ü… Ôzž õÉ«™r<ÿ`;! ¸À+ A/UĶN Á%7Œp Wï> ¿ì { fî”M×ϲ* À„Seò2 ?œ� AëïS0RiN çüÇ”v.¥ðsÿ>6ÿ“� z¾¸J?W@ö¾ç?Ý ®!'Í3 ½ \r †Dàú Hÿ f÷ >ÿoúÿéî²cÖîå4¼ÄÆ \r o”üêòöëÏ Šõ� ) ï”Û ÊþÂâ½€Ö½ËêAÏ`ý :½ëìùOŒÚpQ� ÊÚïl% <¾‹à=0 °Fu ¦Æh¯°Sàª0° \" ö \" Q ð \\ ý§· ‡ æù€� > œ>¯â8€ ê Séî ÀÞ� ŒM \0 Ä8ù@Ö \$ Â.ç†÷ ƒâ®C|Øð¾èˆÄ#Фofð# \" ò- — LPMU ç¶É͆ÌPìß°ÎìNrçhÄM€Ø iÊ \r +ÐÒd>Ü‚0lÈ \r Ìm# \0 (läï©,‘ \0 ª \n €Œ peÃh/ã¤Ë.ŽùJDÃÐÄèðü®ŽÅ £ Ž¢&eEDd«z•O85 › ñ \" µ€Ø¦… 7c ‚œ/âš¿� � Qpm)ÐUÅ`7&¾¢føJ©è´Â@ZãÞ:Ñv*- Dâp \" Nkh±íi JìM� ðù� © ÑÄ;ªÎÚkk -þìCh|ñÙ äØð\$ ⑾/qÜèEê6ä 'm— ¦†¸Ë c˰³ï! \r ëj÷� ½ \n N: \0 ˜ª…’ßn \" . Y2  5®^1‹ C ê%ê ËnA \" Ø \" vSp*µ„–zkÝ £� ã`TB˜ïk _Òd· ê,ª¼. \0 î- v`Oüd ‚ )¢ÔÁ&ˆ©†ö Z@BLùI¬*LÅ)’œ� ÑöØò¢ À " ; break ; case " ar " : $f = " ÙC¶P‚ Â� ²†l*„ \r ”,& \n ÙA¶ í„ø(J. ™„ 0Se \\ ¶ \r …Œ bÙ@¶ 0´ , \n Q,l)ÅÀ¦Âµ°¬†A òéj _1� CÐM…«e €¢ S™ \n g@ŸOgë¨ô’XÙDMë )˜° 0 Œ†cA¨Øn8 Çe*y#au4� ¡ ´ Ir*:†Êê ÆÂÎ ®‰C#·%< U[VD ˜˜œí §ª¥X T \n h¥ƒ¶ “ ‡ 1Ãb1Yœ•±M7™–MçQ Âv2ˆ \r Æñ Àäi; M†S9”æ :m § !„é±: \r ;ó¡„Å»§«e \r …Æ^kÓ \\ BéU»e P� e2Õ©Of± ÌB3vŠꃥº‚ŠzóI¸Ï †ß•· uÉtl +‚ú� /‹ˆ *� Ã[f;� Á \0 Ê9 Cxä§®,Ép ¯âäÀ-… { Î iÊöü¯ì 2ˆ'� ܨ¤ŠÙbލkbB‰•(!Pª§hBØU&Œ’üœ2®ú≠r°ñÇÊÔ‚‚\" r3 ﱦÁLÁ # ÚúÁá \0 È7·Í� Þ:#n á L Æ1·Ã›ê3„ ´ã9Ã æØŽãK’Õ̬ä9Žð� È äÜ4 C(Ì „C@è: ˜t …ã½ \$ 2´± ÂC8^2� Áxá=Ï£� È „J`|6ÂM‹ê3BCkŒ4� ãpx Œ!òž� – &Ám› º? ³‘ã'\\ × o\$ “� j©Q \0 G¬œ=%ØuÕ› £È xÆHä \" h \\ ³%ª¬›²ˆ� +Œ#� Ý5£� (É ( ý…n%ªÉ_ \r ëͦº› \$ šY]¬R —F2’ < ”0Â:� “\0 ì0� ƒ¨Ë 0 =~’ CL \n ³ !ÉÂZ� —)¥–› kR<÷ Jº# ÙµÎ%^Ç¬ÊØY>)Äl öÌWnâ¥-Á \\ ½€P� „ \r Ž œÝ£c Â7@Kó%n0‰È¦(‰‹R ýºï-¦ñ wË9 ÅO | GHN¯gÚÑ ‹šfŒ»2õ³©ƒ \0 [í+æßš!k]� ®Èzý� ç+æW—Ø:Mþ� ç™›%oYø¡°ô³LãÛpCÒ~ !Y©· yˆŽ^†Ø©� % \r ÜÚ–ßóüèÊ<8ãtÕXŽj|BÂ/¯ G»Ã¸«K £åsµ›±ê y|»˜ 2l yv� À( 2‰¯Ð ä: \r €STÖ \\ ˆÞ3 Ãd°ÈÀr Ë!° :²V B ÞÚUÃpò ½Pë3Í#6 \r ƒxÎúŽt \0 è9}c Î O¨ €+¨ %pÜ N8( `¤È¢ \$ ’÷’ A|&! “ [ i3 \n †¹ ›õX Ÿbj>À� *Àd ¬ \r !‘ ,¨#Z¡T:‰Qj5G© &¥a2˜ JiN ô¶èC¢°S ˆ Cõ^}•šµ)î0Èr µÊ Í 0«ˆfꮉpƒ ŽÍ ˜gºµ`‰rI«d™„Ôäqá Ÿ iñ? àð J… €¹@¨8`¢ RŒQÊAI u(¥ƒr ÊeM©×Nê] \\ CTÁ \$ 6‡ v Tàt‰ ùÑÀPÊ� ×YÁ€¡„5ª¤À { é’*Ý|E¥þJVâKBÈb( \" üŽàÐh6)š « @� CcA FÆP (? \$ Xa Ñ¡0¿ Öüš õ~è5:œ“� ,ˆØa’\0 €1Ç) \" Xc ?„4É% ^A\n £„*7 ß’ \" X&Ô4 nCHšÜ1ä5 –âªIHaˆœ¨\0 ™„5c C A„rhÛ ƒto *ëLo<ßœ´¼™eÈo ô \$ §·§ŒB� cIó‚ { � E¼� ɰ©–(=U ôÜ Ôúh€H4äª Ü Bz� j…u‡s” ÃD\r !� E w3Í‹F ©Ì§’r ,� \0 C \n aH#QÉÄQ� å´œ § [e { ß(%±¥ RÚ� K⹞®Î ˆ’fÀ ñ’‚åm~Q„†×&ùà Å ¢”súuÄ d!n sÀIåDUtdÌ \$ ‘ òjÒÔ+¡ämNI“”oÔ(qaÁÍ0 d \" a\$ €K4µ †7êœæ} Sæö³� Ö˜‘Èj; @'…0¨BÈ‹_¬F.tÇG€!Wa‡¯ \$ ø� ‹R M˜ÕS´óÎu� ó·^m½ Á‰£B ^L¬ô’¤¡‘¤Tp[mQPµa (› Ñ� iÃ~ªU6Óêv xL šƒ‚ r›‚0T \n ´ 7.°Ó#S \$ ²¶^Æ #`„ÏÁÓGeTVŲ´B ú Xŵ•Š€ Âp \n ¡@ \" ¨ p~� &\\ .ÒQ oŸ+Ë \\ ”+7'³„b¬ÕÉ]f&áV : Å \0 ”ÏT†|-áwx \r dŸ (¸ K„N:·d/ —4B L±|?HÁ¤LlPh³a£ …oÑòƒH`mÉ&ÂÀ—¼ .³•æQX(Q³¬ { Ÿ“ns^G ]µ § ™Ñ–N‚ªÿ65£L_2yrgF%Š :2¦0&„Ù!à¤*B ñ€F®t IRTAÈ#p \$ æTA ‰Ñ7‘]Û¾e1–ܘ å l«.®� 8Ô× !!Ì©e C P� S \r !é‡Ïé xS ¦î€Ð� H‰@ \n ŒÑ¢l= hºÍÈe ël¶‹m \\ Å� ' ‘Æè#ÂÙ# |
Line truncated
Min_PDO { var $_result , $server_info , $affected_rows , $errno , $error , $pdo ; function
__construct (){ global $c ; $kf = array_search ( " SQL " , $c -> operators ); if ( $kf !== false ) unset ( $c -> operators [ $kf ]);} function
dsn ( $Ub , $V , $df , $Ge = array ()){ $Ge [ PDO :: ATTR_ERRMODE ] = PDO :: ERRMODE_SILENT ; $Ge [ PDO :: ATTR_STATEMENT_CLASS ] = array ( 'Min_PDOStatement' ); try { $this -> pdo = new
PDO ( $Ub , $V , $df , $Ge );} catch ( Exception $oc ){ auth_error ( h ( $oc -> getMessage ()));} $this -> server_info =@ $this -> pdo -> getAttribute ( PDO :: ATTR_SERVER_VERSION );} function
quote ( $yg ){ return $this -> pdo -> quote ( $yg );} function
query ( $I , $oh = false ){ $J = $this -> pdo -> query ( $I ); $this -> error = " " ; if ( ! $J ){ list (, $this -> errno , $this -> error ) = $this -> pdo -> errorInfo (); if ( ! $this -> error ) $this -> error = lang ( 22 ); return
false ;} $this -> store_result ( $J ); return $J ;} function
multi_query ( $I ){ return $this -> _result = $this -> query ( $I );} function
store_result ( $J = null ){ if ( ! $J ){ $J = $this -> _result ; if ( ! $J ) return
false ;} if ( $J -> columnCount ()){ $J -> num_rows = $J -> rowCount (); return $J ;} $this -> affected_rows = $J -> rowCount (); return
true ;} function
next_result (){ if ( ! $this -> _result ) return
false ; $this -> _result -> _offset = 0 ; return @ $this -> _result -> nextRowset ();} function
result ( $I , $n = 0 ){ $J = $this -> query ( $I ); if ( ! $J ) return
false ; $L = $J -> fetch (); return $L [ $n ];}} class
Min_PDOStatement
extends
PDOStatement { var $_offset = 0 , $num_rows ; function
fetch_assoc (){ return $this -> fetch ( PDO :: FETCH_ASSOC );} function
fetch_row (){ return $this -> fetch ( PDO :: FETCH_NUM );} function
fetch_field (){ $L = ( object ) $this -> getColumnMeta ( $this -> _offset ++ ); $L -> orgtable = $L -> table ; $L -> orgname = $L -> name ; $L -> charsetnr = ( in_array ( " blob " ,( array ) $L -> flags ) ? 63 : 0 ); return $L ;}}} $Qb = array (); function
add_driver ( $u , $E ){ global $Qb ; $Qb [ $u ] = $E ;} function
get_driver ( $u ){ global $Qb ; return $Qb [ $u ];} class
Min_SQL { var $_conn ; function
__construct ( $g ){ $this -> _conn = $g ;} function
select ( $Q , $N , $Z , $s , $Ie = array (), $_ = 1 , $G = 0 , $rf = false ){ global $c , $y ; $ud = ( count ( $s ) < count ( $N )); $I = $c -> selectQueryBuild ( $N , $Z , $s , $Ie , $_ , $G ); if ( ! $I ) $I = " SELECT " . limit (( $_GET [ " page " ] != " last " && $_ != " " && $s && $ud && $y == " sql " ? " SQL_CALC_FOUND_ROWS " : " " ) . implode ( " , " , $N ) . " \n FROM " . table ( $Q ),( $Z ? " \n WHERE " . implode ( " AND " , $Z ) : " " ) . ( $s && $ud ? " \n GROUP BY " . implode ( " , " , $s ) : " " ) . ( $Ie ? " \n ORDER BY " . implode ( " , " , $Ie ) : " " ),( $_ != " " ? + $_ : null ),( $G ? $_ * $G : 0 ), " \n " ); $ug = microtime ( true ); $K = $this -> _conn -> query ( $I ); if ( $rf ) echo $c -> selectQuery ( $I , $ug , ! $K ); return $K ;} function
delete ( $Q , $zf , $_ = 0 ){ $I = " FROM " . table ( $Q ); return
queries ( " DELETE " . ( $_ ? limit1 ( $Q , $I , $zf ) : " $I $zf " ));} function
update ( $Q , $P , $zf , $_ = 0 , $cg = " \n " ){ $Dh = array (); foreach ( $P
as $z => $X ) $Dh [] = " $z = $X " ; $I = table ( $Q ) . " SET $cg " . implode ( " , $cg " , $Dh ); return
queries ( " UPDATE " . ( $_ ? limit1 ( $Q , $I , $zf , $cg ) : " $I $zf " ));} function
insert ( $Q , $P ){ return
queries ( " INSERT INTO " . table ( $Q ) . ( $P ? " ( " . implode ( " , " , array_keys ( $P )) . " ) \n VALUES ( " . implode ( " , " , $P ) . " ) " : " DEFAULT VALUES " ));} function
insertUpdate ( $Q , $M , $qf ){ return
false ;} function
begin (){ return
queries ( " BEGIN " );} function
commit (){ return
queries ( " COMMIT " );} function
rollback (){ return
queries ( " ROLLBACK " );} function
slowQuery ( $I , $Ug ){} function
convertSearch ( $v , $X , $n ){ return $v ;} function
convertOperator ( $De ){ return $De ;} function
value ( $X , $n ){ return ( method_exists ( $this -> _conn , 'value' ) ? $this -> _conn -> value ( $X , $n ) : ( is_resource ( $X ) ? stream_get_contents ( $X ) : $X ));} function
quoteBinary ( $Tf ){ return
q ( $Tf );} function
warnings (){ return '' ;} function
tableHelp ( $E ){} function
hasCStyleEscapes (){ return
false ;}} class
Adminer { var $operators ; function
name (){ return " <a href='https://www.adminer.org/' " . target_blank () . " id='h1'>Adminer</a> " ;} function
credentials (){ return
array ( SERVER , $_GET [ " username " ], get_password ());} function
connectSsl (){} function
permanentLogin ( $i = false ){ return
password_file ( $i );} function
bruteForceKey (){ return $_SERVER [ " REMOTE_ADDR " ];} function
serverName ( $O ){ return
h ( $O );} function
database (){ return
DB ;} function
databases ( $Fc = true ){ return
get_databases ( $Fc );} function
schemas (){ return
schemas ();} function
queryTimeout (){ return
2 ;} function
headers (){} function
csp (){ return
csp ();} function
head (){ return
true ;} function
css (){ $K = array (); $Bc = " adminer.css " ; if ( file_exists ( $Bc )) $K [] = " $Bc ?v= " . crc32 ( file_get_contents ( $Bc )); return $K ;} function
loginForm (){ global $Qb ; echo " <table class='layout'> \n " , $this -> loginFormField ( 'driver' , '<tr><th>' . lang ( 23 ) . '<td>' , html_select ( " auth[driver] " , $Qb , DRIVER , " loginDriver(this); " ) . " \n " ), $this -> loginFormField ( 'server' , '<tr><th>' . lang ( 24 ) . '<td>' , '<input name="auth[server]" value="' . h ( SERVER ) . '" title="hostname[:port]" placeholder="localhost" autocapitalize="off">' . " \n " ), $this -> loginFormField ( 'username' , '<tr><th>' . lang ( 25 ) . '<td>' , '<input name="auth[username]" id="username" autofocus value="' . h ( $_GET [ " username " ]) . '" autocomplete="username" autocapitalize="off">' . script ( " qs('#username').form['auth[driver]'].onchange(); " )), $this -> loginFormField ( 'password' , '<tr><th>' . lang ( 26 ) . '<td>' , '<input type="password" name="auth[password]" autocomplete="current-password">' . " \n " ), $this -> loginFormField ( 'db' , '<tr><th>' . lang ( 27 ) . '<td>' , '<input name="auth[db]" value="' . h ( $_GET [ " db " ]) . '" autocapitalize="off">' . " \n " ), " </table> \n " , " <p><input type='submit' value=' " . lang ( 28 ) . " '> \n " , checkbox ( " auth[permanent] " , 1 , $_COOKIE [ " adminer_permanent " ], lang ( 29 )) . " \n " ;} function
loginFormField ( $E , $bd , $Y ){ return $bd . $Y ;} function
login ( $Pd , $df ){ if ( $df == " " ) return
lang ( 30 , target_blank ()); return
true ;} function
tableName ( $Fg ){ return
h ( $Fg [ " Name " ]);} function
fieldName ( $n , $Ie = 0 ){ return '<span title="' . h ( $n [ " full_type " ]) . '">' . h ( $n [ " field " ]) . '</span>' ;} function
selectLinks ( $Fg , $P = " " ){ global $y , $l ; echo '<p class="links">' ; $Od = array ( " select " => lang ( 31 )); if ( support ( " table " ) || support ( " indexes " )) $Od [ " table " ] = lang ( 32 ); if ( support ( " table " )){ if ( is_view ( $Fg )) $Od [ " view " ] = lang ( 33 ); else $Od [ " create " ] = lang ( 34 );} if ( $P !== null ) $Od [ " edit " ] = lang ( 35 ); $E = $Fg [ " Name " ]; foreach ( $Od
as $z => $X ) echo " <a href=' " . h ( ME ) . " $z = " . urlencode ( $E ) . ( $z == " edit " ? $P : " " ) . " ' " . bold ( isset ( $_GET [ $z ])) . " > $X </a> " ; echo
doc_link ( array ( $y => $l -> tableHelp ( $E )), " ? " ), " \n " ;} function
foreignKeys ( $Q ){ return
foreign_keys ( $Q );} function
backwardKeys ( $Q , $Eg ){ return
array ();} function
backwardKeysPrint ( $Ba , $L ){} function
selectQuery ( $I , $ug , $xc = false ){ global $y , $l ; $K = " </p> \n " ; if ( ! $xc && ( $Lh = $l -> warnings ())){ $u = " warnings " ; $K = " , <a href='# $u '> " . lang ( 36 ) . " </a> " . script ( " qsl('a').onclick = partial(toggle, ' $u '); " , " " ) . " $K <div id=' $u ' class='hidden'> \n $Lh </div> \n " ;} return " <p><code class='jush- $y '> " . h ( str_replace ( " \n " , " " , $I )) . " </code> <span class='time'>( " . format_time ( $ug ) . " )</span> " . ( support ( " sql " ) ? " <a href=' " . h ( ME ) . " sql= " . urlencode ( $I ) . " '> " . lang ( 11 ) . " </a> " : " " ) . $K ;} function
sqlCommandQuery ( $I ){ return
shorten_utf8 ( trim ( $I ), 1000 );} function
rowDescription ( $Q ){ return " " ;} function
rowDescriptions ( $M , $Ic ){ return $M ;} function
selectLink ( $X , $n ){} function
selectVal ( $X , $A , $n , $Qe ){ $K = ( $X === null ? " <i>NULL</i> " : ( preg_match ( " ~char|binary|boolean~ " , $n [ " type " ]) &&! preg_match ( " ~var~ " , $n [ " type " ]) ? " <code> $X </code> " : $X )); if ( preg_match ( '~blob|bytea|raw|file~' , $n [ " type " ]) &&! is_utf8 ( $X )) $K = " <i> " . lang ( 37 , strlen ( $Qe )) . " </i> " ; if ( preg_match ( '~json~' , $n [ " type " ])) $K = " <code class='jush-js'> $K </code> " ; return ( $A ? " <a href=' " . h ( $A ) . " ' " . ( is_url ( $A ) ? target_blank () : " " ) . " > $K </a> " : $K );} function
editVal ( $X , $n ){ return $X ;} function
tableStructurePrint ( $o ){ global $zg ; echo " <div class='scrollable'> \n " , " <table class='nowrap odds'> \n " , " <thead><tr><th> " . lang ( 38 ) . " <td> " . lang ( 39 ) . ( support ( " comment " ) ? " <td> " . lang ( 40 ) : " " ) . " </thead> \n " ; foreach ( $o
as $n ){ echo " <tr><th> " . h ( $n [ " field " ]); $U = h ( $n [ " full_type " ]); echo " <td><span title=' " . h ( $n [ " collation " ]) . " '> " . ( in_array ( $U ,( array ) $zg [ lang ( 9 )]) ? " <a href=' " . h ( ME . 'type=' . urlencode ( $U )) . " '> $U </a> " : $U ) . " </span> " ,( $n [ " null " ] ? " <i>NULL</i> " : " " ),( $n [ " auto_increment " ] ? " <i> " . lang ( 41 ) . " </i> " : " " ),( isset ( $n [ " default " ]) ? " <span title=' " . lang ( 42 ) . " '>[<b> " . h ( $n [ " default " ]) . " </b>]</span> " : " " ),( support ( " comment " ) ? " <td> " . h ( $n [ " comment " ]) : " " ), " \n " ;} echo " </table> \n " , " </div> \n " ;} function
tableIndexesPrint ( $x ){ echo " <table> \n " ; foreach ( $x
as $E => $w ){ ksort ( $w [ " columns " ]); $rf = array (); foreach ( $w [ " columns " ] as $z => $X ) $rf [] = " <i> " . h ( $X ) . " </i> " . ( $w [ " lengths " ][ $z ] ? " ( " . $w [ " lengths " ][ $z ] . " ) " : " " ) . ( $w [ " descs " ][ $z ] ? " DESC " : " " ); echo " <tr title=' " . h ( $E ) . " '><th> $w[type] <td> " . implode ( " , " , $rf ) . " \n " ;} echo " </table> \n " ;} function
selectColumnsPrint ( $N , $e ){ global $Oc , $Uc ; print_fieldset ( " select " , lang ( 43 ), $N ); $t = 0 ; $N [ " " ] = array (); foreach ( $N
as $z => $X ){ $X = $_GET [ " columns " ][ $z ]; $d = select_input ( " name='columns[ $t ][col]' " , $e , $X [ " col " ],( $z !== " " ? " selectFieldChange " : " selectAddRow " )); echo " <div> " . ( $Oc || $Uc ? " <select name='columns[ $t ][fun]'> " . optionlist ( array ( - 1 => " " ) + array_filter ( array ( lang ( 44 ) => $Oc , lang ( 45 ) => $Uc )), $X [ " fun " ]) . " </select> " . on_help ( " getTarget(event).value && getTarget(event).value.replace(/ | \$ /, '(') + ')' " , 1 ) . script ( " qsl('select').onchange = function () { helpClose(); " . ( $z !== " " ? " " : " qsl('select, input', this.parentNode).onchange(); " ) . " }; " , " " ) . " ( $d ) " : $d ) . " </div> \n " ; $t ++ ;} echo " </div></fieldset> \n " ;} function
selectSearchPrint ( $Z , $e , $x ){ print_fieldset ( " search " , lang ( 46 ), $Z ); foreach ( $x
as $t => $w ){ if ( $w [ " type " ] == " FULLTEXT " ){ echo " <div>(<i> " . implode ( " </i>, <i> " , array_map ( 'h' , $w [ " columns " ])) . " </i>) AGAINST " , " <input type='search' name='fulltext[ $t ]' value=' " . h ( $_GET [ " fulltext " ][ $t ]) . " '> " , script ( " qsl('input').oninput = selectFieldChange; " , " " ), checkbox ( " boolean[ $t ] " , 1 , isset ( $_GET [ " boolean " ][ $t ]), " BOOL " ), " </div> \n " ;}} $Na = " this.parentNode.firstChild.onchange(); " ; foreach ( array_merge (( array ) $_GET [ " where " ], array ( array ())) as $t => $X ){ if ( ! $X || ( " $X[col] $X[val] " != " " && in_array ( $X [ " op " ], $this -> operators ))){ echo " <div> " . select_input ( " name='where[ $t ][col]' " , $e , $X [ " col " ],( $X ? " selectFieldChange " : " selectAddRow " ), " ( " . lang ( 47 ) . " ) " ), html_select ( " where[ $t ][op] " , $this -> operators , $X [ " op " ], $Na ), " <input type='search' name='where[ $t ][val]' value=' " . h ( $X [ " val " ]) . " '> " , script ( " mixin(qsl('input'), { oninput: function () { $Na }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch}); " , " " ), " </div> \n " ;}} echo " </div></fieldset> \n " ;} function
selectOrderPrint ( $Ie , $e , $x ){ print_fieldset ( " sort " , lang ( 48 ), $Ie ); $t = 0 ; foreach (( array ) $_GET [ " order " ] as $z => $X ){ if ( $X != " " ){ echo " <div> " . select_input ( " name='order[ $t ]' " , $e , $X , " selectFieldChange " ), checkbox ( " desc[ $t ] " , 1 , isset ( $_GET [ " desc " ][ $z ]), lang ( 49 )) . " </div> \n " ; $t ++ ;}} echo " <div> " . select_input ( " name='order[ $t ]' " , $e , " " , " selectAddRow " ), checkbox ( " desc[ $t ] " , 1 , false , lang ( 49 )) . " </div> \n " , " </div></fieldset> \n " ;} function
selectLimitPrint ( $_ ){ echo " <fieldset><legend> " . lang ( 50 ) . " </legend><div> " ; echo " <input type='number' name='limit' class='size' value=' " . h ( $_ ) . " '> " , script ( " qsl('input').oninput = selectFieldChange; " , " " ), " </div></fieldset> \n " ;} function
selectLengthPrint ( $Sg ){ if ( $Sg !== null ){ echo " <fieldset><legend> " . lang ( 51 ) . " </legend><div> " , " <input type='number' name='text_length' class='size' value=' " . h ( $Sg ) . " '> " , " </div></fieldset> \n " ;}} function
selectActionPrint ( $x ){ echo " <fieldset><legend> " . lang ( 52 ) . " </legend><div> " , " <input type='submit' value=' " . lang ( 43 ) . " '> " , " <span id='noindex' title=' " . lang ( 53 ) . " '></span> " , " <script " . nonce () . " > \n " , " var indexColumns = " ; $e = array (); foreach ( $x
as $w ){ $wb = reset ( $w [ " columns " ]); if ( $w [ " type " ] != " FULLTEXT " && $wb ) $e [ $wb ] = 1 ;} $e [ " " ] = 1 ; foreach ( $e
as $z => $X ) json_row ( $z ); echo " ; \n " , " selectFieldChange.call(qs('#form')['select']); \n " , " </script> \n " , " </div></fieldset> \n " ;} function
selectCommandPrint (){ return ! information_schema ( DB );} function
selectImportPrint (){ return ! information_schema ( DB );} function
selectEmailPrint ( $cc , $e ){} function
selectColumnsProcess ( $e , $x ){ global $Oc , $Uc ; $N = array (); $s = array (); foreach (( array ) $_GET [ " columns " ] as $z => $X ){ if ( $X [ " fun " ] == " count " || ( $X [ " col " ] != " " && ( ! $X [ " fun " ] || in_array ( $X [ " fun " ], $Oc ) || in_array ( $X [ " fun " ], $Uc )))){ $N [ $z ] = apply_sql_function ( $X [ " fun " ],( $X [ " col " ] != " " ? idf_escape ( $X [ " col " ]) : " * " )); if ( ! in_array ( $X [ " fun " ], $Uc )) $s [] = $N [ $z ];}} return
array ( $N , $s );} function
selectSearchProcess ( $o , $x ){ global $g , $l ; $K = array (); foreach ( $x
as $t => $w ){ if ( $w [ " type " ] == " FULLTEXT " && $_GET [ " fulltext " ][ $t ] != " " ) $K [] = " MATCH ( " . implode ( " , " , array_map ( 'idf_escape' , $w [ " columns " ])) . " ) AGAINST ( " . q ( $_GET [ " fulltext " ][ $t ]) . ( isset ( $_GET [ " boolean " ][ $t ]) ? " IN BOOLEAN MODE " : " " ) . " ) " ;} foreach (( array ) $_GET [ " where " ] as $z => $X ){ if ( " $X[col] $X[val] " != " " && in_array ( $X [ " op " ], $this -> operators )){ $of = " " ; $ib = " $X[op] " ; if ( preg_match ( '~IN$~' , $X [ " op " ])){ $jd = process_length ( $X [ " val " ]); $ib .= " " . ( $jd != " " ? $jd : " (NULL) " );} elseif ( $X [ " op " ] == " SQL " ) $ib = " $X[val] " ; elseif ( $X [ " op " ] == " LIKE %% " ) $ib = " LIKE " . $this -> processInput ( $o [ $X [ " col " ]], " % $X[val] % " ); elseif ( $X [ " op " ] == " ILIKE %% " ) $ib = " ILIKE " . $this -> processInput ( $o [ $X [ " col " ]], " % $X[val] % " ); elseif ( $X [ " op " ] == " FIND_IN_SET " ){ $of = " $X[op] ( " . q ( $X [ " val " ]) . " , " ; $ib = " ) " ;} elseif ( ! preg_match ( '~NULL$~' , $X [ " op " ])) $ib .= " " . $this -> processInput ( $o [ $X [ " col " ]], $X [ " val " ]); if ( $X [ " col " ] != " " ) $K [] = $of . $l -> convertSearch ( idf_escape ( $X [ " col " ]), $X , $o [ $X [ " col " ]]) . $ib ; else { $cb = array (); foreach ( $o
as $E => $n ){ if (( preg_match ( '~^[-\d.' . ( preg_match ( '~IN$~' , $X [ " op " ]) ? ',' : '' ) . ']+$~' , $X [ " val " ]) ||! preg_match ( '~' . number_type () . '|bit~' , $n [ " type " ])) && ( ! preg_match ( " ~[ \x80 - \xFF ]~ " , $X [ " val " ]) || preg_match ( '~char|text|enum|set~' , $n [ " type " ])) && ( ! preg_match ( '~date|timestamp~' , $n [ " type " ]) || preg_match ( '~^\d+-\d+-\d+~' , $X [ " val " ]))) $cb [] = $of . $l -> convertSearch ( idf_escape ( $E ), $X , $n ) . $ib ;} $K [] = ( $cb ? " ( " . implode ( " OR " , $cb ) . " ) " : " 1 = 0 " );}}} return $K ;} function
selectOrderProcess ( $o , $x ){ $K = array (); foreach (( array ) $_GET [ " order " ] as $z => $X ){ if ( $X != " " ) $K [] = ( preg_match ( '~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~' , $X ) ? $X : idf_escape ( $X )) . ( isset ( $_GET [ " desc " ][ $z ]) ? " DESC " : " " );} return $K ;} function
selectLimitProcess (){ return ( isset ( $_GET [ " limit " ]) ? $_GET [ " limit " ] : " 50 " );} function
selectLengthProcess (){ return ( isset ( $_GET [ " text_length " ]) ? $_GET [ " text_length " ] : " 100 " );} function
selectEmailProcess ( $Z , $Ic ){ return
false ;} function
selectQueryBuild ( $N , $Z , $s , $Ie , $_ , $G ){ return " " ;} function
messageQuery ( $I , $Tg , $xc = false ){ global $y , $l ; restart_session (); $cd =& get_session ( " queries " ); if ( ! $cd [ $_GET [ " db " ]]) $cd [ $_GET [ " db " ]] = array (); if ( strlen ( $I ) > 1e6 ) $I = preg_replace ( '~[\x80-\xFF]+$~' , '' , substr ( $I , 0 , 1e6 )) . " \n … " ; $cd [ $_GET [ " db " ]][] = array ( $I , time (), $Tg ); $rg = " sql- " . count ( $cd [ $_GET [ " db " ]]); $K = " <a href='# $rg ' class='toggle'> " . lang ( 54 ) . " </a> \n " ; if ( ! $xc && ( $Lh = $l -> warnings ())){ $u = " warnings- " . count ( $cd [ $_GET [ " db " ]]); $K = " <a href='# $u ' class='toggle'> " . lang ( 36 ) . " </a>, $K <div id=' $u ' class='hidden'> \n $Lh </div> \n " ;} return " <span class='time'> " .@ date ( " H:i:s " ) . " </span> " . " $K <div id=' $rg ' class='hidden'><pre><code class='jush- $y '> " . shorten_utf8 ( $I , 1000 ) . " </code></pre> " . ( $Tg ? " <span class='time'>( $Tg )</span> " : '' ) . ( support ( " sql " ) ? '<p><a href="' . h ( str_replace ( " db= " . urlencode ( DB ), " db= " . urlencode ( $_GET [ " db " ]), ME ) . 'sql=&history=' . ( count ( $cd [ $_GET [ " db " ]]) - 1 )) . '">' . lang ( 11 ) . '</a>' : '' ) . '</div>' ;} function
editRowPrint ( $Q , $o , $L , $vh ){} function
editFunctions ( $n ){ global $Xb ; $K = ( $n [ " null " ] ? " NULL/ " : " " ); $vh = isset ( $_GET [ " select " ]) || where ( $_GET ); foreach ( $Xb
as $z => $Oc ){ if ( ! $z || ( ! isset ( $_GET [ " call " ]) && $vh )){ foreach ( $Oc
as $ff => $X ){ if ( ! $ff || preg_match ( " ~ $ff ~ " , $n [ " type " ])) $K .= " / $X " ;}} if ( $z &&! preg_match ( '~set|blob|bytea|raw|file|bool~' , $n [ " type " ])) $K .= " /SQL " ;} if ( $n [ " auto_increment " ] &&! $vh ) $K = lang ( 41 ); return
explode ( " / " , $K );} function
editInput ( $Q , $n , $xa , $Y ){ if ( $n [ " type " ] == " enum " ) return ( isset ( $_GET [ " select " ]) ? " <label><input type='radio' $xa value='-1' checked><i> " . lang ( 8 ) . " </i></label> " : " " ) . ( $n [ " null " ] ? " <label><input type='radio' $xa value='' " . ( $Y !== null || isset ( $_GET [ " select " ]) ? " " : " checked " ) . " ><i>NULL</i></label> " : " " ) . enum_input ( " radio " , $xa , $n , $Y , $Y === 0 ? 0 : null ); return " " ;} function
editHint ( $Q , $n , $Y ){ return " " ;} function
processInput ( $n , $Y , $r = " " ){ if ( $r == " SQL " ) return $Y ; $E = $n [ " field " ]; $K = q ( $Y ); if ( preg_match ( '~^(now|getdate|uuid)$~' , $r )) $K = " $r () " ; elseif ( preg_match ( '~^current_(date|timestamp)$~' , $r )) $K = $r ; elseif ( preg_match ( '~^([+-]|\|\|)$~' , $r )) $K = idf_escape ( $E ) . " $r $K " ; elseif ( preg_match ( '~^[+-] interval$~' , $r )) $K = idf_escape ( $E ) . " $r " . ( preg_match ( " ~^( \\ d+|'[0-9.: -]') [A-Z_]+ \$ ~i " , $Y ) ? $Y : $K ); elseif ( preg_match ( '~^(addtime|subtime|concat)$~' , $r )) $K = " $r ( " . idf_escape ( $E ) . " , $K ) " ; elseif ( preg_match ( '~^(md5|sha1|password|encrypt)$~' , $r )) $K = " $r ( $K ) " ; return
unconvert_field ( $n , $K );} function
dumpOutput (){ $K = array ( 'text' => lang ( 55 ), 'file' => lang ( 56 )); if ( function_exists ( 'gzencode' )) $K [ 'gz' ] = 'gzip' ; return $K ;} function
dumpFormat (){ return
array ( 'sql' => 'SQL' , 'csv' => 'CSV,' , 'csv;' => 'CSV;' , 'tsv' => 'TSV' );} function
dumpDatabase ( $k ){} function
dumpTable ( $Q , $_g , $wd = 0 ){ if ( $_POST [ " format " ] != " sql " ){ echo " \xef \xbb \xbf " ; if ( $_g ) dump_csv ( array_keys ( fields ( $Q )));} else { if ( $wd == 2 ){ $o = array (); foreach ( fields ( $Q ) as $E => $n ) $o [] = idf_escape ( $E ) . " $n[full_type] " ; $i = " CREATE TABLE " . table ( $Q ) . " ( " . implode ( " , " , $o ) . " ) " ;} else $i = create_sql ( $Q , $_POST [ " auto_increment " ], $_g ); set_utf8mb4 ( $i ); if ( $_g && $i ){ if ( $_g == " DROP+CREATE " || $wd == 1 ) echo " DROP " . ( $wd == 2 ? " VIEW " : " TABLE " ) . " IF EXISTS " . table ( $Q ) . " ; \n " ; if ( $wd == 1 ) $i = remove_definer ( $i ); echo " $i ; \n \n " ;}}} function
dumpData ( $Q , $_g , $I ){ global $g , $y ; if ( $_g ){ $Vd = ( $y == " sqlite " ? 0 : 1048576 ); $o = array (); if ( $_POST [ " format " ] == " sql " ){ if ( $_g == " TRUNCATE+INSERT " ) echo
truncate_sql ( $Q ) . " ; \n " ; $o = fields ( $Q );} $J = $g -> query ( $I , 1 ); if ( $J ){ $pd = " " ; $Ja = " " ; $zd = array (); $Pc = array (); $Bg = " " ; $_c = ( $Q != '' ? 'fetch_assoc' : 'fetch_row' ); while ( $L = $J -> $_c ()){ if ( ! $zd ){ $Dh = array (); foreach ( $L
as $X ){ $n = $J -> fetch_field (); if ( $o [ $n -> name ][ 'generated' ]){ $Pc [ $n -> name ] = true ; continue ;} $zd [] = $n -> name ; $z = idf_escape ( $n -> name ); $Dh [] = " $z = VALUES( $z ) " ;} $Bg = ( $_g == " INSERT+UPDATE " ? " \n ON DUPLICATE KEY UPDATE " . implode ( " , " , $Dh ) : " " ) . " ; \n " ;} if ( $_POST [ " format " ] != " sql " ){ if ( $_g == " table " ){ dump_csv ( $zd ); $_g = " INSERT " ;} dump_csv ( $L );} else { if ( ! $pd ) $pd = " INSERT INTO " . table ( $Q ) . " ( " . implode ( " , " , array_map ( 'idf_escape' , $zd )) . " ) VALUES " ; foreach ( $L
as $z => $X ){ if ( $Pc [ $z ]){ unset ( $L [ $z ]); continue ;} $n = $o [ $z ]; $L [ $z ] = ( $X !== null ? unconvert_field ( $n , preg_match ( number_type (), $n [ " type " ]) &&! preg_match ( '~\[~' , $n [ " full_type " ]) && is_numeric ( $X ) ? $X : q (( $X === false ? 0 : $X ))) : " NULL " );} $Tf = ( $Vd ? " \n " : " " ) . " ( " . implode ( " , \t " , $L ) . " ) " ; if ( ! $Ja ) $Ja = $pd . $Tf ; elseif ( strlen ( $Ja ) + 4 + strlen ( $Tf ) + strlen ( $Bg ) < $Vd ) $Ja .= " , $Tf " ; else { echo $Ja . $Bg ; $Ja = $pd . $Tf ;}}} if ( $Ja ) echo $Ja . $Bg ;} elseif ( $_POST [ " format " ] == " sql " ) echo " -- " . str_replace ( " \n " , " " , $g -> error ) . " \n " ;}} function
dumpFilename ( $gd ){ return
friendly_url ( $gd != " " ? $gd : ( SERVER != " " ? SERVER : " localhost " ));} function
dumpHeaders ( $gd , $ie = false ){ $Se = $_POST [ " output " ]; $uc = ( preg_match ( '~sql~' , $_POST [ " format " ]) ? " sql " : ( $ie ? " tar " : " csv " )); header ( " Content-Type: " . ( $Se == " gz " ? " application/x-gzip " : ( $uc == " tar " ? " application/x-tar " : ( $uc == " sql " || $Se != " file " ? " text/plain " : " text/csv " ) . " ; charset=utf-8 " ))); if ( $Se == " gz " ) ob_start ( 'ob_gzencode' , 1e6 ); return $uc ;} function
importServerPath (){ return " adminer.sql " ;} function
homepage (){ echo '<p class="links">' . ( $_GET [ " ns " ] == " " && support ( " database " ) ? '<a href="' . h ( ME ) . 'database=">' . lang ( 57 ) . " </a> \n " : " " ),( support ( " scheme " ) ? " <a href=' " . h ( ME ) . " scheme='> " . ( $_GET [ " ns " ] != " " ? lang ( 58 ) : lang ( 59 )) . " </a> \n " : " " ),( $_GET [ " ns " ] !== " " ? '<a href="' . h ( ME ) . 'schema=">' . lang ( 60 ) . " </a> \n " : " " ),( support ( " privileges " ) ? " <a href=' " . h ( ME ) . " privileges='> " . lang ( 61 ) . " </a> \n " : " " ); return
true ;} function
navigation ( $he ){ global $fa , $y , $Qb , $g ; echo ' < h1 >
',$this->name(),' < span class = " version " >
',$fa,' < a href = " https://www.adminer.org/#download " ',target_blank(),' id = " version " > ',(version_compare($fa,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),' </ a >
</ span >
</ h1 >
' ; switch_lang (); if ( $he == " auth " ){ $Se = " " ; foreach (( array ) $_SESSION [ " pwds " ] as $Fh => $eg ){ foreach ( $eg
as $O => $Bh ){ foreach ( $Bh
as $V => $df ){ if ( $df !== null ){ $Bb = $_SESSION [ " db " ][ $Fh ][ $O ][ $V ]; foreach (( $Bb ? array_keys ( $Bb ) : array ( " " )) as $k ) $Se .= " <li><a href=' " . h ( auth_url ( $Fh , $O , $V , $k )) . " '>( $Qb[$Fh] ) " . h ( $V . ( $O != " " ? " @ " . $this -> serverName ( $O ) : " " ) . ( $k != " " ? " - $k " : " " )) . " </a> \n " ;}}}} if ( $Se ) echo " <ul id='logins'> \n $Se </ul> \n " . script ( " mixin(qs('#logins'), { onmouseover: menuOver, onmouseout: menuOut}); " );} else { $S = array (); if ( $_GET [ " ns " ] !== " " &&! $he && DB != " " ){ $g -> select_db ( DB ); $S = table_status ( '' , true );} echo
script_src ( preg_replace ( " ~ \\ ?.*~ " , " " , ME ) . " ?file=jush.js&version=4.17.1 " ); if ( support ( " sql " )){ echo '<script' , nonce (), ' >
' ; if ( $S ){ $Od = array (); foreach ( $S
as $Q => $U ) $Od [] = preg_quote ( $Q , '/' ); echo " var jushLinks = { $y : [ ' " . js_escape ( ME ) . ( support ( " table " ) ? " table= " : " select= " ) . " \$ &', / \\ b( " . implode ( " | " , $Od ) . " ) \\ b/g ] }; \n " ; foreach ( array ( " bac " , " bra " , " sqlite_quo " , " mssql_bra " ) as $X ) echo " jushLinks. $X = jushLinks. $y ; \n " ;} $dg = $g -> server_info ; echo 'bodyLoad(\'' ,( is_object ( $g ) ? preg_replace ( '~^(\d\.?\d).*~s' , '\1' , $dg ) : " " ), '\'' ,( preg_match ( '~MariaDB~' , $dg ) ? " , true " : " " ), ' );
</ script >
';}$this->databasesPrint($he);$la=array();if(DB==""||!$he){if(support("sql")){$la[]="<a href=' " .h(ME). " sql = '".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".lang(54)."</a>";$la[]="<a href=' " .h(ME). " import = '".bold(isset($_GET["import"])).">".lang(62)."</a>";}if(support("dump"))$la[]="<a href=' " .h(ME). " dump = " .urlencode(isset( $_GET["table"] )? $_GET["table"] : $_GET["select"] ). " ' id=' dump '".bold(isset($_GET["dump"])).">".lang(63)."</a>";}$kd=$_GET["ns"]!==""&&!$he&&DB!="";if($kd)$la[]=' < a href = " '.h(ME).'create= " '.bold($_GET["create"]==="").">".lang(64)."</a>";echo($la?"<p class=' links ' > \n " .implode( " \n " , $la ). " \n " : " " );if( $kd ) { if( $S ) $this->tablesPrint ( $S );else
echo " <p class='message'> " . lang ( 10 ) . " </p> \n " ;}}} function
databasesPrint ( $he ){ global $c , $g ; $j = $this -> databases (); if ( DB && $j &&! in_array ( DB , $j )) array_unshift ( $j , DB ); echo ' < form action = " " >
< p id = " dbs " >
';hidden_fields_get();$_b=script("mixin(qsl(' select '), {onmousedown: dbMouseDown, onchange: dbChange});");echo"<span title=' " .lang(27). " '>".lang(65)."</span>: ".($j?"<select name=' db '>".optionlist(array(""=>"")+$j,DB)."</select>$_b":"<input name=' db ' value=' " .h(DB). " ' autocapitalize=' off ' size=' 19 '>\n"),"<input type=' submit ' value=' " .lang(21). " '".($j?" class=' hidden '":"").">\n";foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo"<input type=' hidden ' name=' $X ' value=' ' > " ;break;}}echo " </ p ></ form > \n " ;}function
tablesPrint ( $S ){ echo " <ul id='tables'> " . script ( " mixin(qs('#tables'), { onmouseover: menuOver, onmouseout: menuOut}); " ); foreach ( $S
as $Q => $vg ){ $E = $this -> tableName ( $vg ); if ( $E != " " ){ echo '<li><a href="' . h ( ME ) . 'select=' . urlencode ( $Q ) . '"' . bold ( $_GET [ " select " ] == $Q || $_GET [ " edit " ] == $Q , " select " ) . " title=' " . lang ( 31 ) . " '> " . lang ( 66 ) . " </a> " ,( support ( " table " ) || support ( " indexes " ) ? '<a href="' . h ( ME ) . 'table=' . urlencode ( $Q ) . '"' . bold ( in_array ( $Q , array ( $_GET [ " table " ], $_GET [ " create " ], $_GET [ " indexes " ], $_GET [ " foreign " ], $_GET [ " trigger " ])),( is_view ( $vg ) ? " view " : " structure " )) . " title=' " . lang ( 32 ) . " '> $E </a> " : " <span> $E </span> " ) . " \n " ;}} echo " </ul> \n " ;}} $c = ( function_exists ( 'adminer_object' ) ? adminer_object () : new
Adminer ); $Qb = array ( " server " => " MySQL " ) + $Qb ; if ( ! defined ( " DRIVER " )){ define ( " DRIVER " , " server " ); if ( extension_loaded ( " mysqli " )){ class
Min_DB
extends
MySQLi { var $extension = " MySQLi " ; function
__construct (){ parent :: init ();} function
connect ( $O = " " , $V = " " , $df = " " , $zb = null , $jf = null , $mg = null ){ global $c ; mysqli_report ( MYSQLI_REPORT_OFF ); list ( $ed , $jf ) = explode ( " : " , $O , 2 ); $tg = $c -> connectSsl (); if ( $tg ) $this -> ssl_set ( $tg [ 'key' ], $tg [ 'cert' ], $tg [ 'ca' ], '' , '' ); $K =@ $this -> real_connect (( $O != " " ? $ed : ini_get ( " mysqli.default_host " )),( $O . $V != " " ? $V : ini_get ( " mysqli.default_user " )),( $O . $V . $df != " " ? $df : ini_get ( " mysqli.default_pw " )), $zb ,( is_numeric ( $jf ) ? $jf : ini_get ( " mysqli.default_port " )),( ! is_numeric ( $jf ) ? $jf : $mg ),( $tg ? ( empty ( $tg [ 'cert' ]) ? 2048 : 64 ) : 0 )); $this -> options ( MYSQLI_OPT_LOCAL_INFILE , false ); return $K ;} function
set_charset ( $Oa ){ if ( parent :: set_charset ( $Oa )) return
true ; parent :: set_charset ( 'utf8' ); return $this -> query ( " SET NAMES $Oa " );} function
result ( $I , $n = 0 ){ $J = $this -> query ( $I ); if ( ! $J ) return
false ; $L = $J -> fetch_array (); return $L [ $n ];} function
quote ( $yg ){ return " ' " . $this -> escape_string ( $yg ) . " ' " ;}}} elseif ( extension_loaded ( " mysql " ) &&! (( ini_bool ( " sql.safe_mode " ) || ini_bool ( " mysql.allow_local_infile " )) && extension_loaded ( " pdo_mysql " ))){ class
Min_DB { var $extension = " MySQL " , $server_info , $affected_rows , $errno , $error , $_link , $_result ; function
connect ( $O , $V , $df ){ if ( ini_bool ( " mysql.allow_local_infile " )){ $this -> error = lang ( 67 , " 'mysql.allow_local_infile' " , " MySQLi " , " PDO_MySQL " ); return
false ;} $this -> _link =@ mysql_connect (( $O != " " ? $O : ini_get ( " mysql.default_host " )),( " $O $V " != " " ? $V : ini_get ( " mysql.default_user " )),( " $O $V $df " != " " ? $df : ini_get ( " mysql.default_password " )), true , 131072 ); if ( $this -> _link ) $this -> server_info = mysql_get_server_info ( $this -> _link ); else $this -> error = mysql_error (); return ( bool ) $this -> _link ;} function
set_charset ( $Oa ){ if ( function_exists ( 'mysql_set_charset' )){ if ( mysql_set_charset ( $Oa , $this -> _link )) return
true ; mysql_set_charset ( 'utf8' , $this -> _link );} return $this -> query ( " SET NAMES $Oa " );} function
quote ( $yg ){ return " ' " . mysql_real_escape_string ( $yg , $this -> _link ) . " ' " ;} function
select_db ( $zb ){ return
mysql_select_db ( $zb , $this -> _link );} function
query ( $I , $oh = false ){ $J =@ ( $oh ? mysql_unbuffered_query ( $I , $this -> _link ) : mysql_query ( $I , $this -> _link )); $this -> error = " " ; if ( ! $J ){ $this -> errno = mysql_errno ( $this -> _link ); $this -> error = mysql_error ( $this -> _link ); return
false ;} if ( $J === true ){ $this -> affected_rows = mysql_affected_rows ( $this -> _link ); $this -> info = mysql_info ( $this -> _link ); return
true ;} return
new
Min_Result ( $J );} function
multi_query ( $I ){ return $this -> _result = $this -> query ( $I );} function
store_result (){ return $this -> _result ;} function
next_result (){ return
false ;} function
result ( $I , $n = 0 ){ $J = $this -> query ( $I ); if ( ! $J ||! $J -> num_rows ) return
false ; return
mysql_result ( $J -> _result , 0 , $n );}} class
Min_Result { var $num_rows , $_result , $_offset = 0 ; function
__construct ( $J ){ $this -> _result = $J ; $this -> num_rows = mysql_num_rows ( $J );} function
fetch_assoc (){ return
mysql_fetch_assoc ( $this -> _result );} function
fetch_row (){ return
mysql_fetch_row ( $this -> _result );} function
fetch_field (){ $K = mysql_fetch_field ( $this -> _result , $this -> _offset ++ ); $K -> orgtable = $K -> table ; $K -> orgname = $K -> name ; $K -> charsetnr = ( $K -> blob ? 63 : 0 ); return $K ;} function
__destruct (){ mysql_free_result ( $this -> _result );}}} elseif ( extension_loaded ( " pdo_mysql " )){ class
Min_DB
extends
Min_PDO { var $extension = " PDO_MySQL " ; function
connect ( $O , $V , $df ){ global $c ; $Ge = array ( PDO :: MYSQL_ATTR_LOCAL_INFILE => false ); $tg = $c -> connectSsl (); if ( $tg ){ if ( ! empty ( $tg [ 'key' ])) $Ge [ PDO :: MYSQL_ATTR_SSL_KEY ] = $tg [ 'key' ]; if ( ! empty ( $tg [ 'cert' ])) $Ge [ PDO :: MYSQL_ATTR_SSL_CERT ] = $tg [ 'cert' ]; if ( ! empty ( $tg [ 'ca' ])) $Ge [ PDO :: MYSQL_ATTR_SSL_CA ] = $tg [ 'ca' ]; if ( ! empty ( $tg [ 'verify' ])) $Ge [ PDO :: MYSQL_ATTR_SSL_VERIFY_SERVER_CERT ] = $tg [ 'verify' ];} $this -> dsn ( " mysql:charset=utf8;host= " . str_replace ( " : " , " ;unix_socket= " , preg_replace ( '~:(\d)~' , ';port=\1' , $O )), $V , $df , $Ge ); return
true ;} function
set_charset ( $Oa ){ $this -> query ( " SET NAMES $Oa " );} function
select_db ( $zb ){ return $this -> query ( " USE " . idf_escape ( $zb ));} function
query ( $I , $oh = false ){ $this -> pdo -> setAttribute ( PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY , ! $oh ); return
parent :: query ( $I , $oh );}}} class
Min_Driver
extends
Min_SQL { function
insert ( $Q , $P ){ return ( $P ? parent :: insert ( $Q , $P ) : queries ( " INSERT INTO " . table ( $Q ) . " () \n VALUES () " ));} function
insertUpdate ( $Q , $M , $qf ){ $e = array_keys ( reset ( $M )); $of = " INSERT INTO " . table ( $Q ) . " ( " . implode ( " , " , $e ) . " ) VALUES \n " ; $Dh = array (); foreach ( $e
as $z ) $Dh [ $z ] = " $z = VALUES( $z ) " ; $Bg = " \n ON DUPLICATE KEY UPDATE " . implode ( " , " , $Dh ); $Dh = array (); $Ld = 0 ; foreach ( $M
as $P ){ $Y = " ( " . implode ( " , " , $P ) . " ) " ; if ( $Dh && ( strlen ( $of ) + $Ld + strlen ( $Y ) + strlen ( $Bg ) > 1e6 )){ if ( ! queries ( $of . implode ( " , \n " , $Dh ) . $Bg )) return
false ; $Dh = array (); $Ld = 0 ;} $Dh [] = $Y ; $Ld += strlen ( $Y ) + 2 ;} return
queries ( $of . implode ( " , \n " , $Dh ) . $Bg );} function
slowQuery ( $I , $Ug ){ if ( min_version ( '5.7.8' , '10.1.2' )){ if ( preg_match ( '~MariaDB~' , $this -> _conn -> server_info )) return " SET STATEMENT max_statement_time= $Ug FOR $I " ; elseif ( preg_match ( '~^(SELECT\b)(.+)~is' , $I , $C )) return " $C[1] /*+ MAX_EXECUTION_TIME( " . ( $Ug * 1000 ) . " ) */ $C[2] " ;}} function
convertSearch ( $v , $X , $n ){ return ( preg_match ( '~char|text|enum|set~' , $n [ " type " ]) &&! preg_match ( " ~^utf8~ " , $n [ " collation " ]) && preg_match ( '~[\x80-\xFF]~' , $X [ 'val' ]) ? " CONVERT( $v USING " . charset ( $this -> _conn ) . " ) " : $v );} function
warnings (){ $J = $this -> _conn -> query ( " SHOW WARNINGS " ); if ( $J && $J -> num_rows ){ ob_start (); select ( $J ); return
ob_get_clean ();}} function
tableHelp ( $E ){ $Rd = preg_match ( '~MariaDB~' , $this -> _conn -> server_info ); if ( information_schema ( DB )) return
strtolower ( " information-schema- " . ( $Rd ? " $E -table/ " : str_replace ( " _ " , " - " , $E ) . " -table.html " )); if ( DB == " mysql " ) return ( $Rd ? " mysql $E -table/ " : " system-schema.html " );} function
hasCStyleEscapes (){ static $Ka ; if ( $Ka === null ){ $sg = $this -> _conn -> result ( " SHOW VARIABLES LIKE 'sql_mode' " , 1 ); $Ka = ( strpos ( $sg , 'NO_BACKSLASH_ESCAPES' ) === false );} return $Ka ;}} function
idf_escape ( $v ){ return " ` " . str_replace ( " ` " , " `` " , $v ) . " ` " ;} function
table ( $v ){ return
idf_escape ( $v );} function
connect (){ global $c , $nh , $zg , $Xb ; $g = new
Min_DB ; $sb = $c -> credentials (); if ( $g -> connect ( $sb [ 0 ], $sb [ 1 ], $sb [ 2 ])){ $g -> set_charset ( charset ( $g )); $g -> query ( " SET sql_quote_show_create = 1, autocommit = 1 " ); if ( min_version ( '5.7.8' , 10.2 , $g )){ $zg [ lang ( 68 )][] = " json " ; $nh [ " json " ] = 4294967295 ;} if ( min_version ( '' , 10.7 , $g )){ $zg [ lang ( 68 )][] = " uuid " ; $nh [ " uuid " ] = 128 ; $Xb [ 0 ][ 'uuid' ] = 'uuid' ;} if ( min_version ( 9 , '' , $g )){ $zg [ lang ( 69 )][] = " vector " ; $nh [ " vector " ] = 16383 ; $Xb [ 0 ][ 'vector' ] = 'string_to_vector' ;} return $g ;} $K = $g -> error ; if ( function_exists ( 'iconv' ) &&! is_utf8 ( $K ) && strlen ( $Tf = iconv ( " windows-1250 " , " utf-8 " , $K )) > strlen ( $K )) $K = $Tf ; return $K ;} function
get_databases ( $Fc ){ $K = get_session ( " dbs " ); if ( $K === null ){ $I = ( min_version ( 5 ) ? " SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME " : " SHOW DATABASES " ); $K = ( $Fc ? slow_query ( $I ) : get_vals ( $I )); restart_session (); set_session ( " dbs " , $K ); stop_session ();} return $K ;} function
limit ( $I , $Z , $_ , $ue = 0 , $cg = " " ){ return " $I $Z " . ( $_ !== null ? $cg . " LIMIT $_ " . ( $ue ? " OFFSET $ue " : " " ) : " " );} function
limit1 ( $Q , $I , $Z , $cg = " \n " ){ return
limit ( $I , $Z , 1 , 0 , $cg );} function
db_collation ( $k , $bb ){ global $g ; $K = null ; $i = $g -> result ( " SHOW CREATE DATABASE " . idf_escape ( $k ), 1 ); if ( preg_match ( '~ COLLATE ([^ ]+)~' , $i , $C )) $K = $C [ 1 ]; elseif ( preg_match ( '~ CHARACTER SET ([^ ]+)~' , $i , $C )) $K = $bb [ $C [ 1 ]][ - 1 ]; return $K ;} function
engines (){ $K = array (); foreach ( get_rows ( " SHOW ENGINES " ) as $L ){ if ( preg_match ( " ~YES|DEFAULT~ " , $L [ " Support " ])) $K [] = $L [ " Engine " ];} return $K ;} function
logged_user (){ global $g ; return $g -> result ( " SELECT USER() " );} function
tables_list (){ return
get_key_vals ( min_version ( 5 ) ? " SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME " : " SHOW TABLES " );} function
count_tables ( $j ){ $K = array (); foreach ( $j
as $k ) $K [ $k ] = count ( get_vals ( " SHOW TABLES IN " . idf_escape ( $k ))); return $K ;} function
table_status ( $E = " " , $yc = false ){ $K = array (); foreach ( get_rows ( $yc && min_version ( 5 ) ? " SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() " . ( $E != " " ? " AND TABLE_NAME = " . q ( $E ) : " ORDER BY Name " ) : " SHOW TABLE STATUS " . ( $E != " " ? " LIKE " . q ( addcslashes ( $E , " %_ \\ " )) : " " )) as $L ){ if ( $L [ " Engine " ] == " InnoDB " ) $L [ " Comment " ] = preg_replace ( '~(?:(.+); )?InnoDB free: .*~' , '\1' , $L [ " Comment " ]); if ( ! isset ( $L [ " Engine " ])) $L [ " Comment " ] = " " ; if ( $E != " " ){ $L [ " Name " ] = $E ; return $L ;} $K [ $L [ " Name " ]] = $L ;} return $K ;} function
is_view ( $R ){ return $R [ " Engine " ] === null ;} function
fk_support ( $R ){ return
preg_match ( '~InnoDB|IBMDB2I~i' , $R [ " Engine " ]) || ( preg_match ( '~NDB~i' , $R [ " Engine " ]) && min_version ( 5.6 ));} function
fields ( $Q ){ $K = array (); foreach ( get_rows ( " SHOW FULL COLUMNS FROM " . table ( $Q )) as $L ){ preg_match ( '~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~' , $L [ " Type " ], $C ); $K [ $L [ " Field " ]] = array ( " field " => $L [ " Field " ], " full_type " => $L [ " Type " ], " type " => $C [ 1 ], " length " => $C [ 2 ], " unsigned " => ltrim ( $C [ 3 ] . $C [ 4 ]), " default " => ( $L [ " Default " ] != " " || preg_match ( " ~char|set~ " , $C [ 1 ]) ? ( preg_match ( '~text~' , $C [ 1 ]) ? stripslashes ( preg_replace ( " ~^'(.*)' \$ ~ " , '\1' , $L [ " Default " ])) : $L [ " Default " ]) : null ), " null " => ( $L [ " Null " ] == " YES " ), " auto_increment " => ( $L [ " Extra " ] == " auto_increment " ), " on_update " => ( preg_match ( '~^on update (.+)~i' , $L [ " Extra " ], $C ) ? $C [ 1 ] : " " ), " collation " => $L [ " Collation " ], " privileges " => array_flip ( preg_split ( '~, *~' , $L [ " Privileges " ])), " comment " => $L [ " Comment " ], " primary " => ( $L [ " Key " ] == " PRI " ), " generated " => preg_match ( '~^(VIRTUAL|PERSISTENT|STORED)~' , $L [ " Extra " ]),);} return $K ;} function
indexes ( $Q , $h = null ){ $K = array (); foreach ( get_rows ( " SHOW INDEX FROM " . table ( $Q ), $h ) as $L ){ $E = $L [ " Key_name " ]; $K [ $E ][ " type " ] = ( $E == " PRIMARY " ? " PRIMARY " : ( $L [ " Index_type " ] == " FULLTEXT " ? " FULLTEXT " : ( $L [ " Non_unique " ] ? ( $L [ " Index_type " ] == " SPATIAL " ? " SPATIAL " : " INDEX " ) : " UNIQUE " ))); $K [ $E ][ " columns " ][] = $L [ " Column_name " ]; $K [ $E ][ " lengths " ][] = ( $L [ " Index_type " ] == " SPATIAL " ? null : $L [ " Sub_part " ]); $K [ $E ][ " descs " ][] = null ;} return $K ;} function
foreign_keys ( $Q ){ global $g , $Ae ; static $ff = '(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")' ; $K = array (); $qb = $g -> result ( " SHOW CREATE TABLE " . table ( $Q ), 1 ); if ( $qb ){ preg_match_all ( " ~CONSTRAINT ( $ff ) FOREIGN KEY ? \\ (((?: $ff ,? ?)+) \\ ) REFERENCES ( $ff )(?: \\ .( $ff ))? \\ (((?: $ff ,? ?)+) \\ )(?: ON DELETE ( $Ae ))?(?: ON UPDATE ( $Ae ))?~ " , $qb , $Td , PREG_SET_ORDER ); foreach ( $Td
as $C ){ preg_match_all ( " ~ $ff ~ " , $C [ 2 ], $ng ); preg_match_all ( " ~ $ff ~ " , $C [ 5 ], $Ng ); $K [ idf_unescape ( $C [ 1 ])] = array ( " db " => idf_unescape ( $C [ 4 ] != " " ? $C [ 3 ] : $C [ 4 ]), " table " => idf_unescape ( $C [ 4 ] != " " ? $C [ 4 ] : $C [ 3 ]), " source " => array_map ( 'idf_unescape' , $ng [ 0 ]), " target " => array_map ( 'idf_unescape' , $Ng [ 0 ]), " on_delete " => ( $C [ 6 ] ? $C [ 6 ] : " RESTRICT " ), " on_update " => ( $C [ 7 ] ? $C [ 7 ] : " RESTRICT " ),);}} return $K ;} function
view ( $E ){ global $g ; return
array ( " select " => preg_replace ( '~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU' , '' , $g -> result ( " SHOW CREATE VIEW " . table ( $E ), 1 )));} function
collations (){ $K = array (); foreach ( get_rows ( " SHOW COLLATION " ) as $L ){ if ( $L [ " Default " ]) $K [ $L [ " Charset " ]][ - 1 ] = $L [ " Collation " ]; else $K [ $L [ " Charset " ]][] = $L [ " Collation " ];} ksort ( $K ); foreach ( $K
as $z => $X ) asort ( $K [ $z ]); return $K ;} function
information_schema ( $k ){ return ( min_version ( 5 ) && $k == " information_schema " ) || ( min_version ( 5.5 ) && $k == " performance_schema " );} function
error (){ global $g ; return
h ( preg_replace ( '~^You have an error.*syntax to use~U' , " Syntax error " , $g -> error ));} function
create_database ( $k , $ab ){ return
queries ( " CREATE DATABASE " . idf_escape ( $k ) . ( $ab ? " COLLATE " . q ( $ab ) : " " ));} function
drop_databases ( $j ){ $K = apply_queries ( " DROP DATABASE " , $j , 'idf_escape' ); restart_session (); set_session ( " dbs " , null ); return $K ;} function
rename_database ( $E , $ab ){ $K = false ; if ( create_database ( $E , $ab )){ $S = array (); $Ih = array (); foreach ( tables_list () as $Q => $U ){ if ( $U == 'VIEW' ) $Ih [] = $Q ; else $S [] = $Q ;} $K = ( ! $S &&! $Ih ) || move_tables ( $S , $Ih , $E ); drop_databases ( $K ? array ( DB ) : array ());} return $K ;} function
auto_increment (){ $_a = " PRIMARY KEY " ; if ( $_GET [ " create " ] != " " && $_POST [ " auto_increment_col " ]){ foreach ( indexes ( $_GET [ " create " ]) as $w ){ if ( in_array ( $_POST [ " fields " ][ $_POST [ " auto_increment_col " ]][ " orig " ], $w [ " columns " ], true )){ $_a = " " ; break ;} if ( $w [ " type " ] == " PRIMARY " ) $_a = " UNIQUE " ;}} return " AUTO_INCREMENT $_a " ;} function
alter_table ( $Q , $E , $o , $Hc , $fb , $fc , $ab , $za , $af ){ $ta = array (); foreach ( $o
as $n ) $ta [] = ( $n [ 1 ] ? ( $Q != " " ? ( $n [ 0 ] != " " ? " CHANGE " . idf_escape ( $n [ 0 ]) : " ADD " ) : " " ) . " " . implode ( $n [ 1 ]) . ( $Q != " " ? $n [ 2 ] : " " ) : " DROP " . idf_escape ( $n [ 0 ])); $ta = array_merge ( $ta , $Hc ); $vg = ( $fb !== null ? " COMMENT= " . q ( $fb ) : " " ) . ( $fc ? " ENGINE= " . q ( $fc ) : " " ) . ( $ab ? " COLLATE " . q ( $ab ) : " " ) . ( $za != " " ? " AUTO_INCREMENT= $za " : " " ); if ( $Q == " " ) return
queries ( " CREATE TABLE " . table ( $E ) . " ( \n " . implode ( " , \n " , $ta ) . " \n ) $vg $af " ); if ( $Q != $E ) $ta [] = " RENAME TO " . table ( $E ); if ( $vg ) $ta [] = ltrim ( $vg ); return ( $ta || $af ? queries ( " ALTER TABLE " . table ( $Q ) . " \n " . implode ( " , \n " , $ta ) . $af ) : true );} function
alter_indexes ( $Q , $ta ){ foreach ( $ta
as $z => $X ) $ta [ $z ] = ( $X [ 2 ] == " DROP " ? " \n DROP INDEX " . idf_escape ( $X [ 1 ]) : " \n ADD $X[0] " . ( $X [ 0 ] == " PRIMARY " ? " KEY " : " " ) . ( $X [ 1 ] != " " ? idf_escape ( $X [ 1 ]) . " " : " " ) . " ( " . implode ( " , " , $X [ 2 ]) . " ) " ); return
queries ( " ALTER TABLE " . table ( $Q ) . implode ( " , " , $ta ));} function
truncate_tables ( $S ){ return
apply_queries ( " TRUNCATE TABLE " , $S );} function
drop_views ( $Ih ){ return
queries ( " DROP VIEW " . implode ( " , " , array_map ( 'table' , $Ih )));} function
drop_tables ( $S ){ return
queries ( " DROP TABLE " . implode ( " , " , array_map ( 'table' , $S )));} function
move_tables ( $S , $Ih , $Ng ){ global $g ; $Jf = array (); foreach ( $S
as $Q ) $Jf [] = table ( $Q ) . " TO " . idf_escape ( $Ng ) . " . " . table ( $Q ); if ( ! $Jf || queries ( " RENAME TABLE " . implode ( " , " , $Jf ))){ $Gb = array (); foreach ( $Ih
as $Q ) $Gb [ table ( $Q )] = view ( $Q ); $g -> select_db ( $Ng ); $k = idf_escape ( DB ); foreach ( $Gb
as $E => $Hh ){ if ( ! queries ( " CREATE VIEW $E AS " . str_replace ( " $k . " , " " , $Hh [ " select " ])) ||! queries ( " DROP VIEW $k . $E " )) return
false ;} return
true ;} return
false ;} function
copy_tables ( $S , $Ih , $Ng ){ queries ( " SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO' " ); foreach ( $S
as $Q ){ $E = ( $Ng == DB ? table ( " copy_ $Q " ) : idf_escape ( $Ng ) . " . " . table ( $Q )); if (( $_POST [ " overwrite " ] &&! queries ( " \n DROP TABLE IF EXISTS $E " )) ||! queries ( " CREATE TABLE $E LIKE " . table ( $Q )) ||! queries ( " INSERT INTO $E SELECT * FROM " . table ( $Q ))) return
false ; foreach ( get_rows ( " SHOW TRIGGERS LIKE " . q ( addcslashes ( $Q , " %_ \\ " ))) as $L ){ $ih = $L [ " Trigger " ]; if ( ! queries ( " CREATE TRIGGER " . ( $Ng == DB ? idf_escape ( " copy_ $ih " ) : idf_escape ( $Ng ) . " . " . idf_escape ( $ih )) . " $L[Timing] $L[Event] ON $E FOR EACH ROW \n $L[Statement] ; " )) return
false ;}} foreach ( $Ih
as $Q ){ $E = ( $Ng == DB ? table ( " copy_ $Q " ) : idf_escape ( $Ng ) . " . " . table ( $Q )); $Hh = view ( $Q ); if (( $_POST [ " overwrite " ] &&! queries ( " DROP VIEW IF EXISTS $E " )) ||! queries ( " CREATE VIEW $E AS $Hh[select] " )) return
false ;} return
true ;} function
trigger ( $E ){ if ( $E == " " ) return
array (); $M = get_rows ( " SHOW TRIGGERS WHERE `Trigger` = " . q ( $E )); return
reset ( $M );} function
triggers ( $Q ){ $K = array (); foreach ( get_rows ( " SHOW TRIGGERS LIKE " . q ( addcslashes ( $Q , " %_ \\ " ))) as $L ) $K [ $L [ " Trigger " ]] = array ( $L [ " Timing " ], $L [ " Event " ]); return $K ;} function
trigger_options (){ return
array ( " Timing " => array ( " BEFORE " , " AFTER " ), " Event " => array ( " INSERT " , " UPDATE " , " DELETE " ), " Type " => array ( " FOR EACH ROW " ),);} function
routine ( $E , $U ){ global $g , $hc , $nd , $nh ; $ra = array ( " bool " , " boolean " , " integer " , " double precision " , " real " , " dec " , " numeric " , " fixed " , " national char " , " national varchar " ); $og = " (?: \\ s|/ \\ *[ \ s \ S]*? \\ */|(?:#|-- )[^ \n ]* \n ?|-- \r ? \n ) " ; $mh = " (( " . implode ( " | " , array_merge ( array_keys ( $nh ), $ra )) . " ) \\ b(?: \\ s* \\ (((?:[^' \" )]| $hc )++) \\ ))? \\ s*(zerofill \\ s*)?(unsigned(?: \\ s+zerofill)?)?)(?: \\ s*(?:CHARSET|CHARACTER \\ s+SET) \\ s*[' \" ]?([^' \" \\ s,]+)[' \" ]?)? " ; $ff = " $og *( " . ( $U == " FUNCTION " ? " " : $nd ) . " )? \\ s*(?:`((?:[^`]|``)*)` \\ s*| \\ b( \\ S+) \\ s+) $mh " ; $i = $g -> result ( " SHOW CREATE $U " . idf_escape ( $E ), 2 ); preg_match ( " ~ \\ (((?: $ff \\ s*,?)*) \\ ) \\ s* " . ( $U == " FUNCTION " ? " RETURNS \\ s+ $mh \\ s+ " : " " ) . " (.*)~is " , $i , $C ); $o = array (); preg_match_all ( " ~ $ff \\ s*,?~is " , $C [ 1 ], $Td , PREG_SET_ORDER ); foreach ( $Td
as $Ve ) $o [] = array ( " field " => str_replace ( " `` " , " ` " , $Ve [ 2 ]) . $Ve [ 3 ], " type " => strtolower ( $Ve [ 5 ]), " length " => preg_replace_callback ( " ~ $hc ~s " , 'normalize_enum' , $Ve [ 6 ]), " unsigned " => strtolower ( preg_replace ( '~\s+~' , ' ' , trim ( " $Ve[8] $Ve[7] " ))), " null " => 1 , " full_type " => $Ve [ 4 ], " inout " => strtoupper ( $Ve [ 1 ]), " collation " => strtolower ( $Ve [ 9 ]),); return
array ( " fields " => $o , " comment " => $g -> result ( " SELECT ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = " . q ( DB ) . " AND ROUTINE_NAME = " . q ( $E )),) + ( $U != " FUNCTION " ? array ( " definition " => $C [ 11 ]) : array ( " returns " => array ( " type " => $C [ 12 ], " length " => $C [ 13 ], " unsigned " => $C [ 15 ], " collation " => $C [ 16 ]), " definition " => $C [ 17 ], " language " => " SQL " ,));} function
routines (){ return
get_rows ( " SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = " . q ( DB ));} function
routine_languages (){ return
array ();} function
routine_id ( $E , $L ){ return
idf_escape ( $E );} function
last_id (){ global $g ; return $g -> result ( " SELECT LAST_INSERT_ID() " );} function
explain ( $g , $I ){ return $g -> query ( " EXPLAIN " . ( min_version ( 5.1 ) &&! min_version ( 5.7 ) ? " PARTITIONS " : " " ) . $I );} function
found_rows ( $R , $Z ){ return ( $Z || $R [ " Engine " ] != " InnoDB " ? null : $R [ " Rows " ]);} function
types (){ return
array ();} function
schemas (){ return
array ();} function
get_schema (){ return " " ;} function
set_schema ( $Vf , $h = null ){ return
true ;} function
create_sql ( $Q , $za , $_g ){ global $g ; $K = $g -> result ( " SHOW CREATE TABLE " . table ( $Q ), 1 ); if ( ! $za ) $K = preg_replace ( '~ AUTO_INCREMENT=\d+~' , '' , $K ); return $K ;} function
truncate_sql ( $Q ){ return " TRUNCATE " . table ( $Q );} function
use_sql ( $zb ){ return " USE " . idf_escape ( $zb );} function
trigger_sql ( $Q ){ $K = " " ; foreach ( get_rows ( " SHOW TRIGGERS LIKE " . q ( addcslashes ( $Q , " %_ \\ " )), null , " -- " ) as $L ) $K .= " \n CREATE TRIGGER " . idf_escape ( $L [ " Trigger " ]) . " $L[Timing] $L[Event] ON " . table ( $L [ " Table " ]) . " FOR EACH ROW \n $L[Statement] ;; \n " ; return $K ;} function
show_variables (){ return
get_key_vals ( " SHOW VARIABLES " );} function
process_list (){ return
get_rows ( " SHOW FULL PROCESSLIST " );} function
show_status (){ return
get_key_vals ( " SHOW STATUS " );} function
convert_field ( $n ){ if ( preg_match ( " ~binary~ " , $n [ " type " ])) return " HEX( " . idf_escape ( $n [ " field " ]) . " ) " ; if ( $n [ " type " ] == " bit " ) return " BIN( " . idf_escape ( $n [ " field " ]) . " + 0) " ; if ( preg_match ( " ~geometry|point|linestring|polygon~ " , $n [ " type " ])) return ( min_version ( 8 ) ? " ST_ " : " " ) . " AsWKT( " . idf_escape ( $n [ " field " ]) . " ) " ;} function
unconvert_field ( $n , $K ){ if ( preg_match ( " ~binary~ " , $n [ " type " ])) $K = " UNHEX( $K ) " ; if ( $n [ " type " ] == " bit " ) $K = " CONVERT(b $K , UNSIGNED) " ; if ( preg_match ( " ~geometry|point|linestring|polygon~ " , $n [ " type " ])){ $of = ( min_version ( 8 ) ? " ST_ " : " " ); $K = $of . " GeomFromText( $K , $of " . " SRID( $n[field] )) " ;} return $K ;} function
support ( $zc ){ return ! preg_match ( " ~scheme|sequence|type|view_trigger|materializedview " . ( min_version ( 8 ) ? " " : " |descidx " . ( min_version ( 5.1 ) ? " " : " |event|partitioning " . ( min_version ( 5 ) ? " " : " |routine|trigger|view " ))) . ( min_version ( '8.0.16' , '10.2.1' ) ? " " : " |check " ) . " ~ " , $zc );} function
kill_process ( $X ){ return
queries ( " KILL " . number ( $X ));} function
connection_id (){ return " SELECT CONNECTION_ID() " ;} function
max_connections (){ global $g ; return $g -> result ( " SELECT @@max_connections " );} function
driver_config (){ $nh = array (); $zg = array (); foreach ( array ( lang ( 69 ) => array ( " tinyint " => 3 , " smallint " => 5 , " mediumint " => 8 , " int " => 10 , " bigint " => 20 , " decimal " => 66 , " float " => 12 , " double " => 21 ), lang ( 70 ) => array ( " date " => 10 , " datetime " => 19 , " timestamp " => 19 , " time " => 10 , " year " => 4 ), lang ( 68 ) => array ( " char " => 255 , " varchar " => 65535 , " tinytext " => 255 , " text " => 65535 , " mediumtext " => 16777215 , " longtext " => 4294967295 ), lang ( 71 ) => array ( " enum " => 65535 , " set " => 64 ), lang ( 72 ) => array ( " bit " => 20 , " binary " => 255 , " varbinary " => 65535 , " tinyblob " => 255 , " blob " => 65535 , " mediumblob " => 16777215 , " longblob " => 4294967295 ), lang ( 73 ) => array ( " geometry " => 0 , " point " => 0 , " linestring " => 0 , " polygon " => 0 , " multipoint " => 0 , " multilinestring " => 0 , " multipolygon " => 0 , " geometrycollection " => 0 ),) as $z => $X ){ $nh += $X ; $zg [ $z ] = array_keys ( $X );} return
array ( 'possible_drivers' => array ( " MySQLi " , " MySQL " , " PDO_MySQL " ), 'jush' => " sql " , 'types' => $nh , 'structured_types' => $zg , 'unsigned' => array ( " unsigned " , " zerofill " , " unsigned zerofill " ), 'operators' => array ( " = " , " < " , " > " , " <= " , " >= " , " != " , " LIKE " , " LIKE %% " , " REGEXP " , " IN " , " FIND_IN_SET " , " IS NULL " , " NOT LIKE " , " NOT REGEXP " , " NOT IN " , " IS NOT NULL " , " SQL " ), 'functions' => array ( " char_length " , " date " , " from_unixtime " , " lower " , " round " , " floor " , " ceil " , " sec_to_time " , " time_to_sec " , " upper " ), 'grouping' => array ( " avg " , " count " , " count distinct " , " group_concat " , " max " , " min " , " sum " ), 'edit_functions' => array ( array ( " char " => " md5/sha1/password/encrypt/uuid " , " binary " => " md5/sha1 " , " date|time " => " now " ,), array ( number_type () => " +/- " , " date " => " + interval/- interval " , " time " => " addtime/subtime " , " char|text " => " concat " ,)),);}} $jb = driver_config (); $nf = $jb [ 'possible_drivers' ]; $y = $jb [ 'jush' ]; $nh = $jb [ 'types' ]; $zg = $jb [ 'structured_types' ]; $uh = $jb [ 'unsigned' ]; $Ee = $jb [ 'operators' ]; $Oc = $jb [ 'functions' ]; $Uc = $jb [ 'grouping' ]; $Xb = $jb [ 'edit_functions' ]; if ( $c -> operators === null ) $c -> operators = $Ee ; define ( " SERVER " , $_GET [ DRIVER ]); define ( " DB " , $_GET [ " db " ]); define ( " ME " , preg_replace ( '~\?.*~' , '' , relative_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 " ]) . " & " : " " ) : '' )); function
page_header ( $Wg , $m = " " , $Ia = array (), $Xg = " " ){ global $a , $fa , $c , $Qb , $y ; page_headers (); if ( is_ajax () && $m ){ page_messages ( $m ); exit ;} $Yg = $Wg . ( $Xg != " " ? " : $Xg " : " " ); $Zg = strip_tags ( $Yg . ( SERVER != " " && SERVER != " localhost " ? h ( " - " . SERVER ) : " " ) . " - " . $c -> name ()); echo ' <! DOCTYPE html >
< html lang = " ', $a ,' " dir = " ',lang(74),' " >
< meta http - equiv = " Content-Type " content = " text/html; charset=utf-8 " >
< meta name = " robots " content = " noindex " >
< meta name = " viewport " content = " width=device-width " >
< title > ',$Zg,' </ title >
< link rel = " stylesheet " type = " text/css " href = " ',h(preg_replace( " ~ \\ ? .*~ " , " " ,ME). " ? file = default . css & version = 4.17 . 1 " ),' " >
',script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=4.17.1");if($c->head()){echo' < link rel = " shortcut icon " type = " image/x-icon " href = " ',h(preg_replace( " ~ \\ ? .*~ " , " " ,ME). " ? file = favicon . ico & version = 4.17 . 1 " ),' " >
< link rel = " apple-touch-icon " href = " ',h(preg_replace( " ~ \\ ? .*~ " , " " ,ME). " ? file = favicon . ico & version = 4.17 . 1 " ),' " >
';foreach($c->css()as$ub){echo' < link rel = " stylesheet " type = " text/css " href = " ',h( $ub ),' " >
';}}echo'
< body class = " ',lang(74),' nojs " >
';$Bc=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists(' openssl_verify ' ) && file_exists ( $Bc ) && filemtime ( $Bc ) + 86400 > time ()){ $Gh = unserialize ( file_get_contents ( $Bc )); $xf = " -----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwqWOVuF5uw7 /+ Z70djoK
RlHIZFZPO0uYRezq90 + 7 Amk + FDNd7KkL5eDve + vHRJBLAszF / 7 XKXe11xwliIsFs
DFWQlsABVZB3oisKCBEuI71J4kPH8dKGEWR9jDHFw3cWmoH3PmqImX6FISWbG3B8
h7FIx3jEaw5ckVPVTeo5JRm / 1 DZzJxjyDenXvBQ / 6 o9DgZKeNDgxwKzH + sw9 / YCO
jHnq1cFpOIISzARlrHMa / 43 YfeNRAm / tsBXjSxembBPo7aQZLAWHmaj5 + K19H10B
nCpz9Y ++ cipkVEiKRGih4ZEvjoFysEOdRLj6WiD / uUNky4xGeA6LaJqh5XpkFkcQ
fQIDAQAB
----- END PUBLIC KEY -----
" ;if(openssl_verify( $Gh["version"] ,base64_decode( $Gh["signature"] ), $xf )==1) $_COOKIE["adminer_version"] = $Gh["version"] ;}echo'<script',nonce(),'>
mixin ( document . body , { onkeydown : bodyKeydown , onclick : bodyClick ',(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, ' $fa ', ' " .js_escape(ME). " ', ' " .get_token(). " ' ) " );?>});
document . body . className = document . body . className . replace ( / nojs / , ' js' );
var offlineMessage = ' < ? php echo
js_escape ( lang ( 75 )), ' \ ' ;
var thousandsSeparator = \ '' , js_escape ( lang ( 5 )), ' \ ' ;
</ script >
< div id = " help " class = " jush-', $y ,' jsonly hidden " ></ div >
',script("mixin(qs(' #help'), {onmouseover: function () { helpOpen = 1; }, onmouseout: helpMouseout});"),'
< div id = " content " >
';if($Ia!==null){$A=substr(preg_replace(' ~ \b ( username | db | ns ) = [ ^& ] *&~ ',' ',ME),0,-1);echo' < p id = " breadcrumb " >< a href = " '.h( $A ? $A : " . " ).' " > '.$Qb[DRIVER].' </ a > » ';$A=substr(preg_replace(' ~ \b ( db | ns ) = [ ^& ] *&~ ',' ',ME),0,-1);$O=$c->serverName(SERVER);$O=($O!=""?$O:lang(24));if($Ia===false)echo"$O\n";else{echo"<a href=' " .h( $A ). " ' accesskey=' 1 ' title=' Alt + Shift + 1 '>$O</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ia)))echo' < a href = " '.h( $A . " & db = " .urlencode(DB).(support( " scheme " )? " & ns = " : " " )).' " > '.h(DB).' </ a > » ';if(is_array($Ia)){if($_GET["ns"]!="")echo' < a href = " '.h(substr(ME,0,-1)).' " > '.h($_GET["ns"]).' </ a > » ' ; foreach ( $Ia
as $z => $X ){ $Ib = ( is_array ( $X ) ? $X [ 1 ] : h ( $X )); if ( $Ib != " " ) echo " <a href=' " . h ( ME . " $z = " ) . urlencode ( is_array ( $X ) ? $X [ 0 ] : $X ) . " '> $Ib </a> » " ;}} echo " $Wg \n " ;}} echo " <h2> $Yg </h2> \n " , " <div id='ajaxstatus' class='jsonly hidden'></div> \n " ; restart_session (); page_messages ( $m ); $j =& get_session ( " dbs " ); if ( DB != " " && $j &&! in_array ( DB , $j , true )) $j = null ; stop_session (); define ( " PAGE_HEADER " , 1 );} function
page_headers (){ global $c ; header ( " Content-Type: text/html; charset=utf-8 " ); header ( " Cache-Control: no-cache " ); header ( " X-Frame-Options: deny " ); header ( " X-XSS-Protection: 0 " ); header ( " X-Content-Type-Options: nosniff " ); header ( " Referrer-Policy: origin-when-cross-origin " ); foreach ( $c -> csp () as $tb ){ $ad = array (); foreach ( $tb
as $z => $X ) $ad [] = " $z $X " ; header ( " Content-Security-Policy: " . implode ( " ; " , $ad ));} $c -> headers ();} function
csp (){ return
array ( array ( " script-src " => " 'self' 'unsafe-inline' 'nonce- " . get_nonce () . " ' 'strict-dynamic' " , " connect-src " => " 'self' " , " frame-src " => " https://www.adminer.org " , " object-src " => " 'none' " , " base-uri " => " 'none' " , " form-action " => " 'self' " ,),);} function
get_nonce (){ static $qe ; if ( ! $qe ) $qe = base64_encode ( rand_string ()); return $qe ;} function
page_messages ( $m ){ $wh = preg_replace ( '~^[^?]*~' , '' , $_SERVER [ " REQUEST_URI " ]); $fe = $_SESSION [ " messages " ][ $wh ]; if ( $fe ){ echo " <div class='message'> " . implode ( " </div> \n <div class='message'> " , $fe ) . " </div> " . script ( " messagesPrint(); " ); unset ( $_SESSION [ " messages " ][ $wh ]);} if ( $m ) echo " <div class='error'> $m </div> \n " ;} function
page_footer ( $he = " " ){ global $c , $T ; echo ' </ div >
< div id = " menu " >
';$c->navigation($he);echo' </ div >
';if($he!="auth"){echo' < form action = " " method = " post " >
< p class = " logout " >
',h($_GET["username"])."\n",' < input type = " submit " name = " logout " value = " ',lang(76),' " id = " logout " >
< input type = " hidden " name = " token " value = " ', $T ,' " >
</ p >
</ form >
' ;} echo
script ( " setupSubmitHighlight(document); " );} function
int32 ( $ke ){ while ( $ke >= 2147483648 ) $ke -= 4294967296 ; while ( $ke <=- 2147483649 ) $ke += 4294967296 ; return ( int ) $ke ;} function
long2str ( $W , $Kh ){ $Tf = '' ; foreach ( $W
as $X ) $Tf .= pack ( 'V' , $X ); if ( $Kh ) return
substr ( $Tf , 0 , end ( $W )); return $Tf ;} function
str2long ( $Tf , $Kh ){ $W = array_values ( unpack ( 'V*' , str_pad ( $Tf , 4 * ceil ( strlen ( $Tf ) / 4 ), " \0 " ))); if ( $Kh ) $W [] = strlen ( $Tf ); return $W ;} function
xxtea_mx ( $Rh , $Qh , $Cg , $yd ){ return
int32 ((( $Rh >> 5 & 0x7FFFFFF ) ^ $Qh << 2 ) + (( $Qh >> 3 & 0x1FFFFFFF ) ^ $Rh << 4 )) ^ int32 (( $Cg ^ $Qh ) + ( $yd ^ $Rh ));} function
encrypt_string ( $xg , $z ){ if ( $xg == " " ) return " " ; $z = array_values ( unpack ( " V* " , pack ( " H* " , md5 ( $z )))); $W = str2long ( $xg , true ); $ke = count ( $W ) - 1 ; $Rh = $W [ $ke ]; $Qh = $W [ 0 ]; $H = floor ( 6 + 52 / ( $ke + 1 )); $Cg = 0 ; while ( $H --> 0 ){ $Cg = int32 ( $Cg + 0x9E3779B9 ); $Wb = $Cg >> 2 & 3 ; for ( $Te = 0 ; $Te < $ke ; $Te ++ ){ $Qh = $W [ $Te + 1 ]; $je = xxtea_mx ( $Rh , $Qh , $Cg , $z [ $Te & 3 ^ $Wb ]); $Rh = int32 ( $W [ $Te ] + $je ); $W [ $Te ] = $Rh ;} $Qh = $W [ 0 ]; $je = xxtea_mx ( $Rh , $Qh , $Cg , $z [ $Te & 3 ^ $Wb ]); $Rh = int32 ( $W [ $ke ] + $je ); $W [ $ke ] = $Rh ;} return
long2str ( $W , false );} function
decrypt_string ( $xg , $z ){ if ( $xg == " " ) return " " ; if ( ! $z ) return
false ; $z = array_values ( unpack ( " V* " , pack ( " H* " , md5 ( $z )))); $W = str2long ( $xg , false ); $ke = count ( $W ) - 1 ; $Rh = $W [ $ke ]; $Qh = $W [ 0 ]; $H = floor ( 6 + 52 / ( $ke + 1 )); $Cg = int32 ( $H * 0x9E3779B9 ); while ( $Cg ){ $Wb = $Cg >> 2 & 3 ; for ( $Te = $ke ; $Te > 0 ; $Te -- ){ $Rh = $W [ $Te - 1 ]; $je = xxtea_mx ( $Rh , $Qh , $Cg , $z [ $Te & 3 ^ $Wb ]); $Qh = int32 ( $W [ $Te ] - $je ); $W [ $Te ] = $Qh ;} $Rh = $W [ $ke ]; $je = xxtea_mx ( $Rh , $Qh , $Cg , $z [ $Te & 3 ^ $Wb ]); $Qh = int32 ( $W [ 0 ] - $je ); $W [ 0 ] = $Qh ; $Cg = int32 ( $Cg - 0x9E3779B9 );} return
long2str ( $W , true );} $g = '' ; $Zc = $_SESSION [ " token " ]; if ( ! $Zc ) $_SESSION [ " token " ] = rand ( 1 , 1e6 ); $T = get_token (); $hf = array (); if ( $_COOKIE [ " adminer_permanent " ]){ foreach ( explode ( " " , $_COOKIE [ " adminer_permanent " ]) as $X ){ list ( $z ) = explode ( " : " , $X ); $hf [ $z ] = $X ;}} function
add_invalid_login (){ global $c ; $q = file_open_lock ( get_temp_dir () . " /adminer.invalid " ); if ( ! $q ) return ; $sd = unserialize ( stream_get_contents ( $q )); $Tg = time (); if ( $sd ){ foreach ( $sd
as $td => $X ){ if ( $X [ 0 ] < $Tg ) unset ( $sd [ $td ]);}} $rd =& $sd [ $c -> bruteForceKey ()]; if ( ! $rd ) $rd = array ( $Tg + 30 * 60 , 0 ); $rd [ 1 ] ++ ; file_write_unlock ( $q , serialize ( $sd ));} function
check_invalid_login (){ global $c ; $sd = unserialize ( @ file_get_contents ( get_temp_dir () . " /adminer.invalid " )); $rd = ( $sd ? $sd [ $c -> bruteForceKey ()] : array ()); $pe = ( $rd [ 1 ] > 29 ? $rd [ 0 ] - time () : 0 ); if ( $pe > 0 ) auth_error ( lang ( 77 , ceil ( $pe / 60 )));} $ya = $_POST [ " auth " ]; if ( $ya ){ session_regenerate_id (); $Fh = $ya [ " driver " ]; $O = $ya [ " server " ]; $V = $ya [ " username " ]; $df = ( string ) $ya [ " password " ]; $k = $ya [ " db " ]; set_password ( $Fh , $O , $V , $df ); $_SESSION [ " db " ][ $Fh ][ $O ][ $V ][ $k ] = true ; if ( $ya [ " permanent " ]){ $z = base64_encode ( $Fh ) . " - " . base64_encode ( $O ) . " - " . base64_encode ( $V ) . " - " . base64_encode ( $k ); $sf = $c -> permanentLogin ( true ); $hf [ $z ] = " $z : " . base64_encode ( $sf ? encrypt_string ( $df , $sf ) : " " ); cookie ( " adminer_permanent " , implode ( " " , $hf ));} if ( count ( $_POST ) == 1 || DRIVER != $Fh || SERVER != $O || $_GET [ " username " ] !== $V || DB != $k ) redirect ( auth_url ( $Fh , $O , $V , $k ));} elseif ( $_POST [ " logout " ] && ( ! $Zc || verify_token ())){ foreach ( array ( " pwds " , " db " , " dbs " , " queries " ) as $z ) set_session ( $z , null ); unset_permanent (); redirect ( substr ( preg_replace ( '~\b(username|db|ns)=[^&]*&~' , '' , ME ), 0 , - 1 ), lang ( 78 ) . ' ' . lang ( 79 ));} elseif ( $hf &&! $_SESSION [ " pwds " ]){ session_regenerate_id (); $sf = $c -> permanentLogin (); foreach ( $hf
as $z => $X ){ list (, $Ua ) = explode ( " : " , $X ); list ( $Fh , $O , $V , $k ) = array_map ( 'base64_decode' , explode ( " - " , $z )); set_password ( $Fh , $O , $V , decrypt_string ( base64_decode ( $Ua ), $sf )); $_SESSION [ " db " ][ $Fh ][ $O ][ $V ][ $k ] = true ;}} function
unset_permanent (){ global $hf ; foreach ( $hf
as $z => $X ){ list ( $Fh , $O , $V , $k ) = array_map ( 'base64_decode' , explode ( " - " , $z )); if ( $Fh == DRIVER && $O == SERVER && $V == $_GET [ " username " ] && $k == DB ) unset ( $hf [ $z ]);} cookie ( " adminer_permanent " , implode ( " " , $hf ));} function
auth_error ( $m ){ global $c , $Zc ; $fg = session_name (); if ( isset ( $_GET [ " username " ])){ header ( " HTTP/1.1 403 Forbidden " ); if (( $_COOKIE [ $fg ] || $_GET [ $fg ]) &&! $Zc ) $m = lang ( 80 ); else { restart_session (); add_invalid_login (); $df = get_password (); if ( $df !== null ){ if ( $df === false ) $m .= ( $m ? '<br>' : '' ) . lang ( 81 , target_blank (), '<code>permanentLogin()</code>' ); set_password ( DRIVER , SERVER , $_GET [ " username " ], null );} unset_permanent ();}} if ( ! $_COOKIE [ $fg ] && $_GET [ $fg ] && ini_bool ( " session.use_only_cookies " )) $m = lang ( 82 ); $We = session_get_cookie_params (); cookie ( " adminer_key " ,( $_COOKIE [ " adminer_key " ] ? $_COOKIE [ " adminer_key " ] : rand_string ()), $We [ " lifetime " ]); page_header ( lang ( 28 ), $m , null ); echo " <form action='' method='post'> \n " , " <div> " ; if ( hidden_fields ( $_POST , array ( " auth " ))) echo " <p class='message'> " . lang ( 83 ) . " \n " ; echo " </div> \n " ; $c -> loginForm (); echo " </form> \n " ; page_footer ( " auth " ); exit ;} if ( isset ( $_GET [ " username " ]) &&! class_exists ( " Min_DB " )){ unset ( $_SESSION [ " pwds " ][ DRIVER ]); unset_permanent (); page_header ( lang ( 84 ), lang ( 85 , implode ( " , " , $nf )), false ); page_footer ( " auth " ); exit ;} stop_session ( true ); if ( isset ( $_GET [ " username " ]) && is_string ( get_password ())){ list ( $ed , $jf ) = explode ( " : " , SERVER , 2 ); if ( preg_match ( '~^\s*([-+]?\d+)~' , $jf , $C ) && ( $C [ 1 ] < 1024 || $C [ 1 ] > 65535 )) auth_error ( lang ( 86 )); check_invalid_login (); $g = connect (); $l = new
Min_Driver ( $g );} $Pd = null ; if ( ! is_object ( $g ) || ( $Pd = $c -> login ( $_GET [ " username " ], get_password ())) !== true ){ $m = ( is_string ( $g ) ? nl_br ( h ( $g )) : ( is_string ( $Pd ) ? $Pd : lang ( 87 ))); auth_error ( $m . ( preg_match ( '~^ | $~' , get_password ()) ? '<br>' . lang ( 88 ) : '' ));} if ( $_POST [ " logout " ] && $Zc &&! verify_token ()){ page_header ( lang ( 76 ), lang ( 89 )); page_footer ( " db " ); exit ;} if ( $ya && $_POST [ " token " ]) $_POST [ " token " ] = $T ; $m = '' ; if ( $_POST ){ if ( ! verify_token ()){ $md = " max_input_vars " ; $Zd = ini_get ( $md ); if ( extension_loaded ( " suhosin " )){ foreach ( array ( " suhosin.request.max_vars " , " suhosin.post.max_vars " ) as $z ){ $X = ini_get ( $z ); if ( $X && ( ! $Zd || $X < $Zd )){ $md = $z ; $Zd = $X ;}}} $m = ( ! $_POST [ " token " ] && $Zd ? lang ( 90 , " ' $md ' " ) : lang ( 89 ) . ' ' . lang ( 91 ));}} elseif ( $_SERVER [ " REQUEST_METHOD " ] == " POST " ){ $m = lang ( 92 , " 'post_max_size' " ); if ( isset ( $_GET [ " sql " ])) $m .= ' ' . lang ( 93 );} function
select ( $J , $h = null , $Le = array (), $_ = 0 ){ global $y ; $Od = array (); $x = array (); $e = array (); $Ga = array (); $nh = array (); $K = array (); for ( $t = 0 ;( ! $_ || $t < $_ ) && ( $L = $J -> fetch_row ()); $t ++ ){ if ( ! $t ){ echo " <div class='scrollable'> \n " , " <table class='nowrap odds'> \n " , " <thead><tr> " ; for ( $xd = 0 ; $xd < count ( $L ); $xd ++ ){ $n = $J -> fetch_field (); $E = $n -> name ; $Ke = $n -> orgtable ; $Je = $n -> orgname ; $K [ $n -> table ] = $Ke ; if ( $Le && $y == " sql " ) $Od [ $xd ] = ( $E == " table " ? " table= " : ( $E == " possible_keys " ? " indexes= " : null )); elseif ( $Ke != " " ){ if ( ! isset ( $x [ $Ke ])){ $x [ $Ke ] = array (); foreach ( indexes ( $Ke , $h ) as $w ){ if ( $w [ " type " ] == " PRIMARY " ){ $x [ $Ke ] = array_flip ( $w [ " columns " ]); break ;}} $e [ $Ke ] = $x [ $Ke ];} if ( isset ( $e [ $Ke ][ $Je ])){ unset ( $e [ $Ke ][ $Je ]); $x [ $Ke ][ $Je ] = $xd ; $Od [ $xd ] = $Ke ;}} if ( $n -> charsetnr == 63 ) $Ga [ $xd ] = true ; $nh [ $xd ] = $n -> type ; echo " <th " . ( $Ke != " " || $n -> name != $Je ? " title=' " . h (( $Ke != " " ? " $Ke . " : " " ) . $Je ) . " ' " : " " ) . " > " . h ( $E ) . ( $Le ? doc_link ( array ( 'sql' => " explain-output.html#explain_ " . strtolower ( $E ), 'mariadb' => " explain/#the-columns-in-explain-select " ,)) : " " );} echo " </thead> \n " ;} echo " <tr> " ; foreach ( $L
as $z => $X ){ $A = " " ; if ( isset ( $Od [ $z ]) &&! $e [ $Od [ $z ]]){ if ( $Le && $y == " sql " ){ $Q = $L [ array_search ( " table= " , $Od )]; $A = ME . $Od [ $z ] . urlencode ( $Le [ $Q ] != " " ? $Le [ $Q ] : $Q );} else { $A = ME . " edit= " . urlencode ( $Od [ $z ]); foreach ( $x [ $Od [ $z ]] as $Ya => $xd ) $A .= " &where " . urlencode ( " [ " . bracket_escape ( $Ya ) . " ] " ) . " = " . urlencode ( $L [ $xd ]);}} elseif ( is_url ( $X )) $A = $X ; if ( $X === null ) $X = " <i>NULL</i> " ; elseif ( $Ga [ $z ] &&! is_utf8 ( $X )) $X = " <i> " . lang ( 37 , strlen ( $X )) . " </i> " ; else { $X = h ( $X ); if ( $nh [ $z ] == 254 ) $X = " <code> $X </code> " ;} if ( $A ) $X = " <a href=' " . h ( $A ) . " ' " . ( is_url ( $A ) ? target_blank () : '' ) . " > $X </a> " ; echo " <td> $X " ;}} echo ( $t ? " </table> \n </div> " : " <p class='message'> " . lang ( 13 )) . " \n " ; return $K ;} function
referencable_primary ( $ag ){ $K = array (); foreach ( table_status ( '' , true ) as $Gg => $Q ){ if ( $Gg != $ag && fk_support ( $Q )){ foreach ( fields ( $Gg ) as $n ){ if ( $n [ " primary " ]){ if ( $K [ $Gg ]){ unset ( $K [ $Gg ]); break ;} $K [ $Gg ] = $n ;}}}} return $K ;} function
adminer_settings (){ parse_str ( $_COOKIE [ " adminer_settings " ], $hg ); return $hg ;} function
adminer_setting ( $z ){ $hg = adminer_settings (); return $hg [ $z ];} function
set_adminer_settings ( $hg ){ return
cookie ( " adminer_settings " , http_build_query ( $hg + adminer_settings ()));} function
textarea ( $E , $Y , $M = 10 , $cb = 80 ){ global $y ; echo " <textarea name=' " . h ( $E ) . " ' rows=' $M ' cols=' $cb ' class='sqlarea jush- $y ' spellcheck='false' wrap='off'> " ; if ( is_array ( $Y )){ foreach ( $Y
as $X ) echo
h ( $X [ 0 ]) . " \n \n \n " ;} else
echo
h ( $Y ); echo " </textarea> " ;} function
select_input ( $xa , $Ge , $Y = " " , $Be = " " , $if = " " ){ $Mg = ( $Ge ? " select " : " input " ); return " < $Mg $xa " . ( $Ge ? " ><option value=''> $if " . optionlist ( $Ge , $Y , true ) . " </select> " : " size='10' value=' " . h ( $Y ) . " ' placeholder=' $if '> " ) . ( $Be ? script ( " qsl(' $Mg ').onchange = $Be ; " , " " ) : " " );} function
json_row ( $z , $X = null ){ static $Dc = true ; if ( $Dc ) echo " { " ; if ( $z != " " ){ echo ( $Dc ? " " : " , " ) . " \n \t \" " . addcslashes ( $z , " \r \n \t \" \\ / " ) . '": ' . ( $X !== null ? '"' . addcslashes ( $X , " \r \n \" \\ / " ) . '"' : 'null' ); $Dc = false ;} else { echo " \n } \n " ; $Dc = true ;}} function
edit_type ( $z , $n , $bb , $Jc = array (), $wc = array ()){ global $zg , $nh , $uh , $Ae ; $U = $n [ " type " ]; echo '<td><select name="' , h ( $z ), '[type]" class="type" aria-labelledby="label-type">' ; if ( $U &&! isset ( $nh [ $U ]) &&! isset ( $Jc [ $U ]) &&! in_array ( $U , $wc )) $wc [] = $U ; if ( $Jc ) $zg [ lang ( 94 )] = $Jc ; echo
optionlist ( array_merge ( $wc , $zg ), $U ), ' </ select >< td >< input
name = " ',h( $z ),'[length] "
value = " ',h( $n["length"] ),' "
size = " 3 "
',(!$n["length"]&&preg_match(' ~ var ( char | binary ) $ ~ ',$U)?" class=' required '":"");echo' aria - labelledby = " label-length " >< td class = " options " > ',($bb?"<select name=' " .h( $z ). " [ collation ] '".(preg_match(' ~ ( char | text | enum | set ) $ ~ ',$U)?"":" class=' hidden '").' >< option value = " " > ( '.lang(95).' ) '.optionlist($bb,$n["collation"]).' </ select > ':' '),($uh?"<select name=' " .h( $z ). " [ unsigned ] '".(!$U||preg_match(number_type(),$U)?"":" class=' hidden '").' >< option > '.optionlist($uh,$n["unsigned"]).' </ select > ':' '),(isset($n[' on_update '])?"<select name=' " .h( $z ). " [ on_update ] '".(preg_match(' ~ timestamp | datetime ~ ',$U)?"":" class=' hidden '").' > '.optionlist(array(""=>"(".lang(96).")","CURRENT_TIMESTAMP"),(preg_match(' ~^ CURRENT_TIMESTAMP ~ i ',$n["on_update"])?"CURRENT_TIMESTAMP":$n["on_update"])).' </ select > ':' '),($Jc?"<select name=' " .h( $z ). " [ on_delete ] '".(preg_match("~`~",$U)?"":" class=' hidden '")."><option value=' ' > ( " .lang(97). " ) " .optionlist(explode( " | " , $Ae ), $n["on_delete"] ). " </ select > " : " " );}function
get_partitions_info ( $Q ){ global $g ; $Nc = " FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = " . q ( DB ) . " AND TABLE_NAME = " . q ( $Q ); $J = $g -> query ( " SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $Nc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1 " ); $K = array (); list ( $K [ " partition_by " ], $K [ " partition " ], $K [ " partitions " ]) = $J -> fetch_row (); $bf = get_key_vals ( " SELECT PARTITION_NAME, PARTITION_DESCRIPTION $Nc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION " ); $K [ " partition_names " ] = array_keys ( $bf ); $K [ " partition_values " ] = array_values ( $bf ); return $K ;} function
process_length ( $Ld ){ global $hc ; return ( preg_match ( " ~^ \\ s* \\ (? \\ s* $hc (?: \\ s*, \\ s* $hc )*+ \\ s* \\ )? \\ s* \$ ~ " , $Ld ) && preg_match_all ( " ~ $hc ~ " , $Ld , $Td ) ? " ( " . implode ( " , " , $Td [ 0 ]) . " ) " : preg_replace ( '~^[0-9].*~' , '(\0)' , preg_replace ( '~[^-0-9,+()[\]]~' , '' , $Ld )));} function
process_type ( $n , $Za = " COLLATE " ){ global $uh ; return " $n[type] " . process_length ( $n [ " length " ]) . ( preg_match ( number_type (), $n [ " type " ]) && in_array ( $n [ " unsigned " ], $uh ) ? " $n[unsigned] " : " " ) . ( preg_match ( '~char|text|enum|set~' , $n [ " type " ]) && $n [ " collation " ] ? " $Za " . q ( $n [ " collation " ]) : " " );} function
process_field ( $n , $lh ){ if ( $n [ " on_update " ]) $n [ " on_update " ] = str_ireplace ( " current_timestamp() " , " CURRENT_TIMESTAMP " , $n [ " on_update " ]); return
array ( idf_escape ( trim ( $n [ " field " ])), process_type ( $lh ),( $n [ " null " ] ? " NULL " : " NOT NULL " ), default_value ( $n ),( preg_match ( '~timestamp|datetime~' , $n [ " type " ]) && $n [ " on_update " ] ? " ON UPDATE $n[on_update] " : " " ),( support ( " comment " ) && $n [ " comment " ] != " " ? " COMMENT " . q ( $n [ " comment " ]) : " " ),( $n [ " auto_increment " ] ? auto_increment () : null ),);} function
default_value ( $n ){ global $y ; $Db = $n [ " default " ]; return ( $Db === null ? " " : " DEFAULT " . ( ! preg_match ( '~^GENERATED ~i' , $Db ) && ( preg_match ( '~char|binary|text|enum|set~' , $n [ " type " ]) || preg_match ( '~^(?![a-z])~i' , $Db )) ? q ( $Db ) : str_ireplace ( " current_timestamp() " , " CURRENT_TIMESTAMP " ,( $y == " sqlite " ? " ( $Db ) " : $Db ))));} function
type_class ( $U ){ foreach ( array ( 'char' => 'text' , 'date' => 'time|year' , 'binary' => 'blob' , 'enum' => 'set' ,) as $z => $X ){ if ( preg_match ( " ~ $z | $X ~ " , $U )) return " class=' $z ' " ;}} function
edit_fields ( $o , $bb , $U = " TABLE " , $Jc = array ()){ global $nd ; $o = array_values ( $o ); $Eb = (( $_POST ? $_POST [ " defaults " ] : adminer_setting ( " defaults " )) ? " " : " class='hidden' " ); $gb = (( $_POST ? $_POST [ " comments " ] : adminer_setting ( " comments " )) ? " " : " class='hidden' " ); echo ' < thead >< tr >
';if($U=="PROCEDURE"){echo' < td > ';}echo' < th id = " label-name " > ',($U=="TABLE"?lang(98):lang(99)),' < td id = " label-type " > ',lang(39),' < textarea id = " enum-edit " rows = " 4 " cols = " 12 " wrap = " off " style = " display: none; " ></ textarea > ',script("qs(' #enum-edit').onblur = editingLengthBlur;"),'<td id="label-length">',lang(100),'<td>',lang(101);if($U=="TABLE"){echo'<td id="label-null">NULL
< td >< input type = " radio " name = " auto_increment_col " value = " " >< abbr id = " label-ai " title = " ',lang(41),' " > AI </ abbr > ',doc_link(array(' sql '=>"example-auto-increment.html",' mariadb '=>"auto_increment/",)),' < td id = " label-default " ',$Eb,' > ',lang(42),(support("comment")?"<td id=' label - comment '$gb>".lang(40):"");}echo' < td > ',"<input type=' image ' class=' icon ' name=' add [ " .(support( " move_col " )?0:count( $o )). " ] ' src=' " .h(preg_replace( " ~ \\ ? .*~ " , " " ,ME). " ? file = plus . gif & version = 4.17 . 1 " ). " ' alt=' + ' title=' " .lang(102). " '>".script("row_count = ".count($o).";"),' </ thead >
< tbody >
',script("mixin(qsl(' tbody ' ), { onclick : editingClick , onkeydown : editingKeydown , oninput : editingInput }); " );foreach( $o
as $t => $n ){ $t ++ ; $Me = $n [( $_POST ? " orig " : " field " )]; $Nb = ( isset ( $_POST [ " add " ][ $t - 1 ]) || ( isset ( $n [ " field " ]) &&! $_POST [ " drop_col " ][ $t ])) && ( support ( " drop_col " ) || $Me == " " ); echo '<tr' ,( $Nb ? " " : " style='display: none;' " ), ' >
',($U=="PROCEDURE"?"<td>".html_select("fields[$t][inout]",explode("|",$nd),$n["inout"]):""),' < th > ';if($Nb){echo' < input name = " fields[', $t ,'][field] " value = " ',h( $n["field"] ),' " data - maxlength = " 64 " autocapitalize = " off " aria - labelledby = " label-name " > ';}echo' < input type = " hidden " name = " fields[', $t ,'][orig] " value = " ',h( $Me ),' " > ';edit_type("fields[$t]",$n,$bb,$Jc);if($U=="TABLE"){echo' < td > ',checkbox("fields[$t][null]",1,$n["null"],"","","block","label-null"),' < td >< label class = " block " >< input type = " radio " name = " auto_increment_col " value = " ', $t ,' " ';if($n["auto_increment"]){echo' checked ';}echo' aria - labelledby = " label-ai " ></ label >< td ',$Eb,' > ',checkbox("fields[$t][has_default]",1,$n["has_default"],"","","","label-default"),' < input name = " fields[', $t ,'][default] " value = " ',h( $n["default"] ),' " aria - labelledby = " label-default " > ',(support("comment")?"<td$gb><input name=' fields [ $t ][ comment ] ' value=' " .h( $n["comment"] ). " ' data-maxlength=' " .(min_version(5.5)?1024:255). " ' aria-labelledby=' label - comment '>":"");}echo"<td>",(support("move_col")?"<input type=' image ' class=' icon ' name=' add [ $t ] ' src=' " .h(preg_replace( " ~ \\ ? .*~ " , " " ,ME). " ? file = plus . gif & version = 4.17 . 1 " ). " ' alt=' + ' title=' " .lang(102). " '> "."<input type=' image ' class=' icon ' name=' up [ $t ] ' src=' " .h(preg_replace( " ~ \\ ? .*~ " , " " ,ME). " ? file = up . gif & version = 4.17 . 1 " ). " ' alt=' ↑ ' title=' " .lang(103). " '> "."<input type=' image ' class=' icon ' name=' down [ $t ] ' src=' " .h(preg_replace( " ~ \\ ? .*~ " , " " ,ME). " ? file = down . gif & version = 4.17 . 1 " ). " ' alt=' ↓ ' title=' " .lang(104). " '> ":""),($Me==""||support("drop_col")?"<input type=' image ' class=' icon ' name=' drop_col [ $t ] ' src=' " .h(preg_replace( " ~ \\ ? .*~ " , " " ,ME). " ? file = cross . gif & version = 4.17 . 1 " ). " ' alt=' x ' title=' " .lang(105). " ' > " : " " );}}function
process_fields ( & $o ){ $ue = 0 ; if ( $_POST [ " up " ]){ $Fd = 0 ; foreach ( $o
as $z => $n ){ if ( key ( $_POST [ " up " ]) == $z ){ unset ( $o [ $z ]); array_splice ( $o , $Fd , 0 , array ( $n )); break ;} if ( isset ( $n [ " field " ])) $Fd = $ue ; $ue ++ ;}} elseif ( $_POST [ " down " ]){ $Lc = false ; foreach ( $o
as $z => $n ){ if ( isset ( $n [ " field " ]) && $Lc ){ unset ( $o [ key ( $_POST [ " down " ])]); array_splice ( $o , $ue , 0 , array ( $Lc )); break ;} if ( key ( $_POST [ " down " ]) == $z ) $Lc = $n ; $ue ++ ;}} elseif ( $_POST [ " add " ]){ $o = array_values ( $o ); array_splice ( $o , key ( $_POST [ " add " ]), 0 , array ( array ()));} elseif ( ! $_POST [ " drop_col " ]) return
false ; return
true ;} function
normalize_enum ( $C ){ return " ' " . str_replace ( " ' " , " '' " , addcslashes ( stripcslashes ( str_replace ( $C [ 0 ][ 0 ] . $C [ 0 ][ 0 ], $C [ 0 ][ 0 ], substr ( $C [ 0 ], 1 , - 1 ))), '\\' )) . " ' " ;} function
grant ( $Qc , $uf , $e , $_e ){ if ( ! $uf ) return
true ; if ( $uf == array ( " ALL PRIVILEGES " , " GRANT OPTION " )) return ( $Qc == " GRANT " ? queries ( " $Qc ALL PRIVILEGES $_e WITH GRANT OPTION " ) : queries ( " $Qc ALL PRIVILEGES $_e " ) && queries ( " $Qc GRANT OPTION $_e " )); return
queries ( " $Qc " . preg_replace ( '~(GRANT OPTION)\([^)]*\)~' , '\1' , implode ( " $e , " , $uf ) . $e ) . $_e );} function
drop_create ( $Rb , $i , $Sb , $Qg , $Tb , $B , $ee , $ce , $de , $xe , $ne ){ if ( $_POST [ " drop " ]) query_redirect ( $Rb , $B , $ee ); elseif ( $xe == " " ) query_redirect ( $i , $B , $de ); elseif ( $xe != $ne ){ $rb = queries ( $i ); queries_redirect ( $B , $ce , $rb && queries ( $Rb )); if ( $rb ) queries ( $Sb );} else
queries_redirect ( $B , $ce , queries ( $Qg ) && queries ( $Tb ) && queries ( $Rb ) && queries ( $i ));} function
create_trigger ( $_e , $L ){ global $y ; $Vg = " $L[Timing] $L[Event] " . ( preg_match ( '~ OF~' , $L [ " Event " ]) ? " $L[Of] " : " " ); return " CREATE TRIGGER " . idf_escape ( $L [ " Trigger " ]) . ( $y == " mssql " ? $_e . $Vg : $Vg . $_e ) . rtrim ( " $L[Type] \n $L[Statement] " , " ; " ) . " ; " ;} function
create_routine ( $Qf , $L ){ global $nd , $y ; $P = array (); $o = ( array ) $L [ " fields " ]; ksort ( $o ); foreach ( $o
as $n ){ if ( $n [ " field " ] != " " ) $P [] = ( preg_match ( " ~^( $nd ) \$ ~ " , $n [ " inout " ]) ? " $n[inout] " : " " ) . idf_escape ( $n [ " field " ]) . process_type ( $n , " CHARACTER SET " );} $Fb = rtrim ( $L [ " definition " ], " ; " ); return " CREATE $Qf " . idf_escape ( trim ( $L [ " name " ])) . " ( " . implode ( " , " , $P ) . " ) " . ( $Qf == " FUNCTION " ? " RETURNS " . process_type ( $L [ " returns " ], " CHARACTER SET " ) : " " ) . ( $L [ " language " ] ? " LANGUAGE $L[language] " : " " ) . ( $y == " pgsql " ? " AS " . q ( $Fb ) : " \n $Fb ; " );} function
check_constraints ( $Q ){ return
get_key_vals ( " SELECT c.CONSTRAINT_NAME, CHECK_CLAUSE
FROM INFORMATION_SCHEMA . CHECK_CONSTRAINTS c
JOIN INFORMATION_SCHEMA . TABLE_CONSTRAINTS t ON c . CONSTRAINT_SCHEMA = t . CONSTRAINT_SCHEMA AND c . CONSTRAINT_NAME = t . CONSTRAINT_NAME
WHERE c . CONSTRAINT_SCHEMA = " .q( $_GET["ns"] != " " ? $_GET["ns"] :DB). "
AND t . TABLE_NAME = " .q( $Q ). "
AND CHECK_CLAUSE NOT LIKE '% IS NOT NULL' " );}function
remove_definer ( $I ){ return
preg_replace ( '~^([A-Z =]+) DEFINER=`' . preg_replace ( '~@(.*)~' , '`@`(%|\1)' , logged_user ()) . '`~' , '\1' , $I );} function
format_foreign_key ( $p ){ global $Ae ; $k = $p [ " db " ]; $re = $p [ " ns " ]; return " FOREIGN KEY ( " . implode ( " , " , array_map ( 'idf_escape' , $p [ " source " ])) . " ) REFERENCES " . ( $k != " " && $k != $_GET [ " db " ] ? idf_escape ( $k ) . " . " : " " ) . ( $re != " " && $re != $_GET [ " ns " ] ? idf_escape ( $re ) . " . " : " " ) . table ( $p [ " table " ]) . " ( " . implode ( " , " , array_map ( 'idf_escape' , $p [ " target " ])) . " ) " . ( preg_match ( " ~^( $Ae ) \$ ~ " , $p [ " on_delete " ]) ? " ON DELETE $p[on_delete] " : " " ) . ( preg_match ( " ~^( $Ae ) \$ ~ " , $p [ " on_update " ]) ? " ON UPDATE $p[on_update] " : " " );} function
tar_file ( $Bc , $ah ){ $K = pack ( " a100a8a8a8a12a12 " , $Bc , 644 , 0 , 0 , decoct ( $ah -> size ), decoct ( time ())); $Ta = 8 * 32 ; for ( $t = 0 ; $t < strlen ( $K ); $t ++ ) $Ta += ord ( $K [ $t ]); $K .= sprintf ( " %06o " , $Ta ) . " \0 " ; echo $K , str_repeat ( " \0 " , 512 - strlen ( $K )); $ah -> send (); echo
str_repeat ( " \0 " , 511 - ( $ah -> size + 511 ) % 512 );} function
ini_bytes ( $md ){ $X = ini_get ( $md ); switch ( strtolower ( substr ( $X , - 1 ))){ case 'g' : $X = ( int ) $X * 1024 ; case 'm' : $X = ( int ) $X * 1024 ; case 'k' : $X = ( int ) $X * 1024 ;} return $X ;} function
doc_link ( $ef , $Rg = " <sup>?</sup> " ){ global $y , $g ; $dg = $g -> server_info ; $Gh = preg_replace ( '~^(\d\.?\d).*~s' , '\1' , $dg ); $yh = array ( 'sql' => " https://dev.mysql.com/doc/refman/ $Gh /en/ " , 'sqlite' => " https://www.sqlite.org/ " , 'pgsql' => " https://www.postgresql.org/docs/ $Gh / " , 'mssql' => " https://learn.microsoft.com/en-us/sql/ " , 'oracle' => " https://www.oracle.com/pls/topic/lookup?ctx=db " . preg_replace ( '~^.* (\d+)\.(\d+)\.\d+\.\d+\.\d+.*~s' , '\1\2' , $dg ) . " &id= " ,); if ( preg_match ( '~MariaDB~' , $dg )){ $yh [ 'sql' ] = " https://mariadb.com/kb/en/ " ; $ef [ 'sql' ] = ( isset ( $ef [ 'mariadb' ]) ? $ef [ 'mariadb' ] : str_replace ( " .html " , " / " , $ef [ 'sql' ]));} return ( $ef [ $y ] ? " <a href=' " . h ( $yh [ $y ] . $ef [ $y ] . ( $y == 'mssql' ? " ?view=sql-server-ver $Gh " : " " )) . " ' " . target_blank () . " > $Rg </a> " : " " );} function
ob_gzencode ( $yg ){ return
gzencode ( $yg );} function
db_size ( $k ){ global $g ; if ( ! $g -> select_db ( $k )) return " ? " ; $K = 0 ; foreach ( table_status () as $R ) $K += $R [ " Data_length " ] + $R [ " Index_length " ]; return
format_number ( $K );} function
set_utf8mb4 ( $i ){ global $g ; static $P = false ; if ( ! $P && preg_match ( '~\butf8mb4~i' , $i )){ $P = true ; echo " SET NAMES " . charset ( $g ) . " ; \n \n " ;}} function
connect_error (){ global $c , $g , $T , $m , $Qb ; if ( DB != " " ){ header ( " HTTP/1.1 404 Not Found " ); page_header ( lang ( 27 ) . " : " . h ( DB ), lang ( 106 ), true );} else { if ( $_POST [ " db " ] &&! $m ) queries_redirect ( substr ( ME , 0 , - 1 ), lang ( 107 ), drop_databases ( $_POST [ " db " ])); page_header ( lang ( 108 ), $m , false ); echo " <p class='links'> \n " ; foreach ( array ( 'database' => lang ( 109 ), 'privileges' => lang ( 61 ), 'processlist' => lang ( 110 ), 'variables' => lang ( 111 ), 'status' => lang ( 112 ),) as $z => $X ){ if ( support ( $z )) echo " <a href=' " . h ( ME ) . " $z ='> $X </a> \n " ;} echo " <p> " . lang ( 113 , $Qb [ DRIVER ], " <b> " . h ( $g -> server_info ) . " </b> " , " <b> $g->extension </b> " ) . " \n " , " <p> " . lang ( 114 , " <b> " . h ( logged_user ()) . " </b> " ) . " \n " ; $j = $c -> databases (); if ( $j ){ $Wf = support ( " scheme " ); $bb = collations (); echo " <form action='' method='post'> \n " , " <table class='checkable odds'> \n " , script ( " mixin(qsl('table'), { onclick: tableClick, ondblclick: partialArg(tableClick, true)}); " ), " <thead><tr> " . ( support ( " database " ) ? " <td> " : " " ) . " <th> " . lang ( 27 ) . " - <a href=' " . h ( ME ) . " refresh=1'> " . lang ( 115 ) . " </a> " . " <td> " . lang ( 116 ) . " <td> " . lang ( 117 ) . " <td> " . lang ( 118 ) . " - <a href=' " . h ( ME ) . " dbsize=1'> " . lang ( 119 ) . " </a> " . script ( " qsl('a').onclick = partial(ajaxSetHtml, ' " . js_escape ( ME ) . " script=connect'); " , " " ) . " </thead> \n " ; $j = ( $_GET [ " dbsize " ] ? count_tables ( $j ) : array_flip ( $j )); foreach ( $j
as $k => $S ){ $Pf = h ( ME ) . " db= " . urlencode ( $k ); $u = h ( " Db- " . $k ); echo " <tr> " . ( support ( " database " ) ? " <td> " . checkbox ( " db[] " , $k , in_array ( $k ,( array ) $_POST [ " db " ]), " " , " " , " " , $u ) : " " ), " <th><a href=' $Pf ' id=' $u '> " . h ( $k ) . " </a> " ; $ab = h ( db_collation ( $k , $bb )); echo " <td> " . ( support ( " database " ) ? " <a href=' $Pf " . ( $Wf ? " &ns= " : " " ) . " &database=' title=' " . lang ( 57 ) . " '> $ab </a> " : $ab ), " <td align='right'><a href=' $Pf &schema=' id='tables- " . h ( $k ) . " ' title=' " . lang ( 60 ) . " '> " . ( $_GET [ " dbsize " ] ? $S : " ? " ) . " </a> " , " <td align='right' id='size- " . h ( $k ) . " '> " . ( $_GET [ " dbsize " ] ? db_size ( $k ) : " ? " ), " \n " ;} echo " </table> \n " ,( support ( " database " ) ? " <div class='footer'><div> \n " . " <fieldset><legend> " . lang ( 120 ) . " <span id='selected'></span></legend><div> \n " . " <input type='hidden' name='all' value=''> " . script ( " qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^db/)); }; " ) . " <input type='submit' name='drop' value=' " . lang ( 121 ) . " '> " . confirm () . " \n " . " </div></fieldset> \n " . " </div></div> \n " : " " ), " <input type='hidden' name='token' value=' $T '> \n " , " </form> \n " , script ( " tableCheck(); " );}} page_footer ( " db " );} if ( isset ( $_GET [ " status " ])) $_GET [ " variables " ] = $_GET [ " status " ]; if ( isset ( $_GET [ " import " ])) $_GET [ " sql " ] = $_GET [ " import " ]; 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 " || $_GET [ " script " ] == " kill " )){ if ( DB != " " || $_GET [ " refresh " ]){ restart_session (); set_session ( " dbs " , null );} connect_error (); exit ;} $Ae = " RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT " ; class
TmpFile { var $handler ; var $size ; function
__construct (){ $this -> handler = tmpfile ();} function
write ( $mb ){ $this -> size += strlen ( $mb ); fwrite ( $this -> handler , $mb );} function
send (){ fseek ( $this -> handler , 0 ); fpassthru ( $this -> handler ); fclose ( $this -> handler );}} $hc = " '(?:''|[^' \\ \\ ]| \\ \\ .)*' " ; $nd = " 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 " ])){ $b = $_GET [ " download " ]; $o = fields ( $b ); header ( " Content-Type: application/octet-stream " ); header ( " Content-Disposition: attachment; filename= " . friendly_url ( " $b - " . implode ( " _ " , $_GET [ " where " ])) . " . " . friendly_url ( $_GET [ " field " ])); $N = array ( idf_escape ( $_GET [ " field " ])); $J = $l -> select ( $b , $N , array ( where ( $_GET , $o )), $N ); $L = ( $J ? $J -> fetch_row () : array ()); echo $l -> value ( $L [ 0 ], $o [ $_GET [ " field " ]]); exit ;} elseif ( isset ( $_GET [ " table " ])){ $b = $_GET [ " table " ]; $o = fields ( $b ); if ( ! $o ) $m = error (); $R = table_status1 ( $b , true ); $E = $c -> tableName ( $R ); page_header (( $o && is_view ( $R ) ? $R [ 'Engine' ] == 'materialized view' ? lang ( 122 ) : lang ( 123 ) : lang ( 124 )) . " : " . ( $E != " " ? $E : h ( $b )), $m ); $Of = array (); foreach ( $o
as $z => $n ) $Of += $n [ " privileges " ]; $c -> selectLinks ( $R ,( isset ( $Of [ " insert " ]) ||! support ( " table " ) ? " " : null )); $fb = $R [ " Comment " ]; if ( $fb != " " ) echo " <p class='nowrap'> " . lang ( 40 ) . " : " . h ( $fb ) . " \n " ; if ( $o ) $c -> tableStructurePrint ( $o ); if ( ! is_view ( $R )){ if ( support ( " indexes " )){ echo " <h3 id='indexes'> " . lang ( 125 ) . " </h3> \n " ; $x = indexes ( $b ); if ( $x ) $c -> tableIndexesPrint ( $x ); echo '<p class="links"><a href="' . h ( ME ) . 'indexes=' . urlencode ( $b ) . '">' . lang ( 126 ) . " </a> \n " ;} if ( fk_support ( $R )){ echo " <h3 id='foreign-keys'> " . lang ( 94 ) . " </h3> \n " ; $Jc = foreign_keys ( $b ); if ( $Jc ){ echo " <table> \n " , " <thead><tr><th> " . lang ( 127 ) . " <td> " . lang ( 128 ) . " <td> " . lang ( 97 ) . " <td> " . lang ( 96 ) . " <td></thead> \n " ; foreach ( $Jc
as $E => $p ){ echo " <tr title=' " . h ( $E ) . " '> " , " <th><i> " . implode ( " </i>, <i> " , array_map ( 'h' , $p [ " source " ])) . " </i> " , " <td><a href=' " . h ( $p [ " db " ] != " " ? preg_replace ( '~db=[^&]*~' , " db= " . urlencode ( $p [ " db " ]), ME ) : ( $p [ " ns " ] != " " ? preg_replace ( '~ns=[^&]*~' , " ns= " . urlencode ( $p [ " ns " ]), ME ) : ME )) . " table= " . urlencode ( $p [ " table " ]) . " '> " . ( $p [ " db " ] != " " ? " <b> " . h ( $p [ " db " ]) . " </b>. " : " " ) . ( $p [ " ns " ] != " " ? " <b> " . h ( $p [ " ns " ]) . " </b>. " : " " ) . h ( $p [ " table " ]) . " </a> " , " (<i> " . implode ( " </i>, <i> " , array_map ( 'h' , $p [ " target " ])) . " </i>) " , " <td> " . h ( $p [ " on_delete " ]), " <td> " . h ( $p [ " on_update " ]), '<td><a href="' . h ( ME . 'foreign=' . urlencode ( $b ) . '&name=' . urlencode ( $E )) . '">' . lang ( 129 ) . '</a>' , " \n " ;} echo " </table> \n " ;} echo '<p class="links"><a href="' . h ( ME ) . 'foreign=' . urlencode ( $b ) . '">' . lang ( 130 ) . " </a> \n " ;} if ( support ( " check " )){ echo " <h3 id='checks'> " . lang ( 131 ) . " </h3> \n " ; $Qa = check_constraints ( $b ); if ( $Qa ){ echo " <table> \n " ; foreach ( $Qa
as $z => $X ){ echo " <tr title=' " . h ( $z ) . " '> " , " <td><code class='jush- $y '> " . h ( $X ), " <td><a href=' " . h ( ME . 'check=' . urlencode ( $b ) . '&name=' . urlencode ( $z )) . " '> " . lang ( 129 ) . " </a> " , " \n " ;} echo " </table> \n " ;} echo '<p class="links"><a href="' . h ( ME ) . 'check=' . urlencode ( $b ) . '">' . lang ( 132 ) . " </a> \n " ;}} if ( support ( is_view ( $R ) ? " view_trigger " : " trigger " )){ echo " <h3 id='triggers'> " . lang ( 133 ) . " </h3> \n " ; $kh = triggers ( $b ); if ( $kh ){ echo " <table> \n " ; foreach ( $kh
as $z => $X ) echo " <tr valign='top'><td> " . h ( $X [ 0 ]) . " <td> " . h ( $X [ 1 ]) . " <th> " . h ( $z ) . " <td><a href=' " . h ( ME . 'trigger=' . urlencode ( $b ) . '&name=' . urlencode ( $z )) . " '> " . lang ( 129 ) . " </a> \n " ; echo " </table> \n " ;} echo '<p class="links"><a href="' . h ( ME ) . 'trigger=' . urlencode ( $b ) . '">' . lang ( 134 ) . " </a> \n " ;}} elseif ( isset ( $_GET [ " schema " ])){ page_header ( lang ( 60 ), " " , array (), h ( DB . ( $_GET [ " ns " ] ? " . $_GET[ns] " : " " ))); $Hg = array (); $Ig = array (); $da = ( $_GET [ " schema " ] ? $_GET [ " schema " ] : $_COOKIE [ " adminer_schema- " . str_replace ( " . " , " _ " , DB )]); preg_match_all ( '~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~' , $da , $Td , PREG_SET_ORDER ); foreach ( $Td
as $t => $C ){ $Hg [ $C [ 1 ]] = array ( $C [ 2 ], $C [ 3 ]); $Ig [] = " \n \t ' " . js_escape ( $C [ 1 ]) . " ': [ $C[2] , $C[3] ] " ;} $ch = 0 ; $Da =- 1 ; $Vf = array (); $Gf = array (); $Jd = array (); foreach ( table_status ( '' , true ) as $Q => $R ){ if ( is_view ( $R )) continue ; $kf = 0 ; $Vf [ $Q ][ " fields " ] = array (); foreach ( fields ( $Q ) as $E => $n ){ $kf += 1.25 ; $n [ " pos " ] = $kf ; $Vf [ $Q ][ " fields " ][ $E ] = $n ;} $Vf [ $Q ][ " pos " ] = ( $Hg [ $Q ] ? $Hg [ $Q ] : array ( $ch , 0 )); foreach ( $c -> foreignKeys ( $Q ) as $X ){ if ( ! $X [ " db " ]){ $Hd = $Da ; if ( $Hg [ $Q ][ 1 ] || $Hg [ $X [ " table " ]][ 1 ]) $Hd = min ( floatval ( $Hg [ $Q ][ 1 ]), floatval ( $Hg [ $X [ " table " ]][ 1 ])) - 1 ; else $Da -=. 1 ; while ( $Jd [( string ) $Hd ]) $Hd -=. 0001 ; $Vf [ $Q ][ " references " ][ $X [ " table " ]][( string ) $Hd ] = array ( $X [ " source " ], $X [ " target " ]); $Gf [ $X [ " table " ]][ $Q ][( string ) $Hd ] = $X [ " target " ]; $Jd [( string ) $Hd ] = true ;}} $ch = max ( $ch , $Vf [ $Q ][ " pos " ][ 0 ] + 2.5 + $kf );} echo '<div id="schema" style="height: ' , $ch , ' em ; " >
< script ',nonce(),' >
qs ( \ ' #schema\').onselectstart = function () { return false; };
var tablePos = { ',implode(",",$Ig)."\n",' };
var em = qs ( \ '#schema\').offsetHeight / ' , $ch , ' ;
document . onmousemove = schemaMousemove ;
document . onmouseup = partialArg ( schemaMouseup , \ '' , js_escape ( DB ), ' \ ' );
</ script >
' ; foreach ( $Vf
as $E => $Q ){ echo " <div class='table' style='top: " . $Q [ " pos " ][ 0 ] . " em; left: " . $Q [ " pos " ][ 1 ] . " em;'> " , '<a href="' . h ( ME ) . 'table=' . urlencode ( $E ) . '"><b>' . h ( $E ) . " </b></a> " , script ( " qsl('div').onmousedown = schemaMousedown; " ); foreach ( $Q [ " fields " ] as $n ){ $X = '<span' . type_class ( $n [ " type " ]) . ' title="' . h ( $n [ " full_type " ] . ( $n [ " null " ] ? " NULL " : '' )) . '">' . h ( $n [ " field " ]) . '</span>' ; echo " <br> " . ( $n [ " primary " ] ? " <i> $X </i> " : $X );} foreach (( array ) $Q [ " references " ] as $Og => $Hf ){ foreach ( $Hf
as $Hd => $Df ){ $Id = $Hd - $Hg [ $E ][ 1 ]; $t = 0 ; foreach ( $Df [ 0 ] as $ng ) echo " \n <div class='references' title=' " . h ( $Og ) . " ' id='refs $Hd - " . ( $t ++ ) . " ' style='left: $Id " . " em; top: " . $Q [ " fields " ][ $ng ][ " pos " ] . " em; padding-top: .5em;'><div style='border-top: 1px solid Gray; width: " . ( - $Id ) . " em;'></div></div> " ;}} foreach (( array ) $Gf [ $E ] as $Og => $Hf ){ foreach ( $Hf
as $Hd => $e ){ $Id = $Hd - $Hg [ $E ][ 1 ]; $t = 0 ; foreach ( $e
as $Ng ) echo " \n <div class='references' title=' " . h ( $Og ) . " ' id='refd $Hd - " . ( $t ++ ) . " ' style='left: $Id " . " em; top: " . $Q [ " fields " ][ $Ng ][ " pos " ] . " em; height: 1.25em; background: url( " . h ( preg_replace ( " ~ \\ ?.*~ " , " " , ME ) . " ?file=arrow.gif) no-repeat right center;&version=4.17.1 " ) . " '><div style='height: .5em; border-bottom: 1px solid Gray; width: " . ( - $Id ) . " em;'></div></div> " ;}} echo " \n </div> \n " ;} foreach ( $Vf
as $E => $Q ){ foreach (( array ) $Q [ " references " ] as $Og => $Hf ){ foreach ( $Hf
as $Hd => $Df ){ $ge = $ch ; $Xd =- 10 ; foreach ( $Df [ 0 ] as $z => $ng ){ $lf = $Q [ " pos " ][ 0 ] + $Q [ " fields " ][ $ng ][ " pos " ]; $mf = $Vf [ $Og ][ " pos " ][ 0 ] + $Vf [ $Og ][ " fields " ][ $Df [ 1 ][ $z ]][ " pos " ]; $ge = min ( $ge , $lf , $mf ); $Xd = max ( $Xd , $lf , $mf );} echo " <div class='references' id='refl $Hd ' style='left: $Hd " . " em; top: $ge " . " em; padding: .5em 0;'><div style='border-right: 1px solid Gray; margin-top: 1px; height: " . ( $Xd - $ge ) . " em;'></div></div> \n " ;}}} echo ' </ div >
< p class = " links " >< a href = " ',h(ME. " schema = " .urlencode( $da )),' " id = " schema-link " > ',lang(135),' </ a >
';}elseif(isset($_GET["dump"])){$b=$_GET["dump"];if($_POST&&!$m){$pb="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$z)$pb.="&$z=".urlencode($_POST[$z]);cookie("adminer_export",substr($pb,1));$S=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$uc=dump_headers((count($S)==1?key($S):DB),(DB==""||count($S)>1));$vd=preg_match(' ~ sql ~ ' , $_POST [ " format " ]); if ( $vd ){ echo " -- Adminer $fa " . $Qb [ DRIVER ] . " " . str_replace ( " \n " , " " , $g -> server_info ) . " dump \n \n " ; if ( $y == " sql " ){ echo " SET NAMES utf8;
SET time_zone = '+00:00' ;
SET foreign_key_checks = 0 ;
" .( $_POST["data_style"] ? " SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO' ;
" : " " ). "
" ; $g->query ( " SET time_zone = '+00:00' " ); $g->query ( " SET sql_mode = '' " );}} $_g = $_POST["db_style"] ; $j =array(DB);if(DB== " " ) { $j = $_POST [ " databases " ]; if ( is_string ( $j )) $j = explode ( " \n " , rtrim ( str_replace ( " \r " , " " , $j ), " \n " )); } foreach((array) $j
as $k ){ $c -> dumpDatabase ( $k ); if ( $g -> select_db ( $k )){ if ( $vd && preg_match ( '~CREATE~' , $_g ) && ( $i = $g -> result ( " SHOW CREATE DATABASE " . idf_escape ( $k ), 1 ))){ set_utf8mb4 ( $i ); if ( $_g == " DROP+CREATE " ) echo " DROP DATABASE IF EXISTS " . idf_escape ( $k ) . " ; \n " ; echo " $i ; \n " ;} if ( $vd ){ if ( $_g ) echo
use_sql ( $k ) . " ; \n \n " ; $Re = " " ; if ( $_POST [ " routines " ]){ foreach ( routines () as $L ){ $E = $L [ " ROUTINE_NAME " ]; $Qf = $L [ " ROUTINE_TYPE " ]; $i = create_routine ( $Qf , array ( " name " => $E ) + routine ( $L [ " SPECIFIC_NAME " ], $Qf )); set_utf8mb4 ( $i ); $Re .= ( $_g != 'DROP+CREATE' ? " DROP $Qf IF EXISTS " . idf_escape ( $E ) . " ;; \n " : " " ) . " $i ; \n \n " ;}} if ( $_POST [ " events " ]){ foreach ( get_rows ( " SHOW EVENTS " , null , " -- " ) as $L ){ $i = remove_definer ( $g -> result ( " SHOW CREATE EVENT " . idf_escape ( $L [ " Name " ]), 3 )); set_utf8mb4 ( $i ); $Re .= ( $_g != 'DROP+CREATE' ? " DROP EVENT IF EXISTS " . idf_escape ( $L [ " Name " ]) . " ;; \n " : " " ) . " $i ;; \n \n " ;}} echo ( $Re && $y == 'sql' ? " DELIMITER ;; \n \n $Re " . " DELIMITER ; \n \n " : $Re );} if ( $_POST [ " table_style " ] || $_POST [ " data_style " ]){ $Ih = array (); foreach ( table_status ( '' , true ) as $E => $R ){ $Q = ( DB == " " || in_array ( $E ,( array ) $_POST [ " tables " ])); $xb = ( DB == " " || in_array ( $E ,( array ) $_POST [ " data " ])); if ( $Q || $xb ){ if ( $uc == " tar " ){ $ah = new
TmpFile ; ob_start ( array ( $ah , 'write' ), 1e5 );} $c -> dumpTable ( $E ,( $Q ? $_POST [ " table_style " ] : " " ),( is_view ( $R ) ? 2 : 0 )); if ( is_view ( $R )) $Ih [] = $E ; elseif ( $xb ){ $o = fields ( $E ); $c -> dumpData ( $E , $_POST [ " data_style " ], " SELECT * " . convert_fields ( $o , $o ) . " FROM " . table ( $E ));} if ( $vd && $_POST [ " triggers " ] && $Q && ( $kh = trigger_sql ( $E ))) echo " \n DELIMITER ;; \n $kh \n DELIMITER ; \n " ; if ( $uc == " tar " ){ ob_end_flush (); tar_file (( DB != " " ? " " : " $k / " ) . " $E .csv " , $ah );} elseif ( $vd ) echo " \n " ;}} if ( function_exists ( 'foreign_keys_sql' )){ foreach ( table_status ( '' , true ) as $E => $R ){ $Q = ( DB == " " || in_array ( $E ,( array ) $_POST [ " tables " ])); if ( $Q &&! is_view ( $R )) echo
foreign_keys_sql ( $E );}} foreach ( $Ih
as $Hh ) $c -> dumpTable ( $Hh , $_POST [ " table_style " ], 1 ); if ( $uc == " tar " ) echo
pack ( " x512 " );}}} if ( $vd ) echo " -- " . $g -> result ( " SELECT NOW() " ) . " \n " ; exit ;} page_header ( lang ( 63 ), $m ,( $_GET [ " export " ] != " " ? array ( " table " => $_GET [ " export " ]) : array ()), h ( DB )); echo '
< form action = " " method = " post " >
< table class = " layout " >
';$Ab=array(' ',' USE ',' DROP + CREATE ',' CREATE ');$Jg=array(' ',' DROP + CREATE ',' CREATE ');$yb=array(' ',' TRUNCATE + INSERT ',' INSERT ');if($y=="sql")$yb[]=' INSERT + UPDATE ';parse_str($_COOKIE["adminer_export"],$L);if(!$L)$L=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($L["events"])){$L["routines"]=$L["events"]=($_GET["dump"]=="");$L["triggers"]=$L["table_style"];}echo"<tr><th>".lang(136)."<td>".html_select("output",$c->dumpOutput(),$L["output"],0)."\n";echo"<tr><th>".lang(137)."<td>".html_select("format",$c->dumpFormat(),$L["format"],0)."\n";echo($y=="sqlite"?"":"<tr><th>".lang(27)."<td>".html_select(' db_style ',$Ab,$L["db_style"]).(support("routine")?checkbox("routines",1,$L["routines"],lang(138)):"").(support("event")?checkbox("events",1,$L["events"],lang(139)):"")),"<tr><th>".lang(117)."<td>".html_select(' table_style ',$Jg,$L["table_style"]).checkbox("auto_increment",1,$L["auto_increment"],lang(41)).(support("trigger")?checkbox("triggers",1,$L["triggers"],lang(133)):""),"<tr><th>".lang(140)."<td>".html_select(' data_style ',$yb,$L["data_style"]),' </ table >
< p >< input type = " submit " value = " ',lang(63),' " >
< input type = " hidden " name = " token " value = " ', $T ,' " >
< table >
',script("qsl(' table ').onclick = dumpClick;");$pf=array();if(DB!=""){$Ra=($b!=""?"":" checked");echo"<thead><tr>","<th style=' text - align : left ; '><label class=' block '><input type=' checkbox ' id=' check - tables '$Ra>".lang(117)."</label>".script("qs(' #check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"<th style='text-align: right;'><label class='block'>".lang(140)."<input type='checkbox' id='check-data'$Ra></label>".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"</thead>\n";$Ih="";$Kg=tables_list();foreach($Kg
as $E => $U ){ $of = preg_replace ( '~_.*~' , '' , $E ); $Ra = ( $b == " " || $b == ( substr ( $b , - 1 ) == " % " ? " $of % " : $E )); $rf = " <tr><td> " . checkbox ( " tables[] " , $E , $Ra , $E , " " , " block " ); if ( $U !== null &&! preg_match ( '~table~i' , $U )) $Ih .= " $rf \n " ; else
echo " $rf <td align='right'><label class='block'><span id='Rows- " . h ( $E ) . " '></span> " . checkbox ( " data[] " , $E , $Ra ) . " </label> \n " ; $pf [ $of ] ++ ;} echo $Ih ; if ( $Kg ) echo
script ( " ajaxSetHtml(' " . js_escape ( ME ) . " script=db'); " );} else { echo " <thead><tr><th style='text-align: left;'> " , " <label class='block'><input type='checkbox' id='check-databases' " . ( $b == " " ? " checked " : " " ) . " > " . lang ( 27 ) . " </label> " , script ( " qs('#check-databases').onclick = partial(formCheck, /^databases \\ [/); " , " " ), " </thead> \n " ; $j = $c -> databases (); if ( $j ){ foreach ( $j
as $k ){ if ( ! information_schema ( $k )){ $of = preg_replace ( '~_.*~' , '' , $k ); echo " <tr><td> " . checkbox ( " databases[] " , $k , $b == " " || $b == " $of % " , $k , " " , " block " ) . " \n " ; $pf [ $of ] ++ ;}}} else
echo " <tr><td><textarea name='databases' rows='10' cols='20'></textarea> " ;} echo ' </ table >
</ form >
' ; $Dc = true ; foreach ( $pf
as $z => $X ){ if ( $z != " " && $X > 1 ){ echo ( $Dc ? " <p> " : " " ) . " <a href=' " . h ( ME ) . " dump= " . urlencode ( " $z % " ) . " '> " . h ( $z ) . " </a> " ; $Dc = false ;}}} elseif ( isset ( $_GET [ " privileges " ])){ page_header ( lang ( 61 )); echo '<p class="links"><a href="' . h ( ME ) . 'user=">' . lang ( 141 ) . " </a> " ; $J = $g -> query ( " SELECT User, Host FROM mysql. " . ( DB == " " ? " user " : " db WHERE " . q ( DB ) . " LIKE Db " ) . " ORDER BY Host, User " ); $Qc = $J ; if ( ! $J ) $J = $g -> query ( " SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host " ); echo " <form action=''><p> \n " ; hidden_fields_get (); echo " <input type='hidden' name='db' value=' " . h ( DB ) . " '> \n " ,( $Qc ? " " : " <input type='hidden' name='grant' value=''> \n " ), " <table class='odds'> \n " , " <thead><tr><th> " . lang ( 25 ) . " <th> " . lang ( 24 ) . " <th></thead> \n " ; while ( $L = $J -> fetch_assoc ()) echo '<tr><td>' . h ( $L [ " User " ]) . " <td> " . h ( $L [ " Host " ]) . '<td><a href="' . h ( ME . 'user=' . urlencode ( $L [ " User " ]) . '&host=' . urlencode ( $L [ " Host " ])) . '">' . lang ( 11 ) . " </a> \n " ; if ( ! $Qc || DB != " " ) echo " <tr><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value=' " . lang ( 11 ) . " '> \n " ; echo " </table> \n " , " </form> \n " ;} elseif ( isset ( $_GET [ " sql " ])){ if ( ! $m && $_POST [ " export " ]){ dump_headers ( " sql " ); $c -> dumpTable ( " " , " " ); $c -> dumpData ( " " , " table " , $_POST [ " query " ]); exit ;} restart_session (); $dd =& get_session ( " queries " ); $cd =& $dd [ DB ]; if ( ! $m && $_POST [ " clear " ]){ $cd = array (); redirect ( remove_from_uri ( " history " ));} page_header (( isset ( $_GET [ " import " ]) ? lang ( 62 ) : lang ( 54 )), $m ); if ( ! $m && $_POST ){ $q = false ; if ( ! isset ( $_GET [ " import " ])) $I = $_POST [ " query " ]; elseif ( $_POST [ " webfile " ]){ $qg = $c -> importServerPath (); $q =@ fopen (( file_exists ( $qg ) ? $qg : " compress.zlib:// $qg .gz " ), " rb " ); $I = ( $q ? fread ( $q , 1e6 ) : false );} else $I = get_file ( " sql_file " , true ); if ( is_string ( $I )){ if ( function_exists ( 'memory_get_usage' ) && ( $be = ini_bytes ( " memory_limit " )) != " -1 " ) @ ini_set ( " memory_limit " , max ( $be , 2 * strlen ( $I ) + memory_get_usage () + 8e6 )); if ( $I != " " && strlen ( $I ) < 1e6 ){ $H = $I . ( preg_match ( " ~;[ \t \r \n ]* \$ ~ " , $I ) ? " " : " ; " ); if ( ! $cd || reset ( end ( $cd )) != $H ){ restart_session (); $cd [] = array ( $H , time ()); set_session ( " queries " , $dd ); stop_session ();}} $og = " (?: \\ s|/ \\ *[ \ s \ S]*? \\ */|(?:#|-- )[^ \n ]* \n ?|-- \r ? \n ) " ; $Hb = " ; " ; $ue = 0 ; $ec = true ; $h = connect (); if ( is_object ( $h ) && DB != " " ){ $h -> select_db ( DB ); if ( $_GET [ " ns " ] != " " ) set_schema ( $_GET [ " ns " ], $h );} $eb = 0 ; $kc = array (); $Xe = '[\'"' . ( $y == " sql " ? '`#' : ( $y == " sqlite " ? '`[' : ( $y == " mssql " ? '[' : '' ))) . ']|/\*|-- |$' . ( $y == " pgsql " ? '|\$[^$]*\$' : '' ); $dh = microtime ( true ); parse_str ( $_COOKIE [ " adminer_export " ], $ma ); $Vb = $c -> dumpFormat (); unset ( $Vb [ " sql " ]); while ( $I != " " ){ if ( ! $ue && preg_match ( " ~^ $og *+DELIMITER \\ s+( \\ S+)~i " , $I , $C )){ $Hb = $C [ 1 ]; $I = substr ( $I , strlen ( $C [ 0 ]));} else { preg_match ( '(' . preg_quote ( $Hb ) . " \\ s*| $Xe ) " , $I , $C , PREG_OFFSET_CAPTURE , $ue ); list ( $Lc , $kf ) = $C [ 0 ]; if ( ! $Lc && $q &&! feof ( $q )) $I .= fread ( $q , 1e5 ); else { if ( ! $Lc && rtrim ( $I ) == " " ) break ; $ue = $kf + strlen ( $Lc ); if ( $Lc && rtrim ( $Lc ) != $Hb ){ $La = $l -> hasCStyleEscapes () || ( $y == " pgsql " && ( $kf > 0 && strtolower ( $I [ $kf - 1 ]) == " e " )); $ff = ( $Lc == '/*' ? '\*/' : ( $Lc == '[' ? ']' : ( preg_match ( '~^-- |^#~' , $Lc ) ? " \n " : preg_quote ( $Lc ) . ( $La ? " | \\ \\ . " : " " )))); while ( preg_match ( " ( $ff | \$ )s " , $I , $C , PREG_OFFSET_CAPTURE , $ue )){ $Tf = $C [ 0 ][ 0 ]; if ( ! $Tf && $q &&! feof ( $q )) $I .= fread ( $q , 1e5 ); else { $ue = $C [ 0 ][ 1 ] + strlen ( $Tf ); if ( ! $Tf || $Tf [ 0 ] != " \\ " ) break ;}}} else { $ec = false ; $H = substr ( $I , 0 , $kf ); $eb ++ ; $rf = " <pre id='sql- $eb '><code class='jush- $y '> " . $c -> sqlCommandQuery ( $H ) . " </code></pre> \n " ; if ( $y == " sqlite " && preg_match ( " ~^ $og *+ATTACH \\ b~i " , $H , $C )){ echo $rf , " <p class='error'> " . lang ( 142 ) . " \n " ; $kc [] = " <a href='#sql- $eb '> $eb </a> " ; if ( $_POST [ " error_stops " ]) break ;} else { if ( ! $_POST [ " only_errors " ]){ echo $rf ; ob_flush (); flush ();} $ug = microtime ( true ); if ( $g -> multi_query ( $H ) && is_object ( $h ) && preg_match ( " ~^ $og *+USE \\ b~i " , $H )) $h -> query ( $H ); do { $J = $g -> store_result (); if ( $g -> error ){ echo ( $_POST [ " only_errors " ] ? $rf : " " ), " <p class='error'> " . lang ( 143 ) . ( $g -> errno ? " ( $g->errno ) " : " " ) . " : " . error () . " \n " ; $kc [] = " <a href='#sql- $eb '> $eb </a> " ; if ( $_POST [ " error_stops " ]) break
2 ;} else { $Tg = " <span class='time'>( " . format_time ( $ug ) . " )</span> " . ( strlen ( $H ) < 1000 ? " <a href=' " . h ( ME ) . " sql= " . urlencode ( trim ( $H )) . " '> " . lang ( 11 ) . " </a> " : " " ); $oa = $g -> affected_rows ; $Lh = ( $_POST [ " only_errors " ] ? " " : $l -> warnings ()); $Mh = " warnings- $eb " ; if ( $Lh ) $Tg .= " , <a href='# $Mh '> " . lang ( 36 ) . " </a> " . script ( " qsl('a').onclick = partial(toggle, ' $Mh '); " , " " ); $sc = null ; $tc = " explain- $eb " ; if ( is_object ( $J )){ $_ = $_POST [ " limit " ]; $Le = select ( $J , $h , array (), $_ ); if ( ! $_POST [ " only_errors " ]){ echo " <form action='' method='post'> \n " ; $se = $J -> num_rows ; echo " <p> " . ( $se ? ( $_ && $se > $_ ? lang ( 144 , $_ ) : " " ) . lang ( 145 , $se ) : " " ), $Tg ; if ( $h && preg_match ( " ~^( $og | \\ ()*+SELECT \\ b~i " , $H ) && ( $sc = explain ( $h , $H ))) echo " , <a href='# $tc '>Explain</a> " . script ( " qsl('a').onclick = partial(toggle, ' $tc '); " , " " ); $u = " export- $eb " ; echo " , <a href='# $u '> " . lang ( 63 ) . " </a> " . script ( " qsl('a').onclick = partial(toggle, ' $u '); " , " " ) . " <span id=' $u ' class='hidden'>: " . html_select ( " output " , $c -> dumpOutput (), $ma [ " output " ]) . " " . html_select ( " format " , $Vb , $ma [ " format " ]) . " <input type='hidden' name='query' value=' " . h ( $H ) . " '> " . " <input type='submit' name='export' value=' " . lang ( 63 ) . " '><input type='hidden' name='token' value=' $T '></span> \n " . " </form> \n " ;}} else { if ( preg_match ( " ~^ $og *+(CREATE|DROP|ALTER) $og ++(DATABASE|SCHEMA) \\ b~i " , $H )){ restart_session (); set_session ( " dbs " , null ); stop_session ();} if ( ! $_POST [ " only_errors " ]) echo " <p class='message' title=' " . h ( $g -> info ) . " '> " . lang ( 146 , $oa ) . " $Tg \n " ;} echo ( $Lh ? " <div id=' $Mh ' class='hidden'> \n $Lh </div> \n " : " " ); if ( $sc ){ echo " <div id=' $tc ' class='hidden explain'> \n " ; select ( $sc , $h , $Le ); echo " </div> \n " ;}} $ug = microtime ( true );} while ( $g -> next_result ());} $I = substr ( $I , $ue ); $ue = 0 ;}}}} if ( $ec ) echo " <p class='message'> " . lang ( 147 ) . " \n " ; elseif ( $_POST [ " only_errors " ]){ echo " <p class='message'> " . lang ( 148 , $eb - count ( $kc )), " <span class='time'>( " . format_time ( $dh ) . " )</span> \n " ;} elseif ( $kc && $eb > 1 ) echo " <p class='error'> " . lang ( 143 ) . " : " . implode ( " " , $kc ) . " \n " ;} else
echo " <p class='error'> " . upload_error ( $I ) . " \n " ;} echo '
< form action = " " method = " post " enctype = " multipart/form-data " id = " form " >
';$qc="<input type=' submit ' value=' " .lang(149). " ' title=' Ctrl + Enter ' > " ;if(!isset( $_GET["import"] )) { $H = $_GET["sql"] ;if( $_POST ) $H = $_POST["query"] ;elseif( $_GET["history"] == " all " ) $H = $cd ;elseif( $_GET["history"] != " " ) $H = $cd[$_GET["history"] ][0];echo " < p > " ;textarea( " query " , $H ,20);echo
script (( $_POST ? " " : " qs('textarea').focus(); \n " ) . " qs('#form').onsubmit = partial(sqlSubmit, qs('#form'), ' " . js_escape ( remove_from_uri ( " sql|limit|error_stops|only_errors|history " )) . " '); " ), " <p> $qc \n " , lang ( 150 ) . " : <input type='number' name='limit' class='size' value=' " . h ( $_POST ? $_POST [ " limit " ] : $_GET [ " limit " ]) . " '> \n " ;} else { echo " <fieldset><legend> " . lang ( 151 ) . " </legend><div> " ; $Vc = ( extension_loaded ( " zlib " ) ? " [.gz] " : " " ); echo ( ini_bool ( " file_uploads " ) ? " SQL $Vc (< " . ini_get ( " upload_max_filesize " ) . " B): <input type='file' name='sql_file[]' multiple> \n $qc " : lang ( 152 )), " </div></fieldset> \n " ; $id = $c -> importServerPath (); if ( $id ){ echo " <fieldset><legend> " . lang ( 153 ) . " </legend><div> " , lang ( 154 , " <code> " . h ( $id ) . " $Vc </code> " ), ' <input type="submit" name="webfile" value="' . lang ( 155 ) . '">' , " </div></fieldset> \n " ;} echo " <p> " ;} echo
checkbox ( " error_stops " , 1 ,( $_POST ? $_POST [ " error_stops " ] : isset ( $_GET [ " import " ]) || $_GET [ " error_stops " ]), lang ( 156 )) . " \n " , checkbox ( " only_errors " , 1 ,( $_POST ? $_POST [ " only_errors " ] : isset ( $_GET [ " import " ]) || $_GET [ " only_errors " ]), lang ( 157 )) . " \n " , " <input type='hidden' name='token' value=' $T '> \n " ; if ( ! isset ( $_GET [ " import " ]) && $cd ){ print_fieldset ( " history " , lang ( 158 ), $_GET [ " history " ] != " " ); for ( $X = end ( $cd ); $X ; $X = prev ( $cd )){ $z = key ( $cd ); list ( $H , $Tg , $Zb ) = $X ; echo '<a href="' . h ( ME . " sql=&history= $z " ) . '">' . lang ( 11 ) . " </a> " . " <span class='time' title=' " .@ date ( 'Y-m-d' , $Tg ) . " '> " .@ date ( " H:i:s " , $Tg ) . " </span> " . " <code class='jush- $y '> " . shorten_utf8 ( ltrim ( str_replace ( " \n " , " " , str_replace ( " \r " , " " , preg_replace ( '~^(#|-- ).*~m' , '' , $H )))), 80 , " </code> " ) . ( $Zb ? " <span class='time'>( $Zb )</span> " : " " ) . " <br> \n " ;} echo " <input type='submit' name='clear' value=' " . lang ( 159 ) . " '> \n " , " <a href=' " . h ( ME . " sql=&history=all " ) . " '> " . lang ( 160 ) . " </a> \n " , " </div></fieldset> \n " ;} echo ' </ form >
' ;} elseif ( isset ( $_GET [ " edit " ])){ $b = $_GET [ " edit " ]; $o = fields ( $b ); $Z = ( isset ( $_GET [ " select " ]) ? ( $_POST [ " check " ] && count ( $_POST [ " check " ]) == 1 ? where_check ( $_POST [ " check " ][ 0 ], $o ) : " " ) : where ( $_GET , $o )); $vh = ( isset ( $_GET [ " select " ]) ? $_POST [ " edit " ] : $Z ); foreach ( $o
as $E => $n ){ if ( ! isset ( $n [ " privileges " ][ $vh ? " update " : " insert " ]) || $c -> fieldName ( $n ) == " " || $n [ " generated " ]) unset ( $o [ $E ]);} if ( $_POST &&! $m &&! isset ( $_GET [ " select " ])){ $B = $_POST [ " referer " ]; if ( $_POST [ " insert " ]) $B = ( $vh ? null : $_SERVER [ " REQUEST_URI " ]); elseif ( ! preg_match ( '~^.+&select=.+$~' , $B )) $B = ME . " select= " . urlencode ( $b ); $x = indexes ( $b ); $qh = unique_array ( $_GET [ " where " ], $x ); $_f = " \n WHERE $Z " ; if ( isset ( $_POST [ " delete " ])) queries_redirect ( $B , lang ( 161 ), $l -> delete ( $b , $_f , ! $qh )); else { $P = array (); foreach ( $o
as $E => $n ){ $X = process_input ( $n ); if ( $X !== false && $X !== null ) $P [ idf_escape ( $E )] = $X ;} if ( $vh ){ if ( ! $P ) redirect ( $B ); queries_redirect ( $B , lang ( 162 ), $l -> update ( $b , $P , $_f , ! $qh )); if ( is_ajax ()){ page_headers (); page_messages ( $m ); exit ;}} else { $J = $l -> insert ( $b , $P ); $Gd = ( $J ? last_id () : 0 ); queries_redirect ( $B , lang ( 163 ,( $Gd ? " $Gd " : " " )), $J );}}} $L = null ; if ( $_POST [ " save " ]) $L = ( array ) $_POST [ " fields " ]; elseif ( $Z ){ $N = array (); foreach ( $o
as $E => $n ){ if ( isset ( $n [ " privileges " ][ " select " ])){ $va = convert_field ( $n ); if ( $_POST [ " clone " ] && $n [ " auto_increment " ]) $va = " '' " ; if ( $y == " sql " && preg_match ( " ~enum|set~ " , $n [ " type " ])) $va = " 1* " . idf_escape ( $E ); $N [] = ( $va ? " $va AS " : " " ) . idf_escape ( $E );}} $L = array (); if ( ! support ( " table " )) $N = array ( " * " ); if ( $N ){ $J = $l -> select ( $b , $N , array ( $Z ), $N , array (),( isset ( $_GET [ " select " ]) ? 2 : 1 )); if ( ! $J ) $m = error (); else { $L = $J -> fetch_assoc (); if ( ! $L ) $L = false ;} if ( isset ( $_GET [ " select " ]) && ( ! $L || $J -> fetch_assoc ())) $L = null ;}} if ( ! support ( " table " ) &&! $o ){ if ( ! $Z ){ $J = $l -> select ( $b , array ( " * " ), $Z , array ( " * " )); $L = ( $J ? $J -> fetch_assoc () : false ); if ( ! $L ) $L = array ( $l -> primary => " " );} if ( $L ){ foreach ( $L
as $z => $X ){ if ( ! $Z ) $L [ $z ] = null ; $o [ $z ] = array ( " field " => $z , " null " => ( $z != $l -> primary ), " auto_increment " => ( $z == $l -> primary ));}}} edit_form ( $b , $o , $L , $vh );} elseif ( isset ( $_GET [ " create " ])){ $b = $_GET [ " create " ]; $Ye = array (); foreach ( array ( 'HASH' , 'LINEAR HASH' , 'KEY' , 'LINEAR KEY' , 'RANGE' , 'LIST' ) as $z ) $Ye [ $z ] = $z ; $Ff = referencable_primary ( $b ); $Jc = array (); foreach ( $Ff
as $Gg => $n ) $Jc [ str_replace ( " ` " , " `` " , $Gg ) . " ` " . str_replace ( " ` " , " `` " , $n [ " field " ])] = $Gg ; $Oe = array (); $R = array (); if ( $b != " " ){ $Oe = fields ( $b ); $R = table_status ( $b ); if ( ! $R ) $m = lang ( 10 );} $L = $_POST ; $L [ " fields " ] = ( array ) $L [ " fields " ]; if ( $L [ " auto_increment_col " ]) $L [ " fields " ][ $L [ " auto_increment_col " ]][ " auto_increment " ] = true ; if ( $_POST ) set_adminer_settings ( array ( " comments " => $_POST [ " comments " ], " defaults " => $_POST [ " defaults " ])); if ( $_POST &&! process_fields ( $L [ " fields " ]) &&! $m ){ if ( $_POST [ " drop " ]) queries_redirect ( substr ( ME , 0 , - 1 ), lang ( 164 ), drop_tables ( array ( $b ))); else { $o = array (); $sa = array (); $zh = false ; $Hc = array (); $Ne = reset ( $Oe ); $qa = " FIRST " ; foreach ( $L [ " fields " ] as $z => $n ){ $p = $Jc [ $n [ " type " ]]; $lh = ( $p !== null ? $Ff [ $p ] : $n ); if ( $n [ " field " ] != " " ){ if ( ! $n [ " has_default " ]) $n [ " default " ] = null ; $wf = process_field ( $n , $lh ); $sa [] = array ( $n [ " orig " ], $wf , $qa ); if ( ! $Ne || $wf !== process_field ( $Ne , $Ne )){ $o [] = array ( $n [ " orig " ], $wf , $qa ); if ( $n [ " orig " ] != " " || $qa ) $zh = true ;} if ( $p !== null ) $Hc [ idf_escape ( $n [ " field " ])] = ( $b != " " && $y != " sqlite " ? " ADD " : " " ) . format_foreign_key ( array ( 'table' => $Jc [ $n [ " type " ]], 'source' => array ( $n [ " field " ]), 'target' => array ( $lh [ " field " ]), 'on_delete' => $n [ " on_delete " ],)); $qa = " AFTER " . idf_escape ( $n [ " field " ]);} elseif ( $n [ " orig " ] != " " ){ $zh = true ; $o [] = array ( $n [ " orig " ]);} if ( $n [ " orig " ] != " " ){ $Ne = next ( $Oe ); if ( ! $Ne ) $qa = " " ;}} $af = " " ; if ( support ( " partitioning " )){ if ( isset ( $Ye [ $L [ " partition_by " ]])){ $We = array_filter ( $L , function ( $z ){ return
preg_match ( '~^partition~' , $z );}, ARRAY_FILTER_USE_KEY ); foreach ( $We [ " partition_names " ] as $z => $E ){ if ( $E == " " ){ unset ( $We [ " partition_names " ][ $z ]); unset ( $We [ " partition_values " ][ $z ]);}} if ( $We != get_partitions_info ( $b )){ $bf = array (); if ( $We [ " partition_by " ] == 'RANGE' || $We [ " partition_by " ] == 'LIST' ){ foreach ( $We [ " partition_names " ] as $z => $E ){ $Y = $We [ " partition_values " ][ $z ]; $bf [] = " \n PARTITION " . idf_escape ( $E ) . " VALUES " . ( $We [ " partition_by " ] == 'RANGE' ? " LESS THAN " : " IN " ) . ( $Y != " " ? " ( $Y ) " : " MAXVALUE " );}} $af .= " \n PARTITION BY $We[partition_by] ( $We[partition] ) " ; if ( $bf ) $af .= " ( " . implode ( " , " , $bf ) . " \n ) " ; elseif ( $We [ " partitions " ]) $af .= " PARTITIONS " . ( + $We [ " partitions " ]);}} elseif ( preg_match ( " ~partitioned~ " , $R [ " Create_options " ])) $af .= " \n REMOVE PARTITIONING " ;} $D = lang ( 165 ); if ( $b == " " ){ cookie ( " adminer_engine " , $L [ " Engine " ]); $D = lang ( 166 );} $E = trim ( $L [ " name " ]); queries_redirect ( ME . ( support ( " table " ) ? " table= " : " select= " ) . urlencode ( $E ), $D , alter_table ( $b , $E ,( $y == " sqlite " && ( $zh || $Hc ) ? $sa : $o ), $Hc ,( $L [ " Comment " ] != $R [ " Comment " ] ? $L [ " Comment " ] : null ),( $L [ " Engine " ] && $L [ " Engine " ] != $R [ " Engine " ] ? $L [ " Engine " ] : " " ),( $L [ " Collation " ] && $L [ " Collation " ] != $R [ " Collation " ] ? $L [ " Collation " ] : " " ),( $L [ " Auto_increment " ] != " " ? number ( $L [ " Auto_increment " ]) : " " ), $af ));}} page_header (( $b != " " ? lang ( 34 ) : lang ( 64 )), $m , array ( " table " => $b ), h ( $b )); if ( ! $_POST ){ $L = array ( " Engine " => $_COOKIE [ " adminer_engine " ], " fields " => array ( array ( " field " => " " , " type " => ( isset ( $nh [ " int " ]) ? " int " : ( isset ( $nh [ " integer " ]) ? " integer " : " " )), " on_update " => " " )), " partition_names " => array ( " " ),); if ( $b != " " ){ $L = $R ; $L [ " name " ] = $b ; $L [ " fields " ] = array (); if ( ! $_GET [ " auto_increment " ]) $L [ " Auto_increment " ] = " " ; foreach ( $Oe
as $n ){ $n [ " has_default " ] = isset ( $n [ " default " ]); $L [ " fields " ][] = $n ;} if ( support ( " partitioning " )){ $L += get_partitions_info ( $b ); $L [ " partition_names " ][] = " " ; $L [ " partition_values " ][] = " " ;}}} $bb = collations (); $gc = engines (); foreach ( $gc
as $fc ){ if ( ! strcasecmp ( $fc , $L [ " Engine " ])){ $L [ " Engine " ] = $fc ; break ;}} echo '
< form action = " " method = " post " id = " form " >
< p >
' ; if ( support ( " columns " ) || $b == " " ){ echo
lang ( 167 ), ': <input name="name"' ,( $b == " " &&! $_POST ? " autofocus " : " " ), ' data-maxlength="64" value="' , h ( $L [ " name " ]), ' " autocapitalize= " off " >
',($gc?"<select name=' Engine '>".optionlist(array(""=>"(".lang(168).")")+$gc,$L["Engine"])."</select>".on_help("getTarget(event).value",1).script("qsl(' select ').onchange = helpClose;"):""),' ',($bb&&!preg_match("~sqlite|mssql~",$y)?html_select("Collation",array(""=>"(".lang(95).")")+$bb,$L["Collation"]):""),' < input type = " submit " value = " ',lang(15),' " >
';}echo'
';if(support("columns")){echo' < div class = " scrollable " >
< table id = " edit-fields " class = " nowrap " >
';edit_fields($L["fields"],$bb,"TABLE",$Jc);echo' </ table >
',script("editFields();"),' </ div >
< p >
',lang(41),' : < input type = " number " name = " Auto_increment " class = " size " value = " ',h( $L["Auto_increment"] ),' " >
',checkbox("defaults",1,($_POST?$_POST["defaults"]:adminer_setting("defaults")),lang(169),"columnShow(this.checked, 5)","jsonly");$hb=($_POST?$_POST["comments"]:adminer_setting("comments"));echo(support("comment")?checkbox("comments",1,$hb,lang(40),"editingCommentsClick(this, true);","jsonly").' '.(preg_match(' ~ \n ~ ',$L["Comment"])?"<textarea name=' Comment ' rows=' 2 ' cols=' 20 '".($hb?"":" class=' hidden '").">".h($L["Comment"])."</textarea>":' < input name = " Comment " value = " '.h( $L["Comment"] ).' " data - maxlength = " '.(min_version(5.5)?2048:60).' " '.($hb?"":" class=' hidden '").' > '):' '),' < p >
< input type = " submit " value = " ',lang(15),' " >
';}echo'
';if($b!=""){echo' < input type = " submit " name = " drop " value = " ',lang(121),' " > ',confirm(lang(170,$b));}if(support("partitioning")){$Ze=preg_match(' ~ RANGE | LIST ~ ',$L["partition_by"]);print_fieldset("partition",lang(171),$L["partition_by"]);echo' < p >
',"<select name=' partition_by '>".optionlist(array(""=>"")+$Ye,$L["partition_by"])."</select>".on_help("getTarget(event).value.replace(/./, ' PARTITION BY \ $ & ')",1).script("qsl(' select ').onchange = partitionByChange;"),' ( < input name = " partition " value = " ',h( $L["partition"] ),' " > )
',lang(172),' : < input type = " number " name = " partitions " class = " size',( $Ze ||! $L["partition_by"] ? " hidden " : " " ),' " value = " ',h( $L["partitions"] ),' " >
< table id = " partition-table " ',($Ze?"":" class=' hidden '"),' >
< thead >< tr >< th > ',lang(173),' < th > ',lang(174),' </ thead >
';foreach($L["partition_names"]as$z=>$X){echo' < tr > ',' < td >< input name = " partition_names[] " value = " '.h( $X ).' " autocapitalize = " off " > ',($z==count($L["partition_names"])-1?script("qsl(' input ').oninput = partitionNameChange;"):' '),' < td >< input name = " partition_values[] " value = " '.h( $L["partition_values"] [ $z ]).' " > ';}echo' </ table >
</ div ></ fieldset >
';}echo' < input type = " hidden " name = " token " value = " ', $T ,' " >
</ form >
';}elseif(isset($_GET["indexes"])){$b=$_GET["indexes"];$ld=array("PRIMARY","UNIQUE","INDEX");$R=table_status($b,true);if(preg_match(' ~ MyISAM | M ? aria '.(min_version(5.6,' 10.0 . 5 ')?' | InnoDB ':' ').' ~ i ',$R["Engine"]))$ld[]="FULLTEXT";if(preg_match(' ~ MyISAM | M ? aria '.(min_version(5.7,' 10.2 . 2 ')?' | InnoDB ':' ').' ~ i ' , $R [ " Engine " ])) $ld [] = " SPATIAL " ; $x = indexes ( $b ); $qf = array (); if ( $y == " mongo " ){ $qf = $x [ " _id_ " ]; unset ( $ld [ 0 ]); unset ( $x [ " _id_ " ]);} $L = $_POST ; if ( $L ) set_adminer_settings ( array ( " index_options " => $L [ " options " ])); if ( $_POST &&! $m &&! $_POST [ " add " ] &&! $_POST [ " drop_col " ]){ $ta = array (); foreach ( $L [ " indexes " ] as $w ){ $E = $w [ " name " ]; if ( in_array ( $w [ " type " ], $ld )){ $e = array (); $Md = array (); $Jb = array (); $P = array (); ksort ( $w [ " columns " ]); foreach ( $w [ " columns " ] as $z => $d ){ if ( $d != " " ){ $Ld = $w [ " lengths " ][ $z ]; $Ib = $w [ " descs " ][ $z ]; $P [] = idf_escape ( $d ) . ( $Ld ? " ( " . ( + $Ld ) . " ) " : " " ) . ( $Ib ? " DESC " : " " ); $e [] = $d ; $Md [] = ( $Ld ? $Ld : null ); $Jb [] = $Ib ;}} if ( $e ){ $rc = $x [ $E ]; if ( $rc ){ ksort ( $rc [ " columns " ]); ksort ( $rc [ " lengths " ]); ksort ( $rc [ " descs " ]); if ( $w [ " type " ] == $rc [ " type " ] && array_values ( $rc [ " columns " ]) === $e && ( ! $rc [ " lengths " ] || array_values ( $rc [ " lengths " ]) === $Md ) && array_values ( $rc [ " descs " ]) === $Jb ){ unset ( $x [ $E ]); continue ;}} $ta [] = array ( $w [ " type " ], $E , $P );}}} foreach ( $x
as $E => $rc ) $ta [] = array ( $rc [ " type " ], $E , " DROP " ); if ( ! $ta ) redirect ( ME . " table= " . urlencode ( $b )); queries_redirect ( ME . " table= " . urlencode ( $b ), lang ( 175 ), alter_indexes ( $b , $ta ));} page_header ( lang ( 125 ), $m , array ( " table " => $b ), h ( $b )); $o = array_keys ( fields ( $b )); if ( $_POST [ " add " ]){ foreach ( $L [ " indexes " ] as $z => $w ){ if ( $w [ " columns " ][ count ( $w [ " columns " ])] != " " ) $L [ " indexes " ][ $z ][ " columns " ][] = " " ;} $w = end ( $L [ " indexes " ]); if ( $w [ " type " ] || array_filter ( $w [ " columns " ], 'strlen' )) $L [ " indexes " ][] = array ( " columns " => array ( 1 => " " ));} if ( ! $L ){ foreach ( $x
as $z => $w ){ $x [ $z ][ " name " ] = $z ; $x [ $z ][ " columns " ][] = " " ;} $x [] = array ( " columns " => array ( 1 => " " )); $L [ " indexes " ] = $x ;} $Md = ( $y == " sql " || $y == " mssql " ); $ig = ( $_POST ? $_POST [ " options " ] : adminer_setting ( " index_options " )); echo '
< form action = " " method = " post " >
< div class = " scrollable " >
< table class = " nowrap " >
< thead >< tr >
< th id = " label-type " > ',lang(176),' < th >< input type = " submit " class = " wayoff " > ',lang(38).($Md?"<span class=' idxopts " .( $ig ? " " : " hidden " ). " ' > ( " .lang(177). " ) </ span > " : " " );if( $Md ||support( " descidx " ))echo
checkbox ( " options " , 1 , $ig , lang ( 101 ), " indexOptionsShow(this.checked) " , " jsonly " ) . " \n " ; echo '<th id="label-name">' , lang ( 178 ), '<th><noscript>' , " <input type='image' class='icon' name='add[0]' src=' " . h ( preg_replace ( " ~ \\ ?.*~ " , " " , ME ) . " ?file=plus.gif&version=4.17.1 " ) . " ' alt='+' title=' " . lang ( 102 ) . " '> " , ' </ noscript >
</ thead >
' ; if ( $qf ){ echo " <tr><td>PRIMARY<td> " ; foreach ( $qf [ " columns " ] as $z => $d ){ echo
select_input ( " disabled " , $o , $d ), " <label><input disabled type='checkbox'> " . lang ( 49 ) . " </label> " ;} echo " <td><td> \n " ;} $xd = 1 ; foreach ( $L [ " indexes " ] as $w ){ if ( ! $_POST [ " drop_col " ] || $xd != key ( $_POST [ " drop_col " ])){ echo " <tr><td> " . html_select ( " indexes[ $xd ][type] " , array ( - 1 => " " ) + $ld , $w [ " type " ],( $xd == count ( $L [ " indexes " ]) ? " indexesAddRow.call(this); " : 1 ), " label-type " ), " <td> " ; ksort ( $w [ " columns " ]); $t = 1 ; foreach ( $w [ " columns " ] as $z => $d ){ echo " <span> " . select_input ( " name='indexes[ $xd ][columns][ $t ]' title=' " . lang ( 38 ) . " ' " ,( $o ? array_combine ( $o , $o ) : $o ), $d , " partial( " . ( $t == count ( $w [ " columns " ]) ? " indexesAddColumn " : " indexesChangeColumn " ) . " , ' " . js_escape ( $y == " sql " ? " " : $_GET [ " indexes " ] . " _ " ) . " ') " ), " <span class='idxopts " . ( $ig ? " " : " hidden " ) . " '> " ,( $Md ? " <input type='number' name='indexes[ $xd ][lengths][ $t ]' class='size' value=' " . h ( $w [ " lengths " ][ $z ]) . " ' title=' " . lang ( 100 ) . " '> " : " " ),( support ( " descidx " ) ? checkbox ( " indexes[ $xd ][descs][ $t ] " , 1 , $w [ " descs " ][ $z ], lang ( 49 )) : " " ), " </span> </span> " ; $t ++ ;} echo " <td><input name='indexes[ $xd ][name]' value=' " . h ( $w [ " name " ]) . " ' autocapitalize='off' aria-labelledby='label-name'> \n " , " <td><input type='image' class='icon' name='drop_col[ $xd ]' src=' " . h ( preg_replace ( " ~ \\ ?.*~ " , " " , ME ) . " ?file=cross.gif&version=4.17.1 " ) . " ' alt='x' title=' " . lang ( 105 ) . " '> " . script ( " qsl('input').onclick = partial(editingRemoveRow, 'indexes \$ 1[type]'); " );} $xd ++ ;} echo ' </ table >
</ div >
< p >
< input type = " submit " value = " ',lang(15),' " >
< input type = " hidden " name = " token " value = " ', $T ,' " >
</ form >
';}elseif(isset($_GET["database"])){$L=$_POST;if($_POST&&!$m&&!isset($_POST["add_x"])){$E=trim($L["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(179),drop_databases(array(DB)));}elseif(DB!==$E){if(DB!=""){$_GET["db"]=$E;queries_redirect(preg_replace(' ~ \bdb = [ ^& ] *&~ ',' ' , ME ) . " db= " . urlencode ( $E ), lang ( 180 ), rename_database ( $E , $L [ " collation " ]));} else { $j = explode ( " \n " , str_replace ( " \r " , " " , $E )); $Ag = true ; $Fd = " " ; foreach ( $j
as $k ){ if ( count ( $j ) == 1 || $k != " " ){ if ( ! create_database ( $k , $L [ " collation " ])) $Ag = false ; $Fd = $k ;}} restart_session (); set_session ( " dbs " , null ); queries_redirect ( ME . " db= " . urlencode ( $Fd ), lang ( 181 ), $Ag );}} else { if ( ! $L [ " collation " ]) redirect ( substr ( ME , 0 , - 1 )); query_redirect ( " ALTER DATABASE " . idf_escape ( $E ) . ( preg_match ( '~^[a-z0-9_]+$~i' , $L [ " collation " ]) ? " COLLATE $L[collation] " : " " ), substr ( ME , 0 , - 1 ), lang ( 182 ));}} page_header ( DB != " " ? lang ( 57 ) : lang ( 109 ), $m , array (), h ( DB )); $bb = collations (); $E = DB ; if ( $_POST ) $E = $L [ " name " ]; elseif ( DB != " " ) $L [ " collation " ] = db_collation ( DB , $bb ); elseif ( $y == " sql " ){ foreach ( get_vals ( " SHOW GRANTS " ) as $Qc ){ if ( preg_match ( '~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~' , $Qc , $C ) && $C [ 1 ]){ $E = stripcslashes ( idf_unescape ( " ` $C[2] ` " )); break ;}}} echo '
< form action = " " method = " post " >
< p >
',($_POST["add_x"]||strpos($E,"\n")?' < textarea autofocus name = " name " rows = " 10 " cols = " 40 " > '.h($E).' </ textarea >< br > ':' < input name = " name " autofocus value = " '.h( $E ).' " data - maxlength = " 64 " autocapitalize = " off " > ')."\n".($bb?html_select("collation",array(""=>"(".lang(95).")")+$bb,$L["collation"]).doc_link(array(' sql '=>"charset-charsets.html",' mariadb '=>"supported-character-sets-and-collations/",)):""),' < input type = " submit " value = " ',lang(15),' " >
';if(DB!="")echo"<input type=' submit ' name=' drop ' value=' " .lang(121). " '>".confirm(lang(170,DB))."\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"<input type=' image ' class=' icon ' name=' add ' src=' " .h(preg_replace( " ~ \\ ? .*~ " , " " ,ME). " ? file = plus . gif & version = 4.17 . 1 " ). " ' alt=' + ' title=' " .lang(102). " '>\n";echo' < input type = " hidden " name = " token " value = " ', $T ,' " >
</ form >
';}elseif(isset($_GET["call"])){$ca=($_GET["name"]?$_GET["name"]:$_GET["call"]);page_header(lang(183).": ".h($ca),$m);$Qf=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$jd=array();$Re=array();foreach($Qf["fields"]as$t=>$n){if(substr($n["inout"],-3)=="OUT")$Re[$t]="@".idf_escape($n["field"])." AS ".idf_escape($n["field"]);if(!$n["inout"]||substr($n["inout"],0,2)=="IN")$jd[]=$t;}if(!$m&&$_POST){$Ma=array();foreach($Qf["fields"]as$z=>$n){if(in_array($z,$jd)){$X=process_input($n);if($X===false)$X="' '";if(isset($Re[$z]))$g->query("SET @".idf_escape($n["field"])." = $X");}$Ma[]=(isset($Re[$z])?"@".idf_escape($n["field"]):$X);}$I=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($ca)."(".implode(", ",$Ma).")";$ug=microtime(true);$J=$g->multi_query($I);$oa=$g->affected_rows;echo$c->selectQuery($I,$ug,!$J);if(!$J)echo"<p class=' error ' > " .error(). " \n " ;else { $h =connect();if(is_object( $h )) $h->select_db (DB);do { $J = $g->store_result ();if(is_object( $J ))select( $J , $h );else
echo " <p class='message'> " . lang ( 184 , $oa ) . " <span class='time'> " .@ date ( " H:i:s " ) . " </span> \n " ;} while ( $g -> next_result ()); if ( $Re ) select ( $g -> query ( " SELECT " . implode ( " , " , $Re )));}} echo '
< form action = " " method = " post " >
';if($jd){echo"<table class=' layout ' > \n " ;foreach( $jd
as $z ){ $n = $Qf [ " fields " ][ $z ]; $E = $n [ " field " ]; echo " <tr><th> " . $c -> fieldName ( $n ); $Y = $_POST [ " fields " ][ $E ]; if ( $Y != " " ){ if ( $n [ " type " ] == " enum " ) $Y =+ $Y ; if ( $n [ " type " ] == " set " ) $Y = array_sum ( $Y );} input ( $n , $Y ,( string ) $_POST [ " function " ][ $E ]); echo " \n " ;} echo " </table> \n " ;} echo ' < p >
< input type = " submit " value = " ',lang(183),' " >
< input type = " hidden " name = " token " value = " ', $T ,' " >
</ form >
< pre >
' ; function
pre_tr ( $Tf ){ return
preg_replace ( '~^~m' , '<tr>' , preg_replace ( '~\|~' , '<td>' , preg_replace ( '~\|$~m' , " " , rtrim ( $Tf ))));} $Q = '(\+--[-+]+\+\n)' ; $L = '(\| .* \|\n)' ; echo
preg_replace_callback ( " ~^ $Q ? $L $Q ?( $L *) $Q ?~m " , function ( $C ){ $Ec = pre_tr ( $C [ 2 ]); return " <table> \n " . ( $C [ 1 ] ? " <thead> $Ec </thead> \n " : $Ec ) . pre_tr ( $C [ 4 ]) . " \n </table> " ;}, preg_replace ( '~(\n( -|mysql)> )(.+)~' , " \\ 1<code class='jush-sql'> \\ 3</code> " , preg_replace ( '~(.+)\n---+\n~' , " <b> \\ 1</b> \n " , h ( $Qf [ 'comment' ])))); echo ' </ pre >
';}elseif(isset($_GET["foreign"])){$b=$_GET["foreign"];$E=$_GET["name"];$L=$_POST;if($_POST&&!$m&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$D=($_POST["drop"]?lang(185):($E!=""?lang(186):lang(187)));$B=ME."table=".urlencode($b);if(!$_POST["drop"]){$L["source"]=array_filter($L["source"],' strlen ');ksort($L["source"]);$Ng=array();foreach($L["source"]as$z=>$X)$Ng[$z]=$L["target"][$z];$L["target"]=$Ng;}if($y=="sqlite")queries_redirect($B,$D,recreate_table($b,$b,array(),array(),array(" $E"=>($_POST["drop"]?"":" ".format_foreign_key($L)))));else{$ta="ALTER TABLE ".table($b);$Rb="\nDROP ".($y=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($E);if($_POST["drop"])query_redirect($ta.$Rb,$B,$D);else{query_redirect($ta.($E!=""?"$Rb,":"")."\nADD".format_foreign_key($L),$B,$D);$m=lang(188)."<br>$m";}}}page_header(lang(189),$m,array("table"=>$b),h($b));if($_POST){ksort($L["source"]);if($_POST["add"])$L["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$L["target"]=array();}elseif($E!=""){$Jc=foreign_keys($b);$L=$Jc[$E];$L["source"][]="";}else{$L["table"]=$b;$L["source"]=array("");}echo'
< form action = " " method = " post " >
';$ng=array_keys(fields($b));if($L["db"]!="")$g->select_db($L["db"]);if($L["ns"]!="")set_schema($L["ns"]);$Ef=array_keys(array_filter(table_status(' ',true),' fk_support '));$Ng=array_keys(fields(in_array($L["table"],$Ef)?$L["table"]:reset($Ef)));$Be="this.form[' change - js '].value = ' 1 ' ; this . form . submit (); " ;echo " < p > " .lang(190). " : " .html_select( " table " , $Ef , $L["table"] , $Be ). " \n " ;if( $y == " pgsql " )echo
lang ( 191 ) . " : " . html_select ( " ns " , $c -> schemas (), $L [ " ns " ] != " " ? $L [ " ns " ] : $_GET [ " ns " ], $Be ); elseif ( $y != " sqlite " ){ $Bb = array (); foreach ( $c -> databases () as $k ){ if ( ! information_schema ( $k )) $Bb [] = $k ;} echo
lang ( 65 ) . " : " . html_select ( " db " , $Bb , $L [ " db " ] != " " ? $L [ " db " ] : $_GET [ " db " ], $Be );} echo ' < input type = " hidden " name = " change-js " value = " " >
< noscript >< p >< input type = " submit " name = " change " value = " ',lang(192),' " ></ noscript >
< table >
< thead >< tr >< th id = " label-source " > ',lang(127),' < th id = " label-target " > ',lang(128),' </ thead >
';$xd=0;foreach($L["source"]as$z=>$X){echo"<tr>","<td>".html_select("source[".(+$z)."]",array(-1=>"")+$ng,$X,($xd==count($L["source"])-1?"foreignAddRow.call(this);":1),"label-source"),"<td>".html_select("target[".(+$z)."]",$Ng,$L["target"][$z],1,"label-target");$xd++;}echo' </ table >
< p >
',lang(97),' : ',html_select("on_delete",array(-1=>"")+explode("|",$Ae),$L["on_delete"]),' ',lang(96),' : ',html_select("on_update",array(-1=>"")+explode("|",$Ae),$L["on_update"]),doc_link(array(' sql '=>"innodb-foreign-key-constraints.html",' mariadb '=>"foreign-keys/",)),' < p >
< input type = " submit " value = " ',lang(15),' " >
< noscript >< p >< input type = " submit " name = " add " value = " ',lang(193),' " ></ noscript >
';if($E!=""){echo' < input type = " submit " name = " drop " value = " ',lang(121),' " > ',confirm(lang(170,$E));}echo' < input type = " hidden " name = " token " value = " ', $T ,' " >
</ form >
';}elseif(isset($_GET["view"])){$b=$_GET["view"];$L=$_POST;$Pe="VIEW";if($y=="pgsql"&&$b!=""){$vg=table_status($b);$Pe=strtoupper($vg["Engine"]);}if($_POST&&!$m){$E=trim($L["name"]);$va=" AS\n$L[select]";$B=ME."table=".urlencode($E);$D=lang(194);$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$b==$E&&$y!="sqlite"&&$U=="VIEW"&&$Pe=="VIEW")query_redirect(($y=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($E).$va,$B,$D);else{$Pg=$E."_adminer_".uniqid();drop_create("DROP $Pe ".table($b),"CREATE $U ".table($E).$va,"DROP $U ".table($E),"CREATE $U ".table($Pg).$va,"DROP $U ".table($Pg),($_POST["drop"]?substr(ME,0,-1):$B),lang(195),$D,lang(196),$b,$E);}}if(!$_POST&&$b!=""){$L=view($b);$L["name"]=$b;$L["materialized"]=($Pe!="VIEW");if(!$m)$m=error();}page_header(($b!=""?lang(33):lang(197)),$m,array("table"=>$b),h($b));echo'
< form action = " " method = " post " >
< p > ',lang(178),' : < input name = " name " value = " ',h( $L["name"] ),' " data - maxlength = " 64 " autocapitalize = " off " >
',(support("materializedview")?" ".checkbox("materialized",1,$L["materialized"],lang(122)):""),' < p > ';textarea("select",$L["select"]);echo' < p >
< input type = " submit " value = " ',lang(15),' " >
';if($b!=""){echo' < input type = " submit " name = " drop " value = " ',lang(121),' " > ',confirm(lang(170,$b));}echo' < input type = " hidden " name = " token " value = " ', $T ,' " >
</ form >
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$qd=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$wg=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$L=$_POST;if($_POST&&!$m){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(198));elseif(in_array($L["INTERVAL_FIELD"],$qd)&&isset($wg[$L["STATUS"]])){$Uf="\nON SCHEDULE ".($L["INTERVAL_VALUE"]?"EVERY ".q($L["INTERVAL_VALUE"])." $L[INTERVAL_FIELD]".($L["STARTS"]?" STARTS ".q($L["STARTS"]):"").($L["ENDS"]?" ENDS ".q($L["ENDS"]):""):"AT ".q($L["STARTS"]))." ON COMPLETION".($L["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?lang(199):lang(200)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Uf.($aa!=$L["EVENT_NAME"]?"\nRENAME TO ".idf_escape($L["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($L["EVENT_NAME"]).$Uf)."\n".$wg[$L["STATUS"]]." COMMENT ".q($L["EVENT_COMMENT"]).rtrim(" DO\n$L[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(201).": ".h($aa):lang(202)),$m);if(!$L&&$aa!=""){$M=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$L=reset($M);}echo'
< form action = " " method = " post " >
< table class = " layout " >
< tr >< th > ',lang(178),' < td >< input name = " EVENT_NAME " value = " ',h( $L["EVENT_NAME"] ),' " data - maxlength = " 64 " autocapitalize = " off " >
< tr >< th title = " datetime " > ',lang(203),' < td >< input name = " STARTS " value = " ',h( " $L [ EXECUTE_AT ] $L [ STARTS ] " ),' " >
< tr >< th title = " datetime " > ',lang(204),' < td >< input name = " ENDS " value = " ',h( $L["ENDS"] ),' " >
< tr >< th > ',lang(205),' < td >< input type = " number " name = " INTERVAL_VALUE " value = " ',h( $L["INTERVAL_VALUE"] ),' " class = " size " > ',html_select("INTERVAL_FIELD",$qd,$L["INTERVAL_FIELD"]),' < tr >< th > ',lang(112),' < td > ',html_select("STATUS",$wg,$L["STATUS"]),' < tr >< th > ',lang(40),' < td >< input name = " EVENT_COMMENT " value = " ',h( $L["EVENT_COMMENT"] ),' " data - maxlength = " 64 " >
< tr >< th >< td > ',checkbox("ON_COMPLETION","PRESERVE",$L["ON_COMPLETION"]=="PRESERVE",lang(206)),' </ table >
< p > ';textarea("EVENT_DEFINITION",$L["EVENT_DEFINITION"]);echo' < p >
< input type = " submit " value = " ',lang(15),' " >
';if($aa!=""){echo' < input type = " submit " name = " drop " value = " ',lang(121),' " > ',confirm(lang(170,$aa));}echo' < input type = " hidden " name = " token " value = " ', $T ,' " >
</ form >
';}elseif(isset($_GET["procedure"])){$ca=($_GET["name"]?$_GET["name"]:$_GET["procedure"]);$Qf=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$L=$_POST;$L["fields"]=(array)$L["fields"];if($_POST&&!process_fields($L["fields"])&&!$m){$Me=routine($_GET["procedure"],$Qf);$Pg="$L[name]_adminer_".uniqid();drop_create("DROP $Qf ".routine_id($ca,$Me),create_routine($Qf,$L),"DROP $Qf ".routine_id($L["name"],$L),create_routine($Qf,array("name"=>$Pg)+$L),"DROP $Qf ".routine_id($Pg,$L),substr(ME,0,-1),lang(207),lang(208),lang(209),$ca,$L["name"]);}page_header(($ca!=""?(isset($_GET["function"])?lang(210):lang(211)).": ".h($ca):(isset($_GET["function"])?lang(212):lang(213))),$m);if(!$_POST&&$ca!=""){$L=routine($_GET["procedure"],$Qf);$L["name"]=$ca;}$bb=get_vals("SHOW CHARACTER SET");sort($bb);$Rf=routine_languages();echo'
< form action = " " method = " post " id = " form " >
< p > ',lang(178),' : < input name = " name " value = " ',h( $L["name"] ),' " data - maxlength = " 64 " autocapitalize = " off " >
',($Rf?lang(20).": ".html_select("language",$Rf,$L["language"])."\n":""),' < input type = " submit " value = " ',lang(15),' " >
< div class = " scrollable " >
< table class = " nowrap " >
';edit_fields($L["fields"],$bb,$Qf);if(isset($_GET["function"])){echo"<tr><td>".lang(214);edit_type("returns",$L["returns"],$bb,array(),($y=="pgsql"?array("void","trigger"):array()));}echo' </ table >
',script("editFields();"),' </ div >
< p > ';textarea("definition",$L["definition"]);echo' < p >
< input type = " submit " value = " ',lang(15),' " >
';if($ca!=""){echo' < input type = " submit " name = " drop " value = " ',lang(121),' " > ',confirm(lang(170,$ca));}echo' < input type = " hidden " name = " token " value = " ', $T ,' " >
</ form >
';}elseif(isset($_GET["check"])){$b=$_GET["check"];$E=$_GET["name"];$L=$_POST;if($L&&!$m){$J=($E==""||queries("ALTER TABLE ".table($b)." DROP CONSTRAINT ".idf_escape($E)));if(!$L["drop"])$J=queries("ALTER TABLE ".table($b)." ADD".($L["name"]!=""?" CONSTRAINT ".idf_escape($L["name"])."":"")." CHECK ($L[clause])");queries_redirect(ME."table=".urlencode($b),($L["drop"]?lang(215):($E!=""?lang(216):lang(217))),$J);}page_header(($E!=""?lang(218).": ".h($E):lang(132)),$m,array("table"=>$b));if(!$L){$Sa=check_constraints($b);$L=array("name"=>$E,"clause"=>$Sa[$E]);}echo'
< form action = " " method = " post " >
< p > ',lang(178),' : < input name = " name " value = " ',h( $L["name"] ),' " data - maxlength = " 64 " autocapitalize = " off " > ',doc_link(array(' sql '=>"create-table-check-constraints.html",' mariadb '=>"constraint/",)),' < p > ';textarea("clause",$L["clause"]);echo' < p >< input type = " submit " value = " ',lang(15),' " >
';if($E!=""){echo' < input type = " submit " name = " drop " value = " ',lang(121),' " > ',confirm(lang(170,$E));}echo' < input type = " hidden " name = " token " value = " ', $T ,' " >
</ form >
';}elseif(isset($_GET["trigger"])){$b=$_GET["trigger"];$E=$_GET["name"];$jh=trigger_options();$L=(array)trigger($E,$b)+array("Trigger"=>$b."_bi");if($_POST){if(!$m&&in_array($_POST["Timing"],$jh["Timing"])&&in_array($_POST["Event"],$jh["Event"])&&in_array($_POST["Type"],$jh["Type"])){$_e=" ON ".table($b);$Rb="DROP TRIGGER ".idf_escape($E).($y=="pgsql"?$_e:"");$B=ME."table=".urlencode($b);if($_POST["drop"])query_redirect($Rb,$B,lang(219));else{if($E!="")queries($Rb);queries_redirect($B,($E!=""?lang(220):lang(221)),queries(create_trigger($_e,$_POST)));if($E!="")queries(create_trigger($_e,$L+array("Type"=>reset($jh["Type"]))));}}$L=$_POST;}page_header(($E!=""?lang(222).": ".h($E):lang(223)),$m,array("table"=>$b));echo'
< form action = " " method = " post " id = " form " >
< table class = " layout " >
< tr >< th > ',lang(224),' < td > ',html_select("Timing",$jh["Timing"],$L["Timing"],"triggerChange(/^".preg_quote($b,"/")."_[ba][iud]$/, ' " .js_escape( $b ). " ', this.form);"),' < tr >< th > ',lang(225),' < td > ',html_select("Event",$jh["Event"],$L["Event"],"this.form[' Timing '].onchange();"),(in_array("UPDATE OF",$jh["Event"])?" <input name=' Of ' value=' " .h( $L["Of"] ). " ' class=' hidden '>":""),' < tr >< th > ',lang(39),' < td > ',html_select("Type",$jh["Type"],$L["Type"]),' </ table >
< p > ',lang(178),' : < input name = " Trigger " value = " ',h( $L["Trigger"] ),' " data - maxlength = " 64 " autocapitalize = " off " >
',script("qs(' #form')['Timing'].onchange();"),'<p>';textarea("Statement",$L["Statement"]);echo'<p>
< input type = " submit " value = " ',lang(15),' " >
';if($E!=""){echo' < input type = " submit " name = " drop " value = " ',lang(121),' " > ',confirm(lang(170,$E));}echo' < input type = " hidden " name = " token " value = " ', $T ,' " >
</ form >
';}elseif(isset($_GET["user"])){$ea=$_GET["user"];$uf=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$L){foreach(explode(",",($L["Privilege"]=="Grant option"?"":$L["Context"]))as$nb)$uf[$nb][$L["Privilege"]]=$L["Comment"];}$uf["Server Admin"]+=$uf["File access on server"];$uf["Databases"]["Create routine"]=$uf["Procedures"]["Create routine"];unset($uf["Procedures"]["Create routine"]);$uf["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$uf["Columns"][$X]=$uf["Tables"][$X];unset($uf["Server Admin"]["Usage"]);foreach($uf["Tables"]as$z=>$X)unset($uf["Databases"][$z]);$me=array();if($_POST){foreach($_POST["objects"]as$z=>$X)$me[$X]=(array)$me[$X]+(array)$_POST["grants"][$z];}$Rc=array();$ye="";if(isset($_GET["host"])&&($J=$g->query("SHOW GRANTS FOR ".q($ea)."@".q($_GET["host"])))){while($L=$J->fetch_row()){if(preg_match(' ~ GRANT ( .* ) ON ( .* ) TO ~ ',$L[0],$C)&&preg_match_all(' ~ * ([ ^ (,] * [ ^ ,(])( * \ ([ ^ )] + \ )) ? ~ ' , $C [ 1 ], $Td , PREG_SET_ORDER )){ foreach ( $Td
as $X ){ if ( $X [ 1 ] != " USAGE " ) $Rc [ " $C[2] $X[2] " ][ $X [ 1 ]] = true ; if ( preg_match ( '~ WITH GRANT OPTION~' , $L [ 0 ])) $Rc [ " $C[2] $X[2] " ][ " GRANT OPTION " ] = true ;}} if ( preg_match ( " ~ IDENTIFIED BY PASSWORD '([^']+)~ " , $L [ 0 ], $C )) $ye = $C [ 1 ];}} if ( $_POST &&! $m ){ $ze = ( isset ( $_GET [ " host " ]) ? q ( $ea ) . " @ " . q ( $_GET [ " host " ]) : " '' " ); if ( $_POST [ " drop " ]) query_redirect ( " DROP USER $ze " , ME . " privileges= " , lang ( 226 )); else { $oe = q ( $_POST [ " user " ]) . " @ " . q ( $_POST [ " host " ]); $cf = $_POST [ " pass " ]; if ( $cf != '' &&! $_POST [ " hashed " ] &&! min_version ( 8 )){ $cf = $g -> result ( " SELECT PASSWORD( " . q ( $cf ) . " ) " ); $m =! $cf ;} $rb = false ; if ( ! $m ){ if ( $ze != $oe ){ $rb = queries (( min_version ( 5 ) ? " CREATE USER " : " GRANT USAGE ON *.* TO " ) . " $oe IDENTIFIED BY " . ( min_version ( 8 ) ? " " : " PASSWORD " ) . q ( $cf )); $m =! $rb ;} elseif ( $cf != $ye ) queries ( " SET PASSWORD FOR $oe = " . q ( $cf ));} if ( ! $m ){ $Nf = array (); foreach ( $me
as $te => $Qc ){ if ( isset ( $_GET [ " grant " ])) $Qc = array_filter ( $Qc ); $Qc = array_keys ( $Qc ); if ( isset ( $_GET [ " grant " ])) $Nf = array_diff ( array_keys ( array_filter ( $me [ $te ], 'strlen' )), $Qc ); elseif ( $ze == $oe ){ $we = array_keys (( array ) $Rc [ $te ]); $Nf = array_diff ( $we , $Qc ); $Qc = array_diff ( $Qc , $we ); unset ( $Rc [ $te ]);} if ( preg_match ( '~^(.+)\s*(\(.*\))?$~U' , $te , $C ) && ( ! grant ( " REVOKE " , $Nf , $C [ 2 ], " ON $C[1] FROM $oe " ) ||! grant ( " GRANT " , $Qc , $C [ 2 ], " ON $C[1] TO $oe " ))){ $m = true ; break ;}}} if ( ! $m && isset ( $_GET [ " host " ])){ if ( $ze != $oe ) queries ( " DROP USER $ze " ); elseif ( ! isset ( $_GET [ " grant " ])){ foreach ( $Rc
as $te => $Nf ){ if ( preg_match ( '~^(.+)(\(.*\))?$~U' , $te , $C )) grant ( " REVOKE " , array_keys ( $Nf ), $C [ 2 ], " ON $C[1] FROM $oe " );}}} queries_redirect ( ME . " privileges= " ,( isset ( $_GET [ " host " ]) ? lang ( 227 ) : lang ( 228 )), ! $m ); if ( $rb ) $g -> query ( " DROP USER $oe " );}} page_header (( isset ( $_GET [ " host " ]) ? lang ( 25 ) . " : " . h ( " $ea @ $_GET[host] " ) : lang ( 141 )), $m , array ( " privileges " => array ( '' , lang ( 61 )))); if ( $_POST ){ $L = $_POST ; $Rc = $me ;} else { $L = $_GET + array ( " host " => $g -> result ( " SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1) " )); $L [ " pass " ] = $ye ; if ( $ye != " " ) $L [ " hashed " ] = true ; $Rc [( DB == " " || $Rc ? " " : idf_escape ( addcslashes ( DB , " %_ \\ " ))) . " .* " ] = array ();} echo ' < form action = " " method = " post " >
< table class = " layout " >
< tr >< th > ',lang(24),' < td >< input name = " host " data - maxlength = " 60 " value = " ',h( $L["host"] ),' " autocapitalize = " off " >
< tr >< th > ',lang(25),' < td >< input name = " user " data - maxlength = " 80 " value = " ',h( $L["user"] ),' " autocapitalize = " off " >
< tr >< th > ',lang(26),' < td >< input name = " pass " id = " pass " value = " ',h( $L["pass"] ),' " autocomplete = " new-password " >
' ; if ( ! $L [ " hashed " ]) echo
script ( " typePassword(qs('#pass')); " ); echo ( min_version ( 8 ) ? " " : checkbox ( " hashed " , 1 , $L [ " hashed " ], lang ( 229 ), " typePassword(this.form['pass'], this.checked); " )), ' </ table >
';echo"<table class=' odds '>\n","<thead><tr><th colspan=' 2 '>".lang(61).doc_link(array(' sql ' => " grant.html#priv_level " )); $t = 0 ; foreach ( $Rc
as $te => $Qc ){ echo '<th>' . ( $te != " *.* " ? " <input name='objects[ $t ]' value=' " . h ( $te ) . " ' size='10' autocapitalize='off'> " : " <input type='hidden' name='objects[ $t ]' value='*.*' size='10'>*.* " ); $t ++ ;} echo " </thead> \n " ; foreach ( array ( " " => " " , " Server Admin " => lang ( 24 ), " Databases " => lang ( 27 ), " Tables " => lang ( 124 ), " Columns " => lang ( 38 ), " Procedures " => lang ( 230 ),) as $nb => $Ib ){ foreach (( array ) $uf [ $nb ] as $tf => $fb ){ echo " <tr><td " . ( $Ib ? " > $Ib <td " : " colspan='2' " ) . ' lang="en" title="' . h ( $fb ) . '">' . h ( $tf ); $t = 0 ; foreach ( $Rc
as $te => $Qc ){ $E = " 'grants[ $t ][ " . h ( strtoupper ( $tf )) . " ]' " ; $Y = $Qc [ strtoupper ( $tf )]; if ( $nb == " Server Admin " && $te != ( isset ( $Rc [ " *.* " ]) ? " *.* " : " .* " )) echo " <td> " ; elseif ( isset ( $_GET [ " grant " ])) echo " <td><select name= $E ><option><option value='1' " . ( $Y ? " selected " : " " ) . " > " . lang ( 231 ) . " <option value='0' " . ( $Y == " 0 " ? " selected " : " " ) . " > " . lang ( 232 ) . " </select> " ; else { echo " <td align='center'><label class='block'> " , " <input type='checkbox' name= $E value='1' " . ( $Y ? " checked " : " " ) . ( $tf == " All privileges " ? " id='grants- $t -all'> " : " > " . ( $tf == " Grant option " ? " " : script ( " qsl('input').onclick = function () { if (this.checked) formUncheck('grants- $t -all'); }; " ))), " </label> " ;} $t ++ ;}}} echo " </table> \n " , ' < p >
< input type = " submit " value = " ',lang(15),' " >
';if(isset($_GET["host"])){echo' < input type = " submit " name = " drop " value = " ',lang(121),' " > ',confirm(lang(170,"$ea@$_GET[host]"));}echo' < input type = " hidden " name = " token " value = " ', $T ,' " >
</ form >
';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$m){$Ad=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$Ad++;}queries_redirect(ME."processlist=",lang(233,$Ad),$Ad||!$_POST["kill"]);}}page_header(lang(110),$m);echo'
< form action = " " method = " post " >
< div class = " scrollable " >
< table class = " nowrap checkable odds " >
',script("mixin(qsl(' table '), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$t=-1;foreach(process_list()as$t=>$L){if(!$t){echo"<thead><tr lang=' en ' > " .(support( " kill " )? " < th > " : " " );foreach( $L
as $z => $X ) echo " <th> $z " . doc_link ( array ( 'sql' => " show-processlist.html#processlist_ " . strtolower ( $z ),)); echo " </thead> \n " ;} echo " <tr> " . ( support ( " kill " ) ? " <td> " . checkbox ( " kill[] " , $L [ $y == " sql " ? " Id " : " pid " ], 0 ) : " " ); foreach ( $L
as $z => $X ) echo " <td> " . (( $y == " sql " && $z == " Info " && preg_match ( " ~Query|Killed~ " , $L [ " Command " ]) && $X != " " ) || ( $y == " pgsql " && $z == " current_query " && $X != " <IDLE> " ) || ( $y == " oracle " && $z == " sql_text " && $X != " " ) ? " <code class='jush- $y '> " . shorten_utf8 ( $X , 100 , " </code> " ) . ' <a href="' . h ( ME . ( $L [ " db " ] != " " ? " db= " . urlencode ( $L [ " db " ]) . " & " : " " ) . " sql= " . urlencode ( $X )) . '">' . lang ( 234 ) . '</a>' : h ( $X )); echo " \n " ;} echo ' </ table >
</ div >
< p >
';if(support("kill")){echo($t+1)."/".lang(235,max_connections()),"<p><input type=' submit ' value=' " .lang(236). " '>\n";}echo' < input type = " hidden " name = " token " value = " ', $T ,' " >
</ form >
' , script ( " tableCheck(); " );} elseif ( isset ( $_GET [ " select " ])){ $b = $_GET [ " select " ]; $R = table_status1 ( $b ); $x = indexes ( $b ); $o = fields ( $b ); $Jc = column_foreign_keys ( $b ); $ve = $R [ " Oid " ]; parse_str ( $_COOKIE [ " adminer_import " ], $na ); $Of = array (); $e = array (); $Sg = null ; foreach ( $o
as $z => $n ){ $E = $c -> fieldName ( $n ); if ( isset ( $n [ " privileges " ][ " select " ]) && $E != " " ){ $e [ $z ] = html_entity_decode ( strip_tags ( $E ), ENT_QUOTES ); if ( is_shortable ( $n )) $Sg = $c -> selectLengthProcess ();} $Of += $n [ " privileges " ];} list ( $N , $s ) = $c -> selectColumnsProcess ( $e , $x ); $ud = count ( $s ) < count ( $N ); $Z = $c -> selectSearchProcess ( $o , $x ); $Ie = $c -> selectOrderProcess ( $o , $x ); $_ = $c -> selectLimitProcess (); if ( $_GET [ " val " ] && is_ajax ()){ header ( " Content-Type: text/plain; charset=utf-8 " ); foreach ( $_GET [ " val " ] as $rh => $L ){ $va = convert_field ( $o [ key ( $L )]); $N = array ( $va ? $va : idf_escape ( key ( $L ))); $Z [] = where_check ( $rh , $o ); $K = $l -> select ( $b , $N , $Z , $N ); if ( $K ) echo
reset ( $K -> fetch_row ());} exit ;} $qf = $th = null ; foreach ( $x
as $w ){ if ( $w [ " type " ] == " PRIMARY " ){ $qf = array_flip ( $w [ " columns " ]); $th = ( $N ? $qf : array ()); foreach ( $th
as $z => $X ){ if ( in_array ( idf_escape ( $z ), $N )) unset ( $th [ $z ]);} break ;}} if ( $ve &&! $qf ){ $qf = $th = array ( $ve => 0 ); $x [] = array ( " type " => " PRIMARY " , " columns " => array ( $ve ));} if ( $_POST &&! $m ){ $Oh = $Z ; if ( ! $_POST [ " all " ] && is_array ( $_POST [ " check " ])){ $Sa = array (); foreach ( $_POST [ " check " ] as $Pa ) $Sa [] = where_check ( $Pa , $o ); $Oh [] = " (( " . implode ( " ) OR ( " , $Sa ) . " )) " ;} $Oh = ( $Oh ? " \n WHERE " . implode ( " AND " , $Oh ) : " " ); if ( $_POST [ " export " ]){ cookie ( " adminer_import " , " output= " . urlencode ( $_POST [ " output " ]) . " &format= " . urlencode ( $_POST [ " format " ])); dump_headers ( $b ); $c -> dumpTable ( $b , " " ); $Nc = ( $N ? implode ( " , " , $N ) : " * " ) . convert_fields ( $e , $o , $N ) . " \n FROM " . table ( $b ); $Tc = ( $s && $ud ? " \n GROUP BY " . implode ( " , " , $s ) : " " ) . ( $Ie ? " \n ORDER BY " . implode ( " , " , $Ie ) : " " ); if ( ! is_array ( $_POST [ " check " ]) || $qf ) $I = " SELECT $Nc $Oh $Tc " ; else { $ph = array (); foreach ( $_POST [ " check " ] as $X ) $ph [] = " (SELECT " . limit ( $Nc , " \n WHERE " . ( $Z ? implode ( " AND " , $Z ) . " AND " : " " ) . where_check ( $X , $o ) . $Tc , 1 ) . " ) " ; $I = implode ( " UNION ALL " , $ph );} $c -> dumpData ( $b , " table " , $I ); exit ;} if ( ! $c -> selectEmailProcess ( $Z , $Jc )){ if ( $_POST [ " save " ] || $_POST [ " delete " ]){ $J = true ; $oa = 0 ; $P = array (); if ( ! $_POST [ " delete " ]){ foreach ( $e
as $E => $X ){ $X = process_input ( $o [ $E ]); if ( $X !== null && ( $_POST [ " clone " ] || $X !== false )) $P [ idf_escape ( $E )] = ( $X !== false ? $X : idf_escape ( $E ));}} if ( $_POST [ " delete " ] || $P ){ if ( $_POST [ " clone " ]) $I = " INTO " . table ( $b ) . " ( " . implode ( " , " , array_keys ( $P )) . " ) \n SELECT " . implode ( " , " , $P ) . " \n FROM " . table ( $b ); if ( $_POST [ " all " ] || ( $qf && is_array ( $_POST [ " check " ])) || $ud ){ $J = ( $_POST [ " delete " ] ? $l -> delete ( $b , $Oh ) : ( $_POST [ " clone " ] ? queries ( " INSERT $I $Oh " ) : $l -> update ( $b , $P , $Oh ))); $oa = $g -> affected_rows ;} else { foreach (( array ) $_POST [ " check " ] as $X ){ $Nh = " \n WHERE " . ( $Z ? implode ( " AND " , $Z ) . " AND " : " " ) . where_check ( $X , $o ); $J = ( $_POST [ " delete " ] ? $l -> delete ( $b , $Nh , 1 ) : ( $_POST [ " clone " ] ? queries ( " INSERT " . limit1 ( $b , $I , $Nh )) : $l -> update ( $b , $P , $Nh , 1 ))); if ( ! $J ) break ; $oa += $g -> affected_rows ;}}} $D = lang ( 237 , $oa ); if ( $_POST [ " clone " ] && $J && $oa == 1 ){ $Gd = last_id (); if ( $Gd ) $D = lang ( 163 , " $Gd " );} queries_redirect ( remove_from_uri ( $_POST [ " all " ] && $_POST [ " delete " ] ? " page " : " " ), $D , $J ); if ( ! $_POST [ " delete " ]){ edit_form ( $b , $o ,( array ) $_POST [ " fields " ], ! $_POST [ " clone " ]); page_footer (); exit ;}} elseif ( ! $_POST [ " import " ]){ if ( ! $_POST [ " val " ]) $m = lang ( 238 ); else { $J = true ; $oa = 0 ; foreach ( $_POST [ " val " ] as $rh => $L ){ $P = array (); foreach ( $L
as $z => $X ){ $z = bracket_escape ( $z , 1 ); $P [ idf_escape ( $z )] = ( preg_match ( '~char|text~' , $o [ $z ][ " type " ]) || $X != " " ? $c -> processInput ( $o [ $z ], $X ) : " NULL " );} $J = $l -> update ( $b , $P , " WHERE " . ( $Z ? implode ( " AND " , $Z ) . " AND " : " " ) . where_check ( $rh , $o ), ! $ud &&! $qf , " " ); if ( ! $J ) break ; $oa += $g -> affected_rows ;} queries_redirect ( remove_from_uri (), lang ( 237 , $oa ), $J );}} elseif ( ! is_string ( $Ac = get_file ( " csv_file " , true ))) $m = upload_error ( $Ac ); elseif ( ! preg_match ( '~~u' , $Ac )) $m = lang ( 239 ); else { cookie ( " adminer_import " , " output= " . urlencode ( $na [ " output " ]) . " &format= " . urlencode ( $_POST [ " separator " ])); $J = true ; $cb = array_keys ( $o ); preg_match_all ( '~(?>"[^"]*"|[^"\r\n]+)+~' , $Ac , $Td ); $oa = count ( $Td [ 0 ]); $l -> begin (); $cg = ( $_POST [ " separator " ] == " csv " ? " , " : ( $_POST [ " separator " ] == " tsv " ? " \t " : " ; " )); $M = array (); foreach ( $Td [ 0 ] as $z => $X ){ preg_match_all ( " ~((?> \" [^ \" ]* \" )+|[^ $cg ]*) $cg ~ " , $X . $cg , $Ud ); if ( ! $z &&! array_diff ( $Ud [ 1 ], $cb )){ $cb = $Ud [ 1 ]; $oa -- ;} else { $P = array (); foreach ( $Ud [ 1 ] as $t => $Ya ) $P [ idf_escape ( $cb [ $t ])] = ( $Ya == " " && $o [ $cb [ $t ]][ " null " ] ? " NULL " : q ( str_replace ( '""' , '"' , preg_replace ( '~^"|"$~' , '' , $Ya )))); $M [] = $P ;}} $J = ( ! $M || $l -> insertUpdate ( $b , $M , $qf )); if ( $J ) $J = $l -> commit (); queries_redirect ( remove_from_uri ( " page " ), lang ( 240 , $oa ), $J ); $l -> rollback ();}}} $Gg = $c -> tableName ( $R ); if ( is_ajax ()){ page_headers (); ob_start ();} else
page_header ( lang ( 43 ) . " : $Gg " , $m ); $P = null ; if ( isset ( $Of [ " insert " ]) ||! support ( " table " )){ $We = array (); foreach (( array ) $_GET [ " where " ] as $X ){ if ( isset ( $Jc [ $X [ " col " ]]) && count ( $Jc [ $X [ " col " ]]) == 1 && ( $X [ " op " ] == " = " || ( ! $X [ " op " ] && ( is_array ( $X [ " val " ]) ||! preg_match ( '~[_%]~' , $X [ " val " ]))))) $We [ " set " . " [ " . bracket_escape ( $X [ " col " ]) . " ] " ] = $X [ " val " ];} $P = $We ? " & " . http_build_query ( $We ) : " " ;} $c -> selectLinks ( $R , $P ); if ( ! $e && support ( " table " )) echo " <p class='error'> " . lang ( 241 ) . ( $o ? " . " : " : " . 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 ( $b ) . '">' , " </div> \n " ; $c -> selectColumnsPrint ( $N , $e ); $c -> selectSearchPrint ( $Z , $e , $x ); $c -> selectOrderPrint ( $Ie , $e , $x ); $c -> selectLimitPrint ( $_ ); $c -> selectLengthPrint ( $Sg ); $c -> selectActionPrint ( $x ); echo " </form> \n " ; $G = $_GET [ " page " ]; if ( $G == " last " ){ $Mc = $g -> result ( count_rows ( $b , $Z , $ud , $s )); $G = floor ( max ( 0 , $Mc - 1 ) / $_ );} $Xf = $N ; $Sc = $s ; if ( ! $Xf ){ $Xf [] = " * " ; $ob = convert_fields ( $e , $o , $N ); if ( $ob ) $Xf [] = substr ( $ob , 2 );} foreach ( $N
as $z => $X ){ $n = $o [ idf_unescape ( $X )]; if ( $n && ( $va = convert_field ( $n ))) $Xf [ $z ] = " $va AS $X " ;} if ( ! $ud && $th ){ foreach ( $th
as $z => $X ){ $Xf [] = idf_escape ( $z ); if ( $Sc ) $Sc [] = idf_escape ( $z );}} $J = $l -> select ( $b , $Xf , $Z , $Sc , $Ie , $_ , $G , true ); if ( ! $J ) echo " <p class='error'> " . error () . " \n " ; else { if ( $y == " mssql " && $G ) $J -> seek ( $_ * $G ); $dc = array (); echo " <form action='' method='post' enctype='multipart/form-data'> \n " ; $M = array (); while ( $L = $J -> fetch_assoc ()){ if ( $G && $y == " oracle " ) unset ( $L [ " RNUM " ]); $M [] = $L ;} if ( $_GET [ " page " ] != " last " && $_ != " " && $s && $ud && $y == " sql " ) $Mc = $g -> result ( " SELECT FOUND_ROWS() " ); if ( ! $M ) echo " <p class='message'> " . lang ( 13 ) . " \n " ; else { $Ca = $c -> backwardKeys ( $b , $Gg ); echo " <div class='scrollable'> " , " <table id='table' class='nowrap checkable odds'> " , script ( " mixin(qs('#table'), { onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown}); " ), " <thead><tr> " . ( ! $s && $N ? " " : " <td><input type='checkbox' id='all-page' class='jsonly'> " . script ( " qs('#all-page').onclick = partial(formCheck, /check/); " , " " ) . " <a href=' " . h ( $_GET [ " modify " ] ? remove_from_uri ( " modify " ) : $_SERVER [ " REQUEST_URI " ] . " &modify=1 " ) . " '> " . lang ( 242 ) . " </a> " ); $le = array (); $Oc = array (); reset ( $N ); $Bf = 1 ; foreach ( $M [ 0 ] as $z => $X ){ if ( ! isset ( $th [ $z ])){ $X = $_GET [ " columns " ][ key ( $N )]; $n = $o [ $N ? ( $X ? $X [ " col " ] : current ( $N )) : $z ]; $E = ( $n ? $c -> fieldName ( $n , $Bf ) : ( $X [ " fun " ] ? " * " : h ( $z ))); if ( $E != " " ){ $Bf ++ ; $le [ $z ] = $E ; $d = idf_escape ( $z ); $fd = remove_from_uri ( '(order|desc)[^=]*|page' ) . '&order%5B0%5D=' . urlencode ( $z ); $Ib = " &desc%5B0%5D=1 " ; echo " <th id='th[ " . h ( bracket_escape ( $z )) . " ]'> " . script ( " mixin(qsl('th'), { onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')}); " , " " ), '<a href="' . h ( $fd . ( $Ie [ 0 ] == $d || $Ie [ 0 ] == $z || ( ! $Ie && $ud && $s [ 0 ] == $d ) ? $Ib : '' )) . '">' ; echo
apply_sql_function ( $X [ " fun " ], $E ) . " </a> " ; echo " <span class='column hidden'> " , " <a href=' " . h ( $fd . $Ib ) . " ' title=' " . lang ( 49 ) . " ' class='text'> ↓</a> " ; if ( ! $X [ " fun " ]){ echo '<a href="#fieldset-search" title="' . lang ( 46 ) . '" class="text jsonly"> =</a>' , script ( " qsl('a').onclick = partial(selectSearch, ' " . js_escape ( $z ) . " '); " );} echo " </span> " ;} $Oc [ $z ] = $X [ " fun " ]; next ( $N );}} $Md = array (); if ( $_GET [ " modify " ]){ foreach ( $M
as $L ){ foreach ( $L
as $z => $X ) $Md [ $z ] = max ( $Md [ $z ], min ( 40 , strlen ( utf8_decode ( $X ))));}} echo ( $Ca ? " <th> " . lang ( 243 ) : " " ) . " </thead> \n " ; if ( is_ajax ()) ob_end_clean (); foreach ( $c -> rowDescriptions ( $M , $Jc ) as $ke => $L ){ $qh = unique_array ( $M [ $ke ], $x ); if ( ! $qh ){ $qh = array (); foreach ( $M [ $ke ] as $z => $X ){ if ( ! preg_match ( '~^(COUNT\((\*|(DISTINCT )?`(?:[^`]|``)+`)\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\(`(?:[^`]|``)+`\))$~' , $z )) $qh [ $z ] = $X ;}} $rh = " " ; foreach ( $qh
as $z => $X ){ if (( $y == " sql " || $y == " pgsql " ) && preg_match ( '~char|text|enum|set~' , $o [ $z ][ " type " ]) && strlen ( $X ) > 64 ){ $z = ( strpos ( $z , '(' ) ? $z : idf_escape ( $z )); $z = " MD5( " . ( $y != 'sql' || preg_match ( " ~^utf8~ " , $o [ $z ][ " collation " ]) ? $z : " CONVERT( $z USING " . charset ( $g ) . " ) " ) . " ) " ; $X = md5 ( $X );} $rh .= " & " . ( $X !== null ? urlencode ( " where[ " . bracket_escape ( $z ) . " ] " ) . " = " . urlencode ( $X === false ? " f " : $X ) : " null%5B%5D= " . urlencode ( $z ));} echo " <tr> " . ( ! $s && $N ? " " : " <td> " . checkbox ( " check[] " , substr ( $rh , 1 ), in_array ( substr ( $rh , 1 ),( array ) $_POST [ " check " ])) . ( $ud || information_schema ( DB ) ? " " : " <a href=' " . h ( ME . " edit= " . urlencode ( $b ) . $rh ) . " ' class='edit'> " . lang ( 244 ) . " </a> " )); foreach ( $L
as $z => $X ){ if ( isset ( $le [ $z ])){ $n = $o [ $z ]; $X = $l -> value ( $X , $n ); if ( $X != " " && ( ! isset ( $dc [ $z ]) || $dc [ $z ] != " " )) $dc [ $z ] = ( is_mail ( $X ) ? $le [ $z ] : " " ); $A = " " ; if ( preg_match ( '~blob|bytea|raw|file~' , $n [ " type " ]) && $X != " " ) $A = ME . 'download=' . urlencode ( $b ) . '&field=' . urlencode ( $z ) . $rh ; if ( ! $A && $X !== null ){ foreach (( array ) $Jc [ $z ] as $p ){ if ( count ( $Jc [ $z ]) == 1 || end ( $p [ " source " ]) == $z ){ $A = " " ; foreach ( $p [ " source " ] as $t => $ng ) $A .= where_link ( $t , $p [ " target " ][ $t ], $M [ $ke ][ $ng ]); $A = ( $p [ " db " ] != " " ? preg_replace ( '~([?&]db=)[^&]+~' , '\1' . urlencode ( $p [ " db " ]), ME ) : ME ) . 'select=' . urlencode ( $p [ " table " ]) . $A ; if ( $p [ " ns " ]) $A = preg_replace ( '~([?&]ns=)[^&]+~' , '\1' . urlencode ( $p [ " ns " ]), $A ); if ( count ( $p [ " source " ]) == 1 ) break ;}}} if ( $z == " COUNT(*) " ){ $A = ME . " select= " . urlencode ( $b ); $t = 0 ; foreach (( array ) $_GET [ " where " ] as $W ){ if ( ! array_key_exists ( $W [ " col " ], $qh )) $A .= where_link ( $t ++ , $W [ " col " ], $W [ " val " ], $W [ " op " ]);} foreach ( $qh
as $yd => $W ) $A .= where_link ( $t ++ , $yd , $W );} $X = select_value ( $X , $A , $n , $Sg ); $u = h ( " val[ $rh ][ " . bracket_escape ( $z ) . " ] " ); $Y = $_POST [ " val " ][ $rh ][ bracket_escape ( $z )]; $Yb =! is_array ( $L [ $z ]) && is_utf8 ( $X ) && $M [ $ke ][ $z ] == $L [ $z ] &&! $Oc [ $z ]; $Rg = preg_match ( '~text|lob~' , $n [ " type " ]); echo " <td id=' $u ' " ; if (( $_GET [ " modify " ] && $Yb ) || $Y !== null ){ $Wc = h ( $Y !== null ? $Y : $L [ $z ]); echo " > " . ( $Rg ? " <textarea name=' $u ' cols='30' rows=' " . ( substr_count ( $L [ $z ], " \n " ) + 1 ) . " '> $Wc </textarea> " : " <input name=' $u ' value=' $Wc ' size=' $Md[$z] '> " );} else { $Qd = strpos ( $X , " <i>…</i> " ); echo " data-text=' " . ( $Qd ? 2 : ( $Rg ? 1 : 0 )) . " ' " . ( $Yb ? " " : " data-warning=' " . h ( lang ( 245 )) . " ' " ) . " > $X </td> " ;}}} if ( $Ca ) echo " <td> " ; $c -> backwardKeysPrint ( $Ca , $M [ $ke ]); echo " </tr> \n " ;} if ( is_ajax ()) exit ; echo " </table> \n " , " </div> \n " ;} if ( ! is_ajax ()){ if ( $M || $G ){ $pc = true ; if ( $_GET [ " page " ] != " last " ){ if ( $_ == " " || ( count ( $M ) < $_ && ( $M ||! $G ))) $Mc = ( $G ? $G * $_ : 0 ) + count ( $M ); elseif ( $y != " sql " ||! $ud ){ $Mc = ( $ud ? false : found_rows ( $R , $Z )); if ( $Mc < max ( 1e4 , 2 * ( $G + 1 ) * $_ )) $Mc = reset ( slow_query ( count_rows ( $b , $Z , $ud , $s ))); else $pc = false ;}} $Ue = ( $_ != " " && ( $Mc === false || $Mc > $_ || $G )); if ( $Ue ){ echo (( $Mc === false ? count ( $M ) + 1 : $Mc - $G * $_ ) > $_ ? '<p><a href="' . h ( remove_from_uri ( " page " ) . " &page= " . ( $G + 1 )) . '" class="loadmore">' . lang ( 246 ) . '</a>' . script ( " qsl('a').onclick = partial(selectLoadMore, " . ( + $_ ) . " , ' " . lang ( 247 ) . " …'); " , " " ) : '' ), " \n " ;}} echo " <div class='footer'><div> \n " ; if ( $M || $G ){ if ( $Ue ){ $Wd = ( $Mc === false ? $G + ( count ( $M ) >= $_ ? 2 : 1 ) : floor (( $Mc - 1 ) / $_ )); echo " <fieldset> " ; if ( $y != " simpledb " ){ echo " <legend><a href=' " . h ( remove_from_uri ( " page " )) . " '> " . lang ( 248 ) . " </a></legend> " , script ( " qsl('a').onclick = function () { pageClick(this.href, +prompt(' " . lang ( 248 ) . " ', ' " . ( $G + 1 ) . " ')); return false; }; " ), pagination ( 0 , $G ) . ( $G > 5 ? " … " : " " ); for ( $t = max ( 1 , $G - 4 ); $t < min ( $Wd , $G + 5 ); $t ++ ) echo
pagination ( $t , $G ); if ( $Wd > 0 ){ echo ( $G + 5 < $Wd ? " … " : " " ),( $pc && $Mc !== false ? pagination ( $Wd , $G ) : " <a href=' " . h ( remove_from_uri ( " page " ) . " &page=last " ) . " ' title='~ $Wd '> " . lang ( 249 ) . " </a> " );}} else { echo " <legend> " . lang ( 248 ) . " </legend> " , pagination ( 0 , $G ) . ( $G > 1 ? " … " : " " ),( $G ? pagination ( $G , $G ) : " " ),( $Wd > $G ? pagination ( $G + 1 , $G ) . ( $Wd > $G + 1 ? " … " : " " ) : " " );} echo " </fieldset> \n " ;} echo " <fieldset> " , " <legend> " . lang ( 250 ) . " </legend> " ; $Ob = ( $pc ? " " : " ~ " ) . $Mc ; echo
checkbox ( " all " , 1 , 0 ,( $Mc !== false ? ( $pc ? " " : " ~ " ) . lang ( 145 , $Mc ) : " " ), " var checked = formChecked(this, /check/); selectCount('selected', this.checked ? ' $Ob ' : checked); selectCount('selected2', this.checked || !checked ? ' $Ob ' : checked); " ) . " \n " , " </fieldset> \n " ; if ( $c -> selectCommandPrint ()){ echo '<fieldset' ,( $_GET [ " modify " ] ? '' : ' class="jsonly"' ), '><legend>' , lang ( 242 ), ' </ legend >< div >
< input type = " submit " value = " ',lang(15),' " ',($_GET["modify"]?' ':' title = " '.lang(238).' " '),' >
</ div ></ fieldset >
< fieldset >< legend > ',lang(120),' < span id = " selected " ></ span ></ legend >< div >
< input type = " submit " name = " edit " value = " ',lang(11),' " >
< input type = " submit " name = " clone " value = " ',lang(234),' " >
< input type = " submit " name = " delete " value = " ',lang(19),' " > ',confirm(),' </ div ></ fieldset >
';}$Kc=$c->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($Kc[' sql ']);break;}}if($Kc){print_fieldset("export",lang(63)." <span id=' selected2 '></span>");$Se=$c->dumpOutput();echo($Se?html_select("output",$Se,$na["output"])." ":""),html_select("format",$Kc,$na["format"])," <input type=' submit ' name=' export ' value=' " .lang(63). " '>\n","</div></fieldset>\n";}$c->selectEmailPrint(array_filter($dc,' strlen '),$e);}echo"</div></div>\n";if($c->selectImportPrint()){echo"<div>","<a href=' #import'>".lang(62)."</a>",script("qsl('a').onclick = partial(toggle, 'import');",""),"<span id='import' class='hidden'>: ","<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$na["format"],1);echo" <input type='submit' name='import' value='".lang(62)."'>","</span>","</div>";}echo"<input type='hidden' name='token' value='$T'>\n","</form>\n",(!$s&&$N?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$vg=isset($_GET["status"]);page_header($vg?lang(112):lang(111));$Eh=($vg?show_status():show_variables());if(!$Eh)echo"<p class='message'>".lang(13)."\n";else{echo"<table>\n";foreach($Eh
as $z => $X ){ echo " <tr> " , " <th><code class='jush- " . $y . ( $vg ? " status " : " set " ) . " '> " . h ( $z ) . " </code> " , " <td> " . h ( $X );} echo " </table> \n " ;}} elseif ( isset ( $_GET [ " script " ])){ header ( " Content-Type: text/javascript; charset=utf-8 " ); if ( $_GET [ " script " ] == " db " ){ $Dg = array ( " Data_length " => 0 , " Index_length " => 0 , " Data_free " => 0 ); foreach ( table_status () as $E => $R ){ json_row ( " Comment- $E " , h ( $R [ " Comment " ])); if ( ! is_view ( $R )){ foreach ( array ( " Engine " , " Collation " ) as $z ) json_row ( " $z - $E " , h ( $R [ $z ])); foreach ( $Dg + array ( " Auto_increment " => 0 , " Rows " => 0 ) as $z => $X ){ if ( $R [ $z ] != " " ){ $X = format_number ( $R [ $z ]); json_row ( " $z - $E " ,( $z == " Rows " && $X && $R [ " Engine " ] == ( $y == " pgsql " ? " table " : " InnoDB " ) ? " ~ $X " : $X )); if ( isset ( $Dg [ $z ])) $Dg [ $z ] += ( $R [ " Engine " ] != " InnoDB " || $z != " Data_free " ? $R [ $z ] : 0 );} elseif ( array_key_exists ( $z , $R )) json_row ( " $z - $E " );}}} foreach ( $Dg
as $z => $X ) json_row ( " sum- $z " , format_number ( $X )); json_row ( " " );} elseif ( $_GET [ " script " ] == " kill " ) $g -> query ( " KILL " . number ( $_POST [ " kill " ])); else { foreach ( count_tables ( $c -> databases ()) as $k => $X ){ json_row ( " tables- $k " , $X ); json_row ( " size- $k " , db_size ( $k ));} json_row ( " " );} exit ;} else { $Lg = array_merge (( array ) $_POST [ " tables " ],( array ) $_POST [ " views " ]); if ( $Lg &&! $m &&! $_POST [ " search " ]){ $J = true ; $D = " " ; if ( $y == " sql " && $_POST [ " tables " ] && count ( $_POST [ " tables " ]) > 1 && ( $_POST [ " drop " ] || $_POST [ " truncate " ] || $_POST [ " copy " ])) queries ( " SET foreign_key_checks = 0 " ); if ( $_POST [ " truncate " ]){ if ( $_POST [ " tables " ]) $J = truncate_tables ( $_POST [ " tables " ]); $D = lang ( 251 );} elseif ( $_POST [ " move " ]){ $J = move_tables (( array ) $_POST [ " tables " ],( array ) $_POST [ " views " ], $_POST [ " target " ]); $D = lang ( 252 );} elseif ( $_POST [ " copy " ]){ $J = copy_tables (( array ) $_POST [ " tables " ],( array ) $_POST [ " views " ], $_POST [ " target " ]); $D = lang ( 253 );} elseif ( $_POST [ " drop " ]){ if ( $_POST [ " views " ]) $J = drop_views ( $_POST [ " views " ]); if ( $J && $_POST [ " tables " ]) $J = drop_tables ( $_POST [ " tables " ]); $D = lang ( 254 );} elseif ( $y != " sql " ){ $J = ( $y == " sqlite " ? queries ( " VACUUM " ) : apply_queries ( " VACUUM " . ( $_POST [ " optimize " ] ? " " : " ANALYZE " ), $_POST [ " tables " ])); $D = lang ( 255 );} elseif ( ! $_POST [ " tables " ]) $D = lang ( 10 ); elseif ( $J = queries (( $_POST [ " optimize " ] ? " OPTIMIZE " : ( $_POST [ " check " ] ? " CHECK " : ( $_POST [ " repair " ] ? " REPAIR " : " ANALYZE " ))) . " TABLE " . implode ( " , " , array_map ( 'idf_escape' , $_POST [ " tables " ])))){ while ( $L = $J -> fetch_assoc ()) $D .= " <b> " . h ( $L [ " Table " ]) . " </b>: " . h ( $L [ " Msg_text " ]) . " <br> " ;} queries_redirect ( substr ( ME , 0 , - 1 ), $D , $J );} page_header (( $_GET [ " ns " ] == " " ? lang ( 27 ) . " : " . h ( DB ) : lang ( 191 ) . " : " . h ( $_GET [ " ns " ])), $m , true ); if ( $c -> homepage ()){ if ( $_GET [ " ns " ] !== " " ){ echo " <h3 id='tables-views'> " . lang ( 256 ) . " </h3> \n " ; $Kg = tables_list (); if ( ! $Kg ) echo " <p class='message'> " . lang ( 10 ) . " \n " ; else { echo " <form action='' method='post'> \n " ; if ( support ( " table " )){ echo " <fieldset><legend> " . lang ( 257 ) . " <span id='selected2'></span></legend><div> " , " <input type='search' name='query' value=' " . h ( $_POST [ " query " ]) . " '> " , script ( " qsl('input').onkeydown = partialArg(bodyKeydown, 'search'); " , " " ), " <input type='submit' name='search' value=' " . lang ( 46 ) . " '> \n " , " </div></fieldset> \n " ; if ( $_POST [ " search " ] && $_POST [ " query " ] != " " ){ $_GET [ " where " ][ 0 ][ " op " ] = $l -> convertOperator ( " LIKE %% " ); search_tables ();}} echo " <div class='scrollable'> \n " , " <table class='nowrap checkable odds'> \n " , script ( " mixin(qsl('table'), { onclick: tableClick, ondblclick: partialArg(tableClick, true)}); " ), '<thead><tr class="wrap">' , '<td><input id="check-all" type="checkbox" class="jsonly">' . script ( " qs('#check-all').onclick = partial(formCheck, /^(tables|views) \ [/); " , " " ), '<th>' . lang ( 124 ), '<td>' . lang ( 258 ) . doc_link ( array ( 'sql' => 'storage-engines.html' )), '<td>' . lang ( 116 ) . doc_link ( array ( 'sql' => 'charset-charsets.html' , 'mariadb' => 'supported-character-sets-and-collations/' )), '<td>' . lang ( 259 ) . doc_link ( array ( 'sql' => 'show-table-status.html' ,)), '<td>' . lang ( 260 ) . doc_link ( array ( 'sql' => 'show-table-status.html' ,)), '<td>' . lang ( 261 ) . doc_link ( array ( 'sql' => 'show-table-status.html' )), '<td>' . lang ( 41 ) . doc_link ( array ( 'sql' => 'example-auto-increment.html' , 'mariadb' => 'auto_increment/' )), '<td>' . lang ( 262 ) . doc_link ( array ( 'sql' => 'show-table-status.html' ,)),( support ( " comment " ) ? '<td>' . lang ( 40 ) . doc_link ( array ( 'sql' => 'show-table-status.html' ,)) : '' ), " </thead> \n " ; $S = 0 ; foreach ( $Kg
as $E => $U ){ $Hh = ( $U !== null &&! preg_match ( '~table|sequence~i' , $U )); $u = h ( " Table- " . $E ); echo '<tr><td>' . checkbox (( $Hh ? " views[] " : " tables[] " ), $E , in_array ( $E , $Lg , true ), " " , " " , " " , $u ), '<th>' . ( support ( " table " ) || support ( " indexes " ) ? " <a href=' " . h ( ME ) . " table= " . urlencode ( $E ) . " ' title=' " . lang ( 32 ) . " ' id=' $u '> " . h ( $E ) . '</a>' : h ( $E )); if ( $Hh ){ echo '<td colspan="6"><a href="' . h ( ME ) . " view= " . urlencode ( $E ) . '" title="' . lang ( 33 ) . '">' . ( preg_match ( '~materialized~i' , $U ) ? lang ( 122 ) : lang ( 123 )) . '</a>' , '<td align="right"><a href="' . h ( ME ) . " select= " . urlencode ( $E ) . '" title="' . lang ( 31 ) . '">?</a>' ;} else { foreach ( array ( " Engine " => array (), " Collation " => array (), " Data_length " => array ( " create " , lang ( 34 )), " Index_length " => array ( " indexes " , lang ( 126 )), " Data_free " => array ( " edit " , lang ( 35 )), " Auto_increment " => array ( " auto_increment=1&create " , lang ( 34 )), " Rows " => array ( " select " , lang ( 31 )),) as $z => $A ){ $u = " id=' $z - " . h ( $E ) . " ' " ; echo ( $A ? " <td align='right'> " . ( support ( " table " ) || $z == " Rows " || ( support ( " indexes " ) && $z != " Data_length " ) ? " <a href=' " . h ( ME . " $A[0] = " ) . urlencode ( $E ) . " ' $u title=' $A[1] '>?</a> " : " <span $u >?</span> " ) : " <td id=' $z - " . h ( $E ) . " '> " );} $S ++ ;} echo ( support ( " comment " ) ? " <td id='Comment- " . h ( $E ) . " '> " : " " ), " \n " ;} echo " <tr><td><th> " . lang ( 235 , count ( $Kg )), " <td> " . h ( $y == " sql " ? $g -> result ( " SELECT @@default_storage_engine " ) : " " ), " <td> " . h ( db_collation ( DB , collations ())); foreach ( array ( " Data_length " , " Index_length " , " Data_free " ) as $z ) echo " <td align='right' id='sum- $z '> " ; echo " \n " , " </table> \n " , " </div> \n " ; if ( ! information_schema ( DB )){ echo " <div class='footer'><div> \n " ; $Ch = " <input type='submit' value=' " . lang ( 263 ) . " '> " . on_help ( " 'VACUUM' " ); $Fe = " <input type='submit' name='optimize' value=' " . lang ( 264 ) . " '> " . on_help ( $y == " sql " ? " 'OPTIMIZE TABLE' " : " 'VACUUM OPTIMIZE' " ); echo " <fieldset><legend> " . lang ( 120 ) . " <span id='selected'></span></legend><div> " . ( $y == " sqlite " ? $Ch : ( $y == " pgsql " ? $Ch . $Fe : ( $y == " sql " ? " <input type='submit' value=' " . lang ( 265 ) . " '> " . on_help ( " 'ANALYZE TABLE' " ) . $Fe . " <input type='submit' name='check' value=' " . lang ( 266 ) . " '> " . on_help ( " 'CHECK TABLE' " ) . " <input type='submit' name='repair' value=' " . lang ( 267 ) . " '> " . on_help ( " 'REPAIR TABLE' " ) : " " ))) . " <input type='submit' name='truncate' value=' " . lang ( 268 ) . " '> " . on_help ( $y == " sqlite " ? " 'DELETE' " : " 'TRUNCATE " . ( $y == " pgsql " ? " ' " : " TABLE' " )) . confirm () . " <input type='submit' name='drop' value=' " . lang ( 121 ) . " '> " . on_help ( " 'DROP TABLE' " ) . confirm () . " \n " ; $j = ( support ( " scheme " ) ? $c -> schemas () : $c -> databases ()); if ( count ( $j ) != 1 && $y != " sqlite " ){ $k = ( isset ( $_POST [ " target " ]) ? $_POST [ " target " ] : ( support ( " scheme " ) ? $_GET [ " ns " ] : DB )); echo " <p> " . lang ( 269 ) . " : " ,( $j ? html_select ( " target " , $j , $k ) : '<input name="target" value="' . h ( $k ) . '" autocapitalize="off">' ), " <input type='submit' name='move' value=' " . lang ( 270 ) . " '> " ,( support ( " copy " ) ? " <input type='submit' name='copy' value=' " . lang ( 271 ) . " '> " . checkbox ( " overwrite " , 1 , $_POST [ " overwrite " ], lang ( 272 )) : " " ), " \n " ;} echo " <input type='hidden' name='all' value=''> " ; echo
script ( " qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^(tables|views) \ [/)); " . ( support ( " table " ) ? " selectCount('selected2', formChecked(this, /^tables \ [/) || $S ); " : " " ) . " } " ), " <input type='hidden' name='token' value=' $T '> \n " , " </div></fieldset> \n " , " </div></div> \n " ;} echo " </form> \n " , script ( " tableCheck(); " );} echo '<p class="links"><a href="' . h ( ME ) . 'create=">' . lang ( 64 ) . " </a> \n " ,( support ( " view " ) ? '<a href="' . h ( ME ) . 'view=">' . lang ( 197 ) . " </a> \n " : " " ); if ( support ( " routine " )){ echo " <h3 id='routines'> " . lang ( 138 ) . " </h3> \n " ; $Sf = routines (); if ( $Sf ){ echo " <table class='odds'> \n " , '<thead><tr><th>' . lang ( 178 ) . '<td>' . lang ( 39 ) . '<td>' . lang ( 214 ) . " <td></thead> \n " ; foreach ( $Sf
as $L ){ $E = ( $L [ " SPECIFIC_NAME " ] == $L [ " ROUTINE_NAME " ] ? " " : " &name= " . urlencode ( $L [ " ROUTINE_NAME " ])); echo '<tr>' , '<th><a href="' . h ( ME . ( $L [ " ROUTINE_TYPE " ] != " PROCEDURE " ? 'callf=' : 'call=' ) . urlencode ( $L [ " SPECIFIC_NAME " ]) . $E ) . '">' . h ( $L [ " ROUTINE_NAME " ]) . '</a>' , '<td>' . h ( $L [ " ROUTINE_TYPE " ]), '<td>' . h ( $L [ " DTD_IDENTIFIER " ]), '<td><a href="' . h ( ME . ( $L [ " ROUTINE_TYPE " ] != " PROCEDURE " ? 'function=' : 'procedure=' ) . urlencode ( $L [ " SPECIFIC_NAME " ]) . $E ) . '">' . lang ( 129 ) . " </a> " ;} echo " </table> \n " ;} echo '<p class="links">' . ( support ( " procedure " ) ? '<a href="' . h ( ME ) . 'procedure=">' . lang ( 213 ) . '</a>' : '' ) . '<a href="' . h ( ME ) . 'function=">' . lang ( 212 ) . " </a> \n " ;} if ( support ( " event " )){ echo " <h3 id='events'> " . lang ( 139 ) . " </h3> \n " ; $M = get_rows ( " SHOW EVENTS " ); if ( $M ){ echo " <table> \n " , " <thead><tr><th> " . lang ( 178 ) . " <td> " . lang ( 273 ) . " <td> " . lang ( 203 ) . " <td> " . lang ( 204 ) . " <td></thead> \n " ; foreach ( $M
as $L ){ echo " <tr> " , " <th> " . h ( $L [ " Name " ]), " <td> " . ( $L [ " Execute at " ] ? lang ( 274 ) . " <td> " . $L [ " Execute at " ] : lang ( 205 ) . " " . $L [ " Interval value " ] . " " . $L [ " Interval field " ] . " <td> $L[Starts] " ), " <td> $L[Ends] " , '<td><a href="' . h ( ME ) . 'event=' . urlencode ( $L [ " Name " ]) . '">' . lang ( 129 ) . '</a>' ;} echo " </table> \n " ; $nc = $g -> result ( " SELECT @@event_scheduler " ); if ( $nc && $nc != " ON " ) echo " <p class='error'><code class='jush-sqlset'>event_scheduler</code>: " . h ( $nc ) . " \n " ;} echo '<p class="links"><a href="' . h ( ME ) . 'event=">' . lang ( 202 ) . " </a> \n " ;} if ( $Kg ) echo
script ( " ajaxSetHtml(' " . js_escape ( ME ) . " script=db'); " );}}} page_footer ();