Initial commit
This commit is contained in:
180
main_plugin/manager/func.manager.php
Normal file
180
main_plugin/manager/func.manager.php
Normal file
@@ -0,0 +1,180 @@
|
||||
<?php
|
||||
#функция нахождения всех файлов в папке
|
||||
function managerPathFolder($params) {
|
||||
global $config, $path, $_SESSION;
|
||||
$lang = include $path . 'main_plugin/manager/lang.php';
|
||||
|
||||
$dirParam = $params['managerPathFolder'] ?? '';
|
||||
$directory = realpath($path . ($dirParam ?: ''));
|
||||
if ($directory && is_dir($directory)) {
|
||||
$files = scandir($directory);
|
||||
$data = [];
|
||||
|
||||
foreach ($files as $file) {
|
||||
if ($file === '.' || $file === '..') continue;
|
||||
$filePath = $directory . '/' . $file;
|
||||
if (is_dir($filePath)) {
|
||||
$name = $file;
|
||||
$type = $lang[$_SESSION['lng']]['folder'];
|
||||
$items = array_diff(scandir($filePath), ['.','..']);
|
||||
$size = count($items);
|
||||
} else {
|
||||
$extension = pathinfo($file, PATHINFO_EXTENSION);
|
||||
$name = $extension ? $file : pathinfo($file, PATHINFO_FILENAME);
|
||||
$type = $lang[$_SESSION['lng']]['file'];
|
||||
$size = filesize($filePath);
|
||||
}
|
||||
$data[] = [
|
||||
'name' => $name,
|
||||
'path' => ($dirParam ?: '') . "/" . $file,
|
||||
'type' => $type,
|
||||
'size' => $size,
|
||||
'creationTime' => date('Y-m-d H:i:s', filemtime($filePath)),
|
||||
];
|
||||
}
|
||||
array_unshift($data, ['rootFolder' => basename($path)]);
|
||||
return ['items' => $data];
|
||||
}
|
||||
return ['error' => "Invalid path: {$dirParam}"];
|
||||
}
|
||||
|
||||
// проверка на существование папки в буфере
|
||||
function checkFolderForFile($params) {
|
||||
global $_SESSION;
|
||||
$exists = !empty($_SESSION['managerClipboardFile']['path']);
|
||||
return ['exists' => $exists ? 1 : 0];
|
||||
}
|
||||
|
||||
// проверка на существование файла с таким же именем
|
||||
function checkSameName($params) {
|
||||
global $path, $_SESSION;
|
||||
if (!empty($params['managerSettingsInsert'])) {
|
||||
$clipboard = $_SESSION['managerClipboardFile']['path'];
|
||||
$newPath = $path . $params['currentPath'] . '/' . basename($clipboard);
|
||||
} else {
|
||||
$newPath = $path . $params['currentPath'] . DIRECTORY_SEPARATOR . ($params['name'] ?? '');
|
||||
}
|
||||
return ['exists' => file_exists($newPath) ? 1 : 0];
|
||||
}
|
||||
|
||||
// проверка буфера обмена
|
||||
function managerClipboard($params) {
|
||||
global $path, $_SESSION;
|
||||
$in = $params['managerClipboard'] ?? '';
|
||||
$filePath = realpath($path . '/' . $in);
|
||||
if ($filePath && file_exists($filePath)) {
|
||||
$_SESSION['managerClipboardFile'] = ['path' => $filePath, 'action' => $params['action'] ?? ''];
|
||||
return ['message' => 1];
|
||||
}
|
||||
return ['message' => 0];
|
||||
}
|
||||
|
||||
// вставка из буфера обмена
|
||||
function managerSettingsInsert($params) {
|
||||
global $path, $_SESSION;
|
||||
$dest = realpath($path . '/' . ($params['managerSettingsInsert'] ?? ''));
|
||||
if (!$dest) return ['message' => 0, 'error' => 'Invalid destination'];
|
||||
if (empty($_SESSION['managerClipboardFile']['path'])) return ['message' => 0, 'error' => 'Clipboard empty'];
|
||||
$clipboard = $_SESSION['managerClipboardFile']['path'];
|
||||
$action = $_SESSION['managerClipboardFile']['action'];
|
||||
$newPath = $dest . '/' . basename($clipboard);
|
||||
if ($action === 'cut') {
|
||||
$ok = rename($clipboard, $newPath);
|
||||
return ['message' => $ok ? 1 : 0];
|
||||
}
|
||||
if ($action === 'copy') {
|
||||
$copyDir = function($src, $dst) use (&$copyDir) {
|
||||
if (is_dir($src)) {
|
||||
if (!is_dir($dst)) mkdir($dst, 0755, true);
|
||||
foreach (array_diff(scandir($src), ['.','..']) as $f) {
|
||||
$copyDir($src."/".$f, $dst."/".$f);
|
||||
}
|
||||
} else {
|
||||
copy($src, $dst);
|
||||
}
|
||||
};
|
||||
$copyDir($clipboard, $newPath);
|
||||
return ['message' => 1];
|
||||
}
|
||||
return ['message' => 0, 'error' => 'Invalid action'];
|
||||
}
|
||||
|
||||
// переименование
|
||||
function managerSettingsRename($params) {
|
||||
$curr = realpath($GLOBALS['path'] . '/' . ($params['managerSettingsRename'] ?? ''));
|
||||
$new = $params['managerNamePath'] ?? '';
|
||||
$ok = $curr && rename($curr, dirname($curr).'/'.$new);
|
||||
return ['message' => $ok ? 1 : 0];
|
||||
}
|
||||
|
||||
// удаление
|
||||
function managerSettingsDelete($params) {
|
||||
$target = realpath($GLOBALS['path'] . '/' . ($params['managerSettingsDelete'] ?? ''));
|
||||
$del = function($p) use (&$del) {
|
||||
if (is_dir($p)) {
|
||||
foreach (array_diff(scandir($p), ['.','..']) as $f) $del($p.'/'.$f);
|
||||
return rmdir($p);
|
||||
}
|
||||
return unlink($p);
|
||||
};
|
||||
$ok = $target ? $del($target) : false;
|
||||
return ['message' => $ok ? 1 : 0];
|
||||
}
|
||||
|
||||
// свойства файла/папки
|
||||
function managerSettingsProperties($params) {
|
||||
global $config, $path, $_SESSION;
|
||||
$lang = include $path . 'main_plugin/manager/lang.php';
|
||||
$curr = realpath($path . '/' . ($params['managerSettingsProperties'] ?? ''));
|
||||
if (!$curr) return ['error' => 'not_found'];
|
||||
$info = [
|
||||
['label'=>$lang[$_SESSION['lng']]['name'],'value'=>basename($curr)],
|
||||
['label'=>$lang[$_SESSION['lng']]['type'],'value'=>is_dir($curr)?$lang[$_SESSION['lng']]['folder']:$lang[$_SESSION['lng']]['file']],
|
||||
['label'=>$lang[$_SESSION['lng']]['location'],'value'=>str_replace($path,'',dirname('/'.$curr))],
|
||||
['label'=>$lang[$_SESSION['lng']]['size'],'value'=>is_dir($curr)?'-':filesize($curr).' байт'],
|
||||
['label'=>$lang[$_SESSION['lng']]['creation_time'],'value'=>date('Y-m-d H:i:s',filectime($curr))],
|
||||
['label'=>$lang[$_SESSION['lng']]['last_modified_time'],'value'=>date('Y-m-d H:i:s',filemtime($curr))]
|
||||
];
|
||||
return ['properties'=>$info];
|
||||
}
|
||||
|
||||
// создание
|
||||
function managerSettingsCreate($params) {
|
||||
$name = $params['managerSettingsCreate'] ?? '';
|
||||
$type = $params['managerType'] ?? '';
|
||||
$parent = realpath($GLOBALS['path'].'/'.($params['managerNamePath'] ?? ''));
|
||||
if (!$parent) return ['message'=>'invalid_parent'];
|
||||
$full = $parent.'/'.$name;
|
||||
if (file_exists($full)) return ['message'=>'exists'];
|
||||
$ok = ($type==='папка')?mkdir($full):file_put_contents($full,'')!==false;
|
||||
return ['message'=>$ok?1:'noSuccess'];
|
||||
}
|
||||
|
||||
// открыть страницу
|
||||
function newPath($params) {
|
||||
global $path, $_SESSION;
|
||||
$page = simplexml_load_file($path.'/'.($params['newPath']??'').'.page.php');
|
||||
$out = [
|
||||
'right'=>GetBlock($page->rblock->block,'right'),
|
||||
'left'=>GetBlock($page->lblock->block,'left'),
|
||||
'content'=>(string)$page->content->{$_SESSION['lng']}
|
||||
];
|
||||
$_SESSION['page_url']=$params['newPath']??'';
|
||||
return $out;
|
||||
}
|
||||
|
||||
// загрузка файла менеджером
|
||||
function pathLoad($params) {
|
||||
global $path;
|
||||
$f = $_FILES['pathFile'] ?? null;
|
||||
if (!$f || $f['error']!==UPLOAD_ERR_OK) return ['error'=>'upload_error'];
|
||||
$ext=strtolower(pathinfo($f['name'],PATHINFO_EXTENSION));
|
||||
if (!in_array($ext,['jpg','png','txt','pdf'])) return ['error'=>'ext'];
|
||||
$dir=realpath($path.'/'.($params['pathLoad']??''));
|
||||
if (!$dir||!is_writable($dir)) return ['error'=>'dir'];
|
||||
$name=pathinfo($f['name'],PATHINFO_FILENAME); $i=1; $final=$name;
|
||||
while(file_exists("$dir/$final.$ext")) $final=$name.'_'.($i++);
|
||||
$file="$dir/$final.$ext";
|
||||
return move_uploaded_file($f['tmp_name'],$file)?['path'=>str_replace('\\','/',$file)]:['error'=>'move'];
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user