',($U=="PROCEDURE"?"| ".html_select("fields[$t][inout]",explode("|",$Md),$p["inout"]):""),' | ';if($ac){echo'',script("qsl('input').oninput = function () { editingNameChange.call(this);".($p["field"]!=""||count($q)>1?"":" editingAddRow.call(this);")." };","");}echo'
';edit_type("fields[$t]",$p,$qb,$dd);if($U=="TABLE"){echo' | ',checkbox("fields[$t][null]",1,$p["null"],"","","block","label-null"),' | | ',checkbox("fields[$t][has_default]",1,$p["has_default"],"","","","label-default"),'',script("qsl('input').oninput = function () { this.previousSibling.checked = true; }",""),(support("comment")?" | ":"");}echo" | ",(support("move_col")?" ".script("qsl('input').onclick = partial(editingAddRow, 1);","")." ".script("qsl('input').onclick = partial(editingMoveRow, 1);","")." ".script("qsl('input').onclick = partial(editingMoveRow, 0);",""):""),($yf==""||support("drop_col")?"".script("qsl('input').onclick = partial(editingRemoveRow, 'fields\$1[field]');"):"");}}function
process_fields(&$q){$D=0;if($_POST["up"]){$je=0;foreach($q
as$z=>$p){if(key($_POST["up"])==$z){unset($q[$z]);array_splice($q,$je,0,array($p));break;}if(isset($p["field"]))$je=$D;$D++;}}elseif($_POST["down"]){$fd=false;foreach($q
as$z=>$p){if(isset($p["field"])&&$fd){unset($q[key($_POST["down"])]);array_splice($q,$D,0,array($fd));break;}if(key($_POST["down"])==$z)$fd=$p;$D++;}}elseif($_POST["add"]){$q=array_values($q);array_splice($q,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
false;return
true;}function
normalize_enum($B){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($B[0][0].$B[0][0],$B[0][0],substr($B[0],1,-1))),'\\'))."'";}function
grant($kd,$ig,$e,$jf){if(!$ig)return
true;if($ig==array("ALL PRIVILEGES","GRANT OPTION"))return($kd=="GRANT"?queries("$kd ALL PRIVILEGES$jf WITH GRANT OPTION"):queries("$kd ALL PRIVILEGES$jf")&&queries("$kd GRANT OPTION$jf"));return
queries("$kd ".preg_replace('~(GRANT OPTION)\\([^)]*\\)~','\\1',implode("$e, ",$ig).$e).$jf);}function
drop_create($fc,$i,$gc,$Sh,$ic,$te,$Ke,$Ie,$Je,$gf,$Ve){if($_POST["drop"])query_redirect($fc,$te,$Ke);elseif($gf=="")query_redirect($i,$te,$Je);elseif($gf!=$Ve){$Gb=queries($i);queries_redirect($te,$Ie,$Gb&&queries($fc));if($Gb)queries($gc);}else
queries_redirect($te,$Ie,queries($Sh)&&queries($ic)&&queries($fc)&&queries($i));}function
create_trigger($jf,$J){global$y;$Xh=" $J[Timing] $J[Event]".($J["Event"]=="UPDATE OF"?" ".idf_escape($J["Of"]):"");return"CREATE TRIGGER ".idf_escape($J["Trigger"]).($y=="mssql"?$jf.$Xh:$Xh.$jf).rtrim(" $J[Type]\n$J[Statement]",";").";";}function
create_routine($Ng,$J){global$Md,$y;$O=array();$q=(array)$J["fields"];ksort($q);foreach($q
as$p){if($p["field"]!="")$O[]=(preg_match("~^($Md)\$~",$p["inout"])?"$p[inout] ":"").idf_escape($p["field"]).process_type($p,"CHARACTER SET");}$Tb=rtrim("\n$J[definition]",";");return"CREATE $Ng ".idf_escape(trim($J["name"]))." (".implode(", ",$O).")".(isset($_GET["function"])?" RETURNS".process_type($J["returns"],"CHARACTER SET"):"").($J["language"]?" LANGUAGE $J[language]":"").($y=="pgsql"?" AS ".q($Tb):"$Tb;");}function
remove_definer($G){return
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\\1)',logged_user()).'`~','\\1',$G);}function
format_foreign_key($r){global$kf;return" FOREIGN KEY (".implode(", ",array_map('idf_escape',$r["source"])).") REFERENCES ".table($r["table"])." (".implode(", ",array_map('idf_escape',$r["target"])).")".(preg_match("~^($kf)\$~",$r["on_delete"])?" ON DELETE $r[on_delete]":"").(preg_match("~^($kf)\$~",$r["on_update"])?" ON UPDATE $r[on_update]":"");}function
tar_file($Uc,$ci){$I=pack("a100a8a8a8a12a12",$Uc,644,0,0,decoct($ci->size),decoct(time()));$hb=8*32;for($t=0;$tsend();echo
str_repeat("\0",511-($ci->size+511)%512);}function
ini_bytes($Ld){$X=ini_get($Ld);switch(strtolower(substr($X,-1))){case'g':$X*=1024;case'm':$X*=1024;case'k':$X*=1024;}return$X;}function
doc_link($Sf,$Th="?"){global$y,$g;$eh=$g->server_info;$Pi=preg_replace('~^(\\d\\.?\\d).*~s','\\1',$eh);$Fi=array('sql'=>"https://dev.mysql.com/doc/refman/$Pi/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/$Pi/static/",'mssql'=>"https://msdn.microsoft.com/library/",'oracle'=>"https://download.oracle.com/docs/cd/B19306_01/server.102/b14200/",);if(preg_match('~MariaDB~',$eh)){$Fi['sql']="https://mariadb.com/kb/en/library/";$Sf['sql']=(isset($Sf['mariadb'])?$Sf['mariadb']:str_replace(".html","/",$Sf['sql']));}return($Sf[$y]?"$Th":"");}function
ob_gzencode($Q){return
gzencode($Q);}function
db_size($m){global$g;if(!$g->select_db($m))return"?";$I=0;foreach(table_status()as$S)$I+=$S["Data_length"]+$S["Index_length"];return
format_number($I);}function
set_utf8mb4($i){global$g;static$O=false;if(!$O&&preg_match('~\butf8mb4~i',$i)){$O=true;echo"SET NAMES ".charset($g).";\n\n";}}function
connect_error(){global$b,$g,$fi,$o,$ec;if(DB!=""){header("HTTP/1.1 404 Not Found");page_header(lang(35).": ".h(DB),lang(108),true);}else{if($_POST["db"]&&!$o)queries_redirect(substr(ME,0,-1),lang(109),drop_databases($_POST["db"]));page_header(lang(110),$o,false);echo" \n";foreach(array('database'=>lang(111),'privileges'=>lang(69),'processlist'=>lang(112),'variables'=>lang(113),'status'=>lang(114),)as$z=>$X){if(support($z))echo"$X\n";}echo" ".lang(115,$ec[DRIVER],"".h($g->server_info)."","$g->extension")."\n"," ".lang(116,"".h(logged_user())."")."\n";$l=$b->databases();if($l){$Ug=support("scheme");$qb=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")&&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(75).": ".h($_GET["ns"]),lang(124),true);page_footer("ns");exit;}}$kf="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class
TmpFile{var$handler;var$size;function
__construct(){$this->handler=tmpfile();}function
write($Ab){$this->size+=strlen($Ab);fwrite($this->handler,$Ab);}function
send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$wc="'(?:''|[^'\\\\]|\\\\.)*'";$Md="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"];$q=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=$n->select($a,$L,array(where($_GET,$q)),$L);$J=($H?$H->fetch_row():array());echo$n->value($J[0],$q[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$q=fields($a);if(!$q)$o=error();$S=table_status1($a,true);$C=$b->tableName($S);page_header(($q&&is_view($S)?$S['Engine']=='materialized view'?lang(125):lang(126):lang(127)).": ".($C!=""?$C:h($a)),$o);$b->selectLinks($S);$vb=$S["Comment"];if($vb!="")echo"".lang(48).": ".h($vb)."\n";if($q)$b->tableStructurePrint($q);if(!is_view($S)){if(support("indexes")){echo" ".lang(128)."\n";$x=indexes($a);if($x)$b->tableIndexesPrint($x);echo''.lang(129)."\n";}if(fk_support($S)){echo" ".lang(96)."\n";$dd=foreign_keys($a);if($dd){echo"\n","| ".lang(130)." | ".lang(131)." | ".lang(99)." | ".lang(98)." | | \n";foreach($dd
as$C=>$r){echo"","| ".implode(", ",array_map('h',$r["source"])).""," | ".($r["db"]!=""?"".h($r["db"]).".":"").($r["ns"]!=""?"".h($r["ns"]).".":"").h($r["table"])."","(".implode(", ",array_map('h',$r["target"])).")"," | ".nbsp($r["on_delete"])."\n"," | ".nbsp($r["on_update"])."\n",' | '.lang(132).'';}echo" | \n";}echo''.lang(133)."\n";}}if(support(is_view($S)?"view_trigger":"trigger")){echo" ".lang(134)."\n";$ri=triggers($a);if($ri){echo"\n";foreach($ri
as$z=>$X)echo"| ".h($X[0])." | ".h($X[1])." | ".h($z)." | ".lang(132)."\n";echo" |
|---|
\n";}echo''.lang(135)."\n";}}elseif(isset($_GET["schema"])){page_header(lang(68),"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Ih=array();$Jh=array();$ea=($_GET["schema"]?$_GET["schema"]:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$_e,PREG_SET_ORDER);foreach($_e
as$t=>$B){$Ih[$B[1]]=array($B[2],$B[3]);$Jh[]="\n\t'".js_escape($B[1])."': [ $B[2], $B[3] ]";}$gi=0;$Ra=-1;$Tg=array();$zg=array();$ne=array();foreach(table_status('',true)as$R=>$S){if(is_view($S))continue;$Xf=0;$Tg[$R]["fields"]=array();foreach(fields($R)as$C=>$p){$Xf+=1.25;$p["pos"]=$Xf;$Tg[$R]["fields"][$C]=$p;}$Tg[$R]["pos"]=($Ih[$R]?$Ih[$R]:array($gi,0));foreach($b->foreignKeys($R)as$X){if(!$X["db"]){$le=$Ra;if($Ih[$R][1]||$Ih[$X["table"]][1])$le=min(floatval($Ih[$R][1]),floatval($Ih[$X["table"]][1]))-1;else$Ra-=.1;while($ne[(string)$le])$le-=.0001;$Tg[$R]["references"][$X["table"]][(string)$le]=array($X["source"],$X["target"]);$zg[$X["table"]][$R][(string)$le]=$X["target"];$ne[(string)$le]=true;}}$gi=max($gi,$Tg[$R]["pos"][0]+2.5+$Xf);}echo'
';foreach($Tg
as$C=>$R){echo" ",' '.h($C)."",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$p){$X=' '.h($p["field"]).'';echo" ".($p["primary"]?" $X":$X);}foreach((array)$R["references"]as$Ph=>$_g){foreach($_g
as$le=>$wg){$me=$le-$Ih[$C][1];$t=0;foreach($wg[0]as$nh)echo"\n ";}}foreach((array)$zg[$C]as$Ph=>$_g){foreach($_g
as$le=>$e){$me=$le-$Ih[$C][1];$t=0;foreach($e
as$Oh)echo"\n ";}}echo"\n \n";}foreach($Tg
as$C=>$R){foreach((array)$R["references"]as$Ph=>$_g){foreach($_g
as$le=>$wg){$Oe=$gi;$De=-10;foreach($wg[0]as$z=>$nh){$Yf=$R["pos"][0]+$R["fields"][$nh]["pos"];$Zf=$Tg[$Ph]["pos"][0]+$Tg[$Ph]["fields"][$wg[1][$z]]["pos"];$Oe=min($Oe,$Yf,$Zf);$De=max($De,$Yf,$Zf);}echo" \n";}}}echo'
',lang(136),'
';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$o){$Db="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$z)$Db.="&$z=".urlencode($_POST[$z]);cookie("adminer_export",substr($Db,1));$T=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$Ic=dump_headers((count($T)==1?key($T):DB),(DB==""||count($T)>1));$Ud=preg_match('~sql~',$_POST["format"]);if($Ud){echo"-- Adminer $ia ".$ec[DRIVER]." dump\n\n";if($y=="sql"){echo"SET NAMES utf8;
SET time_zone = '+00:00';
".($_POST["data_style"]?"SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
":"")."
";$g->query("SET time_zone = '+00:00';");}}$_h=$_POST["db_style"];$l=array(DB);if(DB==""){$l=$_POST["databases"];if(is_string($l))$l=explode("\n",rtrim(str_replace("\r","",$l),"\n"));}foreach((array)$l
as$m){$b->dumpDatabase($m);if($g->select_db($m)){if($Ud&&preg_match('~CREATE~',$_h)&&($i=$g->result("SHOW CREATE DATABASE ".idf_escape($m),1))){set_utf8mb4($i);if($_h=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($m).";\n";echo"$i;\n";}if($Ud){if($_h)echo
use_sql($m).";\n\n";$Df="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$Ng){foreach(get_rows("SHOW $Ng STATUS WHERE Db = ".q($m),null,"-- ")as$J){$i=remove_definer($g->result("SHOW CREATE $Ng ".idf_escape($J["Name"]),2));set_utf8mb4($i);$Df.=($_h!='DROP+CREATE'?"DROP $Ng 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);$Df.=($_h!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($J["Name"]).";;\n":"")."$i;;\n\n";}}if($Df)echo"DELIMITER ;;\n\n$Df"."DELIMITER ;\n\n";}if($_POST["table_style"]||$_POST["data_style"]){$Ri=array();foreach(table_status('',true)as$C=>$S){$R=(DB==""||in_array($C,(array)$_POST["tables"]));$Lb=(DB==""||in_array($C,(array)$_POST["data"]));if($R||$Lb){if($Ic=="tar"){$ci=new
TmpFile;ob_start(array($ci,'write'),1e5);}$b->dumpTable($C,($R?$_POST["table_style"]:""),(is_view($S)?2:0));if(is_view($S))$Ri[]=$C;elseif($Lb){$q=fields($C);$b->dumpData($C,$_POST["data_style"],"SELECT *".convert_fields($q,$q)." FROM ".table($C));}if($Ud&&$_POST["triggers"]&&$R&&($ri=trigger_sql($C)))echo"\nDELIMITER ;;\n$ri\nDELIMITER ;\n";if($Ic=="tar"){ob_end_flush();tar_file((DB!=""?"":"$m/")."$C.csv",$ci);}elseif($Ud)echo"\n";}}foreach($Ri
as$Qi)$b->dumpTable($Qi,$_POST["table_style"],1);if($Ic=="tar")echo
pack("x512");}}}if($Ud)echo"-- ".$g->result("SELECT NOW()")."\n";exit;}page_header(lang(71),$o,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
';$Wc=true;foreach($cg
as$z=>$X){if($z!=""&&$X>1){echo($Wc?"":" ")."".h($z)."";$Wc=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(69));echo' '.lang(142)."";$H=$g->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$kd=$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(!$o&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$wd=&get_session("queries");$vd=&$wd[DB];if(!$o&&$_POST["clear"]){$vd=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?lang(70):lang(62)),$o);if(!$o&&$_POST){$hd=false;if(!isset($_GET["import"]))$G=$_POST["query"];elseif($_POST["webfile"]){$rh=$b->importServerPath();$hd=@fopen((file_exists($rh)?$rh:"compress.zlib://$rh.gz"),"rb");$G=($hd?fread($hd,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){$ng=$G.(preg_match("~;[ \t\r\n]*\$~",$G)?"":";");if(!$vd||reset(end($vd))!=$ng){restart_session();$vd[]=array($ng,time());set_session("queries",$wd);stop_session();}}$oh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$Vb=";";$D=0;$tc=true;$h=connect();if(is_object($h)&&DB!="")$h->select_db(DB);$ub=0;$yc=array();$Jf='[\'"'.($y=="sql"?'`#':($y=="sqlite"?'`[':($y=="mssql"?'[':''))).']|/\\*|-- |$'.($y=="pgsql"?'|\\$[^$]*\\$':'');$hi=microtime(true);parse_str($_COOKIE["adminer_export"],$ya);$kc=$b->dumpFormat();unset($kc["sql"]);while($G!=""){if(!$D&&preg_match("~^$oh*+DELIMITER\\s+(\\S+)~i",$G,$B)){$Vb=$B[1];$G=substr($G,strlen($B[0]));}else{preg_match('('.preg_quote($Vb)."\\s*|$Jf)",$G,$B,PREG_OFFSET_CAPTURE,$D);list($fd,$Xf)=$B[0];if(!$fd&&$hd&&!feof($hd))$G.=fread($hd,1e5);else{if(!$fd&&rtrim($G)=="")break;$D=$Xf+strlen($fd);if($fd&&rtrim($fd)!=$Vb){while(preg_match('('.($fd=='/*'?'\\*/':($fd=='['?']':(preg_match('~^-- |^#~',$fd)?"\n":preg_quote($fd)."|\\\\."))).'|$)s',$G,$B,PREG_OFFSET_CAPTURE,$D)){$Rg=$B[0][0];if(!$Rg&&$hd&&!feof($hd))$G.=fread($hd,1e5);else{$D=$B[0][1]+strlen($Rg);if($Rg[0]!="\\")break;}}}else{$tc=false;$ng=substr($G,0,$Xf);$ub++;$fg="".$b->sqlCommandQuery($ng)." \n";if($y=="sqlite"&&preg_match("~^$oh*+ATTACH\\b~i",$ng,$B)){echo$fg,"".lang(143)."\n";$yc[]=" $ub";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$fg;ob_flush();flush();}$vh=microtime(true);if($g->multi_query($ng)&&is_object($h)&&preg_match("~^$oh*+USE\\b~i",$ng))$h->query($ng);do{$H=$g->store_result();if($g->error){echo($_POST["only_errors"]?$fg:"")," ".lang(144).($g->errno?" ($g->errno)":"").": ".error()."\n";$yc[]=" $ub";if($_POST["error_stops"])break
2;}else{$Vh=" (".format_time($vh).")".(strlen($ng)<1000?" ".lang(10)."":"");$_a=$g->affected_rows;$Ui=($_POST["only_errors"]?"":$n->warnings());$Vi="warnings-$ub";if($Ui)$Vh.=", ".lang(44)."".script("qsl('a').onclick = partial(toggle, '$Vi');","");$Fc=null;$Gc="explain-$ub";if(is_object($H)){$_=$_POST["limit"];$xf=select($H,$h,array(),$_);if(!$_POST["only_errors"]){echo" \n";}}else{if(preg_match("~^$oh*+(CREATE|DROP|ALTER)$oh++(DATABASE|SCHEMA)\\b~i",$ng)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"".lang(147,$_a)."$Vh\n";}echo($Ui?" \n$Ui \n":"");if($Fc){echo"\n";select($Fc,$h,$xf);echo" \n";}}$vh=microtime(true);}while($g->next_result());}$G=substr($G,$D);$D=0;}}}}if($tc)echo"".lang(148)."\n";elseif($_POST["only_errors"]){echo" ".lang(149,$ub-count($yc))," (".format_time($hi).")\n";}elseif($yc&&$ub>1)echo" ".lang(144).": ".implode("",$yc)."\n";}else
echo" ".upload_error($G)."\n";}echo'
';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$q=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$q):""):where($_GET,$q));$Bi=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($q
as$C=>$p){if(!isset($p["privileges"][$Bi?"update":"insert"])||$b->fieldName($p)=="")unset($q[$C]);}if($_POST&&!$o&&!isset($_GET["select"])){$te=$_POST["referer"];if($_POST["insert"])$te=($Bi?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$te))$te=ME."select=".urlencode($a);$x=indexes($a);$xi=unique_array($_GET["where"],$x);$qg="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($te,lang(162),$n->delete($a,$qg,!$xi));else{$O=array();foreach($q
as$C=>$p){$X=process_input($p);if($X!==false&&$X!==null)$O[idf_escape($C)]=$X;}if($Bi){if(!$O)redirect($te);queries_redirect($te,lang(163),$n->update($a,$O,$qg,!$xi));if(is_ajax()){page_headers();page_messages($o);exit;}}else{$H=$n->insert($a,$O);$ke=($H?last_id():0);queries_redirect($te,lang(164,($ke?" $ke":"")),$H);}}}$J=null;if($_POST["save"])$J=(array)$_POST["fields"];elseif($Z){$L=array();foreach($q
as$C=>$p){if(isset($p["privileges"]["select"])){$Ha=convert_field($p);if($_POST["clone"]&&$p["auto_increment"])$Ha="''";if($y=="sql"&&preg_match("~enum|set~",$p["type"]))$Ha="1*".idf_escape($C);$L[]=($Ha?"$Ha AS ":"").idf_escape($C);}}$J=array();if(!support("table"))$L=array("*");if($L){$H=$n->select($a,$L,array($Z),$L,array(),(isset($_GET["select"])?2:1));if(!$H)$o=error();else{$J=$H->fetch_assoc();if(!$J)$J=false;}if(isset($_GET["select"])&&(!$J||$H->fetch_assoc()))$J=null;}}if(!support("table")&&!$q){if(!$Z){$H=$n->select($a,array("*"),$Z,array("*"));$J=($H?$H->fetch_assoc():false);if(!$J)$J=array($n->primary=>"");}if($J){foreach($J
as$z=>$X){if(!$Z)$J[$z]=null;$q[$z]=array("field"=>$z,"null"=>($z!=$n->primary),"auto_increment"=>($z==$n->primary));}}}edit_form($a,$q,$J,$Bi);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Lf=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$z)$Lf[$z]=$z;$yg=referencable_primary($a);$dd=array();foreach($yg
as$Gh=>$p)$dd[str_replace("`","``",$Gh)."`".str_replace("`","``",$p["field"])]=$Gh;$_f=array();$S=array();if($a!=""){$_f=fields($a);$S=table_status($a);if(!$S)$o=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&&!process_fields($J["fields"])&&!$o){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(165),drop_tables(array($a)));else{$q=array();$Ea=array();$Gi=false;$bd=array();$zf=reset($_f);$Ba=" FIRST";foreach($J["fields"]as$z=>$p){$r=$dd[$p["type"]];$si=($r!==null?$yg[$r]:$p);if($p["field"]!=""){if(!$p["has_default"])$p["default"]=null;if($z==$J["auto_increment_col"])$p["auto_increment"]=true;$kg=process_field($p,$si);$Ea[]=array($p["orig"],$kg,$Ba);if($kg!=process_field($zf,$zf)){$q[]=array($p["orig"],$kg,$Ba);if($p["orig"]!=""||$Ba)$Gi=true;}if($r!==null)$bd[idf_escape($p["field"])]=($a!=""&&$y!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$dd[$p["type"]],'source'=>array($p["field"]),'target'=>array($si["field"]),'on_delete'=>$p["on_delete"],));$Ba=" AFTER ".idf_escape($p["field"]);}elseif($p["orig"]!=""){$Gi=true;$q[]=array($p["orig"]);}if($p["orig"]!=""){$zf=next($_f);if(!$zf)$Ba="";}}$Nf="";if($Lf[$J["partition_by"]]){$Of=array();if($J["partition_by"]=='RANGE'||$J["partition_by"]=='LIST'){foreach(array_filter($J["partition_names"])as$z=>$X){$Y=$J["partition_values"][$z];$Of[]="\n PARTITION ".idf_escape($X)." VALUES ".($J["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$Nf.="\nPARTITION BY $J[partition_by]($J[partition])".($Of?" (".implode(",",$Of)."\n)":($J["partitions"]?" PARTITIONS ".(+$J["partitions"]):""));}elseif(support("partitioning")&&preg_match("~partitioned~",$S["Create_options"]))$Nf.="\nREMOVE PARTITIONING";$He=lang(166);if($a==""){cookie("adminer_engine",$J["Engine"]);$He=lang(167);}$C=trim($J["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($C),$He,alter_table($a,$C,($y=="sqlite"&&($Gi||$bd)?$Ea:$q),$bd,($J["Comment"]!=$S["Comment"]?$J["Comment"]:null),($J["Engine"]&&$J["Engine"]!=$S["Engine"]?$J["Engine"]:""),($J["Collation"]&&$J["Collation"]!=$S["Collation"]?$J["Collation"]:""),($J["Auto_increment"]!=""?number($J["Auto_increment"]):""),$Nf));}}page_header(($a!=""?lang(42):lang(72)),$o,array("table"=>$a),h($a));if(!$_POST){$J=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($ui["int"])?"int":(isset($ui["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$J=$S;$J["name"]=$a;$J["fields"]=array();if(!$_GET["auto_increment"])$J["Auto_increment"]="";foreach($_f
as$p){$p["has_default"]=isset($p["default"]);$J["fields"][]=$p;}if(support("partitioning")){$id="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 $id ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($J["partition_by"],$J["partitions"],$J["partition"])=$H->fetch_row();$Of=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $id AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$Of[""]="";$J["partition_names"]=array_keys($Of);$J["partition_values"]=array_values($Of);}}}$qb=collations();$vc=engines();foreach($vc
as$uc){if(!strcasecmp($uc,$J["Engine"])){$J["Engine"]=$uc;break;}}echo'
';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Ed=array("PRIMARY","UNIQUE","INDEX");$S=table_status($a,true);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$Ed[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$Ed[]="SPATIAL";$x=indexes($a);$dg=array();if($y=="mongo"){$dg=$x["_id_"];unset($Ed[0]);unset($x["_id_"]);}$J=$_POST;if($_POST&&!$o&&!$_POST["add"]&&!$_POST["drop_col"]){$c=array();foreach($J["indexes"]as$w){$C=$w["name"];if(in_array($w["type"],$Ed)){$e=array();$qe=array();$Xb=array();$O=array();ksort($w["columns"]);foreach($w["columns"]as$z=>$d){if($d!=""){$pe=$w["lengths"][$z];$Wb=$w["descs"][$z];$O[]=idf_escape($d).($pe?"(".(+$pe).")":"").($Wb?" DESC":"");$e[]=$d;$qe[]=($pe?$pe:null);$Xb[]=$Wb;}}if($e){$Dc=$x[$C];if($Dc){ksort($Dc["columns"]);ksort($Dc["lengths"]);ksort($Dc["descs"]);if($w["type"]==$Dc["type"]&&array_values($Dc["columns"])===$e&&(!$Dc["lengths"]||array_values($Dc["lengths"])===$qe)&&array_values($Dc["descs"])===$Xb){unset($x[$C]);continue;}}$c[]=array($w["type"],$C,$O);}}}foreach($x
as$C=>$Dc)$c[]=array($Dc["type"],$C,"DROP");if(!$c)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),lang(176),alter_indexes($a,$c));}page_header(lang(128),$o,array("table"=>$a),h($a));$q=array_keys(fields($a));if($_POST["add"]){foreach($J["indexes"]as$z=>$w){if($w["columns"][count($w["columns"])]!="")$J["indexes"][$z]["columns"][]="";}$w=end($J["indexes"]);if($w["type"]||array_filter($w["columns"],'strlen'))$J["indexes"][]=array("columns"=>array(1=>""));}if(!$J){foreach($x
as$z=>$w){$x[$z]["name"]=$z;$x[$z]["columns"][]="";}$x[]=array("columns"=>array(1=>""));$J["indexes"]=$x;}echo'
';}elseif(isset($_GET["database"])){$J=$_POST;if($_POST&&!$o&&!isset($_POST["add_x"])){$C=trim($J["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(180),drop_databases(array(DB)));}elseif(DB!==$C){if(DB!=""){$_GET["db"]=$C;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($C),lang(181),rename_database($C,$J["collation"]));}else{$l=explode("\n",str_replace("\r","",$C));$Ah=true;$je="";foreach($l
as$m){if(count($l)==1||$m!=""){if(!create_database($m,$J["collation"]))$Ah=false;$je=$m;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($je),lang(182),$Ah);}}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(183));}}page_header(DB!=""?lang(65):lang(111),$o,array(),h(DB));$qb=collations();$C=DB;if($_POST)$C=$J["name"];elseif(DB!="")$J["collation"]=db_collation(DB,$qb);elseif($y=="sql"){foreach(get_vals("SHOW GRANTS")as$kd){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~',$kd,$B)&&$B[1]){$C=stripcslashes(idf_unescape("`$B[2]`"));break;}}}echo'
';}elseif(isset($_GET["scheme"])){$J=$_POST;if($_POST&&!$o){$A=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$A,lang(184));else{$C=trim($J["name"]);$A.=urlencode($C);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($C),$A,lang(185));elseif($_GET["ns"]!=$C)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($C),$A,lang(186));else
redirect($A);}}page_header($_GET["ns"]!=""?lang(66):lang(67),$o);if(!$J)$J["name"]=$_GET["ns"];echo'
';}elseif(isset($_GET["call"])){$da=($_GET["name"]?$_GET["name"]:$_GET["call"]);page_header(lang(187).": ".h($da),$o);$Ng=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Cd=array();$Df=array();foreach($Ng["fields"]as$t=>$p){if(substr($p["inout"],-3)=="OUT")$Df[$t]="@".idf_escape($p["field"])." AS ".idf_escape($p["field"]);if(!$p["inout"]||substr($p["inout"],0,2)=="IN")$Cd[]=$t;}if(!$o&&$_POST){$ab=array();foreach($Ng["fields"]as$z=>$p){if(in_array($z,$Cd)){$X=process_input($p);if($X===false)$X="''";if(isset($Df[$z]))$g->query("SET @".idf_escape($p["field"])." = $X");}$ab[]=(isset($Df[$z])?"@".idf_escape($p["field"]):$X);}$G=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($da)."(".implode(", ",$ab).")";$vh=microtime(true);$H=$g->multi_query($G);$_a=$g->affected_rows;echo$b->selectQuery($G,$vh,!$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(188,$_a)."\n";}while($g->next_result());if($Df)select($g->query("SELECT ".implode(", ",$Df)));}}echo'
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$C=$_GET["name"];$J=$_POST;if($_POST&&!$o&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$He=($_POST["drop"]?lang(189):($C!=""?lang(190):lang(191)));$te=ME."table=".urlencode($a);if(!$_POST["drop"]){$J["source"]=array_filter($J["source"],'strlen');ksort($J["source"]);$Oh=array();foreach($J["source"]as$z=>$X)$Oh[$z]=$J["target"][$z];$J["target"]=$Oh;}if($y=="sqlite")queries_redirect($te,$He,recreate_table($a,$a,array(),array(),array(" $C"=>($_POST["drop"]?"":" ".format_foreign_key($J)))));else{$c="ALTER TABLE ".table($a);$fc="\nDROP ".($y=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($C);if($_POST["drop"])query_redirect($c.$fc,$te,$He);else{query_redirect($c.($C!=""?"$fc,":"")."\nADD".format_foreign_key($J),$te,$He);$o=lang(192)." $o";}}}page_header(lang(193),$o,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!=""){$dd=foreign_keys($a);$J=$dd[$C];$J["source"][]="";}else{$J["table"]=$a;$J["source"]=array("");}$nh=array_keys(fields($a));$Oh=($a===$J["table"]?$nh:array_keys(fields($J["table"])));$xg=array_keys(array_filter(table_status('',true),'fk_support'));echo'
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$J=$_POST;$Af="VIEW";if($y=="pgsql"&&$a!=""){$P=table_status($a);$Af=strtoupper($P["Engine"]);}if($_POST&&!$o){$C=trim($J["name"]);$Ha=" AS\n$J[select]";$te=ME."table=".urlencode($C);$He=lang(197);$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$C&&$y!="sqlite"&&$U=="VIEW"&&$Af=="VIEW")query_redirect(($y=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($C).$Ha,$te,$He);else{$Qh=$C."_adminer_".uniqid();drop_create("DROP $Af ".table($a),"CREATE $U ".table($C).$Ha,"DROP $U ".table($C),"CREATE $U ".table($Qh).$Ha,"DROP $U ".table($Qh),($_POST["drop"]?substr(ME,0,-1):$te),lang(198),$He,lang(199),$a,$C);}}if(!$_POST&&$a!=""){$J=view($a);$J["name"]=$a;$J["materialized"]=($Af!="VIEW");if(!$o)$o=error();}page_header(($a!=""?lang(41):lang(200)),$o,array("table"=>$a),h($a));echo'
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Pd=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$xh=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$J=$_POST;if($_POST&&!$o){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(201));elseif(in_array($J["INTERVAL_FIELD"],$Pd)&&isset($xh[$J["STATUS"]])){$Sg="\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(202):lang(203)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Sg.($aa!=$J["EVENT_NAME"]?"\nRENAME TO ".idf_escape($J["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($J["EVENT_NAME"]).$Sg)."\n".$xh[$J["STATUS"]]." COMMENT ".q($J["EVENT_COMMENT"]).rtrim(" DO\n$J[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(204).": ".h($aa):lang(205)),$o);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"]);$Ng=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$J=$_POST;$J["fields"]=(array)$J["fields"];if($_POST&&!process_fields($J["fields"])&&!$o){$yf=routine($_GET["procedure"],$Ng);$Qh="$J[name]_adminer_".uniqid();drop_create("DROP $Ng ".routine_id($da,$yf),create_routine($Ng,$J),"DROP $Ng ".routine_id($J["name"],$J),create_routine($Ng,array("name"=>$Qh)+$J),"DROP $Ng ".routine_id($Qh,$J),substr(ME,0,-1),lang(210),lang(211),lang(212),$da,$J["name"]);}page_header(($da!=""?(isset($_GET["function"])?lang(213):lang(214)).": ".h($da):(isset($_GET["function"])?lang(215):lang(216))),$o);if(!$_POST&&$da!=""){$J=routine($_GET["procedure"],$Ng);$J["name"]=$da;}$qb=get_vals("SHOW CHARACTER SET");sort($qb);$Og=routine_languages();echo'
';}elseif(isset($_GET["sequence"])){$fa=$_GET["sequence"];$J=$_POST;if($_POST&&!$o){$A=substr(ME,0,-1);$C=trim($J["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($fa),$A,lang(218));elseif($fa=="")query_redirect("CREATE SEQUENCE ".idf_escape($C),$A,lang(219));elseif($fa!=$C)query_redirect("ALTER SEQUENCE ".idf_escape($fa)." RENAME TO ".idf_escape($C),$A,lang(220));else
redirect($A);}page_header($fa!=""?lang(221).": ".h($fa):lang(222),$o);if(!$J)$J["name"]=$fa;echo'
';}elseif(isset($_GET["type"])){$ga=$_GET["type"];$J=$_POST;if($_POST&&!$o){$A=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ga),$A,lang(223));else
query_redirect("CREATE TYPE ".idf_escape(trim($J["name"]))." $J[as]",$A,lang(224));}page_header($ga!=""?lang(225).": ".h($ga):lang(226),$o);if(!$J)$J["as"]="AS ";echo'
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$C=$_GET["name"];$qi=trigger_options();$J=(array)trigger($C)+array("Trigger"=>$a."_bi");if($_POST){if(!$o&&in_array($_POST["Timing"],$qi["Timing"])&&in_array($_POST["Event"],$qi["Event"])&&in_array($_POST["Type"],$qi["Type"])){$jf=" ON ".table($a);$fc="DROP TRIGGER ".idf_escape($C).($y=="pgsql"?$jf:"");$te=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($fc,$te,lang(227));else{if($C!="")queries($fc);queries_redirect($te,($C!=""?lang(228):lang(229)),queries(create_trigger($jf,$_POST)));if($C!="")queries(create_trigger($jf,$J+array("Type"=>reset($qi["Type"]))));}}$J=$_POST;}page_header(($C!=""?lang(230).": ".h($C):lang(231)),$o,array("table"=>$a));echo'
';}elseif(isset($_GET["user"])){$ha=$_GET["user"];$ig=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$J){foreach(explode(",",($J["Privilege"]=="Grant option"?"":$J["Context"]))as$Bb)$ig[$Bb][$J["Privilege"]]=$J["Comment"];}$ig["Server Admin"]+=$ig["File access on server"];$ig["Databases"]["Create routine"]=$ig["Procedures"]["Create routine"];unset($ig["Procedures"]["Create routine"]);$ig["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$ig["Columns"][$X]=$ig["Tables"][$X];unset($ig["Server Admin"]["Usage"]);foreach($ig["Tables"]as$z=>$X)unset($ig["Databases"][$z]);$Ue=array();if($_POST){foreach($_POST["objects"]as$z=>$X)$Ue[$X]=(array)$Ue[$X]+(array)$_POST["grants"][$z];}$ld=array();$hf="";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],$B)&&preg_match_all('~ *([^(,]*[^ ,(])( *\\([^)]+\\))?~',$B[1],$_e,PREG_SET_ORDER)){foreach($_e
as$X){if($X[1]!="USAGE")$ld["$B[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$J[0]))$ld["$B[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$J[0],$B))$hf=$B[1];}}if($_POST&&!$o){$if=(isset($_GET["host"])?q($ha)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $if",ME."privileges=",lang(234));else{$We=q($_POST["user"])."@".q($_POST["host"]);$Qf=$_POST["pass"];if($Qf!=''&&!$_POST["hashed"]){$Qf=$g->result("SELECT PASSWORD(".q($Qf).")");$o=!$Qf;}$Gb=false;if(!$o){if($if!=$We){$Gb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $We IDENTIFIED BY PASSWORD ".q($Qf));$o=!$Gb;}elseif($Qf!=$hf)queries("SET PASSWORD FOR $We = ".q($Qf));}if(!$o){$Kg=array();foreach($Ue
as$cf=>$kd){if(isset($_GET["grant"]))$kd=array_filter($kd);$kd=array_keys($kd);if(isset($_GET["grant"]))$Kg=array_diff(array_keys(array_filter($Ue[$cf],'strlen')),$kd);elseif($if==$We){$ff=array_keys((array)$ld[$cf]);$Kg=array_diff($ff,$kd);$kd=array_diff($kd,$ff);unset($ld[$cf]);}if(preg_match('~^(.+)\\s*(\\(.*\\))?$~U',$cf,$B)&&(!grant("REVOKE",$Kg,$B[2]," ON $B[1] FROM $We")||!grant("GRANT",$kd,$B[2]," ON $B[1] TO $We"))){$o=true;break;}}}if(!$o&&isset($_GET["host"])){if($if!=$We)queries("DROP USER $if");elseif(!isset($_GET["grant"])){foreach($ld
as$cf=>$Kg){if(preg_match('~^(.+)(\\(.*\\))?$~U',$cf,$B))grant("REVOKE",array_keys($Kg),$B[2]," ON $B[1] FROM $We");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(235):lang(236)),!$o);if($Gb)$g->query("DROP USER $We");}}page_header((isset($_GET["host"])?lang(33).": ".h("$ha@$_GET[host]"):lang(142)),$o,array("privileges"=>array('',lang(69))));if($_POST){$J=$_POST;$ld=$Ue;}else{$J=$_GET+array("host"=>$g->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$J["pass"]=$hf;if($hf!="")$J["hashed"]=true;$ld[(DB==""||$ld?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'
';}elseif(isset($_GET["processlist"])){if(support("kill")&&$_POST&&!$o){$ee=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$ee++;}queries_redirect(ME."processlist=",lang(241,$ee),$ee||!$_POST["kill"]);}page_header(lang(112),$o);echo'
',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$x=indexes($a);$q=fields($a);$dd=column_foreign_keys($a);$ef=$S["Oid"];parse_str($_COOKIE["adminer_import"],$za);$Lg=array();$e=array();$Uh=null;foreach($q
as$z=>$p){$C=$b->fieldName($p);if(isset($p["privileges"]["select"])&&$C!=""){$e[$z]=html_entity_decode(strip_tags($C),ENT_QUOTES);if(is_shortable($p))$Uh=$b->selectLengthProcess();}$Lg+=$p["privileges"];}list($L,$md)=$b->selectColumnsProcess($e,$x);$Td=count($md)selectSearchProcess($q,$x);$uf=$b->selectOrderProcess($q,$x);$_=$b->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$yi=>$J){$Ha=convert_field($q[key($J)]);$L=array($Ha?$Ha:idf_escape(key($J)));$Z[]=where_check($yi,$q);$I=$n->select($a,$L,$Z,$L);if($I)echo
reset($I->fetch_row());}exit;}$dg=$_i=null;foreach($x
as$w){if($w["type"]=="PRIMARY"){$dg=array_flip($w["columns"]);$_i=($L?$dg:array());foreach($_i
as$z=>$X){if(in_array(idf_escape($z),$L))unset($_i[$z]);}break;}}if($ef&&!$dg){$dg=$_i=array($ef=>0);$x[]=array("type"=>"PRIMARY","columns"=>array($ef));}if($_POST&&!$o){$aj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$gb=array();foreach($_POST["check"]as$db)$gb[]=where_check($db,$q);$aj[]="((".implode(") OR (",$gb)."))";}$aj=($aj?"\nWHERE ".implode(" AND ",$aj):"");if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");$id=($L?implode(", ",$L):"*").convert_fields($e,$q,$L)."\nFROM ".table($a);$od=($md&&$Td?"\nGROUP BY ".implode(", ",$md):"").($uf?"\nORDER BY ".implode(", ",$uf):"");if(!is_array($_POST["check"])||$dg)$G="SELECT $id$aj$od";else{$wi=array();foreach($_POST["check"]as$X)$wi[]="(SELECT".limit($id,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$q).$od,1).")";$G=implode(" UNION ALL ",$wi);}$b->dumpData($a,"table",$G);exit;}if(!$b->selectEmailProcess($Z,$dd)){if($_POST["save"]||$_POST["delete"]){$H=true;$_a=0;$O=array();if(!$_POST["delete"]){foreach($e
as$C=>$X){$X=process_input($q[$C]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($C)]=($X!==false?$X:idf_escape($C));}}if($_POST["delete"]||$O){if($_POST["clone"])$G="INTO ".table($a)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a);if($_POST["all"]||($dg&&is_array($_POST["check"]))||$Td){$H=($_POST["delete"]?$n->delete($a,$aj):($_POST["clone"]?queries("INSERT $G$aj"):$n->update($a,$O,$aj)));$_a=$g->affected_rows;}else{foreach((array)$_POST["check"]as$X){$Wi="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$q);$H=($_POST["delete"]?$n->delete($a,$Wi,1):($_POST["clone"]?queries("INSERT".limit1($a,$G,$Wi)):$n->update($a,$O,$Wi,1)));if(!$H)break;$_a+=$g->affected_rows;}}}$He=lang(245,$_a);if($_POST["clone"]&&$H&&$_a==1){$ke=last_id();if($ke)$He=lang(164," $ke");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$He,$H);if(!$_POST["delete"]){edit_form($a,$q,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$o=lang(246);else{$H=true;$_a=0;foreach($_POST["val"]as$yi=>$J){$O=array();foreach($J
as$z=>$X){$z=bracket_escape($z,1);$O[idf_escape($z)]=(preg_match('~char|text~',$q[$z]["type"])||$X!=""?$b->processInput($q[$z],$X):"NULL");}$H=$n->update($a,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($yi,$q),!$Td&&!$dg," ");if(!$H)break;$_a+=$g->affected_rows;}queries_redirect(remove_from_uri(),lang(245,$_a),$H);}}elseif(!is_string($Tc=get_file("csv_file",true)))$o=upload_error($Tc);elseif(!preg_match('~~u',$Tc))$o=lang(247);else{cookie("adminer_import","output=".urlencode($za["output"])."&format=".urlencode($_POST["separator"]));$H=true;$sb=array_keys($q);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$Tc,$_e);$_a=count($_e[0]);$n->begin();$M=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$K=array();foreach($_e[0]as$z=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$M]*)$M~",$X.$M,$Ae);if(!$z&&!array_diff($Ae[1],$sb)){$sb=$Ae[1];$_a--;}else{$O=array();foreach($Ae[1]as$t=>$nb)$O[idf_escape($sb[$t])]=($nb==""&&$q[$sb[$t]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$nb))));$K[]=$O;}}$H=(!$K||$n->insertUpdate($a,$K,$dg));if($H)$H=$n->commit();queries_redirect(remove_from_uri("page"),lang(248,$_a),$H);$n->rollback();}}}$Gh=$b->tableName($S);if(is_ajax()){page_headers();ob_start();}else
page_header(lang(51).": $Gh",$o);$O=null;if(isset($Lg["insert"])||!support("table")){$O="";foreach((array)$_GET["where"]as$X){if($dd[$X["col"]]&&count($dd[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match('~[_%]~',$X["val"]))))$O.="&set".urlencode("[".bracket_escape($X["col"])."]")."=".urlencode($X["val"]);}}$b->selectLinks($S,$O);if(!$e&&support("table"))echo"".lang(249).($q?".":": ".error())."\n";else{echo" \n";$E=$_GET["page"];if($E=="last"){$gd=$g->result(count_rows($a,$Z,$Td,$md));$E=floor(max(0,$gd-1)/$_);}$Xg=$L;$nd=$md;if(!$Xg){$Xg[]="*";$Cb=convert_fields($e,$q,$L);if($Cb)$Xg[]=substr($Cb,2);}foreach($L
as$z=>$X){$p=$q[idf_unescape($X)];if($p&&($Ha=convert_field($p)))$Xg[$z]="$Ha AS $X";}if(!$Td&&$_i){foreach($_i
as$z=>$X){$Xg[]=idf_escape($z);if($nd)$nd[]=idf_escape($z);}}$H=$n->select($a,$Xg,$Z,$nd,$uf,$_,$E,true);if(!$H)echo"".error()."\n";else{if($y=="mssql"&&$E)$H->seek($_*$E);$sc=array();echo" \n",(!$md&&$L?"":script("tableCheck();"));}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$P=isset($_GET["status"]);page_header($P?lang(114):lang(113));$Ni=($P?show_status():show_variables());if(!$Ni)echo"".lang(12)."\n";else{echo" \n";foreach($Ni
as$z=>$X){echo"","".h($z).""," | ".nbsp($X);}echo" | \n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Dh=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$C=>$S){json_row("Comment-$C",nbsp($S["Comment"]));if(!is_view($S)){foreach(array("Engine","Collation")as$z)json_row("$z-$C",nbsp($S[$z]));foreach($Dh+array("Auto_increment"=>0,"Rows"=>0)as$z=>$X){if($S[$z]!=""){$X=format_number($S[$z]);json_row("$z-$C",($z=="Rows"&&$X&&$S["Engine"]==($qh=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Dh[$z]))$Dh[$z]+=($S["Engine"]!="InnoDB"||$z!="Data_free"?$S[$z]:0);}elseif(array_key_exists($z,$S))json_row("$z-$C");}}}foreach($Dh
as$z=>$X)json_row("sum-$z",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$g->query("KILL ".number($_POST["kill"]));elseif($_GET["script"]=="version"){$hd=file_open_lock(get_temp_dir()."/adminer.version");if($hd)file_write_unlock($hd,serialize(array("signature"=>$_POST["signature"],"version"=>$_POST["version"])));}else{foreach(count_tables($b->databases())as$m=>$X){json_row("tables-$m",$X);json_row("size-$m",db_size($m));}json_row("");}exit;}else{$Mh=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Mh&&!$o&&!$_POST["search"]){$H=true;$He="";if($y=="sql"&&$_POST["tables"]&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$H=truncate_tables($_POST["tables"]);$He=lang(259);}elseif($_POST["move"]){$H=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$He=lang(260);}elseif($_POST["copy"]){$H=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$He=lang(261);}elseif($_POST["drop"]){if($_POST["views"])$H=drop_views($_POST["views"]);if($H&&$_POST["tables"])$H=drop_tables($_POST["tables"]);$He=lang(262);}elseif($y!="sql"){$H=($y=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$He=lang(263);}elseif(!$_POST["tables"])$He=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())$He.="".h($J["Table"]).": ".h($J["Msg_text"])." ";}queries_redirect(substr(ME,0,-1),$He,$H);}page_header(($_GET["ns"]==""?lang(35).": ".h(DB):lang(75).": ".h($_GET["ns"])),$o,true);if($b->homepage()){if($_GET["ns"]!==""){echo"".lang(264)."\n";$Lh=tables_list();if(!$Lh)echo"".lang(9)."\n";else{echo" \n",script("tableCheck();");}echo''.lang(72)."\n",(support("view")?''.lang(200)."\n":"");if(support("routine")){echo" ".lang(139)."\n";$Pg=routines();if($Pg){echo"\n",'| '.lang(179).' | '.lang(47).' | '.lang(217)." | | \n";odd('');foreach($Pg
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(132)."";}echo" | \n";}echo''.(support("procedure")?''.lang(216).'':'').''.lang(215)."\n";}if(support("sequence")){echo" ".lang(280)."\n";$dh=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($dh){echo"\n","| ".lang(179)." | \n";odd('');foreach($dh
as$X)echo"| ".h($X)."\n";echo" |
|---|
\n";}echo"".lang(222)."\n";}if(support("type")){echo" ".lang(24)."\n";$Ii=types();if($Ii){echo"\n","| ".lang(179)." | \n";odd('');foreach($Ii
as$X)echo"| ".h($X)."\n";echo" |
|---|
\n";}echo"".lang(226)."\n";}if(support("event")){echo" ".lang(140)."\n";$K=get_rows("SHOW EVENTS");if($K){echo"\n","| ".lang(179)." | ".lang(281)." | ".lang(206)." | ".lang(207)." | | \n";foreach($K
as$J){echo"","| ".h($J["Name"])," | ".($J["Execute at"]?lang(282)." | ".$J["Execute at"]:lang(208)." ".$J["Interval value"]." ".$J["Interval field"]." | $J[Starts]")," | $J[Ends]",' | '.lang(132).'';}echo" | \n";$_c=$g->result("SELECT @@event_scheduler");if($_c&&$_c!="ON")echo"event_scheduler: ".h($_c)."\n";}echo'
'.lang(205)."\n";}if($Lh)echo
script("ajaxSetHtml('".js_escape(ME)."script=db');");}}}page_footer(); |