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