*8ՠ08A:с]wúz>9\n+:iiPoG01)ZږneR֖gMgsLCr8Ѐ!3R)00sIJVPpK\n|9e[ˑD0z4ϑo,N8ns#{蓷z3>BS\";e5VD0[\$7z0=8 T 3Q'RnLyŋ'\0o,\0:[}(|X>xvqW?tBE1wG;!5|0JI@#uņI\\p8!']߮l-lSB,ӗ]1ԕHN8%% /;FGSh\\لct2|W\$t<hO+#BaN1{yw2\\Z&)db',Xxm~H@:d >=-lKJ\0́@rϥ@\"(AZ7h>\\#>\0XrYYxŝq=:Թ\rlomgbD_TxC0.yR]_ZǻWIG Mɪ(|@\0SOs {@k}FXSb8=_l\0=g{HyG s_J\$hkFqd4ω'>vϏ!_7Vq@1zuSejKdyuS.2\"{K?s˦hRd`:yGھ\nQow'hS>LX}eG@9W|Ϲ@_uZ=,!}\0I@#\"'Y`\\?p,Gל_'G T#oH\r\"o}?O鼔7|'=8MQyaH?߮ \0bUd67I O\"-2_0\r?hOt\0\0002~° 4K,oh Pcz`@\"H; ,='S.bSCc욌R,~X@ '8Z0&(np<6]#;C.Ҏ8P3;@L,+>p(#-f1z,8ߠƐP:9R۳)e\0ڢR!\nr{eGA@*nD6N\rR8QK0颽>PNIQ=r<;&fNGJ;UAAP&`);!s\0pp\rn(@%& SdYuC,8O#oRv,#|7\"CpB`jX3~R@v9B#@\n0>T-5/= E\nd\"!;p*nZ\08/jX\r>F Pϐe>OLO0\0)k㦃[ ϳ'L 1 1\0C1T`RʐzĚp< .>5\0> Bnˊ<\"he>кîs!H{ܐ!\r\r\"|>R1d\"U@D63>o\rvL:K2+0쾁>\0 B{!r*Hy;`8\0دd\r02A?+\0Å\0AwSl\r[ԡ6co=0z/J+ꆌW[~C0e30HQPDPY}4#YDp) |@&-/F T aH5#H.A>0;.Yġ *D2=3 pBnuDw\n!zCQ \0HQ4D*7\0J%ıpuD(O=!>u,71TM+31:\"PRQ?P+11= M\$ZlT7,Nq%E!S2&U*>GDS&ozh8881\\:Z0hT C+#ʱA%D!\0XDA3\0!\\#h9bT!dYj2S\nA+ͽHwD`(AB*+%EX.ˠB#ȿ&XeEo\"|r8W2@8Da|NhJ8[۳Wz{Z\"L\0\0Ȇ8x۶X@ Eh;af1;nhZ3E0| 옑AtB,~W8^Ǡ׃<2/ 8+۔O+%P#ή\n?߉?e˔O\\]7(#D۾(!c)NMFE#DXg)0A\0:rB`` QHc!\n59MXpQ^GNH'z5Ƞ9{M\0^ \0'!fWόs\0(3\nw@5F\"}.^ġBtjGMA9XBb`-4ch)ՀvÚ|@QqCq萴}9Lzx\"16+7qI~Ge{qE&ۑ9D H\0/JJ2i*\nIȏR\n\$ z!V0`3P܃RT0\rHjM\\!W!p`N#]!H\" \"pZr\$BCq蕹2\0\$s\$)#0\$#ř6wH1S6FL2/Ǥ1 z@tlǂ>`)r@\0? ,\$\n7>&i <@\05 D>Iĕ2X #>UL +2 \\JB\0%\0 #%, \"Zd2b?0I#\$\n` zs@+I\n&\n>#酽&*%\0(ch \$ɖ> &8jv(0\0p )\nd'I](*NX`&\$ (\$̓x2Io%u+(@3J4%L>(\\nKTCJ)'l\0JU(ܖ#K)@ɀ(`4rq\$x \"\0 #I#*2r#bz5v\$&\\!ʱ*hx\\\0&I8ɾtc뀞!?\n/ɻ+L`\"BI,rMҕɺ?C\$>\nK\$0+, \"ʞ\0,de\$R&\n\0)#IܬN&#Hrʼp \0@2`\0; #:-n, 2ɑ%tdI.0\\tKlH&' R:X1*IDԽ@'#/\n\$ʫ0`'˝002:L .,rb1 -CJ`\rK-K0?;IJ##M&I%ȝ?< \"=+̀(̣ҟJ2:(\\*R'4ŀ-Z* ?7;NiVL\nX`\"`Nܲ\0I7py`;E!4DL<6#D\"J<Nh@p627[+N2 cx\"Ҁ=$_POST["signature"],"version"=>$_POST["version"])));exit;}global$b,$f,$k,$zb,$Gb,$Qb,$l,$uc,$yc,$aa,$Qc,$y,$ba,$gd,$Wd,$De,$Of,$Cc,$U,$xg,$Cg,$Jg,$da;if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";if($_SERVER["HTTP_X_FORWARDED_PREFIX"])$_SERVER["REQUEST_URI"]=$_SERVER["HTTP_X_FORWARDED_PREFIX"].$_SERVER["REQUEST_URI"];$aa=($_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off"))||ini_bool("session.cookie_secure");@ini_set("session.use_trans_sid",false);if(!defined("SID")){session_cache_limiter("");session_name("adminer_sid");$ue=array(0,preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0)$ue[]=true;call_user_func_array('session_set_cookie_params',$ue);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$kc);if(function_exists("get_magic_quotes_runtime")&&get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",15);function
get_lang(){return'de';}function
lang($wg,$Qd=null){if(is_array($wg)){$Ie=($Qd==1?0:1);$wg=$wg[$Ie];}$wg=str_replace("%d","%s",$wg);$Qd=format_number($Qd);return
sprintf($wg,$Qd);}if(extension_loaded('pdo')){class
Min_PDO{var$_result,$server_info,$affected_rows,$errno,$error,$pdo;function
__construct(){global$b;$Ie=array_search("SQL",$b->operators);if($Ie!==false)unset($b->operators[$Ie]);}function
dsn($Db,$Rg,$_e,$de=array()){$de[PDO::ATTR_ERRMODE]=PDO::ERRMODE_SILENT;$de[PDO::ATTR_STATEMENT_CLASS]=array('Min_PDOStatement');try{$this->pdo=new
PDO($Db,$Rg,$_e,$de);}catch(Exception$Vb){auth_error(h($Vb->getMessage()));}$this->server_info=@$this->pdo->getAttribute(PDO::ATTR_SERVER_VERSION);}function
quote($Q){return$this->pdo->quote($Q);}function
query($I,$Dg=false){$J=$this->pdo->query($I);$this->error="";if(!$J){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error='Unknown error.';return
false;}$this->store_result($J);return$J;}function
multi_query($I){return$this->_result=$this->query($I);}function
store_result($J=null){if(!$J){$J=$this->_result;if(!$J)return
false;}if($J->columnCount()){$J->num_rows=$J->rowCount();return$J;}$this->affected_rows=$J->rowCount();return
true;}function
next_result(){if(!$this->_result)return
false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function
result($I,$m=0){$J=$this->query($I);if(!$J)return
false;$L=$J->fetch();return$L[$m];}}class
Min_PDOStatement
extends
PDOStatement{var$_offset=0,$num_rows;function
fetch_assoc(){return$this->fetch(PDO::FETCH_ASSOC);}function
fetch_row(){return$this->fetch(PDO::FETCH_NUM);}function
fetch_field(){$L=(object)$this->getColumnMeta($this->_offset++);$L->orgtable=$L->table;$L->orgname=$L->name;$L->charsetnr=(in_array("blob",(array)$L->flags)?63:0);return$L;}}}$zb=array();function
add_driver($v,$F){global$zb;$zb[$v]=$F;}class
Min_SQL{var$_conn;function
__construct($f){$this->_conn=$f;}function
select($R,$N,$Z,$t,$fe=array(),$_=1,$G=0,$Qe=false){global$b,$y;$Wc=(count($t)selectQueryBuild($N,$Z,$t,$fe,$_,$G);if(!$I)$I="SELECT".limit(($_GET["page"]!="last"&&$_!=""&&$t&&$Wc&&$y=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$N)."\nFROM ".table($R),($Z?"\nWHERE ".implode(" AND ",$Z):"").($t&&$Wc?"\nGROUP BY ".implode(", ",$t):"").($fe?"\nORDER BY ".implode(", ",$fe):""),($_!=""?+$_:null),($G?$_*$G:0),"\n");$Lf=microtime(true);$K=$this->_conn->query($I);if($Qe)echo$b->selectQuery($I,$Lf,!$K);return$K;}function
delete($R,$Xe,$_=0){$I="FROM ".table($R);return
queries("DELETE".($_?limit1($R,$I,$Xe):" $I$Xe"));}function
update($R,$P,$Xe,$_=0,$xf="\n"){$Ug=array();foreach($P
as$z=>$X)$Ug[]="$z = $X";$I=table($R)." SET$xf".implode(",$xf",$Ug);return
queries("UPDATE".($_?limit1($R,$I,$Xe,$xf):" $I$Xe"));}function
insert($R,$P){return
queries("INSERT INTO ".table($R).($P?" (".implode(", ",array_keys($P)).")\nVALUES (".implode(", ",$P).")":" DEFAULT VALUES"));}function
insertUpdate($R,$M,$Oe){return
false;}function
begin(){return
queries("BEGIN");}function
commit(){return
queries("COMMIT");}function
rollback(){return
queries("ROLLBACK");}function
slowQuery($I,$kg){}function
convertSearch($Kc,$X,$m){return$Kc;}function
value($X,$m){return(method_exists($this->_conn,'value')?$this->_conn->value($X,$m):(is_resource($X)?stream_get_contents($X):$X));}function
quoteBinary($pf){return
q($pf);}function
warnings(){return'';}function
tableHelp($F){}}$zb["sqlite"]="SQLite 3";$zb["sqlite2"]="SQLite 2";if(isset($_GET["sqlite"])||isset($_GET["sqlite2"])){define("DRIVER",(isset($_GET["sqlite"])?"sqlite":"sqlite2"));if(class_exists(isset($_GET["sqlite"])?"SQLite3":"SQLiteDatabase")){if(isset($_GET["sqlite"])){class
Min_SQLite{var$extension="SQLite3",$server_info,$affected_rows,$errno,$error,$_link;function
__construct($o){$this->_link=new
SQLite3($o);$Xg=$this->_link->version();$this->server_info=$Xg["versionString"];}function
query($I){$J=@$this->_link->query($I);$this->error="";if(!$J){$this->errno=$this->_link->lastErrorCode();$this->error=$this->_link->lastErrorMsg();return
false;}elseif($J->numColumns())return
new
Min_Result($J);$this->affected_rows=$this->_link->changes();return
true;}function
quote($Q){return(is_utf8($Q)?"'".$this->_link->escapeString($Q)."'":"x'".reset(unpack('H*',$Q))."'");}function
store_result(){return$this->_result;}function
result($I,$m=0){$J=$this->query($I);if(!is_object($J))return
false;$L=$J->_result->fetchArray();return$L[$m];}}class
Min_Result{var$_result,$_offset=0,$num_rows;function
__construct($J){$this->_result=$J;}function
fetch_assoc(){return$this->_result->fetchArray(SQLITE3_ASSOC);}function
fetch_row(){return$this->_result->fetchArray(SQLITE3_NUM);}function
fetch_field(){$d=$this->_offset++;$V=$this->_result->columnType($d);return(object)array("name"=>$this->_result->columnName($d),"type"=>$V,"charsetnr"=>($V==SQLITE3_BLOB?63:0),);}function
__desctruct(){return$this->_result->finalize();}}}else{class
Min_SQLite{var$extension="SQLite",$server_info,$affected_rows,$error,$_link;function
__construct($o){$this->server_info=sqlite_libversion();$this->_link=new
SQLiteDatabase($o);}function
query($I,$Dg=false){$Fd=($Dg?"unbufferedQuery":"query");$J=@$this->_link->$Fd($I,SQLITE_BOTH,$l);$this->error="";if(!$J){$this->error=$l;return
false;}elseif($J===true){$this->affected_rows=$this->changes();return
true;}return
new
Min_Result($J);}function
quote($Q){return"'".sqlite_escape_string($Q)."'";}function
store_result(){return$this->_result;}function
result($I,$m=0){$J=$this->query($I);if(!is_object($J))return
false;$L=$J->_result->fetch();return$L[$m];}}class
Min_Result{var$_result,$_offset=0,$num_rows;function
__construct($J){$this->_result=$J;if(method_exists($J,'numRows'))$this->num_rows=$J->numRows();}function
fetch_assoc(){$L=$this->_result->fetch(SQLITE_ASSOC);if(!$L)return
false;$K=array();foreach($L
as$z=>$X)$K[idf_unescape($z)]=$X;return$K;}function
fetch_row(){return$this->_result->fetch(SQLITE_NUM);}function
fetch_field(){$F=$this->_result->fieldName($this->_offset++);$Be='(\[.*]|"(?:[^"]|"")*"|(.+))';if(preg_match("~^($Be\\.)?$Be\$~",$F,$C)){$R=($C[3]!=""?$C[3]:idf_unescape($C[2]));$F=($C[5]!=""?$C[5]:idf_unescape($C[4]));}return(object)array("name"=>$F,"orgname"=>$F,"orgtable"=>$R,);}}}}elseif(extension_loaded("pdo_sqlite")){class
Min_SQLite
extends
Min_PDO{var$extension="PDO_SQLite";function
__construct($o){$this->dsn(DRIVER.":$o","","");}}}if(class_exists("Min_SQLite")){class
Min_DB
extends
Min_SQLite{function
__construct(){parent::__construct(":memory:");$this->query("PRAGMA foreign_keys = 1");}function
select_db($o){if(is_readable($o)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$o)?$o:dirname($_SERVER["SCRIPT_FILENAME"])."/$o")." AS a")){parent::__construct($o);$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return
true;}return
false;}function
multi_query($I){return$this->_result=$this->query($I);}function
next_result(){return
false;}}}class
Min_Driver
extends
Min_SQL{function
insertUpdate($R,$M,$Oe){$Ug=array();foreach($M
as$P)$Ug[]="(".implode(", ",$P).")";return
queries("REPLACE INTO ".table($R)." (".implode(", ",array_keys(reset($M))).") VALUES\n".implode(",\n",$Ug));}function
tableHelp($F){if($F=="sqlite_sequence")return"fileformat2.html#seqtab";if($F=="sqlite_master")return"fileformat2.html#$F";}}function
idf_escape($Kc){return'"'.str_replace('"','""',$Kc).'"';}function
table($Kc){return
idf_escape($Kc);}function
connect(){global$b;list(,,$_e)=$b->credentials();if($_e!="")return'Database does not support password.';return
new
Min_DB;}function
get_databases(){return
array();}function
limit($I,$Z,$_,$Sd=0,$xf=" "){return" $I$Z".($_!==null?$xf."LIMIT $_".($Sd?" OFFSET $Sd":""):"");}function
limit1($R,$I,$Z,$xf="\n"){global$f;return(preg_match('~^INTO~',$I)||$f->result("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($I,$Z,1,0,$xf):" $I WHERE rowid = (SELECT rowid FROM ".table($R).$Z.$xf."LIMIT 1)");}function
db_collation($j,$Pa){global$f;return$f->result("PRAGMA encoding");}function
engines(){return
array();}function
logged_user(){return
get_current_user();}function
tables_list(){return
get_key_vals("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view') ORDER BY (name = 'sqlite_sequence'), name");}function
count_tables($i){return
array();}function
table_status($F=""){global$f;$K=array();foreach(get_rows("SELECT name AS Name, type AS Engine, 'rowid' AS Oid, '' AS Auto_increment FROM sqlite_master WHERE type IN ('table', 'view') ".($F!=""?"AND name = ".q($F):"ORDER BY name"))as$L){$L["Rows"]=$f->result("SELECT COUNT(*) FROM ".idf_escape($L["Name"]));$K[$L["Name"]]=$L;}foreach(get_rows("SELECT * FROM sqlite_sequence",null,"")as$L)$K[$L["name"]]["Auto_increment"]=$L["seq"];return($F!=""?$K[$F]:$K);}function
is_view($S){return$S["Engine"]=="view";}function
fk_support($S){global$f;return!$f->result("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function
fields($R){global$f;$K=array();$Oe="";foreach(get_rows("PRAGMA table_info(".table($R).")")as$L){$F=$L["name"];$V=strtolower($L["type"]);$ob=$L["dflt_value"];$K[$F]=array("field"=>$F,"type"=>(preg_match('~int~i',$V)?"integer":(preg_match('~char|clob|text~i',$V)?"text":(preg_match('~blob~i',$V)?"blob":(preg_match('~real|floa|doub~i',$V)?"real":"numeric")))),"full_type"=>$V,"default"=>(preg_match("~'(.*)'~",$ob,$C)?str_replace("''","'",$C[1]):($ob=="NULL"?null:$ob)),"null"=>!$L["notnull"],"privileges"=>array("select"=>1,"insert"=>1,"update"=>1),"primary"=>$L["pk"],);if($L["pk"]){if($Oe!="")$K[$Oe]["auto_increment"]=false;elseif(preg_match('~^integer$~i',$V))$K[$F]["auto_increment"]=true;$Oe=$F;}}$Hf=$f->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));preg_match_all('~(("[^"]*+")+|[a-z0-9_]+)\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$Hf,$ud,PREG_SET_ORDER);foreach($ud
as$C){$F=str_replace('""','"',preg_replace('~^"|"$~','',$C[1]));if($K[$F])$K[$F]["collation"]=trim($C[3],"'");}return$K;}function
indexes($R,$g=null){global$f;if(!is_object($g))$g=$f;$K=array();$Hf=$g->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$Hf,$C)){$K[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$C[1],$ud,PREG_SET_ORDER);foreach($ud
as$C){$K[""]["columns"][]=idf_unescape($C[2]).$C[4];$K[""]["descs"][]=(preg_match('~DESC~i',$C[5])?'1':null);}}if(!$K){foreach(fields($R)as$F=>$m){if($m["primary"])$K[""]=array("type"=>"PRIMARY","columns"=>array($F),"lengths"=>array(),"descs"=>array(null));}}$Kf=get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ".q($R),$g);foreach(get_rows("PRAGMA index_list(".table($R).")",$g)as$L){$F=$L["name"];$w=array("type"=>($L["unique"]?"UNIQUE":"INDEX"));$w["lengths"]=array();$w["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($F).")",$g)as$of){$w["columns"][]=$of["name"];$w["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($F).' ON '.idf_escape($R),'~').' \((.*)\)$~i',$Kf[$F],$hf)){preg_match_all('/("[^"]*+")+( DESC)?/',$hf[2],$ud);foreach($ud[2]as$z=>$X){if($X)$w["descs"][$z]='1';}}if(!$K[""]||$w["type"]!="UNIQUE"||$w["columns"]!=$K[""]["columns"]||$w["descs"]!=$K[""]["descs"]||!preg_match("~^sqlite_~",$F))$K[$F]=$w;}return$K;}function
foreign_keys($R){$K=array();foreach(get_rows("PRAGMA foreign_key_list(".table($R).")")as$L){$p=&$K[$L["id"]];if(!$p)$p=$L;$p["source"][]=$L["from"];$p["target"][]=$L["to"];}return$K;}function
view($F){global$f;return
array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU','',$f->result("SELECT sql FROM sqlite_master WHERE name = ".q($F))));}function
collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function
information_schema($j){return
false;}function
error(){global$f;return
h($f->error);}function
check_sqlite_name($F){global$f;$dc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($dc)\$~",$F)){$f->error=sprintf('Bitte einen der Dateitypen %s benutzen.',str_replace("|",", ",$dc));return
false;}return
true;}function
create_database($j,$Oa){global$f;if(file_exists($j)){$f->error='Datei existiert schon.';return
false;}if(!check_sqlite_name($j))return
false;try{$A=new
Min_SQLite($j);}catch(Exception$Vb){$f->error=$Vb->getMessage();return
false;}$A->query('PRAGMA encoding = "UTF-8"');$A->query('CREATE TABLE adminer (i)');$A->query('DROP TABLE adminer');return
true;}function
drop_databases($i){global$f;$f->__construct(":memory:");foreach($i
as$j){if(!@unlink($j)){$f->error='Datei existiert schon.';return
false;}}return
true;}function
rename_database($F,$Oa){global$f;if(!check_sqlite_name($F))return
false;$f->__construct(":memory:");$f->error='Datei existiert schon.';return@rename(DB,$F);}function
auto_increment(){return" PRIMARY KEY".(DRIVER=="sqlite"?" AUTOINCREMENT":"");}function
alter_table($R,$F,$n,$oc,$Ta,$Ob,$Oa,$ta,$ye){global$f;$Og=($R==""||$oc);foreach($n
as$m){if($m[0]!=""||!$m[1]||$m[2]){$Og=true;break;}}$oa=array();$oe=array();foreach($n
as$m){if($m[1]){$oa[]=($Og?$m[1]:"ADD ".implode($m[1]));if($m[0]!="")$oe[$m[0]]=$m[1][0];}}if(!$Og){foreach($oa
as$X){if(!queries("ALTER TABLE ".table($R)." $X"))return
false;}if($R!=$F&&!queries("ALTER TABLE ".table($R)." RENAME TO ".table($F)))return
false;}elseif(!recreate_table($R,$F,$oa,$oe,$oc,$ta))return
false;if($ta){queries("BEGIN");queries("UPDATE sqlite_sequence SET seq = $ta WHERE name = ".q($F));if(!$f->affected_rows)queries("INSERT INTO sqlite_sequence (name, seq) VALUES (".q($F).", $ta)");queries("COMMIT");}return
true;}function
recreate_table($R,$F,$n,$oe,$oc,$ta,$x=array()){global$f;if($R!=""){if(!$n){foreach(fields($R)as$z=>$m){if($x)$m["auto_increment"]=0;$n[]=process_field($m,$m);$oe[$z]=idf_escape($z);}}$Pe=false;foreach($n
as$m){if($m[6])$Pe=true;}$Bb=array();foreach($x
as$z=>$X){if($X[2]=="DROP"){$Bb[$X[1]]=true;unset($x[$z]);}}foreach(indexes($R)as$bd=>$w){$e=array();foreach($w["columns"]as$z=>$d){if(!$oe[$d])continue
2;$e[]=$oe[$d].($w["descs"][$z]?" DESC":"");}if(!$Bb[$bd]){if($w["type"]!="PRIMARY"||!$Pe)$x[]=array($w["type"],$bd,$e);}}foreach($x
as$z=>$X){if($X[0]=="PRIMARY"){unset($x[$z]);$oc[]=" PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($R)as$bd=>$p){foreach($p["source"]as$z=>$d){if(!$oe[$d])continue
2;$p["source"][$z]=idf_unescape($oe[$d]);}if(!isset($oc[" $bd"]))$oc[]=" ".format_foreign_key($p);}queries("BEGIN");}foreach($n
as$z=>$m)$n[$z]=" ".implode($m);$n=array_merge($n,array_filter($oc));$fg=($R==$F?"adminer_$F":$F);if(!queries("CREATE TABLE ".table($fg)." (\n".implode(",\n",$n)."\n)"))return
false;if($R!=""){if($oe&&!queries("INSERT INTO ".table($fg)." (".implode(", ",$oe).") SELECT ".implode(", ",array_map('idf_escape',array_keys($oe)))." FROM ".table($R)))return
false;$Ag=array();foreach(triggers($R)as$zg=>$lg){$yg=trigger($zg);$Ag[]="CREATE TRIGGER ".idf_escape($zg)." ".implode(" ",$lg)." ON ".table($F)."\n$yg[Statement]";}$ta=$ta?0:$f->result("SELECT seq FROM sqlite_sequence WHERE name = ".q($R));if(!queries("DROP TABLE ".table($R))||($R==$F&&!queries("ALTER TABLE ".table($fg)." RENAME TO ".table($F)))||!alter_indexes($F,$x))return
false;if($ta)queries("UPDATE sqlite_sequence SET seq = $ta WHERE name = ".q($F));foreach($Ag
as$yg){if(!queries($yg))return
false;}queries("COMMIT");}return
true;}function
index_sql($R,$V,$F,$e){return"CREATE $V ".($V!="INDEX"?"INDEX ":"").idf_escape($F!=""?$F:uniqid($R."_"))." ON ".table($R)." $e";}function
alter_indexes($R,$oa){foreach($oa
as$Oe){if($Oe[0]=="PRIMARY")return
recreate_table($R,$R,array(),array(),array(),0,$oa);}foreach(array_reverse($oa)as$X){if(!queries($X[2]=="DROP"?"DROP INDEX ".idf_escape($X[1]):index_sql($R,$X[0],$X[1],"(".implode(", ",$X[2]).")")))return
false;}return
true;}function
truncate_tables($T){return
apply_queries("DELETE FROM",$T);}function
drop_views($Zg){return
apply_queries("DROP VIEW",$Zg);}function
drop_tables($T){return
apply_queries("DROP TABLE",$T);}function
move_tables($T,$Zg,$dg){return
false;}function
trigger($F){global$f;if($F=="")return
array("Statement"=>"BEGIN\n\t;\nEND");$Kc='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$_g=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$Kc\\s*(".implode("|",$_g["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($Kc))?\\s+ON\\s*$Kc\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",$f->result("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".q($F)),$C);$Rd=$C[3];return
array("Timing"=>strtoupper($C[1]),"Event"=>strtoupper($C[2]).($Rd?" OF":""),"Of"=>idf_unescape($Rd),"Trigger"=>$F,"Statement"=>$C[4],);}function
triggers($R){$K=array();$_g=trigger_options();foreach(get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R))as$L){preg_match('~^CREATE\s+TRIGGER\s*(?:[^`"\s]+|`[^`]*`|"[^"]*")+\s*('.implode("|",$_g["Timing"]).')\s*(.*?)\s+ON\b~i',$L["sql"],$C);$K[$L["name"]]=array($C[1],$C[2]);}return$K;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
begin(){return
queries("BEGIN");}function
last_id(){global$f;return$f->result("SELECT LAST_INSERT_ROWID()");}function
explain($f,$I){return$f->query("EXPLAIN QUERY PLAN $I");}function
found_rows($S,$Z){}function
types(){return
array();}function
schemas(){return
array();}function
get_schema(){return"";}function
set_schema($rf){return
true;}function
create_sql($R,$ta,$Pf){global$f;$K=$f->result("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($R));foreach(indexes($R)as$F=>$w){if($F=='')continue;$K.=";\n\n".index_sql($R,$w['type'],$F,"(".implode(", ",array_map('idf_escape',$w['columns'])).")");}return$K;}function
truncate_sql($R){return"DELETE FROM ".table($R);}function
use_sql($jb){}function
trigger_sql($R){return
implode(get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R)));}function
show_variables(){global$f;$K=array();foreach(array("auto_vacuum","cache_size","count_changes","default_cache_size","empty_result_callbacks","encoding","foreign_keys","full_column_names","fullfsync","journal_mode","journal_size_limit","legacy_file_format","locking_mode","page_size","max_page_count","read_uncommitted","recursive_triggers","reverse_unordered_selects","secure_delete","short_column_names","synchronous","temp_store","temp_store_directory","schema_version","integrity_check","quick_check")as$z)$K[$z]=$f->result("PRAGMA $z");return$K;}function
show_status(){$K=array();foreach(get_vals("PRAGMA compile_options")as$ce){list($z,$X)=explode("=",$ce,2);$K[$z]=$X;}return$K;}function
convert_field($m){}function
unconvert_field($m,$K){return$K;}function
support($hc){return
preg_match('~^(columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|trigger|variables|view|view_trigger)$~',$hc);}function
driver_config(){$Cg=array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0);return
array('possible_drivers'=>array((isset($_GET["sqlite"])?"SQLite3":"SQLite"),"PDO_SQLite"),'jush'=>"sqlite",'types'=>$Cg,'structured_types'=>array_keys($Cg),'unsigned'=>array(),'operators'=>array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL"),'functions'=>array("hex","length","lower","round","unixepoch","upper"),'grouping'=>array("avg","count","count distinct","group_concat","max","min","sum"),'edit_functions'=>array(array(),array("integer|real|numeric"=>"+/-","text"=>"||",)),);}}class
Adminer{var$operators;function
name(){return"Adminer";}function
credentials(){return
array(SERVER,$_GET["username"],get_password());}function
connectSsl(){}function
permanentLogin($h=false){return
password_file($h);}function
bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
serverName($O){return
h($O);}function
database(){return
DB;}function
databases($mc=true){return
get_databases($mc);}function
schemas(){return
schemas();}function
queryTimeout(){return
2;}function
headers(){}function
csp(){return
csp();}function
head(){return
true;}function
css(){$K=array();$o="adminer.css";if(file_exists($o))$K[]="$o?v=".crc32(file_get_contents($o));return$K;}function
loginForm(){global$zb;echo"\n",$this->loginFormField('driver','| '.'Datenbank System'.' | ',html_select("auth[driver]",$zb,DRIVER,"loginDriver(this);")."\n"),$this->loginFormField('server',' |
|---|
| '.'Server'.' | ',''."\n"),$this->loginFormField('username',' |
|---|
| '.'Benutzer'.' | ',''.script("focus(qs('#username')); qs('#username').form['auth[driver]'].onchange();")),$this->loginFormField('password',' |
|---|
| '.'Passwort'.' | ',''."\n"),$this->loginFormField('db',' |
|---|
| '.'Datenbank'.' | ',''."\n")," |
|---|
\n","\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Passwort speichern')."\n";}function
loginFormField($F,$Ec,$Y){return$Ec.$Y;}function
login($rd,$_e){if($_e=="")return
sprintf('Adminer does not support accessing a database without a password, more information.',target_blank());return
true;}function
tableName($Vf){return
h($Vf["Name"]);}function
fieldName($m,$fe=0){return''.h($m["field"]).'';}function
selectLinks($Vf,$P=""){global$y,$k;echo'
';$qd=array("select"=>'Daten auswählen');if(support("table")||support("indexes"))$qd["table"]='Struktur anzeigen';if(support("table")){if(is_view($Vf))$qd["view"]='View ändern';else$qd["create"]='Tabelle ändern';}if($P!==null)$qd["edit"]='Neuer Datensatz';$F=$Vf["Name"];foreach($qd
as$z=>$X)echo" $X";echo
doc_link(array($y=>$k->tableHelp($F)),"?"),"\n";}function
foreignKeys($R){return
foreign_keys($R);}function
backwardKeys($R,$Uf){return
array();}function
backwardKeysPrint($va,$L){}function
selectQuery($I,$Lf,$fc=false){global$y,$k;$K="
\n";if(!$fc&&($ch=$k->warnings())){$v="warnings";$K=", ".'Warnings'."".script("qsl('a').onclick = partial(toggle, '$v');","")."$K\n$ch
\n";}return"".h(str_replace("\n"," ",$I))." (".format_time($Lf).")".(support("sql")?" ".'Bearbeiten'."":"").$K;}function
sqlCommandQuery($I){return
shorten_utf8(trim($I),1000);}function
rowDescription($R){return"";}function
rowDescriptions($M,$pc){return$M;}function
selectLink($X,$m){}function
selectVal($X,$A,$m,$ne){$K=($X===null?"NULL":(preg_match("~char|binary|boolean~",$m["type"])&&!preg_match("~var~",$m["type"])?"$X":$X));if(preg_match('~blob|bytea|raw|file~',$m["type"])&&!is_utf8($X))$K="".lang(array('%d Byte','%d Bytes'),strlen($ne))."";if(preg_match('~json~',$m["type"]))$K="$K";return($A?"$K":$K);}function
editVal($X,$m){return$X;}function
tableStructurePrint($n){echo"
\n";}function
tableIndexesPrint($x){echo"\n";foreach($x
as$F=>$w){ksort($w["columns"]);$Qe=array();foreach($w["columns"]as$z=>$X)$Qe[]="".h($X)."".($w["lengths"][$z]?"(".$w["lengths"][$z].")":"").($w["descs"][$z]?" DESC":"");echo"| $w[type] | ".implode(", ",$Qe)."\n";}echo" |
|---|
\n";}function
selectColumnsPrint($N,$e){global$uc,$yc;print_fieldset("select",'Daten zeigen von',$N);$u=0;$N[""]=array();foreach($N
as$z=>$X){$X=$_GET["columns"][$z];$d=select_input(" name='columns[$u][col]'",$e,$X["col"],($z!==""?"selectFieldChange":"selectAddRow"));echo"".($uc||$yc?"".on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, '(') + ')'",1).script("qsl('select').onchange = function () { helpClose();".($z!==""?"":" qsl('select, input', this.parentNode).onchange();")." };","")."($d)":$d)."
\n";$u++;}echo"\n";}function
selectSearchPrint($Z,$e,$x){print_fieldset("search",'Suchen',$Z);foreach($x
as$u=>$w){if($w["type"]=="FULLTEXT"){echo"(".implode(", ",array_map('h',$w["columns"])).") AGAINST"," ",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$u]",1,isset($_GET["boolean"][$u]),"BOOL"),"
\n";}}$Da="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$u=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators))){echo"".select_input(" name='where[$u][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".'beliebig'.")"),html_select("where[$u][op]",$this->operators,$X["op"],$Da),"",script("mixin(qsl('input'), {oninput: function () { $Da }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"
\n";}}echo"\n";}function
selectOrderPrint($fe,$e,$x){print_fieldset("sort",'Ordnen',$fe);$u=0;foreach((array)$_GET["order"]as$z=>$X){if($X!=""){echo"".select_input(" name='order[$u]'",$e,$X,"selectFieldChange"),checkbox("desc[$u]",1,isset($_GET["desc"][$z]),'absteigend')."
\n";$u++;}}echo"".select_input(" name='order[$u]'",$e,"","selectAddRow"),checkbox("desc[$u]",1,false,'absteigend')."
\n","\n";}function
selectLimitPrint($_){echo"\n";}function
selectLengthPrint($ig){if($ig!==null){echo"\n";}}function
selectActionPrint($x){echo"\n";}function
selectCommandPrint(){return!information_schema(DB);}function
selectImportPrint(){return!information_schema(DB);}function
selectEmailPrint($Lb,$e){}function
selectColumnsProcess($e,$x){global$uc,$yc;$N=array();$t=array();foreach((array)$_GET["columns"]as$z=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$uc)||in_array($X["fun"],$yc)))){$N[$z]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$yc))$t[]=$N[$z];}}return
array($N,$t);}function
selectSearchProcess($n,$x){global$f,$k;$K=array();foreach($x
as$u=>$w){if($w["type"]=="FULLTEXT"&&$_GET["fulltext"][$u]!="")$K[]="MATCH (".implode(", ",array_map('idf_escape',$w["columns"])).") AGAINST (".q($_GET["fulltext"][$u]).(isset($_GET["boolean"][$u])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$z=>$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$Me="";$Va=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Nc=process_length($X["val"]);$Va.=" ".($Nc!=""?$Nc:"(NULL)");}elseif($X["op"]=="SQL")$Va=" $X[val]";elseif($X["op"]=="LIKE %%")$Va=" LIKE ".$this->processInput($n[$X["col"]],"%$X[val]%");elseif($X["op"]=="ILIKE %%")$Va=" ILIKE ".$this->processInput($n[$X["col"]],"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$Me="$X[op](".q($X["val"]).", ";$Va=")";}elseif(!preg_match('~NULL$~',$X["op"]))$Va.=" ".$this->processInput($n[$X["col"]],$X["val"]);if($X["col"]!="")$K[]=$Me.$k->convertSearch(idf_escape($X["col"]),$X,$n[$X["col"]]).$Va;else{$Qa=array();foreach($n
as$F=>$m){if((preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$m["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$m["type"]))&&(!preg_match('~date|timestamp~',$m["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"])))$Qa[]=$Me.$k->convertSearch(idf_escape($F),$X,$m).$Va;}$K[]=($Qa?"(".implode(" OR ",$Qa).")":"1 = 0");}}}return$K;}function
selectOrderProcess($n,$x){$K=array();foreach((array)$_GET["order"]as$z=>$X){if($X!="")$K[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$z])?" DESC":"");}return$K;}function
selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function
selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function
selectEmailProcess($Z,$pc){return
false;}function
selectQueryBuild($N,$Z,$t,$fe,$_,$G){return"";}function
messageQuery($I,$jg,$fc=false){global$y,$k;restart_session();$Fc=&get_session("queries");if(!$Fc[$_GET["db"]])$Fc[$_GET["db"]]=array();if(strlen($I)>1e6)$I=preg_replace('~[\x80-\xFF]+$~','',substr($I,0,1e6))."\n…";$Fc[$_GET["db"]][]=array($I,time(),$jg);$Jf="sql-".count($Fc[$_GET["db"]]);$K="".'SQL-Kommando'."\n";if(!$fc&&($ch=$k->warnings())){$v="warnings-".count($Fc[$_GET["db"]]);$K="".'Warnings'.", $K\n$ch
\n";}return" ".@date("H:i:s").""." $K".shorten_utf8($I,1000)."
".($jg?"
($jg)":'').(support("sql")?'
'.'Bearbeiten'.'':'').'
';}function
editRowPrint($R,$n,$L,$Kg){}function
editFunctions($m){global$Gb;$K=($m["null"]?"NULL/":"");$Kg=isset($_GET["select"])||where($_GET);foreach($Gb
as$z=>$uc){if(!$z||(!isset($_GET["call"])&&$Kg)){foreach($uc
as$Be=>$X){if(!$Be||preg_match("~$Be~",$m["type"]))$K.="/$X";}}if($z&&!preg_match('~set|blob|bytea|raw|file|bool~',$m["type"]))$K.="/SQL";}if($m["auto_increment"]&&!$Kg)$K='Auto-Inkrement';return
explode("/",$K);}function
editInput($R,$m,$ra,$Y){if($m["type"]=="enum")return(isset($_GET["select"])?" ":"").($m["null"]?" ":"").enum_input("radio",$ra,$m,$Y,0);return"";}function
editHint($R,$m,$Y){return"";}function
processInput($m,$Y,$s=""){if($s=="SQL")return$Y;$F=$m["field"];$K=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$s))$K="$s()";elseif(preg_match('~^current_(date|timestamp)$~',$s))$K=$s;elseif(preg_match('~^([+-]|\|\|)$~',$s))$K=idf_escape($F)." $s $K";elseif(preg_match('~^[+-] interval$~',$s))$K=idf_escape($F)." $s ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$K);elseif(preg_match('~^(addtime|subtime|concat)$~',$s))$K="$s(".idf_escape($F).", $K)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$s))$K="$s($K)";return
unconvert_field($m,$K);}function
dumpOutput(){$K=array('text'=>'anzeigen','file'=>'Datei');if(function_exists('gzencode'))$K['gz']='gzip';return$K;}function
dumpFormat(){return
array('sql'=>'SQL','csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
dumpDatabase($j){}function
dumpTable($R,$Pf,$Yc=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($Pf)dump_csv(array_keys(fields($R)));}else{if($Yc==2){$n=array();foreach(fields($R)as$F=>$m)$n[]=idf_escape($F)." $m[full_type]";$h="CREATE TABLE ".table($R)." (".implode(", ",$n).")";}else$h=create_sql($R,$_POST["auto_increment"],$Pf);set_utf8mb4($h);if($Pf&&$h){if($Pf=="DROP+CREATE"||$Yc==1)echo"DROP ".($Yc==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($Yc==1)$h=remove_definer($h);echo"$h;\n\n";}}}function
dumpData($R,$Pf,$I){global$f,$y;$wd=($y=="sqlite"?0:1048576);if($Pf){if($_POST["format"]=="sql"){if($Pf=="TRUNCATE+INSERT")echo
truncate_sql($R).";\n";$n=fields($R);}$J=$f->query($I,1);if($J){$Sc="";$Ca="";$cd=array();$Rf="";$ic=($R!=''?'fetch_assoc':'fetch_row');while($L=$J->$ic()){if(!$cd){$Ug=array();foreach($L
as$X){$m=$J->fetch_field();$cd[]=$m->name;$z=idf_escape($m->name);$Ug[]="$z = VALUES($z)";}$Rf=($Pf=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Ug):"").";\n";}if($_POST["format"]!="sql"){if($Pf=="table"){dump_csv($cd);$Pf="INSERT";}dump_csv($L);}else{if(!$Sc)$Sc="INSERT INTO ".table($R)." (".implode(", ",array_map('idf_escape',$cd)).") VALUES";foreach($L
as$z=>$X){$m=$n[$z];$L[$z]=($X!==null?unconvert_field($m,preg_match(number_type(),$m["type"])&&!preg_match('~\[~',$m["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$pf=($wd?"\n":" ")."(".implode(",\t",$L).")";if(!$Ca)$Ca=$Sc.$pf;elseif(strlen($Ca)+4+strlen($pf)+strlen($Rf)<$wd)$Ca.=",$pf";else{echo$Ca.$Rf;$Ca=$Sc.$pf;}}}if($Ca)echo$Ca.$Rf;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$f->error)."\n";}}function
dumpFilename($Jc){return
friendly_url($Jc!=""?$Jc:(SERVER!=""?SERVER:"localhost"));}function
dumpHeaders($Jc,$Id=false){$qe=$_POST["output"];$bc=(preg_match('~sql~',$_POST["format"])?"sql":($Id?"tar":"csv"));header("Content-Type: ".($qe=="gz"?"application/x-gzip":($bc=="tar"?"application/x-tar":($bc=="sql"||$qe!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($qe=="gz")ob_start('ob_gzencode',1e6);return$bc;}function
importServerPath(){return"adminer.sql";}function
homepage(){echo''.($_GET["ns"]==""&&support("database")?''.'Datenbank ändern'."\n":""),(support("scheme")?"".($_GET["ns"]!=""?'Schema ändern':'Schema erstellen')."\n":""),($_GET["ns"]!==""?''.'Datenbankschema'."\n":""),(support("privileges")?"".'Rechte'."\n":"");return
true;}function
navigation($Hd){global$da,$y,$zb,$f;echo'
';if($Hd=="auth"){$qe="";foreach((array)$_SESSION["pwds"]as$Wg=>$zf){foreach($zf
as$O=>$Sg){foreach($Sg
as$Rg=>$_e){if($_e!==null){$mb=$_SESSION["db"][$Wg][$O][$Rg];foreach(($mb?array_keys($mb):array(""))as$j)$qe.="($zb[$Wg]) ".h($Rg.($O!=""?"@".$this->serverName($O):"").($j!=""?" - $j":""))."\n";}}}}if($qe)echo"\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$Hd&&DB!=""){$f->select_db(DB);$T=table_status('',true);}echo
script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=4.8.1");if(support("sql")){echo'
';}$this->databasesPrint($Hd);if(DB==""||!$Hd){echo"".(support("sql")?"".'SQL-Kommando'."\n".'Importieren'."\n":"")."";if(support("dump"))echo"".'Exportieren'."\n";}if($_GET["ns"]!==""&&!$Hd&&DB!=""){echo'".'Tabelle erstellen'."\n";if(!$T)echo"
".'Keine Tabellen.'."\n";else$this->tablesPrint($T);}}}function
databasesPrint($Hd){global$b,$f;$i=$this->databases();if(DB&&$i&&!in_array(DB,$i))array_unshift($i,DB);echo'
\n";}function
tablesPrint($T){echo"".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T
as$R=>$Mf){$F=$this->tableName($Mf);if($F!=""){echo'- ".'zeigen'." ",(support("table")||support("indexes")?'$F":"$F")."\n";}}echo"
\n";}}$b=(function_exists('adminer_object')?adminer_object():new
Adminer);$Wa=driver_config();$Le=$Wa['possible_drivers'];$y=$Wa['jush'];$Cg=$Wa['types'];$Of=$Wa['structured_types'];$Jg=$Wa['unsigned'];$ae=$Wa['operators'];$uc=$Wa['functions'];$yc=$Wa['grouping'];$Gb=$Wa['edit_functions'];if($b->operators===null)$b->operators=$ae;define("SERVER",$_GET[DRIVER]);define("DB",$_GET["db"]);define("ME",preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));$da="4.8.1";function
page_header($mg,$l="",$Ba=array(),$ng=""){global$ba,$da,$b,$zb,$y;page_headers();if(is_ajax()&&$l){page_messages($l);exit;}$og=$mg.($ng!=""?": $ng":"");$pg=strip_tags($og.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'
',$pg,'
',script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=4.8.1");if($b->head()){echo'
';foreach($b->css()as$eb){echo'
';}}echo'
';$o=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($o)&&filemtime($o)+86400>time()){$Xg=unserialize(file_get_contents($o));$Ve="-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwqWOVuF5uw7/+Z70djoK
RlHIZFZPO0uYRezq90+7Amk+FDNd7KkL5eDve+vHRJBLAszF/7XKXe11xwliIsFs
DFWQlsABVZB3oisKCBEuI71J4kPH8dKGEWR9jDHFw3cWmoH3PmqImX6FISWbG3B8
h7FIx3jEaw5ckVPVTeo5JRm/1DZzJxjyDenXvBQ/6o9DgZKeNDgxwKzH+sw9/YCO
jHnq1cFpOIISzARlrHMa/43YfeNRAm/tsBXjSxembBPo7aQZLAWHmaj5+K19H10B
nCpz9Y++cipkVEiKRGih4ZEvjoFysEOdRLj6WiD/uUNky4xGeA6LaJqh5XpkFkcQ
fQIDAQAB
-----END PUBLIC KEY-----
";if(openssl_verify($Xg["version"],base64_decode($Xg["signature"]),$Ve)==1)$_COOKIE["adminer_version"]=$Xg["version"];}echo'
',script("mixin(qs('#help'), {onmouseover: function () { helpOpen = 1; }, onmouseout: helpMouseout});"),'
';if($Ba!==null){$A=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'
'.$zb[DRIVER].' » ';$A=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=$b->serverName(SERVER);$O=($O!=""?$O:'Server');if($Ba===false)echo"$O\n";else{echo"$O » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ba)))echo''.h(DB).' » ';if(is_array($Ba)){if($_GET["ns"]!="")echo''.h($_GET["ns"]).' » ';foreach($Ba
as$z=>$X){$sb=(is_array($X)?$X[1]:h($X));if($sb!="")echo"$sb » ";}}echo"$mg\n";}}echo"
$og
\n","
\n";restart_session();page_messages($l);$i=&get_session("dbs");if(DB!=""&&$i&&!in_array(DB,$i,true))$i=null;stop_session();define("PAGE_HEADER",1);}function
page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-Frame-Options: deny");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");foreach($b->csp()as$db){$Dc=array();foreach($db
as$z=>$X)$Dc[]="$z $X";header("Content-Security-Policy: ".implode("; ",$Dc));}$b->headers();}function
csp(){return
array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self'","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function
get_nonce(){static$Nd;if(!$Nd)$Nd=base64_encode(rand_string());return$Nd;}function
page_messages($l){$Lg=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Ed=$_SESSION["messages"][$Lg];if($Ed){echo"
".implode("
\n
",$Ed)."
".script("messagesPrint();");unset($_SESSION["messages"][$Lg]);}if($l)echo"
$l
\n";}function
page_footer($Hd=""){global$b,$U;echo'
';if($Hd!="auth"){echo'
';}echo'
',script("setupSubmitHighlight(document);");}function
int32($E){while($E>=2147483648)$E-=4294967296;while($E<=-2147483649)$E+=4294967296;return(int)$E;}function
long2str($W,$bh){$pf='';foreach($W
as$X)$pf.=pack('V',$X);if($bh)return
substr($pf,0,end($W));return$pf;}function
str2long($pf,$bh){$W=array_values(unpack('V*',str_pad($pf,4*ceil(strlen($pf)/4),"\0")));if($bh)$W[]=strlen($pf);return$W;}function
xxtea_mx($ih,$hh,$Sf,$ad){return
int32((($ih>>5&0x7FFFFFF)^$hh<<2)+(($hh>>3&0x1FFFFFFF)^$ih<<4))^int32(($Sf^$hh)+($ad^$ih));}function
encrypt_string($Nf,$z){if($Nf=="")return"";$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Nf,true);$E=count($W)-1;$ih=$W[$E];$hh=$W[0];$H=floor(6+52/($E+1));$Sf=0;while($H-->0){$Sf=int32($Sf+0x9E3779B9);$Fb=$Sf>>2&3;for($re=0;$re<$E;$re++){$hh=$W[$re+1];$Jd=xxtea_mx($ih,$hh,$Sf,$z[$re&3^$Fb]);$ih=int32($W[$re]+$Jd);$W[$re]=$ih;}$hh=$W[0];$Jd=xxtea_mx($ih,$hh,$Sf,$z[$re&3^$Fb]);$ih=int32($W[$E]+$Jd);$W[$E]=$ih;}return
long2str($W,false);}function
decrypt_string($Nf,$z){if($Nf=="")return"";if(!$z)return
false;$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Nf,false);$E=count($W)-1;$ih=$W[$E];$hh=$W[0];$H=floor(6+52/($E+1));$Sf=int32($H*0x9E3779B9);while($Sf){$Fb=$Sf>>2&3;for($re=$E;$re>0;$re--){$ih=$W[$re-1];$Jd=xxtea_mx($ih,$hh,$Sf,$z[$re&3^$Fb]);$hh=int32($W[$re]-$Jd);$W[$re]=$hh;}$ih=$W[$E];$Jd=xxtea_mx($ih,$hh,$Sf,$z[$re&3^$Fb]);$hh=int32($W[0]-$Jd);$W[0]=$hh;$Sf=int32($Sf-0x9E3779B9);}return
long2str($W,true);}$f='';$Cc=$_SESSION["token"];if(!$Cc)$_SESSION["token"]=rand(1,1e6);$U=get_token();$De=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($z)=explode(":",$X);$De[$z]=$X;}}function
add_invalid_login(){global$b;$r=file_open_lock(get_temp_dir()."/adminer.invalid");if(!$r)return;$Uc=unserialize(stream_get_contents($r));$jg=time();if($Uc){foreach($Uc
as$Vc=>$X){if($X[0]<$jg)unset($Uc[$Vc]);}}$Tc=&$Uc[$b->bruteForceKey()];if(!$Tc)$Tc=array($jg+30*60,0);$Tc[1]++;file_write_unlock($r,serialize($Uc));}function
check_invalid_login(){global$b;$Uc=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$Tc=($Uc?$Uc[$b->bruteForceKey()]:array());$Md=($Tc[1]>29?$Tc[0]-time():0);if($Md>0)auth_error(lang(array('Zu viele erfolglose Login-Versuche. Bitte probieren Sie es in %d Minute noch einmal.','Zu viele erfolglose Login-Versuche. Bitte probieren Sie es in %d Minuten noch einmal.'),ceil($Md/60)));}$sa=$_POST["auth"];if($sa){session_regenerate_id();$Wg=$sa["driver"];$O=$sa["server"];$Rg=$sa["username"];$_e=(string)$sa["password"];$j=$sa["db"];set_password($Wg,$O,$Rg,$_e);$_SESSION["db"][$Wg][$O][$Rg][$j]=true;if($sa["permanent"]){$z=base64_encode($Wg)."-".base64_encode($O)."-".base64_encode($Rg)."-".base64_encode($j);$Re=$b->permanentLogin(true);$De[$z]="$z:".base64_encode($Re?encrypt_string($_e,$Re):"");cookie("adminer_permanent",implode(" ",$De));}if(count($_POST)==1||DRIVER!=$Wg||SERVER!=$O||$_GET["username"]!==$Rg||DB!=$j)redirect(auth_url($Wg,$O,$Rg,$j));}elseif($_POST["logout"]&&(!$Cc||verify_token())){foreach(array("pwds","db","dbs","queries")as$z)set_session($z,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Abmeldung erfolgreich.'.' '.'Danke, dass Sie Adminer genutzt haben. Spenden willkommen!');}elseif($De&&!$_SESSION["pwds"]){session_regenerate_id();$Re=$b->permanentLogin();foreach($De
as$z=>$X){list(,$Ia)=explode(":",$X);list($Wg,$O,$Rg,$j)=array_map('base64_decode',explode("-",$z));set_password($Wg,$O,$Rg,decrypt_string(base64_decode($Ia),$Re));$_SESSION["db"][$Wg][$O][$Rg][$j]=true;}}function
unset_permanent(){global$De;foreach($De
as$z=>$X){list($Wg,$O,$Rg,$j)=array_map('base64_decode',explode("-",$z));if($Wg==DRIVER&&$O==SERVER&&$Rg==$_GET["username"]&&$j==DB)unset($De[$z]);}cookie("adminer_permanent",implode(" ",$De));}function
auth_error($l){global$b,$Cc;$_f=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$_f]||$_GET[$_f])&&!$Cc)$l='Sitzungsdauer abgelaufen, bitte erneut anmelden.';else{restart_session();add_invalid_login();$_e=get_password();if($_e!==null){if($_e===false)$l.=($l?'
':'').sprintf('Das Master-Passwort ist abgelaufen. Implementieren Sie die %s Methode, um es permanent zu machen.',target_blank(),'permanentLogin()');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$_f]&&$_GET[$_f]&&ini_bool("session.use_only_cookies"))$l='Unterstüzung für PHP-Sessions muss aktiviert sein.';$ue=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$ue["lifetime"]);page_header('Login',$l,null);echo"\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('Keine Erweiterungen installiert',sprintf('Keine der unterstützten PHP-Erweiterungen (%s) ist vorhanden.',implode(", ",$Le)),false);page_footer("auth");exit;}stop_session(true);if(isset($_GET["username"])&&is_string(get_password())){list($Hc,$He)=explode(":",SERVER,2);if(preg_match('~^\s*([-+]?\d+)~',$He,$C)&&($C[1]<1024||$C[1]>65535))auth_error('Connecting to privileged ports is not allowed.');check_invalid_login();$f=connect();$k=new
Min_Driver($f);}$rd=null;if(!is_object($f)||($rd=$b->login($_GET["username"],get_password()))!==true){$l=(is_string($f)?h($f):(is_string($rd)?$rd:'Ungültige Anmelde-Informationen.'));auth_error($l.(preg_match('~^ | $~',get_password())?'
'.'There is a space in the input password which might be the cause.':''));}if($_POST["logout"]&&$Cc&&!verify_token()){page_header('Abmelden','CSRF Token ungültig. Bitte die Formulardaten erneut abschicken.');page_footer("db");exit;}if($sa&&$_POST["token"])$_POST["token"]=$U;$l='';if($_POST){if(!verify_token()){$Pc="max_input_vars";$_d=ini_get($Pc);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$z){$X=ini_get($z);if($X&&(!$_d||$X<$_d)){$Pc=$z;$_d=$X;}}}$l=(!$_POST["token"]&&$_d?sprintf('Die maximal erlaubte Anzahl der Felder ist überschritten. Bitte %s erhöhen.',"'$Pc'"):'CSRF Token ungültig. Bitte die Formulardaten erneut abschicken.'.' '.'Wenn Sie diese Anfrage nicht von Adminer gesendet haben, schließen Sie diese Seite.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$l=sprintf('POST-Daten sind zu groß. Reduzieren Sie die Größe oder vergrößern Sie den Wert %s in der Konfiguration.',"'post_max_size'");if(isset($_GET["sql"]))$l.=' '.'Sie können eine große SQL-Datei per FTP hochladen und dann vom Server importieren.';}function
select($J,$g=null,$ie=array(),$_=0){global$y;$qd=array();$x=array();$e=array();$_a=array();$Cg=array();$K=array();odd('');for($u=0;(!$_||$u<$_)&&($L=$J->fetch_row());$u++){if(!$u){echo"":"".'Keine Datensätze.')."\n";return$K;}function
referencable_primary($vf){$K=array();foreach(table_status('',true)as$Wf=>$R){if($Wf!=$vf&&fk_support($R)){foreach(fields($Wf)as$m){if($m["primary"]){if($K[$Wf]){unset($K[$Wf]);break;}$K[$Wf]=$m;}}}}return$K;}function
adminer_settings(){parse_str($_COOKIE["adminer_settings"],$Bf);return$Bf;}function
adminer_setting($z){$Bf=adminer_settings();return$Bf[$z];}function
set_adminer_settings($Bf){return
cookie("adminer_settings",http_build_query($Bf+adminer_settings()));}function
textarea($F,$Y,$M=10,$Qa=80){global$y;echo"";}function
edit_type($z,$m,$Pa,$q=array(),$ec=array()){global$Of,$Cg,$Jg,$Wd;$V=$m["type"];echo'
| | ',"',($Jg?"':''),(isset($m['on_update'])?"':''),($q?" ":" ");}function
process_length($nd){global$Qb;return(preg_match("~^\\s*\\(?\\s*$Qb(?:\\s*,\\s*$Qb)*+\\s*\\)?\\s*\$~",$nd)&&preg_match_all("~$Qb~",$nd,$ud)?"(".implode(",",$ud[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$nd)));}function
process_type($m,$Na="COLLATE"){global$Jg;return" $m[type]".process_length($m["length"]).(preg_match(number_type(),$m["type"])&&in_array($m["unsigned"],$Jg)?" $m[unsigned]":"").(preg_match('~char|text|enum|set~',$m["type"])&&$m["collation"]?" $Na ".q($m["collation"]):"");}function
process_field($m,$Bg){return
array(idf_escape(trim($m["field"])),process_type($Bg),($m["null"]?" NULL":" NOT NULL"),default_value($m),(preg_match('~timestamp|datetime~',$m["type"])&&$m["on_update"]?" ON UPDATE $m[on_update]":""),(support("comment")&&$m["comment"]!=""?" COMMENT ".q($m["comment"]):""),($m["auto_increment"]?auto_increment():null),);}function
default_value($m){$ob=$m["default"];return($ob===null?"":" DEFAULT ".(preg_match('~char|binary|text|enum|set~',$m["type"])||preg_match('~^(?![a-z])~i',$ob)?q($ob):$ob));}function
type_class($V){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$z=>$X){if(preg_match("~$z|$X~",$V))return" class='$z'";}}function
edit_fields($n,$Pa,$V="TABLE",$q=array()){global$Qc;$n=array_values($n);$pb=(($_POST?$_POST["defaults"]:adminer_setting("defaults"))?"":" class='hidden'");$Ua=(($_POST?$_POST["comments"]:adminer_setting("comments"))?"":" class='hidden'");echo'
';if($V=="PROCEDURE"){echo'| ';}echo' | ',($V=="TABLE"?'Spaltenname':'Name des Parameters'),' | Typ',script("qs('#enum-edit').onblur = editingLengthBlur;"),' | Länge
| ','Optionen';if($V=="TABLE"){echo' | NULL
| AI',doc_link(array('sqlite'=>"autoinc.html",)),' | Vorgabewert festlegen
',(support("comment")?" | ',"".script("row_count = ".count($n).";"),' |
|
',script("mixin(qsl('tbody'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput});");foreach($n
as$u=>$m){$u++;$je=$m[($_POST?"orig":"field")];$wb=(isset($_POST["add"][$u-1])||(isset($m["field"])&&!$_POST["drop_col"][$u]))&&(support("drop_col")||$je=="");echo'
',($V=="PROCEDURE"?"| ".html_select("fields[$u][inout]",explode("|",$Qc),$m["inout"]):""),' | ';if($wb){echo'';}echo'';edit_type("fields[$u]",$m,$Pa,$q);if($V=="TABLE"){echo' | ',checkbox("fields[$u][null]",1,$m["null"],"","","block","label-null"),' | | ',checkbox("fields[$u][has_default]",1,$m["has_default"],"","","","label-default"),'',(support("comment")?" | ":"");}echo" | ",(support("move_col")?" "." "." ":""),($je==""||support("drop_col")?"":"");}}function
process_fields(&$n){$Sd=0;if($_POST["up"]){$hd=0;foreach($n
as$z=>$m){if(key($_POST["up"])==$z){unset($n[$z]);array_splice($n,$hd,0,array($m));break;}if(isset($m["field"]))$hd=$Sd;$Sd++;}}elseif($_POST["down"]){$rc=false;foreach($n
as$z=>$m){if(isset($m["field"])&&$rc){unset($n[key($_POST["down"])]);array_splice($n,$Sd,0,array($rc));break;}if(key($_POST["down"])==$z)$rc=$m;$Sd++;}}elseif($_POST["add"]){$n=array_values($n);array_splice($n,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($vc,$Se,$e,$Vd){if(!$Se)return
true;if($Se==array("ALL PRIVILEGES","GRANT OPTION"))return($vc=="GRANT"?queries("$vc ALL PRIVILEGES$Vd WITH GRANT OPTION"):queries("$vc ALL PRIVILEGES$Vd")&&queries("$vc GRANT OPTION$Vd"));return
queries("$vc ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$Se).$e).$Vd);}function
drop_create($_b,$h,$Ab,$gg,$Cb,$B,$Dd,$Bd,$Cd,$Ud,$Ld){if($_POST["drop"])query_redirect($_b,$B,$Dd);elseif($Ud=="")query_redirect($h,$B,$Cd);elseif($Ud!=$Ld){$cb=queries($h);queries_redirect($B,$Bd,$cb&&queries($_b));if($cb)queries($Ab);}else
queries_redirect($B,$Bd,queries($gg)&&queries($Cb)&&queries($_b)&&queries($h));}function
create_trigger($Vd,$L){global$y;$lg=" $L[Timing] $L[Event]".(preg_match('~ OF~',$L["Event"])?" $L[Of]":"");return"CREATE TRIGGER ".idf_escape($L["Trigger"]).($y=="mssql"?$Vd.$lg:$lg.$Vd).rtrim(" $L[Type]\n$L[Statement]",";").";";}function
create_routine($nf,$L){global$Qc,$y;$P=array();$n=(array)$L["fields"];ksort($n);foreach($n
as$m){if($m["field"]!="")$P[]=(preg_match("~^($Qc)\$~",$m["inout"])?"$m[inout] ":"").idf_escape($m["field"]).process_type($m,"CHARACTER SET");}$qb=rtrim("\n$L[definition]",";");return"CREATE $nf ".idf_escape(trim($L["name"]))." (".implode(", ",$P).")".(isset($_GET["function"])?" RETURNS".process_type($L["returns"],"CHARACTER SET"):"").($L["language"]?" LANGUAGE $L[language]":"").($y=="pgsql"?" AS ".q($qb):"$qb;");}function
remove_definer($I){return
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$I);}function
format_foreign_key($p){global$Wd;$j=$p["db"];$Od=$p["ns"];return" FOREIGN KEY (".implode(", ",array_map('idf_escape',$p["source"])).") REFERENCES ".($j!=""&&$j!=$_GET["db"]?idf_escape($j).".":"").($Od!=""&&$Od!=$_GET["ns"]?idf_escape($Od).".":"").table($p["table"])." (".implode(", ",array_map('idf_escape',$p["target"])).")".(preg_match("~^($Wd)\$~",$p["on_delete"])?" ON DELETE $p[on_delete]":"").(preg_match("~^($Wd)\$~",$p["on_update"])?" ON UPDATE $p[on_update]":"");}function
tar_file($o,$qg){$K=pack("a100a8a8a8a12a12",$o,644,0,0,decoct($qg->size),decoct(time()));$Ha=8*32;for($u=0;$usend();echo
str_repeat("\0",511-($qg->size+511)%512);}function
ini_bytes($Pc){$X=ini_get($Pc);switch(strtolower(substr($X,-1))){case'g':$X*=1024;case'm':$X*=1024;case'k':$X*=1024;}return$X;}function
doc_link($Ae,$hg="?"){global$y,$f;$yf=$f->server_info;$Xg=preg_replace('~^(\d\.?\d).*~s','\1',$yf);$Ng=array('sql'=>"https://dev.mysql.com/doc/refman/$Xg/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/$Xg/",'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',$yf)."&id=",);if(preg_match('~MariaDB~',$yf)){$Ng['sql']="https://mariadb.com/kb/en/library/";$Ae['sql']=(isset($Ae['mariadb'])?$Ae['mariadb']:str_replace(".html","/",$Ae['sql']));}return($Ae[$y]?"$hg":"");}function
ob_gzencode($Q){return
gzencode($Q);}function
db_size($j){global$f;if(!$f->select_db($j))return"?";$K=0;foreach(table_status()as$S)$K+=$S["Data_length"]+$S["Index_length"];return
format_number($K);}function
set_utf8mb4($h){global$f;static$P=false;if(!$P&&preg_match('~\butf8mb4~i',$h)){$P=true;echo"SET NAMES ".charset($f).";\n\n";}}function
connect_error(){global$b,$f,$U,$l,$zb;if(DB!=""){header("HTTP/1.1 404 Not Found");page_header('Datenbank'.": ".h(DB),'Datenbank ungültig.',true);}else{if($_POST["db"]&&!$l)queries_redirect(substr(ME,0,-1),'Datenbanken wurden entfernt.',drop_databases($_POST["db"]));page_header('Datenbank auswählen',$l,false);echo" \n";foreach(array('database'=>'Datenbank erstellen','privileges'=>'Rechte','processlist'=>'Prozessliste','variables'=>'Variablen','status'=>'Status',)as$z=>$X){if(support($z))echo"$X\n";}echo" ".sprintf('Version %s: %s mit PHP-Erweiterung %s',$zb[DRIVER],"".h($f->server_info)."","$f->extension")."\n"," ".sprintf('Angemeldet als: %s',"".h(logged_user())."")."\n";$i=$b->databases();if($i){$rf=support("scheme");$Pa=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!=""?$f->select_db(DB):isset($_GET["sql"])||isset($_GET["dump"])||isset($_GET["database"])||isset($_GET["processlist"])||isset($_GET["privileges"])||isset($_GET["user"])||isset($_GET["variables"])||$_GET["script"]=="connect"||$_GET["script"]=="kill")){if(DB!=""||$_GET["refresh"]){restart_session();set_session("dbs",null);}connect_error();exit;}$Wd="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class
TmpFile{var$handler;var$size;function
__construct(){$this->handler=tmpfile();}function
write($Za){$this->size+=strlen($Za);fwrite($this->handler,$Za);}function
send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$Qb="'(?:''|[^'\\\\]|\\\\.)*'";$Qc="IN|OUT|INOUT";if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["download"])){$a=$_GET["download"];$n=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(idf_escape($_GET["field"]));$J=$k->select($a,$N,array(where($_GET,$n)),$N);$L=($J?$J->fetch_row():array());echo$k->value($L[0],$n[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$n=fields($a);if(!$n)$l=error();$S=table_status1($a,true);$F=$b->tableName($S);page_header(($n&&is_view($S)?$S['Engine']=='materialized view'?'Materialized view':'View':'Tabelle').": ".($F!=""?$F:h($a)),$l);$b->selectLinks($S);$Ta=$S["Comment"];if($Ta!="")echo"".'Kommentar'.": ".h($Ta)."\n";if($n)$b->tableStructurePrint($n);if(!is_view($S)){if(support("indexes")){echo" ".'Indizes'."\n";$x=indexes($a);if($x)$b->tableIndexesPrint($x);echo''.'Indizes ändern'."\n";}if(fk_support($S)){echo" ".'Fremdschlüssel'."\n";$q=foreign_keys($a);if($q){echo"\n","| ".'Ursprung'." | ".'Ziel'." | ".'ON DELETE'." | ".'ON UPDATE'." | | \n";foreach($q
as$F=>$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",' | '.'Ändern'.'';}echo" | \n";}echo''.'Fremdschlüssel hinzufügen'."\n";}}if(support(is_view($S)?"view_trigger":"trigger")){echo" ".'Trigger'."\n";$Ag=triggers($a);if($Ag){echo"\n";foreach($Ag
as$z=>$X)echo"| ".h($X[0])." | ".h($X[1])." | ".h($z)." | ".'Ändern'."\n";echo" |
|---|
\n";}echo''.'Trigger hinzufügen'."\n";}}elseif(isset($_GET["schema"])){page_header('Datenbankschema',"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Xf=array();$Yf=array();$ca=($_GET["schema"]?$_GET["schema"]:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ca,$ud,PREG_SET_ORDER);foreach($ud
as$u=>$C){$Xf[$C[1]]=array($C[2],$C[3]);$Yf[]="\n\t'".js_escape($C[1])."': [ $C[2], $C[3] ]";}$sg=0;$xa=-1;$qf=array();$ff=array();$ld=array();foreach(table_status('',true)as$R=>$S){if(is_view($S))continue;$Ie=0;$qf[$R]["fields"]=array();foreach(fields($R)as$F=>$m){$Ie+=1.25;$m["pos"]=$Ie;$qf[$R]["fields"][$F]=$m;}$qf[$R]["pos"]=($Xf[$R]?$Xf[$R]:array($sg,0));foreach($b->foreignKeys($R)as$X){if(!$X["db"]){$jd=$xa;if($Xf[$R][1]||$Xf[$X["table"]][1])$jd=min(floatval($Xf[$R][1]),floatval($Xf[$X["table"]][1]))-1;else$xa-=.1;while($ld[(string)$jd])$jd-=.0001;$qf[$R]["references"][$X["table"]][(string)$jd]=array($X["source"],$X["target"]);$ff[$X["table"]][$R][(string)$jd]=$X["target"];$ld[(string)$jd]=true;}}$sg=max($sg,$qf[$R]["pos"][0]+2.5+$Ie);}echo'
';foreach($qf
as$F=>$R){echo" ",' '.h($F)."",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$m){$X=' '.h($m["field"]).'';echo" ".($m["primary"]?" $X":$X);}foreach((array)$R["references"]as$eg=>$gf){foreach($gf
as$jd=>$cf){$kd=$jd-$Xf[$F][1];$u=0;foreach($cf[0]as$Ff)echo"\n ";}}foreach((array)$ff[$F]as$eg=>$gf){foreach($gf
as$jd=>$e){$kd=$jd-$Xf[$F][1];$u=0;foreach($e
as$dg)echo"\n ";}}echo"\n \n";}foreach($qf
as$F=>$R){foreach((array)$R["references"]as$eg=>$gf){foreach($gf
as$jd=>$cf){$Gd=$sg;$yd=-10;foreach($cf[0]as$z=>$Ff){$Je=$R["pos"][0]+$R["fields"][$Ff]["pos"];$Ke=$qf[$eg]["pos"][0]+$qf[$eg]["fields"][$cf[1][$z]]["pos"];$Gd=min($Gd,$Je,$Ke);$yd=max($yd,$Je,$Ke);}echo" \n";}}}echo'
Dauerhafter Link
';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$l){$bb="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$z)$bb.="&$z=".urlencode($_POST[$z]);cookie("adminer_export",substr($bb,1));$T=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$bc=dump_headers((count($T)==1?key($T):DB),(DB==""||count($T)>1));$Xc=preg_match('~sql~',$_POST["format"]);if($Xc){echo"-- Adminer $da ".$zb[DRIVER]." ".str_replace("\n"," ",$f->server_info)." dump\n\n";if($y=="sql"){echo"SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
".($_POST["data_style"]?"SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
":"")."
";$f->query("SET time_zone = '+00:00'");$f->query("SET sql_mode = ''");}}$Pf=$_POST["db_style"];$i=array(DB);if(DB==""){$i=$_POST["databases"];if(is_string($i))$i=explode("\n",rtrim(str_replace("\r","",$i),"\n"));}foreach((array)$i
as$j){$b->dumpDatabase($j);if($f->select_db($j)){if($Xc&&preg_match('~CREATE~',$Pf)&&($h=$f->result("SHOW CREATE DATABASE ".idf_escape($j),1))){set_utf8mb4($h);if($Pf=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($j).";\n";echo"$h;\n";}if($Xc){if($Pf)echo
use_sql($j).";\n\n";$pe="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$nf){foreach(get_rows("SHOW $nf STATUS WHERE Db = ".q($j),null,"-- ")as$L){$h=remove_definer($f->result("SHOW CREATE $nf ".idf_escape($L["Name"]),2));set_utf8mb4($h);$pe.=($Pf!='DROP+CREATE'?"DROP $nf IF EXISTS ".idf_escape($L["Name"]).";;\n":"")."$h;;\n\n";}}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$L){$h=remove_definer($f->result("SHOW CREATE EVENT ".idf_escape($L["Name"]),3));set_utf8mb4($h);$pe.=($Pf!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($L["Name"]).";;\n":"")."$h;;\n\n";}}if($pe)echo"DELIMITER ;;\n\n$pe"."DELIMITER ;\n\n";}if($_POST["table_style"]||$_POST["data_style"]){$Zg=array();foreach(table_status('',true)as$F=>$S){$R=(DB==""||in_array($F,(array)$_POST["tables"]));$hb=(DB==""||in_array($F,(array)$_POST["data"]));if($R||$hb){if($bc=="tar"){$qg=new
TmpFile;ob_start(array($qg,'write'),1e5);}$b->dumpTable($F,($R?$_POST["table_style"]:""),(is_view($S)?2:0));if(is_view($S))$Zg[]=$F;elseif($hb){$n=fields($F);$b->dumpData($F,$_POST["data_style"],"SELECT *".convert_fields($n,$n)." FROM ".table($F));}if($Xc&&$_POST["triggers"]&&$R&&($Ag=trigger_sql($F)))echo"\nDELIMITER ;;\n$Ag\nDELIMITER ;\n";if($bc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$j/")."$F.csv",$qg);}elseif($Xc)echo"\n";}}if(function_exists('foreign_keys_sql')){foreach(table_status('',true)as$F=>$S){$R=(DB==""||in_array($F,(array)$_POST["tables"]));if($R&&!is_view($S))echo
foreign_keys_sql($F);}}foreach($Zg
as$Yg)$b->dumpTable($Yg,$_POST["table_style"],1);if($bc=="tar")echo
pack("x512");}}}if($Xc)echo"-- ".$f->result("SELECT NOW()")."\n";exit;}page_header('Exportieren',$l,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
';$lc=true;foreach($Ne
as$z=>$X){if($z!=""&&$X>1){echo($lc?"":" ")."".h($z)."";$lc=false;}}}elseif(isset($_GET["sql"])){if(!$l&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$Gc=&get_session("queries");$Fc=&$Gc[DB];if(!$l&&$_POST["clear"]){$Fc=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?'Importieren':'SQL-Kommando'),$l);if(!$l&&$_POST){$r=false;if(!isset($_GET["import"]))$I=$_POST["query"];elseif($_POST["webfile"]){$If=$b->importServerPath();$r=@fopen((file_exists($If)?$If:"compress.zlib://$If.gz"),"rb");$I=($r?fread($r,1e6):false);}else$I=get_file("sql_file",true);if(is_string($I)){if(function_exists('memory_get_usage'))@ini_set("memory_limit",max(ini_bytes("memory_limit"),2*strlen($I)+memory_get_usage()+8e6));if($I!=""&&strlen($I)<1e6){$H=$I.(preg_match("~;[ \t\r\n]*\$~",$I)?"":";");if(!$Fc||reset(end($Fc))!=$H){restart_session();$Fc[]=array($H,time());set_session("queries",$Gc);stop_session();}}$Gf="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$rb=";";$Sd=0;$Nb=true;$g=connect();if(is_object($g)&&DB!=""){$g->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$g);}$Sa=0;$Sb=array();$ve='[\'"'.($y=="sql"?'`#':($y=="sqlite"?'`[':($y=="mssql"?'[':''))).']|/\*|-- |$'.($y=="pgsql"?'|\$[^$]*\$':'');$tg=microtime(true);parse_str($_COOKIE["adminer_export"],$ia);$Eb=$b->dumpFormat();unset($Eb["sql"]);while($I!=""){if(!$Sd&&preg_match("~^$Gf*+DELIMITER\\s+(\\S+)~i",$I,$C)){$rb=$C[1];$I=substr($I,strlen($C[0]));}else{preg_match('('.preg_quote($rb)."\\s*|$ve)",$I,$C,PREG_OFFSET_CAPTURE,$Sd);list($rc,$Ie)=$C[0];if(!$rc&&$r&&!feof($r))$I.=fread($r,1e5);else{if(!$rc&&rtrim($I)=="")break;$Sd=$Ie+strlen($rc);if($rc&&rtrim($rc)!=$rb){while(preg_match('('.($rc=='/*'?'\*/':($rc=='['?']':(preg_match('~^-- |^#~',$rc)?"\n":preg_quote($rc)."|\\\\."))).'|$)s',$I,$C,PREG_OFFSET_CAPTURE,$Sd)){$pf=$C[0][0];if(!$pf&&$r&&!feof($r))$I.=fread($r,1e5);else{$Sd=$C[0][1]+strlen($pf);if($pf[0]!="\\")break;}}}else{$Nb=false;$H=substr($I,0,$Ie);$Sa++;$Qe=" ".$b->sqlCommandQuery($H)." \n";if($y=="sqlite"&&preg_match("~^$Gf*+ATTACH\\b~i",$H,$C)){echo$Qe,"".'ATTACH queries are not supported.'."\n";$Sb[]=" $Sa";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$Qe;ob_flush();flush();}$Lf=microtime(true);if($f->multi_query($H)&&is_object($g)&&preg_match("~^$Gf*+USE\\b~i",$H))$g->query($H);do{$J=$f->store_result();if($f->error){echo($_POST["only_errors"]?$Qe:"")," ".'Fehler in der SQL-Abfrage'.($f->errno?" ($f->errno)":"").": ".error()."\n";$Sb[]=" $Sa";if($_POST["error_stops"])break
2;}else{$jg=" (".format_time($Lf).")".(strlen($H)<1000?" ".'Bearbeiten'."":"");$ka=$f->affected_rows;$ch=($_POST["only_errors"]?"":$k->warnings());$dh="warnings-$Sa";if($ch)$jg.=", ".'Warnings'."".script("qsl('a').onclick = partial(toggle, '$dh');","");$Zb=null;$ac="explain-$Sa";if(is_object($J)){$_=$_POST["limit"];$ie=select($J,$g,array(),$_);if(!$_POST["only_errors"]){echo" \n";}}else{if(preg_match("~^$Gf*+(CREATE|DROP|ALTER)$Gf++(DATABASE|SCHEMA)\\b~i",$H)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"".lang(array('Abfrage ausgeführt, %d Datensatz betroffen.','Abfrage ausgeführt, %d Datensätze betroffen.'),$ka)."$jg\n";}echo($ch?" \n$ch \n":"");if($Zb){echo"\n";select($Zb,$g,$ie);echo" \n";}}$Lf=microtime(true);}while($f->next_result());}$I=substr($I,$Sd);$Sd=0;}}}}if($Nb)echo"".'Kein Kommando vorhanden.'."\n";elseif($_POST["only_errors"]){echo" ".lang(array('SQL-Abfrage erfolgreich ausgeführt.','%d SQL-Abfragen erfolgreich ausgeführt.'),$Sa-count($Sb))," (".format_time($tg).")\n";}elseif($Sb&&$Sa>1)echo" ".'Fehler in der SQL-Abfrage'.": ".implode("",$Sb)."\n";}else
echo" ".upload_error($I)."\n";}echo'
';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$n=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$n):""):where($_GET,$n));$Kg=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($n
as$F=>$m){if(!isset($m["privileges"][$Kg?"update":"insert"])||$b->fieldName($m)==""||$m["generated"])unset($n[$F]);}if($_POST&&!$l&&!isset($_GET["select"])){$B=$_POST["referer"];if($_POST["insert"])$B=($Kg?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$B))$B=ME."select=".urlencode($a);$x=indexes($a);$Fg=unique_array($_GET["where"],$x);$Ye="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($B,'Datensatz wurde gelöscht.',$k->delete($a,$Ye,!$Fg));else{$P=array();foreach($n
as$F=>$m){$X=process_input($m);if($X!==false&&$X!==null)$P[idf_escape($F)]=$X;}if($Kg){if(!$P)redirect($B);queries_redirect($B,'Datensatz wurde geändert.',$k->update($a,$P,$Ye,!$Fg));if(is_ajax()){page_headers();page_messages($l);exit;}}else{$J=$k->insert($a,$P);$id=($J?last_id():0);queries_redirect($B,sprintf('Datensatz%s wurde eingefügt.',($id?" $id":"")),$J);}}}$L=null;if($_POST["save"])$L=(array)$_POST["fields"];elseif($Z){$N=array();foreach($n
as$F=>$m){if(isset($m["privileges"]["select"])){$pa=convert_field($m);if($_POST["clone"]&&$m["auto_increment"])$pa="''";if($y=="sql"&&preg_match("~enum|set~",$m["type"]))$pa="1*".idf_escape($F);$N[]=($pa?"$pa AS ":"").idf_escape($F);}}$L=array();if(!support("table"))$N=array("*");if($N){$J=$k->select($a,$N,array($Z),$N,array(),(isset($_GET["select"])?2:1));if(!$J)$l=error();else{$L=$J->fetch_assoc();if(!$L)$L=false;}if(isset($_GET["select"])&&(!$L||$J->fetch_assoc()))$L=null;}}if(!support("table")&&!$n){if(!$Z){$J=$k->select($a,array("*"),$Z,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L)$L=array($k->primary=>"");}if($L){foreach($L
as$z=>$X){if(!$Z)$L[$z]=null;$n[$z]=array("field"=>$z,"null"=>($z!=$k->primary),"auto_increment"=>($z==$k->primary));}}}edit_form($a,$n,$L,$Kg);}elseif(isset($_GET["create"])){$a=$_GET["create"];$we=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$z)$we[$z]=$z;$ef=referencable_primary($a);$q=array();foreach($ef
as$Wf=>$m)$q[str_replace("`","``",$Wf)."`".str_replace("`","``",$m["field"])]=$Wf;$le=array();$S=array();if($a!=""){$le=fields($a);$S=table_status($a);if(!$S)$l='Keine Tabellen.';}$L=$_POST;$L["fields"]=(array)$L["fields"];if($L["auto_increment_col"])$L["fields"][$L["auto_increment_col"]]["auto_increment"]=true;if($_POST)set_adminer_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($L["fields"])&&!$l){if($_POST["drop"])queries_redirect(substr(ME,0,-1),'Tabelle wurde entfernt.',drop_tables(array($a)));else{$n=array();$na=array();$Og=false;$oc=array();$ke=reset($le);$ma=" FIRST";foreach($L["fields"]as$z=>$m){$p=$q[$m["type"]];$Bg=($p!==null?$ef[$p]:$m);if($m["field"]!=""){if(!$m["has_default"])$m["default"]=null;if($z==$L["auto_increment_col"])$m["auto_increment"]=true;$Ue=process_field($m,$Bg);$na[]=array($m["orig"],$Ue,$ma);if(!$ke||$Ue!=process_field($ke,$ke)){$n[]=array($m["orig"],$Ue,$ma);if($m["orig"]!=""||$ma)$Og=true;}if($p!==null)$oc[idf_escape($m["field"])]=($a!=""&&$y!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$q[$m["type"]],'source'=>array($m["field"]),'target'=>array($Bg["field"]),'on_delete'=>$m["on_delete"],));$ma=" AFTER ".idf_escape($m["field"]);}elseif($m["orig"]!=""){$Og=true;$n[]=array($m["orig"]);}if($m["orig"]!=""){$ke=next($le);if(!$ke)$ma="";}}$ye="";if($we[$L["partition_by"]]){$ze=array();if($L["partition_by"]=='RANGE'||$L["partition_by"]=='LIST'){foreach(array_filter($L["partition_names"])as$z=>$X){$Y=$L["partition_values"][$z];$ze[]="\n PARTITION ".idf_escape($X)." VALUES ".($L["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$ye.="\nPARTITION BY $L[partition_by]($L[partition])".($ze?" (".implode(",",$ze)."\n)":($L["partitions"]?" PARTITIONS ".(+$L["partitions"]):""));}elseif(support("partitioning")&&preg_match("~partitioned~",$S["Create_options"]))$ye.="\nREMOVE PARTITIONING";$D='Tabelle wurde geändert.';if($a==""){cookie("adminer_engine",$L["Engine"]);$D='Tabelle wurde erstellt.';}$F=trim($L["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($F),$D,alter_table($a,$F,($y=="sqlite"&&($Og||$oc)?$na:$n),$oc,($L["Comment"]!=$S["Comment"]?$L["Comment"]:null),($L["Engine"]&&$L["Engine"]!=$S["Engine"]?$L["Engine"]:""),($L["Collation"]&&$L["Collation"]!=$S["Collation"]?$L["Collation"]:""),($L["Auto_increment"]!=""?number($L["Auto_increment"]):""),$ye));}}page_header(($a!=""?'Tabelle ändern':'Tabelle erstellen'),$l,array("table"=>$a),h($a));if(!$_POST){$L=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($Cg["int"])?"int":(isset($Cg["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$L=$S;$L["name"]=$a;$L["fields"]=array();if(!$_GET["auto_increment"])$L["Auto_increment"]="";foreach($le
as$m){$m["has_default"]=isset($m["default"]);$L["fields"][]=$m;}if(support("partitioning")){$tc="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($a);$J=$f->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $tc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($L["partition_by"],$L["partitions"],$L["partition"])=$J->fetch_row();$ze=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $tc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$ze[""]="";$L["partition_names"]=array_keys($ze);$L["partition_values"]=array_values($ze);}}}$Pa=collations();$Pb=engines();foreach($Pb
as$Ob){if(!strcasecmp($Ob,$L["Engine"])){$L["Engine"]=$Ob;break;}}echo'
';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Oc=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"]))$Oc[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$Oc[]="SPATIAL";$x=indexes($a);$Oe=array();if($y=="mongo"){$Oe=$x["_id_"];unset($Oc[0]);unset($x["_id_"]);}$L=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["drop_col"]){$oa=array();foreach($L["indexes"]as$w){$F=$w["name"];if(in_array($w["type"],$Oc)){$e=array();$od=array();$tb=array();$P=array();ksort($w["columns"]);foreach($w["columns"]as$z=>$d){if($d!=""){$nd=$w["lengths"][$z];$sb=$w["descs"][$z];$P[]=idf_escape($d).($nd?"(".(+$nd).")":"").($sb?" DESC":"");$e[]=$d;$od[]=($nd?$nd:null);$tb[]=$sb;}}if($e){$Yb=$x[$F];if($Yb){ksort($Yb["columns"]);ksort($Yb["lengths"]);ksort($Yb["descs"]);if($w["type"]==$Yb["type"]&&array_values($Yb["columns"])===$e&&(!$Yb["lengths"]||array_values($Yb["lengths"])===$od)&&array_values($Yb["descs"])===$tb){unset($x[$F]);continue;}}$oa[]=array($w["type"],$F,$P);}}}foreach($x
as$F=>$Yb)$oa[]=array($Yb["type"],$F,"DROP");if(!$oa)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),'Indizes geändert.',alter_indexes($a,$oa));}page_header('Indizes',$l,array("table"=>$a),h($a));$n=array_keys(fields($a));if($_POST["add"]){foreach($L["indexes"]as$z=>$w){if($w["columns"][count($w["columns"])]!="")$L["indexes"][$z]["columns"][]="";}$w=end($L["indexes"]);if($w["type"]||array_filter($w["columns"],'strlen'))$L["indexes"][]=array("columns"=>array(1=>""));}if(!$L){foreach($x
as$z=>$w){$x[$z]["name"]=$z;$x[$z]["columns"][]="";}$x[]=array("columns"=>array(1=>""));$L["indexes"]=$x;}echo'
';}elseif(isset($_GET["database"])){$L=$_POST;if($_POST&&!$l&&!isset($_POST["add_x"])){$F=trim($L["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),'Datenbank wurde entfernt.',drop_databases(array(DB)));}elseif(DB!==$F){if(DB!=""){$_GET["db"]=$F;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($F),'Datenbank wurde umbenannt.',rename_database($F,$L["collation"]));}else{$i=explode("\n",str_replace("\r","",$F));$Qf=true;$hd="";foreach($i
as$j){if(count($i)==1||$j!=""){if(!create_database($j,$L["collation"]))$Qf=false;$hd=$j;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($hd),'Datenbank wurde erstellt.',$Qf);}}else{if(!$L["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($F).(preg_match('~^[a-z0-9_]+$~i',$L["collation"])?" COLLATE $L[collation]":""),substr(ME,0,-1),'Datenbank wurde geändert.');}}page_header(DB!=""?'Datenbank ändern':'Datenbank erstellen',$l,array(),h(DB));$Pa=collations();$F=DB;if($_POST)$F=$L["name"];elseif(DB!="")$L["collation"]=db_collation(DB,$Pa);elseif($y=="sql"){foreach(get_vals("SHOW GRANTS")as$vc){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$vc,$C)&&$C[1]){$F=stripcslashes(idf_unescape("`$C[2]`"));break;}}}echo'
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$F=$_GET["name"];$L=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$D=($_POST["drop"]?'Fremdschlüssel wurde entfernt.':($F!=""?'Fremdschlüssel wurde geändert.':'Fremdschlüssel wurde erstellt.'));$B=ME."table=".urlencode($a);if(!$_POST["drop"]){$L["source"]=array_filter($L["source"],'strlen');ksort($L["source"]);$dg=array();foreach($L["source"]as$z=>$X)$dg[$z]=$L["target"][$z];$L["target"]=$dg;}if($y=="sqlite")queries_redirect($B,$D,recreate_table($a,$a,array(),array(),array(" $F"=>($_POST["drop"]?"":" ".format_foreign_key($L)))));else{$oa="ALTER TABLE ".table($a);$_b="\nDROP ".($y=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($F);if($_POST["drop"])query_redirect($oa.$_b,$B,$D);else{query_redirect($oa.($F!=""?"$_b,":"")."\nADD".format_foreign_key($L),$B,$D);$l='Quell- und Zielspalten müssen vom gleichen Datentyp sein, es muss unter den Zielspalten ein Index existieren und die referenzierten Daten müssen existieren.'." $l";}}}page_header('Fremdschlüssel',$l,array("table"=>$a),h($a));if($_POST){ksort($L["source"]);if($_POST["add"])$L["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$L["target"]=array();}elseif($F!=""){$q=foreign_keys($a);$L=$q[$F];$L["source"][]="";}else{$L["table"]=$a;$L["source"]=array("");}echo'
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$L=$_POST;$me="VIEW";if($y=="pgsql"&&$a!=""){$Mf=table_status($a);$me=strtoupper($Mf["Engine"]);}if($_POST&&!$l){$F=trim($L["name"]);$pa=" AS\n$L[select]";$B=ME."table=".urlencode($F);$D='View wurde geändert.';$V=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$F&&$y!="sqlite"&&$V=="VIEW"&&$me=="VIEW")query_redirect(($y=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($F).$pa,$B,$D);else{$fg=$F."_adminer_".uniqid();drop_create("DROP $me ".table($a),"CREATE $V ".table($F).$pa,"DROP $V ".table($F),"CREATE $V ".table($fg).$pa,"DROP $V ".table($fg),($_POST["drop"]?substr(ME,0,-1):$B),'View wurde entfernt.',$D,'View wurde erstellt.',$a,$F);}}if(!$_POST&&$a!=""){$L=view($a);$L["name"]=$a;$L["materialized"]=($me!="VIEW");if(!$l)$l=error();}page_header(($a!=""?'View ändern':'View erstellen'),$l,array("table"=>$a),h($a));echo'
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$F=$_GET["name"];$_g=trigger_options();$L=(array)trigger($F,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$l&&in_array($_POST["Timing"],$_g["Timing"])&&in_array($_POST["Event"],$_g["Event"])&&in_array($_POST["Type"],$_g["Type"])){$Vd=" ON ".table($a);$_b="DROP TRIGGER ".idf_escape($F).($y=="pgsql"?$Vd:"");$B=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($_b,$B,'Trigger wurde entfernt.');else{if($F!="")queries($_b);queries_redirect($B,($F!=""?'Trigger wurde geändert.':'Trigger wurde erstellt.'),queries(create_trigger($Vd,$_POST)));if($F!="")queries(create_trigger($Vd,$L+array("Type"=>reset($_g["Type"]))));}}$L=$_POST;}page_header(($F!=""?'Trigger ändern'.": ".h($F):'Trigger erstellen'),$l,array("table"=>$a));echo'
';}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$x=indexes($a);$n=fields($a);$q=column_foreign_keys($a);$Td=$S["Oid"];parse_str($_COOKIE["adminer_import"],$ja);$lf=array();$e=array();$ig=null;foreach($n
as$z=>$m){$F=$b->fieldName($m);if(isset($m["privileges"]["select"])&&$F!=""){$e[$z]=html_entity_decode(strip_tags($F),ENT_QUOTES);if(is_shortable($m))$ig=$b->selectLengthProcess();}$lf+=$m["privileges"];}list($N,$t)=$b->selectColumnsProcess($e,$x);$Wc=count($t)selectSearchProcess($n,$x);$fe=$b->selectOrderProcess($n,$x);$_=$b->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Gg=>$L){$pa=convert_field($n[key($L)]);$N=array($pa?$pa:idf_escape(key($L)));$Z[]=where_check($Gg,$n);$K=$k->select($a,$N,$Z,$N);if($K)echo
reset($K->fetch_row());}exit;}$Oe=$Ig=null;foreach($x
as$w){if($w["type"]=="PRIMARY"){$Oe=array_flip($w["columns"]);$Ig=($N?$Oe:array());foreach($Ig
as$z=>$X){if(in_array(idf_escape($z),$N))unset($Ig[$z]);}break;}}if($Td&&!$Oe){$Oe=$Ig=array($Td=>0);$x[]=array("type"=>"PRIMARY","columns"=>array($Td));}if($_POST&&!$l){$fh=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Ga=array();foreach($_POST["check"]as$Ea)$Ga[]=where_check($Ea,$n);$fh[]="((".implode(") OR (",$Ga)."))";}$fh=($fh?"\nWHERE ".implode(" AND ",$fh):"");if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");$tc=($N?implode(", ",$N):"*").convert_fields($e,$n,$N)."\nFROM ".table($a);$xc=($t&&$Wc?"\nGROUP BY ".implode(", ",$t):"").($fe?"\nORDER BY ".implode(", ",$fe):"");if(!is_array($_POST["check"])||$Oe)$I="SELECT $tc$fh$xc";else{$Eg=array();foreach($_POST["check"]as$X)$Eg[]="(SELECT".limit($tc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n).$xc,1).")";$I=implode(" UNION ALL ",$Eg);}$b->dumpData($a,"table",$I);exit;}if(!$b->selectEmailProcess($Z,$q)){if($_POST["save"]||$_POST["delete"]){$J=true;$ka=0;$P=array();if(!$_POST["delete"]){foreach($e
as$F=>$X){$X=process_input($n[$F]);if($X!==null&&($_POST["clone"]||$X!==false))$P[idf_escape($F)]=($X!==false?$X:idf_escape($F));}}if($_POST["delete"]||$P){if($_POST["clone"])$I="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a);if($_POST["all"]||($Oe&&is_array($_POST["check"]))||$Wc){$J=($_POST["delete"]?$k->delete($a,$fh):($_POST["clone"]?queries("INSERT $I$fh"):$k->update($a,$P,$fh)));$ka=$f->affected_rows;}else{foreach((array)$_POST["check"]as$X){$eh="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n);$J=($_POST["delete"]?$k->delete($a,$eh,1):($_POST["clone"]?queries("INSERT".limit1($a,$I,$eh)):$k->update($a,$P,$eh,1)));if(!$J)break;$ka+=$f->affected_rows;}}}$D=sprintf('%d Artikel betroffen.',$ka);if($_POST["clone"]&&$J&&$ka==1){$id=last_id();if($id)$D=sprintf('Datensatz%s wurde eingefügt.'," $id");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$D,$J);if(!$_POST["delete"]){edit_form($a,$n,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$l='Ctrl+Klick zum Bearbeiten des Wertes.';else{$J=true;$ka=0;foreach($_POST["val"]as$Gg=>$L){$P=array();foreach($L
as$z=>$X){$z=bracket_escape($z,1);$P[idf_escape($z)]=(preg_match('~char|text~',$n[$z]["type"])||$X!=""?$b->processInput($n[$z],$X):"NULL");}$J=$k->update($a,$P," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($Gg,$n),!$Wc&&!$Oe," ");if(!$J)break;$ka+=$f->affected_rows;}queries_redirect(remove_from_uri(),sprintf('%d Artikel betroffen.',$ka),$J);}}elseif(!is_string($jc=get_file("csv_file",true)))$l=upload_error($jc);elseif(!preg_match('~~u',$jc))$l='Die Datei muss UTF-8 kodiert sein.';else{cookie("adminer_import","output=".urlencode($ja["output"])."&format=".urlencode($_POST["separator"]));$J=true;$Qa=array_keys($n);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$jc,$ud);$ka=count($ud[0]);$k->begin();$xf=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($ud[0]as$z=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$xf]*)$xf~",$X.$xf,$vd);if(!$z&&!array_diff($vd[1],$Qa)){$Qa=$vd[1];$ka--;}else{$P=array();foreach($vd[1]as$u=>$Ma)$P[idf_escape($Qa[$u])]=($Ma==""&&$n[$Qa[$u]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$Ma))));$M[]=$P;}}$J=(!$M||$k->insertUpdate($a,$M,$Oe));if($J)$J=$k->commit();queries_redirect(remove_from_uri("page"),lang(array('%d Datensatz wurde importiert.','%d Datensätze wurden importiert.'),$ka),$J);$k->rollback();}}}$Wf=$b->tableName($S);if(is_ajax()){page_headers();ob_start();}else
page_header('Daten zeigen von'.": $Wf",$l);$P=null;if(isset($lf["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$X){if($q[$X["col"]]&&count($q[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match('~[_%]~',$X["val"]))))$P.="&set".urlencode("[".bracket_escape($X["col"])."]")."=".urlencode($X["val"]);}}$b->selectLinks($S,$P);if(!$e&&support("table"))echo"".'Auswahl der Tabelle fehlgeschlagen'.($n?".":": ".error())."\n";else{echo" \n";$G=$_GET["page"];if($G=="last"){$sc=$f->result(count_rows($a,$Z,$Wc,$t));$G=floor(max(0,$sc-1)/$_);}$sf=$N;$wc=$t;if(!$sf){$sf[]="*";$ab=convert_fields($e,$n,$N);if($ab)$sf[]=substr($ab,2);}foreach($N
as$z=>$X){$m=$n[idf_unescape($X)];if($m&&($pa=convert_field($m)))$sf[$z]="$pa AS $X";}if(!$Wc&&$Ig){foreach($Ig
as$z=>$X){$sf[]=idf_escape($z);if($wc)$wc[]=idf_escape($z);}}$J=$k->select($a,$sf,$Z,$wc,$fe,$_,$G,true);if(!$J)echo"".error()."\n";else{if($y=="mssql"&&$G)$J->seek($_*$G);$Mb=array();echo" \n",(!$t&&$N?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$Mf=isset($_GET["status"]);page_header($Mf?'Status':'Variablen');$Vg=($Mf?show_status():show_variables());if(!$Vg)echo"".'Keine Datensätze.'."\n";else{echo" \n";foreach($Vg
as$z=>$X){echo"","".h($z).""," | ".h($X);}echo" | \n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Tf=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$F=>$S){json_row("Comment-$F",h($S["Comment"]));if(!is_view($S)){foreach(array("Engine","Collation")as$z)json_row("$z-$F",h($S[$z]));foreach($Tf+array("Auto_increment"=>0,"Rows"=>0)as$z=>$X){if($S[$z]!=""){$X=format_number($S[$z]);json_row("$z-$F",($z=="Rows"&&$X&&$S["Engine"]==($Hf=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Tf[$z]))$Tf[$z]+=($S["Engine"]!="InnoDB"||$z!="Data_free"?$S[$z]:0);}elseif(array_key_exists($z,$S))json_row("$z-$F");}}}foreach($Tf
as$z=>$X)json_row("sum-$z",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$f->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($b->databases())as$j=>$X){json_row("tables-$j",$X);json_row("size-$j",db_size($j));}json_row("");}exit;}else{$bg=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($bg&&!$l&&!$_POST["search"]){$J=true;$D="";if($y=="sql"&&$_POST["tables"]&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$J=truncate_tables($_POST["tables"]);$D='Tabellen wurden geleert (truncate).';}elseif($_POST["move"]){$J=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D='Tabellen verschoben.';}elseif($_POST["copy"]){$J=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D='Tabellen wurden kopiert.';}elseif($_POST["drop"]){if($_POST["views"])$J=drop_views($_POST["views"]);if($J&&$_POST["tables"])$J=drop_tables($_POST["tables"]);$D='Tabellen wurden entfernt (drop).';}elseif($y!="sql"){$J=($y=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$D='Tabellen wurden optimiert.';}elseif(!$_POST["tables"])$D='Keine Tabellen.';elseif($J=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"])))){while($L=$J->fetch_assoc())$D.="".h($L["Table"]).": ".h($L["Msg_text"])." ";}queries_redirect(substr(ME,0,-1),$D,$J);}page_header(($_GET["ns"]==""?'Datenbank'.": ".h(DB):'Schema'.": ".h($_GET["ns"])),$l,true);if($b->homepage()){if($_GET["ns"]!==""){echo"".'Tabellen und Views'."\n";$ag=tables_list();if(!$ag)echo"".'Keine Tabellen.'."\n";else{echo" \n",script("tableCheck();");}echo''.'Tabelle erstellen'."\n",(support("view")?''.'View erstellen'."\n":"");if($ag)echo
script("ajaxSetHtml('".js_escape(ME)."script=db');");}}}page_footer();
|