• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/kanban/stages.php
  • Класс: BitrixTasksKanbanStagesTable
  • Вызов: StagesTable::delete
static function delete($key, $entityId = 0)
{
	$entityType = self::getWorkMode();

	$res = self::getList(array(
		'filter' => array(
			'ID' => $key,
			'ENTITY_ID' => $entityId,
			'=ENTITY_TYPE' => $entityType,
			//'=SYSTEM_TYPE' => false
		)
	));
	if ($stage = $res->fetch())
	{
		// user can't delete first stage
		if (
			$stage['SYSTEM_TYPE'] == self::SYS_TYPE_NEW
			&& $entityType !== self::WORK_MODE_ACTIVE_SPRINT
		)
		{
			$result = new EntityDeleteResult();
			$result->addError(new EntityEntityError(
				Loc::getMessage('TASKS_STAGE_ERROR_CANT_DELETE_FIRST'),
				'CANT_DELETE_FIRST'
			));
			return $result;
		}
		$res = parent::delete($stage['ID']);
		// remove tasks from this stage
		if ($res->isSuccess())
		{
			if ($entityType == self::WORK_MODE_GROUP)
			{
				$resT = Task::getList(array(
					'select' => array('ID'),
					'filter' => array(
						'STAGE_ID' => $stage['ID']
					)
				));
				while ($row = $resT->fetch())
				{
					Task::update($row['ID'], array(
						'STAGE_ID' => 0
					));
				}
			}
			elseif (
				$entityType === self::WORK_MODE_USER
				|| $entityType === self::WORK_MODE_ACTIVE_SPRINT
			)
			{
				$resT = TaskStageTable::getList(array(
					'filter' => array(
						'STAGE_ID' => $stage['ID']
					)
				));
				while ($row = $resT->fetch())
				{
					TaskStageTable::delete($row['ID']);
				}
			}
		}
		return $res;
	}

	return false;
}