mirror of
https://github.com/tennc/webshell
synced 2024-11-29 06:30:20 +00:00
1632 lines
381 KiB
PHP
1632 lines
381 KiB
PHP
|
<?php
|
||
|
/** Adminer - Compact database management
|
||
|
* @link http://www.adminer.org/
|
||
|
* @author Jakub Vrana, http://www.vrana.cz/
|
||
|
* @copyright 2007 Jakub Vrana
|
||
|
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
|
||
|
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
|
||
|
* @version 3.5.1
|
||
|
*/error_reporting(6135);$fc=!ereg('^(unsafe_raw)?$',ini_get("filter.default"));if($fc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$W){$dg=filter_input_array(constant("INPUT$W"),FILTER_UNSAFE_RAW);if($dg)$$W=$dg;}}if(isset($_GET["file"])){header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo
|
||
|
base64_decode("AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAA/wBhTgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERERAAAAAAETMzEQAAAAATERExAAAAABMRETEAAAAAExERMQAAAAATERExAAAAABMRETEAAAAAEzMzMREREQATERExEhEhABEzMxEhEREAAREREhERIRAAAAARIRESEAAAAAESEiEQAAAAABEREQAAAAAAAAAAD//9UAwP/VAIB/AACAf/AAgH+kAIB/gACAfwAAgH8AAIABAACAAf8AgAH/AMAA/wD+AP8A/wAIAf+B1QD//9UA");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo'body{color:#000;background:#fff;font:90%/1.25 Verdana,Arial,Helvetica,sans-serif;margin:0;}a{color:blue;}a:visited{color:navy;}a:hover{color:red;}a.text{text-decoration:none;}h1{font-size:150%;margin:0;padding:.8em 1em;border-bottom:1px solid #999;font-weight:normal;color:#777;background:#eee;}h2{font-size:150%;margin:0 0 20px -18px;padding:.8em 1em;border-bottom:1px solid #000;color:#000;font-weight:normal;background:#ddf;}h3{font-weight:normal;font-size:130%;margin:1em 0 0;}form{margin:0;}table{margin:1em 20px 0 0;border:0;border-top:1px solid #999;border-left:1px solid #999;font-size:90%;}td,th{border:0;border-right:1px solid #999;border-bottom:1px solid #999;padding:.2em .3em;}th{background:#eee;text-align:left;}thead th{text-align:center;}thead td,thead th{background:#ddf;}fieldset{display:inline;vertical-align:top;padding:.5em .8em;margin:.8em .5em 0 0;border:1px solid #999;}p{margin:.8em 20px 0 0;}img{vertical-align:middle;border:0;}td img{max-width:200px;max-height:200px;}code{background:#eee;}tbody tr:hover td,tbody tr:hover th{background:#eee;}pre{margin:1em 0 0;}input[type=image]{vertical-align:middle;}.version{color:#777;font-size:67%;}.js .hidden,.nojs .jsonly{display:none;}.js .column{position:absolute;background:#ddf;padding:.3em 1ex .3em 0;margin-top:-.3em;}.nowrap td,.nowrap th,td.nowrap{white-space:pre;}.wrap td{white-space:normal;}.error{color:red;background:#fee;}.error b{background:#fff;font-weight:normal;}.message{color:green;background:#efe;}.error,.message{padding:.5em .8em;margin:1em 20px 0 0;}.char{color:#007F00;}.date{color:#7F007F;}.enum{color:#007F7F;}.binary{color:red;}.odd td{background:#F5F5F5;}.js .checked td,.js .checked th{background:#ddf;}.time{color:silver;font-size:70%;}.function{text-align:right;}.number{text-align:right;}.datetime{text-align:right;}.type{width:15ex;width:auto\\9;}.options select{width:20ex;width:auto\\9;}.active{font-weight:bold;}.sqlarea{width:98%;}.icon{width:18px;height:18px;}#menu{position:absolute;margin:10px 0 0;padding:0 0 30px 0;top:2em;left:0;width:19em;white-space:nowrap;}#menu p{padding:.8em 1em;margin:0;border-bottom:1px solid #ccc;}#dbs{overflow:hidden;}#logins,#tables{overflow:auto;}#logins a,#tables a{background:#fff;}#content{margin:2em 0 0 21em;padding:10px 20px 20px 0;}#lang{position:absolute;top:0;left:0;line-height:1.8em;padding:.3em 1em;}#breadcrumb{white-space:nowrap;position:absolute;top:0;left:21em;background:#eee;height:2em;line-height:1.8em;padding:0 1em;margin:0 0 0 -18px;}#h1{color:#777;text-decoration:none;font-style:italic;}#version{font-size:67%;color:red;}#schema{margin-left:60px;position:relative;-moz-user-select:none;-webkit-user-select:none;}#schema .table{border:1px solid silver;padding:0 2px;cursor:move;position:absolute;}#schema .references{position:absolute;}.rtl h2{margin:0 -18px 20px 0;}.rtl p,.rtl table,.rtl .error,.rtl .message{margin:1em 0 0 20px;}.rtl #content{margin:2em 21em 0 0;padding:10px 0 20px 20px;}.rtl #breadcrumb{left:auto;right:21em;margin:0 -18px 0 0;}.rtl #lang,.rtl #menu{left:auto;right:0;}@media print{#lang,#menu{display:none;}#content{margin-left:1em;}#breadcrumb{left:1em;}.nowrap td,.nowrap th,td.nowrap{white-space:normal;}}';}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");?>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
|
||
|
parentTag(el,tag){var
|
||
|
re=new
|
||
|
RegExp('^'+tag+'$','i');while(!re.test(el.tagName)){el=el.parentNode;}return el;}function
|
||
|
trCheck(el){var
|
||
|
tr=parentTag(el,'tr');tr.className=tr.className.replace(/(^|\s)checked(\s|$)/,'$2')+(el.checked?' checked':'');}function
|
||
|
formCheck(el,name){var
|
||
|
elems=el.form.elements;for(var
|
||
|
i=0;i<elems.length;i++){if(name.test(elems[i].name)){elems[i].checked=el.checked;trCheck(elems[i]);}}}function
|
||
|
tableCheck(){var
|
||
|
tables=document.getElementsByTagName('table');for(var
|
||
|
i=0;i<tables.length;i++){if(/(^|\s)checkable(\s|$)/.test(tables[i].className)){var
|
||
|
trs=tables[i].getElementsByTagName('tr');for(var
|
||
|
j=0;j<trs.length;j++){trCheck(trs[j].firstChild.firstChild);}}}}function
|
||
|
formUncheck(id){var
|
||
|
el=document.getElementById(id);el.checked=false;trCheck(el);}function
|
||
|
formChecked(el,name){var
|
||
|
checked=0;var
|
||
|
elems=el.form.elements;for(var
|
||
|
i=0;i<elems.length;i++){if(name.test(elems[i].name)&&elems[i].checked){checked++;}}return checked;}function
|
||
|
tableClick(event){var
|
||
|
click=(!window.getSelection||getSelection().isCollapsed);var
|
||
|
el=event.target||event.srcElement;while(!/^tr$/i.test(el.tagName)){if(/^(table|a|input|textarea)$/i.test(el.tagName)){if(el.type!='checkbox'){return;}checkboxClick(event,el);click=false;}el=el.parentNode;}el=el.firstChild.firstChild;if(click){el.click&&el.click();el.onclick&&el.onclick();}trCheck(el);}var
|
||
|
lastChecked;function
|
||
|
checkboxClick(event,el){if(!el.name){return;}if(event.shiftKey&&(!lastChecked||lastChecked.name==el.name)){var
|
||
|
checked=(lastChecked?lastChecked.checked:true);var
|
||
|
inputs=parentTag(el,'table').getElementsByTagName('input');var
|
||
|
checking=!lastChecked;for(var
|
||
|
i=0;i<inputs.length;i++){var
|
||
|
input=inputs[i];if(input.name===el.name){if(checking){input.checked=checked;trCheck(input);}if(input===el||input===lastChecked){if(checking){break;}checking=true;}}}}else{lastChecked=el;}}function
|
||
|
setHtml(id,html){var
|
||
|
el=document.getElementById(id);if(el){if(html==undefined){el.parentNode.innerHTML=' ';}else{el.innerHTML=html;}}}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):'');location.href=href;}}function
|
||
|
menuOver(el){el.style.overflow='visible';}function
|
||
|
menuOut(el){el.style.overflow='auto';}function
|
||
|
selectAddRow(field){field.onchange=function(){selectFieldChange(field.form);};field.onchange();var
|
||
|
row=field.parentNode.cloneNode(true);var
|
||
|
selects=row.getElementsByTagName('select');for(var
|
||
|
i=0;i<selects.length;i++){selects[i].name=selects[i].name.replace(/[a-z]\[\d+/,'$&1');selects[i].selectedIndex=0;}var
|
||
|
inputs=row.getElementsByTagName('input');if(inputs.length){inputs[0].name=inputs[0].name.replace(/[a-z]\[\d+/,'$&1');inputs[0].value='';inputs[0].className='';}field.parentNode.parentNode.appendChild(row);}function
|
||
|
columnMouse(el,className){var
|
||
|
spans=el.getElementsByTagName('span');for(var
|
||
|
i=0;i<spans.length;i++){if(/column/.test(spans[i].className)){spans[i].className='column'+(className||'');}}}function
|
||
|
selectSearch(name){var
|
||
|
el=document.getElementById('fieldset-search');el.className='';var
|
||
|
divs=el.getElementsByTagName('div');for(var
|
||
|
i=0;i<divs.length;i++){var
|
||
|
div=divs[i];if(/select/i.test(div.firstChild.tagName)&&selectValue(div.firstChild)==name){break;}}if(i==divs.length){div.firstChild.value=name;div.firstChild.onchange();}div.lastChild.focus();}function
|
||
|
bodyKeydown(event,button){var
|
||
|
target=event.target||event.srcElement;if(event.ctrlKey&&(event.keyCode==13||event.keyCode==10)&&!event.altKey&&!event.metaKey&&/select|textarea|input/i.test(target.tagName)){target.blur();if(button){target.form[button].click();}else{target.form.submit();}return false;}return true;}function
|
||
|
editingKeydown(event){if((event.keyCode==40||event.keyCode==38)&&event.ctrlKey&&!event.altKey&&!event.metaKey){var
|
||
|
target=event.target||event.srcElement;var
|
||
|
sibling=(event.keyCode==40?'nextSibling':'previousSibling');var
|
||
|
el=target.parentNode.parentNode[sibling];if(el&&(/^tr$/i.test(el.tagName)||(el=el[sibling]))&&/^tr$/i.test(el.tagName)&&(el=el.childNodes[nodePosition(target.parentNode)])&&(el=el.childNodes[nodePosition(target)])){el.focus();}return false;}if(event.shiftKey&&!bodyKeydown(event,'insert')){eventStop(event);return false;}return true;}function
|
||
|
functionChange(select){var
|
||
|
input=select.form[select.name.replace(/^function/,'fields')];if(selectValue(select)){if(input.origMaxLength===undefined){input.origMaxLength=input.maxLength;}input.removeAttribute('maxlength');}else
|
||
|
if(input.origMaxLength>=0){input.maxLength=input.origMaxLength;}}function
|
||
|
ajax(url,callback,data){var
|
||
|
request=(window.XMLHttpRequest?new
|
||
|
XMLHttpRequest():(window.ActiveXObject?new
|
||
|
ActiveXObject('Microsoft.XMLHTTP'):false));if(request){request.open((data?'POST':'GET'),url);if(data){request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');}request.setRequestHeader('X-Requested-With','XMLHttpRequest');request.onreadystatechange=function(){if(request.readyState==4){callback(request);}};request.send(data);}return request;}function
|
||
|
ajaxSetHtml(url){return ajax(url,function(request){if(request.status){var
|
||
|
data=eval('('+request.responseText+')');for(var
|
||
|
key
|
||
|
in
|
||
|
data){setHtml(key,data[key]);}}});}function
|
||
|
selectDblClick(td,event,text){if(/input|textarea/i.test(td.firstChild.tagName)){return;}var
|
||
|
original=td.innerHTML;var
|
||
|
input=document.createElement(text?'textarea':'input');input.onkeydown=function(event){if(!event){event=window.event;}if(event.keyCode==27&&!(event.ctrlKey||event.shiftKey||event.altKey||event.metaKey)){td.innerHTML=original;}};var
|
||
|
pos=event.rangeOffset;var
|
||
|
value=td.firstChild.alt||td.textContent||td.innerText;input.style.width=Math.max(td.clientWidth-14,20)+'px';if(text){var
|
||
|
rows=1;value.replace(/\n/g,function(){rows++;});input.rows=rows;}if(value=='\u00A0'||td.getElementsByTagName('i').length){value='';}if(document.selection){var
|
||
|
range=document.selection.createRange();range.moveToPoint(event.clientX,event.clientY);var
|
||
|
range2=range.duplicate();range2.moveToElementText(td);range2.setEndPoint('EndToEnd',range);pos=range2.text.length;}td.innerHTML='';td.appendChild(input);input.focus();if(text==2){return ajax(location.href+'&'+encodeURIComponent(td.id)+'=',function(request){if(request.status){input.value=request.responseText;input.name=td.id;}});}input.value=value;input.name=td.id;input.selectionStart=pos;input.selectionEnd=pos;if(document.selection){var
|
||
|
range=document.selection.createRange();range.moveEnd('character',-input.value.length+pos);range.select();}}function
|
||
|
eventStop(event){if(event.stopPropagation){event.stopPropagation();}else{event.cancelBubble=true;}}var
|
||
|
jushRoot=location.protocol + '//www.adminer.org/static/';function
|
||
|
bodyLoad(version){if(jushRoot){var
|
||
|
link=document.createElement('link');link.rel='stylesheet';link.type='text/css';link.href=jushRoot+'jush.css';document.getElementsByTagName('head')[0].appendChild(link);var
|
||
|
script=document.createElement('script');script.src=jushRoot+'jush.js';script.onload=function(){if(window.jush){jush.create_links=' target="_blank" rel="noreferrer"';jush.urls.sql_sqlset=jush.urls.sql[0]=jush.urls.sqlset[0]=jush.urls.sqlstatus[0]='http://dev.mysql.com/doc/refman/'+version+'/en/$key';var
|
||
|
pgsql='http://www.postgresql.org/docs/'+version+'/static/';jush.urls.pgsql_pgsqlset=jush.urls.pgsql[0]=pgsql+'$key';jush.urls.pgsqlset[0]=pgsql+'runtime-config-$key.html#GUC-$1';if(window.jushLinks){jush.custom_links=jushLinks;}jush.highlight_tag('code',0);}};script.onreadystatechange=function(){if(/^(loaded|complete)$/.test(script.readyState)){script.onload();}};document.body.appendChild(script);}}function
|
||
|
formField(form,name){for(var
|
||
|
i=0;i<form.length;i++){if(form[i].name==name){return form[i];}}}function
|
||
|
typePassword(el,disable){try{el.type=(disable?'text':'password');}catch(e){}}function
|
||
|
loginDriver(driver){var
|
||
|
trs=parentTag(driver,'table').rows;for(var
|
||
|
i=1;i<trs.length-1;i++){trs[i].className=(/sqlite/.test(driver.value)?'hidden':'');}}function
|
||
|
textareaKeydown(target,event){if(!event.shiftKey&&!event.altKey&&!event.ctrlKey&&!event.metaKey){if(event.keyCode==9){if(target.setSelectionRange){var
|
||
|
start=target.selectionStart;var
|
||
|
scrolled=target.scrollTop;target.value=target.value.substr(0,start)+'\t'+target.value.substr(target.selectionEnd);target.setSelectionRange(start+1,start+1);target.scrollTop=scrolled;return false;}else
|
||
|
if(target.createTextRange){document.selection.createRange().text='\t';return false;}}if(event.keyCode==27){var
|
||
|
els=target.form.elements;for(var
|
||
|
i=1;i<els.length;i++){if(els[i-1]==target){els[i].focus();break;}}return false;}}return true;}function
|
||
|
selectFieldChange(form){var
|
||
|
ok=(function(){var
|
||
|
inputs=form.getElementsByTagName('input');for(var
|
||
|
i=0;i<inputs.length;i++){if(inputs[i].value&&/^fulltext/.test(inputs[i].name)){return true;}}var
|
||
|
ok=form.limit.value;var
|
||
|
selects=form.getElementsByTagName('select');var
|
||
|
group=false;var
|
||
|
columns={};for(var
|
||
|
i=0;i<selects.length;i++){var
|
||
|
select=selects[i];var
|
||
|
col=selectValue(select);var
|
||
|
match=/^(where.+)col\]/.exec(select.name);if(match){var
|
||
|
op=selectValue(form[match[1]+'op]']);var
|
||
|
val=form[match[1]+'val]'].value;if(col
|
||
|
in
|
||
|
indexColumns&&(!/LIKE|REGEXP/.test(op)||(op=='LIKE'&&val.charAt(0)!='%'))){return true;}else
|
||
|
if(col||val){ok=false;}}if((match=/^(columns.+)fun\]/.exec(select.name))){if(/^(avg|count|count distinct|group_concat|max|min|sum)$/.test(col)){group=true;}var
|
||
|
val=selectValue(form[match[1]+'col]']);if(val){columns[col&&col!='count'?'':val]=1;}}if(col&&/^order/.test(select.name)){if(!(col
|
||
|
in
|
||
|
indexColumns)){ok=false;}break;}}if(group){for(var
|
||
|
col
|
||
|
in
|
||
|
columns){if(!(col
|
||
|
in
|
||
|
indexColumns)){ok=false;}}}return ok;})();setHtml('noindex',(ok?'':'!'));}var
|
||
|
added='.',rowCount;function
|
||
|
delimiterEqual(val,a,b){return(val==a+'_'+b||val==a+b||val==a+b.charAt(0).toUpperCase()+b.substr(1));}function
|
||
|
idfEscape(s){return s.replace(/`/,'``');}function
|
||
|
editingNameChange(field){var
|
||
|
name=field.name.substr(0,field.name.length-7);var
|
||
|
type=formField(field.form,name+'[type]');var
|
||
|
opts=type.options;var
|
||
|
candidate;var
|
||
|
val=field.value;for(var
|
||
|
i=opts.length;i--;){var
|
||
|
match=/(.+)`(.+)/.exec(opts[i].value);if(!match){if(candidate&&i==opts.length-2&&val==opts[candidate].value.replace(/.+`/,'')&&name=='fields[1]'){return;}break;}var
|
||
|
table=match[1];var
|
||
|
column=match[2];var
|
||
|
tables=[table,table.replace(/s$/,''),table.replace(/es$/,'')];for(var
|
||
|
j=0;j<tables.length;j++){table=tables[j];if(val==column||val==table||delimiterEqual(val,table,column)||delimiterEqual(val,column,table)){if(candidate){return;}candidate=i;break;}}}if(candidate){type.selectedIndex=candidate;type.onchange();}}function
|
||
|
editingAddRow(button,allowed,focus){if(allowed&&rowCount>=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=parentTag(button,'tr');var
|
||
|
row2=row.cloneNode(true);var
|
||
|
tags=row.getElementsByTagName('select');var
|
||
|
tags2=row2.getElementsByTagName('select');for(var
|
||
|
i=0;i<tags.length;i++){tags2[i].name=tags[i].name.replace(/([0-9.]+)/,x);tags2[i].selectedIndex=tags[i].selectedIndex;}tags=row.getElementsByTagName('input');tags2=row2.getElementsByTagName('input');var
|
||
|
input=tags2[0];for(var
|
||
|
i=0;i<tags.length;i++){if(tags[i].name=='auto_increment_col'){tags2[i].value=x;tags2[i].checked=false;}tags2[i].name=tags[i].name.replace(/([0-9.]+)/,x);if(/\[(orig|field|comment|default)/.test(tags[i].name)){tags2[i].value='';}if(/\[(has_default)/.test(tags[i].name)){tags2[i].checked=false;}}tags[0].onchange=function(){editingNameChange(tags[0]);};row.parentNode.insertBefore(row2,row.nextSibling);if(focus){input.onchange=function(){editingNameChange(input);};input.focus();}added+='0';rowCount++;return true;}function
|
||
|
editingRemoveRow(button){var
|
||
|
field=formField(button.form,button.name.replace(/drop_col(.+)/,'fields$1[field]'));field.parentNode.removeChild(field);parentTag(button,'tr').style.display='none';return true;}var
|
||
|
lastType='';function
|
||
|
editingTypeChange(type){var
|
||
|
name=type.name.substr(0,type.name.length-6);var
|
||
|
text=selectValue(type);for(var
|
||
|
i=0;i<type.form.elements.length;i++){var
|
||
|
el=type.form.elements[i];if(el.name==name+'[length]'&&!((/(char|binary)$/.test(lastType)&&/(char|binary)$/.test(text))||(/(enum|set)$/.test(lastType)&&/(enum|set)$/.test(text)))){el.value='';}if(lastType=='timestamp'&&el.name==name+'[has_default]'&&/timestamp/i.test(formField(type.form,name+'[default]').value)){el.checked=false;}if(el.name==name+'[collation]'){el.className=(/(char|text|enum|set)$/.test(text)?'':'hidden');}if(el.name==name+'[unsigned]'){el.className=(/(int|float|double|decimal)$/.test(text)?'':'hidden');}if(el.name==name+'[on_delete]'){el.className=(/`/.test(text)?'':'hidden');}}}function
|
||
|
editingLengthFocus(field){var
|
||
|
td=field.parentNode;if(/(enum|set)$/.test(selectValue(td.previousSibling.firstChild))){var
|
||
|
edit=document.getElementById('enum-edit');var
|
||
|
val=field.value;edit.value=(/^'.+','.+'$/.test(val)?val.substr(1,val.length-2).replace(/','/g,"\n").replace(/''/g,"'"):val);td.appendChild(edit);field.style.display='none';edit.style.display='inline';edit.focus();}}function
|
||
|
editingLengthBlur(edit){var
|
||
|
field=edit.parentNode.firstChild;var
|
||
|
val=edit.value;field.value=(/\n/.test(val)?"'"+val.replace(/\n+$/,'').replace(/'/g,"''").replace(/\n/g,"','")+"'":val);field.style.display='inline';edit.style.display='none';}function
|
||
|
columnShow(checked,column){var
|
||
|
trs=document.getElementById('edit-fields').getElementsByTagName('tr');for(var
|
||
|
i=0;i<trs.length;i++){trs[i].getElementsByTagName('td')[column].className=(checked?'':'hidden');}}function
|
||
|
partitionByChange(el){var
|
||
|
partitionTable=/RANGE|LIST/.test(selectValue(el));el.form['partitions'].className=(partitionTable||!el.selectedIndex?'hidden':'');document.getElementById('partition-table').className=(partitionTable?'':'hidden');}function
|
||
|
partitionNameChange(el){var
|
||
|
row=parentTag(el,'tr').cloneNode(true);row.firstChild.firstChild.value='';parentTag(el,'table').appendChild(row);el.onchange=function(){};}function
|
||
|
foreignAddRow(field){field.onchange=function(){};var
|
||
|
row=parentTag(field,'tr').cloneNode(true);var
|
||
|
selects=row.getElementsByTagName('select');for(var
|
||
|
i=0;i<selects.length;i++){selects[i].name=selects[i].name.replace(/\]/,'1$&');selects[i].selectedIndex=0;}parentTag(field,'table').appendChild(row);}function
|
||
|
indexesAddRow(field){field.onchange=function(){};var
|
||
|
row=parentTag(field,'tr').cloneNode(true);var
|
||
|
selects=row.getElementsByTagName('select');for(var
|
||
|
i=0;i<selects.length;i++){selects[i].name=selects[i].name.replace(/indexes\[\d+/,'$&1');selects[i].selectedIndex=0;}var
|
||
|
inputs=row.getElementsByTagName('input');for(var
|
||
|
i=0;i<inputs.length;i++){inputs[i].name=inputs[i].name.replace(/indexes\[\d+/,'$&1');inputs[i].value='';}parentTag(field,'table').appendChild(row);}function
|
||
|
indexesChangeColumn(field,prefix){var
|
||
|
columns=parentTag(field,'td').getElementsByTagName('select');var
|
||
|
names=[];for(var
|
||
|
i=0;i<columns.length;i++){var
|
||
|
value=selectValue(columns[i]);if(value){names.push(value);}}field.form[field.name.replace(/\].*/,'][name]')].value=prefix+names.join('_');}function
|
||
|
indexesAddColumn(field,prefix){field.onchange=function(){indexesChangeColumn(field,prefix);};var
|
||
|
select=field.form[field.name.replace(/\].*/,'][type]')];if(!select.selectedIndex){select.selectedIndex=3;select.onchange();}var
|
||
|
column=field.parentNode.cloneNode(true);select=column.getElementsByTagName('select')[0];select.name=select.name.replace(/\]\[\d+/,'$&1');select.selectedIndex=0;var
|
||
|
input=column.getElementsByTagName('input')[0];input.name=input.name.replace(/\]\[\d+/,'$&1');input.value='';parentTag(field,'td').appendChild(column);field.onchange();}var
|
||
|
that,x,y;function
|
||
|
schemaMousedown(el,event){if((event.which?event.which:event.button)==1){that=el;x=event.clientX-el.offsetLeft;y=event.clientY-el.offsetTop;}}function
|
||
|
schemaMousemove(ev){if(that!==undefined){ev=ev||event;var
|
||
|
left=(ev.clientX-x)/em;var
|
||
|
top=(ev.clientY-y)/em;var
|
||
|
divs=that.getElementsByTagName('div');var
|
||
|
lineSet={};for(var
|
||
|
i=0;i<divs.length;i++){if(divs[i].className=='references'){var
|
||
|
div2=document.getElementById((/^refs/.test(divs[i].id)?'refd':'refs')+divs[i].id.substr(4));var
|
||
|
ref=(tablePos[divs[i].title]?tablePos[divs[i].title]:[div2.parentNode.offsetTop/em,0]);var
|
||
|
left1=-1;var
|
||
|
id=divs[i].id.replace(/^ref.(.+)-.+/,'$1');if(divs[i].parentNode!=div2.parentNode){left1=Math.min(0,ref[1]-left)-1;divs[i].style.left=left1+'em';divs[i].getElementsByTagName('div')[0].style.width=-left1+'em';var
|
||
|
left2=Math.min(0,left-ref[1])-1;div2.style.left=left2+'em';div2.getElementsByTagName('div')[0].style.width=-left2+'em';}if(!lineSet[id]){var
|
||
|
line=document.getElementById(divs[i].id.replace(/^....(.+)-.+$/,'refl$1'));var
|
||
|
top1=top+divs[i].offsetTop/em;var
|
||
|
top2=top+div2.offsetTop/em;if(divs[i].parentNode!=div2.parentNode){top2+=ref[0]-top;line.getElementsByTagName('div')[0].style.height=Math.abs(top1-top2)+'em';}line.style.left=(left+left1)+'em';line.style.top=Math.min(top1,top2)+'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);}}<?php
|
||
|
}else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo
|
||
|
base64_decode("R0lGODdhEgASAKEAAO7u7gAAAJmZmQAAACwAAAAAEgASAAACIYSPqcvtD00I8cwqKb5v+q8pIAhxlRmhZYi17iPE8kzLBQA7");break;case"cross.gif":echo
|
||
|
base64_decode("R0lGODdhEgASAKEAAO7u7gAAAJmZmQAAACwAAAAAEgASAAACI4SPqcvtDyMKYdZGb355wy6BX3dhlOEx57FK7gtHwkzXNl0AADs=");break;case"up.gif":echo
|
||
|
base64_decode("R0lGODdhEgASAKEAAO7u7gAAAJmZmQAAACwAAAAAEgASAAACIISPqcvtD00IUU4K730T9J5hFTiKEXmaYcW2rgDH8hwXADs=");break;case"down.gif":echo
|
||
|
base64_decode("R0lGODdhEgASAKEAAO7u7gAAAJmZmQAAACwAAAAAEgASAAACIISPqcvtD00I8cwqKb5bV/5cosdMJtmcHca2lQDH8hwXADs=");break;case"arrow.gif":echo
|
||
|
base64_decode("R0lGODlhCAAKAIAAAICAgP///yH5BAEAAAEALAAAAAAIAAoAAAIPBIJplrGLnpQRqtOy3rsAADs=");break;}}exit;}function
|
||
|
connection(){global$g;return$g;}function
|
||
|
adminer(){global$b;return$b;}function
|
||
|
idf_unescape($r){$Wc=substr($r,-1);return
|
||
|
str_replace($Wc.$Wc,$Wc,substr($r,1,-1));}function
|
||
|
escape_string($W){return
|
||
|
substr(q($W),1,-1);}function
|
||
|
remove_slashes($Ce,$fc=false){if(get_magic_quotes_gpc()){while(list($v,$W)=each($Ce)){foreach($W
|
||
|
as$Qc=>$V){unset($Ce[$v][$Qc]);if(is_array($V)){$Ce[$v][stripslashes($Qc)]=$V;$Ce[]=&$Ce[$v][stripslashes($Qc)];}else$Ce[$v][stripslashes($Qc)]=($fc?$V:stripslashes($V));}}}}function
|
||
|
bracket_escape($r,$Da=false){static$Qf=array(':'=>':1',']'=>':2','['=>':3');return
|
||
|
strtr($r,($Da?array_flip($Qf):$Qf));}function
|
||
|
h($L){return
|
||
|
htmlspecialchars(str_replace("\0","",$L),ENT_QUOTES);}function
|
||
|
nbsp($L){return(trim($L)!=""?h($L):" ");}function
|
||
|
nl_br($L){return
|
||
|
str_replace("\n","<br>",$L);}function
|
||
|
checkbox($_,$X,$Oa,$Uc="",$Nd="",$Pc=false){static$q=0;$q++;$F="<input type='checkbox' name='$_' value='".h($X)."'".($Oa?" checked":"").($Nd?' onclick="'.h($Nd).'"':'').($Pc?" class='jsonly'":"")." id='checkbox-$q'>";return($Uc!=""?"<label for='checkbox-$q'>$F".h($Uc)."</label>":$F);}function
|
||
|
optionlist($Rd,$cf=null,$jg=false){$F="";foreach($Rd
|
||
|
as$Qc=>$V){$Sd=array($Qc=>$V);if(is_array($V)){$F.='<optgroup label="'.h($Qc).'">';$Sd=$V;}foreach($Sd
|
||
|
as$v=>$W)$F.='<option'.($jg||is_string($v)?' value="'.h($v).'"':'').(($jg||is_string($v)?(string)$v:$W)===$cf?' selected':'').'>'.h($W);if(is_array($V))$F.='</optgroup>';}return$F;}function
|
||
|
html_select($_,$Rd,$X="",$Md=true){if($Md)return"<select name='".h($_)."'".(is_string($Md)?' onchange="'.h($Md).'"':"").">".optionlist($Rd,$X)."</select>";$F="";foreach($Rd
|
||
|
as$v=>$W)$F.="<label><input type='radio' name='".h($_)."' value='".h($v)."'".($v==$X?" checked":"").">".h($W)."</label>";return$F;}function
|
||
|
confirm($fb=""){return" onclick=\"return confirm('".lang(0).($fb?" (' + $fb + ')":"")."');\"";}function
|
||
|
print_fieldset($q,$bd,$pg=false,$Nd=""){echo"<fieldset><legend><a href='#fieldset-$q' onclick=\"".h($Nd)."return !toggle('fieldset-$q');\">$bd</a></legend><div id='fieldset-$q'".($pg?"":" class='hidden'").">\n";}function
|
||
|
bold($Ia){return($Ia?" class='active'":"");}function
|
||
|
odd($F=' class="odd"'){static$p=0;if(!$F)$p=-1;return($p++%
|
||
|
2?$F:'');}function
|
||
|
js_escape($L){return
|
||
|
addcslashes($L,"\r\n'\\/");}function
|
||
|
json_row($v,$W=null){static$gc=true;if($gc)echo"{";if($v!=""){echo($gc?"":",")."\n\t\"".addcslashes($v,"\r\n\"\\").'": '.($W!==null?'"'.addcslashes($W,"\r\n\"\\").'"':'undefined');$gc=false;}else{echo"\n}\n";$gc=true;}}function
|
||
|
ini_bool($Hc){$W=ini_get($Hc);return(eregi('^(on|true|yes)$',$W)||(int)$W);}function
|
||
|
sid(){static$F;if($F===null)$F=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$F;}function
|
||
|
q($L){global$g;return$g->quote($L);}function
|
||
|
get_vals($D,$e=0){global$g;$F=array();$E=$g->query($D);if(is_object($E)){while($G=$E->fetch_row())$F[]=$G[$e];}return$F;}function
|
||
|
get_key_vals($D,$h=null){global$g;if(!is_object($h))$h=$g;$F=array();$E=$h->query($D);if(is_object($E)){while($G=$E->fetch_row())$F[$G[0]]=$G[1];}return$F;}function
|
||
|
get_rows($D,$h=null,$k="<p class='error'>"){global$g;$bb=(is_object($h)?$h:$g);$F=array();$E=$bb->query($D);if(is_object($E)){while($G=$E->fetch_assoc())$F[]=$G;}elseif(!$E&&!is_object($h)&&$k&&defined("PAGE_HEADER"))echo$k.error()."\n";return$F;}function
|
||
|
unique_array($G,$t){foreach($t
|
||
|
as$s){if(ereg("PRIMARY|UNIQUE",$s["type"])){$F=array();foreach($s["columns"]as$v){if(!isset($G[$v]))continue
|
||
|
2;$F[$v]=$G[$v];}return$F;}}$F=array();foreach($G
|
||
|
as$v=>$W){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$v))$F[$v]=$W;}return$F;}function
|
||
|
where($Z){global$u;$F=array();foreach((array)$Z["where"]as$v=>$W)$F[]=idf_escape(bracket_escape($v,1)).(($u=="sql"&&ereg('\\.',$W))||$u=="mssql"?" LIKE ".exact_value(addcslashes($W,"%_\\")):" = ".exact_value($W));foreach((array)$Z["null"]as$v)$F[]=idf_escape($v)." IS NULL";return
|
||
|
implode(" AND ",$F);}function
|
||
|
where_check($W){parse_str($W,$Na);remove_slashes(array(&$Na));return
|
||
|
where($Na);}function
|
||
|
where_link($p,$e,$X,$Od="="){return"&where%5B$p%5D%5Bcol%5D=".urlencode($e)."&where%5B$p%5D%5Bop%5D=".urlencode(($X!==null?$Od:"IS NULL"))."&where%5B$p%5D%5Bval%5D=".urlencode($X);}function
|
||
|
cookie($_,$X){global$ba;$he=array($_,(ereg("\n",$X)?"":$X),time()+2592000,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0)$he[]=true;return
|
||
|
call_user_func_array('setcookie',$he);}function
|
||
|
restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function&get_session($v){return$_SESSION[$v][DRIVER][SERVER][$_GET["username"]];}function
|
||
|
set_session($v,$W){$_SESSION[$v][DRIVER][SERVER][$_GET["username"]]=$W;}function
|
||
|
auth_url($wb,$J,$U,$j=null){global$xb;preg_match('~([^?]*)\\??(.*)~',remove_from_uri(implode("|",array_keys($xb))."|username|".($j!==null?"db|":"").session_name()),$z);return"$z[1]?".(sid()?SID."&":"").($wb!="server"||$J!=""?urlencode($wb)."=".urlencode($J)."&":"")."username=".urlencode($U).($j!=""?"&db=".urlencode($j):"").($z[2]?"&$z[2]":"");}function
|
||
|
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
|
||
|
redirect($fd,$qd=null){if($qd!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($fd!==null?$fd:$_SERVER["REQUEST_URI"]))][]=$qd;}if($fd!==null){if($fd=="")$fd=".";header("Location: $fd");exit;}}function
|
||
|
query_redirect($D,$fd,$qd,$He=true,$Ub=true,$bc=false){global$g,$k,$b;if($Ub)$bc=!$g->query($D);$lf="";if($D)$lf=$b->messageQuery("$D;");if($bc){$k=error().$lf;return
|
||
|
false;}if($He)redirect($fd,$qd.$lf);return
|
||
|
true;}function
|
||
|
queries($D=null){global$g;static$Fe=array();if($D===null)return
|
||
|
implode(";\n",$Fe);$Fe[]=(ereg(';$',$D)?"DELIMITER ;;\n$D;\nDELIMITER ":$D);return$g->query($D);}function
|
||
|
apply_queries($D,$P,$Pb='table'){foreach($P
|
||
|
as$N){if(!queries("$D ".$Pb($N)))return
|
||
|
false;}return
|
||
|
true;}function
|
||
|
queries_redirect($fd,$qd,$He){return
|
||
|
query_redirect(queries(),$fd,$qd,$He,false,!$He);}function
|
||
|
remove_from_uri($ge=""){return
|
||
|
substr(preg_replace("~(?<=[?&])($ge".(SID?"":"|".session_name()).")=[^&]*&~",'',"$_SERVER[REQUEST_URI]&"),0,-1);}function
|
||
|
pagination($fe,$kb){return" ".($fe==$kb?$fe+1:'<a href="'.h(remove_from_uri("page").($fe?"&page=$fe":"")).'">'.($fe+1)."</a>");}function
|
||
|
get_file($v,$pb=false){$dc=$_FILES[$v];if(!$dc||$dc["error"])return$dc["error"];$F=file_get_contents($pb&&ereg('\\.gz$',$dc["name"])?"compress.zlib://$dc[tmp_name]":($pb&&ereg('\\.bz2$',$dc["name"])?"compress.bzip2://$dc[tmp_name]":$dc["tmp_name"]));if($pb){$mf=substr($F,0,3);if(function_exists("iconv")&&ereg("^\xFE\xFF|^\xFF\xFE",$mf,$Ne))$F=iconv("utf-16","utf-8",$F);elseif($mf=="\xEF\xBB\xBF")$F=substr($F,3);}return$F;}function
|
||
|
upload_error($k){$od=($k==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($k?lang(1).($od?" ".lang(2,$od):""):lang(3));}function
|
||
|
repeat_pattern($oe,$w){return
|
||
|
str_repeat("$oe{0,65535}",$w/65535)."$oe{0,".($w
|
||
|
%
|
||
|
65535)."}";}function
|
||
|
is_utf8($W){return(preg_match('~~u',$W)&&!preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~',$W));}function
|
||
|
shorten_utf8($L,$w=80,$sf=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{FFFF}]",$w).")($)?)u",$L,$z))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$w).")($)?)",$L,$z);return
|
||
|
h($z[1]).$sf.(isset($z[2])?"":"<i>...</i>");}function
|
||
|
friendly_url($W){return
|
||
|
preg_replace('~[^a-z0-9_]~i','-',$W);}function
|
||
|
hidden_fields($Ce,$Cc=array()){while(list($v,$W)=each($Ce)){if(is_array($W)){foreach($W
|
||
|
as$Qc=>$V)$Ce[$v."[$Qc]"]=$V;}elseif(!in_array($v,$Cc))echo'<input type="hidden" name="'.h($v).'" value="'.h($W).'">';}}function
|
||
|
hidden_fields_get(){echo(sid()?'<input type="hidden" name="'.session_name().'" value="'.h(session_id()).'">':''),(SERVER!==null?'<input type="hidden" name="'.DRIVER.'" value="'.h(SERVER).'">':""),'<input type="hidden" name="username" value="'.h($_GET["username"]).'">';}function
|
||
|
column_foreign_keys($N){global$b;$F=array();foreach($b->foreignKeys($N)as$n){foreach($n["source"]as$W)$F[$W][]=$n;}return$F;}function
|
||
|
enum_input($S,$_a,$l,$X,$Hb=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$jd);$F=($Hb!==null?"<label><input type='$S'$_a value='$Hb'".((is_array($X)?in_array($Hb,$X):$X===0)?" checked":"")."><i>".lang(4)."</i></label>":"");foreach($jd[1]as$p=>$W){$W=stripcslashes(str_replace("''","'",$W));$Oa=(is_int($X)?$X==$p+1:(is_array($X)?in_array($p+1,$X):$X===$W));$F.=" <label><input type='$S'$_a value='".($p+1)."'".($Oa?' checked':'').'>'.h($b->editVal($W,$l)).'</label>';}return$F;}function
|
||
|
input($l,$X,$o){global$T,$b,$u;$_=h(bracket_escape($l["field"]));echo"<td class='function'>";$Pe=($u=="mssql"&&$l["auto_increment"]);if($Pe&&!$_POST["save"])$o=null;$rc=(isset($_GET["select"])||$Pe?array("orig"=>lang(5)):array())+$b->editFunctions($l);$_a=" name='fields[$_]'";if($l["type"]=="enum")echo
|
||
|
nbsp($rc[""])."<td>".$b->editInput($_GET["edit"],$l,$_a,$X);else{$gc=0;foreach($rc
|
||
|
as$v=>$W){if($v===""||!$W)break;$gc++;}$Md=($gc?" onchange=\"var f = this.form['function[".h(js_escape(bracket_escape($l["field"])))."]']; if ($gc > f.selectedIndex) f.selectedIndex = $gc;\"":"");$_a.=$Md;echo(count($rc)>1?html_select("function[$_]",$rc,$o===null||in_array($o,$rc)||isset($rc[$o])?$o:"","functionChange(this);"):nbsp(reset($rc))).'<td>';$Jc=$b->editInput($_GET["edit"],$l,$_a,$X);if($Jc!="")echo$Jc;elseif($l["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$jd);foreach($jd[1]as$p=>$W){$W=stripcslashes(str_replace("''","'",$W));$Oa=(is_int($X)?($X>>$p)&1:in_array($W,explode(",",$X),true));echo" <label><input type='checkbox' name='fields[$_][$p]' value='".(1<<$p)."'".($Oa?' checked':'')."$Md>".h($b->editVal($W,$l)).'</label>';}}elseif(ereg('blob|bytea|raw|file',$l["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$_'$Md>";elseif(ereg('text|lob',$l["type"]))echo"<textarea ".($u!="sqlite"||ereg("\n",$X)?"cols='50' rows='12'":"cols='30' rows='1' style='height: 1.2em;'")."$_a>".h($X).'</textarea>';else{$pd=(!ereg('int',$l["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$l["length"],$z)?((ereg("binary",$l["type"])?2:1)*$z[1]+($z[3]?1:0)+($z[2]&&!$l["unsigned"]?1:0)):($T[$l["type"]]?$T[$l["type"]]+($l["unsigned"]?0:1):0));echo"<input value='".h($X)."'".($pd?" maxlength='$pd'":"").(ereg('char|binary',$l["type"])&&$pd>20?" size='40'":"")."$_a>";}}}function
|
||
|
process_input($l){global$b;$r=bracket_escape($l["field"]);$o=$_POST["function"][$r];$X=$_POST["fields"][$r];if($l["type"]=="enum"){if($X==-1)return
|
||
|
false;if($X=="")return"NULL";return+$X;}if($l["auto_increment"]&&$X=="")return
|
||
|
null;if($o=="orig")return($l["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($l["field"]):false);if($o=="NULL")return"NULL";if($l["type"]=="set")return
|
||
|
array_sum((array)$X);if(ereg('blob|bytea|raw|file',$l["type"])&&ini_bool("file_uploads")){$dc=get_file("fields-$r");if(!is_string($dc))return
|
||
|
false;return
|
||
|
q($dc);}return$b->processInput($l,$X,$o);}function
|
||
|
search_tables(){global$b,$g;$_GET["where"][0]["op"]="LIKE %%";$_GET["where"][0]["val"]=$_POST["query"];$mc=false;foreach(table_status()as$N=>$O){$_=$b->tableName($O);if(isset($O["Engine"])&&$_!=""&&(!$_POST["tables"]||in_array($N,$_POST["tables"]))){$E=$g->query("SELECT".limit("1 FROM ".table($N)," WHERE ".implode(" AND ",$b->selectSearchProcess(fields($N),array())),1));if($E->fetch_row()){if(!$mc){echo"<ul>\n";$mc=true;}echo"<li><a href='".h(ME."select=".urlencode($N)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$_</a>\n";}}}echo($mc?"</ul>":"<p class='message'>".lang(6))."\n";}function
|
||
|
dump_headers($Bc,$yd=false){global$b;$F=$b->dumpHeaders($Bc,$yd);$de=$_POST["output"];if($de!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($Bc).".$F".($de!="file"&&!ereg('[^0-9a-z]',$de)?".$de":""));session_write_close();return$F;}function
|
||
|
dump_csv($G){foreach($G
|
||
|
as$v=>$W){if(preg_match("~[\"\n,;\t]~",$W)||$W==="")$G[$v]='"'.str_replace('"','""',$W).'"';}echo
|
||
|
implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$G)."\r\n";}function
|
||
|
apply_sql_function($o,$e){return($o?($o=="unixepoch"?"DATETIME($e, '$o')":($o=="count distinct"?"COUNT(DISTINCT ":strtoupper("$o("))."$e)"):$e);}function
|
||
|
password_file(){$tb=ini_get("upload_tmp_dir");if(!$tb){if(function_exists('sys_get_temp_dir'))$tb=sys_get_temp_dir();else{$ec=@tempnam("","");if(!$ec)return
|
||
|
false;$tb=dirname($ec);unlink($ec);}}$ec="$tb/adminer.key";$F=@file_get_contents($ec);if($F)return$F;$oc=@fopen($ec,"w");if($oc){$F=md5(uniqid(mt_rand(),true));fwrite($oc,$F);fclose($oc);}return$F;}function
|
||
|
is_mail($Eb){$za='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$vb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$oe="$za+(\\.$za+)*@($vb?\\.)+$vb";return
|
||
|
preg_match("(^$oe(,\\s*$oe)*\$)i",$Eb);}function
|
||
|
is_url($L){$vb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return(preg_match("~^(https?)://($vb?\\.)+$vb(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$L,$z)?strtolower($z[1]):"");}global$b,$g,$xb,$Cb,$Lb,$k,$rc,$wc,$ba,$Ic,$u,$ca,$Vc,$Ld,$qf,$Q,$R,$T,$fg,$ia;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]";$ba=$_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off");@ini_set("session.use_trans_sid",false);if(!defined("SID")){session_name("adminer_sid");$he=array(0,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0)$he[]=true;call_user_func_array('session_set_cookie_params',$he);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$fc);if(function_exists("set_magic_quotes_runtime"))set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",20);$Vc=array('en'=>'English','cs'=>'Čeština','sk'=>'Slovenčina','nl'=>'Nederlands','es'=>'Español','de'=>'Deutsch','fr'=>'Français','it'=>'Italiano','et'=>'Eesti','hu'=>'Magyar','pl'=>'Polski','ca'=>'Català','pt'=>'Português','sl'=>'Slovenski','lt'=>'Lietuvių','tr'=>'Türkçe','ro'=>'Limba Română','id'=>'Bahasa Indonesia','ru'=>'Русский язык','uk'=>'Українська','zh'=>'简体中文','zh-tw'=>'繁體中文','ja'=>'日本語','ta'=>'தமிழ்','bn'=>'বাংলা','ar'=>'العربية','fa'=>'فارسی',);function
|
||
|
get_lang(){global$ca;return$ca;}function
|
||
|
lang($r,$Ed=null){global$ca,$R;$Rf=(isset($R[$r])?$R[$r]:$r);if(is_array($Rf)){$re=($Ed==1?0:($ca=='cs'||$ca=='sk'?($Ed&&$Ed<5?1:2):($ca=='fr'?(!$Ed?0:1):($ca=='pl'?($Ed
|
||
|
%
|
||
|
10>1&&$Ed
|
||
|
%
|
||
|
10<5&&$Ed/10
|
||
|
%
|
||
|
10!=1?1:2):($ca=='sl'?($Ed
|
||
|
%
|
||
|
100==1?0:($Ed
|
||
|
%
|
||
|
100==2?1:($Ed
|
||
|
%
|
||
|
100==3||$Ed
|
||
|
%
|
||
|
100==4?2:3))):($ca=='lt'?($Ed
|
||
|
%
|
||
|
10==1&&$Ed
|
||
|
%
|
||
|
100!=11?0:($Ed
|
||
|
%
|
||
|
10>1&&$Ed/10
|
||
|
%
|
||
|
10!=1?1:2)):($ca=='ru'||$ca=='uk'?($Ed
|
||
|
%
|
||
|
10==1&&$Ed
|
||
|
%
|
||
|
100!=11?0:($Ed
|
||
|
%
|
||
|
10>1&&$Ed
|
||
|
%
|
||
|
10<5&&$Ed/10
|
||
|
%
|
||
|
10!=1?1:2)):1)))))));$Rf=$Rf[$re];}$ya=func_get_args();array_shift($ya);$lc=str_replace("%d","%s",$Rf);if($lc!=$Rf)$ya[0]=number_format($Ed,0,".",lang(7));return
|
||
|
vsprintf($lc,$ya);}function
|
||
|
switch_lang(){global$ca,$Vc;echo"<form action=''>\n<div id='lang'>";hidden_fields($_GET,array('lang'));echo
|
||
|
lang(8).": ".html_select("lang",$Vc,$ca,"var loc = location.search.replace(/[?&]lang=[^&]*/, ''); location.search = loc + (loc ? '&' : '') + 'lang=' + this.value;")," <input type='submit' value='".lang(9)."' class='hidden'>\n","</div>\n</form>\n";}if(isset($_GET["lang"])){$_COOKIE["adminer_lang"]=$_GET["lang"];$_SESSION["lang"]=$_GET["lang"];}$ca="en";if(isset($Vc[$_COOKIE["adminer_lang"]])){cookie("adminer_lang",$_COOKIE["adminer_lang"]);$ca=$_COOKIE["adminer_lang"];}elseif(isset($Vc[$_SESSION["lang"]]))$ca=$_SESSION["lang"];else{$pa=array();preg_match_all('~([-a-z]+)(;q=([0-9.]+))?~',str_replace("_","-",strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"])),$jd,PREG_SET_ORDER);foreach($jd
|
||
|
as$z)$pa[$z[1]]=(isset($z[3])?$z[3]:1);arsort($pa);foreach($pa
|
||
|
as$v=>$C){if(isset($Vc[$v])){$ca=$v;break;}$v=preg_replace('~-.*~','',$v);if(!isset($pa[$v])&&isset($Vc[$v])){$ca=$v;break;}}}switch($ca){case"en":$R=array('Are you sure?','Unable to upload a file.','Maximum allowed file size is %sB.','File does not exist.','empty','original','No tables.',',','Language','Use','Please use one of the extensions %s.','File exists.','User types','Numbers','Date and time','Strings','Binary','Network','Geometry','Lists','System','Server','Username','Password','Database','Login','Permanent login','Select data','Show structure','Alter view','Alter table','New item','Last page','Edit',array('%d byte','%d bytes'),'Select','Functions','Aggregation','Search','anywhere','Sort','descending','Limit','Text length','Action','Full table scan','SQL command','open','save','Alter database','Alter schema','Create schema','Database schema','Privileges','Dump','Logout','database','schema','Create new table','select','ltr','Invalid CSRF token. Send the form again.','Logout successful.','Session support must be enabled.','Session expired, please login again.','Invalid credentials.','No extension','None of the supported PHP extensions (%s) are available.','Too big POST data. Reduce the data or increase the %s configuration directive.','Invalid database.','Databases have been dropped.','Select database','Create new database','Process list','Variables','Status','%s version: %s through PHP extension %s','Logged as: %s','Collation','Tables','Drop','Refresh','Schema','Invalid schema.','No rows.','%.3f s','Foreign keys','collation','ON DELETE','Column name','Parameter name','Type','Length','Options','Auto Increment','Default values','Comment','Add next','Move up','Move down','Remove','View','Table','Column','Indexes','Alter indexes','Source','Target','ON UPDATE','Alter','Add foreign key','Triggers','Add trigger','Permanent link','Export','Output','Format','Routines','Events','Data','Create user','Error in query',array('%d row','%d rows'),array('Query executed OK, %d row affected.','Query executed OK, %d rows affected.'),'No commands to execute.',array('%d query executed OK.','%d queries executed OK.'),'File upload','File uploads are disabled.','Execute','Stop on error','Show only errors','From server','Webserver file %s','Run file','History','Clear','Edit all','Item has been deleted.','Item has been updated.','Item%s has been inserted.','Insert','Save','Save and continue edit','Save and insert next','Delete','Table has been dropped.','Table has been altered.','Table has been created.','Create table','Maximum number of allowed fields exceeded. Please increase %s and %s.','Table name','engine','Partition by','Partitions','Partition name','Values','Indexes have been altered.','Index Type','Column (length)','Name','Database has been dropped.','Database has been renamed.','Database has been created.','Database has been altered.','Create database','Schema has been dropped.','Schema has been created.','Schema has been altered.','Call',array('Routine has been called, %d row affected.','Routine has been called, %d rows affected.'),'Foreign key has been dropped.','Foreign key has been altered.','Foreign key has been created.','Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.','Foreign key','Target table','Change','Add column','View has been dropped.','View has been altered.','View has been created.','Create view','Event has been dropped.','Event has been altered.','Event has been created.','Alter event','Create event','Start','End','Every','On completion preserve','Routine has been dropped.','Routine has been altered.','Routine has been created.','Alter function','Alter procedure','Create function','Create procedure','Return type','Sequence has been dropped.','Sequence has been created.','Sequence has been altered.','Alter sequence','Create sequence','Type has been dropped.','Type has been created.','Alter type','Create type','Trigger has been dropped.','Trigger has been altered.','Trigger has been created.','Alter trigger','Create trigger','Time
|
||
|
Min_PDO
|
||
|
extends
|
||
|
PDO{var$_result,$server_info,$affected_rows,$error;function
|
||
|
__construct(){global$b;$re=array_search("",$b->operators);if($re!==false)unset($b->operators[$re]);}function
|
||
|
dsn($_b,$U,$B,$Tb='auth_error'){set_exception_handler($Tb);parent::__construct($_b,$U,$B);restore_exception_handler();$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=$this->getAttribute(4);}function
|
||
|
query($D,$Zf=false){$E=parent::query($D);$this->error="";if(!$E){$Nb=$this->errorInfo();$this->error=$Nb[2];return
|
||
|
false;}$this->store_result($E);return$E;}function
|
||
|
multi_query($D){return$this->_result=$this->query($D);}function
|
||
|
store_result($E=null){if(!$E)$E=$this->_result;if($E->columnCount()){$E->num_rows=$E->rowCount();return$E;}$this->affected_rows=$E->rowCount();return
|
||
|
true;}function
|
||
|
next_result(){$this->_result->_offset=0;return@$this->_result->nextRowset();}function
|
||
|
result($D,$l=0){$E=$this->query($D);if(!$E)return
|
||
|
false;$G=$E->fetch();return$G[$l];}}class
|
||
|
Min_PDOStatement
|
||
|
extends
|
||
|
PDOStatement{var$_offset=0,$num_rows;function
|
||
|
fetch_assoc(){return$this->fetch(2);}function
|
||
|
fetch_row(){return$this->fetch(3);}function
|
||
|
fetch_field(){$G=(object)$this->getColumnMeta($this->_offset++);$G->orgtable=$G->table;$G->orgname=$G->name;$G->charsetnr=(in_array("blob",(array)$G->flags)?63:0);return$G;}}}$xb=array();$xb["sqlite"]="SQLite 3";$xb["sqlite2"]="SQLite 2";if(isset($_GET["sqlite"])||isset($_GET["sqlite2"])){$ue=array((isset($_GET["sqlite"])?"SQLite3":"SQLite"),"PDO_SQLite");define("DRIVER",(isset($_GET["sqlite"])?"sqlite":"sqlite2"));if(extension_loaded(isset($_GET["sqlite"])?"sqlite3":"sqlite")){if(isset($_GET["sqlite"])){class
|
||
|
Min_SQLite{var$extension="SQLite3",$server_info,$affected_rows,$error,$_link;function
|
||
|
Min_SQLite($ec){$this->_link=new
|
||
|
SQLite3($ec);$ng=$this->_link->version();$this->server_info=$ng["versionString"];}function
|
||
|
query($D){$E=@$this->_link->query($D);$this->error="";if(!$E){$this->error=$this->_link->lastErrorMsg();return
|
||
|
false;}elseif($E->numColumns())return
|
||
|
new
|
||
|
Min_Result($E);$this->affected_rows=$this->_link->changes();return
|
||
|
true;}function
|
||
|
quote($L){return(is_utf8($L)?"'".$this->_link->escapeString($L)."'":"x'".reset(unpack('H*',$L))."'");}function
|
||
|
store_result(){return$this->_result;}function
|
||
|
result($D,$l=0){$E=$this->query($D);if(!is_object($E))return
|
||
|
false;$G=$E->_result->fetchArray();return$G[$l];}}class
|
||
|
Min_Result{var$_result,$_offset=0,$num_rows;function
|
||
|
Min_Result($E){$this->_result=$E;}function
|
||
|
fetch_assoc(){return$this->_result->fetchArray(SQLITE3_ASSOC);}function
|
||
|
fetch_row(){return$this->_result->fetchArray(SQLITE3_NUM);}function
|
||
|
fetch_field(){$e=$this->_offset++;$S=$this->_result->columnType($e);return(object)array("name"=>$this->_result->columnName($e),"type"=>$S,"charsetnr"=>($S==SQLITE3_BLOB?63:0),);}function
|
||
|
__desctruct(){return$this->_result->finalize();}}}else{class
|
||
|
Min_SQLite{var$extension="SQLite",$server_info,$affected_rows,$error,$_link;function
|
||
|
Min_SQLite($ec){$this->server_info=sqlite_libversion();$this->_link=new
|
||
|
SQLiteDatabase($ec);}function
|
||
|
query($D,$Zf=false){$vd=($Zf?"unbufferedQuery":"query");$E=@$this->_link->$vd($D,SQLITE_BOTH,$k);$this->error="";if(!$E){$this->error=$k;return
|
||
|
false;}elseif($E===true){$this->affected_rows=$this->changes();return
|
||
|
true;}return
|
||
|
new
|
||
|
Min_Result($E);}function
|
||
|
quote($L){return"'".sqlite_escape_string($L)."'";}function
|
||
|
store_result(){return$this->_result;}function
|
||
|
result($D,$l=0){$E=$this->query($D);if(!is_object($E))return
|
||
|
false;$G=$E->_result->fetch();return$G[$l];}}class
|
||
|
Min_Result{var$_result,$_offset=0,$num_rows;function
|
||
|
Min_Result($E){$this->_result=$E;if(method_exists($E,'numRows'))$this->num_rows=$E->numRows();}function
|
||
|
fetch_assoc(){$G=$this->_result->fetch(SQLITE_ASSOC);if(!$G)return
|
||
|
false;$F=array();foreach($G
|
||
|
as$v=>$W)$F[($v[0]=='"'?idf_unescape($v):$v)]=$W;return$F;}function
|
||
|
fetch_row(){return$this->_result->fetch(SQLITE_NUM);}function
|
||
|
fetch_field(){$_=$this->_result->fieldName($this->_offset++);$oe='(\\[.*]|"(?:[^"]|"")*"|(.+))';if(preg_match("~^($oe\\.)?$oe\$~",$_,$z)){$N=($z[3]!=""?$z[3]:idf_unescape($z[2]));$_=($z[5]!=""?$z[5]:idf_unescape($z[4]));}return(object)array("name"=>$_,"orgname"=>$_,"orgtable"=>$N,);}}}}elseif(extension_loaded("pdo_sqlite")){class
|
||
|
Min_SQLite
|
||
|
extends
|
||
|
Min_PDO{var$extension="PDO_SQLite";function
|
||
|
Min_SQLite($ec){$this->dsn(DRIVER.":$ec","","");}}}if(class_exists("Min_SQLite")){class
|
||
|
Min_DB
|
||
|
extends
|
||
|
Min_SQLite{function
|
||
|
Min_DB(){$this->Min_SQLite(":memory:");}function
|
||
|
select_db($ec){if(is_readable($ec)&&$this->query("ATTACH ".$this->quote(ereg("(^[/\\\\]|:)",$ec)?$ec:dirname($_SERVER["SCRIPT_FILENAME"])."/$ec")." AS a")){$this->Min_SQLite($ec);return
|
||
|
true;}return
|
||
|
false;}function
|
||
|
multi_query($D){return$this->_result=$this->query($D);}function
|
||
|
next_result(){return
|
||
|
false;}}}function
|
||
|
idf_escape($r){return'"'.str_replace('"','""',$r).'"';}function
|
||
|
table($r){return
|
||
|
idf_escape($r);}function
|
||
|
connect(){return
|
||
|
new
|
||
|
Min_DB;}function
|
||
|
get_databases(){return
|
||
|
array();}function
|
||
|
limit($D,$Z,$x,$A=0,$ef=" "){return" $D$Z".($x!==null?$ef."LIMIT $x".($A?" OFFSET $A":""):"");}function
|
||
|
limit1($D,$Z){global$g;return($g->result("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($D,$Z,1):" $D$Z");}function
|
||
|
db_collation($j,$Ta){global$g;return$g->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",1);}function
|
||
|
count_tables($i){return
|
||
|
array();}function
|
||
|
table_status($_=""){global$g;$F=array();foreach(get_rows("SELECT name AS Name, type AS Engine FROM sqlite_master WHERE type IN ('table', 'view')".($_!=""?" AND name = ".q($_):""))as$G){$G["Oid"]="t";$G["Auto_increment"]="";$G["Rows"]=$g->result("SELECT COUNT(*) FROM ".idf_escape($G["Name"]));$F[$G["Name"]]=$G;}foreach(get_rows("SELECT * FROM sqlite_sequence",null,"")as$G)$F[$G["name"]]["Auto_increment"]=$G["seq"];return($_!=""?$F[$_]:$F);}function
|
||
|
is_view($O){return$O["Engine"]=="view";}function
|
||
|
fk_support($O){global$g;return!$g->result("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function
|
||
|
fields($N){$F=array();foreach(get_rows("PRAGMA table_info(".table($N).")")as$G){$S=strtolower($G["type"]);$qb=$G["dflt_value"];$F[$G["name"]]=array("field"=>$G["name"],"type"=>(eregi("int",$S)?"integer":(eregi("char|clob|text",$S)?"text":(eregi("blob",$S)?"blob":(eregi("real|floa|doub",$S)?"real":"numeric")))),"full_type"=>$S,"default"=>(ereg("'(.*)'",$qb,$z)?str_replace("''","'",$z[1]):($qb=="NULL"?null:$qb)),"null"=>!$G["notnull"],"auto_increment"=>eregi('^integer$',$S)&&$G["pk"],"privileges"=>array("select"=>1,"insert"=>1,"update"=>1),"primary"=>$G["pk"],);}return$F;}function
|
||
|
indexes($N,$h=null){$F=array();$xe=array();foreach(fields($N)as$l){if($l["primary"])$xe[]=$l["field"];}if($xe)$F[""]=array("type"=>"PRIMARY","columns"=>$xe,"lengths"=>array());foreach(get_rows("PRAGMA index_list(".table($N).")")as$G){if(!ereg("^sqlite_",$G["name"])){$F[$G["name"]]["type"]=($G["unique"]?"UNIQUE":"INDEX");$F[$G["name"]]["lengths"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($G["name"]).")")as$We)$F[$G["name"]]["columns"][]=$We["name"];}}return$F;}function
|
||
|
foreign_keys($N){$F=array();foreach(get_rows("PRAGMA foreign_key_list(".table($N).")")as$G){$n=&$F[$G["id"]];if(!$n)$n=$G;$n["source"][]=$G["from"];$n["target"][]=$G["to"];}return$F;}function
|
||
|
view($_){global$g;return
|
||
|
array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\\s+~iU','',$g->result("SELECT sql FROM sqlite_master WHERE name = ".q($_))));}function
|
||
|
collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function
|
||
|
information_schema($j){return
|
||
|
false;}function
|
||
|
error(){global$g;return
|
||
|
h($g->error);}function
|
||
|
exact_value($W){return
|
||
|
q($W);}function
|
||
|
check_sqlite_name($_){global$g;$ac="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($ac)\$~",$_)){$g->error=lang(10,str_replace("|",", ",$ac));return
|
||
|
false;}return
|
||
|
true;}function
|
||
|
create_database($j,$d){global$g;if(file_exists($j)){$g->error=lang(11);return
|
||
|
false;}if(!check_sqlite_name($j))return
|
||
|
false;$y=new
|
||
|
Min_SQLite($j);$y->query('PRAGMA encoding = "UTF-8"');$y->query('CREATE TABLE adminer (i)');$y->query('DROP TABLE adminer');return
|
||
|
true;}function
|
||
|
drop_databases($i){global$g;$g->Min_SQLite(":memory:");foreach($i
|
||
|
as$j){if(!@unlink($j)){$g->error=lang(11);return
|
||
|
false;}}return
|
||
|
true;}function
|
||
|
rename_database($_,$d){global$g;if(!check_sqlite_name($_))return
|
||
|
false;$g->Min_SQLite(":memory:");$g->error=lang(11);return@rename(DB,$_);}function
|
||
|
auto_increment(){return" PRIMARY KEY".(DRIVER=="sqlite"?" AUTOINCREMENT":"");}function
|
||
|
alter_table($N,$_,$m,$ic,$Xa,$Jb,$d,$Ba,$le){$ig=($N==""||$ic);foreach($m
|
||
|
as$l){if($l[0]!=""||!$l[1]||$l[2]){$ig=true;break;}}$c=array();$be=array();$ye=false;foreach($m
|
||
|
as$l){if($l[1]){if($l[1][6])$ye=true;$c[]=($ig?" ":"ADD ").implode($l[1]);if($l[0]!="")$be[$l[0]]=$l[1][0];}}if($ig){if($N!=""){queries("BEGIN");foreach(foreign_keys($N)as$n){$f=array();foreach($n["source"]as$e){if(!$be[$e])continue
|
||
|
2;$f[]=$be[$e];}$ic[]=" FOREIGN KEY (".implode(", ",$f).") REFERENCES ".table($n["table"])." (".implode(", ",array_map('idf_escape',$n["target"])).") ON DELETE $n[on_delete] ON UPDATE $n[on_update]";}$t=array();foreach(indexes($N)as$Rc=>$s){$f=array();foreach($s["columns"]as$e){if(!$be[$e])continue
|
||
|
2;$f[]=$be[$e];}$f="(".implode(", ",$f).")";if($s["type"]!="PRIMARY")$t[]=array($s["type"],$Rc,$f);elseif(!$ye)$ic[]=" PRIMARY KEY $f";}}$c=array_merge($c,$ic);if(!queries("CREATE TABLE ".table($N!=""?"adminer_$_":$_)." (\n".implode(",\n",$c)."\n)"))return
|
||
|
false;if($N!=""){if($be&&!queries("INSERT INTO ".table("adminer_$_")." (".implode(", ",$be).") SELECT ".implode(", ",array_map('idf_escape',array_keys($be)))." FROM ".table($N)))return
|
||
|
false;$Wf=array();foreach(triggers($N)as$Uf=>$Jf){$Sf=trigger($Uf);$Wf[]="CREATE TRIGGER ".idf_escape($Uf)." ".implode(" ",$Jf)." ON ".table($_)."\n$Sf[Statement]";}if(!queries("DROP TABLE ".table($N)))return
|
||
|
false;queries("ALTER TABLE ".table("adminer_$_")." RENAME TO ".table($_));if(!alter_indexes($_,$t))return
|
||
|
false;foreach($Wf
|
||
|
as$Sf){if(!queries($Sf))return
|
||
|
false;}queries("COMMIT");}}else{foreach($c
|
||
|
as$W){if(!queries("ALTER TABLE ".table($N)." $W"))return
|
||
|
false;}if($N!=$_&&!queries("ALTER TABLE ".table($N)." RENAME TO ".table($_)))return
|
||
|
false;}if($Ba)queries("UPDATE sqlite_sequence SET seq = $Ba WHERE name = ".q($_));return
|
||
|
true;}function
|
||
|
alter_indexes($N,$c){foreach($c
|
||
|
as$W){if(!queries($W[2]=="DROP"?"DROP INDEX ".idf_escape($W[1]):"CREATE $W[0] ".($W[0]!="INDEX"?"INDEX ":"").idf_escape($W[1]!=""?$W[1]:uniqid($N."_"))." ON ".table($N)." $W[2]"))return
|
||
|
false;}return
|
||
|
true;}function
|
||
|
truncate_tables($P){return
|
||
|
apply_queries("DELETE FROM",$P);}function
|
||
|
drop_views($Y){return
|
||
|
apply_queries("DROP VIEW",$Y);}function
|
||
|
drop_tables($P){return
|
||
|
apply_queries("DROP TABLE",$P);}function
|
||
|
move_tables($P,$Y,$Ef){return
|
||
|
false;}function
|
||
|
trigger($_){global$g;if($_=="")return
|
||
|
array("Statement"=>"BEGIN\n\t;\nEND");preg_match('~^CREATE\\s+TRIGGER\\s*(?:[^`"\\s]+|`[^`]*`|"[^"]*")+\\s*([a-z]+)\\s+([a-z]+)\\s+ON\\s*(?:[^`"\\s]+|`[^`]*`|"[^"]*")+\\s*(?:FOR\\s*EACH\\s*ROW\\s)?(.*)~is',$g->result("SELECT sql FROM sqlite_master WHERE name = ".q($_)),$z);return
|
||
|
array("Timing"=>strtoupper($z[1]),"Event"=>strtoupper($z[2]),"Trigger"=>$_,"Statement"=>$z[3]);}function
|
||
|
triggers($N){$F=array();foreach(get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($N))as$G){preg_match('~^CREATE\\s+TRIGGER\\s*(?:[^`"\\s]+|`[^`]*`|"[^"]*")+\\s*([a-z]+)\\s*([a-z]+)~i',$G["sql"],$z);$F[$G["name"]]=array($z[1],$z[2]);}return$F;}function
|
||
|
trigger_options(){return
|
||
|
array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Type"=>array("FOR EACH ROW"),);}function
|
||
|
routine($_,$S){}function
|
||
|
routines(){}function
|
||
|
routine_languages(){}function
|
||
|
begin(){return
|
||
|
queries("BEGIN");}function
|
||
|
insert_into($N,$K){return
|
||
|
queries("INSERT INTO ".table($N).($K?" (".implode(", ",array_keys($K)).")\nVALUES (".implode(", ",$K).")":"DEFAULT VALUES"));}function
|
||
|
insert_update($N,$K,$xe){return
|
||
|
queries("REPLACE INTO ".table($N)." (".implode(", ",array_keys($K)).") VALUES (".implode(", ",$K).")");}function
|
||
|
last_id(){global$g;return$g->result("SELECT LAST_INSERT_ROWID()");}function
|
||
|
explain($g,$D){return$g->query("EXPLAIN $D");}function
|
||
|
found_rows($O,$Z){}function
|
||
|
types(){return
|
||
|
array();}function
|
||
|
schemas(){return
|
||
|
array();}function
|
||
|
get_schema(){return"";}function
|
||
|
set_schema($af){return
|
||
|
true;}function
|
||
|
create_sql($N,$Ba){global$g;return$g->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($N));}function
|
||
|
truncate_sql($N){return"DELETE FROM ".table($N);}function
|
||
|
use_sql($nb){}function
|
||
|
trigger_sql($N,$M){return
|
||
|
implode(get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($N)));}function
|
||
|
show_variables(){global$g;$F=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$v)$F[$v]=$g->result("PRAGMA $v");return$F;}function
|
||
|
show_status(){$F=array();foreach(get_vals("PRAGMA compile_options")as$Qd){list($v,$W)=explode("=",$Qd,2);$F[$v]=$W;}return$F;}function
|
||
|
support($cc){return
|
||
|
ereg('^(view|trigger|variables|status|dump|move_col|drop_col)$',$cc);}$u="sqlite";$T=array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0);$qf=array_keys($T);$fg=array();$Pd=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","");$rc=array("hex","length","lower","round","unixepoch","upper");$wc=array("avg","count","count distinct","group_concat","max","min","sum");$Cb=array(array(),array("integer|real|numeric"=>"+/-","text"=>"||",));}$xb["pgsql"]="PostgreSQL";if(isset($_GET["pgsql"])){$ue=array("PgSQL","PDO_PgSQL");define("DRIVER","pgsql");if(extension_loaded("pgsql")){class
|
||
|
Min_DB{var$extension="PgSQL",$_link,$_result,$_string,$_database=true,$server_info,$affected_rows,$error;function
|
||
|
_error($Mb,$k){if(ini_bool("html_errors"))$k=html_entity_decode(strip_tags($k));$k=ereg_replace('^[^:]*: ','',$k);$this->error=$k;}function
|
||
|
connect($J,$U,$B){global$b;$j=$b->database();set_error_handler(array($this,'_error'));$this->_string="host='".str_replace(":","' port='",addcslashes($J,"'\\"))."' user='".addcslashes($U,"'\\")."' password='".addcslashes($B,"'\\")."'";$this->_link=@pg_connect("$this->_string dbname='".($j!=""?addcslashes($j,"'\\"):"postgres")."'",PGSQL_CONNECT_FORCE_NEW);if(!$this->_link&&$j!=""){$this->_database=false;$this->_link=@pg_connect("$this->_string dbname='postgres'",PGSQL_CONNECT_FORCE_NEW);}restore_error_handler();if($this->_link){$ng=pg_version($this->_link);$this->server_info=$ng["server"];pg_set_client_encoding($this->_link,"UTF8");}return(bool)$this->_link;}function
|
||
|
quote($L){return"'".pg_escape_string($this->_link,$L)."'";}function
|
||
|
select_db($nb){global$b;if($nb==$b->database())return$this->_database;$F=@pg_connect("$this->_string dbname='".addcslashes($nb,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($F)$this->_link=$F;return$F;}function
|
||
|
close(){$this->_link=@pg_connect("$this->_string dbname='postgres'");}function
|
||
|
query($D,$Zf=false){$E=@pg_query($this->_link,$D);$this->error="";if(!$E){$this->error=pg_last_error($this->_link);return
|
||
|
false;}elseif(!pg_num_fields($E)){$this->affected_rows=pg_affected_rows($E);return
|
||
|
true;}return
|
||
|
new
|
||
|
Min_Result($E);}function
|
||
|
multi_query($D){return$this->_result=$this->query($D);}function
|
||
|
store_result(){return$this->_result;}function
|
||
|
next_result(){return
|
||
|
false;}function
|
||
|
result($D,$l=0){$E=$this->query($D);if(!$E||!$E->num_rows)return
|
||
|
false;return
|
||
|
pg_fetch_result($E->_result,0,$l);}}class
|
||
|
Min_Result{var$_result,$_offset=0,$num_rows;function
|
||
|
Min_Result($E){$this->_result=$E;$this->num_rows=pg_num_rows($E);}function
|
||
|
fetch_assoc(){return
|
||
|
pg_fetch_assoc($this->_result);}function
|
||
|
fetch_row(){return
|
||
|
pg_fetch_row($this->_result);}function
|
||
|
fetch_field(){$e=$this->_offset++;$F=new
|
||
|
stdClass;if(function_exists('pg_field_table'))$F->orgtable=pg_field_table($this->_result,$e);$F->name=pg_field_name($this->_result,$e);$F->orgname=$F->name;$F->type=pg_field_type($this->_result,$e);$F->charsetnr=($F->type=="bytea"?63:0);return$F;}function
|
||
|
__destruct(){pg_free_result($this->_result);}}}elseif(extension_loaded("pdo_pgsql")){class
|
||
|
Min_DB
|
||
|
extends
|
||
|
Min_PDO{var$extension="PDO_PgSQL";function
|
||
|
connect($J,$U,$B){global$b;$j=$b->database();$L="pgsql:host='".str_replace(":","' port='",addcslashes($J,"'\\"))."' options='-c client_encoding=utf8'";$this->dsn("$L dbname='".($j!=""?addcslashes($j,"'\\"):"postgres")."'",$U,$B);return
|
||
|
true;}function
|
||
|
select_db($nb){global$b;return($b->database()==$nb);}function
|
||
|
close(){}}}function
|
||
|
idf_escape($r){return'"'.str_replace('"','""',$r).'"';}function
|
||
|
table($r){return
|
||
|
idf_escape($r);}function
|
||
|
connect(){global$b;$g=new
|
||
|
Min_DB;$jb=$b->credentials();if($g->connect($jb[0],$jb[1],$jb[2])){if($g->server_info>=9)$g->query("SET application_name = 'Adminer'");return$g;}return$g->error;}function
|
||
|
get_databases(){return
|
||
|
get_vals("SELECT datname FROM pg_database ORDER BY datname");}function
|
||
|
limit($D,$Z,$x,$A=0,$ef=" "){return" $D$Z".($x!==null?$ef."LIMIT $x".($A?" OFFSET $A":""):"");}function
|
||
|
limit1($D,$Z){return" $D$Z";}function
|
||
|
db_collation($j,$Ta){global$g;return$g->result("SHOW LC_COLLATE");}function
|
||
|
engines(){return
|
||
|
array();}function
|
||
|
logged_user(){global$g;return$g->result("SELECT user");}function
|
||
|
tables_list(){return
|
||
|
get_key_vals("SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema() ORDER BY table_name");}function
|
||
|
count_tables($i){return
|
||
|
array();}function
|
||
|
table_status($_=""){$F=array();foreach(get_rows("SELECT relname AS \"Name\", CASE relkind WHEN 'r' THEN 'table' ELSE 'view' END AS \"Engine\", pg_relation_size(oid) AS \"Data_length\", pg_total_relation_size(oid) - pg_relation_size(oid) AS \"Index_length\", obj_description(oid, 'pg_class') AS \"Comment\", relhasoids AS \"Oid\", reltuples as \"Rows\"
|
||
|
FROM pg_class
|
||
|
WHERE relkind IN ('r','v')
|
||
|
AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())".($_!=""?" AND relname = ".q($_):""))as$G)$F[$G["Name"]]=$G;return($_!=""?$F[$_]:$F);}function
|
||
|
is_view($O){return$O["Engine"]=="view";}function
|
||
|
fk_support($O){return
|
||
|
true;}function
|
||
|
fields($N){$F=array();foreach(get_rows("SELECT a.attname AS field, format_type(a.atttypid, a.atttypmod) AS full_type, d.adsrc AS default, a.attnotnull, col_description(c.oid, a.attnum) AS comment
|
||
|
FROM pg_class c
|
||
|
JOIN pg_namespace n ON c.relnamespace = n.oid
|
||
|
JOIN pg_attribute a ON c.oid = a.attrelid
|
||
|
LEFT JOIN pg_attrdef d ON c.oid = d.adrelid AND a.attnum = d.adnum
|
||
|
WHERE c.relname = ".q($N)."
|
||
|
AND n.nspname = current_schema()
|
||
|
AND NOT a.attisdropped
|
||
|
AND a.attnum > 0
|
||
|
ORDER BY a.attnum")as$G){ereg('(.*)(\\((.*)\\))?',$G["full_type"],$z);list(,$G["type"],,$G["length"])=$z;$G["full_type"]=$G["type"].($G["length"]?"($G[length])":"");$G["null"]=($G["attnotnull"]=="f");$G["auto_increment"]=eregi("^nextval\\(",$G["default"]);$G["privileges"]=array("insert"=>1,"select"=>1,"update"=>1);if(preg_match('~^(.*)::.+$~',$G["default"],$z))$G["default"]=($z[1][0]=="'"?idf_unescape($z[1]):$z[1]);$F[$G["field"]]=$G;}return$F;}function
|
||
|
indexes($N,$h=null){global$g;if(!is_object($h))$h=$g;$F=array();$zf=$h->result("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = ".q($N));$f=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $zf AND attnum > 0",$h);foreach(get_rows("SELECT relname, indisunique, indisprimary, indkey FROM pg_index i, pg_class ci WHERE i.indrelid = $zf AND ci.oid = i.indexrelid",$h)as$G){$F[$G["relname"]]["type"]=($G["indisprimary"]=="t"?"PRIMARY":($G["indisunique"]=="t"?"UNIQUE":"INDEX"));$F[$G["relname"]]["columns"]=array();foreach(explode(" ",$G["indkey"])as$Fc)$F[$G["relname"]]["columns"][]=$f[$Fc];$F[$G["relname"]]["lengths"]=array();}return$F;}function
|
||
|
foreign_keys($N){global$Ld;$F=array();foreach(get_rows("SELECT conname, pg_get_constraintdef(oid) AS definition
|
||
|
FROM pg_constraint
|
||
|
WHERE conrelid = (SELECT pc.oid FROM pg_class AS pc INNER JOIN pg_namespace AS pn ON (pn.oid = pc.relnamespace) WHERE pc.relname = ".q($N)." AND pn.nspname = current_schema())
|
||
|
AND contype = 'f'::char
|
||
|
ORDER BY conkey, conname")as$G){if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$G['definition'],$z)){$G['source']=array_map('trim',explode(',',$z[1]));$G['table']=$z[2];if(preg_match('~(.+)\.(.+)~',$z[2],$id)){$G['ns']=$id[1];$G['table']=$id[2];}$G['target']=array_map('trim',explode(',',$z[3]));$G['on_delete']=(preg_match("~ON DELETE ($Ld)~",$z[4],$id)?$id[1]:'NO ACTION');$G['on_update']=(preg_match("~ON UPDATE ($Ld)~",$z[4],$id)?$id[1]:'NO ACTION');$F[$G['conname']]=$G;}}return$F;}function
|
||
|
view($_){global$g;return
|
||
|
array("select"=>$g->result("SELECT pg_get_viewdef(".q($_).")"));}function
|
||
|
collations(){return
|
||
|
array();}function
|
||
|
information_schema($j){return($j=="information_schema");}function
|
||
|
error(){global$g;$F=h($g->error);if(preg_match('~^(.*\\n)?([^\\n]*)\\n( *)\\^(\\n.*)?$~s',$F,$z))$F=$z[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($z[3]).'})(.*)~','\\1<b>\\2</b>',$z[2]).$z[4];return
|
||
|
nl_br($F);}function
|
||
|
exact_value($W){return
|
||
|
q($W);}function
|
||
|
create_database($j,$d){return
|
||
|
queries("CREATE DATABASE ".idf_escape($j).($d?" ENCODING ".idf_escape($d):""));}function
|
||
|
drop_databases($i){global$g;$g->close();return
|
||
|
apply_queries("DROP DATABASE",$i,'idf_escape');}function
|
||
|
rename_database($_,$d){return
|
||
|
queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($_));}function
|
||
|
auto_increment(){return"";}function
|
||
|
alter_table($N,$_,$m,$ic,$Xa,$Jb,$d,$Ba,$le){$c=array();$Fe=array();foreach($m
|
||
|
as$l){$e=idf_escape($l[0]);$W=$l[1];if(!$W)$c[]="DROP $e";else{$lg=$W[5];unset($W[5]);if(isset($W[6])&&$l[0]=="")$W[1]=($W[1]=="bigint"?" big":" ")."serial";if($l[0]=="")$c[]=($N!=""?"ADD ":" ").implode($W);else{if($e!=$W[0])$Fe[]="ALTER TABLE ".table($N)." RENAME $e TO $W[0]";$c[]="ALTER $e TYPE$W[1]";if(!$W[6]){$c[]="ALTER $e ".($W[3]?"SET$W[3]":"DROP DEFAULT");$c[]="ALTER $e ".($W[2]==" NULL"?"DROP NOT":"SET").$W[2];}}if($l[0]!=""||$lg!="")$Fe[]="COMMENT ON COLUMN ".table($N).".$W[0] IS ".($lg!=""?substr($lg,9):"''");}}$c=array_merge($c,$ic);if($N=="")array_unshift($Fe,"CREATE TABLE ".table($_)." (\n".implode(",\n",$c)."\n)");elseif($c)array_unshift($Fe,"ALTER TABLE ".table($N)."\n".implode(",\n",$c));if($N!=""&&$N!=$_)$Fe[]="ALTER TABLE ".table($N)." RENAME TO ".table($_);if($N!=""||$Xa!="")$Fe[]="COMMENT ON TABLE ".table($_)." IS ".q($Xa);if($Ba!=""){}foreach($Fe
|
||
|
as$D){if(!queries($D))return
|
||
|
false;}return
|
||
|
true;}function
|
||
|
alter_indexes($N,$c){$gb=array();$yb=array();foreach($c
|
||
|
as$W){if($W[0]!="INDEX")$gb[]=($W[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($W[1]):"\nADD $W[0] ".($W[0]=="PRIMARY"?"KEY ":"").$W[2]);elseif($W[2]=="DROP")$yb[]=idf_escape($W[1]);elseif(!queries("CREATE INDEX ".idf_escape($W[1]!=""?$W[1]:uniqid($N."_"))." ON ".table($N)." $W[2]"))return
|
||
|
false;}return((!$gb||queries("ALTER TABLE ".table($N).implode(",",$gb)))&&(!$yb||queries("DROP INDEX ".implode(", ",$yb))));}function
|
||
|
truncate_tables($P){return
|
||
|
queries("TRUNCATE ".implode(", ",array_map('table',$P)));return
|
||
|
true;}function
|
||
|
drop_views($Y){return
|
||
|
queries("DROP VIEW ".implode(", ",array_map('table',$Y)));}function
|
||
|
drop_tables($P){return
|
||
|
queries("DROP TABLE ".implode(", ",array_map('table',$P)));}function
|
||
|
move_tables($P,$Y,$Ef){foreach($P
|
||
|
as$N){if(!queries("ALTER TABLE ".table($N)." SET SCHEMA ".idf_escape($Ef)))return
|
||
|
false;}foreach($Y
|
||
|
as$N){if(!queries("ALTER VIEW ".table($N)." SET SCHEMA ".idf_escape($Ef)))return
|
||
|
false;}return
|
||
|
true;}function
|
||
|
trigger($_){if($_=="")return
|
||
|
array("Statement"=>"EXECUTE PROCEDURE ()");$H=get_rows('SELECT trigger_name AS "Trigger", condition_timing AS "Timing", event_manipulation AS "Event", \'FOR EACH \' || action_orientation AS "Type", action_statement AS "Statement" FROM information_schema.triggers WHERE event_object_table = '.q($_GET["trigger"]).' AND trigger_name = '.q($_));return
|
||
|
reset($H);}function
|
||
|
triggers($N){$F=array();foreach(get_rows("SELECT * FROM information_schema.triggers WHERE event_object_table = ".q($N))as$G)$F[$G["trigger_name"]]=array($G["condition_timing"],$G["event_manipulation"]);return$F;}function
|
||
|
trigger_options(){return
|
||
|
array("Timing"=>array("BEFORE","AFTER"),"Type"=>array("FOR EACH ROW","FOR EACH STATEMENT"),);}function
|
||
|
routines(){return
|
||
|
get_rows('SELECT p.proname AS "ROUTINE_NAME", p.proargtypes AS "ROUTINE_TYPE", pg_catalog.format_type(p.prorettype, NULL) AS "DTD_IDENTIFIER"
|
||
|
FROM pg_catalog.pg_namespace n
|
||
|
JOIN pg_catalog.pg_proc p ON p.pronamespace = n.oid
|
||
|
WHERE n.nspname = current_schema()
|
||
|
ORDER BY p.proname');}function
|
||
|
routine_languages(){return
|
||
|
get_vals("SELECT langname FROM pg_catalog.pg_language");}function
|
||
|
begin(){return
|
||
|
queries("BEGIN");}function
|
||
|
insert_into($N,$K){return
|
||
|
queries("INSERT INTO ".table($N).($K?" (".implode(", ",array_keys($K)).")\nVALUES (".implode(", ",$K).")":"DEFAULT VALUES"));}function
|
||
|
insert_update($N,$K,$xe){global$g;$gg=array();$Z=array();foreach($K
|
||
|
as$v=>$W){$gg[]="$v = $W";if(isset($xe[idf_unescape($v)]))$Z[]="$v = $W";}return($Z&&queries("UPDATE ".table($N)." SET ".implode(", ",$gg)." WHERE ".implode(" AND ",$Z))&&$g->affected_rows)||queries("INSERT INTO ".table($N)." (".implode(", ",array_keys($K)).") VALUES (".implode(", ",$K).")");}function
|
||
|
last_id(){return
|
||
|
0;}function
|
||
|
explain($g,$D){return$g->query("EXPLAIN $D");}function
|
||
|
found_rows($O,$Z){global$g;if(ereg(" rows=([0-9]+)",$g->result("EXPLAIN SELECT * FROM ".idf_escape($O["Name"]).($Z?" WHERE ".implode(" AND ",$Z):"")),$Ne))return$Ne[1];return
|
||
|
false;}function
|
||
|
types(){return
|
||
|
get_vals("SELECT typname
|
||
|
FROM pg_type
|
||
|
WHERE typnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())
|
||
|
AND typtype IN ('b','d','e')
|
||
|
AND typelem = 0");}function
|
||
|
schemas(){return
|
||
|
get_vals("SELECT nspname FROM pg_namespace ORDER BY nspname");}function
|
||
|
get_schema(){global$g;return$g->result("SELECT current_schema()");}function
|
||
|
set_schema($Ze){global$g,$T,$qf;$F=$g->query("SET search_path TO ".idf_escape($Ze));foreach(types()as$S){if(!isset($T[$S])){$T[$S]=0;$qf[lang(12)][]=$S;}}return$F;}function
|
||
|
use_sql($nb){return"\connect ".idf_escape($nb);}function
|
||
|
show_variables(){return
|
||
|
get_key_vals("SHOW ALL");}function
|
||
|
process_list(){return
|
||
|
get_rows("SELECT * FROM pg_stat_activity ORDER BY procpid");}function
|
||
|
show_status(){}function
|
||
|
support($cc){return
|
||
|
ereg('^(comment|view|scheme|processlist|sequence|trigger|type|variables|drop_col)$',$cc);}$u="pgsql";$T=array();$qf=array();foreach(array(lang(13)=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),lang(14)=>array("date"=>13,"time"=>17,"timestamp"=>20,"interval"=>0),lang(15)=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),lang(16)=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),lang(17)=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"txid_snapshot"=>0),lang(18)=>array("box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0),)as$v=>$W){$T+=$W;$qf[$v]=array_keys($W);}$fg=array();$Pd=array("=","<",">","<=",">=","!=","~","!~","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");$rc=array("char_length","lower","round","to_hex","to_timestamp","upper");$wc=array("avg","count","count distinct","max","min","sum");$Cb=array(array("char"=>"md5","date|time"=>"now",),array("int|numeric|real|money"=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",));}$xb["oracle"]="Oracle";if(isset($_GET["oracle"])){$ue=array("OCI8","PDO_OCI");define("DRIVER","oracle");if(extension_loaded("oci8")){class
|
||
|
Min_DB{var$extension="oci8",$_link,$_result,$server_info,$affected_rows,$error;function
|
||
|
_error($Mb,$k){if(ini_bool("html_errors"))$k=html_entity_decode(strip_tags($k));$k=ereg_replace('^[^:]*: ','',$k);$this->error=$k;}function
|
||
|
connect($J,$U,$B){$this->_link=@oci_new_connect($U,$B,$J,"AL32UTF8");if($this->_link){$this->server_info=oci_server_version($this->_link);return
|
||
|
true;}$k=oci_error();$this->error=$k["message"];return
|
||
|
false;}function
|
||
|
quote($L){return"'".str_replace("'","''",$L)."'";}function
|
||
|
select_db($nb){return
|
||
|
true;}function
|
||
|
query($D,$Zf=false){$E=oci_parse($this->_link,$D);$this->error="";if(!$E){$k=oci_error($this->_link);$this->error=$k["message"];return
|
||
|
false;}set_error_handler(array($this,'_error'));$F=@oci_execute($E);restore_error_handler();if($F){if(oci_num_fields($E))return
|
||
|
new
|
||
|
Min_Result($E);$this->affected_rows=oci_num_rows($E);}return$F;}function
|
||
|
multi_query($D){return$this->_result=$this->query($D);}function
|
||
|
store_result(){return$this->_result;}function
|
||
|
next_result(){return
|
||
|
false;}function
|
||
|
result($D,$l=1){$E=$this->query($D);if(!is_object($E)||!oci_fetch($E->_result))return
|
||
|
false;return
|
||
|
oci_result($E->_result,$l);}}class
|
||
|
Min_Result{var$_result,$_offset=1,$num_rows;function
|
||
|
Min_Result($E){$this->_result=$E;}function
|
||
|
_convert($G){foreach((array)$G
|
||
|
as$v=>$W){if(is_a($W,'OCI-Lob'))$G[$v]=$W->load();}return$G;}function
|
||
|
fetch_assoc(){return$this->_convert(oci_fetch_assoc($this->_result));}function
|
||
|
fetch_row(){return$this->_convert(oci_fetch_row($this->_result));}function
|
||
|
fetch_field(){$e=$this->_offset++;$F=new
|
||
|
stdClass;$F->name=oci_field_name($this->_result,$e);$F->orgname=$F->name;$F->type=oci_field_type($this->_result,$e);$F->charsetnr=(ereg("raw|blob|bfile",$F->type)?63:0);return$F;}function
|
||
|
__destruct(){oci_free_statement($this->_result);}}}elseif(extension_loaded("pdo_oci")){class
|
||
|
Min_DB
|
||
|
extends
|
||
|
Min_PDO{var$extension="PDO_OCI";function
|
||
|
connect($J,$U,$B){$this->dsn("oci:dbname=//$J;charset=AL32UTF8",$U,$B);return
|
||
|
true;}function
|
||
|
select_db($nb){return
|
||
|
true;}}}function
|
||
|
idf_escape($r){return'"'.str_replace('"','""',$r).'"';}function
|
||
|
table($r){return
|
||
|
idf_escape($r);}function
|
||
|
connect(){global$b;$g=new
|
||
|
Min_DB;$jb=$b->credentials();if($g->connect($jb[0],$jb[1],$jb[2]))return$g;return$g->error;}function
|
||
|
get_databases(){return
|
||
|
get_vals("SELECT tablespace_name FROM user_tablespaces");}function
|
||
|
limit($D,$Z,$x,$A=0,$ef=" "){return($A?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $D$Z) t WHERE rownum <= ".($x+$A).") WHERE rnum > $A":($x!==null?" * FROM (SELECT $D$Z) WHERE rownum <= ".($x+$A):" $D$Z"));}function
|
||
|
limit1($D,$Z){return" $D$Z";}function
|
||
|
db_collation($j,$Ta){global$g;return$g->result("SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'");}function
|
||
|
engines(){return
|
||
|
array();}function
|
||
|
logged_user(){global$g;return$g->result("SELECT USER FROM DUAL");}function
|
||
|
tables_list(){return
|
||
|
get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)."
|
||
|
UNION SELECT view_name, 'view' FROM user_views");}function
|
||
|
count_tables($i){return
|
||
|
array();}function
|
||
|
table_status($_=""){$F=array();$bf=q($_);foreach(get_rows('SELECT table_name "Name", \'table\' "Engine", avg_row_len * num_rows "Data_length", num_rows "Rows" FROM all_tables WHERE tablespace_name = '.q(DB).($_!=""?" AND table_name = $bf":"")."
|
||
|
UNION SELECT view_name, 'view', 0, 0 FROM user_views".($_!=""?" WHERE view_name = $bf":""))as$G){if($_!="")return$G;$F[$G["Name"]]=$G;}return$F;}function
|
||
|
is_view($O){return$O["Engine"]=="view";}function
|
||
|
fk_support($O){return
|
||
|
true;}function
|
||
|
fields($N){$F=array();foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($N)." ORDER BY column_id")as$G){$S=$G["DATA_TYPE"];$w="$G[DATA_PRECISION],$G[DATA_SCALE]";if($w==",")$w=$G["DATA_LENGTH"];$F[$G["COLUMN_NAME"]]=array("field"=>$G["COLUMN_NAME"],"full_type"=>$S.($w?"($w)":""),"type"=>strtolower($S),"length"=>$w,"default"=>$G["DATA_DEFAULT"],"null"=>($G["NULLABLE"]=="Y"),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),);}return$F;}function
|
||
|
indexes($N,$h=null){$F=array();foreach(get_rows("SELECT uic.*, uc.constraint_type
|
||
|
FROM user_ind_columns uic
|
||
|
LEFT JOIN user_constraints uc ON uic.index_name = uc.constraint_name AND uic.table_name = uc.table_name
|
||
|
WHERE uic.table_name = ".q($N)."
|
||
|
ORDER BY uc.constraint_type, uic.column_position",$h)as$G){$F[$G["INDEX_NAME"]]["type"]=($G["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($G["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$F[$G["INDEX_NAME"]]["columns"][]=$G["COLUMN_NAME"];$F[$G["INDEX_NAME"]]["lengths"][]=($G["CHAR_LENGTH"]&&$G["CHAR_LENGTH"]!=$G["COLUMN_LENGTH"]?$G["CHAR_LENGTH"]:null);}return$F;}function
|
||
|
view($_){$H=get_rows('SELECT text "select" FROM user_views WHERE view_name = '.q($_));return
|
||
|
reset($H);}function
|
||
|
collations(){return
|
||
|
array();}function
|
||
|
information_schema($j){return
|
||
|
false;}function
|
||
|
error(){global$g;return
|
||
|
h($g->error);}function
|
||
|
exact_value($W){return
|
||
|
q($W);}function
|
||
|
explain($g,$D){$g->query("EXPLAIN PLAN FOR $D");return$g->query("SELECT * FROM plan_table");}function
|
||
|
found_rows($O,$Z){}function
|
||
|
alter_table($N,$_,$m,$ic,$Xa,$Jb,$d,$Ba,$le){$c=$yb=array();foreach($m
|
||
|
as$l){$W=$l[1];if($W&&$l[0]!=""&&idf_escape($l[0])!=$W[0])queries("ALTER TABLE ".table($N)." RENAME COLUMN ".idf_escape($l[0])." TO $W[0]");if($W)$c[]=($N!=""?($l[0]!=""?"MODIFY (":"ADD ("):" ").implode($W).($N!=""?")":"");else$yb[]=idf_escape($l[0]);}if($N=="")return
|
||
|
queries("CREATE TABLE ".table($_)." (\n".implode(",\n",$c)."\n)");return(!$c||queries("ALTER TABLE ".table($N)."\n".implode("\n",$c)))&&(!$yb||queries("ALTER TABLE ".table($N)." DROP (".implode(", ",$yb).")"))&&($N==$_||queries("ALTER TABLE ".table($N)." RENAME TO ".table($_)));}function
|
||
|
foreign_keys($N){return
|
||
|
array();}function
|
||
|
truncate_tables($P){return
|
||
|
apply_queries("TRUNCATE TABLE",$P);}function
|
||
|
drop_views($Y){return
|
||
|
apply_queries("DROP VIEW",$Y);}function
|
||
|
drop_tables($P){return
|
||
|
apply_queries("DROP TABLE",$P);}function
|
||
|
begin(){return
|
||
|
true;}function
|
||
|
insert_into($N,$K){return
|
||
|
queries("INSERT INTO ".table($N)." (".implode(", ",array_keys($K)).")\nVALUES (".implode(", ",$K).")");}function
|
||
|
last_id(){return
|
||
|
0;}function
|
||
|
schemas(){return
|
||
|
get_vals("SELECT DISTINCT owner FROM dba_segments WHERE owner IN (SELECT username FROM dba_users WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX'))");}function
|
||
|
get_schema(){global$g;return$g->result("SELECT sys_context('USERENV', 'SESSION_USER') FROM dual");}function
|
||
|
set_schema($af){global$g;return$g->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($af));}function
|
||
|
show_variables(){return
|
||
|
get_key_vals('SELECT name, display_value FROM v$parameter');}function
|
||
|
process_list(){return
|
||
|
get_rows('SELECT sess.process AS "process", sess.username AS "user", sess.schemaname AS "schema", sess.status AS "status", sess.wait_class AS "wait_class", sess.seconds_in_wait AS "seconds_in_wait", sql.sql_text AS "sql_text", sess.machine AS "machine", sess.port AS "port"
|
||
|
FROM v$session sess LEFT OUTER JOIN v$sql sql
|
||
|
ON sql.sql_id = sess.sql_id
|
||
|
WHERE sess.type = \'USER\'
|
||
|
ORDER BY PROCESS
|
||
|
');}function
|
||
|
show_status(){$H=get_rows('SELECT * FROM v$instance');return
|
||
|
reset($H);}function
|
||
|
support($cc){return
|
||
|
ereg("view|scheme|processlist|drop_col|variables|status",$cc);}$u="oracle";$T=array();$qf=array();foreach(array(lang(13)=>array("number"=>38,"binary_float"=>12,"binary_double"=>21),lang(14)=>array("date"=>10,"timestamp"=>29,"interval year"=>12,"interval day"=>28),lang(15)=>array("char"=>2000,"varchar2"=>4000,"nchar"=>2000,"nvarchar2"=>4000,"clob"=>4294967295,"nclob"=>4294967295),lang(16)=>array("raw"=>2000,"long raw"=>2147483648,"blob"=>4294967295,"bfile"=>4294967296),)as$v=>$W){$T+=$W;$qf[$v]=array_keys($W);}$fg=array();$Pd=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","");$rc=array("length","lower","round","upper");$wc=array("avg","count","count distinct","max","min","sum");$Cb=array(array("date"=>"current_date","timestamp"=>"current_timestamp",),array("number|float|double"=>"+/-","date|timestamp"=>"+ interval/- interval","char|clob"=>"||",));}$xb["mssql"]="MS SQL";if(isset($_GET["mssql"])){$ue=array("SQLSRV","MSSQL");define("DRIVER","mssql");if(extension_loaded("sqlsrv")){class
|
||
|
Min_DB{var$extension="sqlsrv",$_link,$_result,$server_info,$affected_rows,$error;function
|
||
|
_get_error(){$this->error="";foreach(sqlsrv_errors()as$k)$this->error.="$k[message]\n";$this->error=rtrim($this->error);}function
|
||
|
connect($J,$U,$B){$this->_link=@sqlsrv_connect($J,array("UID"=>$U,"PWD"=>$B,"CharacterSet"=>"UTF-8"));if($this->_link){$Gc=sqlsrv_server_info($this->_link);$this->server_info=$Gc['SQLServerVersion'];}else$this->_get_error();return(bool)$this->_link;}function
|
||
|
quote($L){return"'".str_replace("'","''",$L)."'";}function
|
||
|
select_db($nb){return$this->query("USE $nb");}function
|
||
|
query($D,$Zf=false){$E=sqlsrv_query($this->_link,$D);$this->error="";if(!$E){$this->_get_error();return
|
||
|
false;}return$this->store_result($E);}function
|
||
|
multi_query($D){$this->_result=sqlsrv_query($this->_link,$D);$this->error="";if(!$this->_result){$this->_get_error();return
|
||
|
false;}return
|
||
|
true;}function
|
||
|
store_result($E=null){if(!$E)$E=$this->_result;if(sqlsrv_field_metadata($E))return
|
||
|
new
|
||
|
Min_Result($E);$this->affected_rows=sqlsrv_rows_affected($E);return
|
||
|
true;}function
|
||
|
next_result(){return
|
||
|
sqlsrv_next_result($this->_result);}function
|
||
|
result($D,$l=0){$E=$this->query($D);if(!is_object($E))return
|
||
|
false;$G=$E->fetch_row();return$G[$l];}}class
|
||
|
Min_Result{var$_result,$_offset=0,$_fields,$num_rows;function
|
||
|
Min_Result($E){$this->_result=$E;}function
|
||
|
_convert($G){foreach((array)$G
|
||
|
as$v=>$W){if(is_a($W,'DateTime'))$G[$v]=$W->format("Y-m-d H:i:s");}return$G;}function
|
||
|
fetch_assoc(){return$this->_convert(sqlsrv_fetch_array($this->_result,SQLSRV_FETCH_ASSOC,SQLSRV_SCROLL_NEXT));}function
|
||
|
fetch_row(){return$this->_convert(sqlsrv_fetch_array($this->_result,SQLSRV_FETCH_NUMERIC,SQLSRV_SCROLL_NEXT));}function
|
||
|
fetch_field(){if(!$this->_fields)$this->_fields=sqlsrv_field_metadata($this->_result);$l=$this->_fields[$this->_offset++];$F=new
|
||
|
stdClass;$F->name=$l["Name"];$F->orgname=$l["Name"];$F->type=($l["Type"]==1?254:0);return$F;}function
|
||
|
seek($A){for($p=0;$p<$A;$p++)sqlsrv_fetch($this->_result);}function
|
||
|
__destruct(){sqlsrv_free_stmt($this->_result);}}}elseif(extension_loaded("mssql")){class
|
||
|
Min_DB{var$extension="MSSQL",$_link,$_result,$server_info,$affected_rows,$error;function
|
||
|
connect($J,$U,$B){$this->_link=@mssql_connect($J,$U,$B);if($this->_link){$E=$this->query("SELECT SERVERPROPERTY('ProductLevel'), SERVERPROPERTY('Edition')");$G=$E->fetch_row();$this->server_info=$this->result("sp_server_info 2",2)." [$G[0]] $G[1]";}else$this->error=mssql_get_last_message();return(bool)$this->_link;}function
|
||
|
quote($L){return"'".str_replace("'","''",$L)."'";}function
|
||
|
select_db($nb){return
|
||
|
mssql_select_db($nb);}function
|
||
|
query($D,$Zf=false){$E=mssql_query($D,$this->_link);$this->error="";if(!$E){$this->error=mssql_get_last_message();return
|
||
|
false;}if($E===true){$this->affected_rows=mssql_rows_affected($this->_link);return
|
||
|
true;}return
|
||
|
new
|
||
|
Min_Result($E);}function
|
||
|
multi_query($D){return$this->_result=$this->query($D);}function
|
||
|
store_result(){return$this->_result;}function
|
||
|
next_result(){return
|
||
|
mssql_next_result($this->_result);}function
|
||
|
result($D,$l=0){$E=$this->query($D);if(!is_object($E))return
|
||
|
false;return
|
||
|
mssql_result($E->_result,0,$l);}}class
|
||
|
Min_Result{var$_result,$_offset=0,$_fields,$num_rows;function
|
||
|
Min_Result($E){$this->_result=$E;$this->num_rows=mssql_num_rows($E);}function
|
||
|
fetch_assoc(){return
|
||
|
mssql_fetch_assoc($this->_result);}function
|
||
|
fetch_row(){return
|
||
|
mssql_fetch_row($this->_result);}function
|
||
|
num_rows(){return
|
||
|
mssql_num_rows($this->_result);}function
|
||
|
fetch_field(){$F=mssql_fetch_field($this->_result);$F->orgtable=$F->table;$F->orgname=$F->name;return$F;}function
|
||
|
seek($A){mssql_data_seek($this->_result,$A);}function
|
||
|
__destruct(){mssql_free_result($this->_result);}}}function
|
||
|
idf_escape($r){return"[".str_replace("]","]]",$r)."]";}function
|
||
|
table($r){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($r);}function
|
||
|
connect(){global$b;$g=new
|
||
|
Min_DB;$jb=$b->credentials();if($g->connect($jb[0],$jb[1],$jb[2]))return$g;return$g->error;}function
|
||
|
get_databases(){return
|
||
|
get_vals("EXEC sp_databases");}function
|
||
|
limit($D,$Z,$x,$A=0,$ef=" "){return($x!==null?" TOP (".($x+$A).")":"")." $D$Z";}function
|
||
|
limit1($D,$Z){return
|
||
|
limit($D,$Z,1);}function
|
||
|
db_collation($j,$Ta){global$g;return$g->result("SELECT collation_name FROM sys.databases WHERE name = ".q($j));}function
|
||
|
engines(){return
|
||
|
array();}function
|
||
|
logged_user(){global$g;return$g->result("SELECT SUSER_NAME()");}function
|
||
|
tables_list(){return
|
||
|
get_key_vals("SELECT name, type_desc FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ORDER BY name");}function
|
||
|
count_tables($i){global$g;$F=array();foreach($i
|
||
|
as$j){$g->select_db($j);$F[$j]=$g->result("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$F;}function
|
||
|
table_status($_=""){$F=array();foreach(get_rows("SELECT name AS Name, type_desc AS Engine FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V')".($_!=""?" AND name = ".q($_):""))as$G){if($_!="")return$G;$F[$G["Name"]]=$G;}return$F;}function
|
||
|
is_view($O){return$O["Engine"]=="VIEW";}function
|
||
|
fk_support($O){return
|
||
|
true;}function
|
||
|
fields($N){$F=array();foreach(get_rows("SELECT c.*, t.name type, d.definition [default]
|
||
|
FROM sys.all_columns c
|
||
|
JOIN sys.all_objects o ON c.object_id = o.object_id
|
||
|
JOIN sys.types t ON c.user_type_id = t.user_type_id
|
||
|
LEFT JOIN sys.default_constraints d ON c.default_object_id = d.parent_column_id
|
||
|
WHERE o.schema_id = SCHEMA_ID(".q(get_schema()).") AND o.type IN ('S', 'U', 'V') AND o.name = ".q($N))as$G){$S=$G["type"];$w=(ereg("char|binary",$S)?$G["max_length"]:($S=="decimal"?"$G[precision],$G[scale]":""));$F[$G["name"]]=array("field"=>$G["name"],"full_type"=>$S.($w?"($w)":""),"type"=>$S,"length"=>$w,"default"=>$G["default"],"null"=>$G["is_nullable"],"auto_increment"=>$G["is_identity"],"collation"=>$G["collation_name"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),"primary"=>$G["is_identity"],);}return$F;}function
|
||
|
indexes($N,$h=null){$F=array();foreach(get_rows("SELECT i.name, key_ordinal, is_unique, is_primary_key, c.name AS column_name
|
||
|
FROM sys.indexes i
|
||
|
INNER JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
|
||
|
INNER JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
|
||
|
WHERE OBJECT_NAME(i.object_id) = ".q($N),$h)as$G){$F[$G["name"]]["type"]=($G["is_primary_key"]?"PRIMARY":($G["is_unique"]?"UNIQUE":"INDEX"));$F[$G["name"]]["lengths"]=array();$F[$G["name"]]["columns"][$G["key_ordinal"]]=$G["column_name"];}return$F;}function
|
||
|
view($_){global$g;return
|
||
|
array("select"=>preg_replace('~^(?:[^[]|\\[[^]]*])*\\s+AS\\s+~isU','',$g->result("SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = ".q($_))));}function
|
||
|
collations(){$F=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$d)$F[ereg_replace("_.*","",$d)][]=$d;return$F;}function
|
||
|
information_schema($j){return
|
||
|
false;}function
|
||
|
error(){global$g;return
|
||
|
nl_br(h(preg_replace('~^(\\[[^]]*])+~m','',$g->error)));}function
|
||
|
exact_value($W){return
|
||
|
q($W);}function
|
||
|
create_database($j,$d){return
|
||
|
queries("CREATE DATABASE ".idf_escape($j).(eregi('^[a-z0-9_]+$',$d)?" COLLATE $d":""));}function
|
||
|
drop_databases($i){return
|
||
|
queries("DROP DATABASE ".implode(", ",array_map('idf_escape',$i)));}function
|
||
|
rename_database($_,$d){if(eregi('^[a-z0-9_]+$',$d))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $d");queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($_));return
|
||
|
true;}function
|
||
|
auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".(+$_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function
|
||
|
alter_table($N,$_,$m,$ic,$Xa,$Jb,$d,$Ba,$le){$c=array();foreach($m
|
||
|
as$l){$e=idf_escape($l[0]);$W=$l[1];if(!$W)$c["DROP"][]=" COLUMN $e";else{$W[1]=preg_replace("~( COLLATE )'(\\w+)'~","\\1\\2",$W[1]);if($l[0]=="")$c["ADD"][]="\n ".implode("",$W).($N==""?substr($ic[$W[0]],16+strlen($W[0])):"");else{unset($W[6]);if($e!=$W[0])queries("EXEC sp_rename ".q(table($N).".$e").", ".q(idf_unescape($W[0])).", 'COLUMN'");$c["ALTER COLUMN ".implode("",$W)][]="";}}}if($N=="")return
|
||
|
queries("CREATE TABLE ".table($_)." (".implode(",",(array)$c["ADD"])."\n)");if($N!=$_)queries("EXEC sp_rename ".q(table($N)).", ".q($_));if($ic)$c[""]=$ic;foreach($c
|
||
|
as$v=>$W){if(!queries("ALTER TABLE ".idf_escape($_)." $v".implode(",",$W)))return
|
||
|
false;}return
|
||
|
true;}function
|
||
|
alter_indexes($N,$c){$s=array();$yb=array();foreach($c
|
||
|
as$W){if($W[2]=="DROP"){if($W[0]=="PRIMARY")$yb[]=idf_escape($W[1]);else$s[]=idf_escape($W[1])." ON ".table($N);}elseif(!queries(($W[0]!="PRIMARY"?"CREATE $W[0] ".($W[0]!="INDEX"?"INDEX ":"").idf_escape($W[1]!=""?$W[1]:uniqid($N."_"))." ON ".table($N):"ALTER TABLE ".table($N)." ADD PRIMARY KEY")." $W[2]"))return
|
||
|
false;}return(!$s||queries("DROP INDEX ".implode(", ",$s)))&&(!$yb||queries("ALTER TABLE ".table($N)." DROP ".implode(", ",$yb)));}function
|
||
|
begin(){return
|
||
|
queries("BEGIN TRANSACTION");}function
|
||
|
insert_into($N,$K){return
|
||
|
queries("INSERT INTO ".table($N).($K?" (".implode(", ",array_keys($K)).")\nVALUES (".implode(", ",$K).")":"DEFAULT VALUES"));}function
|
||
|
insert_update($N,$K,$xe){$gg=array();$Z=array();foreach($K
|
||
|
as$v=>$W){$gg[]="$v = $W";if(isset($xe[idf_unescape($v)]))$Z[]="$v = $W";}return
|
||
|
queries("MERGE ".table($N)." USING (VALUES(".implode(", ",$K).")) AS source (c".implode(", c",range(1,count($K))).") ON ".implode(" AND ",$Z)." WHEN MATCHED THEN UPDATE SET ".implode(", ",$gg)." WHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($K)).") VALUES (".implode(", ",$K).");");}function
|
||
|
last_id(){global$g;return$g->result("SELECT SCOPE_IDENTITY()");}function
|
||
|
explain($g,$D){$g->query("SET SHOWPLAN_ALL ON");$F=$g->query($D);$g->query("SET SHOWPLAN_ALL OFF");return$F;}function
|
||
|
found_rows($O,$Z){}function
|
||
|
foreign_keys($N){$F=array();foreach(get_rows("EXEC sp_fkeys @fktable_name = ".q($N))as$G){$n=&$F[$G["FK_NAME"]];$n["table"]=$G["PKTABLE_NAME"];$n["source"][]=$G["FKCOLUMN_NAME"];$n["target"][]=$G["PKCOLUMN_NAME"];}return$F;}function
|
||
|
truncate_tables($P){return
|
||
|
apply_queries("TRUNCATE TABLE",$P);}function
|
||
|
drop_views($Y){return
|
||
|
queries("DROP VIEW ".implode(", ",array_map('table',$Y)));}function
|
||
|
drop_tables($P){return
|
||
|
queries("DROP TABLE ".implode(", ",array_map('table',$P)));}function
|
||
|
move_tables($P,$Y,$Ef){return
|
||
|
apply_queries("ALTER SCHEMA ".idf_escape($Ef)." TRANSFER",array_merge($P,$Y));}function
|
||
|
trigger($_){if($_=="")return
|
||
|
array();$H=get_rows("SELECT s.name [Trigger],
|
||
|
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(s.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(s.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
|
||
|
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing],
|
||
|
c.text
|
||
|
FROM sysobjects s
|
||
|
JOIN syscomments c ON s.id = c.id
|
||
|
WHERE s.xtype = 'TR' AND s.name = ".q($_));$F=reset($H);if($F)$F["Statement"]=preg_replace('~^.+\\s+AS\\s+~isU','',$F["text"]);return$F;}function
|
||
|
triggers($N){$F=array();foreach(get_rows("SELECT sys1.name,
|
||
|
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
|
||
|
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing]
|
||
|
FROM sysobjects sys1
|
||
|
JOIN sysobjects sys2 ON sys1.parent_obj = sys2.id
|
||
|
WHERE sys1.xtype = 'TR' AND sys2.name = ".q($N))as$G)$F[$G["name"]]=array($G["Timing"],$G["Event"]);return$F;}function
|
||
|
trigger_options(){return
|
||
|
array("Timing"=>array("AFTER","INSTEAD OF"),"Type"=>array("AS"),);}function
|
||
|
schemas(){return
|
||
|
get_vals("SELECT name FROM sys.schemas");}function
|
||
|
get_schema(){global$g;if($_GET["ns"]!="")return$_GET["ns"];return$g->result("SELECT SCHEMA_NAME()");}function
|
||
|
set_schema($Ze){return
|
||
|
true;}function
|
||
|
use_sql($nb){return"USE ".idf_escape($nb);}function
|
||
|
show_variables(){return
|
||
|
array();}function
|
||
|
show_status(){return
|
||
|
array();}function
|
||
|
support($cc){return
|
||
|
ereg('^(scheme|trigger|view|drop_col)$',$cc);}$u="mssql";$T=array();$qf=array();foreach(array(lang(13)=>array("tinyint"=>3,"smallint"=>5,"int"=>10,"bigint"=>20,"bit"=>1,"decimal"=>0,"real"=>12,"float"=>53,"smallmoney"=>10,"money"=>20),lang(14)=>array("date"=>10,"smalldatetime"=>19,"datetime"=>19,"datetime2"=>19,"time"=>8,"datetimeoffset"=>10),lang(15)=>array("char"=>8000,"varchar"=>8000,"text"=>2147483647,"nchar"=>4000,"nvarchar"=>4000,"ntext"=>1073741823),lang(16)=>array("binary"=>8000,"varbinary"=>8000,"image"=>2147483647),)as$v=>$W){$T+=$W;$qf[$v]=array_keys($W);}$fg=array();$Pd=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");$rc=array("len","lower","round","upper");$wc=array("avg","count","count distinct","max","min","sum");$Cb=array(array("date|time"=>"getdate",),array("int|decimal|real|float|money|datetime"=>"+/-","char|text"=>"+",));}$xb=array("server"=>"MySQL")+$xb;if(!defined("DRIVER")){$ue=array("MySQLi","MySQL","PDO_MySQL");define("DRIVER","server");if(extension_loaded("mysqli")){class
|
||
|
Min_DB
|
||
|
extends
|
||
|
MySQLi{var$extension="MySQLi";function
|
||
|
Min_DB(){parent::init();}function
|
||
|
connect($J,$U,$B){mysqli_report(MYSQLI_REPORT_OFF);list($_c,$qe)=explode(":",$J,2);$F=@$this->real_connect(($J!=""?$_c:ini_get("mysqli.default_host")),($J.$U!=""?$U:ini_get("mysqli.default_user")),($J.$U.$B!=""?$B:ini_get("mysqli.default_pw")),null,(is_numeric($qe)?$qe:ini_get("mysqli.default_port")),(!is_numeric($qe)?$qe:null));if($F){if(method_exists($this,'set_charset'))$this->set_charset("utf8");else$this->query("SET NAMES utf8");}return$F;}function
|
||
|
result($D,$l=0){$E=$this->query($D);if(!$E)return
|
||
|
false;$G=$E->fetch_array();return$G[$l];}function
|
||
|
quote($L){return"'".$this->escape_string($L)."'";}}}elseif(extension_loaded("mysql")&&!(ini_get("sql.safe_mode")&&extension_loaded("pdo_mysql"))){class
|
||
|
Min_DB{var$extension="MySQL",$server_info,$affected_rows,$error,$_link,$_result;function
|
||
|
connect($J,$U,$B){$this->_link=@mysql_connect(($J!=""?$J:ini_get("mysql.default_host")),("$J$U"!=""?$U:ini_get("mysql.default_user")),("$J$U$B"!=""?$B:ini_get("mysql.default_password")),true,131072);if($this->_link){$this->server_info=mysql_get_server_info($this->_link);if(function_exists('mysql_set_charset'))mysql_set_charset("utf8",$this->_link);else$this->query("SET NAMES utf8");}else$this->error=mysql_error();return(bool)$this->_link;}function
|
||
|
quote($L){return"'".mysql_real_escape_string($L,$this->_link)."'";}function
|
||
|
select_db($nb){return
|
||
|
mysql_select_db($nb,$this->_link);}function
|
||
|
query($D,$Zf=false){$E=@($Zf?mysql_unbuffered_query($D,$this->_link):mysql_query($D,$this->_link));$this->error="";if(!$E){$this->error=mysql_error($this->_link);return
|
||
|
false;}if($E===true){$this->affected_rows=mysql_affected_rows($this->_link);$this->info=mysql_info($this->_link);return
|
||
|
true;}return
|
||
|
new
|
||
|
Min_Result($E);}function
|
||
|
multi_query($D){return$this->_result=$this->query($D);}function
|
||
|
store_result(){return$this->_result;}function
|
||
|
next_result(){return
|
||
|
false;}function
|
||
|
result($D,$l=0){$E=$this->query($D);if(!$E||!$E->num_rows)return
|
||
|
false;return
|
||
|
mysql_result($E->_result,0,$l);}}class
|
||
|
Min_Result{var$num_rows,$_result,$_offset=0;function
|
||
|
Min_Result($E){$this->_result=$E;$this->num_rows=mysql_num_rows($E);}function
|
||
|
fetch_assoc(){return
|
||
|
mysql_fetch_assoc($this->_result);}function
|
||
|
fetch_row(){return
|
||
|
mysql_fetch_row($this->_result);}function
|
||
|
fetch_field(){$F=mysql_fetch_field($this->_result,$this->_offset++);$F->orgtable=$F->table;$F->orgname=$F->name;$F->charsetnr=($F->blob?63:0);return$F;}function
|
||
|
__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class
|
||
|
Min_DB
|
||
|
extends
|
||
|
Min_PDO{var$extension="PDO_MySQL";function
|
||
|
connect($J,$U,$B){$this->dsn("mysql:host=".str_replace(":",";unix_socket=",preg_replace('~:(\\d)~',';port=\\1',$J)),$U,$B);$this->query("SET NAMES utf8");return
|
||
|
true;}function
|
||
|
select_db($nb){return$this->query("USE ".idf_escape($nb));}function
|
||
|
query($D,$Zf=false){$this->setAttribute(1000,!$Zf);return
|
||
|
parent::query($D,$Zf);}}}function
|
||
|
idf_escape($r){return"`".str_replace("`","``",$r)."`";}function
|
||
|
table($r){return
|
||
|
idf_escape($r);}function
|
||
|
connect(){global$b;$g=new
|
||
|
Min_DB;$jb=$b->credentials();if($g->connect($jb[0],$jb[1],$jb[2])){$g->query("SET sql_quote_show_create = 1, autocommit = 1");return$g;}$F=$g->error;if(function_exists('iconv')&&!is_utf8($F)&&strlen($Xe=iconv("windows-1250","utf-8",$F))>strlen($F))$F=$Xe;return$F;}function
|
||
|
get_databases($hc=true){global$g;$F=&get_session("dbs");if($F===null){if($hc){restart_session();ob_flush();flush();}$F=get_vals($g->server_info>=5?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA":"SHOW DATABASES");}return$F;}function
|
||
|
limit($D,$Z,$x,$A=0,$ef=" "){return" $D$Z".($x!==null?$ef."LIMIT $x".($A?" OFFSET $A":""):"");}function
|
||
|
limit1($D,$Z){return
|
||
|
limit($D,$Z,1);}function
|
||
|
db_collation($j,$Ta){global$g;$F=null;$gb=$g->result("SHOW CREATE DATABASE ".idf_escape($j),1);if(preg_match('~ COLLATE ([^ ]+)~',$gb,$z))$F=$z[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$gb,$z))$F=$Ta[$z[1]][-1];return$F;}function
|
||
|
engines(){$F=array();foreach(get_rows("SHOW ENGINES")as$G){if(ereg("YES|DEFAULT",$G["Support"]))$F[]=$G["Engine"];}return$F;}function
|
||
|
logged_user(){global$g;return$g->result("SELECT USER()");}function
|
||
|
tables_list(){global$g;return
|
||
|
get_key_vals("SHOW".($g->server_info>=5?" FULL":"")." TABLES");}function
|
||
|
count_tables($i){$F=array();foreach($i
|
||
|
as$j)$F[$j]=count(get_vals("SHOW TABLES IN ".idf_escape($j)));return$F;}function
|
||
|
table_status($_=""){$F=array();foreach(get_rows("SHOW TABLE STATUS".($_!=""?" LIKE ".q(addcslashes($_,"%_")):""))as$G){if($G["Engine"]=="InnoDB")$G["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$G["Comment"]);if(!isset($G["Rows"]))$G["Comment"]="";if($_!="")return$G;$F[$G["Name"]]=$G;}return$F;}function
|
||
|
is_view($O){return!isset($O["Rows"]);}function
|
||
|
fk_support($O){return
|
||
|
eregi("InnoDB|IBMDB2I",$O["Engine"]);}function
|
||
|
fields($N){$F=array();foreach(get_rows("SHOW FULL COLUMNS FROM ".table($N))as$G){preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~',$G["Type"],$z);$F[$G["Field"]]=array("field"=>$G["Field"],"full_type"=>$G["Type"],"type"=>$z[1],"length"=>$z[2],"unsigned"=>ltrim($z[3].$z[4]),"default"=>($G["Default"]!=""||ereg("char",$z[1])?$G["Default"]:null),"null"=>($G["Null"]=="YES"),"auto_increment"=>($G["Extra"]=="auto_increment"),"on_update"=>(eregi('^on update (.+)',$G["Extra"],$z)?$z[1]:""),"collation"=>$G["Collation"],"privileges"=>array_flip(explode(",",$G["Privileges"])),"comment"=>$G["Comment"],"primary"=>($G["Key"]=="PRI"),);}return$F;}function
|
||
|
indexes($N,$h=null){$F=array();foreach(get_rows("SHOW INDEX FROM ".table($N),$h)as$G){$F[$G["Key_name"]]["type"]=($G["Key_name"]=="PRIMARY"?"PRIMARY":($G["Index_type"]=="FULLTEXT"?"FULLTEXT":($G["Non_unique"]?"INDEX":"UNIQUE")));$F[$G["Key_name"]]["columns"][]=$G["Column_name"];$F[$G["Key_name"]]["lengths"][]=$G["Sub_part"];}return$F;}function
|
||
|
foreign_keys($N){global$g,$Ld;static$oe='`(?:[^`]|``)+`';$F=array();$hb=$g->result("SHOW CREATE TABLE ".table($N),1);if($hb){preg_match_all("~CONSTRAINT ($oe) FOREIGN KEY \\(((?:$oe,? ?)+)\\) REFERENCES ($oe)(?:\\.($oe))? \\(((?:$oe,? ?)+)\\)(?: ON DELETE ($Ld))?(?: ON UPDATE ($Ld))?~",$hb,$jd,PREG_SET_ORDER);foreach($jd
|
||
|
as$z){preg_match_all("~$oe~",$z[2],$jf);preg_match_all("~$oe~",$z[5],$Ef);$F[idf_unescape($z[1])]=array("db"=>idf_unescape($z[4]!=""?$z[3]:$z[4]),"table"=>idf_unescape($z[4]!=""?$z[4]:$z[3]),"source"=>array_map('idf_unescape',$jf[0]),"target"=>array_map('idf_unescape',$Ef[0]),"on_delete"=>($z[6]?$z[6]:"RESTRICT"),"on_update"=>($z[7]?$z[7]:"RESTRICT"),);}}return$F;}function
|
||
|
view($_){global$g;return
|
||
|
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU','',$g->result("SHOW CREATE VIEW ".table($_),1)));}function
|
||
|
collations(){$F=array();foreach(get_rows("SHOW COLLATION")as$G){if($G["Default"])$F[$G["Charset"]][-1]=$G["Collation"];else$F[$G["Charset"]][]=$G["Collation"];}ksort($F);foreach($F
|
||
|
as$v=>$W)asort($F[$v]);return$F;}function
|
||
|
information_schema($j){global$g;return($g->server_info>=5&&$j=="information_schema");}function
|
||
|
error(){global$g;return
|
||
|
h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$g->error));}function
|
||
|
error_line(){global$g;if(ereg(' at line ([0-9]+)$',$g->error,$Ne))return$Ne[1]-1;}function
|
||
|
exact_value($W){return
|
||
|
q($W)." COLLATE utf8_bin";}function
|
||
|
create_database($j,$d){set_session("dbs",null);return
|
||
|
queries("CREATE DATABASE ".idf_escape($j).($d?" COLLATE ".q($d):""));}function
|
||
|
drop_databases($i){set_session("dbs",null);return
|
||
|
apply_queries("DROP DATABASE",$i,'idf_escape');}function
|
||
|
rename_database($_,$d){if(create_database($_,$d)){$Oe=array();foreach(tables_list()as$N=>$S)$Oe[]=table($N)." TO ".idf_escape($_).".".table($N);if(!$Oe||queries("RENAME TABLE ".implode(", ",$Oe))){queries("DROP DATABASE ".idf_escape(DB));return
|
||
|
true;}}return
|
||
|
false;}function
|
||
|
auto_increment(){$Ca=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$s){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$s["columns"],true)){$Ca="";break;}if($s["type"]=="PRIMARY")$Ca=" UNIQUE";}}return" AUTO_INCREMENT$Ca";}function
|
||
|
alter_table($N,$_,$m,$ic,$Xa,$Jb,$d,$Ba,$le){$c=array();foreach($m
|
||
|
as$l)$c[]=($l[1]?($N!=""?($l[0]!=""?"CHANGE ".idf_escape($l[0]):"ADD"):" ")." ".implode($l[1]).($N!=""?$l[2]:""):"DROP ".idf_escape($l[0]));$c=array_merge($c,$ic);$nf="COMMENT=".q($Xa).($Jb?" ENGINE=".q($Jb):"").($d?" COLLATE ".q($d):"").($Ba!=""?" AUTO_INCREMENT=$Ba":"").$le;if($N=="")return
|
||
|
queries("CREATE TABLE ".table($_)." (\n".implode(",\n",$c)."\n) $nf");if($N!=$_)$c[]="RENAME TO ".table($_);$c[]=$nf;return
|
||
|
queries("ALTER TABLE ".table($N)."\n".implode(",\n",$c));}function
|
||
|
alter_indexes($N,$c){foreach($c
|
||
|
as$v=>$W)$c[$v]=($W[2]=="DROP"?"\nDROP INDEX ".idf_escape($W[1]):"\nADD $W[0] ".($W[0]=="PRIMARY"?"KEY ":"").($W[1]!=""?idf_escape($W[1])." ":"").$W[2]);return
|
||
|
queries("ALTER TABLE ".table($N).implode(",",$c));}function
|
||
|
truncate_tables($P){return
|
||
|
apply_queries("TRUNCATE TABLE",$P);}function
|
||
|
drop_views($Y){return
|
||
|
queries("DROP VIEW ".implode(", ",array_map('table',$Y)));}function
|
||
|
drop_tables($P){return
|
||
|
queries("DROP TABLE ".implode(", ",array_map('table',$P)));}function
|
||
|
move_tables($P,$Y,$Ef){$Oe=array();foreach(array_merge($P,$Y)as$N)$Oe[]=table($N)." TO ".idf_escape($Ef).".".table($N);return
|
||
|
queries("RENAME TABLE ".implode(", ",$Oe));}function
|
||
|
copy_tables($P,$Y,$Ef){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($P
|
||
|
as$N){$_=($Ef==DB?table("copy_$N"):idf_escape($Ef).".".table($N));if(!queries("DROP TABLE IF EXISTS $_")||!queries("CREATE TABLE $_ LIKE ".table($N))||!queries("INSERT INTO $_ SELECT * FROM ".table($N)))return
|
||
|
false;}foreach($Y
|
||
|
as$N){$_=($Ef==DB?table("copy_$N"):idf_escape($Ef).".".table($N));$og=view($N);if(!queries("DROP VIEW IF EXISTS $_")||!queries("CREATE VIEW $_ AS $og[select]"))return
|
||
|
false;}return
|
||
|
true;}function
|
||
|
trigger($_){if($_=="")return
|
||
|
array();$H=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($_));return
|
||
|
reset($H);}function
|
||
|
triggers($N){$F=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($N,"%_")))as$G)$F[$G["Trigger"]]=array($G["Timing"],$G["Event"]);return$F;}function
|
||
|
trigger_options(){return
|
||
|
array("Timing"=>array("BEFORE","AFTER"),"Type"=>array("FOR EACH ROW"),);}function
|
||
|
routine($_,$S){global$g,$Lb,$Ic,$T;$va=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$Yf="((".implode("|",array_merge(array_keys($T),$va)).")\\b(?:\\s*\\(((?:[^'\")]*|$Lb)+)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s]+)['\"]?)?";$oe="\\s*(".($S=="FUNCTION"?"":$Ic).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$Yf";$gb=$g->result("SHOW CREATE $S ".idf_escape($_),2);preg_match("~\\(((?:$oe\\s*,?)*)\\)\\s*".($S=="FUNCTION"?"RETURNS\\s+$Yf\\s+":"")."(.*)~is",$gb,$z);$m=array();preg_match_all("~$oe\\s*,?~is",$z[1],$jd,PREG_SET_ORDER);foreach($jd
|
||
|
as$ge){$_=str_replace("``","`",$ge[2]).$ge[3];$m[]=array("field"=>$_,"type"=>strtolower($ge[5]),"length"=>preg_replace_callback("~$Lb~s",'normalize_enum',$ge[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$ge[8] $ge[7]"))),"full_type"=>$ge[4],"inout"=>strtoupper($ge[1]),"collation"=>strtolower($ge[9]),);}if($S!="FUNCTION")return
|
||
|
array("fields"=>$m,"definition"=>$z[11]);return
|
||
|
array("fields"=>$m,"returns"=>array("type"=>$z[12],"length"=>$z[13],"unsigned"=>$z[15],"collation"=>$z[16]),"definition"=>$z[17],"language"=>"SQL",);}function
|
||
|
routines(){return
|
||
|
get_rows("SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function
|
||
|
routine_languages(){return
|
||
|
array();}function
|
||
|
begin(){return
|
||
|
queries("BEGIN");}function
|
||
|
insert_into($N,$K){return
|
||
|
queries("INSERT INTO ".table($N)." (".implode(", ",array_keys($K)).")\nVALUES (".implode(", ",$K).")");}function
|
||
|
insert_update($N,$K,$xe){foreach($K
|
||
|
as$v=>$W)$K[$v]="$v = $W";$gg=implode(", ",$K);return
|
||
|
queries("INSERT INTO ".table($N)." SET $gg ON DUPLICATE KEY UPDATE $gg");}function
|
||
|
last_id(){global$g;return$g->result("SELECT LAST_INSERT_ID()");}function
|
||
|
explain($g,$D){return$g->query("EXPLAIN $D");}function
|
||
|
found_rows($O,$Z){return($Z||$O["Engine"]!="InnoDB"?null:$O["Rows"]);}function
|
||
|
types(){return
|
||
|
array();}function
|
||
|
schemas(){return
|
||
|
array();}function
|
||
|
get_schema(){return"";}function
|
||
|
set_schema($Ze){return
|
||
|
true;}function
|
||
|
create_sql($N,$Ba){global$g;$F=$g->result("SHOW CREATE TABLE ".table($N),1);if(!$Ba)$F=preg_replace('~ AUTO_INCREMENT=\\d+~','',$F);return$F;}function
|
||
|
truncate_sql($N){return"TRUNCATE ".table($N);}function
|
||
|
use_sql($nb){return"USE ".idf_escape($nb);}function
|
||
|
trigger_sql($N,$M){$F="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($N,"%_")),null,"-- ")as$G)$F.="\n".($M=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".idf_escape($G["Trigger"]).";;\n":"")."CREATE TRIGGER ".idf_escape($G["Trigger"])." $G[Timing] $G[Event] ON ".table($G["Table"])." FOR EACH ROW\n$G[Statement];;\n";return$F;}function
|
||
|
show_variables(){return
|
||
|
get_key_vals("SHOW VARIABLES");}function
|
||
|
process_list(){return
|
||
|
get_rows("SHOW FULL PROCESSLIST");}function
|
||
|
show_status(){return
|
||
|
get_key_vals("SHOW STATUS");}function
|
||
|
support($cc){global$g;return!ereg("scheme|sequence|type".($g->server_info<5.1?"|event|partitioning".($g->server_info<5?"|view|routine|trigger":""):""),$cc);}$u="sql";$T=array();$qf=array();foreach(array(lang(13)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(14)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(15)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(16)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(19)=>array("enum"=>65535,"set"=>64),)as$v=>$W){$T+=$W;$qf[$v]=array_keys($W);}$fg=array("unsigned","zerofill","unsigned zerofill");$Pd=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","");$rc=array("char_length","date","from_unixtime","hex","lower","round","sec_to_time","time_to_sec","upper");$wc=array("avg","count","count distinct","group_concat","max","min","sum");$Cb=array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1/hex","date|time"=>"now",),array("int|float|double|decimal"=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",));}define("SERVER",$_GET[DRIVER]);define("DB",$_GET["db"]);define("ME",preg_replace('~^[^?]*/([^?]*).*~','\\1',$_SERVER["REQUEST_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"])."&":""):''));$ia="3.5.1";class
|
||
|
Adminer{var$operators;function
|
||
|
name(){return"<a href='http://www.adminer.org/' id='h1'>Adminer</a>";}function
|
||
|
credentials(){return
|
||
|
array(SERVER,$_GET["username"],get_session("pwds"));}function
|
||
|
permanentLogin(){return
|
||
|
password_file();}function
|
||
|
database(){return
|
||
|
DB;}function
|
||
|
databases($hc=true){return
|
||
|
get_databases($hc);}function
|
||
|
headers(){return
|
||
|
true;}function
|
||
|
head(){return
|
||
|
true;}function
|
||
|
loginForm(){global$xb;echo'<table cellspacing="0">
|
||
|
<tr><th>',lang(20),'<td>',html_select("auth[driver]",$xb,DRIVER,"loginDriver(this);"),'<tr><th>',lang(21),'<td><input name="auth[server]" value="',h(SERVER),'" title="hostname[:port]">
|
||
|
<tr><th>',lang(22),'<td><input id="username" name="auth[username]" value="',h($_GET["username"]),'">
|
||
|
<tr><th>',lang(23),'<td><input type="password" name="auth[password]">
|
||
|
<tr><th>',lang(24),'<td><input name="auth[db]" value="',h($_GET["db"]);?>">
|
||
|
</table>
|
||
|
<script type="text/javascript">
|
||
|
var username = document.getElementById('username');
|
||
|
username.focus();
|
||
|
username.form['auth[driver]'].onchange();
|
||
|
</script>
|
||
|
<?php
|
||
|
|
||
|
echo"<p><input type='submit' value='".lang(25)."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],lang(26))."\n";}function
|
||
|
login($gd,$B){return
|
||
|
true;}function
|
||
|
tableName($xf){return
|
||
|
h($xf["Name"]);}function
|
||
|
fieldName($l,$Td=0){return'<span title="'.h($l["full_type"]).'">'.h($l["field"]).'</span>';}function
|
||
|
selectLinks($xf,$K=""){echo'<p class="tabs">';$ed=array("select"=>lang(27),"table"=>lang(28));if(is_view($xf))$ed["view"]=lang(29);else$ed["create"]=lang(30);if($K!==null)$ed["edit"]=lang(31);foreach($ed
|
||
|
as$v=>$W)echo" <a href='".h(ME)."$v=".urlencode($xf["Name"]).($v=="edit"?$K:"")."'".bold(isset($_GET[$v])).">$W</a>";echo"\n";}function
|
||
|
foreignKeys($N){return
|
||
|
foreign_keys($N);}function
|
||
|
backwardKeys($N,$wf){return
|
||
|
array();}function
|
||
|
backwardKeysPrint($Ea,$G){}function
|
||
|
selectQuery($D){global$u;return"<p><a href='".h(remove_from_uri("page"))."&page=last' title='".lang(32)."'>>></a> <code class='jush-$u'>".h(str_replace("\n"," ",$D))."</code> <a href='".h(ME)."sql=".urlencode($D)."'>".lang(33)."</a></p>\n";}function
|
||
|
rowDescription($N){return"";}function
|
||
|
rowDescriptions($H,$jc){return$H;}function
|
||
|
selectVal($W,$y,$l){$F=($W===null?"<i>NULL</i>":(ereg("char|binary",$l["type"])&&!ereg("var",$l["type"])?"<code>$W</code>":$W));if(ereg('blob|bytea|raw|file',$l["type"])&&!is_utf8($W))$F=lang(34,strlen($W));return($y?"<a href='$y'>$F</a>":$F);}function
|
||
|
editVal($W,$l){return(ereg("binary",$l["type"])?reset(unpack("H*",$W)):$W);}function
|
||
|
selectColumnsPrint($I,$f){global$rc,$wc;print_fieldset("select",lang(35),$I);$p=0;$qc=array(lang(36)=>$rc,lang(37)=>$wc);foreach($I
|
||
|
as$v=>$W){$W=$_GET["columns"][$v];echo"<div>".html_select("columns[$p][fun]",array(-1=>"")+$qc,$W["fun"]),"(<select name='columns[$p][col]' onchange='selectFieldChange(this.form);'><option>".optionlist($f,$W["col"],true)."</select>)</div>\n";$p++;}echo"<div>".html_select("columns[$p][fun]",array(-1=>"")+$qc,"","this.nextSibling.nextSibling.onchange();"),"(<select name='columns[$p][col]' onchange='selectAddRow(this);'><option>".optionlist($f,null,true)."</select>)</div>\n","</div></fieldset>\n";}function
|
||
|
selectSearchPrint($Z,$f,$t){print_fieldset("search",lang(38),$Z);foreach($t
|
||
|
as$p=>$s){if($s["type"]=="FULLTEXT"){echo"(<i>".implode("</i>, <i>",array_map('h',$s["columns"]))."</i>) AGAINST"," <input name='fulltext[$p]' value='".h($_GET["fulltext"][$p])."' onchange='selectFieldChange(this.form);'>",checkbox("boolean[$p]",1,isset($_GET["boolean"][$p]),"BOOL"),"<br>\n";}}$_GET["where"]=(array)$_GET["where"];reset($_GET["where"]);$Ma="this.nextSibling.onchange();";for($p=0;$p<=count($_GET["where"]);$p++){list(,$W)=each($_GET["where"]);if(!$W||("$W[col]$W[val]"!=""&&in_array($W["op"],$this->operators))){echo"<div><select name='where[$p][col]' onchange='$Ma'><option value=''>(".lang(39).")".optionlist($f,$W["col"],true)."</select>",html_select("where[$p][op]",$this->operators,$W["op"],$Ma),"<input name='where[$p][val]' value='".h($W["val"])."' onchange='".($W?"selectFieldChange(this.form)":"selectAddRow(this)").";'></div>\n";}}echo"</div></fieldset>\n";}function
|
||
|
selectOrderPrint($Td,$f,$t){print_fieldset("sort",lang(40),$Td);$p=0;foreach((array)$_GET["order"]as$v=>$W){if(isset($f[$W])){echo"<div><select name='order[$p]' onchange='selectFieldChange(this.form);'><option>".optionlist($f,$W,true)."</select>",checkbox("desc[$p]",1,isset($_GET["desc"][$v]),lang(41))."</div>\n";$p++;}}echo"<div><select name='order[$p]' onchange='selectAddRow(this);'><option>".optionlist($f,null,true)."</select>","<label><input type='checkbox' name='desc[$p]' value='1'>".lang(41)."</label></div>\n";echo"</div></fieldset>\n";}function
|
||
|
selectLimitPrint($x){echo"<fieldset><legend>".lang(42)."</legend><div>";echo"<input name='limit' size='3' value='".h($x)."' onchange='selectFieldChange(this.form);'>","</div></fieldset>\n";}function
|
||
|
selectLengthPrint($Hf){if($Hf!==null){echo"<fieldset><legend>".lang(43)."</legend><div>",'<input name="text_length" size="3" value="'.h($Hf).'">',"</div></fieldset>\n";}}function
|
||
|
selectActionPrint($t){echo"<fieldset><legend>".lang(44)."</legend><div>","<input type='submit' value='".lang(35)."'>"," <span id='noindex' title='".lang(45)."'></span>","<script type='text/javascript'>\n","var indexColumns = ";$f=array();foreach($t
|
||
|
as$s){if($s["type"]!="FULLTEXT")$f[reset($s["columns"])]=1;}$f[""]=1;foreach($f
|
||
|
as$v=>$W)json_row($v);echo";\n","selectFieldChange(document.getElementById('form'));\n","</script>\n","</div></fieldset>\n";}function
|
||
|
selectCommandPrint(){return!information_schema(DB);}function
|
||
|
selectImportPrint(){return
|
||
|
true;}function
|
||
|
selectEmailPrint($Fb,$f){}function
|
||
|
selectColumnsProcess($f,$t){global$rc,$wc;$I=array();$uc=array();foreach((array)$_GET["columns"]as$v=>$W){if($W["fun"]=="count"||(isset($f[$W["col"]])&&(!$W["fun"]||in_array($W["fun"],$rc)||in_array($W["fun"],$wc)))){$I[$v]=apply_sql_function($W["fun"],(isset($f[$W["col"]])?idf_escape($W["col"]):"*"));if(!in_array($W["fun"],$wc))$uc[]=$I[$v];}}return
|
||
|
array($I,$uc);}function
|
||
|
selectSearchProcess($m,$t){global$u;$F=array();foreach($t
|
||
|
as$p=>$s){if($s["type"]=="FULLTEXT"&&$_GET["fulltext"][$p]!="")$F[]="MATCH (".implode(", ",array_map('idf_escape',$s["columns"])).") AGAINST (".q($_GET["fulltext"][$p]).(isset($_GET["boolean"][$p])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$W){if("$W[col]$W[val]"!=""&&in_array($W["op"],$this->operators)){$ab=" $W[op]";if(ereg('IN$',$W["op"])){$Dc=process_length($W["val"]);$ab.=" (".($Dc!=""?$Dc:"NULL").")";}elseif(!$W["op"])$ab.=$W["val"];elseif($W["op"]=="LIKE %%")$ab=" LIKE ".$this->processInput($m[$W["col"]],"%$W[val]%");elseif(!ereg('NULL$',$W["op"]))$ab.=" ".$this->processInput($m[$W["col"]],$W["val"]);if($W["col"]!="")$F[]=idf_escape($W["col"]).$ab;else{$Ua=array();foreach($m
|
||
|
as$_=>$l){if(is_numeric($W["val"])||!ereg('int|float|double|decimal|bit',$l["type"])){$_=idf_escape($_);$Ua[]=($u=="sql"&&ereg('char|text|enum|set',$l["type"])&&!ereg('^utf8',$l["collation"])?"CONVERT($_ USING utf8)":$_);}}$F[]=($Ua?"(".implode("$ab OR ",$Ua)."$ab)":"0");}}}return$F;}function
|
||
|
selectOrderProcess($m,$t){$F=array();foreach((array)$_GET["order"]as$v=>$W){if(isset($m[$W])||preg_match('~^((COUNT\\(DISTINCT |[A-Z0-9_]+\\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\\)|COUNT\\(\\*\\))$~',$W))$F[]=(isset($m[$W])?idf_escape($W):$W).(isset($_GET["desc"][$v])?" DESC":"");}return$F;}function
|
||
|
selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"30");}function
|
||
|
selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function
|
||
|
selectEmailProcess($Z,$jc){return
|
||
|
false;}function
|
||
|
messageQuery($D){global$u;static$fb=0;restart_session();$q="sql-".($fb++);$yc=&get_session("queries");if(strlen($D)>1e6)$D=ereg_replace('[\x80-\xFF]+$','',substr($D,0,1e6))."\n...";$yc[$_GET["db"]][]=array($D,time());return" <span class='time'>".@date("H:i:s")."</span> <a href='#$q' onclick=\"return !toggle('$q');\">".lang(46)."</a><div id='$q' class='hidden'><pre><code class='jush-$u'>".shorten_utf8($D,1000).'</code></pre><p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($yc[$_GET["db"]])-1)).'">'.lang(33).'</a></div>';}function
|
||
|
editFunctions($l){global$Cb;$F=($l["null"]?"NULL/":"");foreach($Cb
|
||
|
as$v=>$rc){if(!$v||(!isset($_GET["call"])&&(isset($_GET["select"])||where($_GET)))){foreach($rc
|
||
|
as$oe=>$W){if(!$oe||ereg($oe,$l["type"]))$F.="/$W";}if($v&&!ereg('set|blob|bytea|raw|file',$l["type"]))$F.="/=";}}return
|
||
|
explode("/",$F);}function
|
||
|
editInput($N,$l,$_a,$X){if($l["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$_a value='-1' checked><i>".lang(5)."</i></label> ":"").($l["null"]?"<label><input type='radio'$_a value=''".($X!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").enum_input("radio",$_a,$l,$X,0);return"";}function
|
||
|
processInput($l,$X,$o=""){if($o=="=")return$X;$_=$l["field"];$F=($l["type"]=="bit"&&ereg("^([0-9]+|b'[0-1]+')\$",$X)?$X:q($X));if(ereg('^(now|getdate|uuid)$',$o))$F="$o()";elseif(ereg('^current_(date|timestamp)$',$o))$F=$o;elseif(ereg('^([+-]|\\|\\|)$',$o))$F=idf_escape($_)." $o $F";elseif(ereg('^[+-] interval$',$o))$F=idf_escape($_)." $o ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+$~i",$X)?$X:$F);elseif(ereg('^(addtime|subtime|concat)$',$o))$F="$o(".idf_escape($_).", $F)";elseif(ereg('^(md5|sha1|password|encrypt|hex)$',$o))$F="$o($F)";if(ereg("binary",$l["type"]))$F="unhex($F)";return$F;}function
|
||
|
dumpOutput(){$F=array('text'=>lang(47),'file'=>lang(48));if(function_exists('gzencode'))$F['gz']='gzip';if(function_exists('bzcompress'))$F['bz2']='bzip2';return$F;}function
|
||
|
dumpFormat(){return
|
||
|
array('sql'=>'SQL','csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
|
||
|
dumpTable($N,$M,$Nc=false){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($M)dump_csv(array_keys(fields($N)));}elseif($M){$gb=create_sql($N,$_POST["auto_increment"]);if($gb){if($M=="DROP+CREATE")echo"DROP ".($Nc?"VIEW":"TABLE")." IF EXISTS ".table($N).";\n";if($Nc)$gb=remove_definer($gb);echo($M!="CREATE+ALTER"?$gb:($Nc?substr_replace($gb," OR REPLACE",6,0):substr_replace($gb," IF NOT EXISTS",12,0))).";\n\n";}if($M=="CREATE+ALTER"&&!$Nc){$D="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($N)." 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 '";$m=array();$ua="";foreach(get_rows($D)as$G){$qb=$G["COLUMN_DEFAULT"];$G["default"]=($qb!==null?q($qb):"NULL");$G["after"]=q($ua);$G["alter"]=escape_string(idf_escape($G["COLUMN_NAME"])." $G[COLUMN_TYPE]".($G["COLLATION_NAME"]?" COLLATE $G[COLLATION_NAME]":"").($qb!==null?" DEFAULT ".($qb=="CURRENT_TIMESTAMP"?$qb:$G["default"]):"").($G["IS_NULLABLE"]=="YES"?"":" NOT NULL").($G["EXTRA"]?" $G[EXTRA]":"").($G["COLUMN_COMMENT"]?" COMMENT ".q($G["COLUMN_COMMENT"]):"").($ua?" AFTER ".idf_escape($ua):" FIRST"));echo", ADD $G[alter]";$m[]=$G;$ua=$G["COLUMN_NAME"];}echo"';
|
||
|
DECLARE columns CURSOR FOR $D;
|
||
|
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($m
|
||
|
as$G)echo"
|
||
|
WHEN ".q($G["COLUMN_NAME"])." THEN
|
||
|
SET add_columns = REPLACE(add_columns, ', ADD $G[alter]', IF(
|
||
|
_column_default <=> $G[default] AND _is_nullable = '$G[IS_NULLABLE]' AND _collation_name <=> ".(isset($G["COLLATION_NAME"])?"'$G[COLLATION_NAME]'":"NULL")." AND _column_type = ".q($G["COLUMN_TYPE"])." AND _extra = '$G[EXTRA]' AND _column_comment = ".q($G["COLUMN_COMMENT"])." AND after = $G[after]
|
||
|
, '', ', MODIFY $G[alter]'));";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($N)."', SUBSTR(CONCAT(add_columns, @alter_table), 2), ';\\n');
|
||
|
END IF;
|
||
|
END;;
|
||
|
DELIMITER ;
|
||
|
CALL adminer_alter(@adminer_alter);
|
||
|
DROP PROCEDURE adminer_alter;
|
||
|
|
||
|
";}}}function
|
||
|
dumpData($N,$M,$D){global$g,$u;$ld=($u=="sqlite"?0:1048576);if($M){if($_POST["format"]=="sql"&&$M=="TRUNCATE+INSERT")echo
|
||
|
truncate_sql($N).";\n";if($_POST["format"]=="sql")$m=fields($N);$E=$g->query($D,1);if($E){$Kc="";$Ka="";$Sc=array();while($G=$E->fetch_row()){if(!$Sc){foreach($G
|
||
|
as$W){$l=$E->fetch_field();$Sc[]=$l->name;}}if($_POST["format"]!="sql"){if($M=="table"){dump_csv($Sc);$M="INSERT";}dump_csv($G);}else{if(!$Kc)$Kc="INSERT INTO ".table($N)." (".implode(", ",array_map('idf_escape',$Sc)).") VALUES";foreach($G
|
||
|
as$v=>$W)$G[$v]=($W!==null?(ereg('int|float|double|decimal|bit',$m[$Sc[$v]]["type"])?$W:q($W)):"NULL");$Xe=implode(",\t",$G);if($M=="INSERT+UPDATE"){$K=array();foreach($G
|
||
|
as$v=>$W)$K[]=idf_escape($Sc[$v])." = $W";echo"$Kc ($Xe) ON DUPLICATE KEY UPDATE ".implode(", ",$K).";\n";}else{$Xe=($ld?"\n":" ")."($Xe)";if(!$Ka)$Ka=$Kc.$Xe;elseif(strlen($Ka)+4+strlen($Xe)<$ld)$Ka.=",$Xe";else{echo"$Ka;\n";$Ka=$Kc.$Xe;}}}}if($_POST["format"]=="sql"&&$M!="INSERT+UPDATE"&&$Ka){$Ka.=";\n";echo$Ka;}}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$g->error)."\n";}}function
|
||
|
dumpFilename($Bc){return
|
||
|
friendly_url($Bc!=""?$Bc:(SERVER!=""?SERVER:"localhost"));}function
|
||
|
dumpHeaders($Bc,$yd=false){$de=$_POST["output"];$Yb=($_POST["format"]=="sql"?"sql":($yd?"tar":"csv"));header("Content-Type: ".($de=="bz2"?"application/x-bzip":($de=="gz"?"application/x-gzip":($Yb=="tar"?"application/x-tar":($Yb=="sql"||$de!="file"?"text/plain":"text/csv")."; charset=utf-8"))));if($de=="bz2")ob_start('bzcompress',1e6);if($de=="gz")ob_start('gzencode',1e6);return$Yb;}function
|
||
|
homepage(){echo'<p>'.($_GET["ns"]==""?'<a href="'.h(ME).'database=">'.lang(49)."</a>\n":""),(support("scheme")?"<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?lang(50):lang(51))."</a>\n":""),($_GET["ns"]!==""?'<a href="'.h(ME).'schema=">'.lang(52)."</a>\n":""),(support("privileges")?"<a href='".h(ME)."privileges='>".lang(53)."</a>\n":"");return
|
||
|
true;}function
|
||
|
navigation($xd){global$ia,$g,$Q,$u,$xb;echo'<h1>
|
||
|
',$this->name(),' <span class="version">',$ia,'</span>
|
||
|
<a href="http://www.adminer.org/#download" id="version">',(version_compare($ia,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'</a>
|
||
|
</h1>
|
||
|
';if($xd=="auth"){$gc=true;foreach((array)$_SESSION["pwds"]as$wb=>$hf){foreach($hf
|
||
|
as$J=>$kg){foreach($kg
|
||
|
as$U=>$B){if($B!==null){if($gc){echo"<p id='logins' onmouseover='menuOver(this);' onmouseout='menuOut(this);'>\n";$gc=false;}echo"<a href='".h(auth_url($wb,$J,$U))."'>($xb[$wb]) ".h($U.($J!=""?"@$J":""))."</a><br>\n";}}}}}else{$i=$this->databases();echo'<form action="" method="post">
|
||
|
<p class="logout">
|
||
|
';if(DB==""||!$xd){echo"<a href='".h(ME)."sql='".bold(isset($_GET["sql"])).">".lang(46)."</a>\n";if(support("dump"))echo"<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".lang(54)."</a>\n";}echo'<input type="submit" name="logout" value="',lang(55),'">
|
||
|
<input type="hidden" name="token" value="',$Q,'">
|
||
|
</p>
|
||
|
</form>
|
||
|
<form action="">
|
||
|
<p id="dbs">
|
||
|
';hidden_fields_get();echo($i?html_select("db",array(""=>"(".lang(56).")")+$i,DB,"this.form.submit();"):'<input name="db" value="'.h(DB).'">'),'<input type="submit" value="',lang(9),'"',($i?" class='hidden'":""),'>
|
||
|
';if($xd!="db"&&DB!=""&&$g->select_db(DB)){if(support("scheme")){echo"<br>".html_select("ns",array(""=>"(".lang(57).")")+schemas(),$_GET["ns"],"this.form.submit();");if($_GET["ns"]!="")set_schema($_GET["ns"]);}}echo(isset($_GET["sql"])?'<input type="hidden" name="sql" value="">':(isset($_GET["schema"])?'<input type="hidden" name="schema" value="">':(isset($_GET["dump"])?'<input type="hidden" name="dump" value="">':""))),"</p></form>\n";if($_GET["ns"]!==""&&!$xd&&DB!=""){echo'<p><a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".lang(58)."</a>\n";$P=tables_list();if(!$P)echo"<p class='message'>".lang(6)."\n";else{$this->tablesPrint($P);$ed=array();foreach($P
|
||
|
as$N=>$S)$ed[]=preg_quote($N,'/');echo"<script type='text/javascript'>\n","var jushLinks = { $u: [ '".js_escape(ME)."table=\$&', /\\b(".implode("|",$ed).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$W)echo"jushLinks.$W = jushLinks.$u;\n";echo"</script>\n";}}}}function
|
||
|
tablesPrint($P){echo"<p id='tables' onmouseover='menuOver(this);' onmouseout='menuOut(this);'>\n";foreach($P
|
||
|
as$N=>$S){echo'<a href="'.h(ME).'select='.urlencode($N).'"'.bold($_GET["select"]==$N).">".lang(59)."</a> ",'<a href="'.h(ME).'table='.urlencode($N).'"'.bold($_GET["table"]==$N)." title='".lang(28)."'>".$this->tableName(array("Name"=>$N))."</a><br>\n";}}}$b=(function_exists('adminer_object')?adminer_object():new
|
||
|
Adminer);if($b->operators===null)$b->operators=$Pd;function
|
||
|
page_header($Kf,$k="",$Ja=array(),$Lf=""){global$ca,$b,$g,$xb;header("Content-Type: text/html; charset=utf-8");if($b->headers()){header("X-Frame-Options: deny");header("X-XSS-Protection: 0");}$Mf=$Kf.($Lf!=""?": ".h($Lf):"");$Nf=strip_tags($Mf.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||
|
<html lang="',$ca,'" dir="',lang(60),'">
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||
|
<meta http-equiv="Content-Script-Type" content="text/javascript">
|
||
|
<meta name="robots" content="noindex">
|
||
|
<title>',$Nf,'</title>
|
||
|
<link rel="stylesheet" type="text/css" href="',h(preg_replace("~\\?.*~","",ME))."?file=default.css&version=3.5.1",'">
|
||
|
<script type="text/javascript" src="',h(preg_replace("~\\?.*~","",ME))."?file=functions.js&version=3.5.1",'"></script>
|
||
|
';if($b->head()){echo'<link rel="shortcut icon" type="image/x-icon" href="',h(preg_replace("~\\?.*~","",ME))."?file=favicon.ico&version=3.5.1",'" id="favicon">
|
||
|
';if(file_exists("adminer.css")){echo'<link rel="stylesheet" type="text/css" href="adminer.css">
|
||
|
';}}echo'
|
||
|
<body class="',lang(60),' nojs" onkeydown="bodyKeydown(event);" onload="bodyLoad(\'',(is_object($g)?substr($g->server_info,0,3):""),'\');',(isset($_COOKIE["adminer_version"])?"":" verifyVersion();"),'">
|
||
|
<script type="text/javascript">
|
||
|
document.body.className = document.body.className.replace(/ nojs/, \' js\');
|
||
|
</script>
|
||
|
|
||
|
<div id="content">
|
||
|
';if($Ja!==null){$y=substr(preg_replace('~(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($y?$y:".").'">'.$xb[DRIVER].'</a> » ';$y=substr(preg_replace('~(db|ns)=[^&]*&~','',ME),0,-1);$J=(SERVER!=""?h(SERVER):lang(21));if($Ja===false)echo"$J\n";else{echo"<a href='".($y?h($y):".")."' accesskey='1' title='Alt+Shift+1'>$J</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ja)))echo'<a href="'.h($y."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Ja)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Ja
|
||
|
as$v=>$W){$sb=(is_array($W)?$W[1]:$W);if($sb!="")echo'<a href="'.h(ME."$v=").urlencode(is_array($W)?$W[0]:$W).'">'.h($sb).'</a> » ';}}echo"$Kf\n";}}echo"<h2>$Mf</h2>\n";restart_session();$hg=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$ud=$_SESSION["messages"][$hg];if($ud){echo"<div class='message'>".implode("</div>\n<div class='message'>",$ud)."</div>\n";unset($_SESSION["messages"][$hg]);}$i=&get_session("dbs");if(DB!=""&&$i&&!in_array(DB,$i,true))$i=null;if($k)echo"<div class='error'>$k</div>\n";define("PAGE_HEADER",1);}function
|
||
|
page_footer($xd=""){global$b;echo'</div>
|
||
|
|
||
|
';switch_lang();echo'<div id="menu">
|
||
|
';$b->navigation($xd);echo'</div>
|
||
|
';}function
|
||
|
int32($_d){while($_d>=2147483648)$_d-=4294967296;while($_d<=-2147483649)$_d+=4294967296;return(int)$_d;}function
|
||
|
long2str($V,$qg){$Xe='';foreach($V
|
||
|
as$W)$Xe.=pack('V',$W);if($qg)return
|
||
|
substr($Xe,0,end($V));return$Xe;}function
|
||
|
str2long($Xe,$qg){$V=array_values(unpack('V*',str_pad($Xe,4*ceil(strlen($Xe)/4),"\0")));if($qg)$V[]=strlen($Xe);return$V;}function
|
||
|
xxtea_mx($ug,$tg,$uf,$Qc){return
|
||
|
int32((($ug>>5&0x7FFFFFF)^$tg<<2)+(($tg>>3&0x1FFFFFFF)^$ug<<4))^int32(($uf^$tg)+($Qc^$ug));}function
|
||
|
encrypt_string($pf,$v){if($pf=="")return"";$v=array_values(unpack("V*",pack("H*",md5($v))));$V=str2long($pf,true);$_d=count($V)-1;$ug=$V[$_d];$tg=$V[0];$C=floor(6+52/($_d+1));$uf=0;while($C-->0){$uf=int32($uf+0x9E3779B9);$Bb=$uf>>2&3;for($ee=0;$ee<$_d;$ee++){$tg=$V[$ee+1];$zd=xxtea_mx($ug,$tg,$uf,$v[$ee&3^$Bb]);$ug=int32($V[$ee]+$zd);$V[$ee]=$ug;}$tg=$V[0];$zd=xxtea_mx($ug,$tg,$uf,$v[$ee&3^$Bb]);$ug=int32($V[$_d]+$zd);$V[$_d]=$ug;}return
|
||
|
long2str($V,false);}function
|
||
|
decrypt_string($pf,$v){if($pf=="")return"";$v=array_values(unpack("V*",pack("H*",md5($v))));$V=str2long($pf,false);$_d=count($V)-1;$ug=$V[$_d];$tg=$V[0];$C=floor(6+52/($_d+1));$uf=int32($C*0x9E3779B9);while($uf){$Bb=$uf>>2&3;for($ee=$_d;$ee>0;$ee--){$ug=$V[$ee-1];$zd=xxtea_mx($ug,$tg,$uf,$v[$ee&3^$Bb]);$tg=int32($V[$ee]-$zd);$V[$ee]=$tg;}$ug=$V[$_d];$zd=xxtea_mx($ug,$tg,$uf,$v[$ee&3^$Bb]);$tg=int32($V[0]-$zd);$V[0]=$tg;$uf=int32($uf-0x9E3779B9);}return
|
||
|
long2str($V,true);}$g='';$Q=$_SESSION["token"];if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);$pe=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$W){list($v)=explode(":",$W);$pe[$v]=$W;}}$Aa=$_POST["auth"];if($Aa){session_regenerate_id();$_SESSION["pwds"][$Aa["driver"]][$Aa["server"]][$Aa["username"]]=$Aa["password"];if($Aa["permanent"]){$v=base64_encode($Aa["driver"])."-".base64_encode($Aa["server"])."-".base64_encode($Aa["username"]);$_e=$b->permanentLogin();$pe[$v]="$v:".base64_encode($_e?encrypt_string($Aa["password"],$_e):"");cookie("adminer_permanent",implode(" ",$pe));}if(count($_POST)==1||DRIVER!=$Aa["driver"]||SERVER!=$Aa["server"]||$_GET["username"]!==$Aa["username"]||DB!=$Aa["db"])redirect(auth_url($Aa["driver"],$Aa["server"],$Aa["username"],$Aa["db"]));}elseif($_POST["logout"]){if($Q&&$_POST["token"]!=$Q){page_header(lang(55),lang(61));page_footer("db");exit;}else{foreach(array("pwds","dbs","queries")as$v)set_session($v,null);$v=base64_encode(DRIVER)."-".base64_encode(SERVER)."-".base64_encode($_GET["username"]);if($pe[$v]){unset($pe[$v]);cookie("adminer_permanent",implode(" ",$pe));}redirect(substr(preg_replace('~(username|db|ns)=[^&]*&~','',ME),0,-1),lang(62));}}elseif($pe&&!$_SESSION["pwds"]){session_regenerate_id();$_e=$b->permanentLogin();foreach($pe
|
||
|
as$v=>$W){list(,$Qa)=explode(":",$W);list($wb,$J,$U)=array_map('base64_decode',explode("-",$v));$_SESSION["pwds"][$wb][$J][$U]=decrypt_string(base64_decode($Qa),$_e);}}function
|
||
|
auth_error($Sb=null){global$g,$b,$Q;$if=session_name();$k="";if(!$_COOKIE[$if]&&$_GET[$if]&&ini_bool("session.use_only_cookies"))$k=lang(63);elseif(isset($_GET["username"])){if(($_COOKIE[$if]||$_GET[$if])&&!$Q)$k=lang(64);else{$B=&get_session("pwds");if($B!==null){$k=h($Sb?$Sb->getMessage():(is_string($g)?$g:lang(65)));$B=null;}}}page_header(lang(25),$k,null);echo"<form action='' method='post'>\n";$b->loginForm();echo"<div>";hidden_fields($_POST,array("auth"));echo"</div>\n","</form>\n";page_footer("auth");}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);page_header(lang(66),lang(67,implode(", ",$ue)),false);page_footer("auth");exit;}$g=connect();}if(is_string($g)||!$b->login($_GET["username"],get_session("pwds"))){auth_error();exit;}$Q=$_SESSION["token"];if($Aa&&$_POST["token"])$_POST["token"]=$Q;$k=($_POST?($_POST["token"]==$Q?"":lang(61)):($_SERVER["REQUEST_METHOD"]!="POST"?"":lang(68,'"post_max_size"')));function
|
||
|
connect_error(){global$b,$g,$Q,$k,$xb;$i=array();if(DB!="")page_header(lang(24).": ".h(DB),lang(69),true);else{if($_POST["db"]&&!$k)queries_redirect(substr(ME,0,-1),lang(70),drop_databases($_POST["db"]));page_header(lang(71),$k,false);echo"<p><a href='".h(ME)."database='>".lang(72)."</a>\n";foreach(array('privileges'=>lang(53),'processlist'=>lang(73),'variables'=>lang(74),'status'=>lang(75),)as$v=>$W){if(support($v))echo"<a href='".h(ME)."$v='>$W</a>\n";}echo"<p>".lang(76,$xb[DRIVER],"<b>$g->server_info</b>","<b>$g->extension</b>")."\n","<p>".lang(77,"<b>".h(logged_user())."</b>")."\n";if($_GET["refresh"])set_session("dbs",null);$i=$b->databases();if($i){$af=support("scheme");$Ta=collations();echo"<form action='' method='post'>\n","<table cellspacing='0' class='checkable' onclick='tableClick(event);'>\n","<thead><tr><td> <th>".lang(24)."<td>".lang(78)."<td>".lang(79)."</thead>\n";foreach($i
|
||
|
as$j){$Se=h(ME)."db=".urlencode($j);echo"<tr".odd()."><td>".checkbox("db[]",$j,in_array($j,(array)$_POST["db"])),"<th><a href='$Se'>".h($j)."</a>","<td><a href='$Se".($af?"&ns=":"")."&database=' title='".lang(49)."'>".nbsp(db_collation($j,$Ta))."</a>","<td align='right'><a href='$Se&schema=' id='tables-".h($j)."' title='".lang(52)."'>?</a>","\n";}echo"</table>\n","<script type='text/javascript'>tableCheck();</script>\n","<p><input type='submit' name='drop' value='".lang(80)."'".confirm("formChecked(this, /db/)").">\n","<input type='hidden' name='token' value='$Q'>\n","<a href='".h(ME)."refresh=1'>".lang(81)."</a>\n","</form>\n";}}page_footer("db");if($i)echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=connect');</script>\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(82).": ".h($_GET["ns"]),lang(83),true);page_footer("ns");exit;}}function
|
||
|
select($E,$h=null,$Ac="",$Wd=array()){$ed=array();$t=array();$f=array();$Ha=array();$T=array();$F=array();odd('');for($p=0;$G=$E->fetch_row();$p++){if(!$p){echo"<table cellspacing='0' class='nowrap'>\n","<thead><tr>";for($Oc=0;$Oc<count($G);$Oc++){$l=$E->fetch_field();$_=$l->name;$Vd=$l->orgtable;$Ud=$l->orgname;$F[$l->table]=$Vd;if($Ac)$ed[$Oc]=($_=="table"?"table=":($_=="possible_keys"?"indexes=":null));elseif($Vd!=""){if(!isset($t[$Vd])){$t[$Vd]=array();foreach(indexes($Vd,$h)as$s){if($s["type"]=="PRIMARY"){$t[$Vd]=array_flip($s["columns"]);break;}}$f[$Vd]=$t[$Vd];}if(isset($f[$Vd][$Ud])){unset($f[$Vd][$Ud]);$t[$Vd][$Ud]=$Oc;$ed[$Oc]=$Vd;}}if($l->charsetnr==63)$Ha[$Oc]=true;$T[$Oc]=$l->type;$_=h($_);echo"<th".($Vd!=""||$l->name!=$Ud?" title='".h(($Vd!=""?"$Vd.":"").$Ud)."'":"").">".($Ac?"<a href='$Ac".strtolower($_)."' target='_blank' rel='noreferrer'>$_</a>":$_);}echo"</thead>\n";}echo"<tr".odd().">";foreach($G
|
||
|
as$v=>$W){if($W===null)$W="<i>NULL</i>";elseif($Ha[$v]&&!is_utf8($W))$W="<i>".lang(34,strlen($W))."</i>";elseif(!strlen($W))$W=" ";else{$W=h($W);if($T[$v]==254)$W="<code>$W</code>";}if(isset($ed[$v])&&!$f[$ed[$v]]){if($Ac){$N=$G[array_search("table=",$ed)];$y=$ed[$v].urlencode($Wd[$N]!=""?$Wd[$N]:$N);}else{$y="edit=".urlencode($ed[$v]);foreach($t[$ed[$v]]as$Ra=>$Oc)$y.="&where".urlencode("[".bracket_escape($Ra)."]")."=".urlencode($G[$Oc]);}$W="<a href='".h(ME.$y)."'>$W</a>";}echo"<td>$W";}}echo($p?"</table>":"<p class='message'>".lang(84))."\n";return$F;}function
|
||
|
referencable_primary($df){$F=array();foreach(table_status()as$yf=>$N){if($yf!=$df&&fk_support($N)){foreach(fields($yf)as$l){if($l["primary"]){if($F[$yf]){unset($F[$yf]);break;}$F[$yf]=$l;}}}}return$F;}function
|
||
|
textarea($_,$X,$H=10,$Ua=80){echo"<textarea name='$_' rows='$H' cols='$Ua' class='sqlarea' spellcheck='false' wrap='off' onkeydown='return textareaKeydown(this, event);'>";if(is_array($X)){foreach($X
|
||
|
as$W)echo
|
||
|
h($W[0])."\n\n\n";}else
|
||
|
echo
|
||
|
h($X);echo"</textarea>";}function
|
||
|
format_time($mf,$Ib){return" <span class='time'>(".lang(85,max(0,array_sum(explode(" ",$Ib))-array_sum(explode(" ",$mf)))).")</span>";}function
|
||
|
edit_type($v,$l,$Ta,$kc=array()){global$qf,$T,$fg,$Ld;echo'<td><select name="',$v,'[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);">',optionlist((!$l["type"]||isset($T[$l["type"]])?array():array($l["type"]))+$qf+($kc?array(lang(86)=>$kc):array()),$l["type"]),'</select>
|
||
|
<td><input name="',$v,'[length]" value="',h($l["length"]),'" size="3" onfocus="editingLengthFocus(this);"><td class="options">',"<select name='$v"."[collation]'".(ereg('(char|text|enum|set)$',$l["type"])?"":" class='hidden'").'><option value="">('.lang(87).')'.optionlist($Ta,$l["collation"]).'</select>',($fg?"<select name='$v"."[unsigned]'".(!$l["type"]||ereg('(int|float|double|decimal)$',$l["type"])?"":" class='hidden'").'><option>'.optionlist($fg,$l["unsigned"]).'</select>':''),($kc?"<select name='$v"."[on_delete]'".(ereg("`",$l["type"])?"":" class='hidden'")."><option value=''>(".lang(88).")".optionlist(explode("|",$Ld),$l["on_delete"])."</select> ":" ");}function
|
||
|
process_length($w){global$Lb;return(preg_match("~^\\s*(?:$Lb)(?:\\s*,\\s*(?:$Lb))*\\s*\$~",$w)&&preg_match_all("~$Lb~",$w,$jd)?implode(",",$jd[0]):preg_replace('~[^0-9,+-]~','',$w));}function
|
||
|
process_type($l,$Sa="COLLATE"){global$fg;return" $l[type]".($l["length"]!=""?"(".process_length($l["length"]).")":"").(ereg('int|float|double|decimal',$l["type"])&&in_array($l["unsigned"],$fg)?" $l[unsigned]":"").(ereg('char|text|enum|set',$l["type"])&&$l["collation"]?" $Sa ".q($l["collation"]):"");}function
|
||
|
process_field($l,$Xf){return
|
||
|
array(idf_escape(trim($l["field"])),process_type($Xf),($l["null"]?" NULL":" NOT NULL"),(isset($l["default"])?" DEFAULT ".(($l["type"]=="timestamp"&&eregi('^CURRENT_TIMESTAMP$',$l["default"]))||($l["type"]=="bit"&&ereg("^([0-9]+|b'[0-1]+')\$",$l["default"]))?$l["default"]:q($l["default"])):""),($l["on_update"]?" ON UPDATE $l[on_update]":""),(support("comment")&&$l["comment"]!=""?" COMMENT ".q($l["comment"]):""),($l["auto_increment"]?auto_increment():null),);}function
|
||
|
type_class($S){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$v=>$W){if(ereg("$v|$W",$S))return" class='$v'";}}function
|
||
|
edit_fields($m,$Ta,$S="TABLE",$xa=0,$kc=array(),$Ya=false){global$Ic;echo'<thead><tr class="wrap">
|
||
|
';if($S=="PROCEDURE"){echo'<td> ';}echo'<th>',($S=="TABLE"?lang(89):lang(90)),'<td>',lang(91),'<textarea id="enum-edit" rows="4" cols="12" wrap="off" style="display: none;" onblur="editingLengthBlur(this);"></textarea>
|
||
|
<td>',lang(92),'<td>',lang(93);if($S=="TABLE"){echo'<td>NULL
|
||
|
<td><input type="radio" name="auto_increment_col" value=""><acronym title="',lang(94),'">AI</acronym>
|
||
|
<td',($_POST["defaults"]?"":" class='hidden'"),'>',lang(95),(support("comment")?"<td".($Ya?"":" class='hidden'").">".lang(96):"");}echo'<td>',"<input type='image' class='icon' name='add[".(support("move_col")?0:count($m))."]' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&version=3.5.1' alt='+' title='".lang(97)."'>",'<script type="text/javascript">row_count = ',count($m),';</script>
|
||
|
</thead>
|
||
|
<tbody onkeydown="return editingKeydown(event);">
|
||
|
';foreach($m
|
||
|
as$p=>$l){$p++;$Xd=$l[($_POST?"orig":"field")];$ub=(isset($_POST["add"][$p-1])||(isset($l["field"])&&!$_POST["drop_col"][$p]))&&(support("drop_col")||$Xd=="");echo'<tr',($ub?"":" style='display: none;'"),'>
|
||
|
',($S=="PROCEDURE"?"<td>".html_select("fields[$p][inout]",explode("|",$Ic),$l["inout"]):""),'<th>';if($ub){echo'<input name="fields[',$p,'][field]" value="',h($l["field"]),'" onchange="',($l["field"]!=""||count($m)>1?"":"editingAddRow(this, $xa); "),'editingNameChange(this);" maxlength="64">';}echo'<input type="hidden" name="fields[',$p,'][orig]" value="',h($Xd),'">
|
||
|
';edit_type("fields[$p]",$l,$Ta,$kc);if($S=="TABLE"){echo'<td>',checkbox("fields[$p][null]",1,$l["null"]),'<td><input type="radio" name="auto_increment_col" value="',$p,'"';if($l["auto_increment"]){echo' checked';}?> onclick="var field = this.form['fields[' + this.value + '][field]']; if (!field.value) { field.value = 'id'; field.onchange(); }">
|
||
|
<td<?php echo($_POST["defaults"]?"":" class='hidden'"),'>',checkbox("fields[$p][has_default]",1,$l["has_default"]),'<input name="fields[',$p,'][default]" value="',h($l["default"]),'" onchange="this.previousSibling.checked = true;">
|
||
|
',(support("comment")?"<td".($Ya?"":" class='hidden'")."><input name='fields[$p][comment]' value='".h($l["comment"])."' maxlength='255'>":"");}echo"<td>",(support("move_col")?"<input type='image' class='icon' name='add[$p]' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&version=3.5.1' alt='+' title='".lang(97)."' onclick='return !editingAddRow(this, $xa, 1);'> "."<input type='image' class='icon' name='up[$p]' src='".h(preg_replace("~\\?.*~","",ME))."?file=up.gif&version=3.5.1' alt='^' title='".lang(98)."'> "."<input type='image' class='icon' name='down[$p]' src='".h(preg_replace("~\\?.*~","",ME))."?file=down.gif&version=3.5.1' alt='v' title='".lang(99)."'> ":""),($Xd==""||support("drop_col")?"<input type='image' class='icon' name='drop_col[$p]' src='".h(preg_replace("~\\?.*~","",ME))."?file=cross.gif&version=3.5.1' alt='x' title='".lang(100)."' onclick='return !editingRemoveRow(this);'>":""),"\n";}}function
|
||
|
process_fields(&$m){ksort($m);$A=0;if($_POST["up"]){$Wc=0;foreach($m
|
||
|
as$v=>$l){if(key($_POST["up"])==$v){unset($m[$v]);array_splice($m,$Wc,0,array($l));break;}if(isset($l["field"]))$Wc=$A;$A++;}}if($_POST["down"]){$mc=false;foreach($m
|
||
|
as$v=>$l){if(isset($l["field"])&&$mc){unset($m[key($_POST["down"])]);array_splice($m,$A,0,array($mc));break;}if(key($_POST["down"])==$v)$mc=$l;$A++;}}$m=array_values($m);if($_POST["add"])array_splice($m,key($_POST["add"]),0,array(array()));}function
|
||
|
normalize_enum($z){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($z[0][0].$z[0][0],$z[0][0],substr($z[0],1,-1))),'\\'))."'";}function
|
||
|
grant($sc,$Be,$f,$Kd){if(!$Be)return
|
||
|
true;if($Be==array("ALL PRIVILEGES","GRANT OPTION"))return($sc=="GRANT"?queries("$sc ALL PRIVILEGES$Kd WITH GRANT OPTION"):queries("$sc ALL PRIVILEGES$Kd")&&queries("$sc GRANT OPTION$Kd"));return
|
||
|
queries("$sc ".preg_replace('~(GRANT OPTION)\\([^)]*\\)~','\\1',implode("$f, ",$Be).$f).$Kd);}function
|
||
|
drop_create($yb,$gb,$fd,$td,$rd,$sd,$_){if($_POST["drop"])return
|
||
|
query_redirect($yb,$fd,$td,true,!$_POST["dropped"]);$zb=$_!=""&&($_POST["dropped"]||queries($yb));$ib=queries($gb);if(!queries_redirect($fd,($_!=""?$rd:$sd),$ib)&&$zb)redirect(null,$td);return$zb;}function
|
||
|
remove_definer($D){return
|
||
|
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\\1)',logged_user()).'`~','\\1',$D);}function
|
||
|
tar_file($ec,$cb){$F=pack("a100a8a8a8a12a12",$ec,644,0,0,decoct(strlen($cb)),decoct(time()));$Pa=8*32;for($p=0;$p<strlen($F);$p++)$Pa+=ord($F[$p]);$F.=sprintf("%06o",$Pa)."\0 ";return$F.str_repeat("\0",512-strlen($F)).$cb.str_repeat("\0",511-(strlen($cb)+511)%
|
||
|
512);}function
|
||
|
ini_bytes($Hc){$W=ini_get($Hc);switch(strtolower(substr($W,-1))){case'g':$W*=1024;case'm':$W*=1024;case'k':$W*=1024;}return$W;}session_cache_limiter("");if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false)session_write_close();$Ld="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";$Lb="'(?:''|[^'\\\\]|\\\\.)*+'";$Ic="IN|OUT|INOUT";if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));echo$g->result("SELECT".limit(idf_escape($_GET["field"])." FROM ".table($a)," WHERE ".where($_GET),1));exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$m=fields($a);if(!$m)$k=error();$O=($m?table_status($a):array());page_header(($m&&is_view($O)?lang(101):lang(102)).": ".h($a),$k);$b->selectLinks($O);$Xa=$O["Comment"];if($Xa!="")echo"<p>".lang(96).": ".h($Xa)."\n";if($m){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(103)."<td>".lang(91).(support("comment")?"<td>".lang(96):"")."</thead>\n";foreach($m
|
||
|
as$l){echo"<tr".odd()."><th>".h($l["field"]),"<td title='".h($l["collation"])."'>".h($l["full_type"]).($l["null"]?" <i>NULL</i>":"").($l["auto_increment"]?" <i>".lang(94)."</i>":""),(isset($l["default"])?" [<b>".h($l["default"])."</b>]":""),(support("comment")?"<td>".nbsp($l["comment"]):""),"\n";}echo"</table>\n";if(!is_view($O)){echo"<h3>".lang(104)."</h3>\n";$t=indexes($a);if($t){echo"<table cellspacing='0'>\n";foreach($t
|
||
|
as$_=>$s){ksort($s["columns"]);$ze=array();foreach($s["columns"]as$v=>$W)$ze[]="<i>".h($W)."</i>".($s["lengths"][$v]?"(".$s["lengths"][$v].")":"");echo"<tr title='".h($_)."'><th>$s[type]<td>".implode(", ",$ze)."\n";}echo"</table>\n";}echo'<p><a href="'.h(ME).'indexes='.urlencode($a).'">'.lang(105)."</a>\n";if(fk_support($O)){echo"<h3>".lang(86)."</h3>\n";$kc=foreign_keys($a);if($kc){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(106)."<td>".lang(107)."<td>".lang(88)."<td>".lang(108).($u!="sqlite"?"<td> ":"")."</thead>\n";foreach($kc
|
||
|
as$_=>$n){echo"<tr title='".h($_)."'>","<th><i>".implode("</i>, <i>",array_map('h',$n["source"]))."</i>","<td><a href='".h($n["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($n["db"]),ME):($n["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($n["ns"]),ME):ME))."table=".urlencode($n["table"])."'>".($n["db"]!=""?"<b>".h($n["db"])."</b>.":"").($n["ns"]!=""?"<b>".h($n["ns"])."</b>.":"").h($n["table"])."</a>","(<i>".implode("</i>, <i>",array_map('h',$n["target"]))."</i>)","<td>".nbsp($n["on_delete"])."\n","<td>".nbsp($n["on_update"])."\n",($u=="sqlite"?"":'<td><a href="'.h(ME.'foreign='.urlencode($a).'&name='.urlencode($_)).'">'.lang(109).'</a>');}echo"</table>\n";}if($u!="sqlite")echo'<p><a href="'.h(ME).'foreign='.urlencode($a).'">'.lang(110)."</a>\n";}if(support("trigger")){echo"<h3>".lang(111)."</h3>\n";$Wf=triggers($a);if($Wf){echo"<table cellspacing='0'>\n";foreach($Wf
|
||
|
as$v=>$W)echo"<tr valign='top'><td>$W[0]<td>$W[1]<th>".h($v)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($v))."'>".lang(109)."</a>\n";echo"</table>\n";}echo'<p><a href="'.h(ME).'trigger='.urlencode($a).'">'.lang(112)."</a>\n";}}}}elseif(isset($_GET["schema"])){page_header(lang(52),"",array(),DB.($_GET["ns"]?".$_GET[ns]":""));$_f=array();$Af=array();$_="adminer_schema";$ea=($_GET["schema"]?$_GET["schema"]:$_COOKIE[($_COOKIE["$_-".DB]?"$_-".DB:$_)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$jd,PREG_SET_ORDER);foreach($jd
|
||
|
as$p=>$z){$_f[$z[1]]=array($z[2],$z[3]);$Af[]="\n\t'".js_escape($z[1])."': [ $z[2], $z[3] ]";}$Of=0;$Ga=-1;$Ze=array();$Le=array();$ad=array();foreach(table_status()as$O){if(!isset($O["Engine"]))continue;$re=0;$Ze[$O["Name"]]["fields"]=array();foreach(fields($O["Name"])as$_=>$l){$re+=1.25;$l["pos"]=$re;$Ze[$O["Name"]]["fields"][$_]=$l;}$Ze[$O["Name"]]["pos"]=($_f[$O["Name"]]?$_f[$O["Name"]]:array($Of,0));foreach($b->foreignKeys($O["Name"])as$W){if(!$W["db"]){$Yc=$Ga;if($_f[$O["Name"]][1]||$_f[$W["table"]][1])$Yc=min(floatval($_f[$O["Name"]][1]),floatval($_f[$W["table"]][1]))-1;else$Ga-=.1;while($ad[(string)$Yc])$Yc-=.0001;$Ze[$O["Name"]]["references"][$W["table"]][(string)$Yc]=array($W["source"],$W["target"]);$Le[$W["table"]][$O["Name"]][(string)$Yc]=$W["target"];$ad[(string)$Yc]=true;}}$Of=max($Of,$Ze[$O["Name"]]["pos"][0]+2.5+$re);}echo'<div id="schema" style="height: ',$Of,'em;" onselectstart="return false;">
|
||
|
<script type="text/javascript">
|
||
|
var tablePos = {',implode(",",$Af)."\n",'};
|
||
|
var em = document.getElementById(\'schema\').offsetHeight / ',$Of,';
|
||
|
document.onmousemove = schemaMousemove;
|
||
|
document.onmouseup = function (ev) {
|
||
|
schemaMouseup(ev, \'',js_escape(DB),'\');
|
||
|
};
|
||
|
</script>
|
||
|
';foreach($Ze
|
||
|
as$_=>$N){echo"<div class='table' style='top: ".$N["pos"][0]."em; left: ".$N["pos"][1]."em;' onmousedown='schemaMousedown(this, event);'>",'<a href="'.h(ME).'table='.urlencode($_).'"><b>'.h($_)."</b></a>";foreach($N["fields"]as$l){$W='<span'.type_class($l["type"]).' title="'.h($l["full_type"].($l["null"]?" NULL":'')).'">'.h($l["field"]).'</span>';echo"<br>".($l["primary"]?"<i>$W</i>":$W);}foreach((array)$N["references"]as$Ff=>$Me){foreach($Me
|
||
|
as$Yc=>$Ie){$Zc=$Yc-$_f[$_][1];$p=0;foreach($Ie[0]as$jf)echo"\n<div class='references' title='".h($Ff)."' id='refs$Yc-".($p++)."' style='left: $Zc"."em; top: ".$N["fields"][$jf]["pos"]."em; padding-top: .5em;'><div style='border-top: 1px solid Gray; width: ".(-$Zc)."em;'></div></div>";}}foreach((array)$Le[$_]as$Ff=>$Me){foreach($Me
|
||
|
as$Yc=>$f){$Zc=$Yc-$_f[$_][1];$p=0;foreach($f
|
||
|
as$Ef)echo"\n<div class='references' title='".h($Ff)."' id='refd$Yc-".($p++)."' style='left: $Zc"."em; top: ".$N["fields"][$Ef]["pos"]."em; height: 1.25em; background: url(".h(preg_replace("~\\?.*~","",ME))."?file=arrow.gif) no-repeat right center;&version=3.5.1'><div style='height: .5em; border-bottom: 1px solid Gray; width: ".(-$Zc)."em;'></div></div>";}}echo"\n</div>\n";}foreach($Ze
|
||
|
as$_=>$N){foreach((array)$N["references"]as$Ff=>$Me){foreach($Me
|
||
|
as$Yc=>$Ie){$wd=$Of;$nd=-10;foreach($Ie[0]as$v=>$jf){$se=$N["pos"][0]+$N["fields"][$jf]["pos"];$te=$Ze[$Ff]["pos"][0]+$Ze[$Ff]["fields"][$Ie[1][$v]]["pos"];$wd=min($wd,$se,$te);$nd=max($nd,$se,$te);}echo"<div class='references' id='refl$Yc' style='left: $Yc"."em; top: $wd"."em; padding: .5em 0;'><div style='border-right: 1px solid Gray; margin-top: 1px; height: ".($nd-$wd)."em;'></div></div>\n";}}}echo'</div>
|
||
|
<p><a href="',h(ME."schema=".urlencode($ea)),'" id="schema-link">',lang(113),'</a>
|
||
|
';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST){$eb="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$v)$eb.="&$v=".urlencode($_POST[$v]);cookie("adminer_export",substr($eb,1));$Yb=dump_headers(($a!=""?$a:DB),(DB==""||count((array)$_POST["tables"]+(array)$_POST["data"])>1));$Mc=($_POST["format"]=="sql");if($Mc)echo"-- Adminer $ia ".$xb[DRIVER]." dump
|
||
|
|
||
|
".($u!="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';
|
||
|
|
||
|
");$M=$_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){if($g->select_db($j)){if($Mc&&ereg('CREATE',$M)&&($gb=$g->result("SHOW CREATE DATABASE ".idf_escape($j),1))){if($M=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($j).";\n";echo($M=="CREATE+ALTER"?preg_replace('~^CREATE DATABASE ~','\\0IF NOT EXISTS ',$gb):$gb).";\n";}if($Mc){if($M)echo
|
||
|
use_sql($j).";\n\n";if(in_array("CREATE+ALTER",array($M,$_POST["table_style"])))echo"SET @adminer_alter = '';\n\n";$ce="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$Te){foreach(get_rows("SHOW $Te STATUS WHERE Db = ".q($j),null,"-- ")as$G)$ce.=($M!='DROP+CREATE'?"DROP $Te IF EXISTS ".idf_escape($G["Name"]).";;\n":"").remove_definer($g->result("SHOW CREATE $Te ".idf_escape($G["Name"]),2)).";;\n\n";}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$G)$ce.=($M!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($G["Name"]).";;\n":"").remove_definer($g->result("SHOW CREATE EVENT ".idf_escape($G["Name"]),3)).";;\n\n";}if($ce)echo"DELIMITER ;;\n\n$ce"."DELIMITER ;\n\n";}if($_POST["table_style"]||$_POST["data_style"]){$Y=array();foreach(table_status()as$O){$N=(DB==""||in_array($O["Name"],(array)$_POST["tables"]));$lb=(DB==""||in_array($O["Name"],(array)$_POST["data"]));if($N||$lb){if(!is_view($O)){if($Yb=="tar")ob_start();$b->dumpTable($O["Name"],($N?$_POST["table_style"]:""));if($lb)$b->dumpData($O["Name"],$_POST["data_style"],"SELECT * FROM ".table($O["Name"]));if($Mc&&$_POST["triggers"]&&$N&&($Wf=trigger_sql($O["Name"],$_POST["table_style"])))echo"\nDELIMITER ;;\n$Wf\nDELIMITER ;\n";if($Yb=="tar")echo
|
||
|
tar_file((DB!=""?"":"$j/")."$O[Name].csv",ob_get_clean());elseif($Mc)echo"\n";}elseif($Mc)$Y[]=$O["Name"];}}foreach($Y
|
||
|
as$og)$b->dumpTable($og,$_POST["table_style"],true);if($Yb=="tar")echo
|
||
|
pack("x512");}if($M=="CREATE+ALTER"&&$Mc){$D="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 $D;
|
||
|
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($D)as$G){$Xa=q($G["ENGINE"]=="InnoDB"?preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$G["TABLE_COMMENT"]):$G["TABLE_COMMENT"]);echo"
|
||
|
WHEN ".q($G["TABLE_NAME"])." THEN
|
||
|
".(isset($G["ENGINE"])?"IF _engine != '$G[ENGINE]' OR _table_collation != '$G[TABLE_COLLATION]' OR _table_comment != $Xa THEN
|
||
|
ALTER TABLE ".idf_escape($G["TABLE_NAME"])." ENGINE=$G[ENGINE] COLLATE=$G[TABLE_COLLATION] COMMENT=$Xa;
|
||
|
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($M,$_POST["table_style"]))&&$Mc)echo"SELECT @adminer_alter;\n";}}if($Mc)echo"-- ".$g->result("SELECT NOW()")."\n";exit;}page_header(lang(114),"",($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),DB);echo'
|
||
|
<form action="" method="post">
|
||
|
<table cellspacing="0">
|
||
|
';$ob=array('','USE','DROP+CREATE','CREATE');$Bf=array('','DROP+CREATE','CREATE');$mb=array('','TRUNCATE+INSERT','INSERT');if($u=="sql"){$ob[]='CREATE+ALTER';$Bf[]='CREATE+ALTER';$mb[]='INSERT+UPDATE';}parse_str($_COOKIE["adminer_export"],$G);if(!$G)$G=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($G["events"])){$G["routines"]=$G["events"]=($_GET["dump"]=="");$G["triggers"]=$G["table_style"];}echo"<tr><th>".lang(115)."<td>".html_select("output",$b->dumpOutput(),$G["output"],0)."\n";echo"<tr><th>".lang(116)."<td>".html_select("format",$b->dumpFormat(),$G["format"],0)."\n";echo($u=="sqlite"?"":"<tr><th>".lang(24)."<td>".html_select('db_style',$ob,$G["db_style"]).(support("routine")?checkbox("routines",1,$G["routines"],lang(117)):"").(support("event")?checkbox("events",1,$G["events"],lang(118)):"")),"<tr><th>".lang(79)."<td>".html_select('table_style',$Bf,$G["table_style"]).checkbox("auto_increment",1,$G["auto_increment"],lang(94)).(support("trigger")?checkbox("triggers",1,$G["triggers"],lang(111)):""),"<tr><th>".lang(119)."<td>".html_select('data_style',$mb,$G["data_style"]),'</table>
|
||
|
<p><input type="submit" value="',lang(114),'">
|
||
|
|
||
|
<table cellspacing="0">
|
||
|
';$we=array();if(DB!=""){$Oa=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label><input type='checkbox' id='check-tables'$Oa onclick='formCheck(this, /^tables\\[/);'>".lang(79)."</label>","<th style='text-align: right;'><label>".lang(119)."<input type='checkbox' id='check-data'$Oa onclick='formCheck(this, /^data\\[/);'></label>","</thead>\n";$Y="";foreach(table_status()as$O){$_=$O["Name"];$ve=ereg_replace("_.*","",$_);$Oa=($a==""||$a==(substr($a,-1)=="%"?"$ve%":$_));$ze="<tr><td>".checkbox("tables[]",$_,$Oa,$_,"checkboxClick(event, this); formUncheck('check-tables');");if(is_view($O))$Y.="$ze\n";else
|
||
|
echo"$ze<td align='right'><label>".($O["Engine"]=="InnoDB"&&$O["Rows"]?"~ ":"").$O["Rows"].checkbox("data[]",$_,$Oa,"","checkboxClick(event, this); formUncheck('check-data');")."</label>\n";$we[$ve]++;}echo$Y;}else{echo"<thead><tr><th style='text-align: left;'><label><input type='checkbox' id='check-databases'".($a==""?" checked":"")." onclick='formCheck(this, /^databases\\[/);'>".lang(24)."</label></thead>\n";$i=$b->databases();if($i){foreach($i
|
||
|
as$j){if(!information_schema($j)){$ve=ereg_replace("_.*","",$j);echo"<tr><td>".checkbox("databases[]",$j,$a==""||$a=="$ve%",$j,"formUncheck('check-databases');")."</label>\n";$we[$ve]++;}}}else
|
||
|
echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
|
||
|
</form>
|
||
|
';$gc=true;foreach($we
|
||
|
as$v=>$W){if($v!=""&&$W>1){echo($gc?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$v%")."'>".h($v)."</a>";$gc=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(53));$E=$g->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$sc=$E;if(!$E)$E=$g->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");echo"<form action=''><p>\n";hidden_fields_get();echo"<input type='hidden' name='db' value='".h(DB)."'>\n",($sc?"":"<input type='hidden' name='grant' value=''>\n"),"<table cellspacing='0'>\n","<thead><tr><th>".lang(22)."<th>".lang(21)."<th> </thead>\n";while($G=$E->fetch_assoc())echo'<tr'.odd().'><td>'.h($G["User"])."<td>".h($G["Host"]).'<td><a href="'.h(ME.'user='.urlencode($G["User"]).'&host='.urlencode($G["Host"])).'">'.lang(33)."</a>\n";if(!$sc||DB!="")echo"<tr".odd()."><td><input name='user'><td><input name='host' value='localhost'><td><input type='submit' value='".lang(33)."'>\n";echo"</table>\n","</form>\n",'<p><a href="'.h(ME).'user=">'.lang(120)."</a>";}elseif(isset($_GET["sql"])){if(!$k&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$zc=&get_session("queries");$yc=&$zc[DB];if(!$k&&$_POST["clear"]){$yc=array();redirect(remove_from_uri("history"));}page_header(lang(46),$k);if(!$k&&$_POST){$oc=false;$D=$_POST["query"];if($_POST["webfile"]){$oc=@fopen((file_exists("adminer.sql")?"adminer.sql":(file_exists("adminer.sql.gz")?"compress.zlib://adminer.sql.gz":"compress.bzip2://adminer.sql.bz2")),"rb");$D=($oc?fread($oc,1e6):false);}elseif($_FILES&&$_FILES["sql_file"]["error"]!=UPLOAD_ERR_NO_FILE)$D=get_file("sql_file",true);if(is_string($D)){if(function_exists('memory_get_usage'))@ini_set("memory_limit",max(ini_bytes("memory_limit"),2*strlen($D)+memory_get_usage()+8e6));if($D!=""&&strlen($D)<1e6){$C=$D.(ereg(";[ \t\r\n]*\$",$D)?"":";");if(!$yc||reset(end($yc))!=$C)$yc[]=array($C,time());}$kf="(?:\\s|/\\*.*\\*/|(?:#|-- )[^\n]*\n|--\n)";if(!ini_bool("session.use_cookies"))session_write_close();$rb=";";$A=0;$Hb=true;$h=connect();if(is_object($h)&&DB!="")$h->select_db(DB);$Wa=0;$Ob=array();$dd=0;$ie='[\'"'.($u=="sql"?'`#':($u=="sqlite"?'`[':($u=="mssql"?'[':''))).']|/\\*|-- |$'.($u=="pgsql"?'|\\$[^$]*\\$':'');$Pf=microtime();parse_str($_COOKIE["adminer_export"],$qa);$Ab=$b->dumpFormat();unset($Ab["sql"]);while($D!=""){if(!$A&&preg_match("~^$kf*DELIMITER\\s+(\\S+)~i",$D,$z)){$rb=$z[1];$D=substr($D,strlen($z[0]));}else{preg_match('('.preg_quote($rb)."\\s*|$ie)",$D,$z,PREG_OFFSET_CAPTURE,$A);list($mc,$re)=$z[0];if(!$mc&&$oc&&!feof($oc))$D.=fread($oc,1e5);else{if(!$mc&&rtrim($D)=="")break;$A=$re+strlen($mc);if($mc&&rtrim($mc)!=$rb){while(preg_match('('.($mc=='/*'?'\\*/':($mc=='['?']':(ereg('^-- |^#',$mc)?"\n":preg_quote($mc)."|\\\\."))).'|$)s',$D,$z,PREG_OFFSET_CAPTURE,$A)){$Xe=$z[0][0];if(!$Xe&&$oc&&!feof($oc))$D.=fread($oc,1e5);else{$A=$z[0][1]+strlen($Xe);if($Xe[0]!="\\")break;}}}else{$Hb=false;$C=substr($D,0,$re);$Wa++;$ze="<pre id='sql-$Wa'><code class='jush-$u'>".shorten_utf8(trim($C),1000)."</code></pre>\n";if(!$_POST["only_errors"]){echo$ze;ob_flush();flush();}$mf=microtime();if($g->multi_query($C)&&is_object($h)&&preg_match("~^$kf*USE\\b~isU",$C))$h->query($C);do{$E=$g->store_result();$Ib=microtime();$If=format_time($mf,$Ib).(strlen($C)<1000?" <a href='".h(ME)."sql=".urlencode(trim($C))."'>".lang(33)."</a>":"");if($g->error){echo($_POST["only_errors"]?$ze:""),"<p class='error'>".lang(121).": ".error()."\n";$Ob[]=" <a href='#sql-$Wa'>$Wa</a>";if($_POST["error_stops"])break
|
||
|
2;}elseif(is_object($E)){$Wd=select($E,$h);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n","<p>".($E->num_rows?lang(122,$E->num_rows):"").$If;$q="export-$Wa";$Xb=", <a href='#$q' onclick=\"return !toggle('$q');\">".lang(114)."</a><span id='$q' class='hidden'>: ".html_select("output",$b->dumpOutput(),$qa["output"])." ".html_select("format",$Ab,$qa["format"])."<input type='hidden' name='query' value='".h($C)."'>"." <input type='submit' name='export' value='".lang(114)."'><input type='hidden' name='token' value='$Q'></span>\n";if($h&&preg_match("~^($kf|\\()*SELECT\\b~isU",$C)&&($Wb=explain($h,$C))){$q="explain-$Wa";echo", <a href='#$q' onclick=\"return !toggle('$q');\">EXPLAIN</a>$Xb","<div id='$q' class='hidden'>\n";select($Wb,$h,($u=="sql"?"http://dev.mysql.com/doc/refman/".substr($g->server_info,0,3)."/en/explain-output.html#explain_":""),$Wd);echo"</div>\n";}else
|
||
|
echo$Xb;echo"</form>\n";}}else{if(preg_match("~^$kf*(CREATE|DROP|ALTER)$kf+(DATABASE|SCHEMA)\\b~isU",$C)){restart_session();set_session("dbs",null);session_write_close();}if(!$_POST["only_errors"])echo"<p class='message' title='".h($g->info)."'>".lang(123,$g->affected_rows)."$If\n";}$mf=$Ib;}while($g->next_result());$dd+=substr_count($C.$mc,"\n");$D=substr($D,$A);$A=0;}}}}if($Hb)echo"<p class='message'>".lang(124)."\n";elseif($_POST["only_errors"])echo"<p class='message'>".lang(125,$Wa-count($Ob)).format_time($Pf,microtime())."\n";elseif($Ob&&$Wa>1)echo"<p class='error'>".lang(121).": ".implode("",$Ob)."\n";}else
|
||
|
echo"<p class='error'>".upload_error($D)."\n";}echo'
|
||
|
<form action="" method="post" enctype="multipart/form-data" id="form">
|
||
|
<p>';$C=$_GET["sql"];if($_POST)$C=$_POST["query"];elseif($_GET["history"]=="all")$C=$yc;elseif($_GET["history"]!="")$C=$yc[$_GET["history"]][0];textarea("query",$C,20);echo($_POST?"":"<script type='text/javascript'>document.getElementsByTagName('textarea')[0].focus();</script>\n"),"<p>".(ini_bool("file_uploads")?lang(126).': <input type="file" name="sql_file"'.($_FILES&&$_FILES["sql_file"]["error"]!=4?'':' onchange="this.form[\'only_errors\'].checked = true;"').'> (< '.ini_get("upload_max_filesize").'B)':lang(127)),'<p>
|
||
|
<input type="submit" value="',lang(128),'" title="Ctrl+Enter">
|
||
|
<input type="hidden" name="token" value="',$Q,'">
|
||
|
',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"],"document.getElementById('form')['only_errors'].checked = true; ");$Za=array();foreach(array("gz"=>"zlib","bz2"=>"bz2")as$v=>$W){if(extension_loaded($W))$Za[]=".$v";}echo
|
||
|
lang(132,"<code>adminer.sql".($Za?"[".implode("|",$Za)."]":"")."</code>"),' <input type="submit" name="webfile" value="'.lang(133).'">',"</div></fieldset>\n";if($yc){print_fieldset("history",lang(134),$_GET["history"]!="");foreach($yc
|
||
|
as$v=>$W){list($C,$If)=$W;echo'<a href="'.h(ME."sql=&history=$v").'">'.lang(33)."</a> <span class='time'>".@date("H:i:s",$If)."</span> <code class='jush-$u'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$C)))),80,"</code>")."<br>\n";}echo"<input type='submit' name='clear' value='".lang(135)."'>\n","<a href='".h(ME."sql=&history=all")."'>".lang(136)."</a>\n","</div></fieldset>\n";}echo'
|
||
|
</form>
|
||
|
';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$Z=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0]):""):where($_GET));$gg=(isset($_GET["select"])?$_POST["edit"]:$Z);$m=fields($a);foreach($m
|
||
|
as$_=>$l){if(!isset($l["privileges"][$gg?"update":"insert"])||$b->fieldName($l)=="")unset($m[$_]);}if($_POST&&!$k&&!isset($_GET["select"])){$fd=$_POST["referer"];if($_POST["insert"])$fd=($gg?null:$_SERVER["REQUEST_URI"]);elseif(!ereg('^.+&select=.+$',$fd))$fd=ME."select=".urlencode($a);if(isset($_POST["delete"]))query_redirect("DELETE".limit1("FROM ".table($a)," WHERE $Z"),$fd,lang(137));else{$K=array();foreach($m
|
||
|
as$_=>$l){$W=process_input($l);if($W!==false&&$W!==null)$K[idf_escape($_)]=($gg?"\n".idf_escape($_)." = $W":$W);}if($gg){if(!$K)redirect($fd);query_redirect("UPDATE".limit1(table($a)." SET".implode(",",$K),"\nWHERE $Z"),$fd,lang(138));}else{$E=insert_into($a,$K);$Xc=($E?last_id():0);queries_redirect($fd,lang(139,($Xc?" $Xc":"")),$E);}}}$yf=$b->tableName(table_status($a));page_header(($gg?lang(33):lang(140)),$k,array("select"=>array($a,$yf)),$yf);$G=null;if($_POST["save"])$G=(array)$_POST["fields"];elseif($Z){$I=array();foreach($m
|
||
|
as$_=>$l){if(isset($l["privileges"]["select"]))$I[]=($_POST["clone"]&&$l["auto_increment"]?"'' AS ":($u=="sql"&&ereg("enum|set",$l["type"])?"1*".idf_escape($_)." AS ":"")).idf_escape($_);}$G=array();if($I){$H=get_rows("SELECT".limit(implode(", ",$I)." FROM ".table($a)," WHERE $Z",(isset($_GET["select"])?2:1)));$G=(isset($_GET["select"])&&count($H)!=1?null:reset($H));}}if($G===false)echo"<p class='error'>".lang(84)."\n";echo'
|
||
|
<form action="" method="post" enctype="multipart/form-data" id="form">
|
||
|
';if($m){echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($m
|
||
|
as$_=>$l){echo"<tr><th>".$b->fieldName($l);$qb=$_GET["set"][bracket_escape($_)];$X=($G!==null?($G[$_]!=""&&$u=="sql"&&ereg("enum|set",$l["type"])?(is_array($G[$_])?array_sum($G[$_]):+$G[$_]):$G[$_]):(!$gg&&$l["auto_increment"]?"":(isset($_GET["select"])?false:($qb!==null?$qb:$l["default"]))));if(!$_POST["save"]&&is_string($X))$X=$b->editVal($X,$l);$o=($_POST["save"]?(string)$_POST["function"][$_]:($gg&&$l["on_update"]=="CURRENT_TIMESTAMP"?"now":($X===false?null:($X!==null?'':'NULL'))));if($l["type"]=="timestamp"&&$X=="CURRENT_TIMESTAMP"){$X="";$o="now";}input($l,$X,$o);echo"\n";}echo"</table>\n";}echo'<p>
|
||
|
';if($m){echo"<input type='submit' value='".lang(141)."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($gg?lang(142):lang(143))."' title='Ctrl+Shift+Enter'>\n";}echo($gg?"<input type='submit' name='delete' value='".lang(144)."' onclick=\"return confirm('".lang(0)."');\">\n":($_POST||!$m?"":"<script type='text/javascript'>document.getElementById('form').getElementsByTagName('td')[1].firstChild.focus();</script>\n"));if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'">
|
||
|
<input type="hidden" name="save" value="1">
|
||
|
<input type="hidden" name="token" value="',$Q,'">
|
||
|
</form>
|
||
|
';}elseif(isset($_GET["create"])){$a=$_GET["create"];$je=array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST');$Ke=referencable_primary($a);$kc=array();foreach($Ke
|
||
|
as$yf=>$l)$kc[str_replace("`","``",$yf)."`".str_replace("`","``",$l["field"])]=$yf;$Zd=array();$ae=array();if($a!=""){$Zd=fields($a);$ae=table_status($a);}if($_POST&&!$_POST["fields"])$_POST["fields"]=array();if($_POST&&!$k&&!$_POST["add"]&&!$_POST["drop_col"]&&!$_POST["up"]&&!$_POST["down"]){if($_POST["drop"])query_redirect("DROP TABLE ".table($a),substr(ME,0,-1),lang(145));else{$m=array();$wa=array();$ig=false;$ic=array();ksort($_POST["fields"]);$Yd=reset($Zd);$ua=" FIRST";foreach($_POST["fields"]as$v=>$l){$n=$kc[$l["type"]];$Xf=($n!==null?$Ke[$n]:$l);if($l["field"]!=""){if(!$l["has_default"])$l["default"]=null;$qb=eregi_replace(" *on update CURRENT_TIMESTAMP","",$l["default"]);if($qb!=$l["default"]){$l["on_update"]="CURRENT_TIMESTAMP";$l["default"]=$qb;}if($v==$_POST["auto_increment_col"])$l["auto_increment"]=true;$De=process_field($l,$Xf);$wa[]=array($l["orig"],$De,$ua);if($De!=process_field($Yd,$Yd)){$m[]=array($l["orig"],$De,$ua);if($l["orig"]!=""||$ua)$ig=true;}if($n!==null)$ic[idf_escape($l["field"])]=($a!=""&&$u!="sqlite"?"ADD":" ")." FOREIGN KEY (".idf_escape($l["field"]).") REFERENCES ".table($kc[$l["type"]])." (".idf_escape($Xf["field"]).")".(ereg("^($Ld)\$",$l["on_delete"])?" ON DELETE $l[on_delete]":"");$ua=" AFTER ".idf_escape($l["field"]);}elseif($l["orig"]!=""){$ig=true;$m[]=array($l["orig"]);}if($l["orig"]!=""){$Yd=next($Zd);if(!$Yd)$ua="";}}$le="";if(in_array($_POST["partition_by"],$je)){$me=array();if($_POST["partition_by"]=='RANGE'||$_POST["partition_by"]=='LIST'){foreach(array_filter($_POST["partition_names"])as$v=>$W){$X=$_POST["partition_values"][$v];$me[]="\nPARTITION ".idf_escape($W)." VALUES ".($_POST["partition_by"]=='RANGE'?"LESS THAN":"IN").($X!=""?" ($X)":" MAXVALUE");}}$le.="\nPARTITION BY $_POST[partition_by]($_POST[partition])".($me?" (".implode(",",$me)."\n)":($_POST["partitions"]?" PARTITIONS ".(+$_POST["partitions"]):""));}elseif($a!=""&&support("partitioning"))$le.="\nREMOVE PARTITIONING";$qd=lang(146);if($a==""){cookie("adminer_engine",$_POST["Engine"]);$qd=lang(147);}$_=trim($_POST["name"]);queries_redirect(ME."table=".urlencode($_),$qd,alter_table($a,$_,($u=="sqlite"&&($ig||$ic)?$wa:$m),$ic,$_POST["Comment"],($_POST["Engine"]&&$_POST["Engine"]!=$ae["Engine"]?$_POST["Engine"]:""),($_POST["Collation"]&&$_POST["Collation"]!=$ae["Collation"]?$_POST["Collation"]:""),($_POST["Auto_increment"]!=""?+$_POST["Auto_increment"]:""),$le));}}page_header(($a!=""?lang(30):lang(148)),$k,array("table"=>$a),$a);$G=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($T["int"])?"int":(isset($T["integer"])?"integer":"")))),"partition_names"=>array(""),);if($_POST){$G=$_POST;if($G["auto_increment_col"])$G["fields"][$G["auto_increment_col"]]["auto_increment"]=true;process_fields($G["fields"]);}elseif($a!=""){$G=$ae;$G["name"]=$a;$G["fields"]=array();if(!$_GET["auto_increment"])$G["Auto_increment"]="";foreach($Zd
|
||
|
as$l){$l["has_default"]=isset($l["default"]);if($l["on_update"])$l["default"].=" ON UPDATE $l[on_update]";$G["fields"][]=$l;}if(support("partitioning")){$pc="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($a);$E=$g->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $pc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($G["partition_by"],$G["partitions"],$G["partition"])=$E->fetch_row();$G["partition_names"]=array();$G["partition_values"]=array();foreach(get_rows("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $pc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION")as$We){$G["partition_names"][]=$We["PARTITION_NAME"];$G["partition_values"][]=$We["PARTITION_DESCRIPTION"];}$G["partition_names"][]="";}}$Ta=collations();$tf=floor(extension_loaded("suhosin")?(min(ini_get("suhosin.request.max_vars"),ini_get("suhosin.post.max_vars"))-13)/10:0);if($tf&&count($G["fields"])>$tf)echo"<p class='error'>".h(lang(149,'suhosin.post.max_vars','suhosin.request.max_vars'))."\n";$Kb=engines();foreach($Kb
|
||
|
as$Jb){if(!strcasecmp($Jb,$G["Engine"])){$G["Engine"]=$Jb;break;}}echo'
|
||
|
<form action="" method="post" id="form">
|
||
|
<p>
|
||
|
',lang(150),': <input name="name" maxlength="64" value="',h($G["name"]),'">
|
||
|
';if($a==""&&!$_POST){?><script type='text/javascript'>document.getElementById('form')['name'].focus();</script><?php }echo($Kb?html_select("Engine",array(""=>"(".lang(151).")")+$Kb,$G["Engine"]):""),' ',($Ta&&!ereg("sqlite|mssql",$u)?html_select("Collation",array(""=>"(".lang(87).")")+$Ta,$G["Collation"]):""),' <input type="submit" value="',lang(141),'">
|
||
|
<table cellspacing="0" id="edit-fields" class="nowrap">
|
||
|
';$Ya=($_POST?$_POST["comments"]:$G["Comment"]!="");if(!$_POST&&!$Ya){foreach($G["fields"]as$l){if($l["comment"]!=""){$Ya=true;break;}}}edit_fields($G["fields"],$Ta,"TABLE",$tf,$kc,$Ya);echo'</table>
|
||
|
<p>
|
||
|
',lang(94),': <input name="Auto_increment" size="6" value="',h($G["Auto_increment"]),'">
|
||
|
<label class="jsonly"><input type="checkbox" name="defaults" value="1"',($_POST["defaults"]?" checked":""),' onclick="columnShow(this.checked, 5);">',lang(95),'</label>
|
||
|
',(support("comment")?checkbox("comments",1,$Ya,lang(96),"columnShow(this.checked, 6); toggle('Comment'); if (this.checked) this.form['Comment'].focus();",true).' <input id="Comment" name="Comment" value="'.h($G["Comment"]).'" maxlength="60"'.($Ya?'':' class="hidden"').'>':''),'<p>
|
||
|
<input type="submit" value="',lang(141),'">
|
||
|
';if($_GET["create"]!=""){echo'<input type="submit" name="drop" value="',lang(80),'"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$Q,'">
|
||
|
';if(support("partitioning")){$ke=ereg('RANGE|LIST',$G["partition_by"]);print_fieldset("partition",lang(152),$G["partition_by"]);echo'<p>
|
||
|
',html_select("partition_by",array(-1=>"")+$je,$G["partition_by"],"partitionByChange(this);"),'(<input name="partition" value="',h($G["partition"]),'">)
|
||
|
',lang(153),': <input name="partitions" size="2" value="',h($G["partitions"]),'"',($ke||!$G["partition_by"]?" class='hidden'":""),'>
|
||
|
<table cellspacing="0" id="partition-table"',($ke?"":" class='hidden'"),'>
|
||
|
<thead><tr><th>',lang(154),'<th>',lang(155),'</thead>
|
||
|
';foreach($G["partition_names"]as$v=>$W){echo'<tr>','<td><input name="partition_names[]" value="'.h($W).'"'.($v==count($G["partition_names"])-1?' onchange="partitionNameChange(this);"':'').'>','<td><input name="partition_values[]" value="'.h($G["partition_values"][$v]).'">';}echo'</table>
|
||
|
</div></fieldset>
|
||
|
';}echo'</form>
|
||
|
';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Ec=array("PRIMARY","UNIQUE","INDEX");$O=table_status($a);if(eregi("MyISAM|M?aria",$O["Engine"]))$Ec[]="FULLTEXT";$t=indexes($a);if($u=="sqlite"){unset($Ec[0]);unset($t[""]);}if($_POST&&!$k&&!$_POST["add"]){$c=array();foreach($_POST["indexes"]as$s){$_=$s["name"];if(in_array($s["type"],$Ec)){$f=array();$cd=array();$K=array();ksort($s["columns"]);foreach($s["columns"]as$v=>$e){if($e!=""){$w=$s["lengths"][$v];$K[]=idf_escape($e).($w?"(".(+$w).")":"");$f[]=$e;$cd[]=($w?$w:null);}}if($f){$Vb=$t[$_];if($Vb){ksort($Vb["columns"]);ksort($Vb["lengths"]);if($s["type"]==$Vb["type"]&&array_values($Vb["columns"])===$f&&(!$Vb["lengths"]||array_values($Vb["lengths"])===$cd)){unset($t[$_]);continue;}}$c[]=array($s["type"],$_,"(".implode(", ",$K).")");}}}foreach($t
|
||
|
as$_=>$Vb)$c[]=array($Vb["type"],$_,"DROP");if(!$c)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),lang(156),alter_indexes($a,$c));}page_header(lang(104),$k,array("table"=>$a),$a);$m=array_keys(fields($a));$G=array("indexes"=>$t);if($_POST){$G=$_POST;if($_POST["add"]){foreach($G["indexes"]as$v=>$s){if($s["columns"][count($s["columns"])]!="")$G["indexes"][$v]["columns"][]="";}$s=end($G["indexes"]);if($s["type"]||array_filter($s["columns"],'strlen')||array_filter($s["lengths"],'strlen'))$G["indexes"][]=array("columns"=>array(1=>""));}}else{foreach($G["indexes"]as$v=>$s){$G["indexes"][$v]["name"]=$v;$G["indexes"][$v]["columns"][]="";}$G["indexes"][]=array("columns"=>array(1=>""));}echo'
|
||
|
<form action="" method="post">
|
||
|
<table cellspacing="0" class="nowrap">
|
||
|
<thead><tr><th>',lang(157),'<th>',lang(158),'<th>',lang(159),'</thead>
|
||
|
';$Oc=1;foreach($G["indexes"]as$s){echo"<tr><td>".html_select("indexes[$Oc][type]",array(-1=>"")+$Ec,$s["type"],($Oc==count($G["indexes"])?"indexesAddRow(this);":1))."<td>";ksort($s["columns"]);$p=1;foreach($s["columns"]as$v=>$e){echo"<span>".html_select("indexes[$Oc][columns][$p]",array(-1=>"")+$m,$e,($p==count($s["columns"])?"indexesAddColumn":"indexesChangeColumn")."(this, '".js_escape($u=="sql"?"":$_GET["indexes"]."_")."');"),"<input name='indexes[$Oc][lengths][$p]' size='2' value='".h($s["lengths"][$v])."'> </span>";$p++;}echo"<td><input name='indexes[$Oc][name]' value='".h($s["name"])."'>\n";$Oc++;}echo'</table>
|
||
|
<p>
|
||
|
<input type="submit" value="',lang(141),'">
|
||
|
<noscript><p><input type="submit" name="add" value="',lang(97),'"></noscript>
|
||
|
<input type="hidden" name="token" value="',$Q,'">
|
||
|
</form>
|
||
|
';}elseif(isset($_GET["database"])){if($_POST&&!$k&&!isset($_POST["add_x"])){restart_session();$_=trim($_POST["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(160),drop_databases(array(DB)));}elseif(DB!==$_){if(DB!=""){$_GET["db"]=$_;queries_redirect(preg_replace('~db=[^&]*&~','',ME)."db=".urlencode($_),lang(161),rename_database($_,$_POST["collation"]));}else{$i=explode("\n",str_replace("\r","",$_));$rf=true;$Wc="";foreach($i
|
||
|
as$j){if(count($i)==1||$j!=""){if(!create_database($j,$_POST["collation"]))$rf=false;$Wc=$j;}}queries_redirect(ME."db=".urlencode($Wc),lang(162),$rf);}}else{if(!$_POST["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($_).(eregi('^[a-z0-9_]+$',$_POST["collation"])?" COLLATE $_POST[collation]":""),substr(ME,0,-1),lang(163));}}page_header(DB!=""?lang(49):lang(164),$k,array(),DB);$Ta=collations();$_=DB;$Sa=null;if($_POST){$_=$_POST["name"];$Sa=$_POST["collation"];}elseif(DB!="")$Sa=db_collation(DB,$Ta);elseif($u=="sql"){foreach(get_vals("SHOW GRANTS")as$sc){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~',$sc,$z)&&$z[1]){$_=stripcslashes(idf_unescape("`$z[2]`"));break;}}}echo'
|
||
|
<form action="" method="post">
|
||
|
<p>
|
||
|
',($_POST["add_x"]||strpos($_,"\n")?'<textarea id="name" name="name" rows="10" cols="40">'.h($_).'</textarea><br>':'<input id="name" name="name" value="'.h($_).'" maxlength="64">')."\n".($Ta?html_select("collation",array(""=>"(".lang(87).")")+$Ta,$Sa):"");?>
|
||
|
<script type='text/javascript'>document.getElementById('name').focus();</script>
|
||
|
<input type="submit" value="<?php echo
|
||
|
lang(141),'">
|
||
|
';if(DB!="")echo"<input type='submit' name='drop' value='".lang(80)."'".confirm().">\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"<input type='image' name='add' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&version=3.5.1' alt='+' title='".lang(97)."'>\n";echo'<input type="hidden" name="token" value="',$Q,'">
|
||
|
</form>
|
||
|
';}elseif(isset($_GET["scheme"])){if($_POST&&!$k){$y=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$y,lang(165));else{$_=trim($_POST["name"]);$y.=urlencode($_);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($_),$y,lang(166));elseif($_GET["ns"]!=$_)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($_),$y,lang(167));else
|
||
|
redirect($y);}}page_header($_GET["ns"]!=""?lang(50):lang(51),$k);$G=$_POST;if(!$G)$G=array("name"=>$_GET["ns"]);echo'
|
||
|
<form action="" method="post">
|
||
|
<p><input id="name" name="name" value="',h($G["name"]);?>">
|
||
|
<script type='text/javascript'>document.getElementById('name').focus();</script>
|
||
|
<input type="submit" value="<?php echo
|
||
|
lang(141),'">
|
||
|
';if($_GET["ns"]!="")echo"<input type='submit' name='drop' value='".lang(80)."'".confirm().">\n";echo'<input type="hidden" name="token" value="',$Q,'">
|
||
|
</form>
|
||
|
';}elseif(isset($_GET["call"])){$da=$_GET["call"];page_header(lang(168).": ".h($da),$k);$Te=routine($da,(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Dc=array();$ce=array();foreach($Te["fields"]as$p=>$l){if(substr($l["inout"],-3)=="OUT")$ce[$p]="@".idf_escape($l["field"])." AS ".idf_escape($l["field"]);if(!$l["inout"]||substr($l["inout"],0,2)=="IN")$Dc[]=$p;}if(!$k&&$_POST){$La=array();foreach($Te["fields"]as$v=>$l){if(in_array($v,$Dc)){$W=process_input($l);if($W===false)$W="''";if(isset($ce[$v]))$g->query("SET @".idf_escape($l["field"])." = $W");}$La[]=(isset($ce[$v])?"@".idf_escape($l["field"]):$W);}$D=(isset($_GET["callf"])?"SELECT":"CALL")." ".idf_escape($da)."(".implode(", ",$La).")";echo"<p><code class='jush-$u'>".h($D)."</code> <a href='".h(ME)."sql=".urlencode($D)."'>".lang(33)."</a>\n";if(!$g->multi_query($D))echo"<p class='error'>".error()."\n";else{$h=connect();if(is_object($h))$h->select_db(DB);do{$E=$g->store_result();if(is_object($E))select($E,$h);else
|
||
|
echo"<p class='message'>".lang(169,$g->affected_rows)."\n";}while($g->next_result());if($ce)select($g->query("SELECT ".implode(", ",$ce)));}}echo'
|
||
|
<form action="" method="post">
|
||
|
';if($Dc){echo"<table cellspacing='0'>\n";foreach($Dc
|
||
|
as$v){$l=$Te["fields"][$v];$_=$l["field"];echo"<tr><th>".$b->fieldName($l);$X=$_POST["fields"][$_];if($X!=""){if($l["type"]=="enum")$X=+$X;if($l["type"]=="set")$X=array_sum($X);}input($l,$X,(string)$_POST["function"][$_]);echo"\n";}echo"</table>\n";}echo'<p>
|
||
|
<input type="submit" value="',lang(168),'">
|
||
|
<input type="hidden" name="token" value="',$Q,'">
|
||
|
</form>
|
||
|
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];if($_POST&&!$k&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if($_POST["drop"])query_redirect("ALTER TABLE ".table($a)."\nDROP ".($u=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($_GET["name"]),ME."table=".urlencode($a),lang(170));else{$jf=array_filter($_POST["source"],'strlen');ksort($jf);$Ef=array();foreach($jf
|
||
|
as$v=>$W)$Ef[$v]=$_POST["target"][$v];query_redirect("ALTER TABLE ".table($a).($_GET["name"]!=""?"\nDROP ".($u=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($_GET["name"]).",":"")."\nADD FOREIGN KEY (".implode(", ",array_map('idf_escape',$jf)).") REFERENCES ".table($_POST["table"])." (".implode(", ",array_map('idf_escape',$Ef)).")".(ereg("^($Ld)\$",$_POST["on_delete"])?" ON DELETE $_POST[on_delete]":"").(ereg("^($Ld)\$",$_POST["on_update"])?" ON UPDATE $_POST[on_update]":""),ME."table=".urlencode($a),($_GET["name"]!=""?lang(171):lang(172)));$k=lang(173)."<br>$k";}}page_header(lang(174),$k,array("table"=>$a),$a);$G=array("table"=>$a,"source"=>array(""));if($_POST){$G=$_POST;ksort($G["source"]);if($_POST["add"])$G["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$G["target"]=array();}elseif($_GET["name"]!=""){$kc=foreign_keys($a);$G=$kc[$_GET["name"]];$G["source"][]="";}$jf=array_keys(fields($a));$Ef=($a===$G["table"]?$jf:array_keys(fields($G["table"])));$Je=array();foreach(table_status()as$_=>$O){if(fk_support($O))$Je[]=$_;}echo'
|
||
|
<form action="" method="post">
|
||
|
<p>
|
||
|
';if($G["db"]==""&&$G["ns"]==""){echo
|
||
|
lang(175),':
|
||
|
',html_select("table",$Je,$G["table"],"this.form['change-js'].value = '1'; this.form.submit();"),'<input type="hidden" name="change-js" value="">
|
||
|
<noscript><p><input type="submit" name="change" value="',lang(176),'"></noscript>
|
||
|
<table cellspacing="0">
|
||
|
<thead><tr><th>',lang(106),'<th>',lang(107),'</thead>
|
||
|
';$Oc=0;foreach($G["source"]as$v=>$W){echo"<tr>","<td>".html_select("source[".(+$v)."]",array(-1=>"")+$jf,$W,($Oc==count($G["source"])-1?"foreignAddRow(this);":1)),"<td>".html_select("target[".(+$v)."]",$Ef,$G["target"][$v]);$Oc++;}echo'</table>
|
||
|
<p>
|
||
|
',lang(88),': ',html_select("on_delete",array(-1=>"")+explode("|",$Ld),$G["on_delete"]),' ',lang(108),': ',html_select("on_update",array(-1=>"")+explode("|",$Ld),$G["on_update"]),'<p>
|
||
|
<input type="submit" value="',lang(141),'">
|
||
|
<noscript><p><input type="submit" name="add" value="',lang(177),'"></noscript>
|
||
|
';}if($_GET["name"]!=""){echo'<input type="submit" name="drop" value="',lang(80),'"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$Q,'">
|
||
|
</form>
|
||
|
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$zb=false;if($_POST&&!$k){$_=trim($_POST["name"]);$zb=drop_create("DROP VIEW ".table($a),"CREATE VIEW ".table($_)." AS\n$_POST[select]",($_POST["drop"]?substr(ME,0,-1):ME."table=".urlencode($_)),lang(178),lang(179),lang(180),$a);}page_header(($a!=""?lang(29):lang(181)),$k,array("table"=>$a),$a);$G=$_POST;if(!$G&&$a!=""){$G=view($a);$G["name"]=$a;}echo'
|
||
|
<form action="" method="post">
|
||
|
<p>',lang(159),': <input name="name" value="',h($G["name"]),'" maxlength="64">
|
||
|
<p>';textarea("select",$G["select"]);echo'<p>
|
||
|
';if($zb){echo'<input type="hidden" name="dropped" value="1">';}echo'<input type="submit" value="',lang(141),'">
|
||
|
';if($_GET["view"]!=""){echo'<input type="submit" name="drop" value="',lang(80),'"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$Q,'">
|
||
|
</form>
|
||
|
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Lc=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$of=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");if($_POST&&!$k){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(182));elseif(in_array($_POST["INTERVAL_FIELD"],$Lc)&&isset($of[$_POST["STATUS"]])){$Ye="\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),($aa!=""?lang(183):lang(184)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Ye.($aa!=$_POST["EVENT_NAME"]?"\nRENAME TO ".idf_escape($_POST["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($_POST["EVENT_NAME"]).$Ye)."\n".$of[$_POST["STATUS"]]." COMMENT ".q($_POST["EVENT_COMMENT"]).rtrim(" DO\n$_POST[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(185).": ".h($aa):lang(186)),$k);$G=$_POST;if(!$G&&$aa!=""){$H=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$G=reset($H);}echo'
|
||
|
<form action="" method="post">
|
||
|
<table cellspacing="0">
|
||
|
<tr><th>',lang(159),'<td><input name="EVENT_NAME" value="',h($G["EVENT_NAME"]),'" maxlength="64">
|
||
|
<tr><th>',lang(187),'<td><input name="STARTS" value="',h("$G[EXECUTE_AT]$G[STARTS]"),'">
|
||
|
<tr><th>',lang(188),'<td><input name="ENDS" value="',h($G["ENDS"]),'">
|
||
|
<tr><th>',lang(189),'<td><input name="INTERVAL_VALUE" value="',h($G["INTERVAL_VALUE"]),'" size="6"> ',html_select("INTERVAL_FIELD",$Lc,$G["INTERVAL_FIELD"]),'<tr><th>',lang(75),'<td>',html_select("STATUS",$of,$G["STATUS"]),'<tr><th>',lang(96),'<td><input name="EVENT_COMMENT" value="',h($G["EVENT_COMMENT"]),'" maxlength="64">
|
||
|
<tr><th> <td>',checkbox("ON_COMPLETION","PRESERVE",$G["ON_COMPLETION"]=="PRESERVE",lang(190)),'</table>
|
||
|
<p>';textarea("EVENT_DEFINITION",$G["EVENT_DEFINITION"]);echo'<p>
|
||
|
<input type="submit" value="',lang(141),'">
|
||
|
';if($aa!=""){echo'<input type="submit" name="drop" value="',lang(80),'"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$Q,'">
|
||
|
</form>
|
||
|
';}elseif(isset($_GET["procedure"])){$da=$_GET["procedure"];$Te=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$Ue=routine_languages();$zb=false;if($_POST&&!$k&&!$_POST["add"]&&!$_POST["drop_col"]&&!$_POST["up"]&&!$_POST["down"]){$K=array();$m=(array)$_POST["fields"];ksort($m);foreach($m
|
||
|
as$l){if($l["field"]!="")$K[]=(ereg("^($Ic)\$",$l["inout"])?"$l[inout] ":"").idf_escape($l["field"]).process_type($l,"CHARACTER SET");}$zb=drop_create("DROP $Te ".idf_escape($da),"CREATE $Te ".idf_escape(trim($_POST["name"]))." (".implode(", ",$K).")".(isset($_GET["function"])?" RETURNS".process_type($_POST["returns"],"CHARACTER SET"):"").(in_array($_POST["language"],$Ue)?" LANGUAGE $_POST[language]":"").rtrim("\n$_POST[definition]",";").";",substr(ME,0,-1),lang(191),lang(192),lang(193),$da);}page_header(($da!=""?(isset($_GET["function"])?lang(194):lang(195)).": ".h($da):(isset($_GET["function"])?lang(196):lang(197))),$k);$Ta=get_vals("SHOW CHARACTER SET");sort($Ta);$G=array("fields"=>array());if($_POST){$G=$_POST;$G["fields"]=(array)$G["fields"];process_fields($G["fields"]);}elseif($da!=""){$G=routine($da,$Te);$G["name"]=$da;}echo'
|
||
|
<form action="" method="post" id="form">
|
||
|
<p>',lang(159),': <input name="name" value="',h($G["name"]),'" maxlength="64">
|
||
|
',($Ue?lang(8).": ".html_select("language",$Ue,$G["language"]):""),'<table cellspacing="0" class="nowrap">
|
||
|
';edit_fields($G["fields"],$Ta,$Te);if(isset($_GET["function"])){echo"<tr><td>".lang(198);edit_type("returns",$G["returns"],$Ta);}echo'</table>
|
||
|
<p>';textarea("definition",$G["definition"]);echo'<p>
|
||
|
<input type="submit" value="',lang(141),'">
|
||
|
';if($da!=""){echo'<input type="submit" name="drop" value="',lang(80),'"',confirm(),'>';}if($zb){echo'<input type="hidden" name="dropped" value="1">';}echo'<input type="hidden" name="token" value="',$Q,'">
|
||
|
</form>
|
||
|
';}elseif(isset($_GET["sequence"])){$fa=$_GET["sequence"];if($_POST&&!$k){$y=substr(ME,0,-1);$_=trim($_POST["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($fa),$y,lang(199));elseif($fa=="")query_redirect("CREATE SEQUENCE ".idf_escape($_),$y,lang(200));elseif($fa!=$_)query_redirect("ALTER SEQUENCE ".idf_escape($fa)." RENAME TO ".idf_escape($_),$y,lang(201));else
|
||
|
redirect($y);}page_header($fa!=""?lang(202).": ".h($fa):lang(203),$k);$G=$_POST;if(!$G)$G=array("name"=>$fa);echo'
|
||
|
<form action="" method="post">
|
||
|
<p><input name="name" value="',h($G["name"]),'">
|
||
|
<input type="submit" value="',lang(141),'">
|
||
|
';if($fa!="")echo"<input type='submit' name='drop' value='".lang(80)."'".confirm().">\n";echo'<input type="hidden" name="token" value="',$Q,'">
|
||
|
</form>
|
||
|
';}elseif(isset($_GET["type"])){$ga=$_GET["type"];if($_POST&&!$k){$y=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ga),$y,lang(204));else
|
||
|
query_redirect("CREATE TYPE ".idf_escape(trim($_POST["name"]))." $_POST[as]",$y,lang(205));}page_header($ga!=""?lang(206).": ".h($ga):lang(207),$k);$G=$_POST;if(!$G)$G=array("as"=>"AS ");echo'
|
||
|
<form action="" method="post">
|
||
|
<p>
|
||
|
';if($ga!="")echo"<input type='submit' name='drop' value='".lang(80)."'".confirm().">\n";else{echo"<input name='name' value='".h($G['name'])."'>\n";textarea("as",$G["as"]);echo"<p><input type='submit' value='".lang(141)."'>\n";}echo'<input type="hidden" name="token" value="',$Q,'">
|
||
|
</form>
|
||
|
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$Vf=trigger_options();$Tf=array("INSERT","UPDATE","DELETE");$zb=false;if($_POST&&!$k&&in_array($_POST["Timing"],$Vf["Timing"])&&in_array($_POST["Event"],$Tf)&&in_array($_POST["Type"],$Vf["Type"])){$Jf=" $_POST[Timing] $_POST[Event]";$Kd=" ON ".table($a);$zb=drop_create("DROP TRIGGER ".idf_escape($_GET["name"]).($u=="pgsql"?$Kd:""),"CREATE TRIGGER ".idf_escape($_POST["Trigger"]).($u=="mssql"?$Kd.$Jf:$Jf.$Kd).rtrim(" $_POST[Type]\n$_POST[Statement]",";").";",ME."table=".urlencode($a),lang(208),lang(209),lang(210),$_GET["name"]);}page_header(($_GET["name"]!=""?lang(211).": ".h($_GET["name"]):lang(212)),$k,array("table"=>$a));$G=$_POST;if(!$G)$G=trigger($_GET["name"])+array("Trigger"=>$a."_bi");echo'
|
||
|
<form action="" method="post" id="form">
|
||
|
<table cellspacing="0">
|
||
|
<tr><th>',lang(213),'<td>',html_select("Timing",$Vf["Timing"],$G["Timing"],"if (/^".preg_quote($a,"/")."_[ba][iud]$/.test(this.form['Trigger'].value)) this.form['Trigger'].value = '".js_escape($a)."_' + selectValue(this).charAt(0).toLowerCase() + selectValue(this.form['Event']).charAt(0).toLowerCase();"),'<tr><th>',lang(214),'<td>',html_select("Event",$Tf,$G["Event"],"this.form['Timing'].onchange();"),'<tr><th>',lang(91),'<td>',html_select("Type",$Vf["Type"],$G["Type"]),'</table>
|
||
|
<p>',lang(159),': <input name="Trigger" value="',h($G["Trigger"]),'" maxlength="64">
|
||
|
<p>';textarea("Statement",$G["Statement"]);echo'<p>
|
||
|
<input type="submit" value="',lang(141),'">
|
||
|
';if($_GET["name"]!=""){echo'<input type="submit" name="drop" value="',lang(80),'"',confirm(),'>';}if($zb){echo'<input type="hidden" name="dropped" value="1">';}echo'<input type="hidden" name="token" value="',$Q,'">
|
||
|
</form>
|
||
|
';}elseif(isset($_GET["user"])){$ha=$_GET["user"];$Be=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$G){foreach(explode(",",($G["Privilege"]=="Grant option"?"":$G["Context"]))as$db)$Be[$db][$G["Privilege"]]=$G["Comment"];}$Be["Server Admin"]+=$Be["File access on server"];$Be["Databases"]["Create routine"]=$Be["Procedures"]["Create routine"];unset($Be["Procedures"]["Create routine"]);$Be["Columns"]=array();foreach(array("Select","Insert","Update","References")as$W)$Be["Columns"][$W]=$Be["Tables"][$W];unset($Be["Server Admin"]["Usage"]);foreach($Be["Tables"]as$v=>$W)unset($Be["Databases"][$v]);$Bd=array();if($_POST){foreach($_POST["objects"]as$v=>$W)$Bd[$W]=(array)$Bd[$W]+(array)$_POST["grants"][$v];}$tc=array();$Id="";if(isset($_GET["host"])&&($E=$g->query("SHOW GRANTS FOR ".q($ha)."@".q($_GET["host"])))){while($G=$E->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$G[0],$z)&&preg_match_all('~ *([^(,]*[^ ,(])( *\\([^)]+\\))?~',$z[1],$jd,PREG_SET_ORDER)){foreach($jd
|
||
|
as$W){if($W[1]!="USAGE")$tc["$z[2]$W[2]"][$W[1]]=true;if(ereg(' WITH GRANT OPTION',$G[0]))$tc["$z[2]$W[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$G[0],$z))$Id=$z[1];}}if($_POST&&!$k){$Jd=(isset($_GET["host"])?q($ha)."@".q($_GET["host"]):"''");$Cd=q($_POST["user"])."@".q($_POST["host"]);$ne=q($_POST["pass"]);if($_POST["drop"])query_redirect("DROP USER $Jd",ME."privileges=",lang(215));else{$ib=false;if($Jd!=$Cd){$ib=queries(($g->server_info<5?"GRANT USAGE ON *.* TO":"CREATE USER")." $Cd IDENTIFIED BY".($_POST["hashed"]?" PASSWORD":"")." $ne");$k=!$ib;}elseif($_POST["pass"]!=$Id||!$_POST["hashed"])queries("SET PASSWORD FOR $Cd = ".($_POST["hashed"]?$ne:"PASSWORD($ne)"));if(!$k){$Qe=array();foreach($Bd
|
||
|
as$Fd=>$sc){if(isset($_GET["grant"]))$sc=array_filter($sc);$sc=array_keys($sc);if(isset($_GET["grant"]))$Qe=array_diff(array_keys(array_filter($Bd[$Fd],'strlen')),$sc);elseif($Jd==$Cd){$Hd=array_keys((array)$tc[$Fd]);$Qe=array_diff($Hd,$sc);$sc=array_diff($sc,$Hd);unset($tc[$Fd]);}if(preg_match('~^(.+)\\s*(\\(.*\\))?$~U',$Fd,$z)&&(!grant("REVOKE",$Qe,$z[2]," ON $z[1] FROM $Cd")||!grant("GRANT",$sc,$z[2]," ON $z[1] TO $Cd"))){$k=true;break;}}}if(!$k&&isset($_GET["host"])){if($Jd!=$Cd)queries("DROP USER $Jd");elseif(!isset($_GET["grant"])){foreach($tc
|
||
|
as$Fd=>$Qe){if(preg_match('~^(.+)(\\(.*\\))?$~U',$Fd,$z))grant("REVOKE",array_keys($Qe),$z[2]," ON $z[1] FROM $Cd");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(216):lang(217)),!$k);if($ib)$g->query("DROP USER $Cd");}}page_header((isset($_GET["host"])?lang(22).": ".h("$ha@$_GET[host]"):lang(120)),$k,array("privileges"=>array('',lang(53))));if($_POST){$G=$_POST;$tc=$Bd;}else{$G=$_GET+array("host"=>$g->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$G["pass"]=$Id;if($Id!="")$G["hashed"]=true;$tc[(DB!=""&&!isset($_GET["host"])?idf_escape(addcslashes(DB,"%_")):"").".*"]=array();}echo'<form action="" method="post">
|
||
|
<table cellspacing="0">
|
||
|
<tr><th>',lang(21),'<td><input name="host" maxlength="60" value="',h($G["host"]),'">
|
||
|
<tr><th>',lang(22),'<td><input name="user" maxlength="16" value="',h($G["user"]),'">
|
||
|
<tr><th>',lang(23),'<td><input id="pass" name="pass" value="',h($G["pass"]),'">
|
||
|
';if(!$G["hashed"]){echo'<script type="text/javascript">typePassword(document.getElementById(\'pass\'));</script>';}echo
|
||
|
checkbox("hashed",1,$G["hashed"],lang(218),"typePassword(this.form['pass'], this.checked);"),'</table>
|
||
|
|
||
|
';echo"<table cellspacing='0'>\n","<thead><tr><th colspan='2'><a href='http://dev.mysql.com/doc/refman/".substr($g->server_info,0,3)."/en/grant.html#priv_level' target='_blank' rel='noreferrer'>".lang(53)."</a>";$p=0;foreach($tc
|
||
|
as$Fd=>$sc){echo'<th>'.($Fd!="*.*"?"<input name='objects[$p]' value='".h($Fd)."' size='10'>":"<input type='hidden' name='objects[$p]' value='*.*' size='10'>*.*");$p++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>lang(21),"Databases"=>lang(24),"Tables"=>lang(102),"Columns"=>lang(103),"Procedures"=>lang(219),)as$db=>$sb){foreach((array)$Be[$db]as$Ae=>$Xa){echo"<tr".odd()."><td".($sb?">$sb<td":" colspan='2'").' lang="en" title="'.h($Xa).'">'.h($Ae);$p=0;foreach($tc
|
||
|
as$Fd=>$sc){$_="'grants[$p][".h(strtoupper($Ae))."]'";$X=$sc[strtoupper($Ae)];if($db=="Server Admin"&&$Fd!=(isset($tc["*.*"])?"*.*":".*"))echo"<td> ";elseif(isset($_GET["grant"]))echo"<td><select name=$_><option><option value='1'".($X?" selected":"").">".lang(220)."<option value='0'".($X=="0"?" selected":"").">".lang(221)."</select>";else
|
||
|
echo"<td align='center'><input type='checkbox' name=$_ value='1'".($X?" checked":"").($Ae=="All privileges"?" id='grants-$p-all'":($Ae=="Grant option"?"":" onclick=\"if (this.checked) formUncheck('grants-$p-all');\"")).">";$p++;}}}echo"</table>\n",'<p>
|
||
|
<input type="submit" value="',lang(141),'">
|
||
|
';if(isset($_GET["host"])){echo'<input type="submit" name="drop" value="',lang(80),'"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$Q,'">
|
||
|
</form>
|
||
|
';}elseif(isset($_GET["processlist"])){if(support("kill")&&$_POST&&!$k){$Tc=0;foreach((array)$_POST["kill"]as$W){if(queries("KILL ".(+$W)))$Tc++;}queries_redirect(ME."processlist=",lang(222,$Tc),$Tc||!$_POST["kill"]);}page_header(lang(73),$k);echo'
|
||
|
<form action="" method="post">
|
||
|
<table cellspacing="0" onclick="tableClick(event);" class="nowrap checkable">
|
||
|
';$p=-1;foreach(process_list()as$p=>$G){if(!$p)echo"<thead><tr lang='en'>".(support("kill")?"<th> ":"")."<th>".implode("<th>",array_keys($G))."</thead>\n";echo"<tr".odd().">".(support("kill")?"<td>".checkbox("kill[]",$G["Id"],0):"");foreach($G
|
||
|
as$v=>$W)echo"<td>".(($u=="sql"&&$v=="Info"&&ereg("Query|Killed",$G["Command"])&&$W!="")||($u=="pgsql"&&$v=="current_query"&&$W!="<IDLE>")||($u=="oracle"&&$v=="sql_text"&&$W!="")?"<code class='jush-$u'>".shorten_utf8($W,100,"</code>").' <a href="'.h(ME.($G["db"]!=""?"db=".urlencode($G["db"])."&":"")."sql=".urlencode($W)).'">'.lang(33).'</a>':nbsp($W));echo"\n";}echo'</table>
|
||
|
<script type=\'text/javascript\'>tableCheck();</script>
|
||
|
<p>
|
||
|
';if(support("kill")){echo($p+1)."/".lang(223,$g->result("SELECT @@max_connections")),"<p><input type='submit' value='".lang(224)."'>\n";}echo'<input type="hidden" name="token" value="',$Q,'">
|
||
|
</form>
|
||
|
';}elseif(isset($_GET["select"])){$a=$_GET["select"];$O=table_status($a);$t=indexes($a);$m=fields($a);$kc=column_foreign_keys($a);$Gd="";if($O["Oid"]=="t"){$Gd=($u=="sqlite"?"rowid":"oid");$t[]=array("type"=>"PRIMARY","columns"=>array($Gd));}parse_str($_COOKIE["adminer_import"],$ra);$Re=array();$f=array();$Hf=null;foreach($m
|
||
|
as$v=>$l){$_=$b->fieldName($l);if(isset($l["privileges"]["select"])&&$_!=""){$f[$v]=html_entity_decode(strip_tags($_));if(ereg('text|lob',$l["type"]))$Hf=$b->selectLengthProcess();}$Re+=$l["privileges"];}list($I,$uc)=$b->selectColumnsProcess($f,$t);$Z=$b->selectSearchProcess($m,$t);$Td=$b->selectOrderProcess($m,$t);$x=$b->selectLimitProcess();$pc=($I?implode(", ",$I):($Gd?"$Gd, ":"")."*")."\nFROM ".table($a);$vc=($uc&&count($uc)<count($I)?"\nGROUP BY ".implode(", ",$uc):"").($Td?"\nORDER BY ".implode(", ",$Td):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$cg=>$G)echo$g->result("SELECT".limit(idf_escape(key($G))." FROM ".table($a)," WHERE ".where_check($cg).($Z?" AND ".implode(" AND ",$Z):"").($Td?" ORDER BY ".implode(", ",$Td):""),1));exit;}if($_POST&&!$k){$sg="(".implode(") OR (",array_map('where_check',(array)$_POST["check"])).")";$xe=$eg=null;foreach($t
|
||
|
as$s){if($s["type"]=="PRIMARY"){$xe=array_flip($s["columns"]);$eg=($I?$xe:array());break;}}foreach((array)$eg
|
||
|
as$v=>$W){if(in_array(idf_escape($v),$I))unset($eg[$v]);}if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");if(!is_array($_POST["check"])||$eg===array()){$rg=$Z;if(is_array($_POST["check"]))$rg[]="($sg)";$D="SELECT $pc".($rg?"\nWHERE ".implode(" AND ",$rg):"").$vc;}else{$ag=array();foreach($_POST["check"]as$W)$ag[]="(SELECT".limit($pc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($W).$vc,1).")";$D=implode(" UNION ALL ",$ag);}$b->dumpData($a,"table",$D);exit;}if(!$b->selectEmailProcess($Z,$kc)){if($_POST["save"]||$_POST["delete"]){$E=true;$sa=0;$D=table($a);$K=array();if(!$_POST["delete"]){foreach($f
|
||
|
as$_=>$W){$W=process_input($m[$_]);if($W!==null){if($_POST["clone"])$K[idf_escape($_)]=($W!==false?$W:idf_escape($_));elseif($W!==false)$K[]=idf_escape($_)." = $W";}}$D.=($_POST["clone"]?" (".implode(", ",array_keys($K)).")\nSELECT ".implode(", ",$K)."\nFROM ".table($a):" SET\n".implode(",\n",$K));}if($_POST["delete"]||$K){$Va="UPDATE";if($_POST["delete"]){$Va="DELETE";$D="FROM $D";}if($_POST["clone"]){$Va="INSERT";$D="INTO $D";}if($_POST["all"]||($eg===array()&&$_POST["check"])||count($uc)<count($I)){$E=queries("$Va $D".($_POST["all"]?($Z?"\nWHERE ".implode(" AND ",$Z):""):"\nWHERE $sg"));$sa=$g->affected_rows;}else{foreach((array)$_POST["check"]as$W){$E=queries($Va.limit1($D,"\nWHERE ".where_check($W)));if(!$E)break;$sa+=$g->affected_rows;}}}$qd=lang(225,$sa);if($_POST["clone"]&&$E&&$sa==1){$Xc=last_id();if($Xc)$qd=lang(139," $Xc");}queries_redirect(remove_from_uri("page"),$qd,$E);}elseif(!$_POST["import"]){if(!$_POST["val"])$k=lang(226);else{$E=true;$sa=0;foreach($_POST["val"]as$cg=>$G){$K=array();foreach($G
|
||
|
as$v=>$W){$v=bracket_escape($v,1);$K[]=idf_escape($v)." = ".(ereg('char|text',$m[$v]["type"])||$W!=""?$b->processInput($m[$v],$W):"NULL");}$D=table($a)." SET ".implode(", ",$K);$rg=" WHERE ".where_check($cg).($Z?" AND ".implode(" AND ",$Z):"");$E=queries("UPDATE".(count($uc)<count($I)?" $D$rg":limit1($D,$rg)));if(!$E)break;$sa+=$g->affected_rows;}queries_redirect(remove_from_uri(),lang(225,$sa),$E);}}elseif(is_string($dc=get_file("csv_file",true))){cookie("adminer_import","output=".urlencode($ra["output"])."&format=".urlencode($_POST["separator"]));$E=true;$Ua=array_keys($m);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$dc,$jd);$sa=count($jd[0]);begin();$ef=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));foreach($jd[0]as$v=>$W){preg_match_all("~((\"[^\"]*\")+|[^$ef]*)$ef~",$W.$ef,$kd);if(!$v&&!array_diff($kd[1],$Ua)){$Ua=$kd[1];$sa--;}else{$K=array();foreach($kd[1]as$p=>$Ra)$K[idf_escape($Ua[$p])]=($Ra==""&&$m[$Ua[$p]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$Ra))));$E=insert_update($a,$K,$xe);if(!$E)break;}}if($E)queries("COMMIT");queries_redirect(remove_from_uri("page"),lang(227,$sa),$E);queries("ROLLBACK");}else$k=upload_error($dc);}}$yf=$b->tableName($O);page_header(lang(35).": $yf",$k);session_write_close();$K=null;if(isset($Re["insert"])){$K="";foreach((array)$_GET["where"]as$W){if(count($kc[$W["col"]])==1&&($W["op"]=="="||(!$W["op"]&&!ereg('[_%]',$W["val"]))))$K.="&set".urlencode("[".bracket_escape($W["col"])."]")."=".urlencode($W["val"]);}}$b->selectLinks($O,$K);if(!$f)echo"<p class='error'>".lang(228).($m?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($I,$f);$b->selectSearchPrint($Z,$f,$t);$b->selectOrderPrint($Td,$f,$t);$b->selectLimitPrint($x);$b->selectLengthPrint($Hf);$b->selectActionPrint($t);echo"</form>\n";$fe=$_GET["page"];if($fe=="last"){$nc=$g->result("SELECT COUNT(*) FROM ".table($a).($Z?" WHERE ".implode(" AND ",$Z):""));$fe=floor(max(0,$nc-1)/$x);}$D="SELECT".limit((+$x&&$uc&&count($uc)<count($I)&&$u=="sql"?"SQL_CALC_FOUND_ROWS ":"").$pc,($Z?"\nWHERE ".implode(" AND ",$Z):"").$vc,($x!=""?+$x:null),($fe?$x*$fe:0),"\n");echo$b->selectQuery($D);$E=$g->query($D);if(!$E)echo"<p class='error'>".error()."\n";else{if($u=="mssql")$E->seek($x*$fe);$Gb=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$H=array();while($G=$E->fetch_assoc()){if($fe&&$u=="oracle")unset($G["RNUM"]);$H[]=$G;}if($_GET["page"]!="last")$nc=(+$x&&$uc&&count($uc)<count($I)?($u=="sql"?$g->result(" SELECT FOUND_ROWS()"):$g->result("SELECT COUNT(*) FROM ($D) x")):count($H));if(!$H)echo"<p class='message'>".lang(84)."\n";else{$Fa=$b->backwardKeys($a,$yf);echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$uc&&$I?"":"<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".lang(229)."</a>");$Ad=array();$rc=array();reset($I);$Ge=1;foreach($H[0]as$v=>$W){if($v!=$Gd){$W=$_GET["columns"][key($I)];$l=$m[$I?($W?$W["col"]:current($I)):$v];$_=($l?$b->fieldName($l,$Ge):"*");if($_!=""){$Ge++;$Ad[$v]=$_;$e=idf_escape($v);$Ac=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($v);$sb="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.h($Ac.($Td[0]==$e||$Td[0]==$v||(!$Td&&count($uc)<count($I)&&$uc[0]==$e)?$sb:'')).'">';echo(!$I||$W?apply_sql_function($W["fun"],$_):h(current($I)))."</a>";echo"<span class='column hidden'>","<a href='".h($Ac.$sb)."' title='".lang(41)."' class='text'> ↓</a>";if(!$W["fun"])echo'<a href="#fieldset-search" onclick="selectSearch(\''.h(js_escape($v)).'\');
|
||
|
as$G){foreach($G
|
||
|
as$v=>$W)$cd[$v]=max($cd[$v],min(40,strlen(utf8_decode($W))));}}echo($Fa?"<th>".lang(230):"")."</thead>\n";foreach($b->rowDescriptions($H,$kc)as$_d=>$G){$bg=unique_array($H[$_d],$t);$cg="";foreach($bg
|
||
|
as$v=>$W)$cg.="&".($W!==null?urlencode("where[".bracket_escape($v)."]")."=".urlencode($W):"null%5B%5D=".urlencode($v));echo"<tr".odd().">".(!$uc&&$I?"":"<td>".checkbox("check[]",substr($cg,1),in_array(substr($cg,1),(array)$_POST["check"]),"","this.form['all'].checked = false; formUncheck('all-page');").(count($uc)<count($I)||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$cg)."'>".lang(229)."</a>"));foreach($G
|
||
|
as$v=>$W){if(isset($Ad[$v])){$l=$m[$v];if($W!=""&&(!isset($Gb[$v])||$Gb[$v]!=""))$Gb[$v]=(is_mail($W)?$Ad[$v]:"");$y="";$W=$b->editVal($W,$l);if($W!==null){if(ereg('blob|bytea|raw|file',$l["type"])&&$W!="")$y=h(ME.'download='.urlencode($a).'&field='.urlencode($v).$cg);if($W==="")$W=" ";elseif(is_utf8($W)){if($Hf!=""&&ereg('text|blob',$l["type"]))$W=shorten_utf8($W,max(0,+$Hf));else$W=h($W);}if(!$y){foreach((array)$kc[$v]as$n){if(count($kc[$v])==1||end($n["source"])==$v){$y="";foreach($n["source"]as$p=>$jf)$y.=where_link($p,$n["target"][$p],$H[$_d][$jf]);$y=h(($n["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($n["db"]),ME):ME).'select='.urlencode($n["table"]).$y);if(count($n["source"])==1)break;}}}if($v=="COUNT(*)"){$y=h(ME."select=".urlencode($a));$p=0;foreach((array)$_GET["where"]as$V){if(!array_key_exists($V["col"],$bg))$y.=h(where_link($p++,$V["col"],$V["val"],$V["op"]));}foreach($bg
|
||
|
as$Qc=>$V)$y.=h(where_link($p++,$Qc,$V));}}if(!$y){if(is_mail($W))$y="mailto:$W";if($Ee=is_url($G[$v]))$y=($Ee=="http"&&$ba?$G[$v]:"$Ee://www.adminer.org/redirect/?url=".urlencode($G[$v]));}$q=h("val[$cg][".bracket_escape($v)."]");$X=$_POST["val"][$cg][bracket_escape($v)];$xc=h($X!==null?$X:$G[$v]);$hd=strpos($W,"<i>...</i>");$Db=is_utf8($W)&&$H[$_d][$v]==$G[$v]&&!$rc[$v];$Gf=ereg('text|lob',$l["type"]);echo(($_GET["modify"]&&$Db)||$X!==null?"<td>".($Gf?"<textarea name='$q' cols='30' rows='".(substr_count($G[$v],"\n")+1)."'>$xc</textarea>":"<input name='$q' value='$xc' size='$cd[$v]'>"):"<td id='$q' ondblclick=\"".($Db?"selectDblClick(this, event".($hd?", 2":($Gf?", 1":"")).")":"alert('".h(lang(231))."')").";\">".$b->selectVal($W,$y,$l));}}if($Fa)echo"<td>";$b->backwardKeysPrint($Fa,$H[$_d]);echo"</tr>\n";}echo"</table>\n",(!$uc&&$I?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($H||$fe){$Rb=true;if($_GET["page"]!="last"&&+$x&&count($uc)>=count($I)&&($nc>=$x||$fe)){$nc=found_rows($O,$Z);if($nc<max(1e4,2*($fe+1)*$x)){ob_flush();flush();$nc=$g->result("SELECT COUNT(*) FROM ".table($a).($Z?" WHERE ".implode(" AND ",$Z):""));}else$Rb=false;}echo"<p class='pages'>";if(+$x&&$nc>$x){$md=floor(($nc-1)/$x);echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".lang(232)."', '".($fe+1)."'), event); return false;\">".lang(232)."</a>:",pagination(0,$fe).($fe>5?" ...":"");for($p=max(1,$fe-4);$p<min($md,$fe+5);$p++)echo
|
||
|
pagination($p,$fe);echo($fe+5<$md?" ...":"").($Rb?pagination($md,$fe):' <a href="'.h(remove_from_uri()."&page=last").'">'.lang(233)."</a>");}echo" (".($Rb?"":"~ ").lang(122,$nc).") ".checkbox("all",1,0,lang(234))."\n";if($b->selectCommandPrint()){echo'<fieldset><legend>',lang(33),'</legend><div>
|
||
|
<input type="submit" value="',lang(141),'"',($_GET["modify"]?'':' title="'.lang(226).'" class="jsonly"'),'>
|
||
|
<input type="submit" name="edit" value="',lang(33),'">
|
||
|
<input type="submit" name="clone" value="',lang(235),'">
|
||
|
<input type="submit" name="delete" value="',lang(144),'" onclick="return confirm(\'',lang(0);?> (' + (this.form['all'].checked ? <?php echo$nc,' : formChecked(this, /check/)) + \')\');">
|
||
|
</div></fieldset>
|
||
|
';}$lc=$b->dumpFormat();if($lc){print_fieldset("export",lang(114));$de=$b->dumpOutput();echo($de?html_select("output",$de,$ra["output"])." ":""),html_select("format",$lc,$ra["format"])," <input type='submit' name='export' value='".lang(114)."'>\n","</div></fieldset>\n";}}if($b->selectImportPrint()){print_fieldset("import",lang(236),!$H);echo"<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ra["format"],1);echo" <input type='submit' name='import' value='".lang(236)."'>","<input type='hidden' name='token' value='$Q'>\n","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($Gb,'strlen'),$f);echo"</form>\n";}}}elseif(isset($_GET["variables"])){$nf=isset($_GET["status"]);page_header($nf?lang(75):lang(74));$mg=($nf?show_status():show_variables());if(!$mg)echo"<p class='message'>".lang(84)."\n";else{echo"<table cellspacing='0'>\n";foreach($mg
|
||
|
as$v=>$W){echo"<tr>","<th><code class='jush-".$u.($nf?"status":"set")."'>".h($v)."</code>","<td>".nbsp($W);}echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$vf=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$O){$q=js_escape($O["Name"]);json_row("Comment-$q",nbsp($O["Comment"]));if(!is_view($O)){foreach(array("Engine","Collation")as$v)json_row("$v-$q",nbsp($O[$v]));foreach($vf+array("Auto_increment"=>0,"Rows"=>0)as$v=>$W){if($O[$v]!=""){$W=number_format($O[$v],0,'.',lang(7));json_row("$v-$q",($v=="Rows"&&$W&&$O["Engine"]==($lf=="pgsql"?"table":"InnoDB")?"~ $W":$W));if(isset($vf[$v]))$vf[$v]+=($O["Engine"]!="InnoDB"||$v!="Data_free"?$O[$v]:0);}elseif(array_key_exists($v,$O))json_row("$v-$q");}}}foreach($vf
|
||
|
as$v=>$W)json_row("sum-$v",number_format($W,0,'.',lang(7)));json_row("");}else{foreach(count_tables($b->databases())as$j=>$W)json_row("tables-".js_escape($j),$W);json_row("");}exit;}else{$Df=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Df&&!$k&&!$_POST["search"]){$E=true;$qd="";if($u=="sql"&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$E=truncate_tables($_POST["tables"]);$qd=lang(237);}elseif($_POST["move"]){$E=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$qd=lang(238);}elseif($_POST["copy"]){$E=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$qd=lang(239);}elseif($_POST["drop"]){if($_POST["views"])$E=drop_views($_POST["views"]);if($E&&$_POST["tables"])$E=drop_tables($_POST["tables"]);$qd=lang(240);}elseif($u!="sql"){$E=($u=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$qd=lang(241);}elseif($_POST["tables"]&&($E=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"]))))){while($G=$E->fetch_assoc())$qd.="<b>".h($G["Table"])."</b>: ".h($G["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$qd,$E);}page_header(($_GET["ns"]==""?lang(24).": ".h(DB):lang(82).": ".h($_GET["ns"])),$k,true);if($b->homepage()){if($_GET["ns"]!==""){echo"<h3>".lang(242)."</h3>\n";$Cf=tables_list();if(!$Cf)echo"<p class='message'>".lang(6)."\n";else{echo"<form action='' method='post'>\n","<p>".lang(243).": <input name='query' value='".h($_POST["query"])."'> <input type='submit' name='search' value='".lang(38)."'>\n";if($_POST["search"]&&$_POST["query"]!="")search_tables();echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);">','<th>'.lang(102),'<td>'.lang(244),'<td>'.lang(78),'<td>'.lang(245),'<td>'.lang(246),'<td>'.lang(247),'<td>'.lang(94),'<td>'.lang(248),(support("comment")?'<td>'.lang(96):''),"</thead>\n";foreach($Cf
|
||
|
as$_=>$S){$og=($S!==null&&!eregi("table",$S));echo'<tr'.odd().'><td>'.checkbox(($og?"views[]":"tables[]"),$_,in_array($_,$Df,true),"","formUncheck('check-all');"),'<th><a href="'.h(ME).'table='.urlencode($_).'" title="'.lang(28).'">'.h($_).'</a>';if($og){echo'<td colspan="6"><a href="'.h(ME)."view=".urlencode($_).'" title="'.lang(29).'">'.lang(101).'</a>','<td align="right"><a href="'.h(ME)."select=".urlencode($_).'" title="'.lang(27).'">?</a>';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",lang(30)),"Index_length"=>array("indexes",lang(105)),"Data_free"=>array("edit",lang(31)),"Auto_increment"=>array("auto_increment=1&create",lang(30)),"Rows"=>array("select",lang(27)),)as$v=>$y)echo($y?"<td align='right'><a href='".h(ME."$y[0]=").urlencode($_)."' id='$v-".h($_)."' title='$y[1]'>?</a>":"<td id='$v-".h($_)."'> ");}echo(support("comment")?"<td id='Comment-".h($_)."'> ":"");}echo"<tr><td> <th>".lang(223,count($Cf)),"<td>".nbsp($u=="sql"?$g->result("SELECT @@storage_engine"):""),"<td>".nbsp(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$v)echo"<td align='right' id='sum-$v'> ";echo"</table>\n","<script type='text/javascript'>tableCheck();</script>\n";if(!information_schema(DB)){echo"<p>".(ereg('^(sql|sqlite|pgsql)$',$u)?($u!="sqlite"?"<input type='submit' value='".lang(249)."'> ":"")."<input type='submit' name='optimize' value='".lang(250)."'> ":"").($u=="sql"?"<input type='submit' name='check' value='".lang(251)."'> <input type='submit' name='repair' value='".lang(252)."'> ":"")."<input type='submit' name='truncate' value='".lang(253)."'".confirm("formChecked(this, /tables/)")."> <input type='submit' name='drop' value='".lang(80)."'".confirm("formChecked(this, /tables|views/)").">\n";$i=(support("scheme")?schemas():$b->databases());if(count($i)!=1&&$u!="sqlite"){$j=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p>".lang(254).": ",($i?html_select("target",$i,$j):'<input name="target" value="'.h($j).'">')," <input type='submit' name='move' value='".lang(255)."'>",(support("copy")?" <input type='submit' name='copy' value='".lang(256)."'>":""),"\n";}echo"<input type='hidden' name='token' value='$Q'>\n";}echo"</form>\n";}echo'<p><a href="'.h(ME).'create=">'.lang(148)."</a>\n";if(support("view"))echo'<a href="'.h(ME).'view=">'.lang(181)."</a>\n";if(support("routine")){echo"<h3>".lang(117)."</h3>\n";$Ve=routines();if($Ve){echo"<table cellspacing='0'>\n",'<thead><tr><th>'.lang(159).'<td>'.lang(91).'<td>'.lang(198)."<td> </thead>\n";odd('');foreach($Ve
|
||
|
as$G){echo'<tr'.odd().'>','<th><a href="'.h(ME).($G["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($G["ROUTINE_NAME"]).'">'.h($G["ROUTINE_NAME"]).'</a>','<td>'.h($G["ROUTINE_TYPE"]),'<td>'.h($G["DTD_IDENTIFIER"]),'<td><a href="'.h(ME).($G["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($G["ROUTINE_NAME"]).'">'.lang(109)."</a>";}echo"</table>\n";}echo'<p>'.(support("procedure")?'<a href="'.h(ME).'procedure=">'.lang(197).'</a> ':'').'<a href="'.h(ME).'function=">'.lang(196)."</a>\n";}if(support("sequence")){echo"<h3>".lang(257)."</h3>\n";$ff=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema()");if($ff){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(159)."</thead>\n";odd('');foreach($ff
|
||
|
as$W)echo"<tr".odd()."><th><a href='".h(ME)."sequence=".urlencode($W)."'>".h($W)."</a>\n";echo"</table>\n";}echo"<p><a href='".h(ME)."sequence='>".lang(203)."</a>\n";}if(support("type")){echo"<h3>".lang(12)."</h3>\n";$T=types();if($T){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(159)."</thead>\n";odd('');foreach($T
|
||
|
as$W)echo"<tr".odd()."><th><a href='".h(ME)."type=".urlencode($W)."'>".h($W)."</a>\n";echo"</table>\n";}echo"<p><a href='".h(ME)."type='>".lang(207)."</a>\n";}if(support("event")){echo"<h3>".lang(118)."</h3>\n";$H=get_rows("SHOW EVENTS");if($H){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(159)."<td>".lang(258)."<td>".lang(187)."<td>".lang(188)."</thead>\n";foreach($H
|
||
|
as$G){echo"<tr>",'<th><a href="'.h(ME).'event='.urlencode($G["Name"]).'">'.h($G["Name"])."</a>","<td>".($G["Execute at"]?lang(259)."<td>".$G["Execute at"]:lang(189)." ".$G["Interval value"]." ".$G["Interval field"]."<td>$G[Starts]"),"<td>$G[Ends]";}echo"</table>\n";$Qb=$g->result("SELECT @@event_scheduler");if($Qb&&$Qb!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($Qb)."\n";}echo'<p><a href="'.h(ME).'event=">'.lang(186)."</a>\n";}if($Cf)echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=db');</script>\n";}}}page_footer();
|