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