SendIt - хук для перемещения загруженных файлов из временной папки в постоянную.

Приветствую, у многих возникают сложности с тем, чтобы сохранить файлы загруженные пользователем через форму, которую обрабатывает SendIt. Поэтому ловите пример хука, который перемещает файлы из папки по умолчанию в папку assets/userfiles/
<?php
$filelist = explode(',', $hook->getValue('filelist'));
if(empty($filelist)){
    return true;
}
$fileLinks = [];
$basePath = $modx->getOption('base_path', '', MODX_BASE_PATH);
$assetsPath = $modx->getOption('assets_path');
$siteUrl = $modx->getOption('site_url');
$uploaddir = $modx->getOption('si_uploaddir', '', '[[+asseetsUrl]]components/sendit/uploaded_files/');
$uploaddir = str_replace('[[+asseetsUrl]]', $assetsPath, $uploaddir) . session_id() . '/';
$userFilePath = 'assets/userfiles/'. session_id() . '/';
if (!is_dir($basePath . $userFilePath)) {
    mkdir($basePath . $userFilePath, 0777, true);
}
foreach($filelist as $filename){
    $filePath = $basePath . $userFilePath . $filename;
    if(copy($uploaddir . $filename, $filePath)){
        $fileLinks[] = $siteUrl . $userFilePath . $filename;
    }
}
$hook->setValue('file_links', $fileLinks);
return true;
Артур Шевченко
02 ноября 2024, 10:57
modx.pro
1
329
+3
Поблагодарить автора Отправить деньги

Комментарии: 2

Денис Усманов
02 ноября 2024, 10:59
0
Артур, молодец! Очень нужное решение, я долго «выкладывал» свой код по такому же кейсу) Ты оказался быстрее, так держать!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
2