- Модуль: intranet
- Путь к файлу: ~/bitrix/modules/intranet/lib/controller/controlbutton.php
- Класс: BitrixIntranetControllerControlButton
- Вызов: ControlButton::clearNewTaskFilesAction
public function clearNewTaskFilesAction(string $signedFiles = '')
{
if ($signedFiles === '')
{
return;
}
$signer = new Signer;
try
{
$unsigned = $signer->unsign($signedFiles, static::SIGNATURE_SALT);
$diskFiles = Json::decode($unsigned);
}
catch (Exception $e)
{
$diskFiles = [];
}
if (
!is_array($diskFiles)
|| empty($diskFiles)
)
{
return;
}
if (!Loader::includeModule('disk'))
{
$this->addError(new Error(
Loc::getMessage('INTRANET_CONTROL_BUTTON_DISK_ERROR'), 'delete_new_task_files_no_module_error')
);
return null;
}
$fileIdList = array_map(static function($value) {
return (
preg_match('/^' . FileUserType::NEW_FILE_PREFIX . '(d+)$/i', $value, $matches)
? (int)$matches[1]
: 0
);
}, $diskFiles);
$fileIdList = array_filter($fileIdList, static function($value) {
return ($value > 0);
});
$fileIdList = array_unique($fileIdList);
foreach( File::getModelList([ 'filter' => [ 'ID' => $fileIdList ] ] ) as $file)
{
if (
($storage = $file->getStorage())
&& $file->canDelete($storage->getCurrentUserSecurityContext())
)
{
if (!$file->delete($this->getCurrentUser()->getId()))
{
$this->addError(new Error(
Loc::getMessage('INTRANET_CONTROL_BUTTON_DELETE_TASK_FILE_ERROR'), 'delete_new_task_file_error')
);
return null;
}
}
}
}