- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/location/connector.php
- Класс: BitrixSaleLocationConnector
- Вызов: Connector::resetMultipleForOwner
static function resetMultipleForOwner($entityPrimary, $links = array())
{
$entityPrimary = Assert::expectStringNotNull($entityPrimary, '$entityPrimary');
$links = static::checkUpdateLinks($links);
static::deleteAllForOwner($entityPrimary, array('BATCH_MODE' => true));
$map = static::getMap();
$linkFld = static::getLinkField();
$locationLinkFld = static::getLocationLinkField();
$typeFld = static::getTypeField();
$fields = array(
$linkFld => $map[$linkFld], // DELIVERY_ID, SITE_ID, smth else
$locationLinkFld => $map[$locationLinkFld] // LOCATION_ID or LOCATION_CODE or smth else
);
if($useGroups = static::getUseGroups())
$fields[$typeFld] = $map[$typeFld]; // LOCATION_TYPE: L or G
$inserter = new BlockInserter(array(
'tableName' => static::getTableName(),
'exactFields' => $fields
));
$smthAdded = false;
if (
!empty($links[static::DB_LOCATION_FLAG])
&& is_array($links[static::DB_LOCATION_FLAG])
)
{
foreach($links[static::DB_LOCATION_FLAG] as $id)
{
$data = array(
$linkFld => $entityPrimary,
$locationLinkFld => $id,
);
if($useGroups)
$data[$typeFld] = static::DB_LOCATION_FLAG;
$inserter->insert($data);
$smthAdded = true;
}
}
static::setLinkUsage($entityPrimary, static::DB_LOCATION_FLAG, $smthAdded);
$smthAdded = false;
if (
!empty($links[static::DB_GROUP_FLAG])
&& is_array($links[static::DB_GROUP_FLAG])
&& $useGroups
)
{
foreach($links[static::DB_GROUP_FLAG] as $id)
{
$data = array(
$linkFld => $entityPrimary,
$locationLinkFld => $id,
);
if($useGroups)
$data[$typeFld] = static::DB_GROUP_FLAG;
$inserter->insert($data);
$smthAdded = true;
}
}
static::setLinkUsage($entityPrimary, static::DB_GROUP_FLAG, $smthAdded);
$inserter->flush();
$GLOBALS['CACHE_MANAGER']->ClearByTag('sale-location-data');
}