Files
utext/main_plugin/manager/func.manager.php
2025-07-27 18:47:50 +03:00

181 lines
7.3 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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'];
}
?>