',($T=="PROCEDURE"?"".html_select("fields[$r][inout]",explode("|",$be),$n["inout"]):""),' | ';if($kc){echo'';}echo'';edit_type("fields[$r]",$n,$ob,$od);if($T=="TABLE"){echo' | ',checkbox("fields[$r][null]",1,$n["null"],"","","block","label-null"),' | | ',checkbox("fields[$r][has_default]",1,$n["has_default"],"","","","label-default"),'',(support("comment")?" | ":"");}echo" | ",(support("move_col")?" "." "." ":""),($Lf==""||support("drop_col")?"":"");}}function
process_fields(&$o){$qf=0;if($_POST["up"]){$we=0;foreach($o
as$x=>$n){if(key($_POST["up"])==$x){unset($o[$x]);array_splice($o,$we,0,array($n));break;}if(isset($n["field"]))$we=$qf;$qf++;}}elseif($_POST["down"]){$qd=false;foreach($o
as$x=>$n){if(isset($n["field"])&&$qd){unset($o[key($_POST["down"])]);array_splice($o,$qf,0,array($qd));break;}if(key($_POST["down"])==$x)$qd=$n;$qf++;}}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($A){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($A[0][0].$A[0][0],$A[0][0],substr($A[0],1,-1))),'\\'))."'";}function
grant($wd,$yg,$e,$xf){if(!$yg)return
true;if($yg==array("ALL PRIVILEGES","GRANT OPTION"))return($wd=="GRANT"?queries("$wd ALL PRIVILEGES$xf WITH GRANT OPTION"):queries("$wd ALL PRIVILEGES$xf")&&queries("$wd GRANT OPTION$xf"));return
queries("$wd ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$yg).$e).$xf);}function
drop_create($oc,$i,$pc,$ii,$rc,$Fe,$We,$Ue,$Ve,$uf,$hf){if($_POST["drop"])query_redirect($oc,$Fe,$We);elseif($uf=="")query_redirect($i,$Fe,$Ve);elseif($uf!=$hf){$Lb=queries($i);queries_redirect($Fe,$Ue,$Lb&&queries($oc));if($Lb)queries($pc);}else
queries_redirect($Fe,$Ue,queries($ii)&&queries($rc)&&queries($oc)&&queries($i));}function
create_trigger($xf,$J){global$w;$ni=" $J[Timing] $J[Event]".(preg_match('~ OF~',$J["Event"])?" $J[Of]":"");return"CREATE TRIGGER ".idf_escape($J["Trigger"]).($w=="mssql"?$xf.$ni:$ni.$xf).rtrim(" $J[Type]\n$J[Statement]",";").";";}function
create_routine($bh,$J){global$be,$w;$N=array();$o=(array)$J["fields"];ksort($o);foreach($o
as$n){if($n["field"]!="")$N[]=(preg_match("~^($be)\$~",$n["inout"])?"$n[inout] ":"").idf_escape($n["field"]).process_type($n,"CHARACTER SET");}$dc=rtrim("\n$J[definition]",";");return"CREATE $bh ".idf_escape(trim($J["name"]))." (".implode(", ",$N).")".(isset($_GET["function"])?" RETURNS".process_type($J["returns"],"CHARACTER SET"):"").($J["language"]?" LANGUAGE $J[language]":"").($w=="pgsql"?" AS ".q($dc):"$dc;");}function
remove_definer($G){return
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$G);}function
format_foreign_key($p){global$yf;$k=$p["db"];$lf=$p["ns"];return" FOREIGN KEY (".implode(", ",array_map('idf_escape',$p["source"])).") REFERENCES ".($k!=""&&$k!=$_GET["db"]?idf_escape($k).".":"").($lf!=""&&$lf!=$_GET["ns"]?idf_escape($lf).".":"").table($p["table"])." (".implode(", ",array_map('idf_escape',$p["target"])).")".(preg_match("~^($yf)\$~",$p["on_delete"])?" ON DELETE $p[on_delete]":"").(preg_match("~^($yf)\$~",$p["on_update"])?" ON UPDATE $p[on_update]":"");}function
tar_file($dd,$si){$I=pack("a100a8a8a8a12a12",$dd,644,0,0,decoct($si->size),decoct(time()));$gb=8*32;for($r=0;$rsend();echo
str_repeat("\0",511-($si->size+511)%512);}function
ini_bytes($ae){$X=ini_get($ae);switch(strtolower(substr($X,-1))){case'g':$X*=1024;case'm':$X*=1024;case'k':$X*=1024;}return$X;}function
doc_link($hg,$ji="?"){global$w,$g;$sh=$g->server_info;$ej=preg_replace('~^(\d\.?\d).*~s','\1',$sh);$Ti=array('sql'=>"https://dev.mysql.com/doc/refman/$ej/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/$ej/",'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',$sh)."&id=",);if(preg_match('~MariaDB~',$sh)){$Ti['sql']="https://mariadb.com/kb/en/library/";$hg['sql']=(isset($hg['mariadb'])?$hg['mariadb']:str_replace(".html","/",$hg['sql']));}return($hg[$w]?"$ji":"");}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,$vi,$m,$nc;if(DB!=""){header("HTTP/1.1 404 Not Found");page_header(lang(37).": ".h(DB),lang(113),true);}else{if($_POST["db"]&&!$m)queries_redirect(substr(ME,0,-1),lang(114),drop_databases($_POST["db"]));page_header(lang(115),$m,false);$xa=['database'=>lang(116),'privileges'=>lang(73),'processlist'=>lang(117),'variables'=>lang(118),'status'=>lang(119),];$_=[];foreach($xa
as$x=>$X){if(support($x))$_[]="$X";}echo
generate_linksbar($_)," ".lang(120,$nc[DRIVER],"".h($g->server_info)."","$g->extension")."\n"," ".lang(121,"".h(logged_user())."")."\n";$j=$b->databases();if($j){$ih=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(80).": ".h($_GET["ns"]),lang(129),true);page_footer("ns");exit;}}}$yf="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class
TmpFile{var$handler;var$size;function
__construct(){$this->handler=tmpfile();}function
write($Eb){$this->size+=strlen($Eb);fwrite($this->handler,$Eb);}function
send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$Ec="'(?:''|[^'\\\\]|\\\\.)*'";$be="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);$C=$b->tableName($R);page_header(($o&&is_view($R)?$R['Engine']=='materialized view'?lang(130):lang(131):lang(132)).": ".($C!=""?$C: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(133)."\n";$v=indexes($a);if($v)$b->tableIndexesPrint($v);echo''.lang(134)."\n";}if(fk_support($R)){echo" ".lang(102)."\n";$od=foreign_keys($a);if($od){echo"\n","".lang(135)." | ".lang(136)." | ".lang(105)." | ".lang(104)." | | \n";foreach($od
as$C=>$p){echo"","".implode(", ",array_map('h',$p["source"])).""," | ".($p["db"]!=""?"".h($p["db"]).".":"").($p["ns"]!=""?"".h($p["ns"]).".":"").h($p["table"])."","(".implode(", ",array_map('h',$p["target"])).")"," | ".h($p["on_delete"])."\n"," | ".h($p["on_update"])."\n",' | '.lang(137).'';}echo" | \n";}echo''.lang(138)."\n";}}if(support(is_view($R)?"view_trigger":"trigger")){echo" ".lang(139)."\n";$Gi=triggers($a);if($Gi){echo"\n";foreach($Gi
as$x=>$X)echo"".h($X[0])." | ".h($X[1])." | ".h($x)." | ".lang(137)."\n";echo" |
---|
\n";}echo''.lang(140)."\n";}}elseif(isset($_GET["schema"])){page_header(lang(72),"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Yh=array();$Zh=array();$ea=($_GET["schema"]?$_GET["schema"]:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$B,PREG_SET_ORDER);foreach($B
as$r=>$A){$Yh[$A[1]]=array($A[2],$A[3]);$Zh[]="\n\t'".js_escape($A[1])."': [ $A[2], $A[3] ]";}$wi=0;$Ra=-1;$hh=array();$Mg=array();$_e=array();foreach(table_status('',true)as$Q=>$R){if(is_view($R))continue;$ng=0;$hh[$Q]["fields"]=array();foreach(fields($Q)as$C=>$n){$ng+=1.25;$n["pos"]=$ng;$hh[$Q]["fields"][$C]=$n;}$hh[$Q]["pos"]=($Yh[$Q]?$Yh[$Q]:array($wi,0));foreach($b->foreignKeys($Q)as$X){if(!$X["db"]){$ye=$Ra;if($Yh[$Q][1]||$Yh[$X["table"]][1])$ye=min(floatval($Yh[$Q][1]),floatval($Yh[$X["table"]][1]))-1;else$Ra-=.1;while($_e[(string)$ye])$ye-=.0001;$hh[$Q]["references"][$X["table"]][(string)$ye]=array($X["source"],$X["target"]);$Mg[$X["table"]][$Q][(string)$ye]=$X["target"];$_e[(string)$ye]=true;}}$wi=max($wi,$hh[$Q]["pos"][0]+2.5+$ng);}echo'
';foreach($hh
as$C=>$Q){echo" ",' '.h($C)."",script("qsl('div').onmousedown = schemaMousedown;");foreach($Q["fields"]as$n){$X=' '.h($n["field"]).'';echo" ".($n["primary"]?" $X":$X);}foreach((array)$Q["references"]as$fi=>$Ng){foreach($Ng
as$ye=>$Jg){$ze=$ye-$Yh[$C][1];$r=0;foreach($Jg[0]as$Ch)echo"\n ";}}foreach((array)$Mg[$C]as$fi=>$Ng){foreach($Ng
as$ye=>$e){$ze=$ye-$Yh[$C][1];$r=0;foreach($e
as$ei)echo"\n ";}}echo"\n \n";}foreach($hh
as$C=>$Q){foreach((array)$Q["references"]as$fi=>$Ng){foreach($Ng
as$ye=>$Jg){$Ze=$wi;$Pe=-10;foreach($Jg[0]as$x=>$Ch){$og=$Q["pos"][0]+$Q["fields"][$Ch]["pos"];$pg=$hh[$fi]["pos"][0]+$hh[$fi]["fields"][$Jg[1][$x]]["pos"];$Ze=min($Ze,$og,$pg);$Pe=max($Pe,$og,$pg);}echo" \n";}}}echo'
',lang(141),'
';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$m){$Hb="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$x)$Hb.="&$x=".urlencode($_POST[$x]);cookie("adminer_export",substr($Hb,1));$S=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$Rc=dump_headers((count($S)==1?key($S):DB),(DB==""||count($S)>1));$je=preg_match('~sql~',$_POST["format"]);if($je){echo"-- Adminer $ia ".$nc[DRIVER]." ".str_replace("\n"," ",$g->server_info)." dump\n\n";if($w=="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 = ''");}}$Ph=$_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($je&&preg_match('~CREATE~',$Ph)&&($i=$g->result("SHOW CREATE DATABASE ".idf_escape($k),1))){set_utf8mb4($i);if($Ph=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($k).";\n";echo"$i;\n";}if($je){if($Ph)echo
use_sql($k).";\n\n";$Rf="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$bh){foreach(get_rows("SHOW $bh STATUS WHERE Db = ".q($k),null,"-- ")as$J){$i=remove_definer($g->result("SHOW CREATE $bh ".idf_escape($J["Name"]),2));set_utf8mb4($i);$Rf.=($Ph!='DROP+CREATE'?"DROP $bh 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);$Rf.=($Ph!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($J["Name"]).";;\n":"")."$i;;\n\n";}}if($Rf)echo"DELIMITER ;;\n\n$Rf"."DELIMITER ;\n\n";}if($_POST["table_style"]||$_POST["data_style"]){$gj=array();foreach(table_status('',true)as$C=>$R){$Q=(DB==""||in_array($C,(array)$_POST["tables"]));$Rb=(DB==""||in_array($C,(array)$_POST["data"]));if($Q||$Rb){if($Rc=="tar"){$si=new
TmpFile;ob_start(array($si,'write'),1e5);}$b->dumpTable($C,($Q?$_POST["table_style"]:""),(is_view($R)?2:0));if(is_view($R))$gj[]=$C;elseif($Rb){$o=fields($C);$b->dumpData($C,$_POST["data_style"],"SELECT *".convert_fields($o,$o)." FROM ".table($C));}if($je&&$_POST["triggers"]&&$Q&&($Gi=trigger_sql($C)))echo"\nDELIMITER ;;\n$Gi\nDELIMITER ;\n";if($Rc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$k/")."$C.csv",$si);}elseif($je)echo"\n";}}if(function_exists('foreign_keys_sql')){foreach(table_status('',true)as$C=>$R){$Q=(DB==""||in_array($C,(array)$_POST["tables"]));if($Q&&!is_view($R))echo
foreign_keys_sql($C);}}foreach($gj
as$fj)$b->dumpTable($fj,$_POST["table_style"],1);if($Rc=="tar")echo
pack("x512");}}}if($je)echo"-- ".$g->result("SELECT NOW()")."\n";exit;}page_header(lang(76),$m,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
';$fd=true;foreach($sg
as$x=>$X){if($x!=""&&$X>1){echo($fd?"":" ")."".h($x)."";$fd=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(73));echo' '.lang(147)."";$H=$g->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$wd=$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();$Jd=&get_session("queries");$Id=&$Jd[DB];if(!$m&&$_POST["clear"]){$Id=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?lang(75):lang(66)),$m);if(!$m&&$_POST){$sd=false;if(!isset($_GET["import"]))$G=$_POST["query"];elseif($_POST["webfile"]){$Gh=$b->importServerPath();$sd=@fopen((file_exists($Gh)?$Gh:"compress.zlib://$Gh.gz"),"rb");$G=($sd?fread($sd,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){$Bg=$G.(preg_match("~;[ \t\r\n]*\$~",$G)?"":";");if(!$Id||reset(end($Id))!=$Bg){restart_session();$Id[]=array($Bg,time());set_session("queries",$Jd);stop_session();}}$Dh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$fc=";";$qf=0;$Bc=true;$h=connect();if(is_object($h)&&DB!=""){$h->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$h);}$tb=0;$Gc=array();$Yf='[\'"'.($w=="sql"?'`#':($w=="sqlite"?'`[':($w=="mssql"?'[':''))).']|/\*|-- |$'.($w=="pgsql"?'|\$[^$]*\$':'');$xi=microtime(true);parse_str($_COOKIE["adminer_export"],$za);$tc=$b->dumpFormat();unset($tc["sql"]);while($G!=""){if(!$qf&&preg_match("~^$Dh*+DELIMITER\\s+(\\S+)~i",$G,$A)){$fc=$A[1];$G=substr($G,strlen($A[0]));}else{preg_match('('.preg_quote($fc)."\\s*|$Yf)",$G,$A,PREG_OFFSET_CAPTURE,$qf);list($qd,$ng)=$A[0];if(!$qd&&$sd&&!feof($sd))$G.=fread($sd,1e5);else{if(!$qd&&rtrim($G)=="")break;$qf=$ng+strlen($qd);if($qd&&rtrim($qd)!=$fc){while(preg_match('('.($qd=='/*'?'\*/':($qd=='['?']':(preg_match('~^-- |^#~',$qd)?"\n":preg_quote($qd)."|\\\\."))).'|$)s',$G,$A,PREG_OFFSET_CAPTURE,$qf)){$fh=$A[0][0];if(!$fh&&$sd&&!feof($sd))$G.=fread($sd,1e5);else{$qf=$A[0][1]+strlen($fh);if($fh[0]!="\\")break;}}}else{$Bc=false;$Bg=substr($G,0,$ng);$tb++;$vg="".$b->sqlCommandQuery($Bg)." \n";$vg.=generate_linksbar(["".lang(47).""]);if($w=="sqlite"&&preg_match("~^$Dh*+ATTACH\\b~i",$Bg,$A)){echo$vg,"".lang(148)."\n";$Gc[]=" $tb";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$vg;ob_flush();flush();}$Kh=microtime(true);if($g->multi_query($Bg)&&is_object($h)&&preg_match("~^$Dh*+USE\\b~i",$Bg))$h->query($Bg);do{$H=$g->store_result();if($g->error){echo($_POST["only_errors"]?$vg:"")," ".lang(149).($g->errno?" ($g->errno)":"").": ".error()."\n";$Gc[]=" $tb";if($_POST["error_stops"])break
2;}else{$li=" (".format_time($Kh).")".(strlen($Bg)<1000?" ".lang(10)."":"");$Aa=$g->affected_rows;$jj=($_POST["only_errors"]?"":$l->warnings());$kj="warnings-$tb";if($jj)$li.=", ".lang(46)."".script("qsl('a').onclick = partial(toggle, '$kj');","");$Oc=null;$Pc="explain-$tb";if(is_object($H)){$y=$_POST["limit"];$Kf=select($H,$h,array(),$y);if(!$_POST["only_errors"]){echo" \n";}}else{if(preg_match("~^$Dh*+(CREATE|DROP|ALTER)$Dh++(DATABASE|SCHEMA)\\b~i",$Bg)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"".lang(152,$Aa)."$li\n";}echo($jj?" \n$jj \n":"");if($Oc){echo"\n";select($Oc,$h,$Kf);echo" \n";}}$Kh=microtime(true);}while($g->next_result());}$G=substr($G,$qf);$qf=0;}}}}if($Bc)echo"".lang(153)."\n";elseif($_POST["only_errors"]){echo" ".lang(154,$tb-count($Gc))," (".format_time($xi).")\n";}elseif($Gc&&$tb>1)echo" ".lang(149).": ".implode("",$Gc)."\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));$Qi=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($o
as$C=>$n){if(!isset($n["privileges"][$Qi?"update":"insert"])||$b->fieldName($n)==""||$n["generated"])unset($o[$C]);}if($_POST&&!$m&&!isset($_GET["select"])){$Fe=$_POST["referer"];if($_POST["insert"])$Fe=($Qi?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$Fe))$Fe=ME."select=".urlencode($a);$v=indexes($a);$Li=unique_array($_GET["where"],$v);$Eg="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($Fe,lang(167),$l->delete($a,$Eg,!$Li));else{$N=array();foreach($o
as$C=>$n){$X=process_input($n);if($X!==false&&$X!==null)$N[idf_escape($C)]=$X;}if($Qi){if(!$N)redirect($Fe);queries_redirect($Fe,lang(168),$l->update($a,$N,$Eg,!$Li));if(is_ajax()){page_headers();page_messages($m);exit;}}else{$H=$l->insert($a,$N);$xe=($H?last_id():0);queries_redirect($Fe,lang(169,($xe?" $xe":"")),$H);}}}$J=null;if($_POST["save"])$J=(array)$_POST["fields"];elseif($Z){$L=array();foreach($o
as$C=>$n){if(isset($n["privileges"]["select"])){$Ha=convert_field($n);if($_POST["clone"]&&$n["auto_increment"])$Ha="''";if($w=="sql"&&preg_match("~enum|set~",$n["type"]))$Ha="1*".idf_escape($C);$L[]=($Ha?"$Ha AS ":"").idf_escape($C);}}$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$x=>$X){if(!$Z)$J[$x]=null;$o[$x]=array("field"=>$x,"null"=>($x!=$l->primary),"auto_increment"=>($x==$l->primary));}}}edit_form($a,$o,$J,$Qi);}elseif(isset($_GET["create"])){$a=$_GET["create"];$ag=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$x)$ag[$x]=$x;$Lg=referencable_primary($a);$od=array();foreach($Lg
as$Wh=>$n)$od[str_replace("`","``",$Wh)."`".str_replace("`","``",$n["field"])]=$Wh;$Nf=array();$R=array();if($a!=""){$Nf=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(170),drop_tables(array($a)));else{$o=array();$Ea=array();$Ui=false;$md=array();$Mf=reset($Nf);$Ca=" FIRST";foreach($J["fields"]as$x=>$n){$p=$od[$n["type"]];$Hi=($p!==null?$Lg[$p]:$n);if($n["field"]!=""){if(!$n["has_default"])$n["default"]=null;if($x==$J["auto_increment_col"])$n["auto_increment"]=true;$_g=process_field($n,$Hi);$Ea[]=array($n["orig"],$_g,$Ca);if(!$Mf||$_g!=process_field($Mf,$Mf)){$o[]=array($n["orig"],$_g,$Ca);if($n["orig"]!=""||$Ca)$Ui=true;}if($p!==null)$md[idf_escape($n["field"])]=($a!=""&&$w!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$od[$n["type"]],'source'=>array($n["field"]),'target'=>array($Hi["field"]),'on_delete'=>$n["on_delete"],));$Ca=" AFTER ".idf_escape($n["field"]);}elseif($n["orig"]!=""){$Ui=true;$o[]=array($n["orig"]);}if($n["orig"]!=""){$Mf=next($Nf);if(!$Mf)$Ca="";}}$cg="";if($ag[$J["partition_by"]]){$dg=array();if($J["partition_by"]=='RANGE'||$J["partition_by"]=='LIST'){foreach(array_filter($J["partition_names"])as$x=>$X){$Y=$J["partition_values"][$x];$dg[]="\n PARTITION ".idf_escape($X)." VALUES ".($J["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$cg.="\nPARTITION BY $J[partition_by]($J[partition])".($dg?" (".implode(",",$dg)."\n)":($J["partitions"]?" PARTITIONS ".(+$J["partitions"]):""));}elseif(support("partitioning")&&preg_match("~partitioned~",$R["Create_options"]))$cg.="\nREMOVE PARTITIONING";$Te=lang(171);if($a==""){cookie("adminer_engine",$J["Engine"]);$Te=lang(172);}$C=trim($J["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($C),$Te,alter_table($a,$C,($w=="sqlite"&&($Ui||$md)?$Ea:$o),$md,($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"]):""),$cg));}}page_header(($a!=""?lang(44):lang(77)),$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($Nf
as$n){$n["has_default"]=isset($n["default"]);$J["fields"][]=$n;}if(support("partitioning")){$td="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 $td ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($J["partition_by"],$J["partitions"],$J["partition"])=$H->fetch_row();$dg=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $td AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$dg[""]="";$J["partition_names"]=array_keys($dg);$J["partition_values"]=array_values($dg);}}}$ob=collations();$Dc=engines();foreach($Dc
as$Cc){if(!strcasecmp($Cc,$J["Engine"])){$J["Engine"]=$Cc;break;}}echo'
';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Td=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"]))$Td[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$R["Engine"]))$Td[]="SPATIAL";$v=indexes($a);$tg=array();if($w=="mongo"){$tg=$v["_id_"];unset($Td[0]);unset($v["_id_"]);}$J=$_POST;if($_POST&&!$m&&!$_POST["add"]&&!$_POST["drop_col"]){$c=array();foreach($J["indexes"]as$u){$C=$u["name"];if(in_array($u["type"],$Td)){$e=array();$Ce=array();$hc=array();$N=array();ksort($u["columns"]);foreach($u["columns"]as$x=>$d){if($d!=""){$Be=$u["lengths"][$x];$gc=$u["descs"][$x];$N[]=idf_escape($d).($Be?"(".(+$Be).")":"").($gc?" DESC":"");$e[]=$d;$Ce[]=($Be?$Be:null);$hc[]=$gc;}}if($e){$Nc=$v[$C];if($Nc){ksort($Nc["columns"]);ksort($Nc["lengths"]);ksort($Nc["descs"]);if($u["type"]==$Nc["type"]&&array_values($Nc["columns"])===$e&&(!$Nc["lengths"]||array_values($Nc["lengths"])===$Ce)&&array_values($Nc["descs"])===$hc){unset($v[$C]);continue;}}$c[]=array($u["type"],$C,$N);}}}foreach($v
as$C=>$Nc)$c[]=array($Nc["type"],$C,"DROP");if(!$c)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),lang(181),alter_indexes($a,$c));}page_header(lang(133),$m,array("table"=>$a),h($a));$o=array_keys(fields($a));if($_POST["add"]){foreach($J["indexes"]as$x=>$u){if($u["columns"][count($u["columns"])]!="")$J["indexes"][$x]["columns"][]="";}$u=end($J["indexes"]);if($u["type"]||array_filter($u["columns"],'strlen'))$J["indexes"][]=array("columns"=>array(1=>""));}if(!$J){foreach($v
as$x=>$u){$v[$x]["name"]=$x;$v[$x]["columns"][]="";}$v[]=array("columns"=>array(1=>""));$J["indexes"]=$v;}echo'
';}elseif(isset($_GET["database"])){$J=$_POST;if($_POST&&!$m&&!isset($_POST["add_x"])){$C=trim($J["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(185),drop_databases(array(DB)));}elseif(DB!==$C){if(DB!=""){$_GET["db"]=$C;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($C),lang(186),rename_database($C,$J["collation"]));}else{$j=explode("\n",str_replace("\r","",$C));$Qh=true;$we="";foreach($j
as$k){if(count($j)==1||$k!=""){if(!create_database($k,$J["collation"]))$Qh=false;$we=$k;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($we),lang(187),$Qh);}}else{if(!$J["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($C).(preg_match('~^[a-z0-9_]+$~i',$J["collation"])?" COLLATE $J[collation]":""),substr(ME,0,-1),lang(188));}}page_header(DB!=""?lang(69):lang(116),$m,array(),h(DB));$ob=collations();$C=DB;if($_POST)$C=$J["name"];elseif(DB!="")$J["collation"]=db_collation(DB,$ob);elseif($w=="sql"){foreach(get_vals("SHOW GRANTS")as$wd){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$wd,$A)&&$A[1]){$C=stripcslashes(idf_unescape("`$A[2]`"));break;}}}echo'
';}elseif(isset($_GET["scheme"])){$J=$_POST;if($_POST&&!$m){$z=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$z,lang(189));else{$C=trim($J["name"]);$z.=urlencode($C);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($C),$z,lang(190));elseif($_GET["ns"]!=$C)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($C),$z,lang(191));else
redirect($z);}}page_header($_GET["ns"]!=""?lang(70):lang(71),$m);if(!$J)$J["name"]=$_GET["ns"];echo'
';}elseif(isset($_GET["call"])){$da=($_GET["name"]?$_GET["name"]:$_GET["call"]);page_header(lang(192).": ".h($da),$m);$bh=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Rd=array();$Rf=array();foreach($bh["fields"]as$r=>$n){if(substr($n["inout"],-3)=="OUT")$Rf[$r]="@".idf_escape($n["field"])." AS ".idf_escape($n["field"]);if(!$n["inout"]||substr($n["inout"],0,2)=="IN")$Rd[]=$r;}if(!$m&&$_POST){$Za=array();foreach($bh["fields"]as$x=>$n){if(in_array($x,$Rd)){$X=process_input($n);if($X===false)$X="''";if(isset($Rf[$x]))$g->query("SET @".idf_escape($n["field"])." = $X");}$Za[]=(isset($Rf[$x])?"@".idf_escape($n["field"]):$X);}$G=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($da)."(".implode(", ",$Za).")";$Kh=microtime(true);$H=$g->multi_query($G);$Aa=$g->affected_rows;echo$b->selectQuery($G,$Kh,!$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(193,$Aa)." ".@date("H:i:s")."\n";}while($g->next_result());if($Rf)select($g->query("SELECT ".implode(", ",$Rf)));}}echo'
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$C=$_GET["name"];$J=$_POST;if($_POST&&!$m&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$Te=($_POST["drop"]?lang(194):($C!=""?lang(195):lang(196)));$Fe=ME."table=".urlencode($a);if(!$_POST["drop"]){$J["source"]=array_filter($J["source"],'strlen');ksort($J["source"]);$ei=array();foreach($J["source"]as$x=>$X)$ei[$x]=$J["target"][$x];$J["target"]=$ei;}if($w=="sqlite")queries_redirect($Fe,$Te,recreate_table($a,$a,array(),array(),array(" $C"=>($_POST["drop"]?"":" ".format_foreign_key($J)))));else{$c="ALTER TABLE ".table($a);$oc="\nDROP ".($w=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($C);if($_POST["drop"])query_redirect($c.$oc,$Fe,$Te);else{query_redirect($c.($C!=""?"$oc,":"")."\nADD".format_foreign_key($J),$Fe,$Te);$m=lang(197)." $m";}}}page_header(lang(198),$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($C!=""){$od=foreign_keys($a);$J=$od[$C];$J["source"][]="";}else{$J["table"]=$a;$J["source"]=array("");}echo'
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$J=$_POST;$Of="VIEW";if($w=="pgsql"&&$a!=""){$O=table_status($a);$Of=strtoupper($O["Engine"]);}if($_POST&&!$m){$C=trim($J["name"]);$Ha=" AS\n$J[select]";$Fe=ME."table=".urlencode($C);$Te=lang(202);$T=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$C&&$w!="sqlite"&&$T=="VIEW"&&$Of=="VIEW")query_redirect(($w=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($C).$Ha,$Fe,$Te);else{$gi=$C."_adminer_".uniqid();drop_create("DROP $Of ".table($a),"CREATE $T ".table($C).$Ha,"DROP $T ".table($C),"CREATE $T ".table($gi).$Ha,"DROP $T ".table($gi),($_POST["drop"]?substr(ME,0,-1):$Fe),lang(203),$Te,lang(204),$a,$C);}}if(!$_POST&&$a!=""){$J=view($a);$J["name"]=$a;$J["materialized"]=($Of!="VIEW");if(!$m)$m=error();}page_header(($a!=""?lang(43):lang(205)),$m,array("table"=>$a),h($a));echo'
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$ee=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Mh=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(206));elseif(in_array($J["INTERVAL_FIELD"],$ee)&&isset($Mh[$J["STATUS"]])){$gh="\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(207):lang(208)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$gh.($aa!=$J["EVENT_NAME"]?"\nRENAME TO ".idf_escape($J["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($J["EVENT_NAME"]).$gh)."\n".$Mh[$J["STATUS"]]." COMMENT ".q($J["EVENT_COMMENT"]).rtrim(" DO\n$J[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(209).": ".h($aa):lang(210)),$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"]);$bh=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$J=$_POST;$J["fields"]=(array)$J["fields"];if($_POST&&!process_fields($J["fields"])&&!$m){$Lf=routine($_GET["procedure"],$bh);$gi="$J[name]_adminer_".uniqid();drop_create("DROP $bh ".routine_id($da,$Lf),create_routine($bh,$J),"DROP $bh ".routine_id($J["name"],$J),create_routine($bh,array("name"=>$gi)+$J),"DROP $bh ".routine_id($gi,$J),substr(ME,0,-1),lang(215),lang(216),lang(217),$da,$J["name"]);}page_header(($da!=""?(isset($_GET["function"])?lang(218):lang(219)).": ".h($da):(isset($_GET["function"])?lang(220):lang(221))),$m);if(!$_POST&&$da!=""){$J=routine($_GET["procedure"],$bh);$J["name"]=$da;}$ob=get_vals("SHOW CHARACTER SET");sort($ob);$ch=routine_languages();echo'
';}elseif(isset($_GET["sequence"])){$fa=$_GET["sequence"];$J=$_POST;if($_POST&&!$m){$z=substr(ME,0,-1);$C=trim($J["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($fa),$z,lang(223));elseif($fa=="")query_redirect("CREATE SEQUENCE ".idf_escape($C),$z,lang(224));elseif($fa!=$C)query_redirect("ALTER SEQUENCE ".idf_escape($fa)." RENAME TO ".idf_escape($C),$z,lang(225));else
redirect($z);}page_header($fa!=""?lang(226).": ".h($fa):lang(227),$m);if(!$J)$J["name"]=$fa;echo'
';}elseif(isset($_GET["type"])){$ga=$_GET["type"];$J=$_POST;if($_POST&&!$m){$z=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ga),$z,lang(228));else
query_redirect("CREATE TYPE ".idf_escape(trim($J["name"]))." $J[as]",$z,lang(229));}page_header($ga!=""?lang(230).": ".h($ga):lang(231),$m);if(!$J)$J["as"]="AS ";echo'
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$C=$_GET["name"];$Fi=trigger_options();$J=(array)trigger($C,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$m&&in_array($_POST["Timing"],$Fi["Timing"])&&in_array($_POST["Event"],$Fi["Event"])&&in_array($_POST["Type"],$Fi["Type"])){$xf=" ON ".table($a);$oc="DROP TRIGGER ".idf_escape($C).($w=="pgsql"?$xf:"");$Fe=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($oc,$Fe,lang(232));else{if($C!="")queries($oc);queries_redirect($Fe,($C!=""?lang(233):lang(234)),queries(create_trigger($xf,$_POST)));if($C!="")queries(create_trigger($xf,$J+array("Type"=>reset($Fi["Type"]))));}}$J=$_POST;}page_header(($C!=""?lang(235).": ".h($C):lang(236)),$m,array("table"=>$a));echo'
';}elseif(isset($_GET["user"])){$ha=$_GET["user"];$yg=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$J){foreach(explode(",",($J["Privilege"]=="Grant option"?"":$J["Context"]))as$Fb)$yg[$Fb][$J["Privilege"]]=$J["Comment"];}$yg["Server Admin"]+=$yg["File access on server"];$yg["Databases"]["Create routine"]=$yg["Procedures"]["Create routine"];unset($yg["Procedures"]["Create routine"]);$yg["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$yg["Columns"][$X]=$yg["Tables"][$X];unset($yg["Server Admin"]["Usage"]);foreach($yg["Tables"]as$x=>$X)unset($yg["Databases"][$x]);$gf=array();if($_POST){foreach($_POST["objects"]as$x=>$X)$gf[$X]=(array)$gf[$X]+(array)$_POST["grants"][$x];}$xd=array();$vf="";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],$A)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$A[1],$B,PREG_SET_ORDER)){foreach($B
as$X){if($X[1]!="USAGE")$xd["$A[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$J[0]))$xd["$A[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$J[0],$A))$vf=$A[1];}}if($_POST&&!$m){$wf=(isset($_GET["host"])?q($ha)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $wf",ME."privileges=",lang(239));else{$if=q($_POST["user"])."@".q($_POST["host"]);$fg=$_POST["pass"];if($fg!=''&&!$_POST["hashed"]&&!min_version(8)){$fg=$g->result("SELECT PASSWORD(".q($fg).")");$m=!$fg;}$Lb=false;if(!$m){if($wf!=$if){$Lb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $if IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($fg));$m=!$Lb;}elseif($fg!=$vf)queries("SET PASSWORD FOR $if = ".q($fg));}if(!$m){$Yg=array();foreach($gf
as$of=>$wd){if(isset($_GET["grant"]))$wd=array_filter($wd);$wd=array_keys($wd);if(isset($_GET["grant"]))$Yg=array_diff(array_keys(array_filter($gf[$of],'strlen')),$wd);elseif($wf==$if){$tf=array_keys((array)$xd[$of]);$Yg=array_diff($tf,$wd);$wd=array_diff($wd,$tf);unset($xd[$of]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$of,$A)&&(!grant("REVOKE",$Yg,$A[2]," ON $A[1] FROM $if")||!grant("GRANT",$wd,$A[2]," ON $A[1] TO $if"))){$m=true;break;}}}if(!$m&&isset($_GET["host"])){if($wf!=$if)queries("DROP USER $wf");elseif(!isset($_GET["grant"])){foreach($xd
as$of=>$Yg){if(preg_match('~^(.+)(\(.*\))?$~U',$of,$A))grant("REVOKE",array_keys($Yg),$A[2]," ON $A[1] FROM $if");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(240):lang(241)),!$m);if($Lb)$g->query("DROP USER $if");}}page_header((isset($_GET["host"])?lang(35).": ".h("$ha@$_GET[host]"):lang(147)),$m,array("privileges"=>array('',lang(73))));if($_POST){$J=$_POST;$xd=$gf;}else{$J=$_GET+array("host"=>$g->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$J["pass"]=$vf;if($vf!="")$J["hashed"]=true;$xd[(DB==""||$xd?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'
';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$m){$re=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$re++;}queries_redirect(ME."processlist=",lang(246,$re),$re||!$_POST["kill"]);}}page_header(lang(117),$m);echo'
',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$R=table_status1($a);$v=indexes($a);$o=fields($a);$od=column_foreign_keys($a);$rf=$R["Oid"];parse_str($_COOKIE["adminer_import"],$_a);$Zg=array();$e=array();$ki=null;foreach($o
as$x=>$n){$C=$b->fieldName($n);if(isset($n["privileges"]["select"])&&$C!=""){$e[$x]=html_entity_decode(strip_tags($C),ENT_QUOTES);if(is_shortable($n))$ki=$b->selectLengthProcess();}$Zg+=$n["privileges"];}list($L,$yd)=$b->selectColumnsProcess($e,$v);$ie=count($yd)selectSearchProcess($o,$v);$Hf=$b->selectOrderProcess($o,$v);$y=$b->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Mi=>$J){$Ha=convert_field($o[key($J)]);$L=array($Ha?$Ha:idf_escape(key($J)));$Z[]=where_check($Mi,$o);$I=$l->select($a,$L,$Z,$L);if($I)echo
reset($I->fetch_row());}exit;}$tg=$Oi=null;foreach($v
as$u){if($u["type"]=="PRIMARY"){$tg=array_flip($u["columns"]);$Oi=($L?$tg:array());foreach($Oi
as$x=>$X){if(in_array(idf_escape($x),$L))unset($Oi[$x]);}break;}}if($rf&&!$tg){$tg=$Oi=array($rf=>0);$v[]=array("type"=>"PRIMARY","columns"=>array($rf));}if($_POST&&!$m){$pj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$fb=array();foreach($_POST["check"]as$cb)$fb[]=where_check($cb,$o);$pj[]="((".implode(") OR (",$fb)."))";}$pj=($pj?"\nWHERE ".implode(" AND ",$pj):"");if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");$td=($L?implode(", ",$L):"*").convert_fields($e,$o,$L)."\nFROM ".table($a);$_d=($yd&&$ie?"\nGROUP BY ".implode(", ",$yd):"").($Hf?"\nORDER BY ".implode(", ",$Hf):"");if(!is_array($_POST["check"])||$tg)$G="SELECT $td$pj$_d";else{$Ki=array();foreach($_POST["check"]as$X)$Ki[]="(SELECT".limit($td,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o).$_d,1).")";$G=implode(" UNION ALL ",$Ki);}$b->dumpData($a,"table",$G);exit;}if(!$b->selectEmailProcess($Z,$od)){if($_POST["save"]||$_POST["delete"]){$H=true;$Aa=0;$N=array();if(!$_POST["delete"]){foreach($e
as$C=>$X){$X=process_input($o[$C]);if($X!==null&&($_POST["clone"]||$X!==false))$N[idf_escape($C)]=($X!==false?$X:idf_escape($C));}}if($_POST["delete"]||$N){if($_POST["clone"])$G="INTO ".table($a)." (".implode(", ",array_keys($N)).")\nSELECT ".implode(", ",$N)."\nFROM ".table($a);if($_POST["all"]||($tg&&is_array($_POST["check"]))||$ie){$H=($_POST["delete"]?$l->delete($a,$pj):($_POST["clone"]?queries("INSERT $G$pj"):$l->update($a,$N,$pj)));$Aa=$g->affected_rows;}else{foreach((array)$_POST["check"]as$X){$lj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o);$H=($_POST["delete"]?$l->delete($a,$lj,1):($_POST["clone"]?queries("INSERT".limit1($a,$G,$lj)):$l->update($a,$N,$lj,1)));if(!$H)break;$Aa+=$g->affected_rows;}}}$Te=lang(250,$Aa);if($_POST["clone"]&&$H&&$Aa==1){$xe=last_id();if($xe)$Te=lang(169," $xe");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$Te,$H);if(!$_POST["delete"]){edit_form($a,$o,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$m=lang(251);else{$H=true;$Aa=0;foreach($_POST["val"]as$Mi=>$J){$N=array();foreach($J
as$x=>$X){$x=bracket_escape($x,1);$N[idf_escape($x)]=(preg_match('~char|text~',$o[$x]["type"])||$X!=""?$b->processInput($o[$x],$X):"NULL");}$H=$l->update($a,$N," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($Mi,$o),!$ie&&!$tg," ");if(!$H)break;$Aa+=$g->affected_rows;}queries_redirect(remove_from_uri(),lang(250,$Aa),$H);}}elseif(!is_string($cd=get_file("csv_file",true)))$m=upload_error($cd);elseif(!preg_match('~~u',$cd))$m=lang(252);else{cookie("adminer_import","output=".urlencode($_a["output"])."&format=".urlencode($_POST["separator"]));$H=true;$qb=array_keys($o);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$cd,$B);$Aa=count($B[0]);$l->begin();$ph=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$K=array();foreach($B[0]as$x=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$ph]*)$ph~",$X.$ph,$Me);if(!$x&&!array_diff($Me[1],$qb)){$qb=$Me[1];$Aa--;}else{$N=array();foreach($Me[1]as$r=>$lb)$N[idf_escape($qb[$r])]=($lb==""&&$o[$qb[$r]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$lb))));$K[]=$N;}}$H=(!$K||$l->insertUpdate($a,$K,$tg));if($H)$H=$l->commit();queries_redirect(remove_from_uri("page"),lang(253,$Aa),$H);$l->rollback();}}}$Wh=$b->tableName($R);if(is_ajax()){page_headers();ob_start();}else
page_header(lang(54).": $Wh",$m);$N=null;if(isset($Zg["insert"])||!support("table")){$N="";foreach((array)$_GET["where"]as$X){if($od[$X["col"]]&&count($od[$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(254).($o?".":": ".error())."\n";else{echo" \n";$E=$_GET["page"];if($E=="last"){$rd=$g->result(count_rows($a,$Z,$ie,$yd));$E=floor(max(0,$rd-1)/$y);}$kh=$L;$zd=$yd;if(!$kh){$kh[]="*";$Gb=convert_fields($e,$o,$L);if($Gb)$kh[]=substr($Gb,2);}foreach($L
as$x=>$X){$n=$o[idf_unescape($X)];if($n&&($Ha=convert_field($n)))$kh[$x]="$Ha AS $X";}if(!$ie&&$Oi){foreach($Oi
as$x=>$X){$kh[]=idf_escape($x);if($zd)$zd[]=idf_escape($x);}}$H=$l->select($a,$kh,$Z,$zd,$Hf,$y,$E,true);if(!$H)echo"".error()."\n";else{if($w=="mssql"&&$E)$H->seek($y*$E);$Ac=array();echo" \n",(!$yd&&$L?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$O=isset($_GET["status"]);page_header($O?lang(119):lang(118));$cj=($O?show_status():show_variables());if(!$cj)echo"".lang(12)."\n";else{echo" \n";foreach($cj
as$x=>$X){echo"","".h($x)." "," | ".h($X);}echo" | \n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Th=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$C=>$R){json_row("Comment-$C",h($R["Comment"]));if(!is_view($R)){foreach(array("Engine","Collation")as$x)json_row("$x-$C",h($R[$x]));foreach($Th+array("Auto_increment"=>0,"Rows"=>0)as$x=>$X){if($R[$x]!=""){$X=format_number($R[$x]);json_row("$x-$C",($x=="Rows"&&$X&&$R["Engine"]==($w=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Th[$x]))$Th[$x]+=($R["Engine"]!="InnoDB"||$x!="Data_free"?$R[$x]:0);}elseif(array_key_exists($x,$R))json_row("$x-$C");}}}foreach($Th
as$x=>$X)json_row("sum-$x",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{$ci=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($ci&&!$m&&!$_POST["search"]){$H=true;$Te="";if($w=="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"]);$Te=lang(264);}elseif($_POST["move"]){$H=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Te=lang(265);}elseif($_POST["copy"]){$H=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Te=lang(266);}elseif($_POST["drop"]){if($_POST["views"])$H=drop_views($_POST["views"]);if($H&&$_POST["tables"])$H=drop_tables($_POST["tables"]);$Te=lang(267);}elseif($w!="sql"){$H=($w=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$Te=lang(268);}elseif(!$_POST["tables"])$Te=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())$Te.="".h($J["Table"]).": ".h($J["Msg_text"])." ";}queries_redirect(substr(ME,0,-1),$Te,$H);}page_header(($_GET["ns"]==""?lang(37).": ".h(DB):lang(80).": ".h($_GET["ns"])),$m,true);if($b->homepage()){if($_GET["ns"]!==""){echo"".lang(269)."\n";$bi=tables_list();if(!$bi)echo"".lang(9)."\n";else{echo" \n",script("tableCheck();");}$_=[];$_[]="".lang(77)."";if(support("view"))$_[]="".lang(205)."";echo
generate_linksbar($_);if(support("routine")){echo"".lang(144)."\n";$dh=routines();if($dh){echo"\n",''.lang(184).' | '.lang(50).' | '.lang(222)." | | \n";odd('');foreach($dh
as$J){$C=($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(137)."";}echo" | \n";}$_=[];if(support('procedure'))$_[]="".lang(221)."";$_[]="".lang(220)."";echo
generate_linksbar($_);}if(support("sequence")){echo"".lang(287)."\n";$rh=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($rh){echo"\n","".lang(184)." | \n";odd('');foreach($rh
as$X)echo"".h($X)."\n";echo" |
---|
\n";}echo
generate_linksbar(["".lang(227).""]);}if(support("type")){echo"".lang(26)."\n";$Xi=types();if($Xi){echo"\n","".lang(184)." | \n";odd('');foreach($Xi
as$X)echo"".h($X)."\n";echo" |
---|
\n";}echo
generate_linksbar(["".lang(231).""]);}if(support("event")){echo"".lang(145)."\n";$K=get_rows("SHOW EVENTS");if($K){echo"\n","".lang(184)." | ".lang(288)." | ".lang(211)." | ".lang(212)." | | \n";foreach($K
as$J){echo"","".h($J["Name"])," | ".($J["Execute at"]?lang(289)." | ".$J["Execute at"]:lang(213)." ".$J["Interval value"]." ".$J["Interval field"]." | $J[Starts]")," | $J[Ends]",' | '.lang(137).'';}echo" | \n";$Jc=$g->result("SELECT @@event_scheduler");if($Jc&&$Jc!="ON")echo"event_scheduler : ".h($Jc)."\n";}echo
generate_linksbar(["".lang(210).""]);}if($bi)echo
script("ajaxSetHtml('".js_escape(ME)."script=db');");}}}page_footer();
|