• Модуль: 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;
			}
		}
	}
}