• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/controller/timeline/document.php
  • Класс: Bitrix\Crm\Controller\Timeline\Document
  • Вызов: Document::deleteAction
public function deleteAction(int $id, int $ownerTypeId, int $ownerId): ?bool
{
	if ($id <= 0)
	{
		$this->addError(ErrorCode::getNotFoundError());

		return null;
	}

	$resultBind = \Bitrix\Crm\Timeline\Entity\TimelineBindingTable::getList(
		[
			'filter' => ['=OWNER_ID' => $id],
		]
	);

	$isExistBinding = false;
	$bindings = [];
	while ($bindData = $resultBind->fetch())
	{
		if ((int)$bindData['ENTITY_TYPE_ID'] === $ownerTypeId && (int)$bindData['ENTITY_ID'] === $ownerId)
		{
			$isExistBinding = true;
		}
		$bindings[] = $bindData;
	}

	if (!$isExistBinding)
	{
		$this->addError(ErrorCode::getNotFoundError());

		return null;
	}

	if (!\Bitrix\Crm\Security\EntityAuthorization::checkUpdatePermission($ownerTypeId, $ownerId))
	{
		$this->addError(ErrorCode::getAccessDeniedError());

		return null;
	}
	$entry = \Bitrix\Crm\Timeline\DocumentEntry::getByID($id);
	if ($entry['TYPE_ID'] != TimelineType::DOCUMENT)
	{
		$this->addError(ErrorCode::getNotFoundError());

		return null;
	}

	if (count($bindings) > 1)
	{
		\Bitrix\Crm\Timeline\Entity\TimelineBindingTable::delete([
			'OWNER_ID' => $id,
			'ENTITY_ID' => $ownerId,
			'ENTITY_TYPE_ID' => $ownerTypeId,
		]);
	}
	else
	{
		$result = new \Bitrix\Main\Result();
		if (\Bitrix\Crm\Integration\DocumentGeneratorManager::getInstance()->isEnabled())
		{
			if (is_array($entry) && isset($entry['SETTINGS']) && isset($entry['SETTINGS']['DOCUMENT_ID']))
			{
				$documentId = $entry['SETTINGS']['DOCUMENT_ID'];
				if (\Bitrix\DocumentGenerator\Driver::getInstance()->getUserPermissions()->canModifyDocument($documentId))
				{
					$result = \Bitrix\DocumentGenerator\Model\DocumentTable::delete($entry['SETTINGS']['DOCUMENT_ID']);
				}
				else
				{
					$this->addError(ErrorCode::getAccessDeniedError());
				}
			}
		}
		if ($result->isSuccess())
		{
			\Bitrix\Crm\Timeline\DocumentEntry::delete($id);
			\Bitrix\Crm\Timeline\DocumentController::getInstance()->onDelete(
				$id, [
					'ENTITY_TYPE_ID' => $ownerTypeId,
					'ENTITY_ID' => $ownerId,
				]
			);

			return true;
		}
		else
		{
			$this->addErrors($result->getErrors());
		}
	}

	return null;
}