1452 lines
327 KiB
PHP
1452 lines
327 KiB
PHP
|
|
<?php
|
||
|
|
//customization - begin
|
||
|
|
//includes
|
||
|
|
include "root.php";
|
||
|
|
require_once "includes/require.php";
|
||
|
|
require_once "includes/checkauth.php";
|
||
|
|
//only allow users in the superadmin group to use this feature
|
||
|
|
if (if_group("superadmin")) {
|
||
|
|
//echo "access granted";
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
echo "access denied";
|
||
|
|
exit;
|
||
|
|
}
|
||
|
|
//customization - end
|
||
|
|
|
||
|
|
/** 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)
|
||
|
|
*/
|
||
|
|
error_reporting(6135);$_e=(!ereg('^(unsafe_raw)?$',ini_get("filter.default"))||ini_get("filter.default_flags"));if($_e){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$b){$be=filter_input_array(constant("INPUT$b"),FILTER_UNSAFE_RAW);if($be){$$b=$be;}}}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;}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;}tr:hover td,tr:hover th{background:#ddf;}pre{margin:1em 0 0;}.version{color:#777;font-size:67%;}.js .hidden,.nojs .jsonly{display:none;}.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;}.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%;}#menu{position:absolute;margin:10px 0 0;padding:0 0 30px 0;top:2em;left:0;width:19em;overflow:auto;overflow-y:hidden;white-space:nowrap;}#menu p{padding:.8em 1em;margin:0;border-bottom:1px solid #ccc;}#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;}#loader{position:fixed;top:0;left:18em;z-index:1;}#h1{color:#777;text-decoration:none;font-style:italic;}#version{font-size:67%;color:red;}#schema{margin-left:60px;position:relative;}#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 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;}}}
|
||
|
|
function formUncheck(id){document.getElementById(id).checked=false;}
|
||
|
|
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 el=event.target||event.srcElement;while(!/^tr$/i.test(el.tagName)){if(/^(table|a|input|textarea)$/i.test(el.tagName)){return;}
|
||
|
|
el=el.parentNode;}
|
||
|
|
el=el.firstChild.firstChild;el.click&&el.click();el.onclick&&el.onclick();}
|
||
|
|
function setHtml(id,html){var el=document.getElementById(id);if(el){if(html==undefined){el.parentNode.innerHTML=' ';}else{el.innerHTML=html.replace(/<noscript>.*<\/noscript>/i,'');}}}
|
||
|
|
function nodePosition(el){var pos=0;while(el=el.previousSibling){pos++;}
|
||
|
|
return pos;}
|
||
|
|
function pageClick(href,page,event){if(!isNaN(page)&&page){href+=(page!=1?'&page='+(page-1):'');if(!ajaxSend(href)){location.href=href;}}}
|
||
|
|
function selectAddRow(field){field.onchange=function(){};var row=field.parentNode.cloneNode(true);var selects=row.getElementsByTagName('select');for(var i=0;i<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 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 bodyKeydown(event){var target=event.target||event.srcElement;if(event.ctrlKey&&(event.keyCode==13||event.keyCode==10)&&!event.altKey&&!event.metaKey&&/select|textarea/i.test(target.tagName)){target.blur();if((!target.form.onsubmit||target.form.onsubmit()!==false)&&!ajaxForm(target.form)){target.form.submit();}
|
||
|
|
return false;}}
|
||
|
|
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;}
|
||
|
|
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 xmlhttp=(window.XMLHttpRequest?new XMLHttpRequest():(window.ActiveXObject?new ActiveXObject('Microsoft.XMLHTTP'):false));if(xmlhttp){xmlhttp.open((data?'POST':'GET'),url);if(data){xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');}
|
||
|
|
xmlhttp.setRequestHeader('X-Requested-With','XMLHttpRequest');xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4){callback(xmlhttp);}};xmlhttp.send(data);}
|
||
|
|
return xmlhttp;}
|
||
|
|
function ajaxSetHtml(url){return ajax(url,function(xmlhttp){if(xmlhttp.status){var data=eval('('+xmlhttp.responseText+')');for(var key in data){setHtml(key,data[key]);}}});}
|
||
|
|
function replaceFavicon(href){var favicon=document.getElementById('favicon');favicon.href=href;favicon.parentNode.appendChild(favicon);}
|
||
|
|
var ajaxState=0;function ajaxSend(url,data,popState){if(!history.pushState){return false;}
|
||
|
|
var currentState=++ajaxState;onblur=function(){replaceFavicon(location.pathname+'?file=loader.gif&version=3.2.2');};setHtml('loader','<img src="'+location.pathname+'?file=loader.gif&version=3.2.2" alt="">');return ajax(url,function(xmlhttp){if(currentState==ajaxState){var title=xmlhttp.getResponseHeader('X-AJAX-Title');if(title){document.title=decodeURIComponent(title);}
|
||
|
|
var redirect=xmlhttp.getResponseHeader('X-AJAX-Redirect');if(redirect){return ajaxSend(redirect,'',popState);}
|
||
|
|
onblur=function(){};replaceFavicon(location.pathname+'?file=favicon.ico&version=3.2.2');if(!xmlhttp.status){setHtml('loader','');}else{if(!popState){if(data||url!=location.href){history.pushState(data,'',url);}
|
||
|
|
scrollTo(0,0);}
|
||
|
|
setHtml('content',xmlhttp.responseText);var content=document.getElementById('content');var scripts=content.getElementsByTagName('script');var length=scripts.length;for(var i=0;i<length;i++){var script=document.createElement('script');script.text=scripts[i].text;content.appendChild(script);}
|
||
|
|
var as=document.getElementById('menu').getElementsByTagName('a');var href=location.href.replace(/(&(sql=|dump=|(select|table)=[^&]*)).*/,'$1');for(var i=0;i<as.length;i++){if(href==as[i].href){as[i].className='active';}else if(as[i].className=='active'){as[i].className='';}}
|
||
|
|
var dump=document.getElementById('dump');if(dump){var match=/&(select|table)=([^&]+)/.exec(href);dump.href=dump.href.replace(/[^=]+$/,'')+(match?match[2]:'');}
|
||
|
|
if(window.jush){jush.highlight_tag('code',0);}}}},data);}
|
||
|
|
onpopstate=function(event){if(ajaxState||event.state){ajaxSend(location.href,(event.state&&confirm(areYouSure)?event.state:''),1);}else{ajaxState++;}}
|
||
|
|
function ajaxForm(form,data){if(/&(database|scheme|create|view|sql|user|dump|call)=/.test(location.href)&&!/\./.test(data)){return false;}
|
||
|
|
var params=[];for(var i=0;i<form.elements.length;i++){var el=form.elements[i];if(/file/i.test(el.type)&&el.value){return false;}else if(el.name&&(!/checkbox|radio|submit|file/i.test(el.type)||el.checked)){params.push(encodeURIComponent(el.name)+'='+encodeURIComponent(/select/i.test(el.tagName)?selectValue(el):el.value));}}
|
||
|
|
if(data){params.push(data);}
|
||
|
|
if(form.method=='post'){return ajaxSend((/\?/.test(form.action)?form.action:location.href),params.join('&'));}
|
||
|
|
return ajaxSend((form.action||location.href).replace(/\?.*/,'')+'?'+params.join('&'));}
|
||
|
|
function selectDblClick(td,event,text){td.ondblclick=function(){};var pos=event.rangeOffset;var value=(td.firstChild.alt?td.firstChild.alt:(td.textContent?td.textContent:td.innerText));var input=document.createElement(text?'textarea':'input');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(xmlhttp){if(xmlhttp.status){input.value=xmlhttp.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 bodyClick(event,db,ns){if(event.button||event.ctrlKey||event.shiftKey||event.altKey||event.metaKey){return;}
|
||
|
|
if(event.getPreventDefault?event.getPreventDefault():event.returnValue===false){return false;}
|
||
|
|
var el=event.target||event.srcElement;if(/^a$/i.test(el.parentNode.tagName)){el=el.parentNode;}
|
||
|
|
if(/^a$/i.test(el.tagName)&&!/^:|#|&download=/i.test(el.getAttribute('href'))&&/[&?]username=/.test(el.href)){var match=/&db=([^&]*)/.exec(el.href);var match2=/&ns=([^&]*)/.exec(el.href);return!(db==(match?match[1]:'')&&ns==(match2?match2[1]:'')&&ajaxSend(el.href));}
|
||
|
|
if(/^input$/i.test(el.tagName)&&/image|submit/.test(el.type)){return!ajaxForm(el.form,(el.name?encodeURIComponent(el.name)+(el.type=='image'?'.x':'')+'=1':''));}
|
||
|
|
return true;}
|
||
|
|
function eventStop(event){if(event.stopPropagation){event.stopPropagation();}else{event.cancelBubble=true;}}
|
||
|
|
var jushRoot=location.protocol + '//www.adminer.org/static/';function bodyLoad(version){if(history.state!==undefined){onpopstate(history);}
|
||
|
|
if(jushRoot){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';jush.style(jushRoot+'jush.css');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=driver.parentNode.parentNode.parentNode.rows;for(var i=1;i<trs.length;i++){trs[i].className=(/sqlite/.test(driver.value)?'hidden':'');}}
|
||
|
|
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=button.parentNode.parentNode;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);button.parentNode.parentNode.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=el.parentNode.parentNode.cloneNode(true);row.firstChild.firstChild.value='';el.parentNode.parentNode.parentNode.appendChild(row);el.onchange=function(){};}
|
||
|
|
function foreignAddRow(field){field.onchange=function(){};var row=field.parentNode.parentNode.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;}
|
||
|
|
field.parentNode.parentNode.parentNode.appendChild(row);}
|
||
|
|
function indexesAddRow(field){field.onchange=function(){};var row=field.parentNode.parentNode.cloneNode(true);var spans=row.getElementsByTagName('span');for(var i=0;i<spans.length-1;i++){row.removeChild(spans[i]);}
|
||
|
|
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 input=row.getElementsByTagName('input')[0];input.name=input.name.replace(/indexes\[\d+/,'$&1');input.value='';field.parentNode.parentNode.parentNode.appendChild(row);}
|
||
|
|
function indexesAddColumn(field){field.onchange=function(){};var column=field.parentNode.cloneNode(true);var 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='';field.parentNode.parentNode.appendChild(column);select=field.form[field.name.replace(/\].*/,'][type]')];if(!select.selectedIndex){select.selectedIndex=3;}}
|
||
|
|
var that,x,y,em,tablePos;function schemaMousedown(el,event){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((divs[i].id.substr(0,4)=='refs'?'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 isTop=true;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';isTop=(div2.offsetTop+ref[0]*em>divs[i].offsetTop+top*em);}
|
||
|
|
if(!lineSet[id]){var line=document.getElementById(divs[i].id.replace(/^....(.+)-\d+$/,'refl$1'));var shift=ev.clientY-y-that.offsetTop;line.style.left=(left+left1)+'em';if(isTop){line.style.top=(line.offsetTop+shift)/em+'em';}
|
||
|
|
if(divs[i].parentNode!=div2.parentNode){line=line.getElementsByTagName('div')[0];line.style.height=(line.offsetHeight+(isTop?-1:1)*shift)/em+'em';}
|
||
|
|
lineSet[id]=true;}}}
|
||
|
|
that.style.left=left+'em';that.style.top=top+'em';}}
|
||
|
|
function schemaMouseup(ev,db){if(that!==undefined){ev=ev||event;tablePos[that.firstChild.firstChild.firstChild.data]=[(ev.clientY-y)/em,(ev.clientX-x)/em];that=undefined;var s='';for(var key in tablePos){s+='_'+key+':'+Math.round(tablePos[key][0]*10000)/10000+'x'+Math.round(tablePos[key][1]*10000)/10000;}
|
||
|
|
s=encodeURIComponent(s.substr(1));var link=document.getElementById('schema-link');link.href=link.href.replace(/[^=]+$/,'')+s;cookie('adminer_schema-'+db+'='+s,30);}}<?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;case"loader.gif":echo
|
||
|
|
base64_decode("R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==");break;}}exit;}function
|
||
|
|
connection(){global$g;return$g;}function
|
||
|
|
idf_unescape($N){$xb=substr($N,-1);return
|
||
|
|
str_replace($xb.$xb,$xb,substr($N,1,-1));}function
|
||
|
|
escape_string($b){return
|
||
|
|
substr(q($b),1,-1);}function
|
||
|
|
remove_slashes($ub){if(get_magic_quotes_gpc()){while(list($d,$b)=each($ub)){foreach($b
|
||
|
|
as$Ma=>$y){unset($ub[$d][$Ma]);if(is_array($y)){$ub[$d][stripslashes($Ma)]=$y;$ub[]=&$ub[$d][stripslashes($Ma)];}else{$ub[$d][stripslashes($Ma)]=($_e?$y:stripslashes($y));}}}}}function
|
||
|
|
bracket_escape($N,$pf=false){static$Xd=array(':'=>':1',']'=>':2','['=>':3');return
|
||
|
|
strtr($N,($pf?array_flip($Xd):$Xd));}function
|
||
|
|
h($I){return
|
||
|
|
htmlspecialchars($I,ENT_QUOTES);}function
|
||
|
|
nbsp($I){return(trim($I)!=""?h($I):" ");}function
|
||
|
|
nl_br($I){return
|
||
|
|
str_replace("\n","<br>",$I);}function
|
||
|
|
checkbox($f,$q,$ab,$Ud="",$ae=""){static$S=0;$S++;$c="<input type='checkbox'".($f?" name='$f' value='".h($q)."'":" class='jsonly'").($ab?" checked":"").($ae?" onclick=\"$ae\"":"")." id='checkbox-$S'>";return($Ud!=""?"<label for='checkbox-$S'>$c".h($Ud)."</label>":$c);}function
|
||
|
|
optionlist($Wc,$Mf=null,$oe=false){$c="";foreach($Wc
|
||
|
|
as$Ma=>$y){$ge=array($Ma=>$y);if(is_array($y)){$c.='<optgroup label="'.h($Ma).'">';$ge=$y;}foreach($ge
|
||
|
|
as$d=>$b){$c.='<option'.($oe||is_string($d)?' value="'.h($d).'"':'').(($oe||is_string($d)?(string)$d:$b)===$Mf?' selected':'').'>'.h($b);}if(is_array($y)){$c.='</optgroup>';}}return$c;}function
|
||
|
|
adminer_html_select($f,$Wc,$q="",$Qb=true){if($Qb){return"<select name='".h($f)."'".(is_string($Qb)?" onchange=\"$Qb\"":"").">".optionlist($Wc,$q)."</select>";}$c="";foreach($Wc
|
||
|
|
as$d=>$b){$c.="<label><input type='radio' name='".h($f)."' value='".h($d)."'".($d==$q?" checked":"").">".h($b)."</label>";}return$c;}function
|
||
|
|
confirm($Qc="",$Sf=false){return" onclick=\"".($Sf?"eventStop(event); ":"")."return confirm('".lang(0).($Qc?" (' + $Qc + ')":"")."');\"";}function
|
||
|
|
js_escape($I){return
|
||
|
|
addcslashes($I,"\r\n'\\/");}function
|
||
|
|
ini_bool($Rf){$b=ini_get($Rf);return(eregi('^(on|true|yes)$',$b)||(int)$b);}function
|
||
|
|
sid(){static$c;if(!isset($c)){$c=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));}return$c;}function
|
||
|
|
q($I){global$g;return$g->quote($I);}function
|
||
|
|
get_vals($j,$C=0){global$g;$c=array();$i=$g->query($j);if(is_object($i)){while($a=$i->fetch_row()){$c[]=$a[$C];}}return$c;}function
|
||
|
|
get_key_vals($j,$G=null){global$g;if(!is_object($G)){$G=$g;}$c=array();$i=$G->query($j);if(is_object($i)){while($a=$i->fetch_row()){$c[$a[0]]=$a[1];}}return$c;}function
|
||
|
|
get_rows($j,$G=null,$n="<p class='error'>"){global$g;if(!is_object($G)){$G=$g;}$c=array();$i=$G->query($j);if(is_object($i)){while($a=$i->fetch_assoc()){$c[]=$a;}}elseif(!$i&&$g->error&&$n&&defined("PAGE_HEADER")){echo$n.error()."\n";}return$c;}function
|
||
|
|
unique_array($a,$J){foreach($J
|
||
|
|
as$x){if(ereg("PRIMARY|UNIQUE",$x["type"])){$c=array();foreach($x["columns"]as$d){if(!isset($a[$d])){continue
|
||
|
|
2;}$c[$d]=$a[$d];}return$c;}}$c=array();foreach($a
|
||
|
|
as$d=>$b){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$d)){$c[$d]=$b;}}return$c;}function
|
||
|
|
where($s){global$v;$c=array();foreach((array)$s["where"]as$d=>$b){$c[]=idf_escape(bracket_escape($d,1)).(ereg('\\.',$b)||$v=="mssql"?" LIKE ".exact_value(addcslashes($b,"%_")):" = ".exact_value($b));}foreach((array)$s["null"]as$d){$c[]=idf_escape($d)." IS NULL";}return
|
||
|
|
implode(" AND ",$c);}function
|
||
|
|
where_check($b){parse_str($b,$fe);remove_slashes(array(&$fe));return
|
||
|
|
where($fe);}function
|
||
|
|
where_link($l,$C,$q,$If="="){return"&where%5B$l%5D%5Bcol%5D=".urlencode($C)."&where%5B$l%5D%5Bop%5D=".urlencode((isset($q)?$If:"IS NULL"))."&where%5B$l%5D%5Bval%5D=".urlencode($q);}function
|
||
|
|
cookie($f,$q){global$Ac;$xc=array($f,(ereg("\n",$q)?"":$q),time()+2592000,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$Ac);if(version_compare(PHP_VERSION,'5.2.0')>=0){$xc[]=true;}return
|
||
|
|
call_user_func_array('setcookie',$xc);}function
|
||
|
|
restart_session(){if(!ini_bool("session.use_cookies")){session_start();}}function&get_session($d){return$_SESSION[$d][DRIVER][SERVER][$_GET["username"]];}function
|
||
|
|
set_session($d,$b){$_SESSION[$d][DRIVER][SERVER][$_GET["username"]]=$b;}function
|
||
|
|
auth_url($Ib,$F,$P){global$na;preg_match('~([^?]*)\\??(.*)~',remove_from_uri(implode("|",array_keys($na))."|username|".session_name()),$k);return"$k[1]?".(sid()?SID."&":"").($Ib!="server"||$F!=""?urlencode($Ib)."=".urlencode($F)."&":"")."username=".urlencode($P).($k[2]?"&$k[2]":"");}function
|
||
|
|
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
|
||
|
|
redirect($ga,$va=null){if(isset($va)){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',(isset($ga)?$ga:$_SERVER["REQUEST_URI"]))][]=$va;}if(isset($ga)){if($ga==""){$ga=".";}header((is_ajax()?"X-AJAX-Redirect":"Location").": $ga");exit;}}function
|
||
|
|
query_redirect($j,$ga,$va,$fd=true,$Ef=true,$bf=false){global$g,$n,$o;if($Ef){$bf=!$g->query($j);}$xd="";if($j){$xd=$o->messageQuery("$j;");}if($bf){$n=error().$xd;return
|
||
|
|
false;}if($fd){redirect($ga,$va.$xd);}return
|
||
|
|
true;}function
|
||
|
|
queries($j=null){global$g;static$jb=array();if(!isset($j)){return
|
||
|
|
implode(";\n",$jb);}$jb[]=(ereg(';$',$j)?"DELIMITER ;;\n$j;\nDELIMITER ":$j);return$g->query($j);}function
|
||
|
|
apply_queries($j,$E,$Df='table'){foreach($E
|
||
|
|
as$h){if(!queries("$j ".$Df($h))){return
|
||
|
|
false;}}return
|
||
|
|
true;}function
|
||
|
|
queries_redirect($ga,$va,$fd){return
|
||
|
|
query_redirect(queries(),$ga,$va,$fd,false,!$fd);}function
|
||
|
|
remove_from_uri($Za=""){return
|
||
|
|
substr(preg_replace("~(?<=[?&])($Za".(SID?"":"|".session_name()).")=[^&]*&~",'',"$_SERVER[REQUEST_URI]&"),0,-1);}function
|
||
|
|
pagination($ca,$zf){return" ".($ca==$zf?$ca+1:'<a href="'.h(remove_from_uri("page").($ca?"&page=$ca":"")).'">'.($ca+1)."</a>");}function
|
||
|
|
get_file($d,$sd=false){$Ia=$_FILES[$d];if(!$Ia||$Ia["error"]){return$Ia["error"];}$c=file_get_contents($sd&&ereg('\\.gz$',$Ia["name"])?"compress.zlib://$Ia[tmp_name]":($sd&&ereg('\\.bz2$',$Ia["name"])?"compress.bzip2://$Ia[tmp_name]":$Ia["tmp_name"]));if($sd){$Fb=substr($c,0,3);if(function_exists("iconv")&&ereg("^\xFE\xFF|^\xFF\xFE",$Fb,$Xf)){$c=iconv("utf-16","utf-8",$c);}elseif($Fb=="\xEF\xBB\xBF"){$c=substr($c,3);}}return$c;}function
|
||
|
|
upload_error($n){$gf=($n==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):null);return($n?lang(1).($gf?" ".lang(2,$gf):""):lang(3));}function
|
||
|
|
odd($c=' class="odd"'){static$l=0;if(!$c){$l=-1;}return($l++%
|
||
|
|
2?$c:'');}function
|
||
|
|
json_row($d,$b=null){static$Ba=true;if($Ba){echo"{";}if($d!=""){echo($Ba?"":",")."\n\t\"".addcslashes($d,"\r\n\"\\").'": '.(isset($b)?'"'.addcslashes($b,"\r\n\"\\").'"':'undefined');$Ba=false;}else{echo"\n}\n";$Ba=true;}}function
|
||
|
|
is_utf8($b){return(preg_match('~~u',$b)&&!preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~',$b));}function
|
||
|
|
repeat_pattern($ba,$W){return
|
||
|
|
str_repeat("$ba{0,65535}",$W/65535)."$ba{0,".($W
|
||
|
|
%
|
||
|
|
65535)."}";}function
|
||
|
|
shorten_utf8($I,$W=80,$Af=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{FFFF}]",$W).")($)?)u",$I,$k)){preg_match("(^(".repeat_pattern("[\t\r\n -~]",$W).")($)?)",$I,$k);}return
|
||
|
|
h($k[1]).$Af.(isset($k[2])?"":"<i>...</i>");}function
|
||
|
|
friendly_url($b){return
|
||
|
|
preg_replace('~[^a-z0-9_]~i','-',$b);}function
|
||
|
|
hidden_fields($ub,$Qf=array()){while(list($d,$b)=each($ub)){if(is_array($b)){foreach($b
|
||
|
|
as$Ma=>$y){$ub[$d."[$Ma]"]=$y;}}elseif(!in_array($d,$Qf)){echo'<input type="hidden" name="'.h($d).'" value="'.h($b).'">';}}}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($h){global$o;$c=array();foreach($o->foreignKeys($h)as$A){foreach($A["source"]as$b){$c[$b][]=$A;}}return$c;}function
|
||
|
|
enum_input($z,$Ra,$e,$q,$hc=null){global$o;preg_match_all("~'((?:[^']|'')*)'~",$e["length"],$oa);$c=(isset($hc)?"<label><input type='$z'$Ra value='$hc'".((is_array($q)?in_array($hc,$q):$q===0)?" checked":"")."><i>".lang(4)."</i></label>":"");foreach($oa[1]as$l=>$b){$b=stripcslashes(str_replace("''","'",$b));$ab=(is_int($q)?$q==$l+1:(is_array($q)?in_array($l+1,$q):$q===$b));$c.=" <label><input type='$z'$Ra value='".($l+1)."'".($ab?' checked':'').'>'.h($o->editVal($b,$e)).'</label>';}return$c;}function
|
||
|
|
input($e,$q,$K){global$R,$o,$v;$f=h(bracket_escape($e["field"]));echo"<td class='function'>";$De=($v=="mssql"&&$e["auto_increment"]);if($De&&!$_POST["save"]){$K=null;}$da=(isset($_GET["select"])||$De?array("orig"=>lang(5)):array())+$o->editFunctions($e);$Ra=" name='fields[$f]'";if($e["type"]=="enum"){echo
|
||
|
|
nbsp($da[""])."<td>".$o->editInput($_GET["edit"],$e,$Ra,$q);}else{$Ba=0;foreach($da
|
||
|
|
as$d=>$b){if($d===""||!$b){break;}$Ba++;}$Qb=($Ba?" onchange=\"var f = this.form['function[".js_escape($f)."]']; if ($Ba > f.selectedIndex) f.selectedIndex = $Ba;\"":"");$Ra.=$Qb;echo(count($da)>1?adminer_html_select("function[$f]",$da,!isset($K)||in_array($K,$da)||isset($da[$K])?$K:"","functionChange(this);"):nbsp(reset($da))).'<td>';$Ae=$o->editInput($_GET["edit"],$e,$Ra,$q);if($Ae!=""){echo$Ae;}elseif($e["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$e["length"],$oa);foreach($oa[1]as$l=>$b){$b=stripcslashes(str_replace("''","'",$b));$ab=(is_int($q)?($q>>$l)&1:in_array($b,explode(",",$q),true));echo" <label><input type='checkbox' name='fields[$f][$l]' value='".(1<<$l)."'".($ab?' checked':'')."$Qb>".h($o->editVal($b,$e)).'</label>';}}elseif(ereg('blob|bytea|raw|file',$e["type"])&&ini_bool("file_uploads")){echo"<input type='file' name='fields-$f'$Qb>";}elseif(ereg('text|lob',$e["type"])){echo"<textarea ".($v!="sqlite"||ereg("\n",$q)?"cols='50' rows='12'":"cols='30' rows='1' style='height: 1.2em;'")."$Ra>".h($q).'</textarea>';}else{$nd=(!ereg('int',$e["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$e["length"],$k)?((ereg("binary",$e["type"])?2:1)*$k[1]+($k[3]?1:0)+($k[2]&&!$e["unsigned"]?1:0)):($R[$e["type"]]?$R[$e["type"]]+($e["unsigned"]?0:1):0));echo"<input value='".h($q)."'".($nd?" maxlength='$nd'":"").(ereg('char|binary',$e["type"])&&$nd>20?" size='40'":"")."$Ra>";}}}function
|
||
|
|
process_input($e){global$o;$N=bracket_escape($e["field"]);$K=$_POST["function"][$N];$q=$_POST["fields"][$N];if($e["type"]=="enum"){if($q==-1){return
|
||
|
|
false;}if($q==""){return"NULL";}return+$q;}if($e["auto_increment"]&&$q==""){return
|
||
|
|
null;}if($K=="orig"){return
|
||
|
|
false;}if($K=="NULL"){return"NULL";}if($e["type"]=="set"){return
|
||
|
|
array_sum((array)$q);}if(ereg('blob|bytea|raw|file',$e["type"])&&ini_bool("file_uploads")){$Ia=get_file("fields-$N");if(!is_string($Ia)){return
|
||
|
|
false;}return
|
||
|
|
q($Ia);}return$o->processInput($e,$q,$K);}function
|
||
|
|
search_tables(){global$o,$g;$_GET["where"][0]["op"]="LIKE %%";$_GET["where"][0]["val"]=$_POST["query"];$ta=false;foreach(table_status()as$h=>$D){$f=$o->tableName($D);if(isset($D["Engine"])&&$f!=""&&(!$_POST["tables"]||in_array($h,$_POST["tables"]))){$i=$g->query("SELECT".limit("1 FROM ".table($h)," WHERE ".implode(" AND ",$o->selectSearchProcess(fields($h),array())),1));if($i->fetch_row()){if(!$ta){echo"<ul>\n";$ta=true;}echo"<li><a href='".h(ME."select=".urlencode($h)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$f</a>\n";}}}echo($ta?"</ul>":"<p class='message'>".lang(6))."\n";}function
|
||
|
|
dump_headers($Sc,$_d=false){global$o;$c=$o->dumpHeaders($Sc,$_d);$Na=$_POST["output"];if($Na!="text"){header("Content-Disposition: attachment; filename=".($Sc!=""?friendly_url($Sc):"dump").".$c".($Na!="file"&&!ereg('[^0-9a-z]',$Na)?".$Na":""));}session_write_close();return$c;}function
|
||
|
|
dump_csv($a){foreach($a
|
||
|
|
as$d=>$b){if(preg_match("~[\"\n,;\t]~",$b)||$b===""){$a[$d]='"'.str_replace('"','""',$b).'"';}}echo
|
||
|
|
implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$a)."\r\n";}function
|
||
|
|
apply_sql_function($K,$C){return($K?($K=="unixepoch"?"DATETIME($C, '$K')":($K=="count distinct"?"COUNT(DISTINCT ":strtoupper("$K("))."$C)"):$C);}function
|
||
|
|
password_file(){$Rc=ini_get("upload_tmp_dir");if(!$Rc){if(function_exists('sys_get_temp_dir')){$Rc=sys_get_temp_dir();}else{$ja=@tempnam("","");if(!$ja){return
|
||
|
|
false;}$Rc=dirname($ja);unlink($ja);}}$ja="$Rc/adminer.key";$c=@file_get_contents($ja);if($c){return$c;}$Pa=@fopen($ja,"w");if($Pa){$c=md5(uniqid(mt_rand(),true));fwrite($Pa,$c);fclose($Pa);}return$c;}function
|
||
|
|
is_mail($xf){$Ne='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$vc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$ba="$Ne+(\\.$Ne+)*@($vc?\\.)+$vc";return
|
||
|
|
preg_match("(^$ba(,\\s*$ba)*\$)i",$xf);}function
|
||
|
|
is_url($I){$vc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return(preg_match("~^(https?)://($vc?\\.)+$vc(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$I,$k)?strtolower($k[1]):"");}function
|
||
|
|
print_fieldset($S,$Of,$Kf=false){echo"<fieldset><legend><a href='#fieldset-$S' onclick=\"return !toggle('fieldset-$S');\">$Of</a></legend><div id='fieldset-$S'".($Kf?"":" class='hidden'").">\n";}function
|
||
|
|
bold($Lf){return($Lf?" class='active'":"");}global$o,$g,$na,$Nb,$Gb,$n,$da,$lb,$Ac,$jc,$v,$ua,$Lb,$fb,$La,$M,$Y,$R,$ob,$tc;if(!isset($_SERVER["REQUEST_URI"])){$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"].($_SERVER["QUERY_STRING"]!=""?"?$_SERVER[QUERY_STRING]":"");}$Ac=$_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off");@ini_set("session.use_trans_sid",false);if(!defined("SID")){session_name("adminer_sid");$xc=array(0,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$Ac);if(version_compare(PHP_VERSION,'5.2.0')>=0){$xc[]=true;}call_user_func_array('session_set_cookie_params',$xc);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE));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);$Lb=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','tr'=>'Türkçe','ru'=>'Русский язык','zh'=>'简体中文','zh-tw'=>'繁體中文','ja'=>'日本語','ta'=>'தமிழ்','ar'=>'العربية',);function
|
||
|
|
get_lang(){global$ua;return$ua;}function
|
||
|
|
lang($N,$lc=null){global$ua,$Y;$kc=$Y[$N];if(is_array($kc)&&$kc){$uc=($lc==1||(!$lc&&$ua=='fr')?0:($ua=='sl'&&(!$lc||$lc>2)?1:0)+((!$lc||$lc>=5)&&ereg('cs|sk|ru|sl|pl',$ua)?2:1));$kc=$kc[$uc];}$Be=func_get_args();array_shift($Be);return
|
||
|
|
vsprintf((isset($kc)?$kc:$N),$Be);}function
|
||
|
|
switch_lang(){global$ua,$Lb;echo"<form action=''>\n<div id='lang'>";hidden_fields($_GET,array('lang'));echo
|
||
|
|
lang(7).": ".adminer_html_select("lang",$Lb,$ua,"var loc = location.search.replace(/[?&]lang=[^&]*/, ''); location.search = loc + (loc ? '&' : '') + 'lang=' + this.value;")," <input type='submit' value='".lang(8)."' class='hidden'>\n","</div>\n</form>\n";}if(isset($_GET["lang"])){$_COOKIE["adminer_lang"]=$_GET["lang"];$_SESSION["lang"]=$_GET["lang"];}$ua="en";if(isset($Lb[$_COOKIE["adminer_lang"]])){cookie("adminer_lang",$_COOKIE["adminer_lang"]);$ua=$_COOKIE["adminer_lang"];}elseif(isset($Lb[$_SESSION["lang"]])){$ua=$_SESSION["lang"];}else{$cd=array();preg_match_all('~([-a-z]+)(;q=([0-9.]+))?~',str_replace("_","-",strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"])),$oa,PREG_SET_ORDER);foreach($oa
|
||
|
|
as$k){$cd[$k[1]]=(isset($k[3])?$k[3]:1);}arsort($cd);foreach($cd
|
||
|
|
as$d=>$aa){if(isset($Lb[$d])){$ua=$d;break;}$d=preg_replace('~-.*~','',$d);if(!isset($cd[$d])&&isset($Lb[$d])){$ua=$d;break;}}}switch($ua){case"en":$Y=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','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','SQL command','open','save','Alter database','Alter schema','Create schema','Dump','Logout','database','schema','Create new table','select','ltr','Resend POST data?','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.','Database','Invalid database.','Databases have been dropped.','Select database','Create new database','Privileges','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','Database schema','Permanent link','Export','Output','Format','Routines','Events','Data','edit','Create user',array('Query executed OK, %d row affected.','Query executed OK, %d rows affected.'),array('%d row','%d rows'),'Error in query','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)','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','Name','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'
|
||
|
|
Min_PDO
|
||
|
|
extends
|
||
|
|
PDO{var$_result,$server_info,$affected_rows,$error;function
|
||
|
|
__construct(){}function
|
||
|
|
dsn($lf,$P,$T,$of='auth_error'){set_exception_handler($of);parent::__construct($lf,$P,$T);restore_exception_handler();$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=$this->getAttribute(4);}function
|
||
|
|
query($j,$db=false){$i=parent::query($j);if(!$i){$nf=$this->errorInfo();$this->error=$nf[2];return
|
||
|
|
false;}$this->store_result($i);return$i;}function
|
||
|
|
multi_query($j){return$this->_result=$this->query($j);}function
|
||
|
|
store_result($i=null){if(!$i){$i=$this->_result;}if($i->columnCount()){$i->num_rows=$i->rowCount();return$i;}$this->affected_rows=$i->rowCount();return
|
||
|
|
true;}function
|
||
|
|
next_result(){return$this->_result->nextRowset();}function
|
||
|
|
result($j,$e=0){$i=$this->query($j);if(!$i){return
|
||
|
|
false;}$a=$i->fetch();return$a[$e];}}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(){$a=(object)$this->getColumnMeta($this->_offset++);$a->orgtable=$a->table;$a->orgname=$a->name;$a->charsetnr=(in_array("blob",$a->flags)?63:0);return$a;}}}$na=array();$na["sqlite"]="SQLite 3";$na["sqlite2"]="SQLite 2";if(isset($_GET["sqlite"])||isset($_GET["sqlite2"])){$oc=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($ja){$this->_link=new
|
||
|
|
SQLite3($ja);$Kd=$this->_link->version();$this->server_info=$Kd["versionString"];}function
|
||
|
|
query($j){$i=@$this->_link->query($j);if(!$i){$this->error=$this->_link->lastErrorMsg();return
|
||
|
|
false;}elseif($i->numColumns()){return
|
||
|
|
new
|
||
|
|
Min_Result($i);}$this->affected_rows=$this->_link->changes();return
|
||
|
|
true;}function
|
||
|
|
quote($I){return"'".$this->_link->escapeString($I)."'";}function
|
||
|
|
store_result(){return$this->_result;}function
|
||
|
|
result($j,$e=0){$i=$this->query($j);if(!is_object($i)){return
|
||
|
|
false;}$a=$i->_result->fetchArray();return$a[$e];}}class
|
||
|
|
Min_Result{var$_result,$_offset=0,$num_rows;function
|
||
|
|
Min_Result($i){$this->_result=$i;}function
|
||
|
|
fetch_assoc(){return$this->_result->fetchArray(SQLITE3_ASSOC);}function
|
||
|
|
fetch_row(){return$this->_result->fetchArray(SQLITE3_NUM);}function
|
||
|
|
fetch_field(){$C=$this->_offset++;$z=$this->_result->columnType($C);return(object)array("name"=>$this->_result->columnName($C),"type"=>$z,"charsetnr"=>($z==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($ja){$this->server_info=sqlite_libversion();$this->_link=new
|
||
|
|
SQLiteDatabase($ja);}function
|
||
|
|
query($j,$db=false){$qf=($db?"unbufferedQuery":"query");$i=@$this->_link->$qf($j,SQLITE_BOTH,$n);if(!$i){$this->error=$n;return
|
||
|
|
false;}elseif($i===true){$this->affected_rows=$this->changes();return
|
||
|
|
true;}return
|
||
|
|
new
|
||
|
|
Min_Result($i);}function
|
||
|
|
quote($I){return"'".sqlite_escape_string($I)."'";}function
|
||
|
|
store_result(){return$this->_result;}function
|
||
|
|
result($j,$e=0){$i=$this->query($j);if(!is_object($i)){return
|
||
|
|
false;}$a=$i->_result->fetch();return$a[$e];}}class
|
||
|
|
Min_Result{var$_result,$_offset=0,$num_rows;function
|
||
|
|
Min_Result($i){$this->_result=$i;if(method_exists($i,'numRows')){$this->num_rows=$i->numRows();}}function
|
||
|
|
fetch_assoc(){$a=$this->_result->fetch(SQLITE_ASSOC);if(!$a){return
|
||
|
|
false;}$c=array();foreach($a
|
||
|
|
as$d=>$b){$c[($d[0]=='"'?idf_unescape($d):$d)]=$b;}return$c;}function
|
||
|
|
fetch_row(){return$this->_result->fetch(SQLITE_NUM);}function
|
||
|
|
fetch_field(){$f=$this->_result->fieldName($this->_offset++);$ba='(\\[.*]|"(?:[^"]|"")*"|(.+))';if(preg_match("~^($ba\\.)?$ba\$~",$f,$k)){$h=($k[3]!=""?$k[3]:idf_unescape($k[2]));$f=($k[5]!=""?$k[5]:idf_unescape($k[4]));}return(object)array("name"=>$f,"orgname"=>$f,"orgtable"=>$h,);}}}}elseif(extension_loaded("pdo_sqlite")){class
|
||
|
|
Min_SQLite
|
||
|
|
extends
|
||
|
|
Min_PDO{var$extension="PDO_SQLite";function
|
||
|
|
Min_SQLite($ja){$this->dsn(DRIVER.":$ja","","");}}}if(class_exists("Min_SQLite")){class
|
||
|
|
Min_DB
|
||
|
|
extends
|
||
|
|
Min_SQLite{function
|
||
|
|
Min_DB(){$this->Min_SQLite(":memory:");}function
|
||
|
|
select_db($ja){if(is_readable($ja)&&$this->query("ATTACH ".$this->quote(ereg("(^[/\\]|:)",$ja)?$ja:dirname($_SERVER["SCRIPT_FILENAME"])."/$ja")." AS a")){$this->Min_SQLite($ja);return
|
||
|
|
true;}return
|
||
|
|
false;}function
|
||
|
|
multi_query($j){return$this->_result=$this->query($j);}function
|
||
|
|
next_result(){return
|
||
|
|
false;}}}function
|
||
|
|
idf_escape($N){return'"'.str_replace('"','""',$N).'"';}function
|
||
|
|
table($N){return
|
||
|
|
idf_escape($N);}function
|
||
|
|
connect(){return
|
||
|
|
new
|
||
|
|
Min_DB;}function
|
||
|
|
get_databases(){return
|
||
|
|
array();}function
|
||
|
|
limit($j,$s,$O,$L=0,$Wa=" "){return" $j$s".(isset($O)?$Wa."LIMIT $O".($L?" OFFSET $L":""):"");}function
|
||
|
|
limit1($j,$s){global$g;return($g->result("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($j,$s,1):" $j$s");}function
|
||
|
|
db_collation($t,$Z){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($_){return
|
||
|
|
array();}function
|
||
|
|
table_status($f=""){$c=array();foreach(get_rows("SELECT name AS Name, type AS Engine FROM sqlite_master WHERE type IN ('table', 'view')".($f!=""?" AND name = ".q($f):""))as$a){$a["Auto_increment"]="";$c[$a["Name"]]=$a;}foreach(get_rows("SELECT * FROM sqlite_sequence",null,"")as$a){$c[$a["name"]]["Auto_increment"]=$a["seq"];}return($f!=""?$c[$f]:$c);}function
|
||
|
|
is_view($D){return$D["Engine"]=="view";}function
|
||
|
|
fk_support($D){global$g;return!$g->result("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function
|
||
|
|
fields($h){$c=array();foreach(get_rows("PRAGMA table_info(".table($h).")")as$a){$z=strtolower($a["type"]);$za=$a["dflt_value"];$c[$a["name"]]=array("field"=>$a["name"],"type"=>(eregi("int",$z)?"integer":(eregi("char|clob|text",$z)?"text":(eregi("blob",$z)?"blob":(eregi("real|floa|doub",$z)?"real":"numeric")))),"full_type"=>$z,"default"=>(ereg("'(.*)'",$za,$k)?str_replace("''","'",$k[1]):($za=="NULL"?null:$za)),"null"=>!$a["notnull"],"auto_increment"=>eregi('^integer$',$z)&&$a["pk"],"privileges"=>array("select"=>1,"insert"=>1,"update"=>1),"primary"=>$a["pk"],);}return$c;}function
|
||
|
|
indexes($h,$G=null){$c=array();$Qa=array();foreach(fields($h)as$e){if($e["primary"]){$Qa[]=$e["field"];}}if($Qa){$c[""]=array("type"=>"PRIMARY","columns"=>$Qa,"lengths"=>array());}foreach(get_rows("PRAGMA index_list(".table($h).")")as$a){$c[$a["name"]]["type"]=($a["unique"]?"UNIQUE":"INDEX");$c[$a["name"]]["lengths"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($a["name"]).")")as$dd){$c[$a["name"]]["columns"][]=$dd["name"];}}return$c;}function
|
||
|
|
foreign_keys($h){$c=array();foreach(get_rows("PRAGMA foreign_key_list(".table($h).")")as$a){$A=&$c[$a["id"]];if(!$A){$A=$a;}$A["source"][]=$a["from"];$A["target"][]=$a["to"];}return$c;}function
|
||
|
|
view($f){global$g;return
|
||
|
|
array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\\s+~iU','',$g->result("SELECT sql FROM sqlite_master WHERE name = ".q($f))));}function
|
||
|
|
collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function
|
||
|
|
information_schema($t){return
|
||
|
|
false;}function
|
||
|
|
error(){global$g;return
|
||
|
|
h($g->error);}function
|
||
|
|
exact_value($b){return
|
||
|
|
q($b);}function
|
||
|
|
check_sqlite_name($f){global$g;$Re="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($Re)\$~",$f)){$g->error=lang(9,str_replace("|",", ",$Re));return
|
||
|
|
false;}return
|
||
|
|
true;}function
|
||
|
|
create_database($t,$U){global$g;if(file_exists($t)){$g->error=lang(10);return
|
||
|
|
false;}if(!check_sqlite_name($t)){return
|
||
|
|
false;}$w=new
|
||
|
|
Min_SQLite($t);$w->query('PRAGMA encoding = "UTF-8"');$w->query('CREATE TABLE adminer (i)');$w->query('DROP TABLE adminer');return
|
||
|
|
true;}function
|
||
|
|
drop_databases($_){global$g;$g->Min_SQLite(":memory:");foreach($_
|
||
|
|
as$t){if(!@unlink($t)){$g->error=lang(10);return
|
||
|
|
false;}}return
|
||
|
|
true;}function
|
||
|
|
rename_database($f,$U){global$g;if(!check_sqlite_name($f)){return
|
||
|
|
false;}$g->Min_SQLite(":memory:");$g->error=lang(10);return@rename(DB,$f);}function
|
||
|
|
auto_increment(){return" PRIMARY KEY".(DRIVER=="sqlite"?" AUTOINCREMENT":"");}function
|
||
|
|
alter_table($h,$f,$p,$Oa,$_a,$yb,$U,$Sa,$vb){$u=array();foreach($p
|
||
|
|
as$e){if($e[1]){$u[]=($h!=""&&$e[0]==""?"ADD ":" ").implode($e[1]);}}$u=array_merge($u,$Oa);if($h!=""){foreach($u
|
||
|
|
as$b){if(!queries("ALTER TABLE ".table($h)." $b")){return
|
||
|
|
false;}}if($h!=$f&&!queries("ALTER TABLE ".table($h)." RENAME TO ".table($f))){return
|
||
|
|
false;}}elseif(!queries("CREATE TABLE ".table($f)." (\n".implode(",\n",$u)."\n)")){return
|
||
|
|
false;}if($Sa){queries("UPDATE sqlite_sequence SET seq = $Sa WHERE name = ".q($f));}return
|
||
|
|
true;}function
|
||
|
|
alter_indexes($h,$u){foreach($u
|
||
|
|
as$b){if(!queries(($b[2]?"DROP INDEX":"CREATE".($b[0]!="INDEX"?" UNIQUE":"")." INDEX ".idf_escape(uniqid($h."_"))." ON ".table($h))." $b[1]")){return
|
||
|
|
false;}}return
|
||
|
|
true;}function
|
||
|
|
truncate_tables($E){return
|
||
|
|
apply_queries("DELETE FROM",$E);}function
|
||
|
|
drop_views($X){return
|
||
|
|
apply_queries("DROP VIEW",$X);}function
|
||
|
|
drop_tables($E){return
|
||
|
|
apply_queries("DROP TABLE",$E);}function
|
||
|
|
move_tables($E,$X,$ea){return
|
||
|
|
false;}function
|
||
|
|
trigger($f){global$g;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($f)),$k);return
|
||
|
|
array("Timing"=>strtoupper($k[1]),"Event"=>strtoupper($k[2]),"Trigger"=>$f,"Statement"=>$k[3]);}function
|
||
|
|
triggers($h){$c=array();foreach(get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($h))as$a){preg_match('~^CREATE\\s+TRIGGER\\s*(?:[^`"\\s]+|`[^`]*`|"[^"]*")+\\s*([a-z]+)\\s*([a-z]+)~i',$a["sql"],$k);$c[$a["name"]]=array($k[1],$k[2]);}return$c;}function
|
||
|
|
trigger_options(){return
|
||
|
|
array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Type"=>array("FOR EACH ROW"),);}function
|
||
|
|
routine($f,$z){}function
|
||
|
|
routines(){}function
|
||
|
|
begin(){return
|
||
|
|
queries("BEGIN");}function
|
||
|
|
insert_into($h,$r){return
|
||
|
|
queries("INSERT INTO ".table($h).($r?" (".implode(", ",array_keys($r)).")\nVALUES (".implode(", ",$r).")":"DEFAULT VALUES"));}function
|
||
|
|
insert_update($h,$r,$Qa){return
|
||
|
|
queries("REPLACE INTO ".table($h)." (".implode(", ",array_keys($r)).") VALUES (".implode(", ",$r).")");}function
|
||
|
|
last_id(){global$g;return$g->result("SELECT LAST_INSERT_ROWID()");}function
|
||
|
|
explain($g,$j){return$g->query("EXPLAIN $j");}function
|
||
|
|
types(){return
|
||
|
|
array();}function
|
||
|
|
schemas(){return
|
||
|
|
array();}function
|
||
|
|
get_schema(){return"";}function
|
||
|
|
set_schema($Ed){return
|
||
|
|
true;}function
|
||
|
|
create_sql($h,$Sa){global$g;return$g->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($h));}function
|
||
|
|
truncate_sql($h){return"DELETE FROM ".table($h);}function
|
||
|
|
use_sql($ia){}function
|
||
|
|
trigger_sql($h,$V){return
|
||
|
|
implode(get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND name = ".q($h)));}function
|
||
|
|
show_variables(){global$g;$c=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$d){$c[$d]=$g->result("PRAGMA $d");}return$c;}function
|
||
|
|
show_status(){$c=array();foreach(get_vals("PRAGMA compile_options")as$sf){list($d,$b)=explode("=",$sf,2);$c[$d]=$b;}return$c;}function
|
||
|
|
support($rb){return
|
||
|
|
ereg('^(view|trigger|variables|status|dump)$',$rb);}$v="sqlite";$R=array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0);$La=array_keys($R);$ob=array();$gc=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","");$da=array("hex","length","lower","round","unixepoch","upper");$lb=array("avg","count","count distinct","group_concat","max","min","sum");$Nb=array(array(),array("integer|real|numeric"=>"+/-","text"=>"||",));}$na["pgsql"]="PostgreSQL";if(isset($_GET["pgsql"])){$oc=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($mf,$n){if(ini_bool("html_errors")){$n=html_entity_decode(strip_tags($n));}$n=ereg_replace('^[^:]*: ','',$n);$this->error=$n;}function
|
||
|
|
connect($F,$P,$T){set_error_handler(array($this,'_error'));$this->_string="host='".str_replace(":","' port='",addcslashes($F,"'\\"))."' user='".addcslashes($P,"'\\")."' password='".addcslashes($T,"'\\")."'";$this->_link=@pg_connect($this->_string.(DB!=""?" dbname='".addcslashes(DB,"'\\")."'":" dbname='template1'"),PGSQL_CONNECT_FORCE_NEW);if(!$this->_link&&DB!=""){$this->_database=false;$this->_link=@pg_connect("$this->_string dbname='template1'",PGSQL_CONNECT_FORCE_NEW);}restore_error_handler();if($this->_link){$Kd=pg_version($this->_link);$this->server_info=$Kd["server"];pg_set_client_encoding($this->_link,"UTF8");}return(bool)$this->_link;}function
|
||
|
|
quote($I){return"'".pg_escape_string($this->_link,$I)."'";}function
|
||
|
|
select_db($ia){if($ia==DB){return$this->_database;}$c=@pg_connect("$this->_string dbname='".addcslashes($ia,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($c){$this->_link=$c;}return$c;}function
|
||
|
|
close(){$this->_link=@pg_connect("$this->_string dbname='template1'");}function
|
||
|
|
query($j,$db=false){$i=@pg_query($this->_link,$j);if(!$i){$this->error=pg_last_error($this->_link);return
|
||
|
|
false;}elseif(!pg_num_fields($i)){$this->affected_rows=pg_affected_rows($i);return
|
||
|
|
true;}return
|
||
|
|
new
|
||
|
|
Min_Result($i);}function
|
||
|
|
multi_query($j){return$this->_result=$this->query($j);}function
|
||
|
|
store_result(){return$this->_result;}function
|
||
|
|
next_result(){return
|
||
|
|
false;}function
|
||
|
|
result($j,$e=0){$i=$this->query($j);if(!$i||!$i->num_rows){return
|
||
|
|
false;}return
|
||
|
|
pg_fetch_result($i->_result,0,$e);}}class
|
||
|
|
Min_Result{var$_result,$_offset=0,$num_rows;function
|
||
|
|
Min_Result($i){$this->_result=$i;$this->num_rows=pg_num_rows($i);}function
|
||
|
|
fetch_assoc(){return
|
||
|
|
pg_fetch_assoc($this->_result);}function
|
||
|
|
fetch_row(){return
|
||
|
|
pg_fetch_row($this->_result);}function
|
||
|
|
fetch_field(){$C=$this->_offset++;$c=new
|
||
|
|
stdClass;if(function_exists('pg_field_table')){$c->orgtable=pg_field_table($this->_result,$C);}$c->name=pg_field_name($this->_result,$C);$c->orgname=$c->name;$c->type=pg_field_type($this->_result,$C);$c->charsetnr=($c->type=="bytea"?63:0);return$c;}function
|
||
|
|
__destruct(){pg_free_result($this->_result);}}}elseif(extension_loaded("pdo_pgsql")){class
|
||
|
|
Min_DB
|
||
|
|
extends
|
||
|
|
Min_PDO{var$extension="PDO_PgSQL";function
|
||
|
|
connect($F,$P,$T){$I="pgsql:host='".str_replace(":","' port='",addcslashes($F,"'\\"))."' options='-c client_encoding=utf8'";$this->dsn($I.(DB!=""?" dbname='".addcslashes(DB,"'\\")."'":""),$P,$T);return
|
||
|
|
true;}function
|
||
|
|
select_db($ia){return(DB==$ia);}function
|
||
|
|
close(){}}}function
|
||
|
|
idf_escape($N){return'"'.str_replace('"','""',$N).'"';}function
|
||
|
|
table($N){return
|
||
|
|
idf_escape($N);}function
|
||
|
|
connect(){global$o;$g=new
|
||
|
|
Min_DB;$ya=$o->credentials();if($g->connect($ya[0],$ya[1],$ya[2])){return$g;}return$g->error;}function
|
||
|
|
get_databases(){return
|
||
|
|
get_vals("SELECT datname FROM pg_database");}function
|
||
|
|
limit($j,$s,$O,$L=0,$Wa=" "){return" $j$s".(isset($O)?$Wa."LIMIT $O".($L?" OFFSET $L":""):"");}function
|
||
|
|
limit1($j,$s){return" $j$s";}function
|
||
|
|
db_collation($t,$Z){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($_){return
|
||
|
|
array();}function
|
||
|
|
table_status($f=""){$c=array();foreach(get_rows("SELECT relname AS \"Name\", CASE relkind WHEN 'r' THEN '' 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\"
|
||
|
|
FROM pg_class
|
||
|
|
WHERE relkind IN ('r','v')
|
||
|
|
AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())".($f!=""?" AND relname = ".q($f):""))as$a){$c[$a["Name"]]=$a;}return($f!=""?$c[$f]:$c);}function
|
||
|
|
is_view($D){return$D["Engine"]=="view";}function
|
||
|
|
fk_support($D){return
|
||
|
|
true;}function
|
||
|
|
fields($h){$c=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($h)."
|
||
|
|
AND n.nspname = current_schema()
|
||
|
|
AND NOT a.attisdropped
|
||
|
|
AND a.attnum > 0
|
||
|
|
ORDER BY a.attnum")as$a){ereg('(.*)(\\((.*)\\))?',$a["full_type"],$k);list(,$a["type"],,$a["length"])=$k;$a["full_type"]=$a["type"].($a["length"]?"($a[length])":"");$a["null"]=($a["attnotnull"]=="f");$a["auto_increment"]=eregi("^nextval\\(",$a["default"]);$a["privileges"]=array("insert"=>1,"select"=>1,"update"=>1);$c[$a["field"]]=$a;}return$c;}function
|
||
|
|
indexes($h,$G=null){global$g;if(!is_object($G)){$G=$g;}$c=array();$af=$G->result("SELECT oid FROM pg_class WHERE relname = ".q($h));$B=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $af AND attnum > 0",$G);foreach(get_rows("SELECT relname, indisunique, indisprimary, indkey FROM pg_index i, pg_class ci WHERE i.indrelid = $af AND ci.oid = i.indexrelid",$G)as$a){$c[$a["relname"]]["type"]=($a["indisprimary"]=="t"?"PRIMARY":($a["indisunique"]=="t"?"UNIQUE":"INDEX"));$c[$a["relname"]]["columns"]=array();foreach(explode(" ",$a["indkey"])as$yf){$c[$a["relname"]]["columns"][]=$B[$yf];}$c[$a["relname"]]["lengths"]=array();}return$c;}function
|
||
|
|
foreign_keys($h){$c=array();foreach(get_rows("SELECT tc.constraint_name, kcu.column_name, rc.update_rule AS on_update, rc.delete_rule AS on_delete, ccu.table_name AS table, ccu.column_name AS ref
|
||
|
|
FROM information_schema.table_constraints tc
|
||
|
|
LEFT JOIN information_schema.key_column_usage kcu USING (constraint_catalog, constraint_schema, constraint_name)
|
||
|
|
LEFT JOIN information_schema.referential_constraints rc USING (constraint_catalog, constraint_schema, constraint_name)
|
||
|
|
LEFT JOIN information_schema.constraint_column_usage ccu ON rc.unique_constraint_catalog = ccu.constraint_catalog AND rc.unique_constraint_schema = ccu.constraint_schema AND rc.unique_constraint_name = ccu.constraint_name
|
||
|
|
WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name = ".q($h))as$a){$A=&$c[$a["constraint_name"]];if(!$A){$A=$a;}$A["source"][]=$a["column_name"];$A["target"][]=$a["ref"];}return$c;}function
|
||
|
|
view($f){global$g;return
|
||
|
|
array("select"=>$g->result("SELECT pg_get_viewdef(".q($f).")"));}function
|
||
|
|
collations(){return
|
||
|
|
array();}function
|
||
|
|
information_schema($t){return($t=="information_schema");}function
|
||
|
|
error(){global$g;$c=h($g->error);if(preg_match('~^(.*\\n)?([^\\n]*)\\n( *)\\^(\\n.*)?$~s',$c,$k)){$c=$k[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($k[3]).'})(.*)~','\\1<b>\\2</b>',$k[2]).$k[4];}return
|
||
|
|
nl_br($c);}function
|
||
|
|
exact_value($b){return
|
||
|
|
q($b);}function
|
||
|
|
create_database($t,$U){return
|
||
|
|
queries("CREATE DATABASE ".idf_escape($t).($U?" ENCODING ".idf_escape($U):""));}function
|
||
|
|
drop_databases($_){global$g;$g->close();return
|
||
|
|
apply_queries("DROP DATABASE",$_,'idf_escape');}function
|
||
|
|
rename_database($f,$U){return
|
||
|
|
queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($f));}function
|
||
|
|
auto_increment(){return"";}function
|
||
|
|
alter_table($h,$f,$p,$Oa,$_a,$yb,$U,$Sa,$vb){$u=array();$jb=array();foreach($p
|
||
|
|
as$e){$C=idf_escape($e[0]);$b=$e[1];if(!$b){$u[]="DROP $C";}else{$od=$b[5];unset($b[5]);if(isset($b[6])&&$e[0]==""){$b[1]=($b[1]=="bigint"?" big":" ")."serial";}if($e[0]==""){$u[]=($h!=""?"ADD ":" ").implode($b);}else{if($C!=$b[0]){$jb[]="ALTER TABLE ".table($h)." RENAME $C TO $b[0]";}$u[]="ALTER $C TYPE$b[1]";if(!$b[6]){$u[]="ALTER $C ".($b[3]?"SET$b[3]":"DROP DEFAULT");$u[]="ALTER $C ".($b[2]==" NULL"?"DROP NOT":"SET").$b[2];}}if($e[0]!=""||$od!=""){$jb[]="COMMENT ON COLUMN ".table($h).".$b[0] IS ".($od!=""?substr($od,9):"''");}}}$u=array_merge($u,$Oa);if($h==""){array_unshift($jb,"CREATE TABLE ".table($f)." (\n".implode(",\n",$u)."\n)");}elseif($u){array_unshift($jb,"ALTER TABLE ".table($h)."\n".implode(",\n",$u));}if($h!=""&&$h!=$f){$jb[]="ALTER TABLE ".table($h)." RENAME TO ".table($f);}if($h!=""||$_a!=""){$jb[]="COMMENT ON TABLE ".table($f)." IS ".q($_a);}if($Sa!=""){}foreach($jb
|
||
|
|
as$j){if(!queries($j)){return
|
||
|
|
false;}}return
|
||
|
|
true;}function
|
||
|
|
alter_indexes($h,$u){$la=array();$Ha=array();foreach($u
|
||
|
|
as$b){if($b[0]!="INDEX"){$la[]=($b[2]?"\nDROP CONSTRAINT ":"\nADD $b[0] ".($b[0]=="PRIMARY"?"KEY ":"")).$b[1];}elseif($b[2]){$Ha[]=$b[1];}elseif(!queries("CREATE INDEX ".idf_escape(uniqid($h."_"))." ON ".table($h)." $b[1]")){return
|
||
|
|
false;}}return((!$la||queries("ALTER TABLE ".table($h).implode(",",$la)))&&(!$Ha||queries("DROP INDEX ".implode(", ",$Ha))));}function
|
||
|
|
truncate_tables($E){return
|
||
|
|
queries("TRUNCATE ".implode(", ",array_map('table',$E)));return
|
||
|
|
true;}function
|
||
|
|
drop_views($X){return
|
||
|
|
queries("DROP VIEW ".implode(", ",array_map('table',$X)));}function
|
||
|
|
drop_tables($E){return
|
||
|
|
queries("DROP TABLE ".implode(", ",array_map('table',$E)));}function
|
||
|
|
move_tables($E,$X,$ea){foreach($E
|
||
|
|
as$h){if(!queries("ALTER TABLE ".table($h)." SET SCHEMA ".idf_escape($ea))){return
|
||
|
|
false;}}foreach($X
|
||
|
|
as$h){if(!queries("ALTER VIEW ".table($h)." SET SCHEMA ".idf_escape($ea))){return
|
||
|
|
false;}}return
|
||
|
|
true;}function
|
||
|
|
trigger($f){$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($f));return
|
||
|
|
reset($H);}function
|
||
|
|
triggers($h){$c=array();foreach(get_rows("SELECT * FROM information_schema.triggers WHERE event_object_table = ".q($h))as$a){$c[$a["trigger_name"]]=array($a["condition_timing"],$a["event_manipulation"]);}return$c;}function
|
||
|
|
trigger_options(){return
|
||
|
|
array("Timing"=>array("BEFORE","AFTER"),"Type"=>array("FOR EACH ROW","FOR EACH STATEMENT"),);}function
|
||
|
|
begin(){return
|
||
|
|
queries("BEGIN");}function
|
||
|
|
insert_into($h,$r){return
|
||
|
|
queries("INSERT INTO ".table($h).($r?" (".implode(", ",array_keys($r)).")\nVALUES (".implode(", ",$r).")":"DEFAULT VALUES"));}function
|
||
|
|
insert_update($h,$r,$Qa){global$g;$qa=array();$s=array();foreach($r
|
||
|
|
as$d=>$b){$qa[]="$d = $b";if(isset($Qa[idf_unescape($d)])){$s[]="$d = $b";}}return($s&&queries("UPDATE ".table($h)." SET ".implode(", ",$qa)." WHERE ".implode(" AND ",$s))&&$g->affected_rows)||queries("INSERT INTO ".table($h)." (".implode(", ",array_keys($r)).") VALUES (".implode(", ",$r).")");}function
|
||
|
|
last_id(){return
|
||
|
|
0;}function
|
||
|
|
explain($g,$j){return$g->query("EXPLAIN $j");}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");}function
|
||
|
|
get_schema(){global$g;return$g->result("SELECT current_schema()");}function
|
||
|
|
set_schema($Ka){global$g,$R,$La;$c=$g->query("SET search_path TO ".idf_escape($Ka));foreach(types()as$z){if(!isset($R[$z])){$R[$z]=0;$La[lang(11)][]=$z;}}return$c;}function
|
||
|
|
use_sql($ia){return"\connect ".idf_escape($ia);}function
|
||
|
|
show_variables(){return
|
||
|
|
get_key_vals("SHOW ALL");}function
|
||
|
|
show_status(){}function
|
||
|
|
support($rb){return
|
||
|
|
ereg('^(comment|view|scheme|sequence|trigger|type|variables|drop_col)$',$rb);}$v="pgsql";$R=array();$La=array();foreach(array(lang(12)=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),lang(13)=>array("date"=>13,"time"=>17,"timestamp"=>20,"interval"=>0),lang(14)=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),lang(15)=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),lang(16)=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"txid_snapshot"=>0),lang(17)=>array("box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0),)as$d=>$b){$R+=$b;$La[$d]=array_keys($b);}$ob=array();$gc=array("=","<",">","<=",">=","!=","~","!~","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","");$da=array("char_length","lower","round","to_hex","to_timestamp","upper");$lb=array("avg","count","count distinct","max","min","sum");$Nb=array(array("char"=>"md5","date|time"=>"now",),array("int|numeric|real|money"=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",));}$na["oracle"]="Oracle";if(isset($_GET["oracle"])){$oc=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($mf,$n){if(ini_bool("html_errors")){$n=html_entity_decode(strip_tags($n));}$n=ereg_replace('^[^:]*: ','',$n);$this->error=$n;}function
|
||
|
|
connect($F,$P,$T){$this->_link=@oci_new_connect($P,$T,$F,"AL32UTF8");if($this->_link){$this->server_info=oci_server_version($this->_link);return
|
||
|
|
true;}$n=oci_error();$this->error=$n["message"];return
|
||
|
|
false;}function
|
||
|
|
quote($I){return"'".str_replace("'","''",$I)."'";}function
|
||
|
|
select_db($ia){return
|
||
|
|
true;}function
|
||
|
|
query($j,$db=false){$i=oci_parse($this->_link,$j);if(!$i){$n=oci_error($this->_link);$this->error=$n["message"];return
|
||
|
|
false;}set_error_handler(array($this,'_error'));$c=@oci_execute($i);restore_error_handler();if($c){if(oci_num_fields($i)){return
|
||
|
|
new
|
||
|
|
Min_Result($i);}$this->affected_rows=oci_num_rows($i);}return$c;}function
|
||
|
|
multi_query($j){return$this->_result=$this->query($j);}function
|
||
|
|
store_result(){return$this->_result;}function
|
||
|
|
next_result(){return
|
||
|
|
false;}function
|
||
|
|
result($j,$e=1){$i=$this->query($j);if(!is_object($i)||!oci_fetch($i->_result)){return
|
||
|
|
false;}return
|
||
|
|
oci_result($i->_result,$e);}}class
|
||
|
|
Min_Result{var$_result,$_offset=1,$num_rows;function
|
||
|
|
Min_Result($i){$this->_result=$i;}function
|
||
|
|
_convert($a){foreach((array)$a
|
||
|
|
as$d=>$b){if(is_a($b,'OCI-Lob')){$a[$d]=$b->load();}}return$a;}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(){$C=$this->_offset++;$c=new
|
||
|
|
stdClass;$c->name=oci_field_name($this->_result,$C);$c->orgname=$c->name;$c->type=oci_field_type($this->_result,$C);$c->charsetnr=(ereg("raw|blob|bfile",$c->type)?63:0);return$c;}function
|
||
|
|
__destruct(){oci_free_statement($this->_result);}}}elseif(extension_loaded("pdo_oci")){class
|
||
|
|
Min_DB
|
||
|
|
extends
|
||
|
|
Min_PDO{var$extension="PDO_OCI";function
|
||
|
|
connect($F,$P,$T){$this->dsn("oci:dbname=//$F;charset=AL32UTF8",$P,$T);return
|
||
|
|
true;}function
|
||
|
|
select_db($ia){return
|
||
|
|
true;}}}function
|
||
|
|
idf_escape($N){return'"'.str_replace('"','""',$N).'"';}function
|
||
|
|
table($N){return
|
||
|
|
idf_escape($N);}function
|
||
|
|
connect(){global$o;$g=new
|
||
|
|
Min_DB;$ya=$o->credentials();if($g->connect($ya[0],$ya[1],$ya[2])){return$g;}return$g->error;}function
|
||
|
|
get_databases(){return
|
||
|
|
get_vals("SELECT tablespace_name FROM user_tablespaces");}function
|
||
|
|
limit($j,$s,$O,$L=0,$Wa=" "){return" $j$s".(isset($O)?($s?" AND":$Wa."WHERE").($L?" rownum > $L AND":"")." rownum <= ".($O+$L):"");}function
|
||
|
|
limit1($j,$s){return" $j$s";}function
|
||
|
|
db_collation($t,$Z){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($_){return
|
||
|
|
array();}function
|
||
|
|
table_status($f=""){$c=array();$Ve=q($f);foreach(get_rows('SELECT table_name "Name", \'table\' "Engine" FROM all_tables WHERE tablespace_name = '.q(DB).($f!=""?" AND table_name = $Ve":"")."
|
||
|
|
UNION SELECT view_name, 'view' FROM user_views".($f!=""?" WHERE view_name = $Ve":""))as$a){if($f!=""){return$a;}$c[$a["Name"]]=$a;}return$c;}function
|
||
|
|
is_view($D){return$D["Engine"]=="view";}function
|
||
|
|
fk_support($D){return
|
||
|
|
true;}function
|
||
|
|
fields($h){$c=array();foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($h)." ORDER BY column_id")as$a){$z=$a["DATA_TYPE"];$W="$a[DATA_PRECISION],$a[DATA_SCALE]";if($W==","){$W=$a["DATA_LENGTH"];}$c[$a["COLUMN_NAME"]]=array("field"=>$a["COLUMN_NAME"],"full_type"=>$z.($W?"($W)":""),"type"=>strtolower($z),"length"=>$W,"default"=>$a["DATA_DEFAULT"],"null"=>($a["NULLABLE"]=="Y"),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),);}return$c;}function
|
||
|
|
indexes($h,$G=null){return
|
||
|
|
array();}function
|
||
|
|
view($f){$H=get_rows('SELECT text "select" FROM user_views WHERE view_name = '.q($f));return
|
||
|
|
reset($H);}function
|
||
|
|
collations(){return
|
||
|
|
array();}function
|
||
|
|
information_schema($t){return
|
||
|
|
false;}function
|
||
|
|
error(){global$g;return
|
||
|
|
h($g->error);}function
|
||
|
|
exact_value($b){return
|
||
|
|
q($b);}function
|
||
|
|
explain($g,$j){$g->query("EXPLAIN PLAN FOR $j");return$g->query("SELECT * FROM plan_table");}function
|
||
|
|
alter_table($h,$f,$p,$Oa,$_a,$yb,$U,$Sa,$vb){$u=$Ha=array();foreach($p
|
||
|
|
as$e){$b=$e[1];if($b&&$e[0]!=""&&idf_escape($e[0])!=$b[0]){queries("ALTER TABLE ".table($h)." RENAME COLUMN ".idf_escape($e[0])." TO $b[0]");}if($b){$u[]=($h!=""?($e[0]!=""?"MODIFY (":"ADD ("):" ").implode($b).($h!=""?")":"");}else{$Ha[]=idf_escape($e[0]);}}if($h==""){return
|
||
|
|
queries("CREATE TABLE ".table($f)." (\n".implode(",\n",$u)."\n)");}return(!$u||queries("ALTER TABLE ".table($h)."\n".implode("\n",$u)))&&(!$Ha||queries("ALTER TABLE ".table($h)." DROP (".implode(", ",$Ha).")"))&&($h==$f||queries("ALTER TABLE ".table($h)." RENAME TO ".table($f)));}function
|
||
|
|
foreign_keys($h){return
|
||
|
|
array();}function
|
||
|
|
truncate_tables($E){return
|
||
|
|
apply_queries("TRUNCATE TABLE",$E);}function
|
||
|
|
drop_views($X){return
|
||
|
|
apply_queries("DROP VIEW",$X);}function
|
||
|
|
drop_tables($E){return
|
||
|
|
apply_queries("DROP TABLE",$E);}function
|
||
|
|
begin(){return
|
||
|
|
true;}function
|
||
|
|
insert_into($h,$r){return
|
||
|
|
queries("INSERT INTO ".table($h)." (".implode(", ",array_keys($r)).")\nVALUES (".implode(", ",$r).")");}function
|
||
|
|
last_id(){return
|
||
|
|
0;}function
|
||
|
|
schemas(){return
|
||
|
|
array();}function
|
||
|
|
get_schema(){return"";}function
|
||
|
|
set_schema($Ed){return
|
||
|
|
true;}function
|
||
|
|
show_variables(){return
|
||
|
|
get_key_vals('SELECT name, display_value FROM v$parameter');}function
|
||
|
|
show_status(){$H=get_rows('SELECT * FROM v$instance');return
|
||
|
|
reset($H);}function
|
||
|
|
support($rb){return
|
||
|
|
ereg("view|drop_col|variables|status",$rb);}$v="oracle";$R=array();$La=array();foreach(array(lang(12)=>array("number"=>38,"binary_float"=>12,"binary_double"=>21),lang(13)=>array("date"=>10,"timestamp"=>29,"interval year"=>12,"interval day"=>28),lang(14)=>array("char"=>2000,"varchar2"=>4000,"nchar"=>2000,"nvarchar2"=>4000,"clob"=>4294967295,"nclob"=>4294967295),lang(15)=>array("raw"=>2000,"long raw"=>2147483648,"blob"=>4294967295,"bfile"=>4294967296),)as$d=>$b){$R+=$b;$La[$d]=array_keys($b);}$ob=array();$gc=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","");$da=array("length","lower","round","upper");$lb=array("avg","count","count distinct","max","min","sum");$Nb=array(array("date"=>"current_date","timestamp"=>"current_timestamp",),array("number|float|double"=>"+/-","date|timestamp"=>"+ interval/- interval","char|clob"=>"||",));}$na["mssql"]="MS SQL";if(isset($_GET["mssql"])){$oc=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$n){$this->error.="$n[message]\n";}$this->error=rtrim($this->error);}function
|
||
|
|
connect($F,$P,$T){$this->_link=@sqlsrv_connect($F,array("UID"=>$P,"PWD"=>$T));if($this->_link){$rf=sqlsrv_server_info($this->_link);$this->server_info=$rf['SQLServerVersion'];}else{$this->_get_error();}return(bool)$this->_link;}function
|
||
|
|
quote($I){return"'".str_replace("'","''",$I)."'";}function
|
||
|
|
select_db($ia){return$this->query("USE $ia");}function
|
||
|
|
query($j,$db=false){$i=sqlsrv_query($this->_link,$j);if(!$i){$this->_get_error();return
|
||
|
|
false;}return$this->store_result($i);}function
|
||
|
|
multi_query($j){$this->_result=sqlsrv_query($this->_link,$j);if(!$this->_result){$this->_get_error();return
|
||
|
|
false;}return
|
||
|
|
true;}function
|
||
|
|
store_result($i=null){if(!$i){$i=$this->_result;}if(sqlsrv_field_metadata($i)){return
|
||
|
|
new
|
||
|
|
Min_Result($i);}$this->affected_rows=sqlsrv_rows_affected($i);return
|
||
|
|
true;}function
|
||
|
|
next_result(){return
|
||
|
|
sqlsrv_next_result($this->_result);}function
|
||
|
|
result($j,$e=0){$i=$this->query($j);if(!is_object($i)){return
|
||
|
|
false;}$a=$i->fetch_row();return$a[$e];}}class
|
||
|
|
Min_Result{var$_result,$_offset=0,$_fields,$num_rows;function
|
||
|
|
Min_Result($i){$this->_result=$i;}function
|
||
|
|
_convert($a){foreach((array)$a
|
||
|
|
as$d=>$b){if(is_a($b,'DateTime')){$a[$d]=$b->format("Y-m-d H:i:s");}}return$a;}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);}$e=$this->_fields[$this->_offset++];$c=new
|
||
|
|
stdClass;$c->name=$e["Name"];$c->orgname=$e["Name"];$c->type=($e["Type"]==1?254:0);return$c;}function
|
||
|
|
seek($L){for($l=0;$l<$L;$l++){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($F,$P,$T){$this->_link=@mssql_connect($F,$P,$T);if($this->_link){$i=$this->query("SELECT SERVERPROPERTY('ProductLevel'), SERVERPROPERTY('Edition')");$a=$i->fetch_row();$this->server_info=$this->result("sp_server_info 2",2)." [$a[0]] $a[1]";}else{$this->error=mssql_get_last_message();}return(bool)$this->_link;}function
|
||
|
|
quote($I){return"'".str_replace("'","''",$I)."'";}function
|
||
|
|
select_db($ia){return
|
||
|
|
mssql_select_db($ia);}function
|
||
|
|
query($j,$db=false){$i=mssql_query($j,$this->_link);if(!$i){$this->error=mssql_get_last_message();return
|
||
|
|
false;}if($i===true){$this->affected_rows=mssql_rows_affected($this->_link);return
|
||
|
|
true;}return
|
||
|
|
new
|
||
|
|
Min_Result($i);}function
|
||
|
|
multi_query($j){return$this->_result=$this->query($j);}function
|
||
|
|
store_result(){return$this->_result;}function
|
||
|
|
next_result(){return
|
||
|
|
mssql_next_result($this->_result);}function
|
||
|
|
result($j,$e=0){$i=$this->query($j);if(!is_object($i)){return
|
||
|
|
false;}return
|
||
|
|
mssql_result($i->_result,0,$e);}}class
|
||
|
|
Min_Result{var$_result,$_offset=0,$_fields,$num_rows;function
|
||
|
|
Min_Result($i){$this->_result=$i;$this->num_rows=mssql_num_rows($i);}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(){$c=mssql_fetch_field($this->_result);$c->orgtable=$c->table;$c->orgname=$c->name;return$c;}function
|
||
|
|
seek($L){mssql_data_seek($this->_result,$L);}function
|
||
|
|
__destruct(){mssql_free_result($this->_result);}}}function
|
||
|
|
idf_escape($N){return"[".str_replace("]","]]",$N)."]";}function
|
||
|
|
table($N){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($N);}function
|
||
|
|
connect(){global$o;$g=new
|
||
|
|
Min_DB;$ya=$o->credentials();if($g->connect($ya[0],$ya[1],$ya[2])){return$g;}return$g->error;}function
|
||
|
|
get_databases(){return
|
||
|
|
get_vals("EXEC sp_databases");}function
|
||
|
|
limit($j,$s,$O,$L=0,$Wa=" "){return(isset($O)?" TOP (".($O+$L).")":"")." $j$s";}function
|
||
|
|
limit1($j,$s){return
|
||
|
|
limit($j,$s,1);}function
|
||
|
|
db_collation($t,$Z){global$g;return$g->result("SELECT collation_name FROM sys.databases WHERE name = ".q($t));}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($_){global$g;$c=array();foreach($_
|
||
|
|
as$t){$g->select_db($t);$c[$t]=$g->result("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$c;}function
|
||
|
|
table_status($f=""){$c=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')".($f!=""?" AND name = ".q($f):""))as$a){if($f!=""){return$a;}$c[$a["Name"]]=$a;}return$c;}function
|
||
|
|
is_view($D){return$D["Engine"]=="VIEW";}function
|
||
|
|
fk_support($D){return
|
||
|
|
true;}function
|
||
|
|
fields($h){$c=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($h))as$a){$z=$a["type"];$W=(ereg("char|binary",$z)?$a["max_length"]:($z=="decimal"?"$a[precision],$a[scale]":""));$c[$a["name"]]=array("field"=>$a["name"],"full_type"=>$z.($W?"($W)":""),"type"=>$z,"length"=>$W,"default"=>$a["default"],"null"=>$a["is_nullable"],"auto_increment"=>$a["is_identity"],"collation"=>$a["collation_name"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),"primary"=>$a["is_identity"],);}return$c;}function
|
||
|
|
indexes($h,$G=null){global$g;if(!is_object($G)){$G=$g;}$c=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($h),$G)as$a){$c[$a["name"]]["type"]=($a["is_primary_key"]?"PRIMARY":($a["is_unique"]?"UNIQUE":"INDEX"));$c[$a["name"]]["lengths"]=array();$c[$a["name"]]["columns"][$a["key_ordinal"]]=$a["column_name"];}return$c;}function
|
||
|
|
view($f){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($f))));}function
|
||
|
|
collations(){$c=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$U){$c[ereg_replace("_.*","",$U)][]=$U;}return$c;}function
|
||
|
|
information_schema($t){return
|
||
|
|
false;}function
|
||
|
|
error(){global$g;return
|
||
|
|
nl_br(h(preg_replace('~^(\\[[^]]*])+~m','',$g->error)));}function
|
||
|
|
exact_value($b){return
|
||
|
|
q($b);}function
|
||
|
|
create_database($t,$U){return
|
||
|
|
queries("CREATE DATABASE ".idf_escape($t).(eregi('^[a-z0-9_]+$',$U)?" COLLATE $U":""));}function
|
||
|
|
drop_databases($_){return
|
||
|
|
queries("DROP DATABASE ".implode(", ",array_map('idf_escape',$_)));}function
|
||
|
|
rename_database($f,$U){if(eregi('^[a-z0-9_]+$',$U)){queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $U");}queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($f));return
|
||
|
|
true;}function
|
||
|
|
auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".(+$_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function
|
||
|
|
alter_table($h,$f,$p,$Oa,$_a,$yb,$U,$Sa,$vb){$u=array();foreach($p
|
||
|
|
as$e){$C=idf_escape($e[0]);$b=$e[1];if(!$b){$u["DROP"][]=" COLUMN $C";}else{$b[1]=preg_replace("~( COLLATE )'(\\w+)'~","\\1\\2",$b[1]);if($e[0]==""){$u["ADD"][]="\n ".implode("",$b).($h==""?substr($Oa[$b[0]],16+strlen($b[0])):"");}else{unset($b[6]);if($C!=$b[0]){queries("EXEC sp_rename ".q(table($h).".$C").", ".q(idf_unescape($b[0])).", 'COLUMN'");}$u["ALTER COLUMN ".implode("",$b)][]="";}}}if($h==""){return
|
||
|
|
queries("CREATE TABLE ".table($f)." (".implode(",",(array)$u["ADD"])."\n)");}if($h!=$f){queries("EXEC sp_rename ".q(table($h)).", ".q($f));}if($Oa){$u[""]=$Oa;}foreach($u
|
||
|
|
as$d=>$b){if(!queries("ALTER TABLE ".idf_escape($f)." $d".implode(",",$b))){return
|
||
|
|
false;}}return
|
||
|
|
true;}function
|
||
|
|
alter_indexes($h,$u){$x=array();$Ha=array();foreach($u
|
||
|
|
as$b){if($b[2]){if($b[0]=="PRIMARY"){$Ha[]=$b[1];}else{$x[]="$b[1] ON ".table($h);}}elseif(!queries(($b[0]!="PRIMARY"?"CREATE".($b[0]!="INDEX"?" UNIQUE":"")." INDEX ".idf_escape(uniqid($h."_"))." ON ".table($h):"ALTER TABLE ".table($h)." ADD PRIMARY KEY")." $b[1]")){return
|
||
|
|
false;}}return(!$x||queries("DROP INDEX ".implode(", ",$x)))&&(!$Ha||queries("ALTER TABLE ".table($h)." DROP ".implode(", ",$Ha)));}function
|
||
|
|
begin(){return
|
||
|
|
queries("BEGIN TRANSACTION");}function
|
||
|
|
insert_into($h,$r){return
|
||
|
|
queries("INSERT INTO ".table($h).($r?" (".implode(", ",array_keys($r)).")\nVALUES (".implode(", ",$r).")":"DEFAULT VALUES"));}function
|
||
|
|
insert_update($h,$r,$Qa){$qa=array();$s=array();foreach($r
|
||
|
|
as$d=>$b){$qa[]="$d = $b";if(isset($Qa[idf_unescape($d)])){$s[]="$d = $b";}}return
|
||
|
|
queries("MERGE ".table($h)." USING (VALUES(".implode(", ",$r).")) AS source (c".implode(", c",range(1,count($r))).") ON ".implode(" AND ",$s)." WHEN MATCHED THEN UPDATE SET ".implode(", ",$qa)." WHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($r)).") VALUES (".implode(", ",$r).");");}function
|
||
|
|
last_id(){global$g;return$g->result("SELECT SCOPE_IDENTITY()");}function
|
||
|
|
explain($g,$j){$g->query("SET SHOWPLAN_ALL ON");$c=$g->query($j);$g->query("SET SHOWPLAN_ALL OFF");return$c;}function
|
||
|
|
foreign_keys($h){$c=array();foreach(get_rows("EXEC sp_fkeys @fktable_name = ".q($h))as$a){$A=&$c[$a["FK_NAME"]];$A["table"]=$a["PKTABLE_NAME"];$A["source"][]=$a["FKCOLUMN_NAME"];$A["target"][]=$a["PKCOLUMN_NAME"];}return$c;}function
|
||
|
|
truncate_tables($E){return
|
||
|
|
apply_queries("TRUNCATE TABLE",$E);}function
|
||
|
|
drop_views($X){return
|
||
|
|
queries("DROP VIEW ".implode(", ",array_map('table',$X)));}function
|
||
|
|
drop_tables($E){return
|
||
|
|
queries("DROP TABLE ".implode(", ",array_map('table',$E)));}function
|
||
|
|
move_tables($E,$X,$ea){return
|
||
|
|
apply_queries("ALTER SCHEMA ".idf_escape($ea)." TRANSFER",array_merge($E,$X));}function
|
||
|
|
trigger($f){$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));$c=reset($H);if($c){$c["Statement"]=preg_replace('~^.+\\s+AS\\s+~isU','',$c["text"]);}return$c;}function
|
||
|
|
triggers($h){$c=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($h))as$a){$c[$a["name"]]=array($a["Timing"],$a["Event"]);}return$c;}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($Ka){return
|
||
|
|
true;}function
|
||
|
|
use_sql($ia){return"USE ".idf_escape($ia);}function
|
||
|
|
show_variables(){return
|
||
|
|
array();}function
|
||
|
|
show_status(){return
|
||
|
|
array();}function
|
||
|
|
support($rb){return
|
||
|
|
ereg('^(scheme|trigger|view|drop_col)$',$rb);}$v="mssql";$R=array();$La=array();foreach(array(lang(12)=>array("tinyint"=>3,"smallint"=>5,"int"=>10,"bigint"=>20,"bit"=>1,"decimal"=>0,"real"=>12,"float"=>53,"smallmoney"=>10,"money"=>20),lang(13)=>array("date"=>10,"smalldatetime"=>19,"datetime"=>19,"datetime2"=>19,"time"=>8,"datetimeoffset"=>10),lang(14)=>array("char"=>8000,"varchar"=>8000,"text"=>2147483647,"nchar"=>4000,"nvarchar"=>4000,"ntext"=>1073741823),lang(15)=>array("binary"=>8000,"varbinary"=>8000,"image"=>2147483647),)as$d=>$b){$R+=$b;$La[$d]=array_keys($b);}$ob=array();$gc=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","");$da=array("len","lower","round","upper");$lb=array("avg","count","count distinct","max","min","sum");$Nb=array(array("date|time"=>"getdate",),array("int|decimal|real|float|money|datetime"=>"+/-","char|text"=>"+",));}$na=array("server"=>"MySQL")+$na;if(!defined("DRIVER")){$oc=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($F,$P,$T){mysqli_report(MYSQLI_REPORT_OFF);list($tf,$Lc)=explode(":",$F,2);$c=@$this->real_connect(($F!=""?$tf:ini_get("mysqli.default_host")),("$F$P"!=""?$P:ini_get("mysqli.default_user")),("$F$P$T"!=""?$T:ini_get("mysqli.default_pw")),null,(is_numeric($Lc)?$Lc:ini_get("mysqli.default_port")),(!is_numeric($Lc)?$Lc:null));if($c){if(method_exists($this,'set_charset')){$this->set_charset("utf8");}else{$this->query("SET NAMES utf8");}}return$c;}function
|
||
|
|
result($j,$e=0){$i=$this->query($j);if(!$i){return
|
||
|
|
false;}$a=$i->fetch_array();return$a[$e];}function
|
||
|
|
quote($I){return"'".$this->escape_string($I)."'";}}}elseif(extension_loaded("mysql")){class
|
||
|
|
Min_DB{var$extension="MySQL",$server_info,$affected_rows,$error,$_link,$_result;function
|
||
|
|
connect($F,$P,$T){$this->_link=@mysql_connect(($F!=""?$F:ini_get("mysql.default_host")),("$F$P"!=""?$P:ini_get("mysql.default_user")),("$F$P$T"!=""?$T: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($I){return"'".mysql_real_escape_string($I,$this->_link)."'";}function
|
||
|
|
select_db($ia){return
|
||
|
|
mysql_select_db($ia,$this->_link);}function
|
||
|
|
query($j,$db=false){$i=@($db?mysql_unbuffered_query($j,$this->_link):mysql_query($j,$this->_link));if(!$i){$this->error=mysql_error($this->_link);return
|
||
|
|
false;}if($i===true){$this->affected_rows=mysql_affected_rows($this->_link);$this->info=mysql_info($this->_link);return
|
||
|
|
true;}return
|
||
|
|
new
|
||
|
|
Min_Result($i);}function
|
||
|
|
multi_query($j){return$this->_result=$this->query($j);}function
|
||
|
|
store_result(){return$this->_result;}function
|
||
|
|
next_result(){return
|
||
|
|
false;}function
|
||
|
|
result($j,$e=0){$i=$this->query($j);if(!$i||!$i->num_rows){return
|
||
|
|
false;}return
|
||
|
|
mysql_result($i->_result,0,$e);}}class
|
||
|
|
Min_Result{var$num_rows,$_result,$_offset=0;function
|
||
|
|
Min_Result($i){$this->_result=$i;$this->num_rows=mysql_num_rows($i);}function
|
||
|
|
fetch_assoc(){return
|
||
|
|
mysql_fetch_assoc($this->_result);}function
|
||
|
|
fetch_row(){return
|
||
|
|
mysql_fetch_row($this->_result);}function
|
||
|
|
fetch_field(){$c=mysql_fetch_field($this->_result,$this->_offset++);$c->orgtable=$c->table;$c->orgname=$c->name;$c->charsetnr=($c->blob?63:0);return$c;}function
|
||
|
|
__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class
|
||
|
|
Min_DB
|
||
|
|
extends
|
||
|
|
Min_PDO{var$extension="PDO_MySQL";function
|
||
|
|
connect($F,$P,$T){$this->dsn("mysql:host=".str_replace(":",";unix_socket=",preg_replace('~:(\\d)~',';port=\\1',$F)),$P,$T);$this->query("SET NAMES utf8");return
|
||
|
|
true;}function
|
||
|
|
select_db($ia){return$this->query("USE ".idf_escape($ia));}function
|
||
|
|
query($j,$db=false){$this->setAttribute(1000,!$db);return
|
||
|
|
parent::query($j,$db);}}}function
|
||
|
|
idf_escape($N){return"`".str_replace("`","``",$N)."`";}function
|
||
|
|
table($N){return
|
||
|
|
idf_escape($N);}function
|
||
|
|
connect(){global$o;$g=new
|
||
|
|
Min_DB;$ya=$o->credentials();if($g->connect($ya[0],$ya[1],$ya[2])){$g->query("SET sql_quote_show_create = 1");return$g;}return$g->error;}function
|
||
|
|
get_databases($jf=true){global$g;$c=&get_session("dbs");if(!isset($c)){if($jf){restart_session();ob_flush();flush();}$c=get_vals($g->server_info>=5?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA":"SHOW DATABASES");}return$c;}function
|
||
|
|
limit($j,$s,$O,$L=0,$Wa=" "){return" $j$s".(isset($O)?$Wa."LIMIT $O".($L?" OFFSET $L":""):"");}function
|
||
|
|
limit1($j,$s){return
|
||
|
|
limit($j,$s,1);}function
|
||
|
|
db_collation($t,$Z){global$g;$c=null;$la=$g->result("SHOW CREATE DATABASE ".idf_escape($t),1);if(preg_match('~ COLLATE ([^ ]+)~',$la,$k)){$c=$k[1];}elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$la,$k)){$c=$Z[$k[1]][-1];}return$c;}function
|
||
|
|
engines(){$c=array();foreach(get_rows("SHOW ENGINES")as$a){if(ereg("YES|DEFAULT",$a["Support"])){$c[]=$a["Engine"];}}return$c;}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($_){$c=array();foreach($_
|
||
|
|
as$t){$c[$t]=count(get_vals("SHOW TABLES IN ".idf_escape($t)));}return$c;}function
|
||
|
|
table_status($f=""){$c=array();foreach(get_rows("SHOW TABLE STATUS".($f!=""?" LIKE ".q(addcslashes($f,"%_")):""))as$a){if($a["Engine"]=="InnoDB"){$a["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$a["Comment"]);}if(!isset($a["Rows"])){$a["Comment"]="";}if($f!=""){return$a;}$c[$a["Name"]]=$a;}return$c;}function
|
||
|
|
is_view($D){return!isset($D["Rows"]);}function
|
||
|
|
fk_support($D){return($D["Engine"]=="InnoDB");}function
|
||
|
|
fields($h){$c=array();foreach(get_rows("SHOW FULL COLUMNS FROM ".table($h))as$a){preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~',$a["Type"],$k);$c[$a["Field"]]=array("field"=>$a["Field"],"full_type"=>$a["Type"],"type"=>$k[1],"length"=>$k[2],"unsigned"=>ltrim($k[3].$k[4]),"default"=>($a["Default"]!=""||ereg("char",$k[1])?$a["Default"]:null),"null"=>($a["Null"]=="YES"),"auto_increment"=>($a["Extra"]=="auto_increment"),"on_update"=>(eregi('^on update (.+)',$a["Extra"],$k)?$k[1]:""),"collation"=>$a["Collation"],"privileges"=>array_flip(explode(",",$a["Privileges"])),"comment"=>$a["Comment"],"primary"=>($a["Key"]=="PRI"),);}return$c;}function
|
||
|
|
indexes($h,$G=null){global$g;if(!is_object($G)){$G=$g;}$c=array();foreach(get_rows("SHOW INDEX FROM ".table($h),$G)as$a){$c[$a["Key_name"]]["type"]=($a["Key_name"]=="PRIMARY"?"PRIMARY":($a["Index_type"]=="FULLTEXT"?"FULLTEXT":($a["Non_unique"]?"INDEX":"UNIQUE")));$c[$a["Key_name"]]["columns"][]=$a["Column_name"];$c[$a["Key_name"]]["lengths"][]=$a["Sub_part"];}return$c;}function
|
||
|
|
foreign_keys($h){global$g,$fb;static$ba='`(?:[^`]|``)+`';$c=array();$if=$g->result("SHOW CREATE TABLE ".table($h),1);if($if){preg_match_all("~CONSTRAINT ($ba) FOREIGN KEY \\(((?:$ba,? ?)+)\\) REFERENCES ($ba)(?:\\.($ba))? \\(((?:$ba,? ?)+)\\)(?: ON DELETE (".implode("|",$fb)."))?(?: ON UPDATE (".implode("|",$fb)."))?~",$if,$oa,PREG_SET_ORDER);foreach($oa
|
||
|
|
as$k){preg_match_all("~$ba~",$k[2],$Ga);preg_match_all("~$ba~",$k[5],$ea);$c[idf_unescape($k[1])]=array("db"=>idf_unescape($k[4]!=""?$k[3]:$k[4]),"table"=>idf_unescape($k[4]!=""?$k[4]:$k[3]),"source"=>array_map('idf_unescape',$Ga[0]),"target"=>array_map('idf_unescape',$ea[0]),"on_delete"=>$k[6],"on_update"=>$k[7],);}}return$c;}function
|
||
|
|
view($f){global$g;return
|
||
|
|
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU','',$g->result("SHOW CREATE VIEW ".table($f),1)));}function
|
||
|
|
collations(){$c=array();foreach(get_rows("SHOW COLLATION")as$a){if($a["Default"]){$c[$a["Charset"]][-1]=$a["Collation"];}else{$c[$a["Charset"]][]=$a["Collation"];}}ksort($c);foreach($c
|
||
|
|
as$d=>$b){asort($c[$d]);}return$c;}function
|
||
|
|
information_schema($t){global$g;return($g->server_info>=5&&$t=="information_schema");}function
|
||
|
|
error(){global$g;return
|
||
|
|
h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$g->error));}function
|
||
|
|
exact_value($b){return
|
||
|
|
q($b)." COLLATE utf8_bin";}function
|
||
|
|
create_database($t,$U){set_session("dbs",null);return
|
||
|
|
queries("CREATE DATABASE ".idf_escape($t).($U?" COLLATE ".q($U):""));}function
|
||
|
|
drop_databases($_){set_session("dbs",null);return
|
||
|
|
apply_queries("DROP DATABASE",$_,'idf_escape');}function
|
||
|
|
rename_database($f,$U){if(create_database($f,$U)){$dc=array();foreach(tables_list()as$h=>$z){$dc[]=table($h)." TO ".idf_escape($f).".".table($h);}if(!$dc||queries("RENAME TABLE ".implode(", ",$dc))){queries("DROP DATABASE ".idf_escape(DB));return
|
||
|
|
true;}}return
|
||
|
|
false;}function
|
||
|
|
auto_increment(){$Dd=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$x){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$x["columns"],true)){$Dd="";break;}if($x["type"]=="PRIMARY"){$Dd=" UNIQUE";}}}return" AUTO_INCREMENT$Dd";}function
|
||
|
|
alter_table($h,$f,$p,$Oa,$_a,$yb,$U,$Sa,$vb){$u=array();foreach($p
|
||
|
|
as$e){$u[]=($e[1]?($h!=""?($e[0]!=""?"CHANGE ".idf_escape($e[0]):"ADD"):" ")." ".implode($e[1]).($h!=""?" $e[2]":""):"DROP ".idf_escape($e[0]));}$u=array_merge($u,$Oa);$fc="COMMENT=".q($_a).($yb?" ENGINE=".q($yb):"").($U?" COLLATE ".q($U):"").($Sa!=""?" AUTO_INCREMENT=$Sa":"").$vb;if($h==""){return
|
||
|
|
queries("CREATE TABLE ".table($f)." (\n".implode(",\n",$u)."\n) $fc");}if($h!=$f){$u[]="RENAME TO ".table($f);}$u[]=$fc;return
|
||
|
|
queries("ALTER TABLE ".table($h)."\n".implode(",\n",$u));}function
|
||
|
|
alter_indexes($h,$u){foreach($u
|
||
|
|
as$d=>$b){$u[$d]=($b[2]?"\nDROP INDEX ":"\nADD $b[0] ".($b[0]=="PRIMARY"?"KEY ":"")).$b[1];}return
|
||
|
|
queries("ALTER TABLE ".table($h).implode(",",$u));}function
|
||
|
|
truncate_tables($E){return
|
||
|
|
apply_queries("TRUNCATE TABLE",$E);}function
|
||
|
|
drop_views($X){return
|
||
|
|
queries("DROP VIEW ".implode(", ",array_map('table',$X)));}function
|
||
|
|
drop_tables($E){return
|
||
|
|
queries("DROP TABLE ".implode(", ",array_map('table',$E)));}function
|
||
|
|
move_tables($E,$X,$ea){$dc=array();foreach(array_merge($E,$X)as$h){$dc[]=table($h)." TO ".idf_escape($ea).".".table($h);}return
|
||
|
|
queries("RENAME TABLE ".implode(", ",$dc));}function
|
||
|
|
copy_tables($E,$X,$ea){foreach($E
|
||
|
|
as$h){$f=($ea==DB?table("copy_$h"):idf_escape($ea).".".table($h));if(!queries("DROP TABLE IF EXISTS $f")||!queries("CREATE TABLE $f LIKE ".table($h))||!queries("INSERT INTO $f SELECT * FROM ".table($h))){return
|
||
|
|
false;}}foreach($X
|
||
|
|
as$h){$f=($ea==DB?table("copy_$h"):idf_escape($ea).".".table($h));$cc=view($h);if(!queries("DROP VIEW IF EXISTS $f")||!queries("CREATE VIEW $f AS $cc[select]")){return
|
||
|
|
false;}}return
|
||
|
|
true;}function
|
||
|
|
trigger($f){$H=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($f));return
|
||
|
|
reset($H);}function
|
||
|
|
triggers($h){$c=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($h,"%_")))as$a){$c[$a["Trigger"]]=array($a["Timing"],$a["Event"]);}return$c;}function
|
||
|
|
trigger_options(){return
|
||
|
|
array("Timing"=>array("BEFORE","AFTER"),"Type"=>array("FOR EACH ROW"),);}function
|
||
|
|
routine($f,$z){global$g,$Gb,$jc,$R;$kf=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$Ce="((".implode("|",array_merge(array_keys($R),$kf)).")(?:\\s*\\(((?:[^'\")]*|$Gb)+)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s]+)['\"]?)?";$ba="\\s*(".($z=="FUNCTION"?"":implode("|",$jc)).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$Ce";$la=$g->result("SHOW CREATE $z ".idf_escape($f),2);preg_match("~\\(((?:$ba\\s*,?)*)\\)".($z=="FUNCTION"?"\\s*RETURNS\\s+$Ce":"")."\\s*(.*)~is",$la,$k);$p=array();preg_match_all("~$ba\\s*,?~is",$k[1],$oa,PREG_SET_ORDER);foreach($oa
|
||
|
|
as$Za){$f=str_replace("``","`",$Za[2]).$Za[3];$p[]=array("field"=>$f,"type"=>strtolower($Za[5]),"length"=>preg_replace_callback("~$Gb~s",'normalize_enum',$Za[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$Za[8] $Za[7]"))),"full_type"=>$Za[4],"inout"=>strtoupper($Za[1]),"collation"=>strtolower($Za[9]),);}if($z!="FUNCTION"){return
|
||
|
|
array("fields"=>$p,"definition"=>$k[11]);}return
|
||
|
|
array("fields"=>$p,"returns"=>array("type"=>$k[12],"length"=>$k[13],"unsigned"=>$k[15],"collation"=>$k[16]),"definition"=>$k[17],);}function
|
||
|
|
routines(){return
|
||
|
|
get_rows("SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function
|
||
|
|
begin(){return
|
||
|
|
queries("BEGIN");}function
|
||
|
|
insert_into($h,$r){return
|
||
|
|
queries("INSERT INTO ".table($h)." (".implode(", ",array_keys($r)).")\nVALUES (".implode(", ",$r).")");}function
|
||
|
|
insert_update($h,$r,$Qa){foreach($r
|
||
|
|
as$d=>$b){$r[$d]="$d = $b";}$qa=implode(", ",$r);return
|
||
|
|
queries("INSERT INTO ".table($h)." SET $qa ON DUPLICATE KEY UPDATE $qa");}function
|
||
|
|
last_id(){global$g;return$g->result("SELECT LAST_INSERT_ID()");}function
|
||
|
|
explain($g,$j){return$g->query("EXPLAIN $j");}function
|
||
|
|
types(){return
|
||
|
|
array();}function
|
||
|
|
schemas(){return
|
||
|
|
array();}function
|
||
|
|
get_schema(){return"";}function
|
||
|
|
set_schema($Ka){return
|
||
|
|
true;}function
|
||
|
|
create_sql($h,$Sa){global$g;$c=$g->result("SHOW CREATE TABLE ".table($h),1);if(!$Sa){$c=preg_replace('~ AUTO_INCREMENT=\\d+~','',$c);}return$c;}function
|
||
|
|
truncate_sql($h){return"TRUNCATE ".table($h);}function
|
||
|
|
use_sql($ia){return"USE ".idf_escape($ia);}function
|
||
|
|
trigger_sql($h,$V){$c="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($h,"%_")),null,"-- ")as$a){$c.="\n".($V=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".idf_escape($a["Trigger"]).";;\n":"")."CREATE TRIGGER ".idf_escape($a["Trigger"])." $a[Timing] $a[Event] ON ".table($a["Table"])." FOR EACH ROW\n$a[Statement];;\n";}return$c;}function
|
||
|
|
show_variables(){return
|
||
|
|
get_key_vals("SHOW VARIABLES");}function
|
||
|
|
show_status(){return
|
||
|
|
get_key_vals("SHOW STATUS");}function
|
||
|
|
support($rb){global$g;return!ereg("scheme|sequence|type".($g->server_info<5.1?"|event|partitioning".($g->server_info<5?"|view|routine|trigger":""):""),$rb);}$v="sql";$R=array();$La=array();foreach(array(lang(12)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(13)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(14)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(15)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(18)=>array("enum"=>65535,"set"=>64),)as$d=>$b){$R+=$b;$La[$d]=array_keys($b);}$ob=array("unsigned","zerofill","unsigned zerofill");$gc=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","");$da=array("char_length","date","from_unixtime","hex","lower","round","sec_to_time","time_to_sec","upper");$lb=array("avg","count","count distinct","group_concat","max","min","sum");$Nb=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"])."&":""):''));$tc="3.2.2";class
|
||
|
|
Adminer{var$operators;function
|
||
|
|
name(){return"Adminer";}function
|
||
|
|
credentials(){return
|
||
|
|
array(SERVER,$_GET["username"],get_session("pwds"));}function
|
||
|
|
permanentLogin(){return
|
||
|
|
password_file();}function
|
||
|
|
database(){return
|
||
|
|
DB;}function
|
||
|
|
headers(){header("X-Frame-Options: deny");header("X-XSS-Protection: 0");}function
|
||
|
|
head(){return
|
||
|
|
true;}function
|
||
|
|
loginForm(){global$na;echo'<table cellspacing="0">
|
||
|
|
<tr><th>',lang(19),'<td>',adminer_html_select("driver",$na,DRIVER,"loginDriver(this);"),'<tr><th>',lang(20),'<td><input name="server" value="',h(SERVER),'">
|
||
|
|
<tr><th>',lang(21),'<td><input id="username" name="username" value="',h($_GET["username"]),'">
|
||
|
|
<tr><th>',lang(22);?><td><input type="password" name="password">
|
||
|
|
</table>
|
||
|
|
<script type="text/javascript">
|
||
|
|
var username = document.getElementById('username');
|
||
|
|
username.focus();
|
||
|
|
username.form['driver'].onchange();
|
||
|
|
</script>
|
||
|
|
<?php
|
||
|
|
|
||
|
|
echo"<p><input type='submit' value='".lang(23)."'>\n",checkbox("permanent",1,$_COOKIE["adminer_permanent"],lang(24))."\n";}function
|
||
|
|
login($Vf,$T){return
|
||
|
|
true;}function
|
||
|
|
tableName($gd){return
|
||
|
|
h($gd["Name"]);}function
|
||
|
|
fieldName($e,$Xa=0){return'<span title="'.h($e["full_type"]).'">'.h($e["field"]).'</span>';}function
|
||
|
|
selectLinks($gd,$r=""){echo'<p class="tabs">';$Ja=array("select"=>lang(25),"table"=>lang(26));if(is_view($gd)){$Ja["view"]=lang(27);}else{$Ja["create"]=lang(28);}if(isset($r)){$Ja["edit"]=lang(29);}foreach($Ja
|
||
|
|
as$d=>$b){echo" <a href='".h(ME)."$d=".urlencode($gd["Name"]).($d=="edit"?$r:"")."'".bold(isset($_GET[$d])).">$b</a>";}echo"\n";}function
|
||
|
|
foreignKeys($h){return
|
||
|
|
foreign_keys($h);}function
|
||
|
|
backwardKeys($h,$Zf){return
|
||
|
|
array();}function
|
||
|
|
backwardKeysPrint($ag,$a){}function
|
||
|
|
selectQuery($j){global$v;return"<p><a href='".h(remove_from_uri("page"))."&page=last' title='".lang(30)."'>>></a> <code class='jush-$v'>".h(str_replace("\n"," ",$j))."</code> <a href='".h(ME)."sql=".urlencode($j)."'>".lang(31)."</a></p>\n";}function
|
||
|
|
rowDescription($h){return"";}function
|
||
|
|
rowDescriptions($H,$vf){return$H;}function
|
||
|
|
selectVal($b,$w,$e){$c=($b!="<i>NULL</i>"&&ereg("char|binary",$e["type"])&&!ereg("var",$e["type"])?"<code>$b</code>":$b);if(ereg('blob|bytea|raw|file',$e["type"])&&!is_utf8($b)){$c=lang(32,strlen(html_entity_decode($b,ENT_QUOTES)));}return($w?"<a href='$w'>$c</a>":$c);}function
|
||
|
|
editVal($b,$e){return(ereg("binary",$e["type"])?reset(unpack("H*",$b)):$b);}function
|
||
|
|
selectColumnsPrint($Q,$B){global$da,$lb;print_fieldset("select",lang(33),$Q);$l=0;$Oe=array(lang(34)=>$da,lang(35)=>$lb);foreach($Q
|
||
|
|
as$d=>$b){$b=$_GET["columns"][$d];echo"<div>".adminer_html_select("columns[$l][fun]",array(-1=>"")+$Oe,$b["fun"]),"(<select name='columns[$l][col]'><option>".optionlist($B,$b["col"],true)."</select>)</div>\n";$l++;}echo"<div>".adminer_html_select("columns[$l][fun]",array(-1=>"")+$Oe,"","this.nextSibling.nextSibling.onchange();"),"(<select name='columns[$l][col]' onchange='selectAddRow(this);'><option>".optionlist($B,null,true)."</select>)</div>\n","</div></fieldset>\n";}function
|
||
|
|
selectSearchPrint($s,$B,$J){print_fieldset("search",lang(36),$s);foreach($J
|
||
|
|
as$l=>$x){if($x["type"]=="FULLTEXT"){echo"(<i>".implode("</i>, <i>",array_map('h',$x["columns"]))."</i>) AGAINST"," <input name='fulltext[$l]' value='".h($_GET["fulltext"][$l])."'>",checkbox("boolean[$l]",1,isset($_GET["boolean"][$l]),"BOOL"),"<br>\n";}}$l=0;foreach((array)$_GET["where"]as$b){if("$b[col]$b[val]"!=""&&in_array($b["op"],$this->operators)){echo"<div><select name='where[$l][col]'><option value=''>(".lang(37).")".optionlist($B,$b["col"],true)."</select>",adminer_html_select("where[$l][op]",$this->operators,$b["op"]),"<input name='where[$l][val]' value='".h($b["val"])."'></div>\n";$l++;}}echo"<div><select name='where[$l][col]' onchange='selectAddRow(this);'><option value=''>(".lang(37).")".optionlist($B,null,true)."</select>",adminer_html_select("where[$l][op]",$this->operators,"="),"<input name='where[$l][val]'></div>\n","</div></fieldset>\n";}function
|
||
|
|
selectOrderPrint($Xa,$B,$J){print_fieldset("sort",lang(38),$Xa);$l=0;foreach((array)$_GET["order"]as$d=>$b){if(isset($B[$b])){echo"<div><select name='order[$l]'><option>".optionlist($B,$b,true)."</select>",checkbox("desc[$l]",1,isset($_GET["desc"][$d]),lang(39))."</div>\n";$l++;}}echo"<div><select name='order[$l]' onchange='selectAddRow(this);'><option>".optionlist($B,null,true)."</select>","<label><input type='checkbox' name='desc[$l]' value='1'>".lang(39)."</label></div>\n";echo"</div></fieldset>\n";}function
|
||
|
|
selectLimitPrint($O){echo"<fieldset><legend>".lang(40)."</legend><div>";echo"<input name='limit' size='3' value='".h($O)."'>","</div></fieldset>\n";}function
|
||
|
|
selectLengthPrint($Db){if(isset($Db)){echo"<fieldset><legend>".lang(41)."</legend><div>",'<input name="text_length" size="3" value="'.h($Db).'">',"</div></fieldset>\n";}}function
|
||
|
|
selectActionPrint(){echo"<fieldset><legend>".lang(42)."</legend><div>","<input type='submit' value='".lang(33)."'>","</div></fieldset>\n";}function
|
||
|
|
selectEmailPrint($bg,$B){}function
|
||
|
|
selectColumnsProcess($B,$J){global$da,$lb;$Q=array();$pa=array();foreach((array)$_GET["columns"]as$d=>$b){if($b["fun"]=="count"||(isset($B[$b["col"]])&&(!$b["fun"]||in_array($b["fun"],$da)||in_array($b["fun"],$lb)))){$Q[$d]=apply_sql_function($b["fun"],(isset($B[$b["col"]])?idf_escape($b["col"]):"*"));if(!in_array($b["fun"],$lb)){$pa[]=$Q[$d];}}}return
|
||
|
|
array($Q,$pa);}function
|
||
|
|
selectSearchProcess($p,$J){global$v;$c=array();foreach($J
|
||
|
|
as$l=>$x){if($x["type"]=="FULLTEXT"&&$_GET["fulltext"][$l]!=""){$c[]="MATCH (".implode(", ",array_map('idf_escape',$x["columns"])).") AGAINST (".q($_GET["fulltext"][$l]).(isset($_GET["boolean"][$l])?" IN BOOLEAN MODE":"").")";}}foreach((array)$_GET["where"]as$b){if("$b[col]$b[val]"!=""&&in_array($b["op"],$this->operators)){$Ub=" $b[op]";if(ereg('IN$',$b["op"])){$Tb=process_length($b["val"]);$Ub.=" (".($Tb!=""?$Tb:"NULL").")";}elseif(!$b["op"]){$Ub.=$b["val"];}elseif($b["op"]=="LIKE %%"){$Ub=" LIKE ".$this->processInput($p[$b["col"]],"%$b[val]%");}elseif(!ereg('NULL$',$b["op"])){$Ub.=" ".$this->processInput($p[$b["col"]],$b["val"]);}if($b["col"]!=""){$c[]=idf_escape($b["col"]).$Ub;}else{$mb=array();foreach($p
|
||
|
|
as$f=>$e){if(is_numeric($b["val"])||!ereg('int|float|double|decimal',$e["type"])){$f=idf_escape($f);$mb[]=($v=="sql"&&ereg('char|text|enum|set',$e["type"])&&!ereg('^utf8',$e["collation"])?"CONVERT($f USING utf8)":$f);}}$c[]=($mb?"(".implode("$Ub OR ",$mb)."$Ub)":"0");}}}return$c;}function
|
||
|
|
selectOrderProcess($p,$J){$c=array();foreach((array)$_GET["order"]as$d=>$b){if(isset($p[$b])||preg_match('~^((COUNT\\(DISTINCT |[A-Z0-9_]+\\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\\)|COUNT\\(\\*\\))$~',$b)){$c[]=(isset($p[$b])?idf_escape($b):$b).(isset($_GET["desc"][$d])?" DESC":"");}}return$c;}function
|
||
|
|
selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"30");}function
|
||
|
|
selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function
|
||
|
|
selectEmailProcess($s,$vf){return
|
||
|
|
false;}function
|
||
|
|
messageQuery($j){global$v;static$Qc=0;restart_session();$S="sql-".($Qc++);$eb=&get_session("queries");if(strlen($j)>1e6){$j=ereg_replace('[\x80-\xFF]+$','',substr($j,0,1e6))."\n...";}$eb[$_GET["db"]][]=$j;return" <a href='#$S' onclick=\"return !toggle('$S');\">".lang(43)."</a><div id='$S' class='hidden'><pre><code class='jush-$v'>".shorten_utf8($j,1000).'</code></pre><p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($eb[$_GET["db"]])-1)).'">'.lang(31).'</a></div>';}function
|
||
|
|
editFunctions($e){global$Nb;$c=($e["null"]?"NULL/":"");foreach($Nb
|
||
|
|
as$d=>$da){if(!$d||(!isset($_GET["call"])&&(isset($_GET["select"])||where($_GET)))){foreach($da
|
||
|
|
as$ba=>$b){if(!$ba||ereg($ba,$e["type"])){$c.="/$b";}}if($d&&!ereg('set|blob|bytea|raw|file',$e["type"])){$c.="/=";}}}return
|
||
|
|
explode("/",$c);}function
|
||
|
|
editInput($h,$e,$Ra,$q){if($e["type"]=="enum"){return(isset($_GET["select"])?"<label><input type='radio'$Ra value='-1' checked><i>".lang(5)."</i></label> ":"").($e["null"]?"<label><input type='radio'$Ra value=''".(isset($q)||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").enum_input("radio",$Ra,$e,$q,0);}return"";}function
|
||
|
|
processInput($e,$q,$K=""){if($K=="="){return$q;}$f=$e["field"];$c=($e["type"]=="bit"&&ereg('^[0-9]+$',$q)?$q:q($q));if(ereg('^(now|getdate|uuid)$',$K)){$c="$K()";}elseif(ereg('^current_(date|timestamp)$',$K)){$c=$K;}elseif(ereg('^([+-]|\\|\\|)$',$K)){$c=idf_escape($f)." $K $c";}elseif(ereg('^[+-] interval$',$K)){$c=idf_escape($f)." $K ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+$~i",$q)?$q:$c);}elseif(ereg('^(addtime|subtime|concat)$',$K)){$c="$K(".idf_escape($f).", $c)";}elseif(ereg('^(md5|sha1|password|encrypt|hex)$',$K)){$c="$K($c)";}if(ereg("binary",$e["type"])){$c="unhex($c)";}return$c;}function
|
||
|
|
dumpOutput(){$c=array('text'=>lang(44),'file'=>lang(45));if(function_exists('gzencode')){$c['gz']='gzip';}if(function_exists('bzcompress')){$c['bz2']='bzip2';}return$c;}function
|
||
|
|
dumpFormat(){return
|
||
|
|
array('sql'=>'SQL','csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
|
||
|
|
dumpTable($h,$V,$bd=false){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($V){dump_csv(array_keys(fields($h)));}}elseif($V){$la=create_sql($h,$_POST["auto_increment"]);if($la){if($V=="DROP+CREATE"){echo"DROP ".($bd?"VIEW":"TABLE")." IF EXISTS ".table($h).";\n";}if($bd){$la=preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\\1)',logged_user()).'`~','\\1',$la);}echo($V!="CREATE+ALTER"?$la:($bd?substr_replace($la," OR REPLACE",6,0):substr_replace($la," IF NOT EXISTS",12,0))).";\n\n";}if($V=="CREATE+ALTER"&&!$bd){$j="SELECT COLUMN_NAME, COLUMN_DEFAULT, IS_NULLABLE, COLLATION_NAME, COLUMN_TYPE, EXTRA, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($h)." ORDER BY ORDINAL_POSITION";echo"DELIMITER ;;
|
||
|
|
CREATE PROCEDURE adminer_alter (INOUT alter_command text) BEGIN
|
||
|
|
DECLARE _column_name, _collation_name, after varchar(64) DEFAULT '';
|
||
|
|
DECLARE _column_type, _column_default text;
|
||
|
|
DECLARE _is_nullable char(3);
|
||
|
|
DECLARE _extra varchar(30);
|
||
|
|
DECLARE _column_comment varchar(255);
|
||
|
|
DECLARE done, set_after bool DEFAULT 0;
|
||
|
|
DECLARE add_columns text DEFAULT '";$p=array();$Jb="";foreach(get_rows($j)as$a){$za=$a["COLUMN_DEFAULT"];$a["default"]=(isset($za)?q($za):"NULL");$a["after"]=q($Jb);$a["alter"]=escape_string(idf_escape($a["COLUMN_NAME"])." $a[COLUMN_TYPE]".($a["COLLATION_NAME"]?" COLLATE $a[COLLATION_NAME]":"").(isset($za)?" DEFAULT ".($za=="CURRENT_TIMESTAMP"?$za:$a["default"]):"").($a["IS_NULLABLE"]=="YES"?"":" NOT NULL").($a["EXTRA"]?" $a[EXTRA]":"").($a["COLUMN_COMMENT"]?" COMMENT ".q($a["COLUMN_COMMENT"]):"").($Jb?" AFTER ".idf_escape($Jb):" FIRST"));echo", ADD $a[alter]";$p[]=$a;$Jb=$a["COLUMN_NAME"];}echo"';
|
||
|
|
DECLARE columns CURSOR FOR $j;
|
||
|
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
|
||
|
|
SET @alter_table = '';
|
||
|
|
OPEN columns;
|
||
|
|
REPEAT
|
||
|
|
FETCH columns INTO _column_name, _column_default, _is_nullable, _collation_name, _column_type, _extra, _column_comment;
|
||
|
|
IF NOT done THEN
|
||
|
|
SET set_after = 1;
|
||
|
|
CASE _column_name";foreach($p
|
||
|
|
as$a){echo"
|
||
|
|
WHEN ".q($a["COLUMN_NAME"])." THEN
|
||
|
|
SET add_columns = REPLACE(add_columns, ', ADD $a[alter]', '');
|
||
|
|
IF NOT (_column_default <=> $a[default]) OR _is_nullable != '$a[IS_NULLABLE]' OR _collation_name != '$a[COLLATION_NAME]' OR _column_type != ".q($a["COLUMN_TYPE"])." OR _extra != '$a[EXTRA]' OR _column_comment != ".q($a["COLUMN_COMMENT"])." OR after != $a[after] THEN
|
||
|
|
SET @alter_table = CONCAT(@alter_table, ', MODIFY $a[alter]');
|
||
|
|
END IF;";}echo"
|
||
|
|
ELSE
|
||
|
|
SET @alter_table = CONCAT(@alter_table, ', DROP ', _column_name);
|
||
|
|
SET set_after = 0;
|
||
|
|
END CASE;
|
||
|
|
IF set_after THEN
|
||
|
|
SET after = _column_name;
|
||
|
|
END IF;
|
||
|
|
END IF;
|
||
|
|
UNTIL done END REPEAT;
|
||
|
|
CLOSE columns;
|
||
|
|
IF @alter_table != '' OR add_columns != '' THEN
|
||
|
|
SET alter_command = CONCAT(alter_command, 'ALTER TABLE ".table($h)."', SUBSTR(CONCAT(add_columns, @alter_table), 2), ';\\n');
|
||
|
|
END IF;
|
||
|
|
END;;
|
||
|
|
DELIMITER ;
|
||
|
|
CALL adminer_alter(@adminer_alter);
|
||
|
|
DROP PROCEDURE adminer_alter;
|
||
|
|
|
||
|
|
";}}}function
|
||
|
|
dumpData($h,$V,$j){global$g,$v;$Ke=($v=="sqlite"?0:1048576);if($V){if($_POST["format"]=="sql"&&$V=="TRUNCATE+INSERT"){echo
|
||
|
|
truncate_sql($h).";\n";}if($_POST["format"]=="sql"){$p=fields($h);}$i=$g->query($j,1);if($i){$sc="";$kb="";while($a=$i->fetch_assoc()){if($_POST["format"]!="sql"){if($V=="table"){dump_csv(array_keys($a));$V="INSERT";}dump_csv($a);}else{if(!$sc){$sc="INSERT INTO ".table($h)." (".implode(", ",array_map('idf_escape',array_keys($a))).") VALUES";}foreach($a
|
||
|
|
as$d=>$b){$a[$d]=(isset($b)?(ereg('int|float|double|decimal',$p[$d]["type"])?$b:q($b)):"NULL");}$ma=implode(",\t",$a);if($V=="INSERT+UPDATE"){$r=array();foreach($a
|
||
|
|
as$d=>$b){$r[]=idf_escape($d)." = $b";}echo"$sc ($ma) ON DUPLICATE KEY UPDATE ".implode(", ",$r).";\n";}else{$ma=($Ke?"\n":" ")."($ma)";if(!$kb){$kb=$sc.$ma;}elseif(strlen($kb)+2+strlen($ma)<$Ke){$kb.=",$ma";}else{$kb.=";\n";echo$kb;$kb=$sc.$ma;}}}}if($_POST["format"]=="sql"&&$V!="INSERT+UPDATE"&&$kb){$kb.=";\n";echo$kb;}}elseif($_POST["format"]=="sql"){echo"-- ".str_replace("\n"," ",$g->error)."\n";}}}function
|
||
|
|
dumpHeaders($Sc,$_d=false){$Na=$_POST["output"];$Hb=($_POST["format"]=="sql"?"sql":($_d?"tar":"csv"));header("Content-Type: ".($Na=="bz2"?"application/x-bzip":($Na=="gz"?"application/x-gzip":($Hb=="tar"?"application/x-tar":($Hb=="sql"||$Na!="file"?"text/plain":"text/csv")."; charset=utf-8"))));if($Na=="bz2"){ob_start('bzcompress',1e6);}if($Na=="gz"){ob_start('gzencode',1e6);}return$Hb;}function
|
||
|
|
homepage(){echo'<p>'.($_GET["ns"]==""?'<a href="'.h(ME).'database=">'.lang(46)."</a>\n":"");if(support("scheme")){echo"<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?lang(47):lang(48))."</a>\n";}return
|
||
|
|
true;}function
|
||
|
|
navigation($Zb){global$tc,$g,$M,$v,$na;echo'<h1>
|
||
|
|
<a href="http://www.adminer.org/" id="h1">',$this->name(),'</a>
|
||
|
|
<span class="version">',$tc,'</span>
|
||
|
|
<a href="http://www.adminer.org/#download" id="version">',(version_compare($tc,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'</a>
|
||
|
|
</h1>
|
||
|
|
';if($Zb=="auth"){$Ba=true;foreach((array)$_SESSION["pwds"]as$Ib=>$Uf){foreach($Uf
|
||
|
|
as$F=>$Nf){foreach($Nf
|
||
|
|
as$P=>$T){if(isset($T)){if($Ba){echo"<p onclick='eventStop(event);'>\n";$Ba=false;}echo"<a href='".h(auth_url($Ib,$F,$P))."'>($na[$Ib]) ".h($P.($F!=""?"@$F":""))."</a><br>\n";}}}}}else{$_=get_databases();echo'<form action="" method="post">
|
||
|
|
<p class="logout">
|
||
|
|
';if(DB==""||!$Zb){echo"<a href='".h(ME)."sql='".bold(isset($_GET["sql"])).">".lang(43)."</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(49)."</a>\n";}}echo'<input type="submit" name="logout" value="',lang(50),'" onclick="eventStop(event);">
|
||
|
|
<input type="hidden" name="token" value="',$M,'">
|
||
|
|
</p>
|
||
|
|
</form>
|
||
|
|
<form action="">
|
||
|
|
<p>
|
||
|
|
';hidden_fields_get();echo($_?adminer_html_select("db",array(""=>"(".lang(51).")")+$_,DB,"this.form.submit();"):'<input name="db" value="'.h(DB).'">'),'<input type="submit" value="',lang(8),'"',($_?" class='hidden'":""),' onclick="eventStop(event);">
|
||
|
|
';if($Zb!="db"&&DB!=""&&$g->select_db(DB)){if(support("scheme")){echo"<br>".adminer_html_select("ns",array(""=>"(".lang(52).")")+schemas(),$_GET["ns"],"this.form.submit();");if($_GET["ns"]!=""){set_schema($_GET["ns"]);}}if($_GET["ns"]!==""&&!$Zb){echo'<p><a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".lang(53)."</a>\n";$E=tables_list();if(!$E){echo"<p class='message'>".lang(6)."\n";}else{$this->tablesPrint($E);$Ja=array();foreach($E
|
||
|
|
as$h=>$z){$Ja[]=preg_quote($h,'/');}echo"<script type='text/javascript'>\n","var jushLinks = { $v: [ '".js_escape(ME)."table=\$&', /\\b(".implode("|",$Ja).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$b){echo"jushLinks.$b = jushLinks.$v;\n";}echo"</script>\n";}}}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";}}function
|
||
|
|
tablesPrint($E){echo"<p id='tables'>\n";foreach($E
|
||
|
|
as$h=>$z){echo'<a href="'.h(ME).'select='.urlencode($h).'"'.bold($_GET["select"]==$h).">".lang(54)."</a> ",'<a href="'.h(ME).'table='.urlencode($h).'"'.bold($_GET["table"]==$h).">".$this->tableName(array("Name"=>$h))."</a><br>\n";}}}$o=(function_exists('adminer_object')?adminer_object():new
|
||
|
|
Adminer);if(!isset($o->operators)){$o->operators=$gc;}function
|
||
|
|
page_header($Je,$n="",$pc=array(),$Ie=""){global$ua,$o,$g,$na;header("Content-Type: text/html; charset=utf-8");$o->headers();$He=$Je.($Ie!=""?": ".h($Ie):"");$Le=strip_tags($He.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$o->name());if(is_ajax()){header("X-AJAX-Title: ".rawurlencode($Le));}else{echo'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||
|
|
<html lang="',$ua,'" dir="',lang(55),'">
|
||
|
|
<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>',$Le,'</title>
|
||
|
|
<link rel="shortcut icon" type="image/x-icon" href="',h(preg_replace("~\\?.*~","",ME))."?file=favicon.ico&version=3.2.2",'" id="favicon">
|
||
|
|
<link rel="stylesheet" type="text/css" href="',h(preg_replace("~\\?.*~","",ME))."?file=default.css&version=3.2.2",'">
|
||
|
|
<script type="text/javascript">
|
||
|
|
var areYouSure = \'',lang(56),'\';
|
||
|
|
</script>
|
||
|
|
<script type="text/javascript" src="',h(preg_replace("~\\?.*~","",ME))."?file=functions.js&version=3.2.2",'"></script>
|
||
|
|
';if($o->head()&&file_exists("adminer.css")){echo'<link rel="stylesheet" type="text/css" href="adminer.css">
|
||
|
|
';}echo'
|
||
|
|
<body class="',lang(55),' nojs" onclick="return bodyClick(event, \'',js_escape(DB),'\', \'',js_escape($_GET["ns"]),'\');" 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(/(^|\s)nojs(\s|$)/, '$1js$2');
|
||
|
|
</script>
|
||
|
|
|
||
|
|
<div id="content">
|
||
|
|
<?php
|
||
|
|
}if(isset($pc)){$w=substr(preg_replace('~(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.($w?h($w):".").'">'.$na[DRIVER].'</a> » ';$w=substr(preg_replace('~(db|ns)=[^&]*&~','',ME),0,-1);$F=(SERVER!=""?h(SERVER):lang(20));if($pc===false){echo"$F\n";}else{echo"<a href='".($w?h($w):".")."'>$F</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($pc))){echo'<a href="'.h($w."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';}if(is_array($pc)){if($_GET["ns"]!=""){echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';}foreach($pc
|
||
|
|
as$d=>$b){$rc=(is_array($b)?$b[1]:$b);if($rc!=""){echo'<a href="'.h(ME."$d=").urlencode(is_array($b)?$b[0]:$b).'">'.h($rc).'</a> » ';}}}echo"$Je\n";}}echo"<span id='loader'></span>\n","<h2>$He</h2>\n";restart_session();$Me=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Qe=$_SESSION["messages"][$Me];if($Qe){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Qe)."</div>\n";unset($_SESSION["messages"][$Me]);}$_=&get_session("dbs");if(DB!=""&&$_&&!in_array(DB,$_,true)){$_=null;}if($n){echo"<div class='error'>$n</div>\n";}define("PAGE_HEADER",1);}function
|
||
|
|
page_footer($Zb=""){global$o;if(!is_ajax()){echo'</div>
|
||
|
|
|
||
|
|
';switch_lang();echo'<div id="menu">
|
||
|
|
';$o->navigation($Zb);echo'</div>
|
||
|
|
';}}function
|
||
|
|
int32($fa){while($fa>=2147483648){$fa-=4294967296;}while($fa<=-2147483649){$fa+=4294967296;}return(int)$fa;}function
|
||
|
|
long2str($y,$Hd){$ma='';foreach($y
|
||
|
|
as$b){$ma.=pack('V',$b);}if($Hd){return
|
||
|
|
substr($ma,0,end($y));}return$ma;}function
|
||
|
|
str2long($ma,$Hd){$y=array_values(unpack('V*',str_pad($ma,4*ceil(strlen($ma)/4),"\0")));if($Hd){$y[]=strlen($ma);}return$y;}function
|
||
|
|
xxtea_mx($Ca,$xa,$Fa,$Ma){return
|
||
|
|
int32((($Ca>>5&0x7FFFFFF)^$xa<<2)+(($xa>>3&0x1FFFFFFF)^$Ca<<4))^int32(($Fa^$xa)+($Ma^$Ca));}function
|
||
|
|
encrypt_string($Fc,$d){if($Fc==""){return"";}$d=array_values(unpack("V*",pack("H*",md5($d))));$y=str2long($Fc,true);$fa=count($y)-1;$Ca=$y[$fa];$xa=$y[0];$aa=floor(6+52/($fa+1));$Fa=0;while($aa-->0){$Fa=int32($Fa+0x9E3779B9);$Ec=$Fa>>2&3;for($wa=0;$wa<$fa;$wa++){$xa=$y[$wa+1];$Mb=xxtea_mx($Ca,$xa,$Fa,$d[$wa&3^$Ec]);$Ca=int32($y[$wa]+$Mb);$y[$wa]=$Ca;}$xa=$y[0];$Mb=xxtea_mx($Ca,$xa,$Fa,$d[$wa&3^$Ec]);$Ca=int32($y[$fa]+$Mb);$y[$fa]=$Ca;}return
|
||
|
|
long2str($y,false);}function
|
||
|
|
decrypt_string($Fc,$d){if($Fc==""){return"";}$d=array_values(unpack("V*",pack("H*",md5($d))));$y=str2long($Fc,false);$fa=count($y)-1;$Ca=$y[$fa];$xa=$y[0];$aa=floor(6+52/($fa+1));$Fa=int32($aa*0x9E3779B9);while($Fa){$Ec=$Fa>>2&3;for($wa=$fa;$wa>0;$wa--){$Ca=$y[$wa-1];$Mb=xxtea_mx($Ca,$xa,$Fa,$d[$wa&3^$Ec]);$xa=int32($y[$wa]-$Mb);$y[$wa]=$xa;}$Ca=$y[$fa];$Mb=xxtea_mx($Ca,$xa,$Fa,$d[$wa&3^$Ec]);$xa=int32($y[0]-$Mb);$y[0]=$xa;$Fa=int32($Fa-0x9E3779B9);}return
|
||
|
|
long2str($y,true);}$g='';$M=$_SESSION["token"];if(!$_SESSION["token"]){$_SESSION["token"]=rand(1,1e6);}$_b=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$b){list($d)=explode(":",$b);$_b[$d]=$b;}}if(isset($_POST["server"])){session_regenerate_id();$_SESSION["pwds"][$_POST["driver"]][$_POST["server"]][$_POST["username"]]=$_POST["password"];if($_POST["permanent"]){$d=base64_encode($_POST["driver"])."-".base64_encode($_POST["server"])."-".base64_encode($_POST["username"]);$Vc=$o->permanentLogin();$_b[$d]="$d:".base64_encode($Vc?encrypt_string($_POST["password"],$Vc):"");cookie("adminer_permanent",implode(" ",$_b));}if(count($_POST)==($_POST["permanent"]?5:4)||DRIVER!=$_POST["driver"]||SERVER!=$_POST["server"]||$_GET["username"]!==$_POST["username"]){redirect(auth_url($_POST["driver"],$_POST["server"],$_POST["username"]));}}elseif($_POST["logout"]){if($M&&$_POST["token"]!=$M){page_header(lang(50),lang(57));page_footer("db");exit;}else{foreach(array("pwds","dbs","queries")as$d){set_session($d,null);}$d=base64_encode(DRIVER)."-".base64_encode(SERVER)."-".base64_encode($_GET["username"]);if($_b[$d]){unset($_b[$d]);cookie("adminer_permanent",implode(" ",$_b));}redirect(substr(preg_replace('~(username|db|ns)=[^&]*&~','',ME),0,-1),lang(58));}}elseif($_b&&!$_SESSION["pwds"]){session_regenerate_id();$Vc=$o->permanentLogin();foreach($_b
|
||
|
|
as$d=>$b){list(,$Pf)=explode(":",$b);list($Ib,$F,$P)=array_map('base64_decode',explode("-",$d));$_SESSION["pwds"][$Ib][$F][$P]=decrypt_string(base64_decode($Pf),$Vc);}}function
|
||
|
|
auth_error($ze=null){global$g,$o,$M;$Tc=session_name();$n="";if(!$_COOKIE[$Tc]&&$_GET[$Tc]&&ini_bool("session.use_only_cookies")){$n=lang(59);}elseif(isset($_GET["username"])){if(($_COOKIE[$Tc]||$_GET[$Tc])&&!$M){$n=lang(60);}else{$T=&get_session("pwds");if(isset($T)){$n=h($ze?$ze->getMessage():(is_string($g)?$g:lang(61)));$T=null;}}}page_header(lang(23),$n,null);echo"<form action='' method='post' onclick='eventStop(event);'>\n";$o->loginForm();echo"<div>";hidden_fields($_POST,array("driver","server","username","password","permanent"));echo"</div>\n","</form>\n";page_footer("auth");}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);page_header(lang(62),lang(63,implode(", ",$oc)),false);page_footer("auth");exit;}$g=connect();}if(is_string($g)||!$o->login($_GET["username"],get_session("pwds"))){auth_error();exit;}$M=$_SESSION["token"];if(isset($_POST["server"])&&$_POST["token"]){$_POST["token"]=$M;}$n=($_POST?($_POST["token"]==$M?"":lang(57)):($_SERVER["REQUEST_METHOD"]!="POST"?"":lang(64,'"post_max_size"')));function
|
||
|
|
connect_error(){global$g,$M,$n,$na;$_=array();if(DB!=""){page_header(lang(65).": ".h(DB),lang(66),true);}else{if($_POST["db"]&&!$n){queries_redirect(substr(ME,0,-1),lang(67),drop_databases($_POST["db"]));}page_header(lang(68),$n,false);echo"<p><a href='".h(ME)."database='>".lang(69)."</a>\n";foreach(array('privileges'=>lang(70),'processlist'=>lang(71),'variables'=>lang(72),'status'=>lang(73),)as$d=>$b){if(support($d)){echo"<a href='".h(ME)."$d='>$b</a>\n";}}echo"<p>".lang(74,$na[DRIVER],"<b>$g->server_info</b>","<b>$g->extension</b>")."\n","<p>".lang(75,"<b>".h(logged_user())."</b>")."\n";if($_GET["refresh"]){set_session("dbs",null);}$_=get_databases();if($_){$Ed=support("scheme");$Z=collations();echo"<form action='' method='post'>\n","<table cellspacing='0' onclick='tableClick(event);'>\n","<thead><tr><td> <th>".lang(65)."<td>".lang(76)."<td>".lang(77)."</thead>\n";foreach($_
|
||
|
|
as$t){$Jd=h(ME)."db=".urlencode($t);echo"<tr".odd()."><td>".checkbox("db[]",$t,in_array($t,(array)$_POST["db"])),"<th><a href='$Jd'>".h($t)."</a>","<td><a href='$Jd".($Ed?"&ns=":"")."&database='>".nbsp(db_collation($t,$Z))."</a>","<td align='right'><a href='$Jd&schema=' id='tables-".h($t)."'>?</a>","\n";}echo"</table>\n","<p><input type='submit' name='drop' value='".lang(78)."'".confirm("formChecked(this, /db/)",1).">\n";echo"<input type='hidden' name='token' value='$M'>\n","<a href='".h(ME)."refresh=1' onclick='eventStop(event);'>".lang(79)."</a>\n","</form>\n";}}page_footer("db");if($_){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(80).": ".h($_GET["ns"]),lang(81),true);page_footer("ns");exit;}}function
|
||
|
|
select($i,$G=null,$ye=""){$Ja=array();$J=array();$B=array();$xe=array();$R=array();odd('');for($l=0;$a=$i->fetch_row();$l++){if(!$l){echo"<table cellspacing='0' class='nowrap'>\n","<thead><tr>";for($ra=0;$ra<count($a);$ra++){$e=$i->fetch_field();$Da=$e->orgtable;$Bc=$e->orgname;if($Da!=""){if(!isset($J[$Da])){$J[$Da]=array();foreach(indexes($Da,$G)as$x){if($x["type"]=="PRIMARY"){$J[$Da]=array_flip($x["columns"]);break;}}$B[$Da]=$J[$Da];}if(isset($B[$Da][$Bc])){unset($B[$Da][$Bc]);$J[$Da][$Bc]=$ra;$Ja[$ra]=$Da;}}if($e->charsetnr==63){$xe[$ra]=true;}$R[$ra]=$e->type;$f=h($e->name);echo"<th".($Da!=""||$e->name!=$Bc?" title='".h(($Da!=""?"$Da.":"").$Bc)."'":"").">".($ye?"<a href='$ye".strtolower($f)."' target='_blank' rel='noreferrer'>$f</a>":$f);}echo"</thead>\n";}echo"<tr".odd().">";foreach($a
|
||
|
|
as$d=>$b){if(!isset($b)){$b="<i>NULL</i>";}else{if($xe[$d]&&!is_utf8($b)){$b="<i>".lang(32,strlen($b))."</i>";}elseif(!strlen($b)){$b=" ";}else{$b=h($b);if($R[$d]==254){$b="<code>$b</code>";}}if(isset($Ja[$d])&&!$B[$Ja[$d]]){$w="edit=".urlencode($Ja[$d]);foreach($J[$Ja[$d]]as$Pc=>$ra){$w.="&where".urlencode("[".bracket_escape($Pc)."]")."=".urlencode($a[$ra]);}$b="<a href='".h(ME.$w)."'>$b</a>";}}echo"<td>$b";}}echo($l?"</table>":"<p class='message'>".lang(82))."\n";}function
|
||
|
|
referencable_primary($Tf){$c=array();foreach(table_status()as$Ea=>$h){if($Ea!=$Tf&&fk_support($h)){foreach(fields($Ea)as$e){if($e["primary"]){if($c[$Ea]){unset($c[$Ea]);break;}$c[$Ea]=$e;}}}}return$c;}function
|
||
|
|
textarea($f,$q,$H=10,$mb=80){echo"<textarea name='$f' rows='$H' cols='$mb' class='sqlarea' spellcheck='false' wrap='off' onkeydown='return textareaKeydown(this, event);'>";if(is_array($q)){foreach($q
|
||
|
|
as$b){echo
|
||
|
|
h($b)."\n\n\n";}}else{echo
|
||
|
|
h($q);}echo"</textarea>";}function
|
||
|
|
format_time($Fb,$Cc){return" <span class='time'>(".lang(83,max(0,$Cc[0]-$Fb[0]+$Cc[1]-$Fb[1])).")</span>";}function
|
||
|
|
edit_type($d,$e,$Z,$ha=array()){global$La,$R,$ob,$fb;echo'<td><select name="',$d,'[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);">',optionlist((!$e["type"]||isset($R[$e["type"]])?array():array($e["type"]))+$La+($ha?array(lang(84)=>$ha):array()),$e["type"]),'</select>
|
||
|
|
<td><input name="',$d,'[length]" value="',h($e["length"]),'" size="3" onfocus="editingLengthFocus(this);"><td class="options">',"<select name='$d"."[collation]'".(ereg('(char|text|enum|set)$',$e["type"])?"":" class='hidden'").'><option value="">('.lang(85).')'.optionlist($Z,$e["collation"]).'</select>',($ob?"<select name='$d"."[unsigned]'".(!$e["type"]||ereg('(int|float|double|decimal)$',$e["type"])?"":" class='hidden'").'><option>'.optionlist($ob,$e["unsigned"]).'</select>':''),($ha?"<select name='$d"."[on_delete]'".(ereg("`",$e["type"])?"":" class='hidden'")."><option value=''>(".lang(86).")".optionlist($fb,$e["on_delete"])."</select> ":" ");}function
|
||
|
|
process_length($W){global$Gb;return(preg_match("~^\\s*(?:$Gb)(?:\\s*,\\s*(?:$Gb))*\\s*\$~",$W)&&preg_match_all("~$Gb~",$W,$oa)?implode(",",$oa[0]):preg_replace('~[^0-9,+-]~','',$W));}function
|
||
|
|
process_type($e,$Dc="COLLATE"){global$ob;return" $e[type]".($e["length"]!=""?"(".process_length($e["length"]).")":"").(ereg('int|float|double|decimal',$e["type"])&&in_array($e["unsigned"],$ob)?" $e[unsigned]":"").(ereg('char|text|enum|set',$e["type"])&&$e["collation"]?" $Dc ".q($e["collation"]):"");}function
|
||
|
|
process_field($e,$Uc){return
|
||
|
|
array(idf_escape($e["field"]),process_type($Uc),($e["null"]?" NULL":" NOT NULL"),(isset($e["default"])?" DEFAULT ".($e["type"]=="timestamp"&&eregi("^CURRENT_TIMESTAMP$",$e["default"])?$e["default"]:q($e["default"])):""),($e["on_update"]?" ON UPDATE $e[on_update]":""),(support("comment")&&$e["comment"]!=""?" COMMENT ".q($e["comment"]):""),($e["auto_increment"]?auto_increment():null),);}function
|
||
|
|
type_class($z){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$d=>$b){if(ereg("$d|$b",$z)){return" class='$d'";}}}function
|
||
|
|
edit_fields($p,$Z,$z="TABLE",$we=0,$ha=array(),$Kb=false){global$jc;foreach($p
|
||
|
|
as$e){if($e["comment"]!=""){$Kb=true;break;}}echo'<thead><tr class="wrap">
|
||
|
|
';if($z=="PROCEDURE"){echo'<td> ';}echo'<th>',($z=="TABLE"?lang(87):lang(88)),'<td>',lang(89),'<textarea id="enum-edit" rows="4" cols="12" wrap="off" style="display: none;" onblur="editingLengthBlur(this);"></textarea>
|
||
|
|
<td>',lang(90),'<td>',lang(91);if($z=="TABLE"){echo'<td>NULL
|
||
|
|
<td><input type="radio" name="auto_increment_col" value=""><acronym title="',lang(92),'">AI</acronym>
|
||
|
|
<td class="hidden">',lang(93),(support("comment")?"<td".($Kb?"":" class='hidden'").">".lang(94):"");}echo'<td>',"<input type='image' name='add[".(support("move_col")?0:count($p))."]' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&version=3.2.2' alt='+' title='".lang(95)."'>",'<script type="text/javascript">row_count = ',count($p),';</script>
|
||
|
|
</thead>
|
||
|
|
<tbody onkeydown="return editingKeydown(event);">
|
||
|
|
';foreach($p
|
||
|
|
as$l=>$e){$l++;$zd=$e[($_POST?"orig":"field")];$Ee=(isset($_POST["add"][$l-1])||(isset($e["field"])&&!$_POST["drop_col"][$l]))&&(support("drop_col")||$zd=="");echo'<tr',($Ee?"":" style='display: none;'"),'>
|
||
|
|
',($z=="PROCEDURE"?"<td>".adminer_html_select("fields[$l][inout]",$jc,$e["inout"]):""),'<th>';if($Ee){echo'<input name="fields[',$l,'][field]" value="',h($e["field"]),'" onchange="',($e["field"]!=""||count($p)>1?"":"editingAddRow(this, $we); "),'editingNameChange(this);" maxlength="64">';}echo'<input type="hidden" name="fields[',$l,'][orig]" value="',h($zd),'">
|
||
|
|
';edit_type("fields[$l]",$e,$Z,$ha);if($z=="TABLE"){echo'<td>',checkbox("fields[$l][null]",1,$e["null"]),'<td><input type="radio" name="auto_increment_col" value="',$l,'"';if($e["auto_increment"]){echo' checked';}?> onclick="var field = this.form['fields[' + this.value + '][field]']; if (!field.value) { field.value = 'id'; field.onchange(); }">
|
||
|
|
<td class="hidden"><?php echo
|
||
|
|
checkbox("fields[$l][has_default]",1,$e["has_default"]),'<input name="fields[',$l,'][default]" value="',h($e["default"]),'" onchange="this.previousSibling.checked = true;">
|
||
|
|
',(support("comment")?"<td".($Kb?"":" class='hidden'")."><input name='fields[$l][comment]' value='".h($e["comment"])."' maxlength='255'>":"");}echo"<td>",(support("move_col")?"<input type='image' name='add[$l]' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&version=3.2.2' alt='+' title='".lang(95)."' onclick='return !editingAddRow(this, $we, 1);'> "."<input type='image' name='up[$l]' src='".h(preg_replace("~\\?.*~","",ME))."?file=up.gif&version=3.2.2' alt='^' title='".lang(96)."'> "."<input type='image' name='down[$l]' src='".h(preg_replace("~\\?.*~","",ME))."?file=down.gif&version=3.2.2' alt='v' title='".lang(97)."'> ":""),($zd==""||support("drop_col")?"<input type='image' name='drop_col[$l]' src='".h(preg_replace("~\\?.*~","",ME))."?file=cross.gif&version=3.2.2' alt='x' title='".lang(98)."' onclick='return !editingRemoveRow(this);'>":""),"\n";}return$Kb;}function
|
||
|
|
process_fields(&$p){ksort($p);$L=0;if($_POST["up"]){$xb=0;foreach($p
|
||
|
|
as$d=>$e){if(key($_POST["up"])==$d){unset($p[$d]);array_splice($p,$xb,0,array($e));break;}if(isset($e["field"])){$xb=$L;}$L++;}}if($_POST["down"]){$ta=false;foreach($p
|
||
|
|
as$d=>$e){if(isset($e["field"])&&$ta){unset($p[key($_POST["down"])]);array_splice($p,$L,0,array($ta));break;}if(key($_POST["down"])==$d){$ta=$e;}$L++;}}$p=array_values($p);if($_POST["add"]){array_splice($p,key($_POST["add"]),0,array(array()));}}function
|
||
|
|
normalize_enum($k){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($k[0][0].$k[0][0],$k[0][0],substr($k[0],1,-1))),'\\'))."'";}function
|
||
|
|
grant($ka,$sa,$B,$Cb){if(!$sa){return
|
||
|
|
true;}if($sa==array("ALL PRIVILEGES","GRANT OPTION")){return($ka=="GRANT"?queries("$ka ALL PRIVILEGES$Cb WITH GRANT OPTION"):queries("$ka ALL PRIVILEGES$Cb")&&queries("$ka GRANT OPTION$Cb"));}return
|
||
|
|
queries("$ka ".preg_replace('~(GRANT OPTION)\\([^)]*\\)~','\\1',implode("$B, ",$sa).$B).$Cb);}function
|
||
|
|
drop_create($Ha,$la,$ga,$Se,$Jf,$Bf,$f){if($_POST["drop"]){return
|
||
|
|
query_redirect($Ha,$ga,$Se,true,!$_POST["dropped"]);}$hb=$f!=""&&($_POST["dropped"]||queries($Ha));$_f=queries($la);if(!queries_redirect($ga,($f!=""?$Jf:$Bf),$_f)&&$hb){redirect(null,$Se);}return$hb;}function
|
||
|
|
tar_file($ja,$rd){$c=pack("a100a8a8a8a12a12",$ja,644,0,0,decoct(strlen($rd)),decoct(time()));$ef=8*32;for($l=0;$l<strlen($c);$l++){$ef+=ord($c{$l});}$c.=sprintf("%06o",$ef)."\0 ";return$c.str_repeat("\0",512-strlen($c)).$rd.str_repeat("\0",511-(strlen($rd)+511)%
|
||
|
|
512);}session_cache_limiter("");if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false){session_write_close();}$fb=array("RESTRICT","CASCADE","SET NULL","NO ACTION");$Gb="'(?:''|[^'\\\\]|\\\\.)*+'";$jc=array("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"])){$m=$_GET["download"];header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$m-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));echo$g->result("SELECT".limit(idf_escape($_GET["field"])." FROM ".table($m)," WHERE ".where($_GET),1));exit;}elseif(isset($_GET["table"])){$m=$_GET["table"];$p=fields($m);if(!$p){$n=error();}$D=($p?table_status($m):array());page_header(($p&&is_view($D)?lang(99):lang(100)).": ".h($m),$n);$o->selectLinks($D);$_a=$D["Comment"];if($_a!=""){echo"<p>".lang(94).": ".h($_a)."\n";}if($p){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(101)."<td>".lang(89).(support("comment")?"<td>".lang(94):"")."</thead>\n";foreach($p
|
||
|
|
as$e){echo"<tr".odd()."><th>".h($e["field"]),"<td>".h($e["full_type"]).($e["null"]?" <i>NULL</i>":"").($e["auto_increment"]?" <i>".lang(92)."</i>":""),(support("comment")?"<td>".nbsp($e["comment"]):""),"\n";}echo"</table>\n";if(!is_view($D)){echo"<h3>".lang(102)."</h3>\n";$J=indexes($m);if($J){echo"<table cellspacing='0'>\n";foreach($J
|
||
|
|
as$f=>$x){ksort($x["columns"]);$zb=array();foreach($x["columns"]as$d=>$b){$zb[]="<i>".h($b)."</i>".($x["lengths"][$d]?"(".$x["lengths"][$d].")":"");}echo"<tr title='".h($f)."'><th>$x[type]<td>".implode(", ",$zb)."\n";}echo"</table>\n";}echo'<p><a href="'.h(ME).'indexes='.urlencode($m).'">'.lang(103)."</a>\n";if(fk_support($D)){echo"<h3>".lang(84)."</h3>\n";$ha=foreign_keys($m);if($ha){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(104)."<td>".lang(105)."<td>".lang(86)."<td>".lang(106).($v!="sqlite"?"<td> ":"")."</thead>\n";foreach($ha
|
||
|
|
as$f=>$A){$w=($A["db"]!=""?"<b>".h($A["db"])."</b>.":"").h($A["table"]);echo"<tr>","<th><i>".implode("</i>, <i>",array_map('h',$A["source"]))."</i>","<td><a href='".h($A["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($A["db"]),ME):ME)."table=".urlencode($A["table"])."'>$w</a>","(<i>".implode("</i>, <i>",array_map('h',$A["target"]))."</i>)","<td>$A[on_delete]\n","<td>$A[on_update]\n";if($v!="sqlite"){echo'<td><a href="'.h(ME.'foreign='.urlencode($m).'&name='.urlencode($f)).'">'.lang(107).'</a>';}}echo"</table>\n";}if($v!="sqlite"){echo'<p><a href="'.h(ME).'foreign='.urlencode($m).'">'.lang(108)."</a>\n";}}if(support("trigger")){echo"<h3>".lang(109)."</h3>\n";$Mc=triggers($m);if($Mc){echo"<table cellspacing='0'>\n";foreach($Mc
|
||
|
|
as$d=>$b){echo"<tr valign='top'><td>$b[0]<td>$b[1]<th>".h($d)."<td><a href='".h(ME.'trigger='.urlencode($m).'&name='.urlencode($d))."'>".lang(107)."</a>\n";}echo"</table>\n";}echo'<p><a href="'.h(ME).'trigger='.urlencode($m).'">'.lang(110)."</a>\n";}}}}elseif(isset($_GET["schema"])){page_header(lang(111),"",array(),DB);$sb=array();$ve=array();$f="adminer_schema";$hf=($_GET["schema"]?$_GET["schema"]:$_COOKIE[($_COOKIE["$f-".DB]?"$f-".DB:$f)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$hf,$oa,PREG_SET_ORDER);foreach($oa
|
||
|
|
as$l=>$k){$sb[$k[1]]=array($k[2],$k[3]);$ve[]="\n\t'".js_escape($k[1])."': [ $k[2], $k[3] ]";}$Wb=0;$cf=-1;$Ka=array();$df=array();$We=array();foreach(table_status()as$a){if(!isset($a["Engine"])){continue;}$uc=0;$Ka[$a["Name"]]["fields"]=array();foreach(fields($a["Name"])as$f=>$e){$uc+=1.25;$e["pos"]=$uc;$Ka[$a["Name"]]["fields"][$f]=$e;}$Ka[$a["Name"]]["pos"]=($sb[$a["Name"]]?$sb[$a["Name"]]:array($Wb,0));foreach($o->foreignKeys($a["Name"])as$b){if(!$b["db"]){$Aa=$cf;if($sb[$a["Name"]][1]||$sb[$b["table"]][1]){$Aa=min(floatval($sb[$a["Name"]][1]),floatval($sb[$b["table"]][1]))-1;}else{$cf-=.1;}while($We[(string)$Aa]){$Aa-=.0001;}$Ka[$a["Name"]]["references"][$b["table"]][(string)$Aa]=array($b["source"],$b["target"]);$df[$b["table"]][$a["Name"]][(string)$Aa]=$b["target"];$We[(string)$Aa]=true;}}$Wb=max($Wb,$Ka[$a["Name"]]["pos"][0]+2.5+$uc);}echo'<div id="schema" style="height: ',$Wb,'em;">
|
||
|
|
<script type="text/javascript">
|
||
|
|
tablePos = {',implode(",",$ve)."\n",'};
|
||
|
|
em = document.getElementById(\'schema\').offsetHeight / ',$Wb,';
|
||
|
|
document.onmousemove = schemaMousemove;
|
||
|
|
document.onmouseup = function (ev) {
|
||
|
|
schemaMouseup(ev, \'',js_escape(DB),'\');
|
||
|
|
};
|
||
|
|
</script>
|
||
|
|
';foreach($Ka
|
||
|
|
as$f=>$h){echo"<div class='table' style='top: ".$h["pos"][0]."em; left: ".$h["pos"][1]."em;' onmousedown='schemaMousedown(this, event);'>",'<a href="'.h(ME).'table='.urlencode($f).'"><b>'.h($f)."</b></a><br>\n";foreach($h["fields"]as$e){$b='<span'.type_class($e["type"]).' title="'.h($e["full_type"].($e["null"]?" NULL":'')).'">'.h($e["field"]).'</span>';echo($e["primary"]?"<i>$b</i>":$b)."<br>\n";}foreach((array)$h["references"]as$Vb=>$_c){foreach($_c
|
||
|
|
as$Aa=>$hd){$wc=$Aa-$sb[$f][1];$l=0;foreach($hd[0]as$Ga){echo"<div class='references' title='".h($Vb)."' id='refs$Aa-".($l++)."' style='left: $wc"."em; top: ".$h["fields"][$Ga]["pos"]."em; padding-top: .5em;'><div style='border-top: 1px solid Gray; width: ".(-$wc)."em;'></div></div>\n";}}}foreach((array)$df[$f]as$Vb=>$_c){foreach($_c
|
||
|
|
as$Aa=>$B){$wc=$Aa-$sb[$f][1];$l=0;foreach($B
|
||
|
|
as$ea){echo"<div class='references' title='".h($Vb)."' id='refd$Aa-".($l++)."' style='left: $wc"."em; top: ".$h["fields"][$ea]["pos"]."em; height: 1.25em; background: url(".h(preg_replace("~\\?.*~","",ME))."?file=arrow.gif) no-repeat right center;&version=3.2.2'><div style='height: .5em; border-bottom: 1px solid Gray; width: ".(-$wc)."em;'></div></div>\n";}}}echo"</div>\n";}foreach($Ka
|
||
|
|
as$f=>$h){foreach((array)$h["references"]as$Vb=>$_c){foreach($_c
|
||
|
|
as$Aa=>$hd){$ed=$Wb;$ud=-10;foreach($hd[0]as$d=>$Ga){$Te=$h["pos"][0]+$h["fields"][$Ga]["pos"];$Xe=$Ka[$Vb]["pos"][0]+$Ka[$Vb]["fields"][$hd[1][$d]]["pos"];$ed=min($ed,$Te,$Xe);$ud=max($ud,$Te,$Xe);}echo"<div class='references' id='refl$Aa' style='left: $Aa"."em; top: $ed"."em; padding: .5em 0;'><div style='border-right: 1px solid Gray; margin-top: 1px; height: ".($ud-$ed)."em;'></div></div>\n";}}}echo'</div>
|
||
|
|
<p><a href="',h(ME."schema=".urlencode($hf)),'" id="schema-link">',lang(112),'</a>
|
||
|
|
';}elseif(isset($_GET["dump"])){$m=$_GET["dump"];if($_POST){$Ye="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$d){$Ye.="&$d=".urlencode($_POST[$d]);}cookie("adminer_export",substr($Ye,1));$Hb=dump_headers(($m!=""?$m:DB),(DB==""||count((array)$_POST["tables"]+(array)$_POST["data"])>1));$tb=($_POST["format"]=="sql");if($tb){echo"-- Adminer $tc ".$na[DRIVER]." dump
|
||
|
|
|
||
|
|
".($v!="sql"?"":"SET NAMES utf8;
|
||
|
|
SET foreign_key_checks = 0;
|
||
|
|
SET time_zone = ".q($g->result("SELECT @@time_zone")).";
|
||
|
|
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
||
|
|
|
||
|
|
");}$V=$_POST["db_style"];$_=array(DB);if(DB==""){$_=$_POST["databases"];if(is_string($_)){$_=explode("\n",rtrim(str_replace("\r","",$_),"\n"));}}foreach((array)$_
|
||
|
|
as$t){if($g->select_db($t)){if($tb&&ereg('CREATE',$V)&&($la=$g->result("SHOW CREATE DATABASE ".idf_escape($t),1))){if($V=="DROP+CREATE"){echo"DROP DATABASE IF EXISTS ".idf_escape($t).";\n";}echo($V=="CREATE+ALTER"?preg_replace('~^CREATE DATABASE ~','\\0IF NOT EXISTS ',$la):$la).";\n";}if($tb){if($V){echo
|
||
|
|
use_sql($t).";\n\n";}if(in_array("CREATE+ALTER",array($V,$_POST["table_style"]))){echo"SET @adminer_alter = '';\n\n";}$qb="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$Ta){foreach(get_rows("SHOW $Ta STATUS WHERE Db = ".q($t),null,"-- ")as$a){$qb.=($V!='DROP+CREATE'?"DROP $Ta IF EXISTS ".idf_escape($a["Name"]).";;\n":"").$g->result("SHOW CREATE $Ta ".idf_escape($a["Name"]),2).";;\n\n";}}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$a){$qb.=($V!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($a["Name"]).";;\n":"").$g->result("SHOW CREATE EVENT ".idf_escape($a["Name"]),3).";;\n\n";}}if($qb){echo"DELIMITER ;;\n\n$qb"."DELIMITER ;\n\n";}}if($_POST["table_style"]||$_POST["data_style"]){$X=array();foreach(table_status()as$a){$h=(DB==""||in_array($a["Name"],(array)$_POST["tables"]));$Ze=(DB==""||in_array($a["Name"],(array)$_POST["data"]));if($h||$Ze){if(!is_view($a)){if($Hb=="tar"){ob_start();}$o->dumpTable($a["Name"],($h?$_POST["table_style"]:""));if($Ze){$o->dumpData($a["Name"],$_POST["data_style"],"SELECT * FROM ".table($a["Name"]));}if($tb&&$_POST["triggers"]&&$h&&($Mc=trigger_sql($a["Name"],$_POST["table_style"]))){echo"\nDELIMITER ;;\n$Mc\nDELIMITER ;\n";}if($Hb=="tar"){echo
|
||
|
|
tar_file((DB!=""?"":"$t/")."$a[Name].csv",ob_get_clean());}elseif($tb){echo"\n";}}elseif($tb){$X[]=$a["Name"];}}}foreach($X
|
||
|
|
as$cc){$o->dumpTable($cc,$_POST["table_style"],true);}if($Hb=="tar"){echo
|
||
|
|
pack("x512");}}if($V=="CREATE+ALTER"&&$tb){$j="SELECT TABLE_NAME, ENGINE, TABLE_COLLATION, TABLE_COMMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE()";echo"DELIMITER ;;
|
||
|
|
CREATE PROCEDURE adminer_alter (INOUT alter_command text) BEGIN
|
||
|
|
DECLARE _table_name, _engine, _table_collation varchar(64);
|
||
|
|
DECLARE _table_comment varchar(64);
|
||
|
|
DECLARE done bool DEFAULT 0;
|
||
|
|
DECLARE tables CURSOR FOR $j;
|
||
|
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
|
||
|
|
OPEN tables;
|
||
|
|
REPEAT
|
||
|
|
FETCH tables INTO _table_name, _engine, _table_collation, _table_comment;
|
||
|
|
IF NOT done THEN
|
||
|
|
CASE _table_name";foreach(get_rows($j)as$a){$_a=q($a["ENGINE"]=="InnoDB"?preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$a["TABLE_COMMENT"]):$a["TABLE_COMMENT"]);echo"
|
||
|
|
WHEN ".q($a["TABLE_NAME"])." THEN
|
||
|
|
".(isset($a["ENGINE"])?"IF _engine != '$a[ENGINE]' OR _table_collation != '$a[TABLE_COLLATION]' OR _table_comment != $_a THEN
|
||
|
|
ALTER TABLE ".idf_escape($a["TABLE_NAME"])." ENGINE=$a[ENGINE] COLLATE=$a[TABLE_COLLATION] COMMENT=$_a;
|
||
|
|
END IF":"BEGIN END").";";}echo"
|
||
|
|
ELSE
|
||
|
|
SET alter_command = CONCAT(alter_command, 'DROP TABLE `', REPLACE(_table_name, '`', '``'), '`;\\n');
|
||
|
|
END CASE;
|
||
|
|
END IF;
|
||
|
|
UNTIL done END REPEAT;
|
||
|
|
CLOSE tables;
|
||
|
|
END;;
|
||
|
|
DELIMITER ;
|
||
|
|
CALL adminer_alter(@adminer_alter);
|
||
|
|
DROP PROCEDURE adminer_alter;
|
||
|
|
";}if(in_array("CREATE+ALTER",array($V,$_POST["table_style"]))&&$tb){echo"SELECT @adminer_alter;\n";}}}if($tb){echo"-- ".$g->result("SELECT NOW()")."\n";}exit;}page_header(lang(113),"",($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),DB);echo'
|
||
|
|
<form action="" method="post">
|
||
|
|
<table cellspacing="0">
|
||
|
|
';$Ge=array('','USE','DROP+CREATE','CREATE');$se=array('','DROP+CREATE','CREATE');$Vd=array('','TRUNCATE+INSERT','INSERT');if($v=="sql"){$Ge[]='CREATE+ALTER';$se[]='CREATE+ALTER';$Vd[]='INSERT+UPDATE';}parse_str($_COOKIE["adminer_export"],$a);if(!$a){$a=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");}if(!isset($a["events"])){$a["routines"]=$a["events"]=($_GET["dump"]=="");$a["auto_increment"]=$a["triggers"]=$a["table_style"];}echo"<tr><th>".lang(114)."<td>".adminer_html_select("output",$o->dumpOutput(),$a["output"],0)."\n";echo"<tr><th>".lang(115)."<td>".adminer_html_select("format",$o->dumpFormat(),$a["format"],0)."\n";echo($v=="sqlite"?"":"<tr><th>".lang(65)."<td>".adminer_html_select('db_style',$Ge,$a["db_style"]).(support("routine")?checkbox("routines",1,$a["routines"],lang(116)):"").(support("event")?checkbox("events",1,$a["events"],lang(117)):"")),"<tr><th>".lang(77)."<td>".adminer_html_select('table_style',$se,$a["table_style"]).checkbox("auto_increment",1,$a["auto_increment"],lang(92)).(support("trigger")?checkbox("triggers",1,$a["triggers"],lang(109)):""),"<tr><th>".lang(118)."<td>".adminer_html_select('data_style',$Vd,$a["data_style"]),'</table>
|
||
|
|
<p><input type="submit" value="',lang(113),'">
|
||
|
|
|
||
|
|
<table cellspacing="0">
|
||
|
|
';$kd=array();if(DB!=""){$ab=($m!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label><input type='checkbox' id='check-tables'$ab onclick='formCheck(this, /^tables\\[/);'>".lang(77)."</label>","<th style='text-align: right;'><label>".lang(118)."<input type='checkbox' id='check-data'$ab onclick='formCheck(this, /^data\\[/);'></label>","</thead>\n";$X="";foreach(table_status()as$a){$f=$a["Name"];$zc=ereg_replace("_.*","",$f);$ab=($m==""||$m==(substr($m,-1)=="%"?"$zc%":$f));$zb="<tr><td>".checkbox("tables[]",$f,$ab,$f,"formUncheck('check-tables');");if(is_view($a)){$X.="$zb\n";}else{echo"$zb<td align='right'><label>".($a["Engine"]=="InnoDB"&&$a["Rows"]?"~ ":"").$a["Rows"].checkbox("data[]",$f,$ab,"","formUncheck('check-data');")."</label>\n";}$kd[$zc]++;}echo$X;}else{echo"<thead><tr><th style='text-align: left;'><label><input type='checkbox' id='check-databases'".($m==""?" checked":"")." onclick='formCheck(this, /^databases\\[/);'>".lang(65)."</label></thead>\n";$_=get_databases();if($_){foreach($_
|
||
|
|
as$t){if(!information_schema($t)){$zc=ereg_replace("_.*","",$t);echo"<tr><td>".checkbox("databases[]",$t,$m==""||$m=="$zc%",$t,"formUncheck('check-databases');")."</label>\n";$kd[$zc]++;}}}else{echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}}echo'</table>
|
||
|
|
</form>
|
||
|
|
';$Ba=true;foreach($kd
|
||
|
|
as$d=>$b){if($d!=""&&$b>1){echo($Ba?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$d%")."'>".h($d)."</a>";$Ba=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(70));$i=$g->query("SELECT User, Host FROM mysql.user ORDER BY Host, User");if(!$i){echo'<form action=""><p>
|
||
|
|
';hidden_fields_get();echo
|
||
|
|
lang(21),': <input name="user">
|
||
|
|
',lang(20),': <input name="host" value="localhost">
|
||
|
|
<input type="hidden" name="grant" value="">
|
||
|
|
<input type="submit" value="',lang(31),'">
|
||
|
|
</form>
|
||
|
|
';$i=$g->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");}echo"<table cellspacing='0'>\n","<thead><tr><th> <th>".lang(21)."<th>".lang(20)."</thead>\n";while($a=$i->fetch_assoc()){echo'<tr'.odd().'><td><a href="'.h(ME.'user='.urlencode($a["User"]).'&host='.urlencode($a["Host"])).'">'.lang(119).'</a><td>'.h($a["User"])."<td>".h($a["Host"])."\n";}echo"</table>\n",'<p><a href="'.h(ME).'user=">'.lang(120)."</a>";}elseif(isset($_GET["sql"])){if(!$n&&$_POST["export"]){dump_headers("sql");$o->dumpTable("","");$o->dumpData("","table",$_POST["query"]);exit;}restart_session();$Ff=&get_session("queries");$eb=&$Ff[DB];if(!$n&&$_POST["clear"]){$eb=array();redirect(remove_from_uri("history"));}page_header(lang(43),$n);if(!$n&&$_POST){$Pa=false;$j=$_POST["query"];if($_POST["webfile"]){$Pa=@fopen((file_exists("adminer.sql")?"adminer.sql":(file_exists("adminer.sql.gz")?"compress.zlib://adminer.sql.gz":"compress.bzip2://adminer.sql.bz2")),"rb");$j=($Pa?fread($Pa,1e6):false);}elseif($_FILES&&$_FILES["sql_file"]["error"]!=4){$j=get_file("sql_file",true);}if(is_string($j)){if(function_exists('memory_get_usage')){@ini_set("memory_limit",2*strlen($j)+memory_get_usage()+8e6);}if($j!=""&&strlen($j)<1e6){$aa=$j.(ereg(';$',$j)?"":";");if(!$eb||end($eb)!=$aa){$eb[]=$aa;}}$yc="(?:\\s|/\\*.*\\*/|(?:#|-- )[^\n]*\n|--\n)";if(!ini_bool("session.use_cookies")){session_write_close();}$ld=";";$L=0;$hc=true;$G=connect();if(is_object($G)&&DB!=""){$G->select_db(DB);}$Ab=0;$Zc=array();$Gf='[\'`"]'.($v=="pgsql"?'|\\$[^$]*\\$':($v=="mssql"||$v=="sqlite"?'|\\[':'')).'|/\\*|-- |#';$Hf=explode(" ",microtime());parse_str($_COOKIE["adminer_export"],$Xb);$Rd=$o->dumpFormat();unset($Rd["sql"]);while($j!=""){if(!$L&&$v=="sql"&&preg_match("~^$yc*DELIMITER\\s+(.+)~i",$j,$k)){$ld=$k[1];$j=substr($j,strlen($k[0]));}else{preg_match('('.preg_quote($ld)."|$Gf|\$)",$j,$k,PREG_OFFSET_CAPTURE,$L);$ta=$k[0][0];$L=$k[0][1]+strlen($ta);if(!$ta&&$Pa&&!feof($Pa)){$j.=fread($Pa,1e5);}else{if(!$ta&&rtrim($j)==""){break;}if($ta&&$ta!=$ld){while(preg_match('('.($ta=='/*'?'\\*/':($ta=='['?']':(ereg('^-- |^#',$ta)?"\n":preg_quote($ta)."|\\\\."))).'|$)s',$j,$k,PREG_OFFSET_CAPTURE,$L)){$ma=$k[0][0];$L=$k[0][1]+strlen($ma);if(!$ma&&$Pa&&!feof($Pa)){$j.=fread($Pa,1e6);}elseif($ma[0]!="\\"){break;}}}else{$hc=false;$aa=substr($j,0,$k[0][1]);$Ab++;$zb="<pre id='sql-$Ab'><code class='jush-$v'>".shorten_utf8(trim($aa),1000)."</code></pre>\n";if(!$_POST["only_errors"]){echo$zb;ob_flush();flush();}$Fb=explode(" ",microtime());if($g->multi_query($aa)){if(is_object($G)&&preg_match("~^$yc*USE\\b~isU",$aa)){$G->query($aa);}do{$i=$g->store_result();$Cc=explode(" ",microtime());$Qd=format_time($Fb,$Cc).(strlen($aa)<1000?" <a href='".h(ME)."sql=".urlencode(trim($aa))."'>".lang(31)."</a>":"");if(!is_object($i)){if(preg_match("~^$yc*(CREATE|DROP|ALTER)$yc+(DATABASE|SCHEMA)\\b~isU",$aa)){restart_session();set_session("dbs",null);session_write_close();}if(!$_POST["only_errors"]){echo"<p class='message' title='".h($g->info)."'>".lang(121,$g->affected_rows)."$Qd\n";}}else{select($i,$G);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n","<p>".($i->num_rows?lang(122,$i->num_rows):"").$Qd;$S="export-$Ab";$Od=", <a href='#$S' onclick=\"return !toggle('$S');\">".lang(113)."</a><span id='$S' class='hidden'>: ".adminer_html_select("output",$o->dumpOutput(),$Xb["output"])." ".adminer_html_select("format",$Rd,$Xb["format"])."<input type='hidden' name='query' value='".h($aa)."'>"." <input type='submit' name='export' value='".lang(113)."' onclick='eventStop(event);'><input type='hidden' name='token' value='$M'></span>";if($G&&preg_match("~^($yc|\\()*SELECT\\b~isU",$aa)&&($Cf=explain($G,$aa))){$S="explain-$Ab";echo", <a href='#$S' onclick=\"return !toggle('$S');\">EXPLAIN</a>$Od\n","<div id='$S' class='hidden'>\n";select($Cf,$G,($v=="sql"?"http://dev.mysql.com/doc/refman/".substr($g->server_info,0,3)."/en/explain-output.html#":""));echo"</div>\n";}else{echo"$Od\n";}echo"</form>\n";}}$Fb=$Cc;}while($g->next_result());}elseif($g->error){echo($_POS
|
||
|
|
<form action="" method="post" enctype="multipart/form-data">
|
||
|
|
<p>';$aa=$_GET["sql"];if($_POST){$aa=$_POST["query"];}elseif($_GET["history"]=="all"){$aa=$eb;}elseif($_GET["history"]!=""){$aa=$eb[$_GET["history"]];}textarea("query",$aa,20);echo($_POST?"":"<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="',$M,'">
|
||
|
|
',checkbox("error_stops",1,$_POST["error_stops"],lang(129))."\n",checkbox("only_errors",1,$_POST["only_errors"],lang(130))."\n";print_fieldset("webfile",lang(131),$_POST["webfile"]);$td=array();foreach(array("gz"=>"zlib","bz2"=>"bz2")as$d=>$b){if(extension_loaded($b)){$td[]=".$d";}}echo
|
||
|
|
lang(132,"<code>adminer.sql".($td?"[".implode("|",$td)."]":"")."</code>"),' <input type="submit" name="webfile" value="'.lang(133).'">',"</div></fieldset>\n";if($eb){print_fieldset("history",lang(134),$_GET["history"]!="");foreach($eb
|
||
|
|
as$d=>$b){echo'<a href="'.h(ME."sql=&history=$d").'">'.lang(31)."</a> <code class='jush-$v'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$b)))),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"])){$m=$_GET["edit"];$s=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0]):""):where($_GET));$qa=(isset($_GET["select"])?$_POST["edit"]:$s);$p=fields($m);foreach($p
|
||
|
|
as$f=>$e){if(!isset($e["privileges"][$qa?"update":"insert"])||$o->fieldName($e)==""){unset($p[$f]);}}if($_POST&&!$n&&!isset($_GET["select"])){$ga=$_POST["referer"];if($_POST["insert"]){$ga=($qa?null:$_SERVER["REQUEST_URI"]);}elseif(!ereg('^.+&select=.+$',$ga)){$ga=ME."select=".urlencode($m);}if(isset($_POST["delete"])){query_redirect("DELETE".limit1("FROM ".table($m)," WHERE $s"),$ga,lang(137));}else{$r=array();foreach($p
|
||
|
|
as$f=>$e){$b=process_input($e);if($b!==false&&$b!==null){$r[idf_escape($f)]=($qa?"\n".idf_escape($f)." = $b":$b);}}if($qa){if(!$r){redirect($ga);}query_redirect("UPDATE".limit1(table($m)." SET".implode(",",$r),"\nWHERE $s"),$ga,lang(138));}else{$i=insert_into($m,$r);$ue=($i?last_id():0);queries_redirect($ga,lang(139,($ue?" $ue":"")),$i);}}}$Ea=$o->tableName(table_status($m));page_header(($qa?lang(31):lang(140)),$n,array("select"=>array($m,$Ea)),$Ea);$a=null;if($_POST["save"]){$a=(array)$_POST["fields"];}elseif($s){$Q=array();foreach($p
|
||
|
|
as$f=>$e){if(isset($e["privileges"]["select"])){$Q[]=($_POST["clone"]&&$e["auto_increment"]?"'' AS ":(ereg("enum|set",$e["type"])?"1*".idf_escape($f)." AS ":"")).idf_escape($f);}}$a=array();if($Q){$H=get_rows("SELECT".limit(implode(", ",$Q)." FROM ".table($m)," WHERE $s",(isset($_GET["select"])?2:1)));$a=(isset($_GET["select"])&&count($H)!=1?null:reset($H));}}echo'
|
||
|
|
<form action="" method="post" enctype="multipart/form-data" id="form">
|
||
|
|
';if($p){echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($p
|
||
|
|
as$f=>$e){echo"<tr><th>".$o->fieldName($e);$za=$_GET["set"][bracket_escape($f)];$q=(isset($a)?($a[$f]!=""&&ereg("enum|set",$e["type"])?+$a[$f]:$a[$f]):(!$qa&&$e["auto_increment"]?"":(isset($_GET["select"])?false:(isset($za)?$za:$e["default"]))));if(!$_POST["save"]&&is_string($q)){$q=$o->editVal($q,$e);}$K=($_POST["save"]?(string)$_POST["function"][$f]:($s&&$e["on_update"]=="CURRENT_TIMESTAMP"?"now":($q===false?null:(isset($q)?'':'NULL'))));if($e["type"]=="timestamp"&&$q=="CURRENT_TIMESTAMP"){$q="";$K="now";}input($e,$q,$K);echo"\n";}echo"</table>\n";}echo'<p>
|
||
|
|
';if($p){echo"<input type='submit' value='".lang(141)."'>\n";if(!isset($_GET["select"])){echo'<input type="submit" name="insert" value="'.($qa?lang(142):lang(143))."\">\n";}}echo($qa?"<input type='submit' name='delete' value='".lang(144)."' onclick=\"return confirm('".lang(0)."');\">\n":($_POST||!$p?"":"<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="',$M,'">
|
||
|
|
</form>
|
||
|
|
';}elseif(isset($_GET["create"])){$m=$_GET["create"];$pe=array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST');$ce=referencable_primary($m);$ha=array();foreach($ce
|
||
|
|
as$Ea=>$e){$ha[str_replace("`","``",$Ea)."`".str_replace("`","``",$e["field"])]=$Ea;}$Kc=array();$Jc=array();if($m!=""){$Kc=fields($m);$Jc=table_status($m);}if($_POST&&!$_POST["fields"]){$_POST["fields"]=array();}if($_POST&&!$n&&!$_POST["add"]&&!$_POST["drop_col"]&&!$_POST["up"]&&!$_POST["down"]){if($_POST["drop"]){query_redirect("DROP TABLE ".table($m),substr(ME,0,-1),lang(145));}else{$p=array();$Oa=array();ksort($_POST["fields"]);$vd=reset($Kc);$Jb="FIRST";foreach($_POST["fields"]as$d=>$e){$A=$ha[$e["type"]];$Uc=(isset($A)?$ce[$A]:$e);if($e["field"]!=""){if(!$e["has_default"]){$e["default"]=null;}$za=eregi_replace(" *on update CURRENT_TIMESTAMP","",$e["default"]);if($za!=$e["default"]){$e["on_update"]="CURRENT_TIMESTAMP";$e["default"]=$za;}if($d==$_POST["auto_increment_col"]){$e["auto_increment"]=true;}$qe=process_field($e,$Uc);if($qe!=process_field($vd,$vd)){$p[]=array($e["orig"],$qe,$Jb);}if(isset($A)){$Oa[idf_escape($e["field"])]=($m!=""?"ADD":" ")." FOREIGN KEY (".idf_escape($e["field"]).") REFERENCES ".table($ha[$e["type"]])." (".idf_escape($Uc["field"]).")".(in_array($e["on_delete"],$fb)?" ON DELETE $e[on_delete]":"");}$Jb="AFTER ".idf_escape($e["field"]);}elseif($e["orig"]!=""){$p[]=array($e["orig"]);}if($e["orig"]!=""){$vd=next($Kc);}}$vb="";if(in_array($_POST["partition_by"],$pe)){$yd=array();if($_POST["partition_by"]=='RANGE'||$_POST["partition_by"]=='LIST'){foreach(array_filter($_POST["partition_names"])as$d=>$b){$q=$_POST["partition_values"][$d];$yd[]="\nPARTITION ".idf_escape($b)." VALUES ".($_POST["partition_by"]=='RANGE'?"LESS THAN":"IN").($q!=""?" ($q)":" MAXVALUE");}}$vb.="\nPARTITION BY $_POST[partition_by]($_POST[partition])".($yd?" (".implode(",",$yd)."\n)":($_POST["partitions"]?" PARTITIONS ".(+$_POST["partitions"]):""));}elseif($m!=""&&support("partitioning")){$vb.="\nREMOVE PARTITIONING";}$va=lang(146);if($m==""){cookie("adminer_engine",$_POST["Engine"]);$va=lang(147);}queries_redirect(ME."table=".urlencode($_POST["name"]),$va,alter_table($m,$_POST["name"],$p,$Oa,$_POST["Comment"],($_POST["Engine"]&&$_POST["Engine"]!=$Jc["Engine"]?$_POST["Engine"]:""),($_POST["Collation"]&&$_POST["Collation"]!=$Jc["Collation"]?$_POST["Collation"]:""),($_POST["Auto_increment"]!=""?+$_POST["Auto_increment"]:""),$vb));}}page_header(($m!=""?lang(28):lang(148)),$n,array("table"=>$m),$m);$a=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($R["int"])?"int":(isset($R["integer"])?"integer":"")))),"partition_names"=>array(""),);if($_POST){$a=$_POST;if($a["auto_increment_col"]){$a["fields"][$a["auto_increment_col"]]["auto_increment"]=true;}process_fields($a["fields"]);}elseif($m!=""){$a=$Jc;$a["name"]=$m;$a["fields"]=array();if(!$_GET["auto_increment"]){$a["Auto_increment"]="";}foreach($Kc
|
||
|
|
as$e){$e["has_default"]=isset($e["default"]);if($e["on_update"]){$e["default"].=" ON UPDATE $e[on_update]";}$a["fields"][]=$e;}if(support("partitioning")){$Yb="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($m);$i=$g->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $Yb ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($a["partition_by"],$a["partitions"],$a["partition"])=$i->fetch_row();$a["partition_names"]=array();$a["partition_values"]=array();foreach(get_rows("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $Yb AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION")as$dd){$a["partition_names"][]=$dd["PARTITION_NAME"];$a["partition_values"][]=$dd["PARTITION_DESCRIPTION"];}$a["partition_names"][]="";}}$Z=collations();$qd=floor(extension_loaded("suhosin")?(min(ini_get("suhosin.request.max_vars"),ini_get("suhosin.post.max_vars"))-13)/10:0);if($qd&&count($a["fields"])>$qd){echo"<p class='error'>".h(lang(149,'suhosin.post.max_vars','suhosin.request.max_vars'))."\n";}$wd=engines();foreach($wd
|
||
|
|
as$yb){if(!strcasecmp($yb,$a["Engine"])){$a["Engine"]=$yb;break;}}echo'
|
||
|
|
<form action="" method="post" id="form">
|
||
|
|
<p>
|
||
|
|
',lang(150),': <input name="name" maxlength="64" value="',h($a["name"]),'">
|
||
|
|
';if($m==""&&!$_POST){?><script type='text/javascript'>document.getElementById('form')['name'].focus();</script><?php }echo($wd?adminer_html_select("Engine",array(""=>"(".lang(151).")")+$wd,$a["Engine"]):""),' ',($Z&&!ereg("sqlite|mssql",$v)?adminer_html_select("Collation",array(""=>"(".lang(85).")")+$Z,$a["Collation"]):""),' <input type="submit" value="',lang(141),'">
|
||
|
|
<table cellspacing="0" id="edit-fields" class="nowrap">
|
||
|
|
';$Kb=edit_fields($a["fields"],$Z,"TABLE",$qd,$ha,$a["Comment"]!="");echo'</table>
|
||
|
|
<p>
|
||
|
|
',lang(92),': <input name="Auto_increment" size="6" value="',h($a["Auto_increment"]),'">
|
||
|
|
<label class="jsonly"><input type="checkbox" onclick="columnShow(this.checked, 5);">',lang(93),'</label>
|
||
|
|
',(support("comment")?checkbox("","",$Kb,lang(94),"columnShow(this.checked, 6); toggle('Comment'); if (this.checked) this.form['Comment'].focus();").' <input id="Comment" name="Comment" value="'.h($a["Comment"]).'" maxlength="60"'.($Kb?'':' class="hidden"').'>':''),'<p>
|
||
|
|
<input type="submit" value="',lang(141),'">
|
||
|
|
';if($_GET["create"]!=""){echo'<input type="submit" name="drop" value="',lang(78),'"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$M,'">
|
||
|
|
';if(support("partitioning")){$me=ereg('RANGE|LIST',$a["partition_by"]);print_fieldset("partition",lang(152),$a["partition_by"]);echo'<p>
|
||
|
|
',adminer_html_select("partition_by",array(-1=>"")+$pe,$a["partition_by"],"partitionByChange(this);"),'(<input name="partition" value="',h($a["partition"]),'">)
|
||
|
|
',lang(153),': <input name="partitions" size="2" value="',h($a["partitions"]),'"',($me||!$a["partition_by"]?" class='hidden'":""),'>
|
||
|
|
<table cellspacing="0" id="partition-table"',($me?"":" class='hidden'"),'>
|
||
|
|
<thead><tr><th>',lang(154),'<th>',lang(155),'</thead>
|
||
|
|
';foreach($a["partition_names"]as$d=>$b){echo'<tr>','<td><input name="partition_names[]" value="'.h($b).'"'.($d==count($a["partition_names"])-1?' onchange="partitionNameChange(this);"':'').'>','<td><input name="partition_values[]" value="'.h($a["partition_values"][$d]).'">';}echo'</table>
|
||
|
|
</div></fieldset>
|
||
|
|
';}echo'</form>
|
||
|
|
';}elseif(isset($_GET["indexes"])){$m=$_GET["indexes"];$Nc=array("PRIMARY","UNIQUE","INDEX");$D=table_status($m);if(eregi("MyISAM|M?aria",$D["Engine"])){$Nc[]="FULLTEXT";}$J=indexes($m);if($v=="sqlite"){unset($Nc[0]);unset($J[""]);}if($_POST&&!$n&&!$_POST["add"]){$u=array();foreach($_POST["indexes"]as$x){if(in_array($x["type"],$Nc)){$B=array();$ec=array();$r=array();ksort($x["columns"]);foreach($x["columns"]as$d=>$C){if($C!=""){$W=$x["lengths"][$d];$r[]=idf_escape($C).($W?"(".(+$W).")":"");$B[]=$C;$ec[]=($W?$W:null);}}if($B){foreach($J
|
||
|
|
as$f=>$Bb){ksort($Bb["columns"]);ksort($Bb["lengths"]);if($x["type"]==$Bb["type"]&&array_values($Bb["columns"])===$B&&(!$Bb["lengths"]||array_values($Bb["lengths"])===$ec)){unset($J[$f]);continue
|
||
|
|
2;}}$u[]=array($x["type"],"(".implode(", ",$r).")");}}}foreach($J
|
||
|
|
as$f=>$Bb){$u[]=array($Bb["type"],idf_escape($f),"DROP");}if(!$u){redirect(ME."table=".urlencode($m));}queries_redirect(ME."table=".urlencode($m),lang(156),alter_indexes($m,$u));}page_header(lang(102),$n,array("table"=>$m),$m);$p=array_keys(fields($m));$a=array("indexes"=>$J);if($_POST){$a=$_POST;if($_POST["add"]){foreach($a["indexes"]as$d=>$x){if($x["columns"][count($x["columns"])]!=""){$a["indexes"][$d]["columns"][]="";}}$x=end($a["indexes"]);if($x["type"]||array_filter($x["columns"],'strlen')||array_filter($x["lengths"],'strlen')){$a["indexes"][]=array("columns"=>array(1=>""));}}}else{foreach($a["indexes"]as$d=>$x){$a["indexes"][$d]["columns"][]="";}$a["indexes"][]=array("columns"=>array(1=>""));}echo'
|
||
|
|
<form action="" method="post">
|
||
|
|
<table cellspacing="0" class="nowrap">
|
||
|
|
<thead><tr><th>',lang(157),'<th>',lang(158),'</thead>
|
||
|
|
';$ra=1;foreach($a["indexes"]as$x){echo"<tr><td>".adminer_html_select("indexes[$ra][type]",array(-1=>"")+$Nc,$x["type"],($ra==count($a["indexes"])?"indexesAddRow(this);":1))."<td>";ksort($x["columns"]);$l=1;foreach($x["columns"]as$d=>$C){echo"<span>".adminer_html_select("indexes[$ra][columns][$l]",array(-1=>"")+$p,$C,($l==count($x["columns"])?"indexesAddColumn(this);":1)),"<input name='indexes[$ra][lengths][$l]' size='2' value='".h($x["lengths"][$d])."'> </span>";$l++;}$ra++;}echo'</table>
|
||
|
|
<p>
|
||
|
|
<input type="submit" value="',lang(141),'">
|
||
|
|
<noscript><p><input type="submit" name="add" value="',lang(95),'"></noscript>
|
||
|
|
<input type="hidden" name="token" value="',$M,'">
|
||
|
|
</form>
|
||
|
|
';}elseif(isset($_GET["database"])){if($_POST&&!$n&&!isset($_POST["add_x"])){restart_session();if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(159),drop_databases(array(DB)));}elseif(DB!==$_POST["name"]){if(DB!=""){$_GET["db"]=$_POST["name"];queries_redirect(preg_replace('~db=[^&]*&~','',ME)."db=".urlencode($_POST["name"]),lang(160),rename_database($_POST["name"],$_POST["collation"]));}else{$_=explode("\n",str_replace("\r","",$_POST["name"]));$ee=true;$xb="";foreach($_
|
||
|
|
as$t){if(count($_)==1||$t!=""){if(!create_database($t,$_POST["collation"])){$ee=false;}$xb=$t;}}queries_redirect(ME."db=".urlencode($xb),lang(161),$ee);}}else{if(!$_POST["collation"]){redirect(substr(ME,0,-1));}query_redirect("ALTER DATABASE ".idf_escape($_POST["name"]).(eregi('^[a-z0-9_]+$',$_POST["collation"])?" COLLATE $_POST[collation]":""),substr(ME,0,-1),lang(162));}}page_header(DB!=""?lang(46):lang(163),$n,array(),DB);$Z=collations();$f=DB;$Dc=null;if($_POST){$f=$_POST["name"];$Dc=$_POST["collation"];}elseif(DB!=""){$Dc=db_collation(DB,$Z);}elseif($v=="sql"){foreach(get_vals("SHOW GRANTS")as$ka){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~',$ka,$k)&&$k[1]){$f=stripcslashes(idf_unescape("`$k[2]`"));break;}}}echo'
|
||
|
|
<form action="" method="post">
|
||
|
|
<p>
|
||
|
|
',($_POST["add_x"]||strpos($f,"\n")?'<textarea id="name" name="name" rows="10" cols="40">'.h($f).'</textarea><br>':'<input id="name" name="name" value="'.h($f).'" maxlength="64">')."\n".($Z?adminer_html_select("collation",array(""=>"(".lang(85).")")+$Z,$Dc):"");?>
|
||
|
|
<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(78)."'".confirm().">\n";}elseif(!$_POST["add_x"]&&$_GET["db"]==""){echo"<input type='image' name='add' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&version=3.2.2' alt='+' title='".lang(95)."'>\n";}echo'<input type="hidden" name="token" value="',$M,'">
|
||
|
|
</form>
|
||
|
|
';}elseif(isset($_GET["scheme"])){if($_POST&&!$n){$w=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"]){query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$w,lang(164));}else{$w.=urlencode($_POST["name"]);if($_GET["ns"]==""){query_redirect("CREATE SCHEMA ".idf_escape($_POST["name"]),$w,lang(165));}elseif($_GET["ns"]!=$_POST["name"]){query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($_POST["name"]),$w,lang(166));}else{redirect($w);}}}page_header($_GET["ns"]!=""?lang(47):lang(48),$n);$a=array("name"=>$_GET["ns"]);if($_POST){$a=$_POST;}echo'
|
||
|
|
<form action="" method="post">
|
||
|
|
<p><input name="name" value="',h($a["name"]),'">
|
||
|
|
<input type="submit" value="',lang(141),'">
|
||
|
|
';if($_GET["ns"]!=""){echo"<input type='submit' name='drop' value='".lang(78)."'".confirm().">\n";}echo'<input type="hidden" name="token" value="',$M,'">
|
||
|
|
</form>
|
||
|
|
';}elseif(isset($_GET["call"])){$Va=$_GET["call"];page_header(lang(167).": ".h($Va),$n);$Ta=routine($Va,(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Tb=array();$qb=array();foreach($Ta["fields"]as$l=>$e){if(substr($e["inout"],-3)=="OUT"){$qb[$l]="@".idf_escape($e["field"])." AS ".idf_escape($e["field"]);}if(!$e["inout"]||substr($e["inout"],0,2)=="IN"){$Tb[]=$l;}}if(!$n&&$_POST){$de=array();foreach($Ta["fields"]as$d=>$e){if(in_array($d,$Tb)){$b=process_input($e);if($b===false){$b="''";}if(isset($qb[$d])){$g->query("SET @".idf_escape($e["field"])." = $b");}}$de[]=(isset($qb[$d])?"@".idf_escape($e["field"]):$b);}$j=(isset($_GET["callf"])?"SELECT":"CALL")." ".idf_escape($Va)."(".implode(", ",$de).")";echo"<p><code class='jush-$v'>".h($j)."</code> <a href='".h(ME)."sql=".urlencode($j)."'>".lang(31)."</a>\n";if(!$g->multi_query($j)){echo"<p class='error'>".error()."\n";}else{do{$i=$g->store_result();if(is_object($i)){select($i);}else{echo"<p class='message'>".lang(168,$g->affected_rows)."\n";}}while($g->next_result());if($qb){select($g->query("SELECT ".implode(", ",$qb)));}}}echo'
|
||
|
|
<form action="" method="post">
|
||
|
|
';if($Tb){echo"<table cellspacing='0'>\n";foreach($Tb
|
||
|
|
as$d){$e=$Ta["fields"][$d];$f=$e["field"];echo"<tr><th>".$o->fieldName($e);$q=$_POST["fields"][$f];if($q!=""){if($e["type"]=="enum"){$q=+$q;}if($e["type"]=="set"){$q=array_sum($q);}}input($e,$q,(string)$_POST["function"][$f]);echo"\n";}echo"</table>\n";}echo'<p>
|
||
|
|
<input type="submit" value="',lang(167),'">
|
||
|
|
<input type="hidden" name="token" value="',$M,'">
|
||
|
|
</form>
|
||
|
|
';}elseif(isset($_GET["foreign"])){$m=$_GET["foreign"];if($_POST&&!$n&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if($_POST["drop"]){query_redirect("ALTER TABLE ".table($m)."\nDROP ".($v=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($_GET["name"]),ME."table=".urlencode($m),lang(169));}else{$Ga=array_filter($_POST["source"],'strlen');ksort($Ga);$ea=array();foreach($Ga
|
||
|
|
as$d=>$b){$ea[$d]=$_POST["target"][$d];}query_redirect("ALTER TABLE ".table($m).($_GET["name"]!=""?"\nDROP FOREIGN KEY ".idf_escape($_GET["name"]).",":"")."\nADD FOREIGN KEY (".implode(", ",array_map('idf_escape',$Ga)).") REFERENCES ".table($_POST["table"])." (".implode(", ",array_map('idf_escape',$ea)).")".(in_array($_POST["on_delete"],$fb)?" ON DELETE $_POST[on_delete]":"").(in_array($_POST["on_update"],$fb)?" ON UPDATE $_POST[on_update]":""),ME."table=".urlencode($m),($_GET["name"]!=""?lang(170):lang(171)));$n=lang(172)."<br>$n";}}page_header(lang(173),$n,array("table"=>$m),$m);$a=array("table"=>$m,"source"=>array(""));if($_POST){$a=$_POST;ksort($a["source"]);if($_POST["add"]){$a["source"][]="";}elseif($_POST["change"]||$_POST["change-js"]){$a["target"]=array();}}elseif($_GET["name"]!=""){$ha=foreign_keys($m);$a=$ha[$_GET["name"]];$a["source"][]="";}$Ga=array_keys(fields($m));$ea=($m===$a["table"]?$Ga:array_keys(fields($a["table"])));$je=array();foreach(table_status()as$f=>$D){if(fk_support($D)){$je[]=$f;}}echo'
|
||
|
|
<form action="" method="post">
|
||
|
|
<p>
|
||
|
|
';if($a["db"]==""){echo
|
||
|
|
lang(174),':
|
||
|
|
',adminer_html_select("table",$je,$a["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(175),'"></noscript>
|
||
|
|
<table cellspacing="0">
|
||
|
|
<thead><tr><th>',lang(104),'<th>',lang(105),'</thead>
|
||
|
|
';$ra=0;foreach($a["source"]as$d=>$b){echo"<tr>","<td>".adminer_html_select("source[".(+$d)."]",array(-1=>"")+$Ga,$b,($ra==count($a["source"])-1?"foreignAddRow(this);":1)),"<td>".adminer_html_select("target[".(+$d)."]",$ea,$a["target"][$d]);$ra++;}echo'</table>
|
||
|
|
<p>
|
||
|
|
',lang(86),': ',adminer_html_select("on_delete",array(-1=>"")+$fb,$a["on_delete"]),' ',lang(106),': ',adminer_html_select("on_update",array(-1=>"")+$fb,$a["on_update"]),'<p>
|
||
|
|
<input type="submit" value="',lang(141),'">
|
||
|
|
<noscript><p><input type="submit" name="add" value="',lang(176),'"></noscript>
|
||
|
|
';}if($_GET["name"]!=""){echo'<input type="submit" name="drop" value="',lang(78),'"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$M,'">
|
||
|
|
</form>
|
||
|
|
';}elseif(isset($_GET["view"])){$m=$_GET["view"];$hb=false;if($_POST&&!$n){$hb=drop_create("DROP VIEW ".table($m),"CREATE VIEW ".table($_POST["name"])." AS\n$_POST[select]",($_POST["drop"]?substr(ME,0,-1):ME."table=".urlencode($_POST["name"])),lang(177),lang(178),lang(179),$m);}page_header(($m!=""?lang(27):lang(180)),$n,array("table"=>$m),$m);$a=array();if($_POST){$a=$_POST;}elseif($m!=""){$a=view($m);$a["name"]=$m;}echo'
|
||
|
|
<form action="" method="post">
|
||
|
|
<p>',lang(181),': <input name="name" value="',h($a["name"]),'" maxlength="64">
|
||
|
|
<p>';textarea("select",$a["select"]);echo'<p>
|
||
|
|
';if($hb){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(78),'"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$M,'">
|
||
|
|
</form>
|
||
|
|
';}elseif(isset($_GET["event"])){$ib=$_GET["event"];$ie=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Md=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");if($_POST&&!$n){if($_POST["drop"]){query_redirect("DROP EVENT ".idf_escape($ib),substr(ME,0,-1),lang(182));}elseif(in_array($_POST["INTERVAL_FIELD"],$ie)&&isset($Md[$_POST["STATUS"]])){$he="\nON SCHEDULE ".($_POST["INTERVAL_VALUE"]?"EVERY ".q($_POST["INTERVAL_VALUE"])." $_POST[INTERVAL_FIELD]".($_POST["STARTS"]?" STARTS ".q($_POST["STARTS"]):"").($_POST["ENDS"]?" ENDS ".q($_POST["ENDS"]):""):"AT ".q($_POST["STARTS"]))." ON COMPLETION".($_POST["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($ib!=""?lang(183):lang(184)),queries(($ib!=""?"ALTER EVENT ".idf_escape($ib).$he.($ib!=$_POST["EVENT_NAME"]?"\nRENAME TO ".idf_escape($_POST["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($_POST["EVENT_NAME"]).$he)."\n".$Md[$_POST["STATUS"]]." COMMENT ".q($_POST["EVENT_COMMENT"]).rtrim(" DO\n$_POST[EVENT_DEFINITION]",";").";"));}}page_header(($ib!=""?lang(185).": ".h($ib):lang(186)),$n);$a=array();if($_POST){$a=$_POST;}elseif($ib!=""){$H=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($ib));$a=reset($H);}echo'
|
||
|
|
<form action="" method="post">
|
||
|
|
<table cellspacing="0">
|
||
|
|
<tr><th>',lang(181),'<td><input name="EVENT_NAME" value="',h($a["EVENT_NAME"]),'" maxlength="64">
|
||
|
|
<tr><th>',lang(187),'<td><input name="STARTS" value="',h("$a[EXECUTE_AT]$a[STARTS]"),'">
|
||
|
|
<tr><th>',lang(188),'<td><input name="ENDS" value="',h($a["ENDS"]),'">
|
||
|
|
<tr><th>',lang(189),'<td><input name="INTERVAL_VALUE" value="',h($a["INTERVAL_VALUE"]),'" size="6"> ',adminer_html_select("INTERVAL_FIELD",$ie,$a["INTERVAL_FIELD"]),'<tr><th>',lang(73),'<td>',adminer_html_select("STATUS",$Md,$a["STATUS"]),'<tr><th>',lang(94),'<td><input name="EVENT_COMMENT" value="',h($a["EVENT_COMMENT"]),'" maxlength="64">
|
||
|
|
<tr><th> <td>',checkbox("ON_COMPLETION","PRESERVE",$a["ON_COMPLETION"]=="PRESERVE",lang(190)),'</table>
|
||
|
|
<p>';textarea("EVENT_DEFINITION",$a["EVENT_DEFINITION"]);echo'<p>
|
||
|
|
<input type="submit" value="',lang(141),'">
|
||
|
|
';if($ib!=""){echo'<input type="submit" name="drop" value="',lang(78),'"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$M,'">
|
||
|
|
</form>
|
||
|
|
';}elseif(isset($_GET["procedure"])){$Va=$_GET["procedure"];$Ta=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$hb=false;if($_POST&&!$n&&!$_POST["add"]&&!$_POST["drop_col"]&&!$_POST["up"]&&!$_POST["down"]){$r=array();$p=(array)$_POST["fields"];ksort($p);foreach($p
|
||
|
|
as$e){if($e["field"]!=""){$r[]=(in_array($e["inout"],$jc)?"$e[inout] ":"").idf_escape($e["field"]).process_type($e,"CHARACTER SET");}}$hb=drop_create("DROP $Ta ".idf_escape($Va),"CREATE $Ta ".idf_escape($_POST["name"])." (".implode(", ",$r).")".(isset($_GET["function"])?" RETURNS".process_type($_POST["returns"],"CHARACTER SET"):"").rtrim("\n$_POST[definition]",";").";",substr(ME,0,-1),lang(191),lang(192),lang(193),$Va);}page_header(($Va!=""?(isset($_GET["function"])?lang(194):lang(195)).": ".h($Va):(isset($_GET["function"])?lang(196):lang(197))),$n);$Z=get_vals("SHOW CHARACTER SET");sort($Z);$a=array("fields"=>array());if($_POST){$a=$_POST;$a["fields"]=(array)$a["fields"];process_fields($a["fields"]);}elseif($Va!=""){$a=routine($Va,$Ta);$a["name"]=$Va;}echo'
|
||
|
|
<form action="" method="post" id="form">
|
||
|
|
<p>',lang(181),': <input name="name" value="',h($a["name"]),'" maxlength="64">
|
||
|
|
<table cellspacing="0" class="nowrap">
|
||
|
|
';edit_fields($a["fields"],$Z,$Ta);if(isset($_GET["function"])){echo"<tr><td>".lang(198);edit_type("returns",$a["returns"],$Z);}echo'</table>
|
||
|
|
<p>';textarea("definition",$a["definition"]);echo'<p>
|
||
|
|
<input type="submit" value="',lang(141),'">
|
||
|
|
';if($Va!=""){echo'<input type="submit" name="drop" value="',lang(78),'"',confirm(),'>';}if($hb){echo'<input type="hidden" name="dropped" value="1">';}echo'<input type="hidden" name="token" value="',$M,'">
|
||
|
|
</form>
|
||
|
|
';}elseif(isset($_GET["sequence"])){$Eb=$_GET["sequence"];if($_POST&&!$n){$w=substr(ME,0,-1);if($_POST["drop"]){query_redirect("DROP SEQUENCE ".idf_escape($Eb),$w,lang(199));}elseif($Eb==""){query_redirect("CREATE SEQUENCE ".idf_escape($_POST["name"]),$w,lang(200));}elseif($Eb!=$_POST["name"]){query_redirect("ALTER SEQUENCE ".idf_escape($Eb)." RENAME TO ".idf_escape($_POST["name"]),$w,lang(201));}else{redirect($w);}}page_header($Eb!=""?lang(202).": ".h($Eb):lang(203),$n);$a=array("name"=>$Eb);if($_POST){$a=$_POST;}echo'
|
||
|
|
<form action="" method="post">
|
||
|
|
<p><input name="name" value="',h($a["name"]),'">
|
||
|
|
<input type="submit" value="',lang(141),'">
|
||
|
|
';if($Eb!=""){echo"<input type='submit' name='drop' value='".lang(78)."'".confirm().">\n";}echo'<input type="hidden" name="token" value="',$M,'">
|
||
|
|
</form>
|
||
|
|
';}elseif(isset($_GET["type"])){$Oc=$_GET["type"];if($_POST&&!$n){$w=substr(ME,0,-1);if($_POST["drop"]){query_redirect("DROP TYPE ".idf_escape($Oc),$w,lang(204));}else{query_redirect("CREATE TYPE ".idf_escape($_POST["name"])." $_POST[as]",$w,lang(205));}}page_header($Oc!=""?lang(206).": ".h($Oc):lang(207),$n);$a["as"]="AS ";if($_POST){$a=$_POST;}echo'
|
||
|
|
<form action="" method="post">
|
||
|
|
<p>
|
||
|
|
';if($Oc!=""){echo"<input type='submit' name='drop' value='".lang(78)."'".confirm().">\n";}else{echo"<input name='name' value='".h($a['name'])."'>\n";textarea("as",$a["as"]);echo"<p><input type='submit' value='".lang(141)."'>\n";}echo'<input type="hidden" name="token" value="',$M,'">
|
||
|
|
</form>
|
||
|
|
';}elseif(isset($_GET["trigger"])){$m=$_GET["trigger"];$Ic=trigger_options();$te=array("INSERT","UPDATE","DELETE");$hb=false;if($_POST&&!$n&&in_array($_POST["Timing"],$Ic["Timing"])&&in_array($_POST["Event"],$te)&&in_array($_POST["Type"],$Ic["Type"])){$re=" $_POST[Timing] $_POST[Event]";$Cb=" ON ".table($m);$hb=drop_create("DROP TRIGGER ".idf_escape($_GET["name"]).($v=="pgsql"?$Cb:""),"CREATE TRIGGER ".idf_escape($_POST["Trigger"]).($v=="mssql"?$Cb.$re:$re.$Cb).rtrim(" $_POST[Type]\n$_POST[Statement]",";").";",ME."table=".urlencode($m),lang(208),lang(209),lang(210),$_GET["name"]);}page_header(($_GET["name"]!=""?lang(211).": ".h($_GET["name"]):lang(212)),$n,array("table"=>$m));$a=array("Trigger"=>$m."_bi");if($_POST){$a=$_POST;}elseif($_GET["name"]!=""){$a=trigger($_GET["name"]);}echo'
|
||
|
|
<form action="" method="post" id="form">
|
||
|
|
<table cellspacing="0">
|
||
|
|
<tr><th>',lang(213),'<td>',adminer_html_select("Timing",$Ic["Timing"],$a["Timing"],"if (/^".h(preg_quote($m,"/"))."_[ba][iud]$/.test(this.form['Trigger'].value)) this.form['Trigger'].value = '".h(js_escape($m))."_' + selectValue(this).charAt(0).toLowerCase() + selectValue(this.form['Event']).charAt(0).toLowerCase();"),'<tr><th>',lang(214),'<td>',adminer_html_select("Event",$te,$a["Event"],"this.form['Timing'].onchange();"),'<tr><th>',lang(89),'<td>',adminer_html_select("Type",$Ic["Type"],$a["Type"]),'</table>
|
||
|
|
<p>',lang(181),': <input name="Trigger" value="',h($a["Trigger"]),'" maxlength="64">
|
||
|
|
<p>';textarea("Statement",$a["Statement"]);echo'<p>
|
||
|
|
<input type="submit" value="',lang(141),'">
|
||
|
|
';if($_GET["name"]!=""){echo'<input type="submit" name="drop" value="',lang(78),'"',confirm(),'>';}if($hb){echo'<input type="hidden" name="dropped" value="1">';}echo'<input type="hidden" name="token" value="',$M,'">
|
||
|
|
</form>
|
||
|
|
';}elseif(isset($_GET["user"])){$Fd=$_GET["user"];$sa=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$a){foreach(explode(",",($a["Privilege"]=="Grant option"?"":$a["Context"]))as$Gc){$sa[$Gc][$a["Privilege"]]=$a["Comment"];}}$sa["Server Admin"]+=$sa["File access on server"];$sa["Databases"]["Create routine"]=$sa["Procedures"]["Create routine"];unset($sa["Procedures"]["Create routine"]);$sa["Columns"]=array();foreach(array("Select","Insert","Update","References")as$b){$sa["Columns"][$b]=$sa["Tables"][$b];}unset($sa["Server Admin"]["Usage"]);foreach($sa["Tables"]as$d=>$b){unset($sa["Databases"][$d]);}$nc=array();if($_POST){foreach($_POST["objects"]as$d=>$b){$nc[$b]=(array)$nc[$b]+(array)$_POST["grants"][$d];}}$nb=array();$Xc="";if(isset($_GET["host"])&&($i=$g->query("SHOW GRANTS FOR ".q($Fd)."@".q($_GET["host"])))){while($a=$i->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$a[0],$k)&&preg_match_all('~ *([^(,]*[^ ,(])( *\\([^)]+\\))?~',$k[1],$oa,PREG_SET_ORDER)){foreach($oa
|
||
|
|
as$b){if($b[1]!="USAGE"){$nb["$k[2]$b[2]"][$b[1]]=true;}if(ereg(' WITH GRANT OPTION',$a[0])){$nb["$k[2]$b[2]"]["GRANT OPTION"]=true;}}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$a[0],$k)){$Xc=$k[1];}}}if($_POST&&!$n){$ac=(isset($_GET["host"])?q($Fd)."@".q($_GET["host"]):"''");$pb=q($_POST["user"])."@".q($_POST["host"]);$Ad=q($_POST["pass"]);if($_POST["drop"]){query_redirect("DROP USER $ac",ME."privileges=",lang(215));}else{if($ac!=$pb){$n=!queries(($g->server_info<5?"GRANT USAGE ON *.* TO":"CREATE USER")." $pb IDENTIFIED BY".($_POST["hashed"]?" PASSWORD":"")." $Ad");}elseif($_POST["pass"]!=$Xc||!$_POST["hashed"]){queries("SET PASSWORD FOR $pb = ".($_POST["hashed"]?$Ad:"PASSWORD($Ad)"));}if(!$n){$qc=array();foreach($nc
|
||
|
|
as$bb=>$ka){if(isset($_GET["grant"])){$ka=array_filter($ka);}$ka=array_keys($ka);if(isset($_GET["grant"])){$qc=array_diff(array_keys(array_filter($nc[$bb],'strlen')),$ka);}elseif($ac==$pb){$Sd=array_keys((array)$nb[$bb]);$qc=array_diff($Sd,$ka);$ka=array_diff($ka,$Sd);unset($nb[$bb]);}if(preg_match('~^(.+)\\s*(\\(.*\\))?$~U',$bb,$k)&&(!grant("REVOKE",$qc,$k[2]," ON $k[1] FROM $pb")||!grant("GRANT",$ka,$k[2]," ON $k[1] TO $pb"))){$n=true;break;}}}if(!$n&&isset($_GET["host"])){if($ac!=$pb){queries("DROP USER $ac");}elseif(!isset($_GET["grant"])){foreach($nb
|
||
|
|
as$bb=>$qc){if(preg_match('~^(.+)(\\(.*\\))?$~U',$bb,$k)){grant("REVOKE",array_keys($qc),$k[2]," ON $k[1] FROM $pb");}}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(216):lang(217)),!$n);if($ac!=$pb){$g->query("DROP USER $pb");}}}page_header((isset($_GET["host"])?lang(21).": ".h("$Fd@$_GET[host]"):lang(120)),$n,array("privileges"=>array('',lang(70))));if($_POST){$a=$_POST;$nb=$nc;}else{$a=$_GET+array("host"=>$g->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$a["pass"]=$Xc;if($Xc!=""){$a["hashed"]=true;}$nb[""]=true;}echo'<form action="" method="post">
|
||
|
|
<table cellspacing="0">
|
||
|
|
<tr><th>',lang(21),'<td><input name="user" maxlength="16" value="',h($a["user"]),'">
|
||
|
|
<tr><th>',lang(20),'<td><input name="host" maxlength="60" value="',h($a["host"]),'">
|
||
|
|
<tr><th>',lang(22),'<td><input id="pass" name="pass" value="',h($a["pass"]),'">
|
||
|
|
';if(!$a["hashed"]){echo'<script type="text/javascript">typePassword(document.getElementById(\'pass\'));</script>';}echo
|
||
|
|
checkbox("hashed",1,$a["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(70)."</a>";$l=0;foreach($nb
|
||
|
|
as$bb=>$ka){echo'<th>'.($bb!="*.*"?"<input name='objects[$l]' value='".h($bb)."' size='10'>":"<input type='hidden' name='objects[$l]' value='*.*' size='10'>*.*");$l++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>lang(20),"Databases"=>lang(65),"Tables"=>lang(100),"Columns"=>lang(101),"Procedures"=>lang(219),)as$Gc=>$rc){foreach((array)$sa[$Gc]as$mc=>$_a){echo"<tr".odd()."><td".($rc?">$rc<td":" colspan='2'").' lang="en" title="'.h($_a).'">'.h($mc);$l=0;foreach($nb
|
||
|
|
as$bb=>$ka){$f="'grants[$l][".h(strtoupper($mc))."]'";$q=$ka[strtoupper($mc)];if($Gc=="Server Admin"&&$bb!=(isset($nb["*.*"])?"*.*":"")){echo"<td> ";}elseif(isset($_GET["grant"])){echo"<td><select name=$f><option><option value='1'".($q?" selected":"").">".lang(220)."<option value='0'".($q=="0"?" selected":"").">".lang(221)."</select>";}else{echo"<td align='center'><input type='checkbox' name=$f value='1'".($q?" checked":"").($mc=="All privileges"?" id='grants-$l-all'":($mc=="Grant option"?"":" onclick=\"if (this.checked) formUncheck('grants-$l-all');\"")).">";}$l++;}}}echo"</table>\n",'<p>
|
||
|
|
<input type="submit" value="',lang(141),'">
|
||
|
|
';if(isset($_GET["host"])){echo'<input type="submit" name="drop" value="',lang(78),'"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$M,'">
|
||
|
|
</form>
|
||
|
|
';}elseif(isset($_GET["processlist"])){if($_POST&&!$n){$Id=0;foreach((array)$_POST["kill"]as$b){if(queries("KILL ".(+$b))){$Id++;}}queries_redirect(ME."processlist=",lang(222,$Id),$Id||!$_POST["kill"]);}page_header(lang(71),$n);echo'
|
||
|
|
<form action="" method="post">
|
||
|
|
<table cellspacing="0" onclick="tableClick(event);" class="nowrap">
|
||
|
|
';$l=-1;foreach(get_rows("SHOW FULL PROCESSLIST")as$l=>$a){if(!$l){echo"<thead><tr lang='en'><th> <th>".implode("<th>",array_keys($a))."</thead>\n";}echo"<tr".odd()."><td>".checkbox("kill[]",$a["Id"],0);foreach($a
|
||
|
|
as$d=>$b){echo"<td>".($d=="Info"&&$b!=""?"<code class='jush-$v'>".shorten_utf8($b,100,"</code>").' <a href="'.h(ME.($a["db"]!=""?"db=".urlencode($a["db"])."&":"")."sql=".urlencode($b)).'">'.lang(31).'</a>':nbsp($b));}echo"\n";}echo'</table>
|
||
|
|
<p>',($l+1)."/".lang(223,$g->result("SELECT @@max_connections")),'<p>
|
||
|
|
<input type="submit" value="',lang(224),'">
|
||
|
|
<input type="hidden" name="token" value="',$M,'">
|
||
|
|
</form>
|
||
|
|
';}elseif(isset($_GET["select"])){$m=$_GET["select"];$D=table_status($m);$J=indexes($m);$p=fields($m);$ha=column_foreign_keys($m);if($D["Oid"]=="t"){$J[]=array("type"=>"PRIMARY","columns"=>array("oid"));}$Td=array();$B=array();$Db=null;foreach($p
|
||
|
|
as$d=>$e){$f=$o->fieldName($e);if(isset($e["privileges"]["select"])&&$f!=""){$B[$d]=html_entity_decode(strip_tags($f));if(ereg('text|lob',$e["type"])){$Db=$o->selectLengthProcess();}}$Td+=$e["privileges"];}list($Q,$pa)=$o->selectColumnsProcess($B,$J);$s=$o->selectSearchProcess($p,$J);$Xa=$o->selectOrderProcess($p,$J);$O=$o->selectLimitProcess();$Yb=($Q?implode(", ",$Q):($D["Oid"]=="t"?"oid, ":"")."*")."\nFROM ".table($m);$Ld=($pa&&count($pa)<count($Q)?"\nGROUP BY ".implode(", ",$pa):"").($Xa?"\nORDER BY ".implode(", ",$Xa):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$gb=>$a){echo$g->result("SELECT".limit(idf_escape(key($a))." FROM ".table($m)," WHERE ".where_check($gb).($s?" AND ".implode(" AND ",$s):"").($Xa?" ORDER BY ".implode(", ",$Xa):""),1));}exit;}if($_POST&&!$n){$ne="(".implode(") OR (",array_map('where_check',(array)$_POST["check"])).")";$Qa=$ad=null;foreach($J
|
||
|
|
as$x){if($x["type"]=="PRIMARY"){$Qa=array_flip($x["columns"]);$ad=($Q?$Qa:array());break;}}foreach($Q
|
||
|
|
as$d=>$b){$b=$_GET["columns"][$d];if(!$b["fun"]){unset($ad[$b["col"]]);}}if($_POST["export"]){dump_headers($m);$o->dumpTable($m,"");if(!is_array($_POST["check"])||$ad===array()){$bc=$s;if(is_array($_POST["check"])){$bc[]="($ne)";}$j="SELECT $Yb".($bc?"\nWHERE ".implode(" AND ",$bc):"").$Ld;}else{$Zd=array();foreach($_POST["check"]as$b){$Zd[]="(SELECT".limit($Yb,"\nWHERE ".($s?implode(" AND ",$s)." AND ":"").where_check($b).$Ld,1).")";}$j=implode(" UNION ALL ",$Zd);}$o->dumpData($m,"table",$j);exit;}if(!$o->selectEmailProcess($s,$ha)){if($_POST["save"]||$_POST["delete"]){$i=true;$wb=0;$j=table($m);$r=array();if(!$_POST["delete"]){foreach($B
|
||
|
|
as$f=>$b){$b=process_input($p[$f]);if($b!==null){if($_POST["clone"]){$r[idf_escape($f)]=($b!==false?$b:idf_escape($f));}elseif($b!==false){$r[]=idf_escape($f)." = $b";}}}$j.=($_POST["clone"]?" (".implode(", ",array_keys($r)).")\nSELECT ".implode(", ",$r)."\nFROM ".table($m):" SET\n".implode(",\n",$r));}if($_POST["delete"]||$r){$id="UPDATE";if($_POST["delete"]){$id="DELETE";$j="FROM $j";}if($_POST["clone"]){$id="INSERT";$j="INTO $j";}if($_POST["all"]||($ad===array()&&$_POST["check"])||count($pa)<count($Q)){$i=queries($id." $j".($_POST["all"]?($s?"\nWHERE ".implode(" AND ",$s):""):"\nWHERE $ne"));$wb=$g->affected_rows;}else{foreach((array)$_POST["check"]as$b){$i=queries($id.limit1($j,"\nWHERE ".where_check($b)));if(!$i){break;}$wb+=$g->affected_rows;}}}queries_redirect(remove_from_uri("page"),lang(225,$wb),$i);}elseif(!$_POST["import"]){if(!$_POST["val"]){$n=lang(226);}else{$i=true;$wb=0;foreach($_POST["val"]as$gb=>$a){$r=array();foreach($a
|
||
|
|
as$d=>$b){$d=bracket_escape($d,1);$r[]=idf_escape($d)." = ".(ereg('char|text',$p[$d]["type"])||$b!=""?$o->processInput($p[$d],$b):"NULL");}$j=table($m)." SET ".implode(", ",$r);$bc=" WHERE ".where_check($gb).($s?" AND ".implode(" AND ",$s):"");$i=queries("UPDATE".(count($pa)<count($Q)?" $j$bc":limit1($j,$bc)));if(!$i){break;}$wb+=$g->affected_rows;}queries_redirect(remove_from_uri(),lang(225,$wb),$i);}}elseif(is_string($Ia=get_file("csv_file",true))){$i=true;$mb=array_keys($p);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$Ia,$oa);$wb=count($oa[0]);begin();$Wa=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));foreach($oa[0]as$d=>$b){preg_match_all("~((\"[^\"]*\")+|[^$Wa]*)$Wa~",$b.$Wa,$Gd);if(!$d&&!array_diff($Gd[1],$mb)){$mb=$Gd[1];$wb--;}else{$r=array();foreach($Gd[1]as$l=>$Pc){$r[idf_escape($mb[$l])]=($Pc==""&&$p[$mb[$l]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$Pc))));}$i=insert_update($m,$r,$Qa);if(!$i){break;}}}if($i){queries("COMMIT");}queries_redirect(remove_from_uri("page"),lang(227,$wb),$i);queries("ROLLBACK");}else{$n=upload_error($Ia);}}}$Ea=$o->tableName($D);page_header(lang(33).": $Ea",$n);session_write_close();$r=null;if(isset($Td["insert"])){$r="";foreach((array)$_GET["where"]as$b){if(count($ha[$b["col"]])==1&&($b["op"]=="="||(!$b["op"]&&!ereg('[_%]',$b["val"])))){$r.="&set".urlencode("[".bracket_escape($b["col"])."]")."=".urlencode($b["val"]);}}}$o->selectLinks($D,$r);if(!$B){echo"<p class='error'>".lang(228).($p?".":": ".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($m).'">',"</div>\n";$o->selectColumnsPrint($Q,$B);$o->selectSearchPrint($s,$B,$J);$o->selectOrderPrint($Xa,$B,$J);$o->selectLimitPrint($O);$o->selectLengthPrint($Db);$o->selectActionPrint($Db);echo"</form>\n";$ca=$_GET["page"];if($ca=="last"){$Ya=$g->result("SELECT COUNT(*) FROM ".table($m).($s?" WHERE ".implode(" AND ",$s):""));$ca=floor(max(0,$Ya-1)/$O);}$j="SELECT".limit((+$O&&$pa&&count($pa)<count($Q)&&$v=="sql"?"SQL_CALC_FOUND_ROWS ":"").$Yb,($s?"\nWHERE ".implode(" AND ",$s):"").$Ld,($O!=""?+$O:null),($ca?$O*$ca:0),"\n");echo$o->selectQuery($j);$i=$g->query($j);if(!$i){echo"<p class='error'>".error()."\n";}else{if($v=="mssql"){$i->seek($O*$ca);}$Hc=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$H=array();while($a=$i->fetch_assoc()){$H[]=$a;}if($_GET["page"]!="last"){$Ya=(+$O&&$pa&&count($pa)<count($Q)?($v=="sql"?$g->result(" SELECT FOUND_ROWS()"):$g->result("SELECT COUNT(*) FROM ($j) x")):count($H));}if(!$H){echo"<p class='message'>".lang(82)."\n";}else{$Bd=$o->backwardKeys($m,$Ea);echo"<table cellspacing='0' class='nowrap' onclick='tableClick(event);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$pa&&$Q?"":"<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(119)."</a>");$Cd=array();$da=array();reset($Q);$ke=1;foreach($H[0]as$d=>$b){if($D["Oid"]!="t"||$d!="oid"){$b=$_GET["columns"][key($Q)];$e=$p[$Q?$b["col"]:$d];$f=($e?$o->fieldName($e,$ke):"*");if($f!=""){$ke++;$Cd[$d]=$f;$C=idf_escape($d);echo'<th><a href="'.h(remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($d).($Xa[0]==$C||$Xa[0]==$d||(!$Xa&&$pa[0]==$C)?'&desc%5B0%5D=1':'')).'">'.apply_sql_function($b["fun"],$f)."</a>";}$da[$d]=$b["fun"];next($Q);}}$ec=array();if($_GET["modify"]){foreach($H
|
||
|
|
as$a){foreach($a
|
||
|
|
as$d=>$b){$ec[$d]=max($ec[$d],min(40,strlen(utf8_decode($b))));}}}echo($Bd?"<th>".lang(229):"")."</thead>\n";foreach($o->rowDescriptions($H,$ha)as$fa=>$a){$pd=unique_array($H[$fa],$J);$gb="";foreach($pd
|
||
|
|
as$d=>$b){$gb.="&".(isset($b)?urlencode("where[".bracket_escape($d)."]")."=".urlencode($b):"null%5B%5D=".urlencode($d));}echo"<tr".odd().">".(!$pa&&$Q?"":"<td>".checkbox("check[]",substr($gb,1),in_array(substr($gb,1),(array)$_POST["check"]),"","this.form['all'].checked = false; formUncheck('all-page');").(count($pa)<count($Q)||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($m).$gb)."'>".lang(119)."</a>"));foreach($a
|
||
|
|
as$d=>$b){if(isset($Cd[$d])){$e=$p[$d];if($b!=""&&(!isset($Hc[$d])||$Hc[$d]!="")){$Hc[$d]=(is_mail($b)?$Cd[$d]:"");}$w="";$b=$o->editVal($b,$e);if(!isset($b)){$b="<i>NULL</i>";}else{if(ereg('blob|bytea|raw|file',$e["type"])&&$b!=""){$w=h(ME.'download='.urlencode($m).'&field='.urlencode($d).$gb);}if($b===""){$b=" ";}elseif($Db!=""&&ereg('text|blob',$e["type"])&&is_utf8($b)){$b=shorten_utf8($b,max(0,+$Db));}else{$b=h($b);}if(!$w){foreach((array)$ha[$d]as$A){if(count($ha[$d])==1||end($A["source"])==$d){$w="";foreach($A["source"]as$l=>$Ga){$w.=where_link($l,$A["target"][$l],$H[$fa][$Ga]);}$w=h(($A["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($A["db"]),ME):ME).'select='.urlencode($A["table"]).$w);if(count($A["source"])==1){break;}}}}if($d=="COUNT(*)"){$w=h(ME."select=".urlencode($m));$l=0;foreach((array)$_GET["where"]as$y){if(!array_key_exists($y["col"],$pd)){$w.=h(where_link($l++,$y["col"],$y["val"],$y["op"]));}}foreach($pd
|
||
|
|
as$Ma=>$y){$w.=h(where_link($l++,$Ma,$y));}}}if(!$w){if(is_mail($b)){$w="mailto:$b";}if($le=is_url($a[$d])){$w=($le=="http"&&$Ac?$a[$d]:"$le://www.adminer.org/redirect/?url=".urlencode($a[$d]));}}$S=h("val[$gb][".bracket_escape($d)."]");$q=$_POST["val"][$gb][bracket_escape($d)];$Pd=h(isset($q)?$q:$a[$d]);$uf=strpos($b,"<i>...</i>");$Yd=is_utf8($b)&&$H[$fa][$d]==$a[$d]&&!$da[$d];$Wd=ereg('text|lob',$e["type"]);echo(($_GET["modify"]&&$Yd)||isset($q)?"<td>".($Wd?"<textarea name='$S' cols='30' rows='".(substr_count($a[$d],"\n")+1)."'>$Pd</textarea>":"<input name='$S' value='$Pd' size='$ec[$d]'>"):"<td id='$S' ondblclick=\"".($Yd?"selectDblClick(this, event".($uf?", 2":($Wd?", 1":"")).")":"alert('".h(lang(230))."')").";\">".$o->selectVal($b,$w,$e));}}if($Bd){echo"<td>";}$o->backwardKeysPrint($Bd,$H[$fa]);echo"</tr>\n";}echo"</table>\n";}parse_str($_COOKIE["adminer_export"],$Xb);if($H||$ca){$md=true;if($_GET["page"]!="last"&&+$O&&count($pa)>=count($Q)&&($Ya>=$O||$ca)){$Ya=$D["Rows"];if(!isset($Ya)||$s||($D["Engine"]=="InnoDB"&&$Ya<max(1e4,2*($ca+1)*$O))){ob_flush();flush();$Ya=$g->result("SELECT COUNT(*) FROM ".table($m).($s?" WHERE ".implode(" AND ",$s):""));}else{$md=false;}}echo"<p class='pages'>";if(+$O&&$Ya>$O){$Nd=floor(($Ya-1)/$O);echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".lang(231)."', '".($ca+1)."'), event); return false;\">".lang(231)."</a>:",pagination(0,$ca).($ca>5?" ...":"");for($l=max(1,$ca-4);$l<min($Nd,$ca+5);$l++){echo
|
||
|
|
pagination($l,$ca);}echo($ca+5<$Nd?" ...":"").($md?pagination($Nd,$ca):' <a href="'.h(remove_from_uri()."&page=last").'">'.lang(232)."</a>");}echo" (".($md?"":"~ ").lang(122,$Ya).") ".checkbox("all",1,0,lang(233))."\n";if(!information_schema(DB)){echo'<fieldset><legend>',lang(31),'</legend><div>
|
||
|
|
<input type="submit" value="',lang(141),'" title="',lang(226),'" class="jsonly">
|
||
|
|
<input type="submit" name="edit" value="',lang(31),'">
|
||
|
|
<input type="submit" name="clone" value="',lang(234),'">
|
||
|
|
<input type="submit" name="delete" value="',lang(144),'" onclick="return confirm(\'',lang(0);?> (' + (this.form['all'].checked ? <?php echo$Ya,' : formChecked(this, /check/)) + \')\');">
|
||
|
|
</div></fieldset>
|
||
|
|
';}print_fieldset("export",lang(113));$Na=$o->dumpOutput();echo($Na?adminer_html_select("output",$Na,$Xb["output"])." ":""),adminer_html_select("format",$o->dumpFormat(),$Xb["format"])," <input type='submit' name='export' value='".lang(113)."' onclick='eventStop(event);'>\n","</div></fieldset>\n";}print_fieldset("import",lang(235),!$H);echo"<input type='file' name='csv_file'> ",adminer_html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$Xb["format"],1);echo" <input type='submit' name='import' value='".lang(235)."'>","<input type='hidden' name='token' value='$M'>\n","</div></fieldset>\n";$o->selectEmailPrint(array_filter($Hc,'strlen'),$B);echo"</form>\n";}}}elseif(isset($_GET["variables"])){$fc=isset($_GET["status"]);page_header($fc?lang(73):lang(72));$Pe=($fc?show_status():show_variables());if(!$Pe){echo"<p class='message'>".lang(82)."\n";}else{echo"<table cellspacing='0'>\n";foreach($Pe
|
||
|
|
as$d=>$b){echo"<tr>","<th><code class='jush-".$v.($fc?"status":"set")."'>".h($d)."</code>","<td>".nbsp($b);}echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Yc=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$a){$S=js_escape($a["Name"]);json_row("Comment-$S",nbsp($a["Comment"]));if(!is_view($a)){foreach(array("Engine","Collation")as$d){json_row("$d-$S",nbsp($a[$d]));}foreach($Yc+array("Auto_increment"=>0,"Rows"=>0)as$d=>$b){if($a[$d]!=""){$b=number_format($a[$d],0,'.',lang(236));json_row("$d-$S",($d=="Rows"&&$a["Engine"]=="InnoDB"&&$b?"~ $b":$b));if(isset($Yc[$d])){$Yc[$d]+=($a["Engine"]!="InnoDB"||$d!="Data_free"?$a[$d]:0);}}elseif(array_key_exists($d,$a)){json_row("$d-$S");}}}}foreach($Yc
|
||
|
|
as$d=>$b){json_row("sum-$d",number_format($b,0,'.',lang(236)));}json_row("");}else{foreach(count_tables(get_databases())as$t=>$b){json_row("tables-".js_escape($t),$b);}json_row("");}exit;}else{$Fe=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Fe&&!$n&&!$_POST["search"]){$i=true;$va="";if($v=="sql"&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"])){queries("SET foreign_key_checks = 0");}if($_POST["truncate"]){if($_POST["tables"]){$i=truncate_tables($_POST["tables"]);}$va=lang(237);}elseif($_POST["move"]){$i=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$va=lang(238);}elseif($_POST["copy"]){$i=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$va=lang(239);}elseif($_POST["drop"]){if($_POST["views"]){$i=drop_views($_POST["views"]);}if($i&&$_POST["tables"]){$i=drop_tables($_POST["tables"]);}$va=lang(240);}elseif($_POST["tables"]&&($i=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"]))))){while($a=$i->fetch_assoc()){$va.="<b>".h($a["Table"])."</b>: ".h($a["Msg_text"])."<br>";}}queries_redirect(substr(ME,0,-1),$va,$i);}page_header(($_GET["ns"]==""?lang(65).": ".h(DB):lang(80).": ".h($_GET["ns"])),$n,true);if($o->homepage()){if($_GET["ns"]!==""){echo'<a href="'.h(ME).'schema=">'.lang(111)."</a>\n","<h3>".lang(241)."</h3>\n";$jd=tables_list();if(!$jd){echo"<p class='message'>".lang(6)."\n";}else{echo"<form action='' method='post'>\n","<p>".lang(242).": <input name='query' value='".h($_POST["query"])."'> <input type='submit' name='search' value='".lang(36)."'>\n";if($_POST["search"]&&$_POST["query"]!=""){search_tables();}echo"<table cellspacing='0' class='nowrap' onclick='tableClick(event);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);"><th>'.lang(100).'<td>'.lang(243).'<td>'.lang(76).'<td>'.lang(244).'<td>'.lang(245).'<td>'.lang(246).'<td>'.lang(92).'<td>'.lang(247).(support("comment")?'<td>'.lang(94):'')."</thead>\n";foreach($jd
|
||
|
|
as$f=>$z){$cc=(isset($z)&&!eregi("table",$z));echo'<tr'.odd().'><td>'.checkbox(($cc?"views[]":"tables[]"),$f,in_array($f,$Fe,true),"","formUncheck('check-all');"),'<th><a href="'.h(ME).'table='.urlencode($f).'">'.h($f).'</a>';if($cc){echo'<td colspan="6"><a href="'.h(ME)."view=".urlencode($f).'">'.lang(99).'</a>','<td align="right"><a href="'.h(ME)."select=".urlencode($f).'">?</a>';}else{foreach(array("Engine"=>"","Collation"=>"","Data_length"=>"create","Index_length"=>"indexes","Data_free"=>"edit","Auto_increment"=>"auto_increment=1&create","Rows"=>"select")as$d=>$w){echo($w?"<td align='right'><a href='".h(ME."$w=").urlencode($f)."' id='$d-".h($f)."'>?</a>":"<td id='$d-".h($f)."'> ");}}echo(support("comment")?"<td id='Comment-".h($f)."'> ":"");}echo"<tr><td> <th>".lang(223,count($jd)),"<td>".nbsp($v=="sql"?$g->result("SELECT @@storage_engine"):""),"<td>".nbsp(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$d){echo"<td align='right' id='sum-$d'> ";}echo"</table>\n";if(!information_schema(DB)){echo"<p>".($v=="sql"?"<input type='submit' value='".lang(248)."'> <input type='submit' name='optimize' value='".lang(249)."'> <input type='submit' name='check' value='".lang(250)."'> <input type='submit' name='repair' value='".lang(251)."'> ":"")."<input type='submit' name='truncate' value='".lang(252)."'".confirm("formChecked(this, /tables/)")."> <input type='submit' name='drop' value='".lang(78)."'".confirm("formChecked(this, /tables|views/)",1).">\n";$_=(support("scheme")?schemas():get_databases());if(count($_)!=1&&$v!="sqlite"){$t=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p>".lang(253).": ",($_?adminer_html_select("target",$_,$t):'<input name="target" value="'.h($t).'">')," <input type='submit' name='move' value='".lang(254)."' onclick='eventStop(event);'>",(support("copy")?" <input type='submit' name='copy' value='".lang(255)."' onclick='eventStop(event);'>":""),"\n";}echo"<input type='hidden' name='token' value='$M'>\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(180)."</a>\n";}if(support("routine")){echo"<h3>".lang(116)."</h3>\n";$Ue=routines();if($Ue){echo"<table cellspacing='0'>\n",'<thead><tr><th>'.lang(181).'<td>'.lang(89).'<td>'.lang(198)."<td> </thead>\n";odd('');foreach($Ue
|
||
|
|
as$a){echo'<tr'.odd().'>','<th><a href="'.h(ME).($a["ROUTINE_TYPE"]=="FUNCTION"?'callf=':'call=').urlencode($a["ROUTINE_NAME"]).'">'.h($a["ROUTINE_NAME"]).'</a>','<td>'.h($a["ROUTINE_TYPE"]),'<td>'.h($a["DTD_IDENTIFIER"]),'<td><a href="'.h(ME).($a["ROUTINE_TYPE"]=="FUNCTION"?'function=':'procedure=').urlencode($a["ROUTINE_NAME"]).'">'.lang(107)."</a>";}echo"</table>\n";}echo'<p><a href="'.h(ME).'procedure=">'.lang(197).'</a> <a href="'.h(ME).'function=">'.lang(196)."</a>\n";}if(support("sequence")){echo"<h3>".lang(256)."</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(181)."</thead>\n";odd('');foreach($ff
|
||
|
|
as$b){echo"<tr".odd()."><th><a href='".h(ME)."sequence=".urlencode($b)."'>".h($b)."</a>\n";}echo"</table>\n";}echo"<p><a href='".h(ME)."sequence='>".lang(203)."</a>\n";}if(support("type")){echo"<h3>".lang(11)."</h3>\n";$R=types();if($R){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(181)."</thead>\n";odd('');foreach($R
|
||
|
|
as$b){echo"<tr".odd()."><th><a href='".h(ME)."type=".urlencode($b)."'>".h($b)."</a>\n";}echo"</table>\n";}echo"<p><a href='".h(ME)."type='>".lang(207)."</a>\n";}if(support("event")){echo"<h3>".lang(117)."</h3>\n";$H=get_rows("SHOW EVENTS");if($H){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(181)."<td>".lang(257)."<td>".lang(187)."<td>".lang(188)."</thead>\n";foreach($H
|
||
|
|
as$a){echo"<tr>",'<th><a href="'.h(ME).'event='.urlencode($a["Name"]).'">'.h($a["Name"])."</a>","<td>".($a["Execute at"]?lang(258)."<td>".$a["Execute at"]:lang(189)." ".$a["Interval value"]." ".$a["Interval field"]."<td>$a[Starts]"),"<td>$a[Ends]";}echo"</table>\n";}echo'<p><a href="'.h(ME).'event=">'.lang(186)."</a>\n";}if($jd){echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=db');</script>\n";}}}}page_footer();
|