function toggle(id){var el=document.getElementById(id);el.className=(el.className=='hidden'?'':'hidden');return true;} function cookie(assign,days){var date=new Date();date.setDate(date.getDate()+days);document.cookie=assign+'; expires='+date;} function verifyVersion(){cookie('adminer_version=0',1);var script=document.createElement('script');script.src=location.protocol+'//www.adminer.org/version.php';document.body.appendChild(script);} function selectValue(select){var selected=select.options[select.selectedIndex];return((selected.attributes.value||{}).specified?selected.value:selected.text);} function formCheck(el,name){var elems=el.form.elements;for(var i=0;i.*<\/noscript>/i,'');}}} function nodePosition(el){var pos=0;while(el=el.previousSibling){pos++;} return pos;} function pageClick(href,page,event){if(!isNaN(page)&&page){href+=(page!=1?'&page='+(page-1):'');if(!ajaxSend(href)){location.href=href;}}} function selectAddRow(field){field.onchange=function(){};var row=field.parentNode.cloneNode(true);var selects=row.getElementsByTagName('select');for(var i=0;i=0){input.maxLength=input.origMaxLength;}} function ajax(url,callback,data){var xmlhttp=(window.XMLHttpRequest?new XMLHttpRequest():(window.ActiveXObject?new ActiveXObject('Microsoft.XMLHTTP'):false));if(xmlhttp){xmlhttp.open((data?'POST':'GET'),url);if(data){xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');} xmlhttp.setRequestHeader('X-Requested-With','XMLHttpRequest');xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4){callback(xmlhttp);}};xmlhttp.send(data);} return xmlhttp;} function ajaxSetHtml(url){return ajax(url,function(xmlhttp){if(xmlhttp.status){var data=eval('('+xmlhttp.responseText+')');for(var key in data){setHtml(key,data[key]);}}});} function replaceFavicon(href){var favicon=document.getElementById('favicon');favicon.href=href;favicon.parentNode.appendChild(favicon);} var ajaxState=0;function ajaxSend(url,data,popState){if(!history.pushState){return false;} var currentState=++ajaxState;onblur=function(){replaceFavicon(location.pathname+'?file=loader.gif&version=3.2.2');};setHtml('loader','');return ajax(url,function(xmlhttp){if(currentState==ajaxState){var title=xmlhttp.getResponseHeader('X-AJAX-Title');if(title){document.title=decodeURIComponent(title);} var redirect=xmlhttp.getResponseHeader('X-AJAX-Redirect');if(redirect){return ajaxSend(redirect,'',popState);} onblur=function(){};replaceFavicon(location.pathname+'?file=favicon.ico&version=3.2.2');if(!xmlhttp.status){setHtml('loader','');}else{if(!popState){if(data||url!=location.href){history.pushState(data,'',url);} scrollTo(0,0);} setHtml('content',xmlhttp.responseText);var content=document.getElementById('content');var scripts=content.getElementsByTagName('script');var length=scripts.length;for(var i=0;i=allowed){return false;} var match=/(\d+)(\.\d+)?/.exec(button.name);var x=match[0]+(match[2]?added.substr(match[2].length):added)+'1';var row=button.parentNode.parentNode;var row2=row.cloneNode(true);var tags=row.getElementsByTagName('select');var tags2=row2.getElementsByTagName('select');for(var i=0;idivs[i].offsetTop+top*em);} if(!lineSet[id]){var line=document.getElementById(divs[i].id.replace(/^....(.+)-\d+$/,'refl$1'));var shift=ev.clientY-y-that.offsetTop;line.style.left=(left+left1)+'em';if(isTop){line.style.top=(line.offsetTop+shift)/em+'em';} if(divs[i].parentNode!=div2.parentNode){line=line.getElementsByTagName('div')[0];line.style.height=(line.offsetHeight+(isTop?-1:1)*shift)/em+'em';} lineSet[id]=true;}}} that.style.left=left+'em';that.style.top=top+'em';}} function schemaMouseup(ev,db){if(that!==undefined){ev=ev||event;tablePos[that.firstChild.firstChild.firstChild.data]=[(ev.clientY-y)/em,(ev.clientX-x)/em];that=undefined;var s='';for(var key in tablePos){s+='_'+key+':'+Math.round(tablePos[key][0]*10000)/10000+'x'+Math.round(tablePos[key][1]*10000)/10000;} s=encodeURIComponent(s.substr(1));var link=document.getElementById('schema-link');link.href=link.href.replace(/[^=]+$/,'')+s;cookie('adminer_schema-'+db+'='+s,30);}}$y){unset($ub[$d][$Ma]);if(is_array($y)){$ub[$d][stripslashes($Ma)]=$y;$ub[]=&$ub[$d][stripslashes($Ma)];}else{$ub[$d][stripslashes($Ma)]=($_e?$y:stripslashes($y));}}}}}function bracket_escape($N,$pf=false){static$Xd=array(':'=>':1',']'=>':2','['=>':3');return strtr($N,($pf?array_flip($Xd):$Xd));}function h($I){return htmlspecialchars($I,ENT_QUOTES);}function nbsp($I){return(trim($I)!=""?h($I):" ");}function nl_br($I){return str_replace("\n","
",$I);}function checkbox($f,$q,$ab,$Ud="",$ae=""){static$S=0;$S++;$c="";return($Ud!=""?"":$c);}function optionlist($Wc,$Mf=null,$oe=false){$c="";foreach($Wc as$Ma=>$y){$ge=array($Ma=>$y);if(is_array($y)){$c.='';$ge=$y;}foreach($ge as$d=>$b){$c.=''.h($b);}if(is_array($y)){$c.='';}}return$c;}function adminer_html_select($f,$Wc,$q="",$Qb=true){if($Qb){return"";}$c="";foreach($Wc as$d=>$b){$c.="";}return$c;}function confirm($Qc="",$Sf=false){return" onclick=\"".($Sf?"eventStop(event); ":"")."return confirm('".lang(0).($Qc?" (' + $Qc + ')":"")."');\"";}function js_escape($I){return addcslashes($I,"\r\n'\\/");}function ini_bool($Rf){$b=ini_get($Rf);return(eregi('^(on|true|yes)$',$b)||(int)$b);}function sid(){static$c;if(!isset($c)){$c=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));}return$c;}function q($I){global$g;return$g->quote($I);}function get_vals($j,$C=0){global$g;$c=array();$i=$g->query($j);if(is_object($i)){while($a=$i->fetch_row()){$c[]=$a[$C];}}return$c;}function get_key_vals($j,$G=null){global$g;if(!is_object($G)){$G=$g;}$c=array();$i=$G->query($j);if(is_object($i)){while($a=$i->fetch_row()){$c[$a[0]]=$a[1];}}return$c;}function get_rows($j,$G=null,$n="

"){global$g;if(!is_object($G)){$G=$g;}$c=array();$i=$G->query($j);if(is_object($i)){while($a=$i->fetch_assoc()){$c[]=$a;}}elseif(!$i&&$g->error&&$n&&defined("PAGE_HEADER")){echo$n.error()."\n";}return$c;}function unique_array($a,$J){foreach($J as$x){if(ereg("PRIMARY|UNIQUE",$x["type"])){$c=array();foreach($x["columns"]as$d){if(!isset($a[$d])){continue 2;}$c[$d]=$a[$d];}return$c;}}$c=array();foreach($a as$d=>$b){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$d)){$c[$d]=$b;}}return$c;}function where($s){global$v;$c=array();foreach((array)$s["where"]as$d=>$b){$c[]=idf_escape(bracket_escape($d,1)).(ereg('\\.',$b)||$v=="mssql"?" LIKE ".exact_value(addcslashes($b,"%_")):" = ".exact_value($b));}foreach((array)$s["null"]as$d){$c[]=idf_escape($d)." IS NULL";}return implode(" AND ",$c);}function where_check($b){parse_str($b,$fe);remove_slashes(array(&$fe));return where($fe);}function where_link($l,$C,$q,$If="="){return"&where%5B$l%5D%5Bcol%5D=".urlencode($C)."&where%5B$l%5D%5Bop%5D=".urlencode((isset($q)?$If:"IS NULL"))."&where%5B$l%5D%5Bval%5D=".urlencode($q);}function cookie($f,$q){global$Ac;$xc=array($f,(ereg("\n",$q)?"":$q),time()+2592000,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$Ac);if(version_compare(PHP_VERSION,'5.2.0')>=0){$xc[]=true;}return call_user_func_array('setcookie',$xc);}function restart_session(){if(!ini_bool("session.use_cookies")){session_start();}}function&get_session($d){return$_SESSION[$d][DRIVER][SERVER][$_GET["username"]];}function set_session($d,$b){$_SESSION[$d][DRIVER][SERVER][$_GET["username"]]=$b;}function auth_url($Ib,$F,$P){global$na;preg_match('~([^?]*)\\??(.*)~',remove_from_uri(implode("|",array_keys($na))."|username|".session_name()),$k);return"$k[1]?".(sid()?SID."&":"").($Ib!="server"||$F!=""?urlencode($Ib)."=".urlencode($F)."&":"")."username=".urlencode($P).($k[2]?"&$k[2]":"");}function is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function redirect($ga,$va=null){if(isset($va)){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',(isset($ga)?$ga:$_SERVER["REQUEST_URI"]))][]=$va;}if(isset($ga)){if($ga==""){$ga=".";}header((is_ajax()?"X-AJAX-Redirect":"Location").": $ga");exit;}}function query_redirect($j,$ga,$va,$fd=true,$Ef=true,$bf=false){global$g,$n,$o;if($Ef){$bf=!$g->query($j);}$xd="";if($j){$xd=$o->messageQuery("$j;");}if($bf){$n=error().$xd;return false;}if($fd){redirect($ga,$va.$xd);}return true;}function queries($j=null){global$g;static$jb=array();if(!isset($j)){return implode(";\n",$jb);}$jb[]=(ereg(';$',$j)?"DELIMITER ;;\n$j;\nDELIMITER ":$j);return$g->query($j);}function apply_queries($j,$E,$Df='table'){foreach($E as$h){if(!queries("$j ".$Df($h))){return false;}}return true;}function queries_redirect($ga,$va,$fd){return query_redirect(queries(),$ga,$va,$fd,false,!$fd);}function remove_from_uri($Za=""){return substr(preg_replace("~(?<=[?&])($Za".(SID?"":"|".session_name()).")=[^&]*&~",'',"$_SERVER[REQUEST_URI]&"),0,-1);}function pagination($ca,$zf){return" ".($ca==$zf?$ca+1:''.($ca+1)."");}function get_file($d,$sd=false){$Ia=$_FILES[$d];if(!$Ia||$Ia["error"]){return$Ia["error"];}$c=file_get_contents($sd&&ereg('\\.gz$',$Ia["name"])?"compress.zlib://$Ia[tmp_name]":($sd&&ereg('\\.bz2$',$Ia["name"])?"compress.bzip2://$Ia[tmp_name]":$Ia["tmp_name"]));if($sd){$Fb=substr($c,0,3);if(function_exists("iconv")&&ereg("^\xFE\xFF|^\xFF\xFE",$Fb,$Xf)){$c=iconv("utf-16","utf-8",$c);}elseif($Fb=="\xEF\xBB\xBF"){$c=substr($c,3);}}return$c;}function upload_error($n){$gf=($n==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):null);return($n?lang(1).($gf?" ".lang(2,$gf):""):lang(3));}function odd($c=' class="odd"'){static$l=0;if(!$c){$l=-1;}return($l++% 2?$c:'');}function json_row($d,$b=null){static$Ba=true;if($Ba){echo"{";}if($d!=""){echo($Ba?"":",")."\n\t\"".addcslashes($d,"\r\n\"\\").'": '.(isset($b)?'"'.addcslashes($b,"\r\n\"\\").'"':'undefined');$Ba=false;}else{echo"\n}\n";$Ba=true;}}function is_utf8($b){return(preg_match('~~u',$b)&&!preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~',$b));}function repeat_pattern($ba,$W){return str_repeat("$ba{0,65535}",$W/65535)."$ba{0,".($W % 65535)."}";}function shorten_utf8($I,$W=80,$Af=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{FFFF}]",$W).")($)?)u",$I,$k)){preg_match("(^(".repeat_pattern("[\t\r\n -~]",$W).")($)?)",$I,$k);}return h($k[1]).$Af.(isset($k[2])?"":"...");}function friendly_url($b){return preg_replace('~[^a-z0-9_]~i','-',$b);}function hidden_fields($ub,$Qf=array()){while(list($d,$b)=each($ub)){if(is_array($b)){foreach($b as$Ma=>$y){$ub[$d."[$Ma]"]=$y;}}elseif(!in_array($d,$Qf)){echo'';}}}function hidden_fields_get(){echo(sid()?'':''),(SERVER!==null?'':""),'';}function column_foreign_keys($h){global$o;$c=array();foreach($o->foreignKeys($h)as$A){foreach($A["source"]as$b){$c[$b][]=$A;}}return$c;}function enum_input($z,$Ra,$e,$q,$hc=null){global$o;preg_match_all("~'((?:[^']|'')*)'~",$e["length"],$oa);$c=(isset($hc)?"":"");foreach($oa[1]as$l=>$b){$b=stripcslashes(str_replace("''","'",$b));$ab=(is_int($q)?$q==$l+1:(is_array($q)?in_array($l+1,$q):$q===$b));$c.=" ';}return$c;}function input($e,$q,$K){global$R,$o,$v;$f=h(bracket_escape($e["field"]));echo"";$De=($v=="mssql"&&$e["auto_increment"]);if($De&&!$_POST["save"]){$K=null;}$da=(isset($_GET["select"])||$De?array("orig"=>lang(5)):array())+$o->editFunctions($e);$Ra=" name='fields[$f]'";if($e["type"]=="enum"){echo nbsp($da[""])."".$o->editInput($_GET["edit"],$e,$Ra,$q);}else{$Ba=0;foreach($da as$d=>$b){if($d===""||!$b){break;}$Ba++;}$Qb=($Ba?" onchange=\"var f = this.form['function[".js_escape($f)."]']; if ($Ba > f.selectedIndex) f.selectedIndex = $Ba;\"":"");$Ra.=$Qb;echo(count($da)>1?adminer_html_select("function[$f]",$da,!isset($K)||in_array($K,$da)||isset($da[$K])?$K:"","functionChange(this);"):nbsp(reset($da))).'';$Ae=$o->editInput($_GET["edit"],$e,$Ra,$q);if($Ae!=""){echo$Ae;}elseif($e["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$e["length"],$oa);foreach($oa[1]as$l=>$b){$b=stripcslashes(str_replace("''","'",$b));$ab=(is_int($q)?($q>>$l)&1:in_array($b,explode(",",$q),true));echo" ';}}elseif(ereg('blob|bytea|raw|file',$e["type"])&&ini_bool("file_uploads")){echo"";}elseif(ereg('text|lob',$e["type"])){echo"';}else{$nd=(!ereg('int',$e["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$e["length"],$k)?((ereg("binary",$e["type"])?2:1)*$k[1]+($k[3]?1:0)+($k[2]&&!$e["unsigned"]?1:0)):($R[$e["type"]]?$R[$e["type"]]+($e["unsigned"]?0:1):0));echo"20?" size='40'":"")."$Ra>";}}}function process_input($e){global$o;$N=bracket_escape($e["field"]);$K=$_POST["function"][$N];$q=$_POST["fields"][$N];if($e["type"]=="enum"){if($q==-1){return false;}if($q==""){return"NULL";}return+$q;}if($e["auto_increment"]&&$q==""){return null;}if($K=="orig"){return false;}if($K=="NULL"){return"NULL";}if($e["type"]=="set"){return array_sum((array)$q);}if(ereg('blob|bytea|raw|file',$e["type"])&&ini_bool("file_uploads")){$Ia=get_file("fields-$N");if(!is_string($Ia)){return false;}return q($Ia);}return$o->processInput($e,$q,$K);}function search_tables(){global$o,$g;$_GET["where"][0]["op"]="LIKE %%";$_GET["where"][0]["val"]=$_POST["query"];$ta=false;foreach(table_status()as$h=>$D){$f=$o->tableName($D);if(isset($D["Engine"])&&$f!=""&&(!$_POST["tables"]||in_array($h,$_POST["tables"]))){$i=$g->query("SELECT".limit("1 FROM ".table($h)," WHERE ".implode(" AND ",$o->selectSearchProcess(fields($h),array())),1));if($i->fetch_row()){if(!$ta){echo"

    \n";$ta=true;}echo"
  • $f\n";}}}echo($ta?"
":"

".lang(6))."\n";}function dump_headers($Sc,$_d=false){global$o;$c=$o->dumpHeaders($Sc,$_d);$Na=$_POST["output"];if($Na!="text"){header("Content-Disposition: attachment; filename=".($Sc!=""?friendly_url($Sc):"dump").".$c".($Na!="file"&&!ereg('[^0-9a-z]',$Na)?".$Na":""));}session_write_close();return$c;}function dump_csv($a){foreach($a as$d=>$b){if(preg_match("~[\"\n,;\t]~",$b)||$b===""){$a[$d]='"'.str_replace('"','""',$b).'"';}}echo implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$a)."\r\n";}function apply_sql_function($K,$C){return($K?($K=="unixepoch"?"DATETIME($C, '$K')":($K=="count distinct"?"COUNT(DISTINCT ":strtoupper("$K("))."$C)"):$C);}function password_file(){$Rc=ini_get("upload_tmp_dir");if(!$Rc){if(function_exists('sys_get_temp_dir')){$Rc=sys_get_temp_dir();}else{$ja=@tempnam("","");if(!$ja){return false;}$Rc=dirname($ja);unlink($ja);}}$ja="$Rc/adminer.key";$c=@file_get_contents($ja);if($c){return$c;}$Pa=@fopen($ja,"w");if($Pa){$c=md5(uniqid(mt_rand(),true));fwrite($Pa,$c);fclose($Pa);}return$c;}function is_mail($xf){$Ne='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$vc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$ba="$Ne+(\\.$Ne+)*@($vc?\\.)+$vc";return preg_match("(^$ba(,\\s*$ba)*\$)i",$xf);}function is_url($I){$vc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return(preg_match("~^(https?)://($vc?\\.)+$vc(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$I,$k)?strtolower($k[1]):"");}function print_fieldset($S,$Of,$Kf=false){echo"

$Of
\n";}function selectSearchPrint($s,$B,$J){print_fieldset("search",lang(36),$s);foreach($J as$l=>$x){if($x["type"]=="FULLTEXT"){echo"(".implode(", ",array_map('h',$x["columns"])).") AGAINST"," ",checkbox("boolean[$l]",1,isset($_GET["boolean"][$l]),"BOOL"),"
\n";}}$l=0;foreach((array)$_GET["where"]as$b){if("$b[col]$b[val]"!=""&&in_array($b["op"],$this->operators)){echo"
",adminer_html_select("where[$l][op]",$this->operators,$b["op"]),"
\n";$l++;}}echo"
",adminer_html_select("where[$l][op]",$this->operators,"="),"
\n","\n";}function selectOrderPrint($Xa,$B,$J){print_fieldset("sort",lang(38),$Xa);$l=0;foreach((array)$_GET["order"]as$d=>$b){if(isset($B[$b])){echo"
",checkbox("desc[$l]",1,isset($_GET["desc"][$d]),lang(39))."
\n";$l++;}}echo"
","
\n";echo"\n";}function selectLimitPrint($O){echo"
".lang(40)."
";echo"","
\n";}function selectLengthPrint($Db){if(isset($Db)){echo"
".lang(41)."
",'',"
\n";}}function selectActionPrint(){echo"
".lang(42)."
","","
\n";}function selectEmailPrint($bg,$B){}function selectColumnsProcess($B,$J){global$da,$lb;$Q=array();$pa=array();foreach((array)$_GET["columns"]as$d=>$b){if($b["fun"]=="count"||(isset($B[$b["col"]])&&(!$b["fun"]||in_array($b["fun"],$da)||in_array($b["fun"],$lb)))){$Q[$d]=apply_sql_function($b["fun"],(isset($B[$b["col"]])?idf_escape($b["col"]):"*"));if(!in_array($b["fun"],$lb)){$pa[]=$Q[$d];}}}return array($Q,$pa);}function selectSearchProcess($p,$J){global$v;$c=array();foreach($J as$l=>$x){if($x["type"]=="FULLTEXT"&&$_GET["fulltext"][$l]!=""){$c[]="MATCH (".implode(", ",array_map('idf_escape',$x["columns"])).") AGAINST (".q($_GET["fulltext"][$l]).(isset($_GET["boolean"][$l])?" IN BOOLEAN MODE":"").")";}}foreach((array)$_GET["where"]as$b){if("$b[col]$b[val]"!=""&&in_array($b["op"],$this->operators)){$Ub=" $b[op]";if(ereg('IN$',$b["op"])){$Tb=process_length($b["val"]);$Ub.=" (".($Tb!=""?$Tb:"NULL").")";}elseif(!$b["op"]){$Ub.=$b["val"];}elseif($b["op"]=="LIKE %%"){$Ub=" LIKE ".$this->processInput($p[$b["col"]],"%$b[val]%");}elseif(!ereg('NULL$',$b["op"])){$Ub.=" ".$this->processInput($p[$b["col"]],$b["val"]);}if($b["col"]!=""){$c[]=idf_escape($b["col"]).$Ub;}else{$mb=array();foreach($p as$f=>$e){if(is_numeric($b["val"])||!ereg('int|float|double|decimal',$e["type"])){$f=idf_escape($f);$mb[]=($v=="sql"&&ereg('char|text|enum|set',$e["type"])&&!ereg('^utf8',$e["collation"])?"CONVERT($f USING utf8)":$f);}}$c[]=($mb?"(".implode("$Ub OR ",$mb)."$Ub)":"0");}}}return$c;}function selectOrderProcess($p,$J){$c=array();foreach((array)$_GET["order"]as$d=>$b){if(isset($p[$b])||preg_match('~^((COUNT\\(DISTINCT |[A-Z0-9_]+\\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\\)|COUNT\\(\\*\\))$~',$b)){$c[]=(isset($p[$b])?idf_escape($b):$b).(isset($_GET["desc"][$d])?" DESC":"");}}return$c;}function selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"30");}function selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function selectEmailProcess($s,$vf){return false;}function messageQuery($j){global$v;static$Qc=0;restart_session();$S="sql-".($Qc++);$eb=&get_session("queries");if(strlen($j)>1e6){$j=ereg_replace('[\x80-\xFF]+$','',substr($j,0,1e6))."\n...";}$eb[$_GET["db"]][]=$j;return" ".lang(43)."';}function editFunctions($e){global$Nb;$c=($e["null"]?"NULL/":"");foreach($Nb as$d=>$da){if(!$d||(!isset($_GET["call"])&&(isset($_GET["select"])||where($_GET)))){foreach($da as$ba=>$b){if(!$ba||ereg($ba,$e["type"])){$c.="/$b";}}if($d&&!ereg('set|blob|bytea|raw|file',$e["type"])){$c.="/=";}}}return explode("/",$c);}function editInput($h,$e,$Ra,$q){if($e["type"]=="enum"){return(isset($_GET["select"])?" ":"").($e["null"]?" ":"").enum_input("radio",$Ra,$e,$q,0);}return"";}function processInput($e,$q,$K=""){if($K=="="){return$q;}$f=$e["field"];$c=($e["type"]=="bit"&&ereg('^[0-9]+$',$q)?$q:q($q));if(ereg('^(now|getdate|uuid)$',$K)){$c="$K()";}elseif(ereg('^current_(date|timestamp)$',$K)){$c=$K;}elseif(ereg('^([+-]|\\|\\|)$',$K)){$c=idf_escape($f)." $K $c";}elseif(ereg('^[+-] interval$',$K)){$c=idf_escape($f)." $K ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+$~i",$q)?$q:$c);}elseif(ereg('^(addtime|subtime|concat)$',$K)){$c="$K(".idf_escape($f).", $c)";}elseif(ereg('^(md5|sha1|password|encrypt|hex)$',$K)){$c="$K($c)";}if(ereg("binary",$e["type"])){$c="unhex($c)";}return$c;}function dumpOutput(){$c=array('text'=>lang(44),'file'=>lang(45));if(function_exists('gzencode')){$c['gz']='gzip';}if(function_exists('bzcompress')){$c['bz2']='bzip2';}return$c;}function dumpFormat(){return array('sql'=>'SQL','csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function dumpTable($h,$V,$bd=false){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($V){dump_csv(array_keys(fields($h)));}}elseif($V){$la=create_sql($h,$_POST["auto_increment"]);if($la){if($V=="DROP+CREATE"){echo"DROP ".($bd?"VIEW":"TABLE")." IF EXISTS ".table($h).";\n";}if($bd){$la=preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\\1)',logged_user()).'`~','\\1',$la);}echo($V!="CREATE+ALTER"?$la:($bd?substr_replace($la," OR REPLACE",6,0):substr_replace($la," IF NOT EXISTS",12,0))).";\n\n";}if($V=="CREATE+ALTER"&&!$bd){$j="SELECT COLUMN_NAME, COLUMN_DEFAULT, IS_NULLABLE, COLLATION_NAME, COLUMN_TYPE, EXTRA, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($h)." ORDER BY ORDINAL_POSITION";echo"DELIMITER ;; CREATE PROCEDURE adminer_alter (INOUT alter_command text) BEGIN DECLARE _column_name, _collation_name, after varchar(64) DEFAULT ''; DECLARE _column_type, _column_default text; DECLARE _is_nullable char(3); DECLARE _extra varchar(30); DECLARE _column_comment varchar(255); DECLARE done, set_after bool DEFAULT 0; DECLARE add_columns text DEFAULT '";$p=array();$Jb="";foreach(get_rows($j)as$a){$za=$a["COLUMN_DEFAULT"];$a["default"]=(isset($za)?q($za):"NULL");$a["after"]=q($Jb);$a["alter"]=escape_string(idf_escape($a["COLUMN_NAME"])." $a[COLUMN_TYPE]".($a["COLLATION_NAME"]?" COLLATE $a[COLLATION_NAME]":"").(isset($za)?" DEFAULT ".($za=="CURRENT_TIMESTAMP"?$za:$a["default"]):"").($a["IS_NULLABLE"]=="YES"?"":" NOT NULL").($a["EXTRA"]?" $a[EXTRA]":"").($a["COLUMN_COMMENT"]?" COMMENT ".q($a["COLUMN_COMMENT"]):"").($Jb?" AFTER ".idf_escape($Jb):" FIRST"));echo", ADD $a[alter]";$p[]=$a;$Jb=$a["COLUMN_NAME"];}echo"'; DECLARE columns CURSOR FOR $j; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; SET @alter_table = ''; OPEN columns; REPEAT FETCH columns INTO _column_name, _column_default, _is_nullable, _collation_name, _column_type, _extra, _column_comment; IF NOT done THEN SET set_after = 1; CASE _column_name";foreach($p as$a){echo" WHEN ".q($a["COLUMN_NAME"])." THEN SET add_columns = REPLACE(add_columns, ', ADD $a[alter]', ''); IF NOT (_column_default <=> $a[default]) OR _is_nullable != '$a[IS_NULLABLE]' OR _collation_name != '$a[COLLATION_NAME]' OR _column_type != ".q($a["COLUMN_TYPE"])." OR _extra != '$a[EXTRA]' OR _column_comment != ".q($a["COLUMN_COMMENT"])." OR after != $a[after] THEN SET @alter_table = CONCAT(@alter_table, ', MODIFY $a[alter]'); END IF;";}echo" ELSE SET @alter_table = CONCAT(@alter_table, ', DROP ', _column_name); SET set_after = 0; END CASE; IF set_after THEN SET after = _column_name; END IF; END IF; UNTIL done END REPEAT; CLOSE columns; IF @alter_table != '' OR add_columns != '' THEN SET alter_command = CONCAT(alter_command, 'ALTER TABLE ".table($h)."', SUBSTR(CONCAT(add_columns, @alter_table), 2), ';\\n'); END IF; END;; DELIMITER ; CALL adminer_alter(@adminer_alter); DROP PROCEDURE adminer_alter; ";}}}function dumpData($h,$V,$j){global$g,$v;$Ke=($v=="sqlite"?0:1048576);if($V){if($_POST["format"]=="sql"&&$V=="TRUNCATE+INSERT"){echo truncate_sql($h).";\n";}if($_POST["format"]=="sql"){$p=fields($h);}$i=$g->query($j,1);if($i){$sc="";$kb="";while($a=$i->fetch_assoc()){if($_POST["format"]!="sql"){if($V=="table"){dump_csv(array_keys($a));$V="INSERT";}dump_csv($a);}else{if(!$sc){$sc="INSERT INTO ".table($h)." (".implode(", ",array_map('idf_escape',array_keys($a))).") VALUES";}foreach($a as$d=>$b){$a[$d]=(isset($b)?(ereg('int|float|double|decimal',$p[$d]["type"])?$b:q($b)):"NULL");}$ma=implode(",\t",$a);if($V=="INSERT+UPDATE"){$r=array();foreach($a as$d=>$b){$r[]=idf_escape($d)." = $b";}echo"$sc ($ma) ON DUPLICATE KEY UPDATE ".implode(", ",$r).";\n";}else{$ma=($Ke?"\n":" ")."($ma)";if(!$kb){$kb=$sc.$ma;}elseif(strlen($kb)+2+strlen($ma)<$Ke){$kb.=",$ma";}else{$kb.=";\n";echo$kb;$kb=$sc.$ma;}}}}if($_POST["format"]=="sql"&&$V!="INSERT+UPDATE"&&$kb){$kb.=";\n";echo$kb;}}elseif($_POST["format"]=="sql"){echo"-- ".str_replace("\n"," ",$g->error)."\n";}}}function dumpHeaders($Sc,$_d=false){$Na=$_POST["output"];$Hb=($_POST["format"]=="sql"?"sql":($_d?"tar":"csv"));header("Content-Type: ".($Na=="bz2"?"application/x-bzip":($Na=="gz"?"application/x-gzip":($Hb=="tar"?"application/x-tar":($Hb=="sql"||$Na!="file"?"text/plain":"text/csv")."; charset=utf-8"))));if($Na=="bz2"){ob_start('bzcompress',1e6);}if($Na=="gz"){ob_start('gzencode',1e6);}return$Hb;}function homepage(){echo'

'.($_GET["ns"]==""?''.lang(46)."\n":"");if(support("scheme")){echo"".($_GET["ns"]!=""?lang(47):lang(48))."\n";}return true;}function navigation($Zb){global$tc,$g,$M,$v,$na;echo'

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

';if($Zb=="auth"){$Ba=true;foreach((array)$_SESSION["pwds"]as$Ib=>$Uf){foreach($Uf as$F=>$Nf){foreach($Nf as$P=>$T){if(isset($T)){if($Ba){echo"

\n";$Ba=false;}echo"($na[$Ib]) ".h($P.($F!=""?"@$F":""))."
\n";}}}}}else{$_=get_databases();echo'

';if(DB==""||!$Zb){echo"".lang(43)."\n";if(support("dump")){echo"".lang(49)."\n";}}echo'

';hidden_fields_get();echo($_?adminer_html_select("db",array(""=>"(".lang(51).")")+$_,DB,"this.form.submit();"):''),' ';if($Zb!="db"&&DB!=""&&$g->select_db(DB)){if(support("scheme")){echo"
".adminer_html_select("ns",array(""=>"(".lang(52).")")+schemas(),$_GET["ns"],"this.form.submit();");if($_GET["ns"]!=""){set_schema($_GET["ns"]);}}if($_GET["ns"]!==""&&!$Zb){echo'

".lang(53)."\n";$E=tables_list();if(!$E){echo"

".lang(6)."\n";}else{$this->tablesPrint($E);$Ja=array();foreach($E as$h=>$z){$Ja[]=preg_quote($h,'/');}echo"\n";}}}echo(isset($_GET["sql"])?'':(isset($_GET["schema"])?'':(isset($_GET["dump"])?'':""))),"

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

\n";foreach($E as$h=>$z){echo'".lang(54)." ",'".$this->tableName(array("Name"=>$h))."
\n";}}}$o=(function_exists('adminer_object')?adminer_object():new Adminer);if(!isset($o->operators)){$o->operators=$gc;}function page_header($Je,$n="",$pc=array(),$Ie=""){global$ua,$o,$g,$na;header("Content-Type: text/html; charset=utf-8");$o->headers();$He=$Je.($Ie!=""?": ".h($Ie):"");$Le=strip_tags($He.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$o->name());if(is_ajax()){header("X-AJAX-Title: ".rawurlencode($Le));}else{echo' ',$Le,' ';if($o->head()&&file_exists("adminer.css")){echo' ';}echo' ">

'.$na[DRIVER].' » ';$w=substr(preg_replace('~(db|ns)=[^&]*&~','',ME),0,-1);$F=(SERVER!=""?h(SERVER):lang(20));if($pc===false){echo"$F\n";}else{echo"$F » ";if($_GET["ns"]!=""||(DB!=""&&is_array($pc))){echo''.h(DB).' » ';}if(is_array($pc)){if($_GET["ns"]!=""){echo''.h($_GET["ns"]).' » ';}foreach($pc as$d=>$b){$rc=(is_array($b)?$b[1]:$b);if($rc!=""){echo''.h($rc).' » ';}}}echo"$Je\n";}}echo"\n","

$He

\n";restart_session();$Me=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Qe=$_SESSION["messages"][$Me];if($Qe){echo"
".implode("
\n
",$Qe)."
\n";unset($_SESSION["messages"][$Me]);}$_=&get_session("dbs");if(DB!=""&&$_&&!in_array(DB,$_,true)){$_=null;}if($n){echo"
$n
\n";}define("PAGE_HEADER",1);}function page_footer($Zb=""){global$o;if(!is_ajax()){echo'
';switch_lang();echo' ';}}function int32($fa){while($fa>=2147483648){$fa-=4294967296;}while($fa<=-2147483649){$fa+=4294967296;}return(int)$fa;}function long2str($y,$Hd){$ma='';foreach($y as$b){$ma.=pack('V',$b);}if($Hd){return substr($ma,0,end($y));}return$ma;}function str2long($ma,$Hd){$y=array_values(unpack('V*',str_pad($ma,4*ceil(strlen($ma)/4),"\0")));if($Hd){$y[]=strlen($ma);}return$y;}function xxtea_mx($Ca,$xa,$Fa,$Ma){return int32((($Ca>>5&0x7FFFFFF)^$xa<<2)+(($xa>>3&0x1FFFFFFF)^$Ca<<4))^int32(($Fa^$xa)+($Ma^$Ca));}function encrypt_string($Fc,$d){if($Fc==""){return"";}$d=array_values(unpack("V*",pack("H*",md5($d))));$y=str2long($Fc,true);$fa=count($y)-1;$Ca=$y[$fa];$xa=$y[0];$aa=floor(6+52/($fa+1));$Fa=0;while($aa-->0){$Fa=int32($Fa+0x9E3779B9);$Ec=$Fa>>2&3;for($wa=0;$wa<$fa;$wa++){$xa=$y[$wa+1];$Mb=xxtea_mx($Ca,$xa,$Fa,$d[$wa&3^$Ec]);$Ca=int32($y[$wa]+$Mb);$y[$wa]=$Ca;}$xa=$y[0];$Mb=xxtea_mx($Ca,$xa,$Fa,$d[$wa&3^$Ec]);$Ca=int32($y[$fa]+$Mb);$y[$fa]=$Ca;}return long2str($y,false);}function decrypt_string($Fc,$d){if($Fc==""){return"";}$d=array_values(unpack("V*",pack("H*",md5($d))));$y=str2long($Fc,false);$fa=count($y)-1;$Ca=$y[$fa];$xa=$y[0];$aa=floor(6+52/($fa+1));$Fa=int32($aa*0x9E3779B9);while($Fa){$Ec=$Fa>>2&3;for($wa=$fa;$wa>0;$wa--){$Ca=$y[$wa-1];$Mb=xxtea_mx($Ca,$xa,$Fa,$d[$wa&3^$Ec]);$xa=int32($y[$wa]-$Mb);$y[$wa]=$xa;}$Ca=$y[$fa];$Mb=xxtea_mx($Ca,$xa,$Fa,$d[$wa&3^$Ec]);$xa=int32($y[0]-$Mb);$y[0]=$xa;$Fa=int32($Fa-0x9E3779B9);}return long2str($y,true);}$g='';$M=$_SESSION["token"];if(!$_SESSION["token"]){$_SESSION["token"]=rand(1,1e6);}$_b=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$b){list($d)=explode(":",$b);$_b[$d]=$b;}}if(isset($_POST["server"])){session_regenerate_id();$_SESSION["pwds"][$_POST["driver"]][$_POST["server"]][$_POST["username"]]=$_POST["password"];if($_POST["permanent"]){$d=base64_encode($_POST["driver"])."-".base64_encode($_POST["server"])."-".base64_encode($_POST["username"]);$Vc=$o->permanentLogin();$_b[$d]="$d:".base64_encode($Vc?encrypt_string($_POST["password"],$Vc):"");cookie("adminer_permanent",implode(" ",$_b));}if(count($_POST)==($_POST["permanent"]?5:4)||DRIVER!=$_POST["driver"]||SERVER!=$_POST["server"]||$_GET["username"]!==$_POST["username"]){redirect(auth_url($_POST["driver"],$_POST["server"],$_POST["username"]));}}elseif($_POST["logout"]){if($M&&$_POST["token"]!=$M){page_header(lang(50),lang(57));page_footer("db");exit;}else{foreach(array("pwds","dbs","queries")as$d){set_session($d,null);}$d=base64_encode(DRIVER)."-".base64_encode(SERVER)."-".base64_encode($_GET["username"]);if($_b[$d]){unset($_b[$d]);cookie("adminer_permanent",implode(" ",$_b));}redirect(substr(preg_replace('~(username|db|ns)=[^&]*&~','',ME),0,-1),lang(58));}}elseif($_b&&!$_SESSION["pwds"]){session_regenerate_id();$Vc=$o->permanentLogin();foreach($_b as$d=>$b){list(,$Pf)=explode(":",$b);list($Ib,$F,$P)=array_map('base64_decode',explode("-",$d));$_SESSION["pwds"][$Ib][$F][$P]=decrypt_string(base64_decode($Pf),$Vc);}}function auth_error($ze=null){global$g,$o,$M;$Tc=session_name();$n="";if(!$_COOKIE[$Tc]&&$_GET[$Tc]&&ini_bool("session.use_only_cookies")){$n=lang(59);}elseif(isset($_GET["username"])){if(($_COOKIE[$Tc]||$_GET[$Tc])&&!$M){$n=lang(60);}else{$T=&get_session("pwds");if(isset($T)){$n=h($ze?$ze->getMessage():(is_string($g)?$g:lang(61)));$T=null;}}}page_header(lang(23),$n,null);echo"
\n";$o->loginForm();echo"
";hidden_fields($_POST,array("driver","server","username","password","permanent"));echo"
\n","
\n";page_footer("auth");}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);page_header(lang(62),lang(63,implode(", ",$oc)),false);page_footer("auth");exit;}$g=connect();}if(is_string($g)||!$o->login($_GET["username"],get_session("pwds"))){auth_error();exit;}$M=$_SESSION["token"];if(isset($_POST["server"])&&$_POST["token"]){$_POST["token"]=$M;}$n=($_POST?($_POST["token"]==$M?"":lang(57)):($_SERVER["REQUEST_METHOD"]!="POST"?"":lang(64,'"post_max_size"')));function connect_error(){global$g,$M,$n,$na;$_=array();if(DB!=""){page_header(lang(65).": ".h(DB),lang(66),true);}else{if($_POST["db"]&&!$n){queries_redirect(substr(ME,0,-1),lang(67),drop_databases($_POST["db"]));}page_header(lang(68),$n,false);echo"

".lang(69)."\n";foreach(array('privileges'=>lang(70),'processlist'=>lang(71),'variables'=>lang(72),'status'=>lang(73),)as$d=>$b){if(support($d)){echo"$b\n";}}echo"

".lang(74,$na[DRIVER],"$g->server_info","$g->extension")."\n","

".lang(75,"".h(logged_user())."")."\n";if($_GET["refresh"]){set_session("dbs",null);}$_=get_databases();if($_){$Ed=support("scheme");$Z=collations();echo"

\n","\n","\n";foreach($_ as$t){$Jd=h(ME)."db=".urlencode($t);echo"
 ".lang(65)."".lang(76)."".lang(77)."
".checkbox("db[]",$t,in_array($t,(array)$_POST["db"])),"".h($t)."","".nbsp(db_collation($t,$Z))."","?","\n";}echo"
\n","

\n";echo"\n","".lang(79)."\n","

\n";}}page_footer("db");if($_){echo"\n";}}if(isset($_GET["status"])){$_GET["variables"]=$_GET["status"];}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")){if(DB!=""){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"])){page_header(lang(80).": ".h($_GET["ns"]),lang(81),true);page_footer("ns");exit;}}function select($i,$G=null,$ye=""){$Ja=array();$J=array();$B=array();$xe=array();$R=array();odd('');for($l=0;$a=$i->fetch_row();$l++){if(!$l){echo"\n","";for($ra=0;$rafetch_field();$Da=$e->orgtable;$Bc=$e->orgname;if($Da!=""){if(!isset($J[$Da])){$J[$Da]=array();foreach(indexes($Da,$G)as$x){if($x["type"]=="PRIMARY"){$J[$Da]=array_flip($x["columns"]);break;}}$B[$Da]=$J[$Da];}if(isset($B[$Da][$Bc])){unset($B[$Da][$Bc]);$J[$Da][$Bc]=$ra;$Ja[$ra]=$Da;}}if($e->charsetnr==63){$xe[$ra]=true;}$R[$ra]=$e->type;$f=h($e->name);echo"name!=$Bc?" title='".h(($Da!=""?"$Da.":"").$Bc)."'":"").">".($ye?"$f":$f);}echo"\n";}echo"";foreach($a as$d=>$b){if(!isset($b)){$b="NULL";}else{if($xe[$d]&&!is_utf8($b)){$b="".lang(32,strlen($b))."";}elseif(!strlen($b)){$b=" ";}else{$b=h($b);if($R[$d]==254){$b="$b";}}if(isset($Ja[$d])&&!$B[$Ja[$d]]){$w="edit=".urlencode($Ja[$d]);foreach($J[$Ja[$d]]as$Pc=>$ra){$w.="&where".urlencode("[".bracket_escape($Pc)."]")."=".urlencode($a[$ra]);}$b="$b";}}echo"
$b";}}echo($l?"
":"

".lang(82))."\n";}function referencable_primary($Tf){$c=array();foreach(table_status()as$Ea=>$h){if($Ea!=$Tf&&fk_support($h)){foreach(fields($Ea)as$e){if($e["primary"]){if($c[$Ea]){unset($c[$Ea]);break;}$c[$Ea]=$e;}}}}return$c;}function textarea($f,$q,$H=10,$mb=80){echo"";}function format_time($Fb,$Cc){return" (".lang(83,max(0,$Cc[0]-$Fb[0]+$Cc[1]-$Fb[1])).")";}function edit_type($d,$e,$Z,$ha=array()){global$La,$R,$ob,$fb;echo' ',"',($ob?"':''),($ha?" ":" ");}function process_length($W){global$Gb;return(preg_match("~^\\s*(?:$Gb)(?:\\s*,\\s*(?:$Gb))*\\s*\$~",$W)&&preg_match_all("~$Gb~",$W,$oa)?implode(",",$oa[0]):preg_replace('~[^0-9,+-]~','',$W));}function process_type($e,$Dc="COLLATE"){global$ob;return" $e[type]".($e["length"]!=""?"(".process_length($e["length"]).")":"").(ereg('int|float|double|decimal',$e["type"])&&in_array($e["unsigned"],$ob)?" $e[unsigned]":"").(ereg('char|text|enum|set',$e["type"])&&$e["collation"]?" $Dc ".q($e["collation"]):"");}function process_field($e,$Uc){return array(idf_escape($e["field"]),process_type($Uc),($e["null"]?" NULL":" NOT NULL"),(isset($e["default"])?" DEFAULT ".($e["type"]=="timestamp"&&eregi("^CURRENT_TIMESTAMP$",$e["default"])?$e["default"]:q($e["default"])):""),($e["on_update"]?" ON UPDATE $e[on_update]":""),(support("comment")&&$e["comment"]!=""?" COMMENT ".q($e["comment"]):""),($e["auto_increment"]?auto_increment():null),);}function type_class($z){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$d=>$b){if(ereg("$d|$b",$z)){return" class='$d'";}}}function edit_fields($p,$Z,$z="TABLE",$we=0,$ha=array(),$Kb=false){global$jc;foreach($p as$e){if($e["comment"]!=""){$Kb=true;break;}}echo' ';if($z=="PROCEDURE"){echo' ';}echo'',($z=="TABLE"?lang(87):lang(88)),'',lang(89),' ',lang(90),'',lang(91);if($z=="TABLE"){echo'NULL AI ',lang(93),(support("comment")?"

".lang(94).": ".h($_a)."\n";}if($p){echo"\n","\n";foreach($p as$e){echo"
".lang(101)."".lang(89).(support("comment")?"".lang(94):"")."
".h($e["field"]),"".h($e["full_type"]).($e["null"]?" NULL":"").($e["auto_increment"]?" ".lang(92)."":""),(support("comment")?"".nbsp($e["comment"]):""),"\n";}echo"
\n";if(!is_view($D)){echo"

".lang(102)."

\n";$J=indexes($m);if($J){echo"\n";foreach($J as$f=>$x){ksort($x["columns"]);$zb=array();foreach($x["columns"]as$d=>$b){$zb[]="".h($b)."".($x["lengths"][$d]?"(".$x["lengths"][$d].")":"");}echo"
$x[type]".implode(", ",$zb)."\n";}echo"
\n";}echo'

'.lang(103)."\n";if(fk_support($D)){echo"

".lang(84)."

\n";$ha=foreign_keys($m);if($ha){echo"\n","\n";foreach($ha as$f=>$A){$w=($A["db"]!=""?"".h($A["db"]).".":"").h($A["table"]);echo"","
".lang(104)."".lang(105)."".lang(86)."".lang(106).($v!="sqlite"?" ":"")."
".implode(", ",array_map('h',$A["source"]))."","$w","(".implode(", ",array_map('h',$A["target"])).")","$A[on_delete]\n","$A[on_update]\n";if($v!="sqlite"){echo''.lang(107).'';}}echo"
\n";}if($v!="sqlite"){echo'

'.lang(108)."\n";}}if(support("trigger")){echo"

".lang(109)."

\n";$Mc=triggers($m);if($Mc){echo"\n";foreach($Mc as$d=>$b){echo"
$b[0]$b[1]".h($d)."".lang(107)."\n";}echo"
\n";}echo'

'.lang(110)."\n";}}}}elseif(isset($_GET["schema"])){page_header(lang(111),"",array(),DB);$sb=array();$ve=array();$f="adminer_schema";$hf=($_GET["schema"]?$_GET["schema"]:$_COOKIE[($_COOKIE["$f-".DB]?"$f-".DB:$f)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$hf,$oa,PREG_SET_ORDER);foreach($oa as$l=>$k){$sb[$k[1]]=array($k[2],$k[3]);$ve[]="\n\t'".js_escape($k[1])."': [ $k[2], $k[3] ]";}$Wb=0;$cf=-1;$Ka=array();$df=array();$We=array();foreach(table_status()as$a){if(!isset($a["Engine"])){continue;}$uc=0;$Ka[$a["Name"]]["fields"]=array();foreach(fields($a["Name"])as$f=>$e){$uc+=1.25;$e["pos"]=$uc;$Ka[$a["Name"]]["fields"][$f]=$e;}$Ka[$a["Name"]]["pos"]=($sb[$a["Name"]]?$sb[$a["Name"]]:array($Wb,0));foreach($o->foreignKeys($a["Name"])as$b){if(!$b["db"]){$Aa=$cf;if($sb[$a["Name"]][1]||$sb[$b["table"]][1]){$Aa=min(floatval($sb[$a["Name"]][1]),floatval($sb[$b["table"]][1]))-1;}else{$cf-=.1;}while($We[(string)$Aa]){$Aa-=.0001;}$Ka[$a["Name"]]["references"][$b["table"]][(string)$Aa]=array($b["source"],$b["target"]);$df[$b["table"]][$a["Name"]][(string)$Aa]=$b["target"];$We[(string)$Aa]=true;}}$Wb=max($Wb,$Ka[$a["Name"]]["pos"][0]+2.5+$uc);}echo'

';foreach($Ka as$f=>$h){echo"
",''.h($f)."
\n";foreach($h["fields"]as$e){$b=''.h($e["field"]).'';echo($e["primary"]?"$b":$b)."
\n";}foreach((array)$h["references"]as$Vb=>$_c){foreach($_c as$Aa=>$hd){$wc=$Aa-$sb[$f][1];$l=0;foreach($hd[0]as$Ga){echo"
\n";}}}foreach((array)$df[$f]as$Vb=>$_c){foreach($_c as$Aa=>$B){$wc=$Aa-$sb[$f][1];$l=0;foreach($B as$ea){echo"
\n";}}}echo"
\n";}foreach($Ka as$f=>$h){foreach((array)$h["references"]as$Vb=>$_c){foreach($_c as$Aa=>$hd){$ed=$Wb;$ud=-10;foreach($hd[0]as$d=>$Ga){$Te=$h["pos"][0]+$h["fields"][$Ga]["pos"];$Xe=$Ka[$Vb]["pos"][0]+$Ka[$Vb]["fields"][$hd[1][$d]]["pos"];$ed=min($ed,$Te,$Xe);$ud=max($ud,$Te,$Xe);}echo"
\n";}}}echo'

',lang(112),' ';}elseif(isset($_GET["dump"])){$m=$_GET["dump"];if($_POST){$Ye="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$d){$Ye.="&$d=".urlencode($_POST[$d]);}cookie("adminer_export",substr($Ye,1));$Hb=dump_headers(($m!=""?$m:DB),(DB==""||count((array)$_POST["tables"]+(array)$_POST["data"])>1));$tb=($_POST["format"]=="sql");if($tb){echo"-- Adminer $tc ".$na[DRIVER]." dump ".($v!="sql"?"":"SET NAMES utf8; SET foreign_key_checks = 0; SET time_zone = ".q($g->result("SELECT @@time_zone"))."; SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; ");}$V=$_POST["db_style"];$_=array(DB);if(DB==""){$_=$_POST["databases"];if(is_string($_)){$_=explode("\n",rtrim(str_replace("\r","",$_),"\n"));}}foreach((array)$_ as$t){if($g->select_db($t)){if($tb&&ereg('CREATE',$V)&&($la=$g->result("SHOW CREATE DATABASE ".idf_escape($t),1))){if($V=="DROP+CREATE"){echo"DROP DATABASE IF EXISTS ".idf_escape($t).";\n";}echo($V=="CREATE+ALTER"?preg_replace('~^CREATE DATABASE ~','\\0IF NOT EXISTS ',$la):$la).";\n";}if($tb){if($V){echo use_sql($t).";\n\n";}if(in_array("CREATE+ALTER",array($V,$_POST["table_style"]))){echo"SET @adminer_alter = '';\n\n";}$qb="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$Ta){foreach(get_rows("SHOW $Ta STATUS WHERE Db = ".q($t),null,"-- ")as$a){$qb.=($V!='DROP+CREATE'?"DROP $Ta IF EXISTS ".idf_escape($a["Name"]).";;\n":"").$g->result("SHOW CREATE $Ta ".idf_escape($a["Name"]),2).";;\n\n";}}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$a){$qb.=($V!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($a["Name"]).";;\n":"").$g->result("SHOW CREATE EVENT ".idf_escape($a["Name"]),3).";;\n\n";}}if($qb){echo"DELIMITER ;;\n\n$qb"."DELIMITER ;\n\n";}}if($_POST["table_style"]||$_POST["data_style"]){$X=array();foreach(table_status()as$a){$h=(DB==""||in_array($a["Name"],(array)$_POST["tables"]));$Ze=(DB==""||in_array($a["Name"],(array)$_POST["data"]));if($h||$Ze){if(!is_view($a)){if($Hb=="tar"){ob_start();}$o->dumpTable($a["Name"],($h?$_POST["table_style"]:""));if($Ze){$o->dumpData($a["Name"],$_POST["data_style"],"SELECT * FROM ".table($a["Name"]));}if($tb&&$_POST["triggers"]&&$h&&($Mc=trigger_sql($a["Name"],$_POST["table_style"]))){echo"\nDELIMITER ;;\n$Mc\nDELIMITER ;\n";}if($Hb=="tar"){echo tar_file((DB!=""?"":"$t/")."$a[Name].csv",ob_get_clean());}elseif($tb){echo"\n";}}elseif($tb){$X[]=$a["Name"];}}}foreach($X as$cc){$o->dumpTable($cc,$_POST["table_style"],true);}if($Hb=="tar"){echo pack("x512");}}if($V=="CREATE+ALTER"&&$tb){$j="SELECT TABLE_NAME, ENGINE, TABLE_COLLATION, TABLE_COMMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE()";echo"DELIMITER ;; CREATE PROCEDURE adminer_alter (INOUT alter_command text) BEGIN DECLARE _table_name, _engine, _table_collation varchar(64); DECLARE _table_comment varchar(64); DECLARE done bool DEFAULT 0; DECLARE tables CURSOR FOR $j; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; OPEN tables; REPEAT FETCH tables INTO _table_name, _engine, _table_collation, _table_comment; IF NOT done THEN CASE _table_name";foreach(get_rows($j)as$a){$_a=q($a["ENGINE"]=="InnoDB"?preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$a["TABLE_COMMENT"]):$a["TABLE_COMMENT"]);echo" WHEN ".q($a["TABLE_NAME"])." THEN ".(isset($a["ENGINE"])?"IF _engine != '$a[ENGINE]' OR _table_collation != '$a[TABLE_COLLATION]' OR _table_comment != $_a THEN ALTER TABLE ".idf_escape($a["TABLE_NAME"])." ENGINE=$a[ENGINE] COLLATE=$a[TABLE_COLLATION] COMMENT=$_a; END IF":"BEGIN END").";";}echo" ELSE SET alter_command = CONCAT(alter_command, 'DROP TABLE `', REPLACE(_table_name, '`', '``'), '`;\\n'); END CASE; END IF; UNTIL done END REPEAT; CLOSE tables; END;; DELIMITER ; CALL adminer_alter(@adminer_alter); DROP PROCEDURE adminer_alter; ";}if(in_array("CREATE+ALTER",array($V,$_POST["table_style"]))&&$tb){echo"SELECT @adminer_alter;\n";}}}if($tb){echo"-- ".$g->result("SELECT NOW()")."\n";}exit;}page_header(lang(113),"",($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),DB);echo'

';$Ge=array('','USE','DROP+CREATE','CREATE');$se=array('','DROP+CREATE','CREATE');$Vd=array('','TRUNCATE+INSERT','INSERT');if($v=="sql"){$Ge[]='CREATE+ALTER';$se[]='CREATE+ALTER';$Vd[]='INSERT+UPDATE';}parse_str($_COOKIE["adminer_export"],$a);if(!$a){$a=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");}if(!isset($a["events"])){$a["routines"]=$a["events"]=($_GET["dump"]=="");$a["auto_increment"]=$a["triggers"]=$a["table_style"];}echo"
".lang(114)."".adminer_html_select("output",$o->dumpOutput(),$a["output"],0)."\n";echo"
".lang(115)."".adminer_html_select("format",$o->dumpFormat(),$a["format"],0)."\n";echo($v=="sqlite"?"":"
".lang(65)."".adminer_html_select('db_style',$Ge,$a["db_style"]).(support("routine")?checkbox("routines",1,$a["routines"],lang(116)):"").(support("event")?checkbox("events",1,$a["events"],lang(117)):"")),"
".lang(77)."".adminer_html_select('table_style',$se,$a["table_style"]).checkbox("auto_increment",1,$a["auto_increment"],lang(92)).(support("trigger")?checkbox("triggers",1,$a["triggers"],lang(109)):""),"
".lang(118)."".adminer_html_select('data_style',$Vd,$a["data_style"]),'

';$kd=array();if(DB!=""){$ab=($m!=""?"":" checked");echo"","\n";$X="";foreach(table_status()as$a){$f=$a["Name"];$zc=ereg_replace("_.*","",$f);$ab=($m==""||$m==(substr($m,-1)=="%"?"$zc%":$f));$zb="\n";$_=get_databases();if($_){foreach($_ as$t){if(!information_schema($t)){$zc=ereg_replace("_.*","",$t);echo"
","","
".checkbox("tables[]",$f,$ab,$f,"formUncheck('check-tables');");if(is_view($a)){$X.="$zb\n";}else{echo"$zb\n";}$kd[$zc]++;}echo$X;}else{echo"
".checkbox("databases[]",$t,$m==""||$m=="$zc%",$t,"formUncheck('check-databases');")."\n";$kd[$zc]++;}}}else{echo"
";}}echo'

';$Ba=true;foreach($kd as$d=>$b){if($d!=""&&$b>1){echo($Ba?"

":" ")."".h($d)."";$Ba=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(70));$i=$g->query("SELECT User, Host FROM mysql.user ORDER BY Host, User");if(!$i){echo'

';hidden_fields_get();echo lang(21),': ',lang(20),':

';$i=$g->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");}echo"\n","\n";while($a=$i->fetch_assoc()){echo'
 ".lang(21)."".lang(20)."
'.lang(119).''.h($a["User"])."".h($a["Host"])."\n";}echo"
\n",'

'.lang(120)."";}elseif(isset($_GET["sql"])){if(!$n&&$_POST["export"]){dump_headers("sql");$o->dumpTable("","");$o->dumpData("","table",$_POST["query"]);exit;}restart_session();$Ff=&get_session("queries");$eb=&$Ff[DB];if(!$n&&$_POST["clear"]){$eb=array();redirect(remove_from_uri("history"));}page_header(lang(43),$n);if(!$n&&$_POST){$Pa=false;$j=$_POST["query"];if($_POST["webfile"]){$Pa=@fopen((file_exists("adminer.sql")?"adminer.sql":(file_exists("adminer.sql.gz")?"compress.zlib://adminer.sql.gz":"compress.bzip2://adminer.sql.bz2")),"rb");$j=($Pa?fread($Pa,1e6):false);}elseif($_FILES&&$_FILES["sql_file"]["error"]!=4){$j=get_file("sql_file",true);}if(is_string($j)){if(function_exists('memory_get_usage')){@ini_set("memory_limit",2*strlen($j)+memory_get_usage()+8e6);}if($j!=""&&strlen($j)<1e6){$aa=$j.(ereg(';$',$j)?"":";");if(!$eb||end($eb)!=$aa){$eb[]=$aa;}}$yc="(?:\\s|/\\*.*\\*/|(?:#|-- )[^\n]*\n|--\n)";if(!ini_bool("session.use_cookies")){session_write_close();}$ld=";";$L=0;$hc=true;$G=connect();if(is_object($G)&&DB!=""){$G->select_db(DB);}$Ab=0;$Zc=array();$Gf='[\'`"]'.($v=="pgsql"?'|\\$[^$]*\\$':($v=="mssql"||$v=="sqlite"?'|\\[':'')).'|/\\*|-- |#';$Hf=explode(" ",microtime());parse_str($_COOKIE["adminer_export"],$Xb);$Rd=$o->dumpFormat();unset($Rd["sql"]);while($j!=""){if(!$L&&$v=="sql"&&preg_match("~^$yc*DELIMITER\\s+(.+)~i",$j,$k)){$ld=$k[1];$j=substr($j,strlen($k[0]));}else{preg_match('('.preg_quote($ld)."|$Gf|\$)",$j,$k,PREG_OFFSET_CAPTURE,$L);$ta=$k[0][0];$L=$k[0][1]+strlen($ta);if(!$ta&&$Pa&&!feof($Pa)){$j.=fread($Pa,1e5);}else{if(!$ta&&rtrim($j)==""){break;}if($ta&&$ta!=$ld){while(preg_match('('.($ta=='/*'?'\\*/':($ta=='['?']':(ereg('^-- |^#',$ta)?"\n":preg_quote($ta)."|\\\\."))).'|$)s',$j,$k,PREG_OFFSET_CAPTURE,$L)){$ma=$k[0][0];$L=$k[0][1]+strlen($ma);if(!$ma&&$Pa&&!feof($Pa)){$j.=fread($Pa,1e6);}elseif($ma[0]!="\\"){break;}}}else{$hc=false;$aa=substr($j,0,$k[0][1]);$Ab++;$zb="

".shorten_utf8(trim($aa),1000)."
\n";if(!$_POST["only_errors"]){echo$zb;ob_flush();flush();}$Fb=explode(" ",microtime());if($g->multi_query($aa)){if(is_object($G)&&preg_match("~^$yc*USE\\b~isU",$aa)){$G->query($aa);}do{$i=$g->store_result();$Cc=explode(" ",microtime());$Qd=format_time($Fb,$Cc).(strlen($aa)<1000?" ".lang(31)."":"");if(!is_object($i)){if(preg_match("~^$yc*(CREATE|DROP|ALTER)$yc+(DATABASE|SCHEMA)\\b~isU",$aa)){restart_session();set_session("dbs",null);session_write_close();}if(!$_POST["only_errors"]){echo"

".lang(121,$g->affected_rows)."$Qd\n";}}else{select($i,$G);if(!$_POST["only_errors"]){echo"

\n","

".($i->num_rows?lang(122,$i->num_rows):"").$Qd;$S="export-$Ab";$Od=", ".lang(113)."";if($G&&preg_match("~^($yc|\\()*SELECT\\b~isU",$aa)&&($Cf=explain($G,$aa))){$S="explain-$Ab";echo", EXPLAIN$Od\n","

\n";}else{echo"$Od\n";}echo"
\n";}}$Fb=$Cc;}while($g->next_result());}elseif($g->error){echo($_POST["only_errors"]?$zb:""),"

".lang(123).": ".error()."\n";$Zc[]=" $Ab";if($_POST["error_stops"]){break;}}$j=substr($j,$L);$L=0;}}}}if($hc){echo"

".lang(124)."\n";}elseif($_POST["only_errors"]){echo"

".lang(125,$Ab-count($Zc)).format_time($Hf,explode(" ",microtime()))."\n";}elseif($Zc&&$Ab>1){echo"

".lang(123).": ".implode("",$Zc)."\n";}}else{echo"

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

';$aa=$_GET["sql"];if($_POST){$aa=$_POST["query"];}elseif($_GET["history"]=="all"){$aa=$eb;}elseif($_GET["history"]!=""){$aa=$eb[$_GET["history"]];}textarea("query",$aa,20);echo($_POST?"":"\n"),"

".(ini_bool("file_uploads")?lang(126).': (< '.ini_get("upload_max_filesize").'B)':lang(127)),'

',checkbox("error_stops",1,$_POST["error_stops"],lang(129))."\n",checkbox("only_errors",1,$_POST["only_errors"],lang(130))."\n";print_fieldset("webfile",lang(131),$_POST["webfile"]);$td=array();foreach(array("gz"=>"zlib","bz2"=>"bz2")as$d=>$b){if(extension_loaded($b)){$td[]=".$d";}}echo lang(132,"adminer.sql".($td?"[".implode("|",$td)."]":"").""),' ',"\n";if($eb){print_fieldset("history",lang(134),$_GET["history"]!="");foreach($eb as$d=>$b){echo''.lang(31)." ".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$b)))),80,"")."
\n";}echo"\n","".lang(136)."\n","\n";}echo'

';}elseif(isset($_GET["edit"])){$m=$_GET["edit"];$s=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0]):""):where($_GET));$qa=(isset($_GET["select"])?$_POST["edit"]:$s);$p=fields($m);foreach($p as$f=>$e){if(!isset($e["privileges"][$qa?"update":"insert"])||$o->fieldName($e)==""){unset($p[$f]);}}if($_POST&&!$n&&!isset($_GET["select"])){$ga=$_POST["referer"];if($_POST["insert"]){$ga=($qa?null:$_SERVER["REQUEST_URI"]);}elseif(!ereg('^.+&select=.+$',$ga)){$ga=ME."select=".urlencode($m);}if(isset($_POST["delete"])){query_redirect("DELETE".limit1("FROM ".table($m)," WHERE $s"),$ga,lang(137));}else{$r=array();foreach($p as$f=>$e){$b=process_input($e);if($b!==false&&$b!==null){$r[idf_escape($f)]=($qa?"\n".idf_escape($f)." = $b":$b);}}if($qa){if(!$r){redirect($ga);}query_redirect("UPDATE".limit1(table($m)." SET".implode(",",$r),"\nWHERE $s"),$ga,lang(138));}else{$i=insert_into($m,$r);$ue=($i?last_id():0);queries_redirect($ga,lang(139,($ue?" $ue":"")),$i);}}}$Ea=$o->tableName(table_status($m));page_header(($qa?lang(31):lang(140)),$n,array("select"=>array($m,$Ea)),$Ea);$a=null;if($_POST["save"]){$a=(array)$_POST["fields"];}elseif($s){$Q=array();foreach($p as$f=>$e){if(isset($e["privileges"]["select"])){$Q[]=($_POST["clone"]&&$e["auto_increment"]?"'' AS ":(ereg("enum|set",$e["type"])?"1*".idf_escape($f)." AS ":"")).idf_escape($f);}}$a=array();if($Q){$H=get_rows("SELECT".limit(implode(", ",$Q)." FROM ".table($m)," WHERE $s",(isset($_GET["select"])?2:1)));$a=(isset($_GET["select"])&&count($H)!=1?null:reset($H));}}echo'
';if($p){echo"\n";foreach($p as$f=>$e){echo"
".$o->fieldName($e);$za=$_GET["set"][bracket_escape($f)];$q=(isset($a)?($a[$f]!=""&&ereg("enum|set",$e["type"])?+$a[$f]:$a[$f]):(!$qa&&$e["auto_increment"]?"":(isset($_GET["select"])?false:(isset($za)?$za:$e["default"]))));if(!$_POST["save"]&&is_string($q)){$q=$o->editVal($q,$e);}$K=($_POST["save"]?(string)$_POST["function"][$f]:($s&&$e["on_update"]=="CURRENT_TIMESTAMP"?"now":($q===false?null:(isset($q)?'':'NULL'))));if($e["type"]=="timestamp"&&$q=="CURRENT_TIMESTAMP"){$q="";$K="now";}input($e,$q,$K);echo"\n";}echo"
\n";}echo'

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

';}elseif(isset($_GET["create"])){$m=$_GET["create"];$pe=array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST');$ce=referencable_primary($m);$ha=array();foreach($ce as$Ea=>$e){$ha[str_replace("`","``",$Ea)."`".str_replace("`","``",$e["field"])]=$Ea;}$Kc=array();$Jc=array();if($m!=""){$Kc=fields($m);$Jc=table_status($m);}if($_POST&&!$_POST["fields"]){$_POST["fields"]=array();}if($_POST&&!$n&&!$_POST["add"]&&!$_POST["drop_col"]&&!$_POST["up"]&&!$_POST["down"]){if($_POST["drop"]){query_redirect("DROP TABLE ".table($m),substr(ME,0,-1),lang(145));}else{$p=array();$Oa=array();ksort($_POST["fields"]);$vd=reset($Kc);$Jb="FIRST";foreach($_POST["fields"]as$d=>$e){$A=$ha[$e["type"]];$Uc=(isset($A)?$ce[$A]:$e);if($e["field"]!=""){if(!$e["has_default"]){$e["default"]=null;}$za=eregi_replace(" *on update CURRENT_TIMESTAMP","",$e["default"]);if($za!=$e["default"]){$e["on_update"]="CURRENT_TIMESTAMP";$e["default"]=$za;}if($d==$_POST["auto_increment_col"]){$e["auto_increment"]=true;}$qe=process_field($e,$Uc);if($qe!=process_field($vd,$vd)){$p[]=array($e["orig"],$qe,$Jb);}if(isset($A)){$Oa[idf_escape($e["field"])]=($m!=""?"ADD":" ")." FOREIGN KEY (".idf_escape($e["field"]).") REFERENCES ".table($ha[$e["type"]])." (".idf_escape($Uc["field"]).")".(in_array($e["on_delete"],$fb)?" ON DELETE $e[on_delete]":"");}$Jb="AFTER ".idf_escape($e["field"]);}elseif($e["orig"]!=""){$p[]=array($e["orig"]);}if($e["orig"]!=""){$vd=next($Kc);}}$vb="";if(in_array($_POST["partition_by"],$pe)){$yd=array();if($_POST["partition_by"]=='RANGE'||$_POST["partition_by"]=='LIST'){foreach(array_filter($_POST["partition_names"])as$d=>$b){$q=$_POST["partition_values"][$d];$yd[]="\nPARTITION ".idf_escape($b)." VALUES ".($_POST["partition_by"]=='RANGE'?"LESS THAN":"IN").($q!=""?" ($q)":" MAXVALUE");}}$vb.="\nPARTITION BY $_POST[partition_by]($_POST[partition])".($yd?" (".implode(",",$yd)."\n)":($_POST["partitions"]?" PARTITIONS ".(+$_POST["partitions"]):""));}elseif($m!=""&&support("partitioning")){$vb.="\nREMOVE PARTITIONING";}$va=lang(146);if($m==""){cookie("adminer_engine",$_POST["Engine"]);$va=lang(147);}queries_redirect(ME."table=".urlencode($_POST["name"]),$va,alter_table($m,$_POST["name"],$p,$Oa,$_POST["Comment"],($_POST["Engine"]&&$_POST["Engine"]!=$Jc["Engine"]?$_POST["Engine"]:""),($_POST["Collation"]&&$_POST["Collation"]!=$Jc["Collation"]?$_POST["Collation"]:""),($_POST["Auto_increment"]!=""?+$_POST["Auto_increment"]:""),$vb));}}page_header(($m!=""?lang(28):lang(148)),$n,array("table"=>$m),$m);$a=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($R["int"])?"int":(isset($R["integer"])?"integer":"")))),"partition_names"=>array(""),);if($_POST){$a=$_POST;if($a["auto_increment_col"]){$a["fields"][$a["auto_increment_col"]]["auto_increment"]=true;}process_fields($a["fields"]);}elseif($m!=""){$a=$Jc;$a["name"]=$m;$a["fields"]=array();if(!$_GET["auto_increment"]){$a["Auto_increment"]="";}foreach($Kc as$e){$e["has_default"]=isset($e["default"]);if($e["on_update"]){$e["default"].=" ON UPDATE $e[on_update]";}$a["fields"][]=$e;}if(support("partitioning")){$Yb="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($m);$i=$g->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $Yb ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($a["partition_by"],$a["partitions"],$a["partition"])=$i->fetch_row();$a["partition_names"]=array();$a["partition_values"]=array();foreach(get_rows("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $Yb AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION")as$dd){$a["partition_names"][]=$dd["PARTITION_NAME"];$a["partition_values"][]=$dd["PARTITION_DESCRIPTION"];}$a["partition_names"][]="";}}$Z=collations();$qd=floor(extension_loaded("suhosin")?(min(ini_get("suhosin.request.max_vars"),ini_get("suhosin.post.max_vars"))-13)/10:0);if($qd&&count($a["fields"])>$qd){echo"

".h(lang(149,'suhosin.post.max_vars','suhosin.request.max_vars'))."\n";}$wd=engines();foreach($wd as$yb){if(!strcasecmp($yb,$a["Engine"])){$a["Engine"]=$yb;break;}}echo'

',lang(150),': ';if($m==""&&!$_POST){?>"(".lang(151).")")+$wd,$a["Engine"]):""),' ',($Z&&!ereg("sqlite|mssql",$v)?adminer_html_select("Collation",array(""=>"(".lang(85).")")+$Z,$a["Collation"]):""),' ';$Kb=edit_fields($a["fields"],$Z,"TABLE",$qd,$ha,$a["Comment"]!="");echo'

',lang(92),': ',(support("comment")?checkbox("","",$Kb,lang(94),"columnShow(this.checked, 6); toggle('Comment'); if (this.checked) this.form['Comment'].focus();").' ':''),'

';if($_GET["create"]!=""){echo'';}echo' ';if(support("partitioning")){$me=ereg('RANGE|LIST',$a["partition_by"]);print_fieldset("partition",lang(152),$a["partition_by"]);echo'

',adminer_html_select("partition_by",array(-1=>"")+$pe,$a["partition_by"],"partitionByChange(this);"),'() ',lang(153),': ';foreach($a["partition_names"]as$d=>$b){echo'',' ';}echo'

';}elseif(isset($_GET["indexes"])){$m=$_GET["indexes"];$Nc=array("PRIMARY","UNIQUE","INDEX");$D=table_status($m);if(eregi("MyISAM|M?aria",$D["Engine"])){$Nc[]="FULLTEXT";}$J=indexes($m);if($v=="sqlite"){unset($Nc[0]);unset($J[""]);}if($_POST&&!$n&&!$_POST["add"]){$u=array();foreach($_POST["indexes"]as$x){if(in_array($x["type"],$Nc)){$B=array();$ec=array();$r=array();ksort($x["columns"]);foreach($x["columns"]as$d=>$C){if($C!=""){$W=$x["lengths"][$d];$r[]=idf_escape($C).($W?"(".(+$W).")":"");$B[]=$C;$ec[]=($W?$W:null);}}if($B){foreach($J as$f=>$Bb){ksort($Bb["columns"]);ksort($Bb["lengths"]);if($x["type"]==$Bb["type"]&&array_values($Bb["columns"])===$B&&(!$Bb["lengths"]||array_values($Bb["lengths"])===$ec)){unset($J[$f]);continue 2;}}$u[]=array($x["type"],"(".implode(", ",$r).")");}}}foreach($J as$f=>$Bb){$u[]=array($Bb["type"],idf_escape($f),"DROP");}if(!$u){redirect(ME."table=".urlencode($m));}queries_redirect(ME."table=".urlencode($m),lang(156),alter_indexes($m,$u));}page_header(lang(102),$n,array("table"=>$m),$m);$p=array_keys(fields($m));$a=array("indexes"=>$J);if($_POST){$a=$_POST;if($_POST["add"]){foreach($a["indexes"]as$d=>$x){if($x["columns"][count($x["columns"])]!=""){$a["indexes"][$d]["columns"][]="";}}$x=end($a["indexes"]);if($x["type"]||array_filter($x["columns"],'strlen')||array_filter($x["lengths"],'strlen')){$a["indexes"][]=array("columns"=>array(1=>""));}}}else{foreach($a["indexes"]as$d=>$x){$a["indexes"][$d]["columns"][]="";}$a["indexes"][]=array("columns"=>array(1=>""));}echo'
';$ra=1;foreach($a["indexes"]as$x){echo"
',lang(157),'',lang(158),'
".adminer_html_select("indexes[$ra][type]",array(-1=>"")+$Nc,$x["type"],($ra==count($a["indexes"])?"indexesAddRow(this);":1))."";ksort($x["columns"]);$l=1;foreach($x["columns"]as$d=>$C){echo"".adminer_html_select("indexes[$ra][columns][$l]",array(-1=>"")+$p,$C,($l==count($x["columns"])?"indexesAddColumn(this);":1))," ";$l++;}$ra++;}echo'

';}elseif(isset($_GET["database"])){if($_POST&&!$n&&!isset($_POST["add_x"])){restart_session();if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(159),drop_databases(array(DB)));}elseif(DB!==$_POST["name"]){if(DB!=""){$_GET["db"]=$_POST["name"];queries_redirect(preg_replace('~db=[^&]*&~','',ME)."db=".urlencode($_POST["name"]),lang(160),rename_database($_POST["name"],$_POST["collation"]));}else{$_=explode("\n",str_replace("\r","",$_POST["name"]));$ee=true;$xb="";foreach($_ as$t){if(count($_)==1||$t!=""){if(!create_database($t,$_POST["collation"])){$ee=false;}$xb=$t;}}queries_redirect(ME."db=".urlencode($xb),lang(161),$ee);}}else{if(!$_POST["collation"]){redirect(substr(ME,0,-1));}query_redirect("ALTER DATABASE ".idf_escape($_POST["name"]).(eregi('^[a-z0-9_]+$',$_POST["collation"])?" COLLATE $_POST[collation]":""),substr(ME,0,-1),lang(162));}}page_header(DB!=""?lang(46):lang(163),$n,array(),DB);$Z=collations();$f=DB;$Dc=null;if($_POST){$f=$_POST["name"];$Dc=$_POST["collation"];}elseif(DB!=""){$Dc=db_collation(DB,$Z);}elseif($v=="sql"){foreach(get_vals("SHOW GRANTS")as$ka){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~',$ka,$k)&&$k[1]){$f=stripcslashes(idf_unescape("`$k[2]`"));break;}}}echo'

',($_POST["add_x"]||strpos($f,"\n")?'
':'')."\n".($Z?adminer_html_select("collation",array(""=>"(".lang(85).")")+$Z,$Dc):"");?> ';if(DB!=""){echo"\n";}elseif(!$_POST["add_x"]&&$_GET["db"]==""){echo"\n";}echo'

';}elseif(isset($_GET["scheme"])){if($_POST&&!$n){$w=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"]){query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$w,lang(164));}else{$w.=urlencode($_POST["name"]);if($_GET["ns"]==""){query_redirect("CREATE SCHEMA ".idf_escape($_POST["name"]),$w,lang(165));}elseif($_GET["ns"]!=$_POST["name"]){query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($_POST["name"]),$w,lang(166));}else{redirect($w);}}}page_header($_GET["ns"]!=""?lang(47):lang(48),$n);$a=array("name"=>$_GET["ns"]);if($_POST){$a=$_POST;}echo'

';if($_GET["ns"]!=""){echo"\n";}echo'

';}elseif(isset($_GET["call"])){$Va=$_GET["call"];page_header(lang(167).": ".h($Va),$n);$Ta=routine($Va,(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Tb=array();$qb=array();foreach($Ta["fields"]as$l=>$e){if(substr($e["inout"],-3)=="OUT"){$qb[$l]="@".idf_escape($e["field"])." AS ".idf_escape($e["field"]);}if(!$e["inout"]||substr($e["inout"],0,2)=="IN"){$Tb[]=$l;}}if(!$n&&$_POST){$de=array();foreach($Ta["fields"]as$d=>$e){if(in_array($d,$Tb)){$b=process_input($e);if($b===false){$b="''";}if(isset($qb[$d])){$g->query("SET @".idf_escape($e["field"])." = $b");}}$de[]=(isset($qb[$d])?"@".idf_escape($e["field"]):$b);}$j=(isset($_GET["callf"])?"SELECT":"CALL")." ".idf_escape($Va)."(".implode(", ",$de).")";echo"

".h($j)." ".lang(31)."\n";if(!$g->multi_query($j)){echo"

".error()."\n";}else{do{$i=$g->store_result();if(is_object($i)){select($i);}else{echo"

".lang(168,$g->affected_rows)."\n";}}while($g->next_result());if($qb){select($g->query("SELECT ".implode(", ",$qb)));}}}echo'

';if($Tb){echo"\n";foreach($Tb as$d){$e=$Ta["fields"][$d];$f=$e["field"];echo"
".$o->fieldName($e);$q=$_POST["fields"][$f];if($q!=""){if($e["type"]=="enum"){$q=+$q;}if($e["type"]=="set"){$q=array_sum($q);}}input($e,$q,(string)$_POST["function"][$f]);echo"\n";}echo"
\n";}echo'

';}elseif(isset($_GET["foreign"])){$m=$_GET["foreign"];if($_POST&&!$n&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if($_POST["drop"]){query_redirect("ALTER TABLE ".table($m)."\nDROP ".($v=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($_GET["name"]),ME."table=".urlencode($m),lang(169));}else{$Ga=array_filter($_POST["source"],'strlen');ksort($Ga);$ea=array();foreach($Ga as$d=>$b){$ea[$d]=$_POST["target"][$d];}query_redirect("ALTER TABLE ".table($m).($_GET["name"]!=""?"\nDROP FOREIGN KEY ".idf_escape($_GET["name"]).",":"")."\nADD FOREIGN KEY (".implode(", ",array_map('idf_escape',$Ga)).") REFERENCES ".table($_POST["table"])." (".implode(", ",array_map('idf_escape',$ea)).")".(in_array($_POST["on_delete"],$fb)?" ON DELETE $_POST[on_delete]":"").(in_array($_POST["on_update"],$fb)?" ON UPDATE $_POST[on_update]":""),ME."table=".urlencode($m),($_GET["name"]!=""?lang(170):lang(171)));$n=lang(172)."
$n";}}page_header(lang(173),$n,array("table"=>$m),$m);$a=array("table"=>$m,"source"=>array(""));if($_POST){$a=$_POST;ksort($a["source"]);if($_POST["add"]){$a["source"][]="";}elseif($_POST["change"]||$_POST["change-js"]){$a["target"]=array();}}elseif($_GET["name"]!=""){$ha=foreign_keys($m);$a=$ha[$_GET["name"]];$a["source"][]="";}$Ga=array_keys(fields($m));$ea=($m===$a["table"]?$Ga:array_keys(fields($a["table"])));$je=array();foreach(table_status()as$f=>$D){if(fk_support($D)){$je[]=$f;}}echo'

';if($a["db"]==""){echo lang(174),': ',adminer_html_select("table",$je,$a["table"],"this.form['change-js'].value = '1'; this.form.submit();"),'

';$ra=0;foreach($a["source"]as$d=>$b){echo"","
',lang(104),'',lang(105),'
".adminer_html_select("source[".(+$d)."]",array(-1=>"")+$Ga,$b,($ra==count($a["source"])-1?"foreignAddRow(this);":1)),"".adminer_html_select("target[".(+$d)."]",$ea,$a["target"][$d]);$ra++;}echo'

',lang(86),': ',adminer_html_select("on_delete",array(-1=>"")+$fb,$a["on_delete"]),' ',lang(106),': ',adminer_html_select("on_update",array(-1=>"")+$fb,$a["on_update"]),'

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

';}elseif(isset($_GET["view"])){$m=$_GET["view"];$hb=false;if($_POST&&!$n){$hb=drop_create("DROP VIEW ".table($m),"CREATE VIEW ".table($_POST["name"])." AS\n$_POST[select]",($_POST["drop"]?substr(ME,0,-1):ME."table=".urlencode($_POST["name"])),lang(177),lang(178),lang(179),$m);}page_header(($m!=""?lang(27):lang(180)),$n,array("table"=>$m),$m);$a=array();if($_POST){$a=$_POST;}elseif($m!=""){$a=view($m);$a["name"]=$m;}echo'

',lang(181),':

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

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

';}elseif(isset($_GET["event"])){$ib=$_GET["event"];$ie=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Md=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");if($_POST&&!$n){if($_POST["drop"]){query_redirect("DROP EVENT ".idf_escape($ib),substr(ME,0,-1),lang(182));}elseif(in_array($_POST["INTERVAL_FIELD"],$ie)&&isset($Md[$_POST["STATUS"]])){$he="\nON SCHEDULE ".($_POST["INTERVAL_VALUE"]?"EVERY ".q($_POST["INTERVAL_VALUE"])." $_POST[INTERVAL_FIELD]".($_POST["STARTS"]?" STARTS ".q($_POST["STARTS"]):"").($_POST["ENDS"]?" ENDS ".q($_POST["ENDS"]):""):"AT ".q($_POST["STARTS"]))." ON COMPLETION".($_POST["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($ib!=""?lang(183):lang(184)),queries(($ib!=""?"ALTER EVENT ".idf_escape($ib).$he.($ib!=$_POST["EVENT_NAME"]?"\nRENAME TO ".idf_escape($_POST["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($_POST["EVENT_NAME"]).$he)."\n".$Md[$_POST["STATUS"]]." COMMENT ".q($_POST["EVENT_COMMENT"]).rtrim(" DO\n$_POST[EVENT_DEFINITION]",";").";"));}}page_header(($ib!=""?lang(185).": ".h($ib):lang(186)),$n);$a=array();if($_POST){$a=$_POST;}elseif($ib!=""){$H=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($ib));$a=reset($H);}echo'
',lang(181),'
',lang(187),'
',lang(188),'
',lang(189),' ',adminer_html_select("INTERVAL_FIELD",$ie,$a["INTERVAL_FIELD"]),'
',lang(73),'',adminer_html_select("STATUS",$Md,$a["STATUS"]),'
',lang(94),'
 ',checkbox("ON_COMPLETION","PRESERVE",$a["ON_COMPLETION"]=="PRESERVE",lang(190)),'

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

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

';}elseif(isset($_GET["procedure"])){$Va=$_GET["procedure"];$Ta=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$hb=false;if($_POST&&!$n&&!$_POST["add"]&&!$_POST["drop_col"]&&!$_POST["up"]&&!$_POST["down"]){$r=array();$p=(array)$_POST["fields"];ksort($p);foreach($p as$e){if($e["field"]!=""){$r[]=(in_array($e["inout"],$jc)?"$e[inout] ":"").idf_escape($e["field"]).process_type($e,"CHARACTER SET");}}$hb=drop_create("DROP $Ta ".idf_escape($Va),"CREATE $Ta ".idf_escape($_POST["name"])." (".implode(", ",$r).")".(isset($_GET["function"])?" RETURNS".process_type($_POST["returns"],"CHARACTER SET"):"").rtrim("\n$_POST[definition]",";").";",substr(ME,0,-1),lang(191),lang(192),lang(193),$Va);}page_header(($Va!=""?(isset($_GET["function"])?lang(194):lang(195)).": ".h($Va):(isset($_GET["function"])?lang(196):lang(197))),$n);$Z=get_vals("SHOW CHARACTER SET");sort($Z);$a=array("fields"=>array());if($_POST){$a=$_POST;$a["fields"]=(array)$a["fields"];process_fields($a["fields"]);}elseif($Va!=""){$a=routine($Va,$Ta);$a["name"]=$Va;}echo'

',lang(181),': ';edit_fields($a["fields"],$Z,$Ta);if(isset($_GET["function"])){echo"
".lang(198);edit_type("returns",$a["returns"],$Z);}echo'

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

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

';}elseif(isset($_GET["sequence"])){$Eb=$_GET["sequence"];if($_POST&&!$n){$w=substr(ME,0,-1);if($_POST["drop"]){query_redirect("DROP SEQUENCE ".idf_escape($Eb),$w,lang(199));}elseif($Eb==""){query_redirect("CREATE SEQUENCE ".idf_escape($_POST["name"]),$w,lang(200));}elseif($Eb!=$_POST["name"]){query_redirect("ALTER SEQUENCE ".idf_escape($Eb)." RENAME TO ".idf_escape($_POST["name"]),$w,lang(201));}else{redirect($w);}}page_header($Eb!=""?lang(202).": ".h($Eb):lang(203),$n);$a=array("name"=>$Eb);if($_POST){$a=$_POST;}echo'

';if($Eb!=""){echo"\n";}echo'

';}elseif(isset($_GET["type"])){$Oc=$_GET["type"];if($_POST&&!$n){$w=substr(ME,0,-1);if($_POST["drop"]){query_redirect("DROP TYPE ".idf_escape($Oc),$w,lang(204));}else{query_redirect("CREATE TYPE ".idf_escape($_POST["name"])." $_POST[as]",$w,lang(205));}}page_header($Oc!=""?lang(206).": ".h($Oc):lang(207),$n);$a["as"]="AS ";if($_POST){$a=$_POST;}echo'

';if($Oc!=""){echo"\n";}else{echo"\n";textarea("as",$a["as"]);echo"

\n";}echo'

';}elseif(isset($_GET["trigger"])){$m=$_GET["trigger"];$Ic=trigger_options();$te=array("INSERT","UPDATE","DELETE");$hb=false;if($_POST&&!$n&&in_array($_POST["Timing"],$Ic["Timing"])&&in_array($_POST["Event"],$te)&&in_array($_POST["Type"],$Ic["Type"])){$re=" $_POST[Timing] $_POST[Event]";$Cb=" ON ".table($m);$hb=drop_create("DROP TRIGGER ".idf_escape($_GET["name"]).($v=="pgsql"?$Cb:""),"CREATE TRIGGER ".idf_escape($_POST["Trigger"]).($v=="mssql"?$Cb.$re:$re.$Cb).rtrim(" $_POST[Type]\n$_POST[Statement]",";").";",ME."table=".urlencode($m),lang(208),lang(209),lang(210),$_GET["name"]);}page_header(($_GET["name"]!=""?lang(211).": ".h($_GET["name"]):lang(212)),$n,array("table"=>$m));$a=array("Trigger"=>$m."_bi");if($_POST){$a=$_POST;}elseif($_GET["name"]!=""){$a=trigger($_GET["name"]);}echo'
',lang(213),'',adminer_html_select("Timing",$Ic["Timing"],$a["Timing"],"if (/^".h(preg_quote($m,"/"))."_[ba][iud]$/.test(this.form['Trigger'].value)) this.form['Trigger'].value = '".h(js_escape($m))."_' + selectValue(this).charAt(0).toLowerCase() + selectValue(this.form['Event']).charAt(0).toLowerCase();"),'
',lang(214),'',adminer_html_select("Event",$te,$a["Event"],"this.form['Timing'].onchange();"),'
',lang(89),'',adminer_html_select("Type",$Ic["Type"],$a["Type"]),'

',lang(181),':

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

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

';}elseif(isset($_GET["user"])){$Fd=$_GET["user"];$sa=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$a){foreach(explode(",",($a["Privilege"]=="Grant option"?"":$a["Context"]))as$Gc){$sa[$Gc][$a["Privilege"]]=$a["Comment"];}}$sa["Server Admin"]+=$sa["File access on server"];$sa["Databases"]["Create routine"]=$sa["Procedures"]["Create routine"];unset($sa["Procedures"]["Create routine"]);$sa["Columns"]=array();foreach(array("Select","Insert","Update","References")as$b){$sa["Columns"][$b]=$sa["Tables"][$b];}unset($sa["Server Admin"]["Usage"]);foreach($sa["Tables"]as$d=>$b){unset($sa["Databases"][$d]);}$nc=array();if($_POST){foreach($_POST["objects"]as$d=>$b){$nc[$b]=(array)$nc[$b]+(array)$_POST["grants"][$d];}}$nb=array();$Xc="";if(isset($_GET["host"])&&($i=$g->query("SHOW GRANTS FOR ".q($Fd)."@".q($_GET["host"])))){while($a=$i->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$a[0],$k)&&preg_match_all('~ *([^(,]*[^ ,(])( *\\([^)]+\\))?~',$k[1],$oa,PREG_SET_ORDER)){foreach($oa as$b){if($b[1]!="USAGE"){$nb["$k[2]$b[2]"][$b[1]]=true;}if(ereg(' WITH GRANT OPTION',$a[0])){$nb["$k[2]$b[2]"]["GRANT OPTION"]=true;}}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$a[0],$k)){$Xc=$k[1];}}}if($_POST&&!$n){$ac=(isset($_GET["host"])?q($Fd)."@".q($_GET["host"]):"''");$pb=q($_POST["user"])."@".q($_POST["host"]);$Ad=q($_POST["pass"]);if($_POST["drop"]){query_redirect("DROP USER $ac",ME."privileges=",lang(215));}else{if($ac!=$pb){$n=!queries(($g->server_info<5?"GRANT USAGE ON *.* TO":"CREATE USER")." $pb IDENTIFIED BY".($_POST["hashed"]?" PASSWORD":"")." $Ad");}elseif($_POST["pass"]!=$Xc||!$_POST["hashed"]){queries("SET PASSWORD FOR $pb = ".($_POST["hashed"]?$Ad:"PASSWORD($Ad)"));}if(!$n){$qc=array();foreach($nc as$bb=>$ka){if(isset($_GET["grant"])){$ka=array_filter($ka);}$ka=array_keys($ka);if(isset($_GET["grant"])){$qc=array_diff(array_keys(array_filter($nc[$bb],'strlen')),$ka);}elseif($ac==$pb){$Sd=array_keys((array)$nb[$bb]);$qc=array_diff($Sd,$ka);$ka=array_diff($ka,$Sd);unset($nb[$bb]);}if(preg_match('~^(.+)\\s*(\\(.*\\))?$~U',$bb,$k)&&(!grant("REVOKE",$qc,$k[2]," ON $k[1] FROM $pb")||!grant("GRANT",$ka,$k[2]," ON $k[1] TO $pb"))){$n=true;break;}}}if(!$n&&isset($_GET["host"])){if($ac!=$pb){queries("DROP USER $ac");}elseif(!isset($_GET["grant"])){foreach($nb as$bb=>$qc){if(preg_match('~^(.+)(\\(.*\\))?$~U',$bb,$k)){grant("REVOKE",array_keys($qc),$k[2]," ON $k[1] FROM $pb");}}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(216):lang(217)),!$n);if($ac!=$pb){$g->query("DROP USER $pb");}}}page_header((isset($_GET["host"])?lang(21).": ".h("$Fd@$_GET[host]"):lang(120)),$n,array("privileges"=>array('',lang(70))));if($_POST){$a=$_POST;$nb=$nc;}else{$a=$_GET+array("host"=>$g->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$a["pass"]=$Xc;if($Xc!=""){$a["hashed"]=true;}$nb[""]=true;}echo'
',lang(21),'
',lang(20),'
',lang(22),' ';if(!$a["hashed"]){echo'';}echo checkbox("hashed",1,$a["hashed"],lang(218),"typePassword(this.form['pass'], this.checked);"),'
';echo"\n","\n";foreach(array(""=>"","Server Admin"=>lang(20),"Databases"=>lang(65),"Tables"=>lang(100),"Columns"=>lang(101),"Procedures"=>lang(219),)as$Gc=>$rc){foreach((array)$sa[$Gc]as$mc=>$_a){echo"$rc'.h($mc);$l=0;foreach($nb as$bb=>$ka){$f="'grants[$l][".h(strtoupper($mc))."]'";$q=$ka[strtoupper($mc)];if($Gc=="Server Admin"&&$bb!=(isset($nb["*.*"])?"*.*":"")){echo"
".lang(70)."";$l=0;foreach($nb as$bb=>$ka){echo''.($bb!="*.*"?"":"*.*");$l++;}echo"
 ";}elseif(isset($_GET["grant"])){echo"";}else{echo"";}$l++;}}}echo"
\n",'

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

';}elseif(isset($_GET["processlist"])){if($_POST&&!$n){$Id=0;foreach((array)$_POST["kill"]as$b){if(queries("KILL ".(+$b))){$Id++;}}queries_redirect(ME."processlist=",lang(222,$Id),$Id||!$_POST["kill"]);}page_header(lang(71),$n);echo'
';$l=-1;foreach(get_rows("SHOW FULL PROCESSLIST")as$l=>$a){if(!$l){echo"\n";}echo"
 ".implode("",array_keys($a))."
".checkbox("kill[]",$a["Id"],0);foreach($a as$d=>$b){echo"".($d=="Info"&&$b!=""?"".shorten_utf8($b,100,"").' '.lang(31).'':nbsp($b));}echo"\n";}echo'

',($l+1)."/".lang(223,$g->result("SELECT @@max_connections")),'

';}elseif(isset($_GET["select"])){$m=$_GET["select"];$D=table_status($m);$J=indexes($m);$p=fields($m);$ha=column_foreign_keys($m);if($D["Oid"]=="t"){$J[]=array("type"=>"PRIMARY","columns"=>array("oid"));}$Td=array();$B=array();$Db=null;foreach($p as$d=>$e){$f=$o->fieldName($e);if(isset($e["privileges"]["select"])&&$f!=""){$B[$d]=html_entity_decode(strip_tags($f));if(ereg('text|lob',$e["type"])){$Db=$o->selectLengthProcess();}}$Td+=$e["privileges"];}list($Q,$pa)=$o->selectColumnsProcess($B,$J);$s=$o->selectSearchProcess($p,$J);$Xa=$o->selectOrderProcess($p,$J);$O=$o->selectLimitProcess();$Yb=($Q?implode(", ",$Q):($D["Oid"]=="t"?"oid, ":"")."*")."\nFROM ".table($m);$Ld=($pa&&count($pa)$a){echo$g->result("SELECT".limit(idf_escape(key($a))." FROM ".table($m)," WHERE ".where_check($gb).($s?" AND ".implode(" AND ",$s):"").($Xa?" ORDER BY ".implode(", ",$Xa):""),1));}exit;}if($_POST&&!$n){$ne="(".implode(") OR (",array_map('where_check',(array)$_POST["check"])).")";$Qa=$ad=null;foreach($J as$x){if($x["type"]=="PRIMARY"){$Qa=array_flip($x["columns"]);$ad=($Q?$Qa:array());break;}}foreach($Q as$d=>$b){$b=$_GET["columns"][$d];if(!$b["fun"]){unset($ad[$b["col"]]);}}if($_POST["export"]){dump_headers($m);$o->dumpTable($m,"");if(!is_array($_POST["check"])||$ad===array()){$bc=$s;if(is_array($_POST["check"])){$bc[]="($ne)";}$j="SELECT $Yb".($bc?"\nWHERE ".implode(" AND ",$bc):"").$Ld;}else{$Zd=array();foreach($_POST["check"]as$b){$Zd[]="(SELECT".limit($Yb,"\nWHERE ".($s?implode(" AND ",$s)." AND ":"").where_check($b).$Ld,1).")";}$j=implode(" UNION ALL ",$Zd);}$o->dumpData($m,"table",$j);exit;}if(!$o->selectEmailProcess($s,$ha)){if($_POST["save"]||$_POST["delete"]){$i=true;$wb=0;$j=table($m);$r=array();if(!$_POST["delete"]){foreach($B as$f=>$b){$b=process_input($p[$f]);if($b!==null){if($_POST["clone"]){$r[idf_escape($f)]=($b!==false?$b:idf_escape($f));}elseif($b!==false){$r[]=idf_escape($f)." = $b";}}}$j.=($_POST["clone"]?" (".implode(", ",array_keys($r)).")\nSELECT ".implode(", ",$r)."\nFROM ".table($m):" SET\n".implode(",\n",$r));}if($_POST["delete"]||$r){$id="UPDATE";if($_POST["delete"]){$id="DELETE";$j="FROM $j";}if($_POST["clone"]){$id="INSERT";$j="INTO $j";}if($_POST["all"]||($ad===array()&&$_POST["check"])||count($pa)affected_rows;}else{foreach((array)$_POST["check"]as$b){$i=queries($id.limit1($j,"\nWHERE ".where_check($b)));if(!$i){break;}$wb+=$g->affected_rows;}}}queries_redirect(remove_from_uri("page"),lang(225,$wb),$i);}elseif(!$_POST["import"]){if(!$_POST["val"]){$n=lang(226);}else{$i=true;$wb=0;foreach($_POST["val"]as$gb=>$a){$r=array();foreach($a as$d=>$b){$d=bracket_escape($d,1);$r[]=idf_escape($d)." = ".(ereg('char|text',$p[$d]["type"])||$b!=""?$o->processInput($p[$d],$b):"NULL");}$j=table($m)." SET ".implode(", ",$r);$bc=" WHERE ".where_check($gb).($s?" AND ".implode(" AND ",$s):"");$i=queries("UPDATE".(count($pa)affected_rows;}queries_redirect(remove_from_uri(),lang(225,$wb),$i);}}elseif(is_string($Ia=get_file("csv_file",true))){$i=true;$mb=array_keys($p);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$Ia,$oa);$wb=count($oa[0]);begin();$Wa=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));foreach($oa[0]as$d=>$b){preg_match_all("~((\"[^\"]*\")+|[^$Wa]*)$Wa~",$b.$Wa,$Gd);if(!$d&&!array_diff($Gd[1],$mb)){$mb=$Gd[1];$wb--;}else{$r=array();foreach($Gd[1]as$l=>$Pc){$r[idf_escape($mb[$l])]=($Pc==""&&$p[$mb[$l]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$Pc))));}$i=insert_update($m,$r,$Qa);if(!$i){break;}}}if($i){queries("COMMIT");}queries_redirect(remove_from_uri("page"),lang(227,$wb),$i);queries("ROLLBACK");}else{$n=upload_error($Ia);}}}$Ea=$o->tableName($D);page_header(lang(33).": $Ea",$n);session_write_close();$r=null;if(isset($Td["insert"])){$r="";foreach((array)$_GET["where"]as$b){if(count($ha[$b["col"]])==1&&($b["op"]=="="||(!$b["op"]&&!ereg('[_%]',$b["val"])))){$r.="&set".urlencode("[".bracket_escape($b["col"])."]")."=".urlencode($b["val"]);}}}$o->selectLinks($D,$r);if(!$B){echo"

".lang(228).($p?".":": ".error())."\n";}else{echo"

\n","
";hidden_fields_get();echo(DB!=""?''.(isset($_GET["ns"])?'':""):"");echo'',"
\n";$o->selectColumnsPrint($Q,$B);$o->selectSearchPrint($s,$B,$J);$o->selectOrderPrint($Xa,$B,$J);$o->selectLimitPrint($O);$o->selectLengthPrint($Db);$o->selectActionPrint($Db);echo"
\n";$ca=$_GET["page"];if($ca=="last"){$Ya=$g->result("SELECT COUNT(*) FROM ".table($m).($s?" WHERE ".implode(" AND ",$s):""));$ca=floor(max(0,$Ya-1)/$O);}$j="SELECT".limit((+$O&&$pa&&count($pa)selectQuery($j);$i=$g->query($j);if(!$i){echo"

".error()."\n";}else{if($v=="mssql"){$i->seek($O*$ca);}$Hc=array();echo"

\n";$H=array();while($a=$i->fetch_assoc()){$H[]=$a;}if($_GET["page"]!="last"){$Ya=(+$O&&$pa&&count($pa)result(" SELECT FOUND_ROWS()"):$g->result("SELECT COUNT(*) FROM ($j) x")):count($H));}if(!$H){echo"

".lang(82)."\n";}else{$Bd=$o->backwardKeys($m,$Ea);echo"\n","".(!$pa&&$Q?"":"\n";foreach($o->rowDescriptions($H,$ha)as$fa=>$a){$pd=unique_array($H[$fa],$J);$gb="";foreach($pd as$d=>$b){$gb.="&".(isset($b)?urlencode("where[".bracket_escape($d)."]")."=".urlencode($b):"null%5B%5D=".urlencode($d));}echo"".(!$pa&&$Q?"":"\n";}echo"
".lang(119)."");$Cd=array();$da=array();reset($Q);$ke=1;foreach($H[0]as$d=>$b){if($D["Oid"]!="t"||$d!="oid"){$b=$_GET["columns"][key($Q)];$e=$p[$Q?$b["col"]:$d];$f=($e?$o->fieldName($e,$ke):"*");if($f!=""){$ke++;$Cd[$d]=$f;$C=idf_escape($d);echo''.apply_sql_function($b["fun"],$f)."";}$da[$d]=$b["fun"];next($Q);}}$ec=array();if($_GET["modify"]){foreach($H as$a){foreach($a as$d=>$b){$ec[$d]=max($ec[$d],min(40,strlen(utf8_decode($b))));}}}echo($Bd?"".lang(229):"")."
".checkbox("check[]",substr($gb,1),in_array(substr($gb,1),(array)$_POST["check"]),"","this.form['all'].checked = false; formUncheck('all-page');").(count($pa)".lang(119).""));foreach($a as$d=>$b){if(isset($Cd[$d])){$e=$p[$d];if($b!=""&&(!isset($Hc[$d])||$Hc[$d]!="")){$Hc[$d]=(is_mail($b)?$Cd[$d]:"");}$w="";$b=$o->editVal($b,$e);if(!isset($b)){$b="NULL";}else{if(ereg('blob|bytea|raw|file',$e["type"])&&$b!=""){$w=h(ME.'download='.urlencode($m).'&field='.urlencode($d).$gb);}if($b===""){$b=" ";}elseif($Db!=""&&ereg('text|blob',$e["type"])&&is_utf8($b)){$b=shorten_utf8($b,max(0,+$Db));}else{$b=h($b);}if(!$w){foreach((array)$ha[$d]as$A){if(count($ha[$d])==1||end($A["source"])==$d){$w="";foreach($A["source"]as$l=>$Ga){$w.=where_link($l,$A["target"][$l],$H[$fa][$Ga]);}$w=h(($A["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($A["db"]),ME):ME).'select='.urlencode($A["table"]).$w);if(count($A["source"])==1){break;}}}}if($d=="COUNT(*)"){$w=h(ME."select=".urlencode($m));$l=0;foreach((array)$_GET["where"]as$y){if(!array_key_exists($y["col"],$pd)){$w.=h(where_link($l++,$y["col"],$y["val"],$y["op"]));}}foreach($pd as$Ma=>$y){$w.=h(where_link($l++,$Ma,$y));}}}if(!$w){if(is_mail($b)){$w="mailto:$b";}if($le=is_url($a[$d])){$w=($le=="http"&&$Ac?$a[$d]:"$le://www.adminer.org/redirect/?url=".urlencode($a[$d]));}}$S=h("val[$gb][".bracket_escape($d)."]");$q=$_POST["val"][$gb][bracket_escape($d)];$Pd=h(isset($q)?$q:$a[$d]);$uf=strpos($b,"...");$Yd=is_utf8($b)&&$H[$fa][$d]==$a[$d]&&!$da[$d];$Wd=ereg('text|lob',$e["type"]);echo(($_GET["modify"]&&$Yd)||isset($q)?"".($Wd?"":""):"".$o->selectVal($b,$w,$e));}}if($Bd){echo"";}$o->backwardKeysPrint($Bd,$H[$fa]);echo"
\n";}parse_str($_COOKIE["adminer_export"],$Xb);if($H||$ca){$md=true;if($_GET["page"]!="last"&&+$O&&count($pa)>=count($Q)&&($Ya>=$O||$ca)){$Ya=$D["Rows"];if(!isset($Ya)||$s||($D["Engine"]=="InnoDB"&&$Yaresult("SELECT COUNT(*) FROM ".table($m).($s?" WHERE ".implode(" AND ",$s):""));}else{$md=false;}}echo"

";if(+$O&&$Ya>$O){$Nd=floor(($Ya-1)/$O);echo'".lang(231).":",pagination(0,$ca).($ca>5?" ...":"");for($l=max(1,$ca-4);$l'.lang(232)."");}echo" (".($md?"":"~ ").lang(122,$Ya).") ".checkbox("all",1,0,lang(233))."\n";if(!information_schema(DB)){echo'

',lang(31),'
';}print_fieldset("export",lang(113));$Na=$o->dumpOutput();echo($Na?adminer_html_select("output",$Na,$Xb["output"])." ":""),adminer_html_select("format",$o->dumpFormat(),$Xb["format"])," \n","\n";}print_fieldset("import",lang(235),!$H);echo" ",adminer_html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$Xb["format"],1);echo" ","\n","\n";$o->selectEmailPrint(array_filter($Hc,'strlen'),$B);echo"\n";}}}elseif(isset($_GET["variables"])){$fc=isset($_GET["status"]);page_header($fc?lang(73):lang(72));$Pe=($fc?show_status():show_variables());if(!$Pe){echo"

".lang(82)."\n";}else{echo"\n";foreach($Pe as$d=>$b){echo"","
".h($d)."","".nbsp($b);}echo"
\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Yc=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$a){$S=js_escape($a["Name"]);json_row("Comment-$S",nbsp($a["Comment"]));if(!is_view($a)){foreach(array("Engine","Collation")as$d){json_row("$d-$S",nbsp($a[$d]));}foreach($Yc+array("Auto_increment"=>0,"Rows"=>0)as$d=>$b){if($a[$d]!=""){$b=number_format($a[$d],0,'.',lang(236));json_row("$d-$S",($d=="Rows"&&$a["Engine"]=="InnoDB"&&$b?"~ $b":$b));if(isset($Yc[$d])){$Yc[$d]+=($a["Engine"]!="InnoDB"||$d!="Data_free"?$a[$d]:0);}}elseif(array_key_exists($d,$a)){json_row("$d-$S");}}}}foreach($Yc as$d=>$b){json_row("sum-$d",number_format($b,0,'.',lang(236)));}json_row("");}else{foreach(count_tables(get_databases())as$t=>$b){json_row("tables-".js_escape($t),$b);}json_row("");}exit;}else{$Fe=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Fe&&!$n&&!$_POST["search"]){$i=true;$va="";if($v=="sql"&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"])){queries("SET foreign_key_checks = 0");}if($_POST["truncate"]){if($_POST["tables"]){$i=truncate_tables($_POST["tables"]);}$va=lang(237);}elseif($_POST["move"]){$i=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$va=lang(238);}elseif($_POST["copy"]){$i=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$va=lang(239);}elseif($_POST["drop"]){if($_POST["views"]){$i=drop_views($_POST["views"]);}if($i&&$_POST["tables"]){$i=drop_tables($_POST["tables"]);}$va=lang(240);}elseif($_POST["tables"]&&($i=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"]))))){while($a=$i->fetch_assoc()){$va.="".h($a["Table"]).": ".h($a["Msg_text"])."
";}}queries_redirect(substr(ME,0,-1),$va,$i);}page_header(($_GET["ns"]==""?lang(65).": ".h(DB):lang(80).": ".h($_GET["ns"])),$n,true);if($o->homepage()){if($_GET["ns"]!==""){echo''.lang(111)."\n","

".lang(241)."

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

".lang(6)."\n";}else{echo"

\n","

".lang(242).": \n";if($_POST["search"]&&$_POST["query"]!=""){search_tables();}echo"\n",'\n";foreach($jd as$f=>$z){$cc=(isset($z)&&!eregi("table",$z));echo'
'.lang(100).''.lang(243).''.lang(76).''.lang(244).''.lang(245).''.lang(246).''.lang(92).''.lang(247).(support("comment")?''.lang(94):'')."
'.checkbox(($cc?"views[]":"tables[]"),$f,in_array($f,$Fe,true),"","formUncheck('check-all');"),''.h($f).'';if($cc){echo''.lang(99).'','?';}else{foreach(array("Engine"=>"","Collation"=>"","Data_length"=>"create","Index_length"=>"indexes","Data_free"=>"edit","Auto_increment"=>"auto_increment=1&create","Rows"=>"select")as$d=>$w){echo($w?"?":" ");}}echo(support("comment")?" ":"");}echo"
 ".lang(223,count($jd)),"".nbsp($v=="sql"?$g->result("SELECT @@storage_engine"):""),"".nbsp(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$d){echo" ";}echo"
\n";if(!information_schema(DB)){echo"

".($v=="sql"?" ":"")." \n";$_=(support("scheme")?schemas():get_databases());if(count($_)!=1&&$v!="sqlite"){$t=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"

".lang(253).": ",($_?adminer_html_select("target",$_,$t):'')," ",(support("copy")?" ":""),"\n";}echo"\n";}echo"

\n";}echo'

'.lang(148)."\n";if(support("view")){echo''.lang(180)."\n";}if(support("routine")){echo"

".lang(116)."

\n";$Ue=routines();if($Ue){echo"\n",'\n";odd('');foreach($Ue as$a){echo'','
'.lang(181).''.lang(89).''.lang(198)." 
'.h($a["ROUTINE_NAME"]).'',''.h($a["ROUTINE_TYPE"]),''.h($a["DTD_IDENTIFIER"]),''.lang(107)."";}echo"
\n";}echo'

'.lang(197).' '.lang(196)."\n";}if(support("sequence")){echo"

".lang(256)."

\n";$ff=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema()");if($ff){echo"\n","\n";odd('');foreach($ff as$b){echo"
".lang(181)."
".h($b)."\n";}echo"
\n";}echo"

".lang(203)."\n";}if(support("type")){echo"

".lang(11)."

\n";$R=types();if($R){echo"\n","\n";odd('');foreach($R as$b){echo"
".lang(181)."
".h($b)."\n";}echo"
\n";}echo"

".lang(207)."\n";}if(support("event")){echo"

".lang(117)."

\n";$H=get_rows("SHOW EVENTS");if($H){echo"\n","\n";foreach($H as$a){echo"",'
".lang(181)."".lang(257)."".lang(187)."".lang(188)."
'.h($a["Name"])."","".($a["Execute at"]?lang(258)."".$a["Execute at"]:lang(189)." ".$a["Interval value"]." ".$a["Interval field"]."$a[Starts]"),"$a[Ends]";}echo"
\n";}echo'

'.lang(186)."\n";}if($jd){echo"\n";}}}}page_footer();