• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/checklist/checklistfacade.php
  • Класс: BitrixTasksCheckListCheckListFacade
  • Вызов: CheckListFacade::deleteLeaf
static function deleteLeaf($entityId, $userId, $checkList)
{
	/** @noinspection PhpVariableNamingConventionInspection */
	global $USER_FIELD_MANAGER;

	$deleteLeafResult = new Result();

	if (!static::checkAccess($entityId, $userId, ActionDictionary::ACTION_CHECKLIST_EDIT, $checkList))
	{
		$code = 'ACTION_NOT_ALLOWED';
		$deleteLeafResult = static::addErrorToResult($deleteLeafResult, $code, self::ACTION_REMOVE);
		return $deleteLeafResult;
	}

	$id = $checkList->getFields()['ID'];

	try
	{
		if (static::$userFieldsEntityIdName)
		{
			$USER_FIELD_MANAGER->Delete(static::$userFieldsEntityIdName, $id);
		}
	}
	catch (Exception $exception)
	{
		$deleteLeafResult = static::addErrorToResult($deleteLeafResult, 'USER_FIELD_DELETE_FAILED');
		static::logError($exception->getMessage());
	}

	/** @var DataManager $memberDataController */
	$memberDataController = static::getCheckListMemberDataController();
	if ($memberDataController)
	{
		$members = $memberDataController::getList([
			'select' => ['ID'],
			'filter' => ['ITEM_ID' => $id]
		])->fetchAll();
		foreach ($members as $member)
		{
			$memberDeleteResult = $memberDataController::delete($member['ID']);
			if (!$memberDeleteResult->isSuccess())
			{
				$deleteLeafResult = static::addErrorToResult($deleteLeafResult, 'MEMBER_DELETE_FAILED');
				static::logError($memberDeleteResult->getErrorMessages()[0]);
			}
		}
	}

	/** @var CheckListTree $checkListTree */
	$checkListTree = static::getCheckListTree();
	$treeDeleteResult = $checkListTree::delete($id, ['DELETE_SUBTREE' => true]);
	if (!$treeDeleteResult->isSuccess())
	{
		$deleteLeafResult->loadErrors($treeDeleteResult->getErrors());
	}

	/** @var DataManager $checkListDataController */
	$checkListDataController = static::getCheckListDataController();
	$tableDeleteResult = $checkListDataController::delete($id);
	if (!$tableDeleteResult->isSuccess())
	{
		$deleteLeafResult = static::addErrorToResult($deleteLeafResult, 'CHECKLIST_DELETE_FAILED');
		static::logError($tableDeleteResult->getErrorMessages()[0]);
	}

	static::doDeletePostActions($entityId, $userId, ['CHECKLIST' => $checkList]);

	return $deleteLeafResult;
}