9 `'Cۗ889 xQ\0e4QʘlPVbT4 \\W/\n`  7\"hq4ZM6T\rr\\C{h7\rx67J2.39KH,!mƆo\$.[\r&#\$ X:\rܺ3b-8SLK.-ҥ\rH@ml:;J0LR2! A 2 m0eI-:U\r9MWL0GcJv2(F9`C1HRSd9%U1Sna|.ԁ`8:#C2*[o4Xx.k\">AO+,x\\5tцց`\\o%j]n\\h=zê2\$F[NYR[I7tҔ7(Wj02v};k2Var=(,\rj*B(R2CN\\9{a\0ŕVR4B/zn6(wssǴB[Mi#:#U=M-~h) pC9/,r=s#BvM t=@hs`kp.=S\"j& 5up#YY ~)s41 naV*TSq6\"[LgB\"|2Q:8ƨ՞\rV4aj!.&Ão%0F9\"\$Dȹ?' 2BAgakr'\$9\rؠ6`eϻ di2p\\\$>7\n\\,9 I+Ln]HHJ KLehA@ؒ @ڨdʽ*H10f!ܸ71HA`4?ZU w@(R(ϺT20RD`bqqihVj[!SX:\n0FL¢vjۦ9JfTx7z\\˛+R@ҏd^G\0.c `>N\\Fsgi\$ ߯%A˴TI@v.\0P+ cNEDKve9볮*uVZ`=~dDe}fӹ\05Ϭf:j`ME1ȯECA}):nUFYLf?e+.ZQZCxzԣ(`ˋ~A5[yJ1;}NSL )aS c9 2mt+bcRTw|7+9\\0SA g؟:T.'-bq29cP SHֹ#1gTQiּ]u(v`ث\r>1k~-_,0&C\$<0{g0ֲط%Bv2.sbvhdBwu=cCE@>");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo lzw_decompress("f:gCI\n:saPi2\nOgc e6Le7s)Ћ\rHGI3as'cDi6N2H8uFR#r7#v}@`Qo5aI,2O'8R-q:PS(a*w(%p-C \" XS`\\F֬h83`X:O,) 898c<*2c9>HzOjB'B5,Pb5453@:N+ijJڊ\\ Ƈ@> 4Xr(Qr R١ du=tA8A{c\\)|ׁC4\n6W7(V4l6 9\rvˎa&:CK!-p:\r\0VMQ#K@\0.ـVywE\"f|jbgټF>ċ B HnݺZB B\$F0=kC-9CO9^Z3\rr70uwMgŰv2qIph5cPyDž.[hV'-YTݛ:vO&&6Zλ rnBco 0Mxz]ԌՍ!vdz/sC푦=d9KeVXs:pш8rA0&i)֤R\$Y_V4z;ia4lI,&t58I#_sFû`\niE<' Jy0@40a5>3̺@ĕ0Dk2uOB [42dV'EwAL[iSER[\rߐx<\\+ xxp\0 ;ApCV YR&3vy6'y)xj@rIzhBpIfņJZr<\"\$T^H,3搐P蜐8f,2 pNs|NUsCMt_na,BVbp4\$w#5%8t ӝmP3nϤh6IlNrQ eE2Lf'd*\":YM#ELzh\0%SDH1!S&[5 3%({^<(H6X+\"hW<_tz9Zuhf^ȋ=h:+Bq P&Š pba\naV2W& Z\0naݭdX8Zv>Ъb\nCSJrZW%`[/hR{\$-e BGLzNBp(@ݰs(fdGbS557i?PZt\nz>`]x0=JcrRByY]c_#S-/\0\nl a12@W\nA#a,1d0%ad5|EkBOK+̪P~60e5!2@ø(vdbq.@adRCe)X:#cYZ.|cZ4>/&PV 2wHB5WBp \nCsnC!M0Or/h2BdUs䖃\"XK>}@@Ч 4ޥ7D\0C'oG\"ovoMvHy%\$Fv\nUzBi)ݺmQ!\"\n;\0M*C\rOjvFDO /(˻y;g/}t9lB[i02AnpK &ݸ\n!o{ =a*gE\\1M~{7._ Akb >'y *nnVJH\"P\$F*xeϨ! \0 p DF# 1'b 8eLDi\n,N+*fؙOhk0&;/Hh,!| # //CB%L̰\$bE p𿊾 \r\"dϞIj(hOfvyF\0/CNjxoI/dFF\0>>rqT,UF EĄF\n- Î*#p6`'rzХ\nn'|t\r Jf)tPS. =&'2*Ø)''R*L~`\rRxX\r`.\0 %*+J'\\I\r @10S %22f t\0\\#\\6 \rDo3SP U5\\ c :>E3k\nUBSFN/\"Cb8NA)ƈ\\'fQ.cF2\\e XO3LP,KPMXԐ|5K%gzf3U< \0`#cr0(J\rfj՞Hhh5k܇#: / L)Ү\n޴ÈeB (82@oVooW\00067BparBIs4pB(EtE?8?@2D@P `^4 |8&879i8);Ԁ#\0:Dmː\"ؕr mJlm\$HJF PL^@Ծu_-H.2&\$d벞Sd0X? \n4dcBD|7\r\0 3 OO#K b`NKݽcMI(~EPi \n@;@\nXTӟ\0-/Bx 4d# Jq>Ly\0~D%Љ=VCp㝾}.`X_~?jb@9\nM S `\"P߯ qmV\r \0e;bqEj3>ZҌ@%g]sܚ!7q\$Qg.A9*}z'@G_ \"y c;yZ \n@q,{ӻq\$ qF<@ĵf@2 L4y09B`I1f.]:Ā\"A+`B?H8D_!%p!EVUl ]p\n//}B:6:(e#J\$G8`Fc80BPa|\"ȿ4P^fH(|^8X\$@m\nd|r6%\r3wr3):ʆr(1|>rq y#JP @m!aH! yF#!mqܑfhd+K(-xXX1*PI9Y0~Sp*3\" \0GY#nCBO@8c\rN%SaW*N- AE GLG^,E[*ʀk|P8*q\r.L3|Є51DZV\nJ\\l] 4Dd.l܉yǁpv\0\n)'9)/ɣ:9l ! pguQ)`)\"gJy3y*O\r\\y@H?C`@^(,BӑgUsW(&SSZEhP8\ngL4 ϦC綖'^_&@D\0Iğ,K0qVb0amM 3iw :LPQJ{'8,tQ,WekW,b6\"0) S:t*h~ 8\\ZT {gS7T!, F @[BT:T\0-t'Sq< |iU˜!3і\$,@sU^2he\"'. .UUr%p\"Yˀ̒}]i\\nTl+Umla[l6F>Z>QC&i)Zd[q_] -NZ&\"8InjȲ0F`al@ )8Q \"|m`@APlYiqьVahs/ZBa8N{0ˑn݁lA+Q>`tt! ťp:(NH/C Hۗ8FNvՒbhx\0< )Nd Դ 'C{ n5YKg`\\,yT0;ԆWP=@O@`C 4N$W){unset($ue[$x][$Oc]);if(is_array($W)){$ue[$x][stripslashes($Oc)]=$W;$ue[]=&$ue[$x][stripslashes($Oc)];}else$ue[$x][stripslashes($Oc)]=($gc?$W:stripslashes($W));}}}}function bracket_escape($Ac,$ya=false){static$If=array(':'=>':1',']'=>':2','['=>':3');return strtr($Ac,($ya?array_flip($If):$If));}function h($P){return htmlspecialchars(str_replace("\0","",$P),ENT_QUOTES);}function nbsp($P){return(trim($P)!=""?h($P):" ");}function nl_br($P){return str_replace("\n","
",$P);}function checkbox($D,$Y,$Ka,$Sc="",$Id="",$Nc=false){static$s=0;$s++;$J="";return($Sc!=""?"":$J);}function optionlist($Ld,$Ve=null,$bg=false){$J="";foreach($Ld as$Oc=>$W){$Md=array($Oc=>$W);if(is_array($W)){$J.='';$Md=$W;}foreach($Md as$x=>$X)$J.=''.h($X);if(is_array($W))$J.='';}return$J;}function html_select($D,$Ld,$Y="",$Hd=true){if($Hd)return"";$J="";foreach($Ld as$x=>$X)$J.="";return$J;}function confirm($eb=""){return" onclick=\"return confirm('".'Are you sure?'.($eb?" (' + $eb + ')":"")."');\"";}function print_fieldset($s,$Zc,$hg=false,$Id=""){echo"
$Zc
\n";}function selectSearchPrint($Z,$e,$u){print_fieldset("search",'Search',$Z);foreach($u as$r=>$t){if($t["type"]=="FULLTEXT"){echo"(".implode(", ",array_map('h',$t["columns"])).") AGAINST"," ",checkbox("boolean[$r]",1,isset($_GET["boolean"][$r]),"BOOL"),"
\n";}}$_GET["where"]=(array)$_GET["where"];reset($_GET["where"]);$Ia="this.nextSibling.onchange();";for($r=0;$r<=count($_GET["where"]);$r++){list(,$X)=each($_GET["where"]);if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators))){echo"
",html_select("where[$r][op]",$this->operators,$X["op"],$Ia),"
\n";}}echo"\n";}function selectOrderPrint($Nd,$e,$u){print_fieldset("sort",'Sort',$Nd);$r=0;foreach((array)$_GET["order"]as$x=>$X){if(isset($e[$X])){echo"
",checkbox("desc[$r]",1,isset($_GET["desc"][$x]),'descending')."
\n";$r++;}}echo"
","
\n";echo"\n";}function selectLimitPrint($y){echo"
".'Limit'."
";echo"","
\n";}function selectLengthPrint($_f){if($_f!==null){echo"
".'Text length'."
","","
\n";}}function selectActionPrint($u){echo"
".'Action'."
",""," ","\n","
\n";}function selectCommandPrint(){return!information_schema(DB);}function selectImportPrint(){return!information_schema(DB);}function selectEmailPrint($Ib,$e){}function selectColumnsProcess($e,$u){global$p,$uc;$M=array();$sc=array();foreach((array)$_GET["columns"]as$x=>$X){if($X["fun"]=="count"||(isset($e[$X["col"]])&&(!$X["fun"]||in_array($X["fun"],$p)||in_array($X["fun"],$uc)))){$M[$x]=apply_sql_function($X["fun"],(isset($e[$X["col"]])?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$uc))$sc[]=$M[$x];}}return array($M,$sc);}function selectSearchProcess($l,$u){global$w;$J=array();foreach($u as$r=>$t){if($t["type"]=="FULLTEXT"&&$_GET["fulltext"][$r]!="")$J[]="MATCH (".implode(", ",array_map('idf_escape',$t["columns"])).") AGAINST (".q($_GET["fulltext"][$r]).(isset($_GET["boolean"][$r])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$Za=" $X[op]";if(ereg('IN$',$X["op"])){$Cc=process_length($X["val"]);$Za.=" (".($Cc!=""?$Cc:"NULL").")";}elseif(!$X["op"])$Za.=$X["val"];elseif($X["op"]=="LIKE %%")$Za=" LIKE ".$this->processInput($l[$X["col"]],"%$X[val]%");elseif(!ereg('NULL$',$X["op"]))$Za.=" ".$this->processInput($l[$X["col"]],$X["val"]);if($X["col"]!="")$J[]=idf_escape($X["col"]).$Za;else{$Sa=array();foreach($l as$D=>$k){$Lc=ereg('char|text|enum|set',$k["type"]);if((is_numeric($X["val"])||!ereg('int|float|double|decimal|bit',$k["type"]))&&(!ereg("[\x80-\xFF]",$X["val"])||$Lc)){$D=idf_escape($D);$Sa[]=($w=="sql"&&$Lc&&!ereg('^utf8',$k["collation"])?"CONVERT($D USING utf8)":$D);}}$J[]=($Sa?"(".implode("$Za OR ",$Sa)."$Za)":"0");}}}return$J;}function selectOrderProcess($l,$u){$J=array();foreach((array)$_GET["order"]as$x=>$X){if(isset($l[$X])||preg_match('~^((COUNT\\(DISTINCT |[A-Z0-9_]+\\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\\)|COUNT\\(\\*\\))$~',$X))$J[]=(isset($l[$X])?idf_escape($X):$X).(isset($_GET["desc"][$x])?" DESC":"");}return$J;}function selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"30");}function selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function selectEmailProcess($Z,$kc){return false;}function selectQueryBuild($M,$Z,$sc,$Nd,$y,$E){return"";}function messageQuery($H){global$w;static$eb=0;restart_session();$s="sql-".($eb++);$wc=&get_session("queries");if(strlen($H)>1e6)$H=ereg_replace('[\x80-\xFF]+$','',substr($H,0,1e6))."\n...";$wc[$_GET["db"]][]=array($H,time());return" ".@date("H:i:s")." ".'SQL command'."';}function editFunctions($k){global$Eb;$J=($k["null"]?"NULL/":"");foreach($Eb as$x=>$p){if(!$x||(!isset($_GET["call"])&&(isset($_GET["select"])||where($_GET)))){foreach($p as$F=>$X){if(!$F||ereg($F,$k["type"]))$J.="/$X";}if($x&&!ereg('set|blob|bytea|raw|file',$k["type"]))$J.="/=";}}return explode("/",$J);}function editInput($R,$k,$va,$Y){if($k["type"]=="enum")return(isset($_GET["select"])?" ":"").($k["null"]?" ":"").enum_input("radio",$va,$k,$Y,0);return"";}function processInput($k,$Y,$o=""){if($o=="=")return$Y;$D=$k["field"];$J=($k["type"]=="bit"&&ereg("^([0-9]+|b'[0-1]+')\$",$Y)?$Y:q($Y));if(ereg('^(now|getdate|uuid)$',$o))$J="$o()";elseif(ereg('^current_(date|timestamp)$',$o))$J=$o;elseif(ereg('^([+-]|\\|\\|)$',$o))$J=idf_escape($D)." $o $J";elseif(ereg('^[+-] interval$',$o))$J=idf_escape($D)." $o ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+$~i",$Y)?$Y:$J);elseif(ereg('^(addtime|subtime|concat)$',$o))$J="$o(".idf_escape($D).", $J)";elseif(ereg('^(md5|sha1|password|encrypt)$',$o))$J="$o($J)";return unconvert_field($k,$J);}function dumpOutput(){$J=array('text'=>'open','file'=>'save');if(function_exists('gzencode'))$J['gz']='gzip';if(function_exists('bzcompress'))$J['bz2']='bzip2';return$J;}function dumpFormat(){return array('sql'=>'SQL','csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function dumpTable($R,$Q,$Mc=false){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($Q)dump_csv(array_keys(fields($R)));}elseif($Q){$fb=create_sql($R,$_POST["auto_increment"]);if($fb){if($Q=="DROP+CREATE")echo"DROP ".($Mc?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($Mc)$fb=remove_definer($fb);echo($Q!="CREATE+ALTER"?$fb:($Mc?substr_replace($fb," OR REPLACE",6,0):substr_replace($fb," IF NOT EXISTS",12,0))).";\n\n";}if($Q=="CREATE+ALTER"&&!$Mc){$H="SELECT COLUMN_NAME, COLUMN_DEFAULT, IS_NULLABLE, COLLATION_NAME, COLUMN_TYPE, EXTRA, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($R)." ORDER BY ORDINAL_POSITION";echo"DELIMITER ;; CREATE PROCEDURE adminer_alter (INOUT alter_command text) BEGIN DECLARE _column_name, _collation_name, after varchar(64) DEFAULT ''; DECLARE _column_type, _column_default text; DECLARE _is_nullable char(3); DECLARE _extra varchar(30); DECLARE _column_comment varchar(255); DECLARE done, set_after bool DEFAULT 0; DECLARE add_columns text DEFAULT '";$l=array();$oa="";foreach(get_rows($H)as$K){$qb=$K["COLUMN_DEFAULT"];$K["default"]=($qb!==null?q($qb):"NULL");$K["after"]=q($oa);$K["alter"]=escape_string(idf_escape($K["COLUMN_NAME"])." $K[COLUMN_TYPE]".($K["COLLATION_NAME"]?" COLLATE $K[COLLATION_NAME]":"").($qb!==null?" DEFAULT ".($qb=="CURRENT_TIMESTAMP"?$qb:$K["default"]):"").($K["IS_NULLABLE"]=="YES"?"":" NOT NULL").($K["EXTRA"]?" $K[EXTRA]":"").($K["COLUMN_COMMENT"]?" COMMENT ".q($K["COLUMN_COMMENT"]):"").($oa?" AFTER ".idf_escape($oa):" FIRST"));echo", ADD $K[alter]";$l[]=$K;$oa=$K["COLUMN_NAME"];}echo"'; DECLARE columns CURSOR FOR $H; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; SET @alter_table = ''; OPEN columns; REPEAT FETCH columns INTO _column_name, _column_default, _is_nullable, _collation_name, _column_type, _extra, _column_comment; IF NOT done THEN SET set_after = 1; CASE _column_name";foreach($l as$K)echo" WHEN ".q($K["COLUMN_NAME"])." THEN SET add_columns = REPLACE(add_columns, ', ADD $K[alter]', IF( _column_default <=> $K[default] AND _is_nullable = '$K[IS_NULLABLE]' AND _collation_name <=> ".(isset($K["COLLATION_NAME"])?"'$K[COLLATION_NAME]'":"NULL")." AND _column_type = ".q($K["COLUMN_TYPE"])." AND _extra = '$K[EXTRA]' AND _column_comment = ".q($K["COLUMN_COMMENT"])." AND after = $K[after] , '', ', MODIFY $K[alter]'));";echo" ELSE SET @alter_table = CONCAT(@alter_table, ', DROP ', _column_name); SET set_after = 0; END CASE; IF set_after THEN SET after = _column_name; END IF; END IF; UNTIL done END REPEAT; CLOSE columns; IF @alter_table != '' OR add_columns != '' THEN SET alter_command = CONCAT(alter_command, 'ALTER TABLE ".table($R)."', SUBSTR(CONCAT(add_columns, @alter_table), 2), ';\\n'); END IF; END;; DELIMITER ; CALL adminer_alter(@adminer_alter); DROP PROCEDURE adminer_alter; ";}}}function dumpData($R,$Q,$H){global$f,$w;$id=($w=="sqlite"?0:1048576);if($Q){if($_POST["format"]=="sql"&&$Q=="TRUNCATE+INSERT")echo truncate_sql($R).";\n";if($_POST["format"]=="sql")$l=fields($R);$I=$f->query($H,1);if($I){$Hc="";$Ga="";$Pc=array();$kf="";while($K=$I->fetch_row()){if(!$Pc){$dg=array();foreach($K as$X){$k=$I->fetch_field();$Pc[]=$k->name;$x=idf_escape($k->name);$dg[]="$x = VALUES($x)";}$kf=($Q=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$dg):"").";\n";}if($_POST["format"]!="sql"){if($Q=="table"){dump_csv($Pc);$Q="INSERT";}dump_csv($K);}else{if(!$Hc)$Hc="INSERT INTO ".table($R)." (".implode(", ",array_map('idf_escape',$Pc)).") VALUES";foreach($K as$x=>$X)$K[$x]=($X!==null?(ereg('int|float|double|decimal|bit',$l[$Pc[$x]]["type"])?$X:q($X)):"NULL");$Re=($id?"\n":" ")."(".implode(",\t",$K).")";if(!$Ga)$Ga=$Hc.$Re;elseif(strlen($Ga)+4+strlen($Re)+strlen($kf)<$id)$Ga.=",$Re";else{echo$Ga.$kf;$Ga=$Hc.$Re;}}}if($Ga)echo$Ga.$kf;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$f->error)."\n";}}function dumpFilename($_c){return friendly_url($_c!=""?$_c:(SERVER!=""?SERVER:"localhost"));}function dumpHeaders($_c,$td=false){$Wd=$_POST["output"];$ac=($_POST["format"]=="sql"?"sql":($td?"tar":"csv"));header("Content-Type: ".($Wd=="bz2"?"application/x-bzip":($Wd=="gz"?"application/x-gzip":($ac=="tar"?"application/x-tar":($ac=="sql"||$Wd!="file"?"text/plain":"text/csv")."; charset=utf-8"))));if($Wd=="bz2")ob_start('bzcompress',1e6);if($Wd=="gz")ob_start('gzencode',1e6);return$ac;}function homepage(){echo'

'.($_GET["ns"]==""?''.'Alter database'."\n":""),(support("scheme")?"".($_GET["ns"]!=""?'Alter schema':'Create schema')."\n":""),($_GET["ns"]!==""?''.'Database schema'."\n":""),(support("privileges")?"".'Privileges'."\n":"");return true;}function navigation($sd){global$ga,$T,$w,$zb;echo'

',$this->name(),' ',$ga,' ',(version_compare($ga,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'

';if($sd=="auth"){$hc=true;foreach((array)$_SESSION["pwds"]as$yb=>$Ze){foreach($Ze as$N=>$cg){foreach($cg as$V=>$ge){if($ge!==null){if($hc){echo"

\n";$hc=false;}$ob=$_SESSION["db"][$yb][$N][$V];foreach(($ob?array_keys($ob):array(""))as$i)echo"($zb[$yb]) ".h($V.($N!=""?"@$N":"").($i!=""?" - $i":""))."
\n";}}}}}else{echo'

';if(DB==""||!$sd){echo"".'SQL command'."\n";if(support("dump"))echo"".'Dump'."\n";}echo'

';$this->databasesPrint($sd);if($_GET["ns"]!==""&&!$sd&&DB!=""){echo'

".'Create new table'."\n";$uf=tables_list();if(!$uf)echo"

".'No tables.'."\n";else{$this->tablesPrint($uf);$dd=array();foreach($uf as$R=>$U)$dd[]=preg_quote($R,'/');echo"\n";}}}}function databasesPrint($sd){global$f;$h=$this->databases();echo'

';hidden_fields_get();echo($h?html_select("db",array(""=>"(".'database'.")")+$h,DB,"this.form.submit();"):''),' ';if($sd!="db"&&DB!=""&&$f->select_db(DB)){}echo(isset($_GET["sql"])?'':(isset($_GET["schema"])?'':(isset($_GET["dump"])?'':""))),"

\n";}function tablesPrint($uf){echo"

\n";foreach($uf as$R=>$U){echo'".'select'." ",'".$this->tableName(array("Name"=>$R))."
\n";}}}$b=(function_exists('adminer_object')?adminer_object():new Adminer);if($b->operators===null)$b->operators=$Kd;function page_header($Cf,$j="",$Fa=array(),$Df=""){global$ca,$b,$f,$zb;header("Content-Type: text/html; charset=utf-8");if($b->headers()){header("X-Frame-Options: deny");header("X-XSS-Protection: 0");}$Ef=$Cf.($Df!=""?": ".h($Df):"");$Ff=strip_tags($Ef.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo' ',$Ff,' ';if($b->head()){echo' ';if(file_exists("adminer.css")){echo' ';}}echo'

';if($Fa!==null){$z=substr(preg_replace('~(username|db|ns)=[^&]*&~','',ME),0,-1);echo'

$Ef

\n";restart_session();$Zf=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$qd=$_SESSION["messages"][$Zf];if($qd){echo"
".implode("
\n
",$qd)."
\n";unset($_SESSION["messages"][$Zf]);}$h=&get_session("dbs");if(DB!=""&&$h&&!in_array(DB,$h,true))$h=null;stop_session();if($j)echo"
$j
\n";define("PAGE_HEADER",1);}function page_footer($sd=""){global$b;echo'
';}function int32($C){while($C>=2147483648)$C-=4294967296;while($C<=-2147483649)$C+=4294967296;return(int)$C;}function long2str($W,$ig){$Re='';foreach($W as$X)$Re.=pack('V',$X);if($ig)return substr($Re,0,end($W));return$Re;}function str2long($Re,$ig){$W=array_values(unpack('V*',str_pad($Re,4*ceil(strlen($Re)/4),"\0")));if($ig)$W[]=strlen($Re);return$W;}function xxtea_mx($ng,$mg,$mf,$Oc){return int32((($ng>>5&0x7FFFFFF)^$mg<<2)+(($mg>>3&0x1FFFFFFF)^$ng<<4))^int32(($mf^$mg)+($Oc^$ng));}function encrypt_string($hf,$x){if($hf=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($hf,true);$C=count($W)-1;$ng=$W[$C];$mg=$W[0];$G=floor(6+52/($C+1));$mf=0;while($G-->0){$mf=int32($mf+0x9E3779B9);$Db=$mf>>2&3;for($Xd=0;$Xd<$C;$Xd++){$mg=$W[$Xd+1];$ud=xxtea_mx($ng,$mg,$mf,$x[$Xd&3^$Db]);$ng=int32($W[$Xd]+$ud);$W[$Xd]=$ng;}$mg=$W[0];$ud=xxtea_mx($ng,$mg,$mf,$x[$Xd&3^$Db]);$ng=int32($W[$C]+$ud);$W[$C]=$ng;}return long2str($W,false);}function decrypt_string($hf,$x){if($hf=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($hf,false);$C=count($W)-1;$ng=$W[$C];$mg=$W[0];$G=floor(6+52/($C+1));$mf=int32($G*0x9E3779B9);while($mf){$Db=$mf>>2&3;for($Xd=$C;$Xd>0;$Xd--){$ng=$W[$Xd-1];$ud=xxtea_mx($ng,$mg,$mf,$x[$Xd&3^$Db]);$mg=int32($W[$Xd]-$ud);$W[$Xd]=$mg;}$ng=$W[$C];$ud=xxtea_mx($ng,$mg,$mf,$x[$Xd&3^$Db]);$mg=int32($W[0]-$ud);$W[0]=$mg;$mf=int32($mf-0x9E3779B9);}return long2str($W,true);}$f='';$T=$_SESSION["token"];if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);$he=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($x)=explode(":",$X);$he[$x]=$X;}}$c=$_POST["auth"];if($c){session_regenerate_id();$_SESSION["pwds"][$c["driver"]][$c["server"]][$c["username"]]=$c["password"];$_SESSION["db"][$c["driver"]][$c["server"]][$c["username"]][$c["db"]]=true;if($c["permanent"]){$x=base64_encode($c["driver"])."-".base64_encode($c["server"])."-".base64_encode($c["username"])."-".base64_encode($c["db"]);$re=$b->permanentLogin();$he[$x]="$x:".base64_encode($re?encrypt_string($c["password"],$re):"");cookie("adminer_permanent",implode(" ",$he));}if(count($_POST)==1||DRIVER!=$c["driver"]||SERVER!=$c["server"]||$_GET["username"]!==$c["username"]||DB!=$c["db"])redirect(auth_url($c["driver"],$c["server"],$c["username"],$c["db"]));}elseif($_POST["logout"]){if($T&&$_POST["token"]!=$T){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}else{foreach(array("pwds","db","dbs","queries")as$x)set_session($x,null);unset_permanent();redirect(substr(preg_replace('~(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.');}}elseif($he&&!$_SESSION["pwds"]){session_regenerate_id();$re=$b->permanentLogin();foreach($he as$x=>$X){list(,$Ma)=explode(":",$X);list($yb,$N,$V,$i)=array_map('base64_decode',explode("-",$x));$_SESSION["pwds"][$yb][$N][$V]=decrypt_string(base64_decode($Ma),$re);$_SESSION["db"][$yb][$N][$V][$i]=true;}}function unset_permanent(){global$he;foreach($he as$x=>$X){list($yb,$N,$V)=array_map('base64_decode',explode("-",$x));if($yb==DRIVER&&$N==SERVER&&$i==$_GET["username"])unset($he[$x]);}cookie("adminer_permanent",implode(" ",$he));}function auth_error($Ub=null){global$f,$b,$T;$af=session_name();$j="";if(!$_COOKIE[$af]&&$_GET[$af]&&ini_bool("session.use_only_cookies"))$j='Session support must be enabled.';elseif(isset($_GET["username"])){if(($_COOKIE[$af]||$_GET[$af])&&!$T)$j='Session expired, please login again.';else{$ge=&get_session("pwds");if($ge!==null){$j=h($Ub?$Ub->getMessage():(is_string($f)?$f:'Invalid credentials.'));$ge=null;}unset_permanent();}}page_header('Login',$j,null);echo"
\n";$b->loginForm();echo"
";hidden_fields($_POST,array("auth"));echo"
\n","
\n";page_footer("auth");}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$me)),false);page_footer("auth");exit;}$f=connect();}if(is_string($f)||!$b->login($_GET["username"],get_session("pwds"))){auth_error();exit;}$T=$_SESSION["token"];if($c&&$_POST["token"])$_POST["token"]=$T;$j=($_POST?($_POST["token"]==$T?"":'Invalid CSRF token. Send the form again.'):($_SERVER["REQUEST_METHOD"]!="POST"?"":sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.','"post_max_size"')));if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false){session_cache_limiter("");session_write_close();}function connect_error(){global$b,$f,$T,$j,$zb;$h=array();if(DB!="")page_header('Database'.": ".h(DB),'Invalid database.',true);else{if($_POST["db"]&&!$j)queries_redirect(substr(ME,0,-1),'Databases have been dropped.',drop_databases($_POST["db"]));page_header('Select database',$j,false);echo"

".'Create new database'."\n";foreach(array('privileges'=>'Privileges','processlist'=>'Process list','variables'=>'Variables','status'=>'Status',)as$x=>$X){if(support($x))echo"$X\n";}echo"

".sprintf('%s version: %s through PHP extension %s',$zb[DRIVER],"$f->server_info","$f->extension")."\n","

".sprintf('Logged as: %s',"".h(logged_user())."")."\n";$De="".'Refresh'."\n";$h=$b->databases();if($h){$Ue=support("scheme");$d=collations();echo"

\n","\n","\n";foreach($h as$i){$Me=h(ME)."db=".urlencode($i);echo"
 ".'Database'."".'Collation'."".'Tables'."
".checkbox("db[]",$i,in_array($i,(array)$_POST["db"])),"".h($i)."","".nbsp(db_collation($i,$d))."","?","\n";}echo"
\n","\n","

\n","\n",$De,"

\n";}else echo"

$De";}page_footer("db");if($h)echo"\n";}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(!(DB!=""?$f->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;}function select($I,$g=null,$zc="",$Qd=array()){$dd=array();$u=array();$e=array();$Da=array();$Qf=array();$J=array();odd('');for($r=0;$K=$I->fetch_row();$r++){if(!$r){echo"\n","";for($v=0;$vfetch_field();$D=$k->name;$Pd=$k->orgtable;$Od=$k->orgname;$J[$k->table]=$Pd;if($zc)$dd[$v]=($D=="table"?"table=":($D=="possible_keys"?"indexes=":null));elseif($Pd!=""){if(!isset($u[$Pd])){$u[$Pd]=array();foreach(indexes($Pd,$g)as$t){if($t["type"]=="PRIMARY"){$u[$Pd]=array_flip($t["columns"]);break;}}$e[$Pd]=$u[$Pd];}if(isset($e[$Pd][$Od])){unset($e[$Pd][$Od]);$u[$Pd][$Od]=$v;$dd[$v]=$Pd;}}if($k->charsetnr==63)$Da[$v]=true;$Qf[$v]=$k->type;$D=h($D);echo"name!=$Od?" title='".h(($Pd!=""?"$Pd.":"").$Od)."'":"").">".($zc?"$D":$D);}echo"\n";}echo"";foreach($K as$x=>$X){if($X===null)$X="NULL";elseif($Da[$x]&&!is_utf8($X))$X="".lang(array('%d byte','%d bytes'),strlen($X))."";elseif(!strlen($X))$X=" ";else{$X=h($X);if($Qf[$x]==254)$X="$X";}if(isset($dd[$x])&&!$e[$dd[$x]]){if($zc){$R=$K[array_search("table=",$dd)];$z=$dd[$x].urlencode($Qd[$R]!=""?$Qd[$R]:$R);}else{$z="edit=".urlencode($dd[$x]);foreach($u[$dd[$x]]as$Pa=>$v)$z.="&where".urlencode("[".bracket_escape($Pa)."]")."=".urlencode($K[$v]);}$X="$X";}echo"
$X";}}echo($r?"
":"

".'No rows.')."\n";return$J;}function referencable_primary($We){$J=array();foreach(table_status()as$qf=>$R){if($qf!=$We&&fk_support($R)){foreach(fields($qf)as$k){if($k["primary"]){if($J[$qf]){unset($J[$qf]);break;}$J[$qf]=$k;}}}}return$J;}function textarea($D,$Y,$L=10,$Sa=80){echo"";}function format_time($ef,$Lb){return" (".sprintf('%.3f s',max(0,array_sum(explode(" ",$Lb))-array_sum(explode(" ",$ef)))).")";}function edit_type($x,$k,$d,$n=array()){global$if,$Qf,$Xf,$Gd;echo' ';echo"',($Xf?"':''),($n?" ":" ");}function process_length($ad){global$Ob;return(preg_match("~^\\s*(?:$Ob)(?:\\s*,\\s*(?:$Ob))*\\s*\$~",$ad)&&preg_match_all("~$Ob~",$ad,$gd)?implode(",",$gd[0]):preg_replace('~[^0-9,+-]~','',$ad));}function process_type($k,$Qa="COLLATE"){global$Xf;return" $k[type]".($k["length"]!=""?"(".process_length($k["length"]).")":"").(ereg('int|float|double|decimal',$k["type"])&&in_array($k["unsigned"],$Xf)?" $k[unsigned]":"").(ereg('char|text|enum|set',$k["type"])&&$k["collation"]?" $Qa ".q($k["collation"]):"");}function process_field($k,$Of){return array(idf_escape(trim($k["field"])),process_type($Of),($k["null"]?" NULL":" NOT NULL"),(isset($k["default"])?" DEFAULT ".(($k["type"]=="timestamp"&&eregi('^CURRENT_TIMESTAMP$',$k["default"]))||($k["type"]=="bit"&&ereg("^([0-9]+|b'[0-1]+')\$",$k["default"]))?$k["default"]:q($k["default"])):""),($k["on_update"]?" ON UPDATE $k[on_update]":""),(support("comment")&&$k["comment"]!=""?" COMMENT ".q($k["comment"]):""),($k["auto_increment"]?auto_increment():null),);}function type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$x=>$X){if(ereg("$x|$X",$U))return" class='$x'";}}function edit_fields($l,$d,$U="TABLE",$ra=0,$n=array(),$Xa=false){global$f,$Fc;echo' ';if($U=="PROCEDURE"){echo' ';}echo'',($U=="TABLE"?'Column name':'Parameter name'),'Type Length Options ';if($U=="TABLE"){echo'NULL AI Default values ',(support("comment")?"

".'Comment'.": ".h($Wa)."\n";if($l){echo"\n","\n";foreach($l as$k){echo"
".'Column'."".'Type'.(support("comment")?"".'Comment':"")."
".h($k["field"]),"".h($k["full_type"]).($k["null"]?" NULL":"").($k["auto_increment"]?" ".'Auto Increment'."":""),(isset($k["default"])?" [".h($k["default"])."]":""),(support("comment")?"".nbsp($k["comment"]):""),"\n";}echo"
\n";if(!is_view($S)){echo"

".'Indexes'."

\n";$u=indexes($a);if($u){echo"\n";foreach($u as$D=>$t){ksort($t["columns"]);$qe=array();foreach($t["columns"]as$x=>$X)$qe[]="".h($X)."".($t["lengths"][$x]?"(".$t["lengths"][$x].")":"");echo"
$t[type]".implode(", ",$qe)."\n";}echo"
\n";}echo'

'.'Alter indexes'."\n";if(fk_support($S)){echo"

".'Foreign keys'."

\n";$n=foreign_keys($a);if($n){echo"\n","\n";foreach($n as$D=>$m){echo"","
".'Source'."".'Target'."".'ON DELETE'."".'ON UPDATE'.($w!="sqlite"?" ":"")."
".implode(", ",array_map('h',$m["source"]))."","".($m["db"]!=""?"".h($m["db"]).".":"").($m["ns"]!=""?"".h($m["ns"]).".":"").h($m["table"])."","(".implode(", ",array_map('h',$m["target"])).")","".nbsp($m["on_delete"])."\n","".nbsp($m["on_update"])."\n",($w=="sqlite"?"":''.'Alter'.'');}echo"
\n";}if($w!="sqlite")echo'

'.'Add foreign key'."\n";}if(support("trigger")){echo"

".'Triggers'."

\n";$Nf=triggers($a);if($Nf){echo"\n";foreach($Nf as$x=>$X)echo"
$X[0]$X[1]".h($x)."".'Alter'."\n";echo"
\n";}echo'

'.'Add trigger'."\n";}}}}elseif(isset($_GET["schema"])){page_header('Database schema',"",array(),DB.($_GET["ns"]?".$_GET[ns]":""));$rf=array();$sf=array();$D="adminer_schema";$ea=($_GET["schema"]?$_GET["schema"]:$_COOKIE[($_COOKIE["$D-".DB]?"$D-".DB:$D)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$gd,PREG_SET_ORDER);foreach($gd as$r=>$A){$rf[$A[1]]=array($A[2],$A[3]);$sf[]="\n\t'".js_escape($A[1])."': [ $A[2], $A[3] ]";}$Gf=0;$Aa=-1;$Te=array();$Ce=array();$Yc=array();foreach(table_status()as$S){if(!isset($S["Engine"]))continue;$je=0;$Te[$S["Name"]]["fields"]=array();foreach(fields($S["Name"])as$D=>$k){$je+=1.25;$k["pos"]=$je;$Te[$S["Name"]]["fields"][$D]=$k;}$Te[$S["Name"]]["pos"]=($rf[$S["Name"]]?$rf[$S["Name"]]:array($Gf,0));foreach($b->foreignKeys($S["Name"])as$X){if(!$X["db"]){$Wc=$Aa;if($rf[$S["Name"]][1]||$rf[$X["table"]][1])$Wc=min(floatval($rf[$S["Name"]][1]),floatval($rf[$X["table"]][1]))-1;else$Aa-=.1;while($Yc[(string)$Wc])$Wc-=.0001;$Te[$S["Name"]]["references"][$X["table"]][(string)$Wc]=array($X["source"],$X["target"]);$Ce[$X["table"]][$S["Name"]][(string)$Wc]=$X["target"];$Yc[(string)$Wc]=true;}}$Gf=max($Gf,$Te[$S["Name"]]["pos"][0]+2.5+$je);}echo'

';foreach($Te as$D=>$R){echo"
",''.h($D)."";foreach($R["fields"]as$k){$X=''.h($k["field"]).'';echo"
".($k["primary"]?"$X":$X);}foreach((array)$R["references"]as$yf=>$Ee){foreach($Ee as$Wc=>$_e){$Xc=$Wc-$rf[$D][1];$r=0;foreach($_e[0]as$bf)echo"\n
";}}foreach((array)$Ce[$D]as$yf=>$Ee){foreach($Ee as$Wc=>$e){$Xc=$Wc-$rf[$D][1];$r=0;foreach($e as$xf)echo"\n
";}}echo"\n
\n";}foreach($Te as$D=>$R){foreach((array)$R["references"]as$yf=>$Ee){foreach($Ee as$Wc=>$_e){$rd=$Gf;$kd=-10;foreach($_e[0]as$x=>$bf){$ke=$R["pos"][0]+$R["fields"][$bf]["pos"];$le=$Te[$yf]["pos"][0]+$Te[$yf]["fields"][$_e[1][$x]]["pos"];$rd=min($rd,$ke,$le);$kd=max($kd,$ke,$le);}echo"
\n";}}}echo'

Permanent link ';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST){$db="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$x)$db.="&$x=".urlencode($_POST[$x]);cookie("adminer_export",substr($db,1));$ac=dump_headers(($a!=""?$a:DB),(DB==""||count((array)$_POST["tables"]+(array)$_POST["data"])>1));$Kc=($_POST["format"]=="sql");if($Kc)echo"-- Adminer $ga ".$zb[DRIVER]." dump ".($w!="sql"?"":"SET NAMES utf8; ".($_POST["data_style"]?"SET foreign_key_checks = 0; SET time_zone = ".q($f->result("SELECT @@time_zone"))."; SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; ":"")." ");$Q=$_POST["db_style"];$h=array(DB);if(DB==""){$h=$_POST["databases"];if(is_string($h))$h=explode("\n",rtrim(str_replace("\r","",$h),"\n"));}foreach((array)$h as$i){if($f->select_db($i)){if($Kc&&ereg('CREATE',$Q)&&($fb=$f->result("SHOW CREATE DATABASE ".idf_escape($i),1))){if($Q=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($i).";\n";echo($Q=="CREATE+ALTER"?preg_replace('~^CREATE DATABASE ~','\\0IF NOT EXISTS ',$fb):$fb).";\n";}if($Kc){if($Q)echo use_sql($i).";\n\n";if(in_array("CREATE+ALTER",array($Q,$_POST["table_style"])))echo"SET @adminer_alter = '';\n\n";$Vd="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$Ne){foreach(get_rows("SHOW $Ne STATUS WHERE Db = ".q($i),null,"-- ")as$K)$Vd.=($Q!='DROP+CREATE'?"DROP $Ne IF EXISTS ".idf_escape($K["Name"]).";;\n":"").remove_definer($f->result("SHOW CREATE $Ne ".idf_escape($K["Name"]),2)).";;\n\n";}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$K)$Vd.=($Q!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($K["Name"]).";;\n":"").remove_definer($f->result("SHOW CREATE EVENT ".idf_escape($K["Name"]),3)).";;\n\n";}if($Vd)echo"DELIMITER ;;\n\n$Vd"."DELIMITER ;\n\n";}if($_POST["table_style"]||$_POST["data_style"]){$gg=array();foreach(table_status()as$S){$R=(DB==""||in_array($S["Name"],(array)$_POST["tables"]));$kb=(DB==""||in_array($S["Name"],(array)$_POST["data"]));if($R||$kb){if(!is_view($S)){if($ac=="tar")ob_start();$b->dumpTable($S["Name"],($R?$_POST["table_style"]:""));if($kb)$b->dumpData($S["Name"],$_POST["data_style"],"SELECT * FROM ".table($S["Name"]));if($Kc&&$_POST["triggers"]&&$R&&($Nf=trigger_sql($S["Name"],$_POST["table_style"])))echo"\nDELIMITER ;;\n$Nf\nDELIMITER ;\n";if($ac=="tar")echo tar_file((DB!=""?"":"$i/")."$S[Name].csv",ob_get_clean());elseif($Kc)echo"\n";}elseif($Kc)$gg[]=$S["Name"];}}foreach($gg as$fg)$b->dumpTable($fg,$_POST["table_style"],true);if($ac=="tar")echo pack("x512");}if($Q=="CREATE+ALTER"&&$Kc){$H="SELECT TABLE_NAME, ENGINE, TABLE_COLLATION, TABLE_COMMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE()";echo"DELIMITER ;; CREATE PROCEDURE adminer_alter (INOUT alter_command text) BEGIN DECLARE _table_name, _engine, _table_collation varchar(64); DECLARE _table_comment varchar(64); DECLARE done bool DEFAULT 0; DECLARE tables CURSOR FOR $H; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; OPEN tables; REPEAT FETCH tables INTO _table_name, _engine, _table_collation, _table_comment; IF NOT done THEN CASE _table_name";foreach(get_rows($H)as$K){$Wa=q($K["ENGINE"]=="InnoDB"?preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$K["TABLE_COMMENT"]):$K["TABLE_COMMENT"]);echo" WHEN ".q($K["TABLE_NAME"])." THEN ".(isset($K["ENGINE"])?"IF _engine != '$K[ENGINE]' OR _table_collation != '$K[TABLE_COLLATION]' OR _table_comment != $Wa THEN ALTER TABLE ".idf_escape($K["TABLE_NAME"])." ENGINE=$K[ENGINE] COLLATE=$K[TABLE_COLLATION] COMMENT=$Wa; END IF":"BEGIN END").";";}echo" ELSE SET alter_command = CONCAT(alter_command, 'DROP TABLE `', REPLACE(_table_name, '`', '``'), '`;\\n'); END CASE; END IF; UNTIL done END REPEAT; CLOSE tables; END;; DELIMITER ; CALL adminer_alter(@adminer_alter); DROP PROCEDURE adminer_alter; ";}if(in_array("CREATE+ALTER",array($Q,$_POST["table_style"]))&&$Kc)echo"SELECT @adminer_alter;\n";}}if($Kc)echo"-- ".$f->result("SELECT NOW()")."\n";exit;}page_header('Export',"",($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),DB);echo'

';$nb=array('','USE','DROP+CREATE','CREATE');$tf=array('','DROP+CREATE','CREATE');$lb=array('','TRUNCATE+INSERT','INSERT');if($w=="sql"){$nb[]='CREATE+ALTER';$tf[]='CREATE+ALTER';$lb[]='INSERT+UPDATE';}parse_str($_COOKIE["adminer_export"],$K);if(!$K)$K=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($K["events"])){$K["routines"]=$K["events"]=($_GET["dump"]=="");$K["triggers"]=$K["table_style"];}echo"
".'Output'."".html_select("output",$b->dumpOutput(),$K["output"],0)."\n";echo"
".'Format'."".html_select("format",$b->dumpFormat(),$K["format"],0)."\n";echo($w=="sqlite"?"":"
".'Database'."".html_select('db_style',$nb,$K["db_style"]).(support("routine")?checkbox("routines",1,$K["routines"],'Routines'):"").(support("event")?checkbox("events",1,$K["events"],'Events'):"")),"
".'Tables'."".html_select('table_style',$tf,$K["table_style"]).checkbox("auto_increment",1,$K["auto_increment"],'Auto Increment').(support("trigger")?checkbox("triggers",1,$K["triggers"],'Triggers'):""),"
".'Data'."".html_select('data_style',$lb,$K["data_style"]),'

';$oe=array();if(DB!=""){$Ka=($a!=""?"":" checked");echo"","\n";$gg="";foreach(table_status()as$S){$D=$S["Name"];$ne=ereg_replace("_.*","",$D);$Ka=($a==""||$a==(substr($a,-1)=="%"?"$ne%":$D));$qe="\n";$h=$b->databases();if($h){foreach($h as$i){if(!information_schema($i)){$ne=ereg_replace("_.*","",$i);echo"
","","
".checkbox("tables[]",$D,$Ka,$D,"checkboxClick(event, this); formUncheck('check-tables');");if(is_view($S))$gg.="$qe\n";else echo"$qe\n";$oe[$ne]++;}echo$gg;}else{echo"
".checkbox("databases[]",$i,$a==""||$a=="$ne%",$i,"formUncheck('check-databases');")."\n";$oe[$ne]++;}}}else echo"
";}echo'

';$hc=true;foreach($oe as$x=>$X){if($x!=""&&$X>1){echo($hc?"

":" ")."".h($x)."";$hc=false;}}}elseif(isset($_GET["privileges"])){page_header('Privileges');$I=$f->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$q=$I;if(!$I)$I=$f->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");echo"

\n";hidden_fields_get();echo"\n",($q?"":"\n"),"\n","\n";while($K=$I->fetch_assoc())echo'
".'Username'."".'Server'." 
'.h($K["User"])."".h($K["Host"]).''.'Edit'."\n";if(!$q||DB!="")echo"\n";echo"
\n","

\n",'

'.'Create user'."";}elseif(isset($_GET["sql"])){if(!$j&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$xc=&get_session("queries");$wc=&$xc[DB];if(!$j&&$_POST["clear"]){$wc=array();redirect(remove_from_uri("history"));}page_header('SQL command',$j);if(!$j&&$_POST){$oc=false;$H=$_POST["query"];if($_POST["webfile"]){$oc=@fopen((file_exists("adminer.sql")?"adminer.sql":(file_exists("adminer.sql.gz")?"compress.zlib://adminer.sql.gz":"compress.bzip2://adminer.sql.bz2")),"rb");$H=($oc?fread($oc,1e6):false);}elseif($_FILES&&$_FILES["sql_file"]["error"]!=UPLOAD_ERR_NO_FILE)$H=get_file("sql_file",true);if(is_string($H)){if(function_exists('memory_get_usage'))@ini_set("memory_limit",max(ini_bytes("memory_limit"),2*strlen($H)+memory_get_usage()+8e6));if($H!=""&&strlen($H)<1e6){$G=$H.(ereg(";[ \t\r\n]*\$",$H)?"":";");if(!$wc||reset(end($wc))!=$G){restart_session();$wc[]=array($G,time());set_session("queries",$xc);stop_session();}}$cf="(?:\\s|/\\*.*\\*/|(?:#|-- )[^\n]*\n|--\n)";$rb=";";$Ad=0;$Kb=true;$g=connect();if(is_object($g)&&DB!="")$g->select_db(DB);$Va=0;$Qb=array();$cd=0;$ae='[\'"'.($w=="sql"?'`#':($w=="sqlite"?'`[':($w=="mssql"?'[':''))).']|/\\*|-- |$'.($w=="pgsql"?'|\\$[^$]*\\$':'');$Hf=microtime();parse_str($_COOKIE["adminer_export"],$ka);$Cb=$b->dumpFormat();unset($Cb["sql"]);while($H!=""){if(!$Ad&&preg_match("~^$cf*DELIMITER\\s+(\\S+)~i",$H,$A)){$rb=$A[1];$H=substr($H,strlen($A[0]));}else{preg_match('('.preg_quote($rb)."\\s*|$ae)",$H,$A,PREG_OFFSET_CAPTURE,$Ad);list($mc,$je)=$A[0];if(!$mc&&$oc&&!feof($oc))$H.=fread($oc,1e5);else{if(!$mc&&rtrim($H)=="")break;$Ad=$je+strlen($mc);if($mc&&rtrim($mc)!=$rb){while(preg_match('('.($mc=='/*'?'\\*/':($mc=='['?']':(ereg('^-- |^#',$mc)?"\n":preg_quote($mc)."|\\\\."))).'|$)s',$H,$A,PREG_OFFSET_CAPTURE,$Ad)){$Re=$A[0][0];if(!$Re&&$oc&&!feof($oc))$H.=fread($oc,1e5);else{$Ad=$A[0][1]+strlen($Re);if($Re[0]!="\\")break;}}}else{$Kb=false;$G=substr($H,0,$je);$Va++;$qe="

".shorten_utf8(trim($G),1000)."
\n";if(!$_POST["only_errors"]){echo$qe;ob_flush();flush();}$ef=microtime();if($f->multi_query($G)&&is_object($g)&&preg_match("~^$cf*USE\\b~isU",$G))$g->query($G);do{$I=$f->store_result();$Lb=microtime();$Af=format_time($ef,$Lb).(strlen($G)<1000?" ".'Edit'."":"");if($f->error){echo($_POST["only_errors"]?$qe:""),"

".'Error in query'.($f->errno?" ($f->errno)":"").": ".error()."\n";$Qb[]=" $Va";if($_POST["error_stops"])break 2;}elseif(is_object($I)){$Qd=select($I,$g);if(!$_POST["only_errors"]){echo"

\n","

".($I->num_rows?lang(array('%d row','%d rows'),$I->num_rows):"").$Af;$s="export-$Va";$Zb=", ".'Export'."\n";if($g&&preg_match("~^($cf|\\()*SELECT\\b~isU",$G)&&($Yb=explain($g,$G))){$s="explain-$Va";echo", EXPLAIN$Zb","

\n";}else echo$Zb;echo"
\n";}}else{if(preg_match("~^$cf*(CREATE|DROP|ALTER)$cf+(DATABASE|SCHEMA)\\b~isU",$G)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"

".lang(array('Query executed OK, %d row affected.','Query executed OK, %d rows affected.'),$f->affected_rows)."$Af\n";}$ef=$Lb;}while($f->next_result());$cd+=substr_count($G.$mc,"\n");$H=substr($H,$Ad);$Ad=0;}}}}if($Kb)echo"

".'No commands to execute.'."\n";elseif($_POST["only_errors"])echo"

".lang(array('%d query executed OK.','%d queries executed OK.'),$Va-count($Qb)).format_time($Hf,microtime())."\n";elseif($Qb&&$Va>1)echo"

".'Error in query'.": ".implode("",$Qb)."\n";}else echo"

".upload_error($H)."\n";}echo'

';$G=$_GET["sql"];if($_POST)$G=$_POST["query"];elseif($_GET["history"]=="all")$G=$wc;elseif($_GET["history"]!="")$G=$wc[$_GET["history"]][0];textarea("query",$G,20);echo($_POST?"":"\n"),"

".(ini_bool("file_uploads")?'File upload'.': (< '.ini_get("upload_max_filesize").'B)':'File uploads are disabled.'),'

',checkbox("error_stops",1,$_POST["error_stops"],'Stop on error')."\n",checkbox("only_errors",1,$_POST["only_errors"],'Show only errors')."\n";print_fieldset("webfile",'From server',$_POST["webfile"],"document.getElementById('form')['only_errors'].checked = true; ");$Ya=array();foreach(array("gz"=>"zlib","bz2"=>"bz2")as$x=>$X){if(extension_loaded($X))$Ya[]=".$x";}echo sprintf('Webserver file %s',"adminer.sql".($Ya?"[".implode("|",$Ya)."]":"").""),' ',"\n";if($wc){print_fieldset("history",'History',$_GET["history"]!="");foreach($wc as$x=>$X){list($G,$Af)=$X;echo''.'Edit'." ".@date("H:i:s",$Af)." ".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$G)))),80,"")."
\n";}echo"\n","".'Edit all'."\n","\n";}echo'

';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$l=fields($a);$Z=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0],$l):""):where($_GET,$l));$Yf=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($l as$D=>$k){if(!isset($k["privileges"][$Yf?"update":"insert"])||$b->fieldName($k)=="")unset($l[$D]);}if($_POST&&!$j&&!isset($_GET["select"])){$_=$_POST["referer"];if($_POST["insert"])$_=($Yf?null:$_SERVER["REQUEST_URI"]);elseif(!ereg('^.+&select=.+$',$_))$_=ME."select=".urlencode($a);if(isset($_POST["delete"]))query_redirect("DELETE".limit1("FROM ".table($a)," WHERE $Z"),$_,'Item has been deleted.');else{$O=array();foreach($l as$D=>$k){$X=process_input($k);if($X!==false&&$X!==null)$O[idf_escape($D)]=($Yf?"\n".idf_escape($D)." = $X":$X);}if($Yf){if(!$O)redirect($_);query_redirect("UPDATE".limit1(table($a)." SET".implode(",",$O),"\nWHERE $Z"),$_,'Item has been updated.');}else{$I=insert_into($a,$O);$Vc=($I?last_id():0);queries_redirect($_,sprintf('Item%s has been inserted.',($Vc?" $Vc":"")),$I);}}}$qf=$b->tableName(table_status($a));page_header(($Yf?'Edit':'Insert'),$j,array("select"=>array($a,$qf)),$qf);$K=null;if($_POST["save"])$K=(array)$_POST["fields"];elseif($Z){$M=array();foreach($l as$D=>$k){if(isset($k["privileges"]["select"])){$ta=convert_field($k);if($_POST["clone"]&&$k["auto_increment"])$ta="''";if($w=="sql"&&ereg("enum|set",$k["type"]))$ta="1*".idf_escape($D);$M[]=($ta?"$ta AS ":"").idf_escape($D);}}$K=array();if($M){$L=get_rows("SELECT".limit(implode(", ",$M)." FROM ".table($a)," WHERE $Z",(isset($_GET["select"])?2:1)));$K=(isset($_GET["select"])&&count($L)!=1?null:reset($L));}}if($K===false)echo"

".'No rows.'."\n";echo'

';if(!$l)echo"

".'You have no privileges to update this table.'."\n";else{echo"\n";foreach($l as$D=>$k){echo"
".$b->fieldName($k);$qb=$_GET["set"][bracket_escape($D)];$Y=($K!==null?($K[$D]!=""&&$w=="sql"&&ereg("enum|set",$k["type"])?(is_array($K[$D])?array_sum($K[$D]):+$K[$D]):$K[$D]):(!$Yf&&$k["auto_increment"]?"":(isset($_GET["select"])?false:($qb!==null?$qb:$k["default"]))));if(!$_POST["save"]&&is_string($Y))$Y=$b->editVal($Y,$k);$o=($_POST["save"]?(string)$_POST["function"][$D]:($Yf&&$k["on_update"]=="CURRENT_TIMESTAMP"?"now":($Y===false?null:($Y!==null?'':'NULL'))));if($k["type"]=="timestamp"&&$Y=="CURRENT_TIMESTAMP"){$Y="";$o="now";}input($k,$Y,$o);echo"\n";}echo"
\n";}echo'

';if($l){echo"\n";if(!isset($_GET["select"]))echo"\n";}echo($Yf?"\n":($_POST||!$l?"":"\n"));if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo'

';}elseif(isset($_GET["create"])){$a=$_GET["create"];$be=array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST');$Be=referencable_primary($a);$n=array();foreach($Be as$qf=>$k)$n[str_replace("`","``",$qf)."`".str_replace("`","``",$k["field"])]=$qf;$Td=array();$Ud=array();if($a!=""){$Td=fields($a);$Ud=table_status($a);}if($_POST&&!$_POST["fields"])$_POST["fields"]=array();if($_POST&&!$j&&!$_POST["add"]&&!$_POST["drop_col"]&&!$_POST["up"]&&!$_POST["down"]){if($_POST["drop"])query_redirect("DROP TABLE ".table($a),substr(ME,0,-1),'Table has been dropped.');else{$l=array();$qa=array();$ag=false;$jc=array();ksort($_POST["fields"]);$Sd=reset($Td);$oa=" FIRST";foreach($_POST["fields"]as$x=>$k){$m=$n[$k["type"]];$Of=($m!==null?$Be[$m]:$k);if($k["field"]!=""){if(!$k["has_default"])$k["default"]=null;$qb=eregi_replace(" *on update CURRENT_TIMESTAMP","",$k["default"]);if($qb!=$k["default"]){$k["on_update"]="CURRENT_TIMESTAMP";$k["default"]=$qb;}if($x==$_POST["auto_increment_col"])$k["auto_increment"]=true;$ve=process_field($k,$Of);$qa[]=array($k["orig"],$ve,$oa);if($ve!=process_field($Sd,$Sd)){$l[]=array($k["orig"],$ve,$oa);if($k["orig"]!=""||$oa)$ag=true;}if($m!==null)$jc[idf_escape($k["field"])]=($a!=""&&$w!="sqlite"?"ADD":" ")." FOREIGN KEY (".idf_escape($k["field"]).") REFERENCES ".table($n[$k["type"]])." (".idf_escape($Of["field"]).")".(ereg("^($Gd)\$",$k["on_delete"])?" ON DELETE $k[on_delete]":"");$oa=" AFTER ".idf_escape($k["field"]);}elseif($k["orig"]!=""){$ag=true;$l[]=array($k["orig"]);}if($k["orig"]!=""){$Sd=next($Td);if(!$Sd)$oa="";}}$de="";if(in_array($_POST["partition_by"],$be)){$ee=array();if($_POST["partition_by"]=='RANGE'||$_POST["partition_by"]=='LIST'){foreach(array_filter($_POST["partition_names"])as$x=>$X){$Y=$_POST["partition_values"][$x];$ee[]="\nPARTITION ".idf_escape($X)." VALUES ".($_POST["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$de.="\nPARTITION BY $_POST[partition_by]($_POST[partition])".($ee?" (".implode(",",$ee)."\n)":($_POST["partitions"]?" PARTITIONS ".(+$_POST["partitions"]):""));}elseif(support("partitioning")&&ereg("partitioned",$Ud["Create_options"]))$de.="\nREMOVE PARTITIONING";$B='Table has been altered.';if($a==""){cookie("adminer_engine",$_POST["Engine"]);$B='Table has been created.';}$D=trim($_POST["name"]);queries_redirect(ME."table=".urlencode($D),$B,alter_table($a,$D,($w=="sqlite"&&($ag||$jc)?$qa:$l),$jc,$_POST["Comment"],($_POST["Engine"]&&$_POST["Engine"]!=$Ud["Engine"]?$_POST["Engine"]:""),($_POST["Collation"]&&$_POST["Collation"]!=$Ud["Collation"]?$_POST["Collation"]:""),($_POST["Auto_increment"]!=""?+$_POST["Auto_increment"]:""),$de));}}page_header(($a!=""?'Alter table':'Create table'),$j,array("table"=>$a),$a);$K=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($Qf["int"])?"int":(isset($Qf["integer"])?"integer":"")))),"partition_names"=>array(""),);if($_POST){$K=$_POST;if($K["auto_increment_col"])$K["fields"][$K["auto_increment_col"]]["auto_increment"]=true;process_fields($K["fields"]);}elseif($a!=""){$K=$Ud;$K["name"]=$a;$K["fields"]=array();if(!$_GET["auto_increment"])$K["Auto_increment"]="";foreach($Td as$k){$k["has_default"]=isset($k["default"]);if($k["on_update"])$k["default"].=" ON UPDATE $k[on_update]";$K["fields"][]=$k;}if(support("partitioning")){$pc="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($a);$I=$f->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $pc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($K["partition_by"],$K["partitions"],$K["partition"])=$I->fetch_row();$K["partition_names"]=array();$K["partition_values"]=array();foreach(get_rows("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $pc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION")as$Qe){$K["partition_names"][]=$Qe["PARTITION_NAME"];$K["partition_values"][]=$Qe["PARTITION_DESCRIPTION"];}$K["partition_names"][]="";}}$d=collations();$lf=floor(extension_loaded("suhosin")?(min(ini_get("suhosin.request.max_vars"),ini_get("suhosin.post.max_vars"))-13)/10:0);if($lf&&count($K["fields"])>$lf)echo"

".h(sprintf('Maximum number of allowed fields exceeded. Please increase %s and %s.','suhosin.post.max_vars','suhosin.request.max_vars'))."\n";$Nb=engines();foreach($Nb as$Mb){if(!strcasecmp($Mb,$K["Engine"])){$K["Engine"]=$Mb;break;}}echo'

Table name: ';if($a==""&&!$_POST){?>"(".'engine'.")")+$Nb,$K["Engine"]):""),' ',($d&&!ereg("sqlite|mssql",$w)?html_select("Collation",array(""=>"(".'collation'.")")+$d,$K["Collation"]):""),' ';$Xa=($_POST?$_POST["comments"]:$K["Comment"]!="");if(!$_POST&&!$Xa){foreach($K["fields"]as$k){if($k["comment"]!=""){$Xa=true;break;}}}edit_fields($K["fields"],$d,"TABLE",$lf,$n,$Xa);echo'

Auto Increment: ';if(!$_POST["defaults"]){echo'';}echo(support("comment")?checkbox("comments",1,$Xa,'Comment',"columnShow(this.checked, 6); toggle('Comment'); if (this.checked) this.form['Comment'].focus();",true).' ':''),'

';if($_GET["create"]!=""){echo'';}echo' ';if(support("partitioning")){$ce=ereg('RANGE|LIST',$K["partition_by"]);print_fieldset("partition",'Partition by',$K["partition_by"]);echo'

',html_select("partition_by",array(-1=>"")+$be,$K["partition_by"],"partitionByChange(this);"),'() Partitions: ';foreach($K["partition_names"]as$x=>$X){echo'',' ';}echo'

';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Dc=array("PRIMARY","UNIQUE","INDEX");$S=table_status($a);if(eregi("MyISAM|M?aria",$S["Engine"]))$Dc[]="FULLTEXT";$u=indexes($a);if($w=="sqlite"){unset($Dc[0]);unset($u[""]);}if($_POST&&!$j&&!$_POST["add"]){$sa=array();foreach($_POST["indexes"]as$t){$D=$t["name"];if(in_array($t["type"],$Dc)){$e=array();$bd=array();$O=array();ksort($t["columns"]);foreach($t["columns"]as$x=>$Ta){if($Ta!=""){$ad=$t["lengths"][$x];$O[]=idf_escape($Ta).($ad?"(".(+$ad).")":"");$e[]=$Ta;$bd[]=($ad?$ad:null);}}if($e){$Xb=$u[$D];if($Xb){ksort($Xb["columns"]);ksort($Xb["lengths"]);if($t["type"]==$Xb["type"]&&array_values($Xb["columns"])===$e&&(!$Xb["lengths"]||array_values($Xb["lengths"])===$bd)){unset($u[$D]);continue;}}$sa[]=array($t["type"],$D,"(".implode(", ",$O).")");}}}foreach($u as$D=>$Xb)$sa[]=array($Xb["type"],$D,"DROP");if(!$sa)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),'Indexes have been altered.',alter_indexes($a,$sa));}page_header('Indexes',$j,array("table"=>$a),$a);$l=array_keys(fields($a));$K=array("indexes"=>$u);if($_POST){$K=$_POST;if($_POST["add"]){foreach($K["indexes"]as$x=>$t){if($t["columns"][count($t["columns"])]!="")$K["indexes"][$x]["columns"][]="";}$t=end($K["indexes"]);if($t["type"]||array_filter($t["columns"],'strlen')||array_filter($t["lengths"],'strlen'))$K["indexes"][]=array("columns"=>array(1=>""));}}else{foreach($K["indexes"]as$x=>$t){$K["indexes"][$x]["name"]=$x;$K["indexes"][$x]["columns"][]="";}$K["indexes"][]=array("columns"=>array(1=>""));}echo'
';$v=1;foreach($K["indexes"]as$t){echo"
Index TypeColumn (length)Name
".html_select("indexes[$v][type]",array(-1=>"")+$Dc,$t["type"],($v==count($K["indexes"])?"indexesAddRow(this);":1))."";ksort($t["columns"]);$r=1;foreach($t["columns"]as$x=>$Ta){echo"".html_select("indexes[$v][columns][$r]",array(-1=>"")+$l,$Ta,($r==count($t["columns"])?"indexesAddColumn":"indexesChangeColumn")."(this, '".js_escape($w=="sql"?"":$_GET["indexes"]."_")."');")," ";$r++;}echo"\n";$v++;}echo'

';}elseif(isset($_GET["database"])){if($_POST&&!$j&&!isset($_POST["add_x"])){restart_session();$D=trim($_POST["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),'Database has been dropped.',drop_databases(array(DB)));}elseif(DB!==$D){if(DB!=""){$_GET["db"]=$D;queries_redirect(preg_replace('~db=[^&]*&~','',ME)."db=".urlencode($D),'Database has been renamed.',rename_database($D,$_POST["collation"]));}else{$h=explode("\n",str_replace("\r","",$D));$jf=true;$Uc="";foreach($h as$i){if(count($h)==1||$i!=""){if(!create_database($i,$_POST["collation"]))$jf=false;$Uc=$i;}}queries_redirect(ME."db=".urlencode($Uc),'Database has been created.',$jf);}}else{if(!$_POST["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($D).(eregi('^[a-z0-9_]+$',$_POST["collation"])?" COLLATE $_POST[collation]":""),substr(ME,0,-1),'Database has been altered.');}}page_header(DB!=""?'Alter database':'Create database',$j,array(),DB);$d=collations();$D=DB;$Qa=null;if($_POST){$D=$_POST["name"];$Qa=$_POST["collation"];}elseif(DB!="")$Qa=db_collation(DB,$d);elseif($w=="sql"){foreach(get_vals("SHOW GRANTS")as$q){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~',$q,$A)&&$A[1]){$D=stripcslashes(idf_unescape("`$A[2]`"));break;}}}echo'

',($_POST["add_x"]||strpos($D,"\n")?'
':'')."\n".($d?html_select("collation",array(""=>"(".'collation'.")")+$d,$Qa):"");?> \n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"\n";echo'

';}elseif(isset($_GET["call"])){$da=$_GET["call"];page_header('Call'.": ".h($da),$j);$Ne=routine($da,(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Cc=array();$Vd=array();foreach($Ne["fields"]as$r=>$k){if(substr($k["inout"],-3)=="OUT")$Vd[$r]="@".idf_escape($k["field"])." AS ".idf_escape($k["field"]);if(!$k["inout"]||substr($k["inout"],0,2)=="IN")$Cc[]=$r;}if(!$j&&$_POST){$Ha=array();foreach($Ne["fields"]as$x=>$k){if(in_array($x,$Cc)){$X=process_input($k);if($X===false)$X="''";if(isset($Vd[$x]))$f->query("SET @".idf_escape($k["field"])." = $X");}$Ha[]=(isset($Vd[$x])?"@".idf_escape($k["field"]):$X);}$H=(isset($_GET["callf"])?"SELECT":"CALL")." ".idf_escape($da)."(".implode(", ",$Ha).")";echo"

".h($H)." ".'Edit'."\n";if(!$f->multi_query($H))echo"

".error()."\n";else{$g=connect();if(is_object($g))$g->select_db(DB);do{$I=$f->store_result();if(is_object($I))select($I,$g);else echo"

".lang(array('Routine has been called, %d row affected.','Routine has been called, %d rows affected.'),$f->affected_rows)."\n";}while($f->next_result());if($Vd)select($f->query("SELECT ".implode(", ",$Vd)));}}echo'

';if($Cc){echo"\n";foreach($Cc as$x){$k=$Ne["fields"][$x];$D=$k["field"];echo"
".$b->fieldName($k);$Y=$_POST["fields"][$D];if($Y!=""){if($k["type"]=="enum")$Y=+$Y;if($k["type"]=="set")$Y=array_sum($Y);}input($k,$Y,(string)$_POST["function"][$D]);echo"\n";}echo"
\n";}echo'

';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];if($_POST&&!$j&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if($_POST["drop"])query_redirect("ALTER TABLE ".table($a)."\nDROP ".($w=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($_GET["name"]),ME."table=".urlencode($a),'Foreign key has been dropped.');else{$bf=array_filter($_POST["source"],'strlen');ksort($bf);$xf=array();foreach($bf as$x=>$X)$xf[$x]=$_POST["target"][$x];query_redirect("ALTER TABLE ".table($a).($_GET["name"]!=""?"\nDROP ".($w=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($_GET["name"]).",":"")."\nADD FOREIGN KEY (".implode(", ",array_map('idf_escape',$bf)).") REFERENCES ".table($_POST["table"])." (".implode(", ",array_map('idf_escape',$xf)).")".(ereg("^($Gd)\$",$_POST["on_delete"])?" ON DELETE $_POST[on_delete]":"").(ereg("^($Gd)\$",$_POST["on_update"])?" ON UPDATE $_POST[on_update]":""),ME."table=".urlencode($a),($_GET["name"]!=""?'Foreign key has been altered.':'Foreign key has been created.'));$j='Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.'."
$j";}}page_header('Foreign key',$j,array("table"=>$a),$a);$K=array("table"=>$a,"source"=>array(""));if($_POST){$K=$_POST;ksort($K["source"]);if($_POST["add"])$K["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$K["target"]=array();}elseif($_GET["name"]!=""){$n=foreign_keys($a);$K=$n[$_GET["name"]];$K["source"][]="";}$bf=array_keys(fields($a));$xf=($a===$K["table"]?$bf:array_keys(fields($K["table"])));$Ae=array();foreach(table_status()as$D=>$S){if(fk_support($S))$Ae[]=$D;}echo'

';if($K["db"]==""&&$K["ns"]==""){echo'Target table: ',html_select("table",$Ae,$K["table"],"this.form['change-js'].value = '1'; this.form.submit();"),'

';$v=0;foreach($K["source"]as$x=>$X){echo"","
SourceTarget
".html_select("source[".(+$x)."]",array(-1=>"")+$bf,$X,($v==count($K["source"])-1?"foreignAddRow(this);":1)),"".html_select("target[".(+$x)."]",$xf,$K["target"][$x]);$v++;}echo'

ON DELETE: ',html_select("on_delete",array(-1=>"")+explode("|",$Gd),$K["on_delete"]),' ON UPDATE: ',html_select("on_update",array(-1=>"")+explode("|",$Gd),$K["on_update"]),'

';}if($_GET["name"]!=""){echo'';}echo'

';}elseif(isset($_GET["view"])){$a=$_GET["view"];$Ab=false;if($_POST&&!$j){$D=trim($_POST["name"]);$Ab=drop_create("DROP VIEW ".table($a),"CREATE VIEW ".table($D)." AS\n$_POST[select]",($_POST["drop"]?substr(ME,0,-1):ME."table=".urlencode($D)),'View has been dropped.','View has been altered.','View has been created.',$a);}page_header(($a!=""?'Alter view':'Create view'),$j,array("table"=>$a),$a);$K=$_POST;if(!$K&&$a!=""){$K=view($a);$K["name"]=$a;}echo'

Name:

';textarea("select",$K["select"]);echo'

';if($Ab){echo'';}echo' ';if($_GET["view"]!=""){echo'';}echo'

';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Ic=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$gf=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");if($_POST&&!$j){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),'Event has been dropped.');elseif(in_array($_POST["INTERVAL_FIELD"],$Ic)&&isset($gf[$_POST["STATUS"]])){$Se="\nON SCHEDULE ".($_POST["INTERVAL_VALUE"]?"EVERY ".q($_POST["INTERVAL_VALUE"])." $_POST[INTERVAL_FIELD]".($_POST["STARTS"]?" STARTS ".q($_POST["STARTS"]):"").($_POST["ENDS"]?" ENDS ".q($_POST["ENDS"]):""):"AT ".q($_POST["STARTS"]))." ON COMPLETION".($_POST["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?'Event has been altered.':'Event has been created.'),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Se.($aa!=$_POST["EVENT_NAME"]?"\nRENAME TO ".idf_escape($_POST["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($_POST["EVENT_NAME"]).$Se)."\n".$gf[$_POST["STATUS"]]." COMMENT ".q($_POST["EVENT_COMMENT"]).rtrim(" DO\n$_POST[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?'Alter event'.": ".h($aa):'Create event'),$j);$K=$_POST;if(!$K&&$aa!=""){$L=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$K=reset($L);}echo'
Name
Start
End
Every ',html_select("INTERVAL_FIELD",$Ic,$K["INTERVAL_FIELD"]),'
Status',html_select("STATUS",$gf,$K["STATUS"]),'
Comment
 ',checkbox("ON_COMPLETION","PRESERVE",$K["ON_COMPLETION"]=="PRESERVE",'On completion preserve'),'

';textarea("EVENT_DEFINITION",$K["EVENT_DEFINITION"]);echo'

';if($aa!=""){echo'';}echo'

';}elseif(isset($_GET["procedure"])){$da=$_GET["procedure"];$Ne=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$Oe=routine_languages();$Ab=false;if($_POST&&!$j&&!$_POST["add"]&&!$_POST["drop_col"]&&!$_POST["up"]&&!$_POST["down"]){$O=array();$l=(array)$_POST["fields"];ksort($l);foreach($l as$k){if($k["field"]!="")$O[]=(ereg("^($Fc)\$",$k["inout"])?"$k[inout] ":"").idf_escape($k["field"]).process_type($k,"CHARACTER SET");}$Ab=drop_create("DROP $Ne ".idf_escape($da),"CREATE $Ne ".idf_escape(trim($_POST["name"]))." (".implode(", ",$O).")".(isset($_GET["function"])?" RETURNS".process_type($_POST["returns"],"CHARACTER SET"):"").(in_array($_POST["language"],$Oe)?" LANGUAGE $_POST[language]":"").rtrim("\n$_POST[definition]",";").";",substr(ME,0,-1),'Routine has been dropped.','Routine has been altered.','Routine has been created.',$da);}page_header(($da!=""?(isset($_GET["function"])?'Alter function':'Alter procedure').": ".h($da):(isset($_GET["function"])?'Create function':'Create procedure')),$j);$d=get_vals("SHOW CHARACTER SET");sort($d);$K=array("fields"=>array());if($_POST){$K=$_POST;$K["fields"]=(array)$K["fields"];process_fields($K["fields"]);}elseif($da!=""){$K=routine($da,$Ne);$K["name"]=$da;}echo'

Name: ',($Oe?'Language'.": ".html_select("language",$Oe,$K["language"]):""),' ';edit_fields($K["fields"],$d,$Ne);if(isset($_GET["function"])){echo"
".'Return type';edit_type("returns",$K["returns"],$d);}echo'

';textarea("definition",$K["definition"]);echo'

';if($da!=""){echo'';}if($Ab){echo'';}echo'

';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$Mf=trigger_options();$Lf=array("INSERT","UPDATE","DELETE");$Ab=false;if($_POST&&!$j&&in_array($_POST["Timing"],$Mf["Timing"])&&in_array($_POST["Event"],$Lf)&&in_array($_POST["Type"],$Mf["Type"])){$Bf=" $_POST[Timing] $_POST[Event]";$Fd=" ON ".table($a);$Ab=drop_create("DROP TRIGGER ".idf_escape($_GET["name"]).($w=="pgsql"?$Fd:""),"CREATE TRIGGER ".idf_escape($_POST["Trigger"]).($w=="mssql"?$Fd.$Bf:$Bf.$Fd).rtrim(" $_POST[Type]\n$_POST[Statement]",";").";",ME."table=".urlencode($a),'Trigger has been dropped.','Trigger has been altered.','Trigger has been created.',$_GET["name"]);}page_header(($_GET["name"]!=""?'Alter trigger'.": ".h($_GET["name"]):'Create trigger'),$j,array("table"=>$a));$K=$_POST;if(!$K)$K=trigger($_GET["name"])+array("Trigger"=>$a."_bi");echo'
Time',html_select("Timing",$Mf["Timing"],$K["Timing"],"if (/^".preg_quote($a,"/")."_[ba][iud]$/.test(this.form['Trigger'].value)) this.form['Trigger'].value = '".js_escape($a)."_' + selectValue(this).charAt(0).toLowerCase() + selectValue(this.form['Event']).charAt(0).toLowerCase();"),'
Event',html_select("Event",$Lf,$K["Event"],"this.form['Timing'].onchange();"),'
Type',html_select("Type",$Mf["Type"],$K["Type"]),'

Name:

';textarea("Statement",$K["Statement"]);echo'

';if($_GET["name"]!=""){echo'';}if($Ab){echo'';}echo'

';}elseif(isset($_GET["user"])){$fa=$_GET["user"];$te=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$K){foreach(explode(",",($K["Privilege"]=="Grant option"?"":$K["Context"]))as$cb)$te[$cb][$K["Privilege"]]=$K["Comment"];}$te["Server Admin"]+=$te["File access on server"];$te["Databases"]["Create routine"]=$te["Procedures"]["Create routine"];unset($te["Procedures"]["Create routine"]);$te["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$te["Columns"][$X]=$te["Tables"][$X];unset($te["Server Admin"]["Usage"]);foreach($te["Tables"]as$x=>$X)unset($te["Databases"][$x]);$wd=array();if($_POST){foreach($_POST["objects"]as$x=>$X)$wd[$X]=(array)$wd[$X]+(array)$_POST["grants"][$x];}$rc=array();$Dd="";if(isset($_GET["host"])&&($I=$f->query("SHOW GRANTS FOR ".q($fa)."@".q($_GET["host"])))){while($K=$I->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$K[0],$A)&&preg_match_all('~ *([^(,]*[^ ,(])( *\\([^)]+\\))?~',$A[1],$gd,PREG_SET_ORDER)){foreach($gd as$X){if($X[1]!="USAGE")$rc["$A[2]$X[2]"][$X[1]]=true;if(ereg(' WITH GRANT OPTION',$K[0]))$rc["$A[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$K[0],$A))$Dd=$A[1];}}if($_POST&&!$j){$Ed=(isset($_GET["host"])?q($fa)."@".q($_GET["host"]):"''");$xd=q($_POST["user"])."@".q($_POST["host"]);$fe=q($_POST["pass"]);if($_POST["drop"])query_redirect("DROP USER $Ed",ME."privileges=",'User has been dropped.');else{$hb=false;if($Ed!=$xd){$hb=queries(($f->server_info<5?"GRANT USAGE ON *.* TO":"CREATE USER")." $xd IDENTIFIED BY".($_POST["hashed"]?" PASSWORD":"")." $fe");$j=!$hb;}elseif($_POST["pass"]!=$Dd||!$_POST["hashed"])queries("SET PASSWORD FOR $xd = ".($_POST["hashed"]?$fe:"PASSWORD($fe)"));if(!$j){$Ke=array();foreach($wd as$_d=>$q){if(isset($_GET["grant"]))$q=array_filter($q);$q=array_keys($q);if(isset($_GET["grant"]))$Ke=array_diff(array_keys(array_filter($wd[$_d],'strlen')),$q);elseif($Ed==$xd){$Cd=array_keys((array)$rc[$_d]);$Ke=array_diff($Cd,$q);$q=array_diff($q,$Cd);unset($rc[$_d]);}if(preg_match('~^(.+)\\s*(\\(.*\\))?$~U',$_d,$A)&&(!grant("REVOKE",$Ke,$A[2]," ON $A[1] FROM $xd")||!grant("GRANT",$q,$A[2]," ON $A[1] TO $xd"))){$j=true;break;}}}if(!$j&&isset($_GET["host"])){if($Ed!=$xd)queries("DROP USER $Ed");elseif(!isset($_GET["grant"])){foreach($rc as$_d=>$Ke){if(preg_match('~^(.+)(\\(.*\\))?$~U',$_d,$A))grant("REVOKE",array_keys($Ke),$A[2]," ON $A[1] FROM $xd");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?'User has been altered.':'User has been created.'),!$j);if($hb)$f->query("DROP USER $xd");}}page_header((isset($_GET["host"])?'Username'.": ".h("$fa@$_GET[host]"):'Create user'),$j,array("privileges"=>array('','Privileges')));if($_POST){$K=$_POST;$rc=$wd;}else{$K=$_GET+array("host"=>$f->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$K["pass"]=$Dd;if($Dd!="")$K["hashed"]=true;$rc[(DB==""||$rc?"":idf_escape(addcslashes(DB,"%_"))).".*"]=array();}echo'
Server
Username
Password ';if(!$K["hashed"]){echo'';}echo checkbox("hashed",1,$K["hashed"],'Hashed',"typePassword(this.form['pass'], this.checked);"),'
';echo"\n","\n";foreach(array(""=>"","Server Admin"=>'Server',"Databases"=>'Database',"Tables"=>'Table',"Columns"=>'Column',"Procedures"=>'Routine',)as$cb=>$sb){foreach((array)$te[$cb]as$se=>$Wa){echo"$sb'.h($se);$r=0;foreach($rc as$_d=>$q){$D="'grants[$r][".h(strtoupper($se))."]'";$Y=$q[strtoupper($se)];if($cb=="Server Admin"&&$_d!=(isset($rc["*.*"])?"*.*":".*"))echo"
".'Privileges'."";$r=0;foreach($rc as$_d=>$q){echo''.($_d!="*.*"?"":"*.*");$r++;}echo"
 ";elseif(isset($_GET["grant"]))echo"";else echo"";$r++;}}}echo"
\n",'

';if(isset($_GET["host"])){echo'';}echo'

';}elseif(isset($_GET["processlist"])){if(support("kill")&&$_POST&&!$j){$Rc=0;foreach((array)$_POST["kill"]as$X){if(queries("KILL ".(+$X)))$Rc++;}queries_redirect(ME."processlist=",lang(array('%d process has been killed.','%d processes have been killed.'),$Rc),$Rc||!$_POST["kill"]);}page_header('Process list',$j);echo'
';$r=-1;foreach(process_list()as$r=>$K){if(!$r)echo"".(support("kill")?"\n";echo"".(support("kill")?"
 ":"")."".implode("",array_keys($K))."
".checkbox("kill[]",$K["Id"],0):"");foreach($K as$x=>$X)echo"".(($w=="sql"&&$x=="Info"&&ereg("Query|Killed",$K["Command"])&&$X!="")||($w=="pgsql"&&$x=="current_query"&&$X!="")||($w=="oracle"&&$x=="sql_text"&&$X!="")?"".shorten_utf8($X,100,"").' '.'Edit'.'':nbsp($X));echo"\n";}echo'

';if(support("kill")){echo($r+1)."/".sprintf('%d in total',$f->result("SELECT @@max_connections")),"

\n";}echo'

';}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status($a);$u=indexes($a);$l=fields($a);$n=column_foreign_keys($a);$Bd="";if($S["Oid"]=="t"){$Bd=($w=="sqlite"?"rowid":"oid");$u[]=array("type"=>"PRIMARY","columns"=>array($Bd));}parse_str($_COOKIE["adminer_import"],$la);$Le=array();$e=array();$_f=null;foreach($l as$x=>$k){$D=$b->fieldName($k);if(isset($k["privileges"]["select"])&&$D!=""){$e[$x]=html_entity_decode(strip_tags($D));if(is_shortable($k))$_f=$b->selectLengthProcess();}$Le+=$k["privileges"];}list($M,$sc)=$b->selectColumnsProcess($e,$u);$Jc=count($sc)selectSearchProcess($l,$u);$Nd=$b->selectOrderProcess($l,$u);$y=$b->selectLimitProcess();$pc=($M?implode(", ",$M):"*".($Bd?", $Bd":""));if($w=="sql"){foreach($e as$x=>$X){$ta=convert_field($l[$x]);if($ta)$pc.=", $ta AS ".idf_escape($x);}}$pc.="\nFROM ".table($a);$tc=($sc&&$Jc?"\nGROUP BY ".implode(", ",$sc):"").($Nd?"\nORDER BY ".implode(", ",$Nd):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Uf=>$K){$ta=convert_field($l[key($K)]);echo$f->result("SELECT".limit(($ta?$ta:idf_escape(key($K)))." FROM ".table($a)," WHERE ".where_check($Uf,$l).($Z?" AND ".implode(" AND ",$Z):"").($Nd?" ORDER BY ".implode(", ",$Nd):""),1));}exit;}if($_POST&&!$j){$kg="(".implode(") OR (",array_map('where_check',(array)$_POST["check"])).")";$pe=$Wf=null;foreach($u as$t){if($t["type"]=="PRIMARY"){$pe=array_flip($t["columns"]);$Wf=($M?$pe:array());break;}}foreach((array)$Wf as$x=>$X){if(in_array(idf_escape($x),$M))unset($Wf[$x]);}if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");if(!is_array($_POST["check"])||$Wf===array()){$jg=$Z;if(is_array($_POST["check"]))$jg[]="($kg)";$H="SELECT $pc".($jg?"\nWHERE ".implode(" AND ",$jg):"").$tc;}else{$Sf=array();foreach($_POST["check"]as$X)$Sf[]="(SELECT".limit($pc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$l).$tc,1).")";$H=implode(" UNION ALL ",$Sf);}$b->dumpData($a,"table",$H);exit;}if(!$b->selectEmailProcess($Z,$n)){if($_POST["save"]||$_POST["delete"]){$I=true;$ma=0;$H=table($a);$O=array();if(!$_POST["delete"]){foreach($e as$D=>$X){$X=process_input($l[$D]);if($X!==null){if($_POST["clone"])$O[idf_escape($D)]=($X!==false?$X:idf_escape($D));elseif($X!==false)$O[]=idf_escape($D)." = $X";}}$H.=($_POST["clone"]?" (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a):" SET\n".implode(",\n",$O));}if($_POST["delete"]||$O){$Ua="UPDATE";if($_POST["delete"]){$Ua="DELETE";$H="FROM $H";}if($_POST["clone"]){$Ua="INSERT";$H="INTO $H";}if($_POST["all"]||($Wf===array()&&$_POST["check"])||$Jc){$I=queries("$Ua $H".($_POST["all"]?($Z?"\nWHERE ".implode(" AND ",$Z):""):"\nWHERE $kg"));$ma=$f->affected_rows;}else{foreach((array)$_POST["check"]as$X){$I=queries($Ua.limit1($H,"\nWHERE ".where_check($X,$l)));if(!$I)break;$ma+=$f->affected_rows;}}}$B=lang(array('%d item has been affected.','%d items have been affected.'),$ma);if($_POST["clone"]&&$I&&$ma==1){$Vc=last_id();if($Vc)$B=sprintf('Item%s has been inserted.'," $Vc");}queries_redirect(remove_from_uri("page"),$B,$I);}elseif(!$_POST["import"]){if(!$_POST["val"])$j='Ctrl+click on a value to modify it.';else{$I=true;$ma=0;foreach($_POST["val"]as$Uf=>$K){$O=array();foreach($K as$x=>$X){$x=bracket_escape($x,1);$O[]=idf_escape($x)." = ".(ereg('char|text',$l[$x]["type"])||$X!=""?$b->processInput($l[$x],$X):"NULL");}$H=table($a)." SET ".implode(", ",$O);$jg=" WHERE ".where_check($Uf,$l).($Z?" AND ".implode(" AND ",$Z):"");$I=queries("UPDATE".($Jc?" $H$jg":limit1($H,$jg)));if(!$I)break;$ma+=$f->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$ma),$I);}}elseif(is_string($ec=get_file("csv_file",true))){cookie("adminer_import","output=".urlencode($la["output"])."&format=".urlencode($_POST["separator"]));$I=true;$Sa=array_keys($l);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$ec,$gd);$ma=count($gd[0]);begin();$Xe=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));foreach($gd[0]as$x=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$Xe]*)$Xe~",$X.$Xe,$hd);if(!$x&&!array_diff($hd[1],$Sa)){$Sa=$hd[1];$ma--;}else{$O=array();foreach($hd[1]as$r=>$Pa)$O[idf_escape($Sa[$r])]=($Pa==""&&$l[$Sa[$r]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$Pa))));$I=insert_update($a,$O,$pe);if(!$I)break;}}if($I)queries("COMMIT");queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$ma),$I);queries("ROLLBACK");}else$j=upload_error($ec);}}$qf=$b->tableName($S);if(is_ajax())ob_start();page_header('Select'.": $qf",$j);$O=null;if(isset($Le["insert"])){$O="";foreach((array)$_GET["where"]as$X){if(count($n[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!ereg('[_%]',$X["val"]))))$O.="&set".urlencode("[".bracket_escape($X["col"])."]")."=".urlencode($X["val"]);}}$b->selectLinks($S,$O);if(!$e)echo"

".'Unable to select the table'.($l?".":": ".error())."\n";else{echo"

\n","
";hidden_fields_get();echo(DB!=""?''.(isset($_GET["ns"])?'':""):"");echo'',"
\n";$b->selectColumnsPrint($M,$e);$b->selectSearchPrint($Z,$e,$u);$b->selectOrderPrint($Nd,$e,$u);$b->selectLimitPrint($y);$b->selectLengthPrint($_f);$b->selectActionPrint($u);echo"
\n";$E=$_GET["page"];if($E=="last"){$nc=$f->result("SELECT COUNT(*) FROM ".table($a).($Z?" WHERE ".implode(" AND ",$Z):""));$E=floor(max(0,$nc-1)/$y);}$H=$b->selectQueryBuild($M,$Z,$sc,$Nd,$y,$E);if(!$H)$H="SELECT".limit((+$y&&$sc&&$Jc&&$w=="sql"?"SQL_CALC_FOUND_ROWS ":"").$pc,($Z?"\nWHERE ".implode(" AND ",$Z):"").$tc,($y!=""?+$y:null),($E?$y*$E:0),"\n");echo$b->selectQuery($H);$I=$f->query($H);if(!$I)echo"

".error()."\n";else{if($w=="mssql")$I->seek($y*$E);$Jb=array();echo"

\n";$L=array();while($K=$I->fetch_assoc()){if($E&&$w=="oracle")unset($K["RNUM"]);$L[]=$K;}if($_GET["page"]!="last")$nc=(+$y&&$sc&&$Jc?($w=="sql"?$f->result(" SELECT FOUND_ROWS()"):$f->result("SELECT COUNT(*) FROM ($H) x")):count($L));if(!$L)echo"

".'No rows.'."\n";else{$_a=$b->backwardKeys($a,$qf);echo"\n","".(!$sc&&$M?"":"\n";if(is_ajax()){if($y%2==1&&$E%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($L,$n)as$C=>$K){$Tf=unique_array($L[$C],$u);$Uf="";foreach($Tf as$x=>$X)$Uf.="&".($X!==null?urlencode("where[".bracket_escape($x)."]")."=".urlencode($X):"null%5B%5D=".urlencode($x));echo"".(!$sc&&$M?"":"\n";}if(is_ajax())exit;echo"
".'edit'."");$vd=array();$p=array();reset($M);$ye=1;foreach($L[0]as$x=>$X){if($x!=$Bd){$X=$_GET["columns"][key($M)];$k=$l[$M?($X?$X["col"]:current($M)):$x];$D=($k?$b->fieldName($k,$ye):"*");if($D!=""){$ye++;$vd[$x]=$D;$Ta=idf_escape($x);$zc=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($x);$sb="&desc%5B0%5D=1";echo'','';echo(!$M||$X?apply_sql_function($X["fun"],$D):h(current($M)))."";echo"";}$p[$x]=$X["fun"];next($M);}}$bd=array();if($_GET["modify"]){foreach($L as$K){foreach($K as$x=>$X)$bd[$x]=max($bd[$x],min(40,strlen(utf8_decode($X))));}}echo($_a?"".'Relations':"")."
".checkbox("check[]",substr($Uf,1),in_array(substr($Uf,1),(array)$_POST["check"]),"","this.form['all'].checked = false; formUncheck('all-page');").($Jc||information_schema(DB)?"":" ".'edit'.""));foreach($K as$x=>$X){if(isset($vd[$x])){$k=$l[$x];if($X!=""&&(!isset($Jb[$x])||$Jb[$x]!=""))$Jb[$x]=(is_mail($X)?$vd[$x]:"");$z="";$X=$b->editVal($X,$k);if($X!==null){if(ereg('blob|bytea|raw|file',$k["type"])&&$X!="")$z=ME.'download='.urlencode($a).'&field='.urlencode($x).$Uf;if($X==="")$X=" ";elseif($_f!=""&&is_shortable($k))$X=shorten_utf8($X,max(0,+$_f));else$X=h($X);if(!$z){foreach((array)$n[$x]as$m){if(count($n[$x])==1||end($m["source"])==$x){$z="";foreach($m["source"]as$r=>$bf)$z.=where_link($r,$m["target"][$r],$L[$C][$bf]);$z=($m["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($m["db"]),ME):ME).'select='.urlencode($m["table"]).$z;if(count($m["source"])==1)break;}}}if($x=="COUNT(*)"){$z=ME."select=".urlencode($a);$r=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$Tf))$z.=where_link($r++,$W["col"],$W["val"],$W["op"]);}foreach($Tf as$Oc=>$W)$z.=where_link($r++,$Oc,$W);}}if(!$z&&($z=$b->selectLink($K[$x],$k))===null){if(is_mail($K[$x]))$z="mailto:$K[$x]";if($we=is_url($K[$x]))$z=($we=="http"&&$ba?$K[$x]:"$we://www.adminer.org/redirect/?url=".urlencode($K[$x]));}$s=h("val[$Uf][".bracket_escape($x)."]");$Y=$_POST["val"][$Uf][bracket_escape($x)];$vc=h($Y!==null?$Y:$K[$x]);$fd=strpos($X,"...");$Fb=is_utf8($X)&&$L[$C][$x]==$K[$x]&&!$p[$x];$zf=ereg('text|lob',$k["type"]);echo(($_GET["modify"]&&$Fb)||$Y!==null?"".($zf?"":""):"".$b->selectVal($X,$z,$k));}}if($_a)echo"";$b->backwardKeysPrint($_a,$L[$C]);echo"
\n",(!$sc&&$M?"":"\n");}if(($L||$E)&&!is_ajax()){$Tb=true;if($_GET["page"]!="last"&&+$y&&!$Jc&&($nc>=$y||$E)){$nc=found_rows($S,$Z);if($nc";if(+$y&&($nc===false||$nc>$y)){$jd=($nc===false?$E+(count($L)>=$y?2:1):floor(($nc-1)/$y));echo'".'Page'.":",pagination(0,$E).($E>5?" ...":"");for($r=max(1,$E-4);$r'.'last'."");}echo($nc!==false?" (".($Tb?"":"~ ").lang(array('%d row','%d rows'),$nc).")":""),(+$y&&($nc===false?count($L)+1:$nc-$E*$y)>$y?' '.'Load more data'.'':'')," ".checkbox("all",1,0,'whole result')."\n";if($b->selectCommandPrint()){echo'

Edit
>
';}$lc=$b->dumpFormat();if($lc){print_fieldset("export",'Export');$Wd=$b->dumpOutput();echo($Wd?html_select("output",$Wd,$la["output"])." ":""),html_select("format",$lc,$la["format"])," \n","\n";}}if($b->selectImportPrint()){print_fieldset("import",'Import',!$L);echo" ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$la["format"],1);echo" ","\n";}$b->selectEmailPrint(array_filter($Jb,'strlen'),$e);echo"

\n","
\n";}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$ff=isset($_GET["status"]);page_header($ff?'Status':'Variables');$eg=($ff?show_status():show_variables());if(!$eg)echo"

".'No rows.'."\n";else{echo"\n";foreach($eg as$x=>$X){echo"","
".h($x)."","".nbsp($X);}echo"
\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$nf=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$S){$s=js_escape($S["Name"]);json_row("Comment-$s",nbsp($S["Comment"]));if(!is_view($S)){foreach(array("Engine","Collation")as$x)json_row("$x-$s",nbsp($S[$x]));foreach($nf+array("Auto_increment"=>0,"Rows"=>0)as$x=>$X){if($S[$x]!=""){$X=number_format($S[$x],0,'.',',');json_row("$x-$s",($x=="Rows"&&$X&&$S["Engine"]==($df=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($nf[$x]))$nf[$x]+=($S["Engine"]!="InnoDB"||$x!="Data_free"?$S[$x]:0);}elseif(array_key_exists($x,$S))json_row("$x-$s");}}}foreach($nf as$x=>$X)json_row("sum-$x",number_format($X,0,'.',','));json_row("");}elseif($_GET["script"]=="kill")$f->query("KILL ".(+$_POST["kill"]));else{foreach(count_tables($b->databases())as$i=>$X)json_row("tables-".js_escape($i),$X);json_row("");}exit;}else{$wf=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($wf&&!$j&&!$_POST["search"]){$I=true;$B="";if($w=="sql"&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$I=truncate_tables($_POST["tables"]);$B='Tables have been truncated.';}elseif($_POST["move"]){$I=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$B='Tables have been moved.';}elseif($_POST["copy"]){$I=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$B='Tables have been copied.';}elseif($_POST["drop"]){if($_POST["views"])$I=drop_views($_POST["views"]);if($I&&$_POST["tables"])$I=drop_tables($_POST["tables"]);$B='Tables have been dropped.';}elseif($w!="sql"){$I=($w=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$B='Tables have been optimized.';}elseif($_POST["tables"]&&($I=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"]))))){while($K=$I->fetch_assoc())$B.="".h($K["Table"]).": ".h($K["Msg_text"])."
";}queries_redirect(substr(ME,0,-1),$B,$I);}page_header(($_GET["ns"]==""?'Database'.": ".h(DB):'Schema'.": ".h($_GET["ns"])),$j,true);if($b->homepage()){if($_GET["ns"]!==""){echo"

".'Tables and views'."

\n";$vf=tables_list();if(!$vf)echo"

".'No tables.'."\n";else{echo"

\n","

".'Search data in tables'.": \n";if($_POST["search"]&&$_POST["query"]!="")search_tables();echo"\n",'\n";foreach($vf as$D=>$U){$fg=($U!==null&&!eregi("table",$U));echo'
',''.'Table',''.'Engine',''.'Collation',''.'Data Length',''.'Index Length',''.'Data Free',''.'Auto Increment',''.'Rows',(support("comment")?''.'Comment':''),"
'.checkbox(($fg?"views[]":"tables[]"),$D,in_array($D,$wf,true),"","formUncheck('check-all');"),''.h($D).'';if($fg){echo''.'View'.'','?';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",'Alter table'),"Index_length"=>array("indexes",'Alter indexes'),"Data_free"=>array("edit",'New item'),"Auto_increment"=>array("auto_increment=1&create",'Alter table'),"Rows"=>array("select",'Select data'),)as$x=>$z)echo($z?"?":" ");}echo(support("comment")?" ":"");}echo"
 ".sprintf('%d in total',count($vf)),"".nbsp($w=="sql"?$f->result("SELECT @@storage_engine"):""),"".nbsp(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$x)echo" ";echo"
\n","\n";if(!information_schema(DB)){echo"

".(ereg('^(sql|sqlite|pgsql)$',$w)?($w!="sqlite"?" ":"")." ":"").($w=="sql"?" ":"")." \n";$h=(support("scheme")?schemas():$b->databases());if(count($h)!=1&&$w!="sqlite"){$i=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"

".'Move to other database'.": ",($h?html_select("target",$h,$i):'')," ",(support("copy")?" ":""),"\n";}echo"\n";}echo"

\n";}echo'

'.'Create table'."\n";if(support("view"))echo''.'Create view'."\n";if(support("routine")){echo"

".'Routines'."

\n";$Pe=routines();if($Pe){echo"\n",'\n";odd('');foreach($Pe as$K){echo'','
'.'Name'.''.'Type'.''.'Return type'." 
'.h($K["ROUTINE_NAME"]).'',''.h($K["ROUTINE_TYPE"]),''.h($K["DTD_IDENTIFIER"]),''.'Alter'."";}echo"
\n";}echo'

'.(support("procedure")?''.'Create procedure'.' ':'').''.'Create function'."\n";}if(support("event")){echo"

".'Events'."

\n";$L=get_rows("SHOW EVENTS");if($L){echo"\n","\n";foreach($L as$K){echo"",'
".'Name'."".'Schedule'."".'Start'."".'End'."
'.h($K["Name"])."","".($K["Execute at"]?'At given time'."".$K["Execute at"]:'Every'." ".$K["Interval value"]." ".$K["Interval field"]."$K[Starts]"),"$K[Ends]";}echo"
\n";$Sb=$f->result("SELECT @@event_scheduler");if($Sb&&$Sb!="ON")echo"

event_scheduler: ".h($Sb)."\n";}echo'

'.'Create event'."\n";}if($vf)echo"\n";}}}page_footer();