',($T=="PROCEDURE"?"| ".html_select("fields[$s][inout]",explode("|",$Xd),$n["inout"]):""),' | ';if($jc){echo'';}echo'';edit_type("fields[$s]",$n,$ob,$ld);if($T=="TABLE"){echo' | ',checkbox("fields[$s][null]",1,$n["null"],"","","block","label-null"),' | | ',checkbox("fields[$s][has_default]",1,$n["has_default"],"","","","label-default"),'',(support("comment")?" | ":"");}echo" | ",(support("move_col")?" "." "." ":""),($If==""||support("drop_col")?"":"");}}function
process_fields(&$o){$mf=0;if($_POST["up"]){$se=0;foreach($o
as$y=>$n){if(key($_POST["up"])==$y){unset($o[$y]);array_splice($o,$se,0,array($n));break;}if(isset($n["field"]))$se=$mf;$mf++;}}elseif($_POST["down"]){$nd=false;foreach($o
as$y=>$n){if(isset($n["field"])&&$nd){unset($o[key($_POST["down"])]);array_splice($o,$mf,0,array($nd));break;}if(key($_POST["down"])==$y)$nd=$n;$mf++;}}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($sd,$vg,$e,$tf){if(!$vg)return
true;if($vg==array("ALL PRIVILEGES","GRANT OPTION"))return($sd=="GRANT"?queries("$sd ALL PRIVILEGES$tf WITH GRANT OPTION"):queries("$sd ALL PRIVILEGES$tf")&&queries("$sd GRANT OPTION$tf"));return
queries("$sd ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$vg).$e).$tf);}function
drop_create($nc,$i,$oc,$gi,$qc,$B,$Se,$Qe,$Re,$qf,$df){if($_POST["drop"])query_redirect($nc,$B,$Se);elseif($qf=="")query_redirect($i,$B,$Re);elseif($qf!=$df){$Mb=queries($i);queries_redirect($B,$Qe,$Mb&&queries($nc));if($Mb)queries($oc);}else
queries_redirect($B,$Qe,queries($gi)&&queries($qc)&&queries($nc)&&queries($i));}function
create_trigger($tf,$J){global$x;$li=" $J[Timing] $J[Event]".(preg_match('~ OF~',$J["Event"])?" $J[Of]":"");return"CREATE TRIGGER ".idf_escape($J["Trigger"]).($x=="mssql"?$tf.$li:$li.$tf).rtrim(" $J[Type]\n$J[Statement]",";").";";}function
create_routine($Zg,$J){global$Xd,$x;$N=array();$o=(array)$J["fields"];ksort($o);foreach($o
as$n){if($n["field"]!="")$N[]=(preg_match("~^($Xd)\$~",$n["inout"])?"$n[inout] ":"").idf_escape($n["field"]).process_type($n,"CHARACTER SET");}$cc=rtrim("\n$J[definition]",";");return"CREATE $Zg ".idf_escape(trim($J["name"]))." (".implode(", ",$N).")".(isset($_GET["function"])?" RETURNS".process_type($J["returns"],"CHARACTER SET"):"").($J["language"]?" LANGUAGE $J[language]":"").($x=="pgsql"?" AS ".q($cc):"$cc;");}function
remove_definer($G){return
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$G);}function
format_foreign_key($q){global$uf;$k=$q["db"];$hf=$q["ns"];return" FOREIGN KEY (".implode(", ",array_map('idf_escape',$q["source"])).") REFERENCES ".($k!=""&&$k!=$_GET["db"]?idf_escape($k).".":"").($hf!=""&&$hf!=$_GET["ns"]?idf_escape($hf).".":"").table($q["table"])." (".implode(", ",array_map('idf_escape',$q["target"])).")".(preg_match("~^($uf)\$~",$q["on_delete"])?" ON DELETE $q[on_delete]":"").(preg_match("~^($uf)\$~",$q["on_update"])?" ON UPDATE $q[on_update]":"");}function
tar_file($p,$qi){$I=pack("a100a8a8a8a12a12",$p,644,0,0,decoct($qi->size),decoct(time()));$gb=8*32;for($s=0;$ssend();echo
str_repeat("\0",511-($qi->size+511)%512);}function
ini_bytes($Wd){$X=ini_get($Wd);switch(strtolower(substr($X,-1))){case'g':$X*=1024;case'm':$X*=1024;case'k':$X*=1024;}return$X;}function
doc_link($eg,$hi="?"){global$x,$g;$qh=$g->server_info;$cj=preg_replace('~^(\d\.?\d).*~s','\1',$qh);$Ri=array('sql'=>"https://dev.mysql.com/doc/refman/$cj/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/$cj/",'mssql'=>"https://msdn.microsoft.com/library/",'oracle'=>"https://www.oracle.com/pls/topic/lookup?ctx=db".preg_replace('~^.* (\d+)\.(\d+)\.\d+\.\d+\.\d+.*~s','\1\2',$qh)."&id=",);if(preg_match('~MariaDB~',$qh)){$Ri['sql']="https://mariadb.com/kb/en/library/";$eg['sql']=(isset($eg['mariadb'])?$eg['mariadb']:str_replace(".html","/",$eg['sql']));}return($eg[$x]?"$hi":"");}function
ob_gzencode($P){return
gzencode($P);}function
db_size($k){global$g;if(!$g->select_db($k))return"?";$I=0;foreach(table_status()as$R)$I+=$R["Data_length"]+$R["Index_length"];return
format_number($I);}function
set_utf8mb4($i){global$g;static$N=false;if(!$N&&preg_match('~\butf8mb4~i',$i)){$N=true;echo"SET NAMES ".charset($g).";\n\n";}}function
connect_error(){global$b,$g,$ti,$m,$mc;if(DB!=""){header("HTTP/1.1 404 Not Found");page_header(lang(37).": ".h(DB),lang(112),true);}else{if($_POST["db"]&&!$m)queries_redirect(substr(ME,0,-1),lang(113),drop_databases($_POST["db"]));page_header(lang(114),$m,false);$xa=['database'=>lang(115),'privileges'=>lang(72),'processlist'=>lang(116),'variables'=>lang(117),'status'=>lang(118),];$A=[];foreach($xa
as$y=>$X){if(support($y))$A[]="$X";}echo
generate_linksbar($A)," ".lang(119,$mc[DRIVER],"".h($g->server_info)."","$g->extension")."\n"," ".lang(120,"".h(logged_user())."")."\n";$j=$b->databases();if($j){$gh=support("scheme");$ob=collations();echo" \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;}if(support("scheme")){if(DB!=""&&$_GET["ns"]!==""){if(!isset($_GET["ns"]))redirect(preg_replace('~ns=[^&]*&~','',ME)."ns=".get_schema());if(!set_schema($_GET["ns"])){header("HTTP/1.1 404 Not Found");page_header(lang(78).": ".h($_GET["ns"]),lang(128),true);page_footer("ns");exit;}}}$uf="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class
TmpFile{var$handler;var$size;function
__construct(){$this->handler=tmpfile();}function
write($Fb){$this->size+=strlen($Fb);fwrite($this->handler,$Fb);}function
send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$Dc="'(?:''|[^'\\\\]|\\\\.)*'";$Xd="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"])){$a=$_GET["download"];$o=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$L=array(idf_escape($_GET["field"]));$H=$l->select($a,$L,array(where($_GET,$o)),$L);$J=($H?$H->fetch_row():array());echo$l->value($J[0],$o[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$o=fields($a);if(!$o)$m=error();$R=table_status1($a,true);$D=$b->tableName($R);page_header(($o&&is_view($R)?$R['Engine']=='materialized view'?lang(129):lang(130):lang(131)).": ".($D!=""?$D:h($a)),$m);$b->selectLinks($R);$ub=$R["Comment"];if($ub!="")echo"".lang(51).": ".h($ub)."\n";if($o)$b->tableStructurePrint($o);if(!is_view($R)){if(support("indexes")){echo" ".lang(132)."\n";$w=indexes($a);if($w)$b->tableIndexesPrint($w);echo''.lang(133)."\n";}if(fk_support($R)){echo" ".lang(100)."\n";$ld=foreign_keys($a);if($ld){echo"\n","| ".lang(134)." | ".lang(135)." | ".lang(103)." | ".lang(102)." | | \n";foreach($ld
as$D=>$q){echo"","| ".implode(", ",array_map('h',$q["source"])).""," | ".($q["db"]!=""?"".h($q["db"]).".":"").($q["ns"]!=""?"".h($q["ns"]).".":"").h($q["table"])."","(".implode(", ",array_map('h',$q["target"])).")"," | ".h($q["on_delete"])."\n"," | ".h($q["on_update"])."\n",' | '.lang(136).'';}echo" | \n";}echo''.lang(137)."\n";}}if(support(is_view($R)?"view_trigger":"trigger")){echo" ".lang(138)."\n";$Ei=triggers($a);if($Ei){echo"\n";foreach($Ei
as$y=>$X)echo"| ".h($X[0])." | ".h($X[1])." | ".h($y)." | ".lang(136)."\n";echo" |
|---|
\n";}echo''.lang(139)."\n";}}elseif(isset($_GET["schema"])){page_header(lang(71),"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Wh=array();$Xh=array();$ea=($_GET["schema"]?$_GET["schema"]:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$He,PREG_SET_ORDER);foreach($He
as$s=>$C){$Wh[$C[1]]=array($C[2],$C[3]);$Xh[]="\n\t'".js_escape($C[1])."': [ $C[2], $C[3] ]";}$ui=0;$Ra=-1;$fh=array();$Kg=array();$we=array();foreach(table_status('',true)as$Q=>$R){if(is_view($R))continue;$kg=0;$fh[$Q]["fields"]=array();foreach(fields($Q)as$D=>$n){$kg+=1.25;$n["pos"]=$kg;$fh[$Q]["fields"][$D]=$n;}$fh[$Q]["pos"]=($Wh[$Q]?$Wh[$Q]:array($ui,0));foreach($b->foreignKeys($Q)as$X){if(!$X["db"]){$ue=$Ra;if($Wh[$Q][1]||$Wh[$X["table"]][1])$ue=min(floatval($Wh[$Q][1]),floatval($Wh[$X["table"]][1]))-1;else$Ra-=.1;while($we[(string)$ue])$ue-=.0001;$fh[$Q]["references"][$X["table"]][(string)$ue]=array($X["source"],$X["target"]);$Kg[$X["table"]][$Q][(string)$ue]=$X["target"];$we[(string)$ue]=true;}}$ui=max($ui,$fh[$Q]["pos"][0]+2.5+$kg);}echo'
';foreach($fh
as$D=>$Q){echo" ",' '.h($D)."",script("qsl('div').onmousedown = schemaMousedown;");foreach($Q["fields"]as$n){$X=' '.h($n["field"]).'';echo" ".($n["primary"]?" $X":$X);}foreach((array)$Q["references"]as$di=>$Lg){foreach($Lg
as$ue=>$Hg){$ve=$ue-$Wh[$D][1];$s=0;foreach($Hg[0]as$Ah)echo"\n ";}}foreach((array)$Kg[$D]as$di=>$Lg){foreach($Lg
as$ue=>$e){$ve=$ue-$Wh[$D][1];$s=0;foreach($e
as$ci)echo"\n ";}}echo"\n \n";}foreach($fh
as$D=>$Q){foreach((array)$Q["references"]as$di=>$Lg){foreach($Lg
as$ue=>$Hg){$Ve=$ui;$Le=-10;foreach($Hg[0]as$y=>$Ah){$lg=$Q["pos"][0]+$Q["fields"][$Ah]["pos"];$mg=$fh[$di]["pos"][0]+$fh[$di]["fields"][$Hg[1][$y]]["pos"];$Ve=min($Ve,$lg,$mg);$Le=max($Le,$lg,$mg);}echo" \n";}}}echo'
',lang(140),'
';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$m){$Ib="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$y)$Ib.="&$y=".urlencode($_POST[$y]);cookie("adminer_export",substr($Ib,1));$S=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$Qc=dump_headers((count($S)==1?key($S):DB),(DB==""||count($S)>1));$fe=preg_match('~sql~',$_POST["format"]);if($fe){echo"-- Adminer $ia ".$mc[DRIVER]." ".str_replace("\n"," ",$g->server_info)." dump\n\n";if($x=="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 = ''");}}$Nh=$_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){$b->dumpDatabase($k);if($g->select_db($k)){if($fe&&preg_match('~CREATE~',$Nh)&&($i=$g->result("SHOW CREATE DATABASE ".idf_escape($k),1))){set_utf8mb4($i);if($Nh=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($k).";\n";echo"$i;\n";}if($fe){if($Nh)echo
use_sql($k).";\n\n";$Of="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$Zg){foreach(get_rows("SHOW $Zg STATUS WHERE Db = ".q($k),null,"-- ")as$J){$i=remove_definer($g->result("SHOW CREATE $Zg ".idf_escape($J["Name"]),2));set_utf8mb4($i);$Of.=($Nh!='DROP+CREATE'?"DROP $Zg IF EXISTS ".idf_escape($J["Name"]).";;\n":"")."$i;;\n\n";}}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$J){$i=remove_definer($g->result("SHOW CREATE EVENT ".idf_escape($J["Name"]),3));set_utf8mb4($i);$Of.=($Nh!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($J["Name"]).";;\n":"")."$i;;\n\n";}}if($Of)echo"DELIMITER ;;\n\n$Of"."DELIMITER ;\n\n";}if($_POST["table_style"]||$_POST["data_style"]){$ej=array();foreach(table_status('',true)as$D=>$R){$Q=(DB==""||in_array($D,(array)$_POST["tables"]));$Sb=(DB==""||in_array($D,(array)$_POST["data"]));if($Q||$Sb){if($Qc=="tar"){$qi=new
TmpFile;ob_start(array($qi,'write'),1e5);}$b->dumpTable($D,($Q?$_POST["table_style"]:""),(is_view($R)?2:0));if(is_view($R))$ej[]=$D;elseif($Sb){$o=fields($D);$b->dumpData($D,$_POST["data_style"],"SELECT *".convert_fields($o,$o)." FROM ".table($D));}if($fe&&$_POST["triggers"]&&$Q&&($Ei=trigger_sql($D)))echo"\nDELIMITER ;;\n$Ei\nDELIMITER ;\n";if($Qc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$k/")."$D.csv",$qi);}elseif($fe)echo"\n";}}if(function_exists('foreign_keys_sql')){foreach(table_status('',true)as$D=>$R){$Q=(DB==""||in_array($D,(array)$_POST["tables"]));if($Q&&!is_view($R))echo
foreign_keys_sql($D);}}foreach($ej
as$dj)$b->dumpTable($dj,$_POST["table_style"],1);if($Qc=="tar")echo
pack("x512");}}}if($fe)echo"-- ".$g->result("SELECT NOW()")."\n";exit;}page_header(lang(74),$m,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
';$dd=true;foreach($pg
as$y=>$X){if($y!=""&&$X>1){echo($dd?"":" ")."".h($y)."";$dd=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(72));echo' '.lang(146)."";$H=$g->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$sd=$H;if(!$H)$H=$g->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");echo" \n";}elseif(isset($_GET["sql"])){if(!$m&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$Fd=&get_session("queries");$Ed=&$Fd[DB];if(!$m&&$_POST["clear"]){$Ed=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?lang(73):lang(65)),$m);if(!$m&&$_POST){$pd=false;if(!isset($_GET["import"]))$G=$_POST["query"];elseif($_POST["webfile"]){$Eh=$b->importServerPath();$pd=@fopen((file_exists($Eh)?$Eh:"compress.zlib://$Eh.gz"),"rb");$G=($pd?fread($pd,1e6):false);}else$G=get_file("sql_file",true);if(is_string($G)){if(function_exists('memory_get_usage'))@ini_set("memory_limit",max(ini_bytes("memory_limit"),2*strlen($G)+memory_get_usage()+8e6));if($G!=""&&strlen($G)<1e6){$_g=$G.(preg_match("~;[ \t\r\n]*\$~",$G)?"":";");if(!$Ed||reset(end($Ed))!=$_g){restart_session();$Ed[]=array($_g,time());set_session("queries",$Fd);stop_session();}}$Bh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$ec=";";$mf=0;$Ac=true;$h=connect();if(is_object($h)&&DB!=""){$h->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$h);}$tb=0;$Fc=array();$Vf='[\'"'.($x=="sql"?'`#':($x=="sqlite"?'`[':($x=="mssql"?'[':''))).']|/\*|-- |$'.($x=="pgsql"?'|\$[^$]*\$':'');$vi=microtime(true);parse_str($_COOKIE["adminer_export"],$za);$sc=$b->dumpFormat();unset($sc["sql"]);while($G!=""){if(!$mf&&preg_match("~^$Bh*+DELIMITER\\s+(\\S+)~i",$G,$C)){$ec=$C[1];$G=substr($G,strlen($C[0]));}else{preg_match('('.preg_quote($ec)."\\s*|$Vf)",$G,$C,PREG_OFFSET_CAPTURE,$mf);list($nd,$kg)=$C[0];if(!$nd&&$pd&&!feof($pd))$G.=fread($pd,1e5);else{if(!$nd&&rtrim($G)=="")break;$mf=$kg+strlen($nd);if($nd&&rtrim($nd)!=$ec){while(preg_match('('.($nd=='/*'?'\*/':($nd=='['?']':(preg_match('~^-- |^#~',$nd)?"\n":preg_quote($nd)."|\\\\."))).'|$)s',$G,$C,PREG_OFFSET_CAPTURE,$mf)){$dh=$C[0][0];if(!$dh&&$pd&&!feof($pd))$G.=fread($pd,1e5);else{$mf=$C[0][1]+strlen($dh);if($dh[0]!="\\")break;}}}else{$Ac=false;$_g=substr($G,0,$kg);$tb++;$sg="".$b->sqlCommandQuery($_g)." \n";$sg.=generate_linksbar(["".lang(47).""]);if($x=="sqlite"&&preg_match("~^$Bh*+ATTACH\\b~i",$_g,$C)){echo$sg,"".lang(147)."\n";$Fc[]=" $tb";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$sg;ob_flush();flush();}$Ih=microtime(true);if($g->multi_query($_g)&&is_object($h)&&preg_match("~^$Bh*+USE\\b~i",$_g))$h->query($_g);do{$H=$g->store_result();if($g->error){echo($_POST["only_errors"]?$sg:"")," ".lang(148).($g->errno?" ($g->errno)":"").": ".error()."\n";$Fc[]=" $tb";if($_POST["error_stops"])break
2;}else{$ji=" (".format_time($Ih).")".(strlen($_g)<1000?" ".lang(10)."":"");$Aa=$g->affected_rows;$hj=($_POST["only_errors"]?"":$l->warnings());$ij="warnings-$tb";if($hj)$ji.=", ".lang(46)."".script("qsl('a').onclick = partial(toggle, '$ij');","");$Nc=null;$Oc="explain-$tb";if(is_object($H)){$z=$_POST["limit"];$Hf=select($H,$h,array(),$z);if(!$_POST["only_errors"]){echo" \n";}}else{if(preg_match("~^$Bh*+(CREATE|DROP|ALTER)$Bh++(DATABASE|SCHEMA)\\b~i",$_g)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"".lang(151,$Aa)."$ji\n";}echo($hj?" \n$hj \n":"");if($Nc){echo"\n";select($Nc,$h,$Hf);echo" \n";}}$Ih=microtime(true);}while($g->next_result());}$G=substr($G,$mf);$mf=0;}}}}if($Ac)echo"".lang(152)."\n";elseif($_POST["only_errors"]){echo" ".lang(153,$tb-count($Fc))," (".format_time($vi).")\n";}elseif($Fc&&$tb>1)echo" ".lang(148).": ".implode("",$Fc)."\n";}else
echo" ".upload_error($G)."\n";}echo'
';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$o=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$o):""):where($_GET,$o));$Oi=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($o
as$D=>$n){if(!isset($n["privileges"][$Oi?"update":"insert"])||$b->fieldName($n)==""||$n["generated"])unset($o[$D]);}if($_POST&&!$m&&!isset($_GET["select"])){$B=$_POST["referer"];if($_POST["insert"])$B=($Oi?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$B))$B=ME."select=".urlencode($a);$w=indexes($a);$Ji=unique_array($_GET["where"],$w);$Cg="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($B,lang(166),$l->delete($a,$Cg,!$Ji));else{$N=array();foreach($o
as$D=>$n){$X=process_input($n);if($X!==false&&$X!==null)$N[idf_escape($D)]=$X;}if($Oi){if(!$N)redirect($B);queries_redirect($B,lang(167),$l->update($a,$N,$Cg,!$Ji));if(is_ajax()){page_headers();page_messages($m);exit;}}else{$H=$l->insert($a,$N);$te=($H?last_id():0);queries_redirect($B,lang(168,($te?" $te":"")),$H);}}}$J=null;if($_POST["save"])$J=(array)$_POST["fields"];elseif($Z){$L=array();foreach($o
as$D=>$n){if(isset($n["privileges"]["select"])){$Ha=convert_field($n);if($_POST["clone"]&&$n["auto_increment"])$Ha="''";if($x=="sql"&&preg_match("~enum|set~",$n["type"]))$Ha="1*".idf_escape($D);$L[]=($Ha?"$Ha AS ":"").idf_escape($D);}}$J=array();if(!support("table"))$L=array("*");if($L){$H=$l->select($a,$L,array($Z),$L,array(),(isset($_GET["select"])?2:1));if(!$H)$m=error();else{$J=$H->fetch_assoc();if(!$J)$J=false;}if(isset($_GET["select"])&&(!$J||$H->fetch_assoc()))$J=null;}}if(!support("table")&&!$o){if(!$Z){$H=$l->select($a,array("*"),$Z,array("*"));$J=($H?$H->fetch_assoc():false);if(!$J)$J=array($l->primary=>"");}if($J){foreach($J
as$y=>$X){if(!$Z)$J[$y]=null;$o[$y]=array("field"=>$y,"null"=>($y!=$l->primary),"auto_increment"=>($y==$l->primary));}}}edit_form($a,$o,$J,$Oi);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Xf=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$y)$Xf[$y]=$y;$Jg=referencable_primary($a);$ld=array();foreach($Jg
as$Uh=>$n)$ld[str_replace("`","``",$Uh)."`".str_replace("`","``",$n["field"])]=$Uh;$Kf=array();$R=array();if($a!=""){$Kf=fields($a);$R=table_status($a);if(!$R)$m=lang(9);}$J=$_POST;$J["fields"]=(array)$J["fields"];if($J["auto_increment_col"])$J["fields"][$J["auto_increment_col"]]["auto_increment"]=true;if($_POST)set_adminer_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($J["fields"])&&!$m){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(169),drop_tables(array($a)));else{$o=array();$Ea=array();$Si=false;$jd=array();$Jf=reset($Kf);$Ca=" FIRST";foreach($J["fields"]as$y=>$n){$q=$ld[$n["type"]];$Fi=($q!==null?$Jg[$q]:$n);if($n["field"]!=""){if(!$n["has_default"])$n["default"]=null;if($y==$J["auto_increment_col"])$n["auto_increment"]=true;$xg=process_field($n,$Fi);$Ea[]=array($n["orig"],$xg,$Ca);if(!$Jf||$xg!=process_field($Jf,$Jf)){$o[]=array($n["orig"],$xg,$Ca);if($n["orig"]!=""||$Ca)$Si=true;}if($q!==null)$jd[idf_escape($n["field"])]=($a!=""&&$x!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$ld[$n["type"]],'source'=>array($n["field"]),'target'=>array($Fi["field"]),'on_delete'=>$n["on_delete"],));$Ca=" AFTER ".idf_escape($n["field"]);}elseif($n["orig"]!=""){$Si=true;$o[]=array($n["orig"]);}if($n["orig"]!=""){$Jf=next($Kf);if(!$Jf)$Ca="";}}$Zf="";if($Xf[$J["partition_by"]]){$ag=array();if($J["partition_by"]=='RANGE'||$J["partition_by"]=='LIST'){foreach(array_filter($J["partition_names"])as$y=>$X){$Y=$J["partition_values"][$y];$ag[]="\n PARTITION ".idf_escape($X)." VALUES ".($J["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$Zf.="\nPARTITION BY $J[partition_by]($J[partition])".($ag?" (".implode(",",$ag)."\n)":($J["partitions"]?" PARTITIONS ".(+$J["partitions"]):""));}elseif(support("partitioning")&&preg_match("~partitioned~",$R["Create_options"]))$Zf.="\nREMOVE PARTITIONING";$Pe=lang(170);if($a==""){cookie("adminer_engine",$J["Engine"]);$Pe=lang(171);}$D=trim($J["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($D),$Pe,alter_table($a,$D,($x=="sqlite"&&($Si||$jd)?$Ea:$o),$jd,($J["Comment"]!=$R["Comment"]?$J["Comment"]:null),($J["Engine"]&&$J["Engine"]!=$R["Engine"]?$J["Engine"]:""),($J["Collation"]&&$J["Collation"]!=$R["Collation"]?$J["Collation"]:""),($J["Auto_increment"]!=""?number($J["Auto_increment"]):""),$Zf));}}page_header(($a!=""?lang(44):lang(75)),$m,array("table"=>$a),h($a));if(!$_POST){$J=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($U["int"])?"int":(isset($U["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$J=$R;$J["name"]=$a;$J["fields"]=array();if(!$_GET["auto_increment"])$J["Auto_increment"]="";foreach($Kf
as$n){$n["has_default"]=isset($n["default"]);$J["fields"][]=$n;}if(support("partitioning")){$qd="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($a);$H=$g->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $qd ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($J["partition_by"],$J["partitions"],$J["partition"])=$H->fetch_row();$ag=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $qd AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$ag[""]="";$J["partition_names"]=array_keys($ag);$J["partition_values"]=array_values($ag);}}}$ob=collations();$Cc=engines();foreach($Cc
as$Bc){if(!strcasecmp($Bc,$J["Engine"])){$J["Engine"]=$Bc;break;}}echo'
';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Pd=array("PRIMARY","UNIQUE","INDEX");$R=table_status($a,true);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$R["Engine"]))$Pd[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$R["Engine"]))$Pd[]="SPATIAL";$w=indexes($a);$qg=array();if($x=="mongo"){$qg=$w["_id_"];unset($Pd[0]);unset($w["_id_"]);}$J=$_POST;if($_POST&&!$m&&!$_POST["add"]&&!$_POST["drop_col"]){$c=array();foreach($J["indexes"]as$v){$D=$v["name"];if(in_array($v["type"],$Pd)){$e=array();$ze=array();$gc=array();$N=array();ksort($v["columns"]);foreach($v["columns"]as$y=>$d){if($d!=""){$ye=$v["lengths"][$y];$fc=$v["descs"][$y];$N[]=idf_escape($d).($ye?"(".(+$ye).")":"").($fc?" DESC":"");$e[]=$d;$ze[]=($ye?$ye:null);$gc[]=$fc;}}if($e){$Mc=$w[$D];if($Mc){ksort($Mc["columns"]);ksort($Mc["lengths"]);ksort($Mc["descs"]);if($v["type"]==$Mc["type"]&&array_values($Mc["columns"])===$e&&(!$Mc["lengths"]||array_values($Mc["lengths"])===$ze)&&array_values($Mc["descs"])===$gc){unset($w[$D]);continue;}}$c[]=array($v["type"],$D,$N);}}}foreach($w
as$D=>$Mc)$c[]=array($Mc["type"],$D,"DROP");if(!$c)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),lang(180),alter_indexes($a,$c));}page_header(lang(132),$m,array("table"=>$a),h($a));$o=array_keys(fields($a));if($_POST["add"]){foreach($J["indexes"]as$y=>$v){if($v["columns"][count($v["columns"])]!="")$J["indexes"][$y]["columns"][]="";}$v=end($J["indexes"]);if($v["type"]||array_filter($v["columns"],'strlen'))$J["indexes"][]=array("columns"=>array(1=>""));}if(!$J){foreach($w
as$y=>$v){$w[$y]["name"]=$y;$w[$y]["columns"][]="";}$w[]=array("columns"=>array(1=>""));$J["indexes"]=$w;}echo'
';}elseif(isset($_GET["database"])){$J=$_POST;if($_POST&&!$m&&!isset($_POST["add_x"])){$D=trim($J["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(184),drop_databases(array(DB)));}elseif(DB!==$D){if(DB!=""){$_GET["db"]=$D;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($D),lang(185),rename_database($D,$J["collation"]));}else{$j=explode("\n",str_replace("\r","",$D));$Oh=true;$se="";foreach($j
as$k){if(count($j)==1||$k!=""){if(!create_database($k,$J["collation"]))$Oh=false;$se=$k;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($se),lang(186),$Oh);}}else{if(!$J["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($D).(preg_match('~^[a-z0-9_]+$~i',$J["collation"])?" COLLATE $J[collation]":""),substr(ME,0,-1),lang(187));}}page_header(DB!=""?lang(68):lang(115),$m,array(),h(DB));$ob=collations();$D=DB;if($_POST)$D=$J["name"];elseif(DB!="")$J["collation"]=db_collation(DB,$ob);elseif($x=="sql"){foreach(get_vals("SHOW GRANTS")as$sd){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$sd,$C)&&$C[1]){$D=stripcslashes(idf_unescape("`$C[2]`"));break;}}}echo'
';}elseif(isset($_GET["scheme"])){$J=$_POST;if($_POST&&!$m){$_=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$_,lang(188));else{$D=trim($J["name"]);$_.=urlencode($D);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($D),$_,lang(189));elseif($_GET["ns"]!=$D)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($D),$_,lang(190));else
redirect($_);}}page_header($_GET["ns"]!=""?lang(69):lang(70),$m);if(!$J)$J["name"]=$_GET["ns"];echo'
';}elseif(isset($_GET["call"])){$da=($_GET["name"]?$_GET["name"]:$_GET["call"]);page_header(lang(191).": ".h($da),$m);$Zg=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Nd=array();$Of=array();foreach($Zg["fields"]as$s=>$n){if(substr($n["inout"],-3)=="OUT")$Of[$s]="@".idf_escape($n["field"])." AS ".idf_escape($n["field"]);if(!$n["inout"]||substr($n["inout"],0,2)=="IN")$Nd[]=$s;}if(!$m&&$_POST){$Za=array();foreach($Zg["fields"]as$y=>$n){if(in_array($y,$Nd)){$X=process_input($n);if($X===false)$X="''";if(isset($Of[$y]))$g->query("SET @".idf_escape($n["field"])." = $X");}$Za[]=(isset($Of[$y])?"@".idf_escape($n["field"]):$X);}$G=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($da)."(".implode(", ",$Za).")";$Ih=microtime(true);$H=$g->multi_query($G);$Aa=$g->affected_rows;echo$b->selectQuery($G,$Ih,!$H);if(!$H)echo"".error()."\n";else{$h=connect();if(is_object($h))$h->select_db(DB);do{$H=$g->store_result();if(is_object($H))select($H,$h);else
echo" ".lang(192,$Aa)." ".@date("H:i:s")."\n";}while($g->next_result());if($Of)select($g->query("SELECT ".implode(", ",$Of)));}}echo'
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$D=$_GET["name"];$J=$_POST;if($_POST&&!$m&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$Pe=($_POST["drop"]?lang(193):($D!=""?lang(194):lang(195)));$B=ME."table=".urlencode($a);if(!$_POST["drop"]){$J["source"]=array_filter($J["source"],'strlen');ksort($J["source"]);$ci=array();foreach($J["source"]as$y=>$X)$ci[$y]=$J["target"][$y];$J["target"]=$ci;}if($x=="sqlite")queries_redirect($B,$Pe,recreate_table($a,$a,array(),array(),array(" $D"=>($_POST["drop"]?"":" ".format_foreign_key($J)))));else{$c="ALTER TABLE ".table($a);$nc="\nDROP ".($x=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($D);if($_POST["drop"])query_redirect($c.$nc,$B,$Pe);else{query_redirect($c.($D!=""?"$nc,":"")."\nADD".format_foreign_key($J),$B,$Pe);$m=lang(196)." $m";}}}page_header(lang(197),$m,array("table"=>$a),h($a));if($_POST){ksort($J["source"]);if($_POST["add"])$J["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$J["target"]=array();}elseif($D!=""){$ld=foreign_keys($a);$J=$ld[$D];$J["source"][]="";}else{$J["table"]=$a;$J["source"]=array("");}echo'
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$J=$_POST;$Lf="VIEW";if($x=="pgsql"&&$a!=""){$O=table_status($a);$Lf=strtoupper($O["Engine"]);}if($_POST&&!$m){$D=trim($J["name"]);$Ha=" AS\n$J[select]";$B=ME."table=".urlencode($D);$Pe=lang(201);$T=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$D&&$x!="sqlite"&&$T=="VIEW"&&$Lf=="VIEW")query_redirect(($x=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($D).$Ha,$B,$Pe);else{$ei=$D."_adminer_".uniqid();drop_create("DROP $Lf ".table($a),"CREATE $T ".table($D).$Ha,"DROP $T ".table($D),"CREATE $T ".table($ei).$Ha,"DROP $T ".table($ei),($_POST["drop"]?substr(ME,0,-1):$B),lang(202),$Pe,lang(203),$a,$D);}}if(!$_POST&&$a!=""){$J=view($a);$J["name"]=$a;$J["materialized"]=($Lf!="VIEW");if(!$m)$m=error();}page_header(($a!=""?lang(43):lang(204)),$m,array("table"=>$a),h($a));echo'
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$ae=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Kh=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$J=$_POST;if($_POST&&!$m){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(205));elseif(in_array($J["INTERVAL_FIELD"],$ae)&&isset($Kh[$J["STATUS"]])){$eh="\nON SCHEDULE ".($J["INTERVAL_VALUE"]?"EVERY ".q($J["INTERVAL_VALUE"])." $J[INTERVAL_FIELD]".($J["STARTS"]?" STARTS ".q($J["STARTS"]):"").($J["ENDS"]?" ENDS ".q($J["ENDS"]):""):"AT ".q($J["STARTS"]))." ON COMPLETION".($J["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?lang(206):lang(207)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$eh.($aa!=$J["EVENT_NAME"]?"\nRENAME TO ".idf_escape($J["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($J["EVENT_NAME"]).$eh)."\n".$Kh[$J["STATUS"]]." COMMENT ".q($J["EVENT_COMMENT"]).rtrim(" DO\n$J[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(208).": ".h($aa):lang(209)),$m);if(!$J&&$aa!=""){$K=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$J=reset($K);}echo'
';}elseif(isset($_GET["procedure"])){$da=($_GET["name"]?$_GET["name"]:$_GET["procedure"]);$Zg=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$J=$_POST;$J["fields"]=(array)$J["fields"];if($_POST&&!process_fields($J["fields"])&&!$m){$If=routine($_GET["procedure"],$Zg);$ei="$J[name]_adminer_".uniqid();drop_create("DROP $Zg ".routine_id($da,$If),create_routine($Zg,$J),"DROP $Zg ".routine_id($J["name"],$J),create_routine($Zg,array("name"=>$ei)+$J),"DROP $Zg ".routine_id($ei,$J),substr(ME,0,-1),lang(214),lang(215),lang(216),$da,$J["name"]);}page_header(($da!=""?(isset($_GET["function"])?lang(217):lang(218)).": ".h($da):(isset($_GET["function"])?lang(219):lang(220))),$m);if(!$_POST&&$da!=""){$J=routine($_GET["procedure"],$Zg);$J["name"]=$da;}$ob=get_vals("SHOW CHARACTER SET");sort($ob);$ah=routine_languages();echo'
';}elseif(isset($_GET["sequence"])){$fa=$_GET["sequence"];$J=$_POST;if($_POST&&!$m){$_=substr(ME,0,-1);$D=trim($J["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($fa),$_,lang(222));elseif($fa=="")query_redirect("CREATE SEQUENCE ".idf_escape($D),$_,lang(223));elseif($fa!=$D)query_redirect("ALTER SEQUENCE ".idf_escape($fa)." RENAME TO ".idf_escape($D),$_,lang(224));else
redirect($_);}page_header($fa!=""?lang(225).": ".h($fa):lang(226),$m);if(!$J)$J["name"]=$fa;echo'
';}elseif(isset($_GET["type"])){$ga=$_GET["type"];$J=$_POST;if($_POST&&!$m){$_=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ga),$_,lang(227));else
query_redirect("CREATE TYPE ".idf_escape(trim($J["name"]))." $J[as]",$_,lang(228));}page_header($ga!=""?lang(229).": ".h($ga):lang(230),$m);if(!$J)$J["as"]="AS ";echo'
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$D=$_GET["name"];$Di=trigger_options();$J=(array)trigger($D,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$m&&in_array($_POST["Timing"],$Di["Timing"])&&in_array($_POST["Event"],$Di["Event"])&&in_array($_POST["Type"],$Di["Type"])){$tf=" ON ".table($a);$nc="DROP TRIGGER ".idf_escape($D).($x=="pgsql"?$tf:"");$B=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($nc,$B,lang(231));else{if($D!="")queries($nc);queries_redirect($B,($D!=""?lang(232):lang(233)),queries(create_trigger($tf,$_POST)));if($D!="")queries(create_trigger($tf,$J+array("Type"=>reset($Di["Type"]))));}}$J=$_POST;}page_header(($D!=""?lang(234).": ".h($D):lang(235)),$m,array("table"=>$a));echo'
';}elseif(isset($_GET["user"])){$ha=$_GET["user"];$vg=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$J){foreach(explode(",",($J["Privilege"]=="Grant option"?"":$J["Context"]))as$Gb)$vg[$Gb][$J["Privilege"]]=$J["Comment"];}$vg["Server Admin"]+=$vg["File access on server"];$vg["Databases"]["Create routine"]=$vg["Procedures"]["Create routine"];unset($vg["Procedures"]["Create routine"]);$vg["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$vg["Columns"][$X]=$vg["Tables"][$X];unset($vg["Server Admin"]["Usage"]);foreach($vg["Tables"]as$y=>$X)unset($vg["Databases"][$y]);$cf=array();if($_POST){foreach($_POST["objects"]as$y=>$X)$cf[$X]=(array)$cf[$X]+(array)$_POST["grants"][$y];}$td=array();$rf="";if(isset($_GET["host"])&&($H=$g->query("SHOW GRANTS FOR ".q($ha)."@".q($_GET["host"])))){while($J=$H->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$J[0],$C)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$C[1],$He,PREG_SET_ORDER)){foreach($He
as$X){if($X[1]!="USAGE")$td["$C[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$J[0]))$td["$C[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$J[0],$C))$rf=$C[1];}}if($_POST&&!$m){$sf=(isset($_GET["host"])?q($ha)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $sf",ME."privileges=",lang(238));else{$ef=q($_POST["user"])."@".q($_POST["host"]);$cg=$_POST["pass"];if($cg!=''&&!$_POST["hashed"]&&!min_version(8)){$cg=$g->result("SELECT PASSWORD(".q($cg).")");$m=!$cg;}$Mb=false;if(!$m){if($sf!=$ef){$Mb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $ef IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($cg));$m=!$Mb;}elseif($cg!=$rf)queries("SET PASSWORD FOR $ef = ".q($cg));}if(!$m){$Wg=array();foreach($cf
as$kf=>$sd){if(isset($_GET["grant"]))$sd=array_filter($sd);$sd=array_keys($sd);if(isset($_GET["grant"]))$Wg=array_diff(array_keys(array_filter($cf[$kf],'strlen')),$sd);elseif($sf==$ef){$pf=array_keys((array)$td[$kf]);$Wg=array_diff($pf,$sd);$sd=array_diff($sd,$pf);unset($td[$kf]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$kf,$C)&&(!grant("REVOKE",$Wg,$C[2]," ON $C[1] FROM $ef")||!grant("GRANT",$sd,$C[2]," ON $C[1] TO $ef"))){$m=true;break;}}}if(!$m&&isset($_GET["host"])){if($sf!=$ef)queries("DROP USER $sf");elseif(!isset($_GET["grant"])){foreach($td
as$kf=>$Wg){if(preg_match('~^(.+)(\(.*\))?$~U',$kf,$C))grant("REVOKE",array_keys($Wg),$C[2]," ON $C[1] FROM $ef");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(239):lang(240)),!$m);if($Mb)$g->query("DROP USER $ef");}}page_header((isset($_GET["host"])?lang(35).": ".h("$ha@$_GET[host]"):lang(146)),$m,array("privileges"=>array('',lang(72))));if($_POST){$J=$_POST;$td=$cf;}else{$J=$_GET+array("host"=>$g->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$J["pass"]=$rf;if($rf!="")$J["hashed"]=true;$td[(DB==""||$td?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'
';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$m){$ne=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$ne++;}queries_redirect(ME."processlist=",lang(245,$ne),$ne||!$_POST["kill"]);}}page_header(lang(116),$m);echo'
',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$R=table_status1($a);$w=indexes($a);$o=fields($a);$ld=column_foreign_keys($a);$nf=$R["Oid"];parse_str($_COOKIE["adminer_import"],$_a);$Xg=array();$e=array();$ii=null;foreach($o
as$y=>$n){$D=$b->fieldName($n);if(isset($n["privileges"]["select"])&&$D!=""){$e[$y]=html_entity_decode(strip_tags($D),ENT_QUOTES);if(is_shortable($n))$ii=$b->selectLengthProcess();}$Xg+=$n["privileges"];}list($L,$ud)=$b->selectColumnsProcess($e,$w);$ee=count($ud)selectSearchProcess($o,$w);$Ef=$b->selectOrderProcess($o,$w);$z=$b->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Ki=>$J){$Ha=convert_field($o[key($J)]);$L=array($Ha?$Ha:idf_escape(key($J)));$Z[]=where_check($Ki,$o);$I=$l->select($a,$L,$Z,$L);if($I)echo
reset($I->fetch_row());}exit;}$qg=$Mi=null;foreach($w
as$v){if($v["type"]=="PRIMARY"){$qg=array_flip($v["columns"]);$Mi=($L?$qg:array());foreach($Mi
as$y=>$X){if(in_array(idf_escape($y),$L))unset($Mi[$y]);}break;}}if($nf&&!$qg){$qg=$Mi=array($nf=>0);$w[]=array("type"=>"PRIMARY","columns"=>array($nf));}if($_POST&&!$m){$nj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$fb=array();foreach($_POST["check"]as$cb)$fb[]=where_check($cb,$o);$nj[]="((".implode(") OR (",$fb)."))";}$nj=($nj?"\nWHERE ".implode(" AND ",$nj):"");if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");$qd=($L?implode(", ",$L):"*").convert_fields($e,$o,$L)."\nFROM ".table($a);$wd=($ud&&$ee?"\nGROUP BY ".implode(", ",$ud):"").($Ef?"\nORDER BY ".implode(", ",$Ef):"");if(!is_array($_POST["check"])||$qg)$G="SELECT $qd$nj$wd";else{$Ii=array();foreach($_POST["check"]as$X)$Ii[]="(SELECT".limit($qd,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o).$wd,1).")";$G=implode(" UNION ALL ",$Ii);}$b->dumpData($a,"table",$G);exit;}if(!$b->selectEmailProcess($Z,$ld)){if($_POST["save"]||$_POST["delete"]){$H=true;$Aa=0;$N=array();if(!$_POST["delete"]){foreach($e
as$D=>$X){$X=process_input($o[$D]);if($X!==null&&($_POST["clone"]||$X!==false))$N[idf_escape($D)]=($X!==false?$X:idf_escape($D));}}if($_POST["delete"]||$N){if($_POST["clone"])$G="INTO ".table($a)." (".implode(", ",array_keys($N)).")\nSELECT ".implode(", ",$N)."\nFROM ".table($a);if($_POST["all"]||($qg&&is_array($_POST["check"]))||$ee){$H=($_POST["delete"]?$l->delete($a,$nj):($_POST["clone"]?queries("INSERT $G$nj"):$l->update($a,$N,$nj)));$Aa=$g->affected_rows;}else{foreach((array)$_POST["check"]as$X){$jj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o);$H=($_POST["delete"]?$l->delete($a,$jj,1):($_POST["clone"]?queries("INSERT".limit1($a,$G,$jj)):$l->update($a,$N,$jj,1)));if(!$H)break;$Aa+=$g->affected_rows;}}}$Pe=lang(249,$Aa);if($_POST["clone"]&&$H&&$Aa==1){$te=last_id();if($te)$Pe=lang(168," $te");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$Pe,$H);if(!$_POST["delete"]){edit_form($a,$o,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$m=lang(250);else{$H=true;$Aa=0;foreach($_POST["val"]as$Ki=>$J){$N=array();foreach($J
as$y=>$X){$y=bracket_escape($y,1);$N[idf_escape($y)]=(preg_match('~char|text~',$o[$y]["type"])||$X!=""?$b->processInput($o[$y],$X):"NULL");}$H=$l->update($a,$N," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($Ki,$o),!$ee&&!$qg," ");if(!$H)break;$Aa+=$g->affected_rows;}queries_redirect(remove_from_uri(),lang(249,$Aa),$H);}}elseif(!is_string($bd=get_file("csv_file",true)))$m=upload_error($bd);elseif(!preg_match('~~u',$bd))$m=lang(251);else{cookie("adminer_import","output=".urlencode($_a["output"])."&format=".urlencode($_POST["separator"]));$H=true;$qb=array_keys($o);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$bd,$He);$Aa=count($He[0]);$l->begin();$nh=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$K=array();foreach($He[0]as$y=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$nh]*)$nh~",$X.$nh,$Ie);if(!$y&&!array_diff($Ie[1],$qb)){$qb=$Ie[1];$Aa--;}else{$N=array();foreach($Ie[1]as$s=>$lb)$N[idf_escape($qb[$s])]=($lb==""&&$o[$qb[$s]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$lb))));$K[]=$N;}}$H=(!$K||$l->insertUpdate($a,$K,$qg));if($H)$H=$l->commit();queries_redirect(remove_from_uri("page"),lang(252,$Aa),$H);$l->rollback();}}}$Uh=$b->tableName($R);if(is_ajax()){page_headers();ob_start();}else
page_header(lang(54).": $Uh",$m);$N=null;if(isset($Xg["insert"])||!support("table")){$N="";foreach((array)$_GET["where"]as$X){if($ld[$X["col"]]&&count($ld[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match('~[_%]~',$X["val"]))))$N.="&set".urlencode("[".bracket_escape($X["col"])."]")."=".urlencode($X["val"]);}}$b->selectLinks($R,$N);if(!$e&&support("table"))echo"".lang(253).($o?".":": ".error())."\n";else{echo" \n";$E=$_GET["page"];if($E=="last"){$od=$g->result(count_rows($a,$Z,$ee,$ud));$E=floor(max(0,$od-1)/$z);}$ih=$L;$vd=$ud;if(!$ih){$ih[]="*";$Hb=convert_fields($e,$o,$L);if($Hb)$ih[]=substr($Hb,2);}foreach($L
as$y=>$X){$n=$o[idf_unescape($X)];if($n&&($Ha=convert_field($n)))$ih[$y]="$Ha AS $X";}if(!$ee&&$Mi){foreach($Mi
as$y=>$X){$ih[]=idf_escape($y);if($vd)$vd[]=idf_escape($y);}}$H=$l->select($a,$ih,$Z,$vd,$Ef,$z,$E,true);if(!$H)echo"".error()."\n";else{if($x=="mssql"&&$E)$H->seek($z*$E);$_c=array();echo" \n",(!$ud&&$L?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$O=isset($_GET["status"]);page_header($O?lang(118):lang(117));$aj=($O?show_status():show_variables());if(!$aj)echo"".lang(12)."\n";else{echo" \n";foreach($aj
as$y=>$X){echo"","".h($y).""," | ".h($X);}echo" | \n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Rh=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$D=>$R){json_row("Comment-$D",h($R["Comment"]));if(!is_view($R)){foreach(array("Engine","Collation")as$y)json_row("$y-$D",h($R[$y]));foreach($Rh+array("Auto_increment"=>0,"Rows"=>0)as$y=>$X){if($R[$y]!=""){$X=format_number($R[$y]);json_row("$y-$D",($y=="Rows"&&$X&&$R["Engine"]==($x=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Rh[$y]))$Rh[$y]+=($R["Engine"]!="InnoDB"||$y!="Data_free"?$R[$y]:0);}elseif(array_key_exists($y,$R))json_row("$y-$D");}}}foreach($Rh
as$y=>$X)json_row("sum-$y",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$g->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($b->databases())as$k=>$X){json_row("tables-$k",$X);json_row("size-$k",db_size($k));}json_row("");}exit;}else{$ai=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($ai&&!$m&&!$_POST["search"]){$H=true;$Pe="";if($x=="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"])$H=truncate_tables($_POST["tables"]);$Pe=lang(263);}elseif($_POST["move"]){$H=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Pe=lang(264);}elseif($_POST["copy"]){$H=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Pe=lang(265);}elseif($_POST["drop"]){if($_POST["views"])$H=drop_views($_POST["views"]);if($H&&$_POST["tables"])$H=drop_tables($_POST["tables"]);$Pe=lang(266);}elseif($x!="sql"){$H=($x=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$Pe=lang(267);}elseif(!$_POST["tables"])$Pe=lang(9);elseif($H=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"])))){while($J=$H->fetch_assoc())$Pe.="".h($J["Table"]).": ".h($J["Msg_text"])." ";}queries_redirect(substr(ME,0,-1),$Pe,$H);}page_header(($_GET["ns"]==""?lang(37).": ".h(DB):lang(78).": ".h($_GET["ns"])),$m,true);if($b->homepage()){if($_GET["ns"]!==""){echo"".lang(268)."\n";$Zh=tables_list();if(!$Zh)echo"".lang(9)."\n";else{echo" \n",script("tableCheck();");}echo''.lang(75)."\n",(support("view")?' | '.lang(204)."\n":""),' ';if(support("routine")){echo"".lang(143)."\n";$bh=routines();if($bh){echo"\n",'| '.lang(183).' | '.lang(50).' | '.lang(221)." | | \n";odd('');foreach($bh
as$J){$D=($J["SPECIFIC_NAME"]==$J["ROUTINE_NAME"]?"":"&name=".urlencode($J["ROUTINE_NAME"]));echo'','| '.h($J["ROUTINE_NAME"]).'',' | '.h($J["ROUTINE_TYPE"]),' | '.h($J["DTD_IDENTIFIER"]),' | '.lang(136)."";}echo" | \n";}echo''.(support("procedure")?''.lang(220).' | ':'').''.lang(219)."\n";}if(support("sequence")){echo" ".lang(286)."\n";$ph=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($ph){echo"\n","| ".lang(183)." | \n";odd('');foreach($ph
as$X)echo"| ".h($X)."\n";echo" |
|---|
\n";}echo
generate_linksbar(["".lang(226).""]);}if(support("type")){echo"".lang(26)."\n";$Vi=types();if($Vi){echo"\n","| ".lang(183)." | \n";odd('');foreach($Vi
as$X)echo"| ".h($X)."\n";echo" |
|---|
\n";}echo
generate_linksbar(["".lang(230).""]);}if(support("event")){echo"".lang(144)."\n";$K=get_rows("SHOW EVENTS");if($K){echo"\n","| ".lang(183)." | ".lang(287)." | ".lang(210)." | ".lang(211)." | | \n";foreach($K
as$J){echo"","| ".h($J["Name"])," | ".($J["Execute at"]?lang(288)." | ".$J["Execute at"]:lang(212)." ".$J["Interval value"]." ".$J["Interval field"]." | $J[Starts]")," | $J[Ends]",' | '.lang(136).'';}echo" | \n";$Ic=$g->result("SELECT @@event_scheduler");if($Ic&&$Ic!="ON")echo"event_scheduler: ".h($Ic)."\n";}echo'
'.lang(209)."\n";}if($Zh)echo
script("ajaxSetHtml('".js_escape(ME)."script=db');");}}}page_footer(); |