• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/location/location.php
  • Класс: BitrixSaleLocationLocationTable
  • Вызов: LocationTable::deleteExtended
static function deleteExtended($primary, array $additional = array())
{
	$primary = Assert::expectIntegerPositive($primary, '$primary');
	$resetLegacy = !isset($additional['RESET_LEGACY']) || $additional['RESET_LEGACY'] !== false;
	$deleteSubtree = !isset($additional['DELETE_SUBTREE']) || $additional['DELETE_SUBTREE'] !== false;

	// delete connected data of sub-nodes
	if($deleteSubtree)
	{
		$rangeSql = parent::getSubtreeRangeSqlForNode($primary);
		NameLocationTable::deleteMultipleByParentRangeSql($rangeSql);
		ExternalTable::deleteMultipleByParentRangeSql($rangeSql);
	}

	if($resetLegacy)
		$data = static::getList(array('filter' => array('=ID' => $primary), 'select' => array('TYPE_ID')))->fetch();

	$delResult = parent::deleteExtended($primary, $additional);

	// delete connected data
	if($delResult->isSuccess())
	{
		NameLocationTable::deleteMultipleForOwner($primary);
		ExternalTable::deleteMultipleForOwner($primary);

		if($resetLegacy && intval($data['TYPE_ID']))
		{
			$type = TypeTable::getList(array('filter' => array('=ID' => $data['TYPE_ID']), 'select' => array('CODE')))->fetch();
			if(mb_strlen($type['CODE']) && in_array($type['CODE'], array('COUNTRY', 'REGION', 'CITY')))
				static::resetLegacyPath();
		}

		$GLOBALS['CACHE_MANAGER']->ClearByTag('sale-location-data');
		SearchFinder::setIndexInvalid();
	}

	return $delResult;
}