• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/location/name/nameentity.php
  • Класс: BitrixSaleLocationNameNameEntity
  • Вызов: NameEntity::addAbsentForOwner
static function addAbsentForOwner($primaryOwner, $names, $behaviour = array('TREAT_EMPTY_AS_ABSENT' => true))
{
	$primaryOwner = Assert::expectIntegerPositive($primaryOwner, '$primaryOwner');

	if(!is_array($names))
		$names = array();

	if(!is_array($behaviour))
		$behaviour = array();
	if(!isset($behaviour['TREAT_EMPTY_AS_ABSENT']))
		$behaviour['TREAT_EMPTY_AS_ABSENT'] = true;

	if(empty($names))
		return;

	$namesLC = array();
	foreach($names as $lid => $data)
	{
		$namesLC[Assert::castTrimLC($lid)] = $data;
	}
	$names = $namesLC;

	$langField = static::getLanguageFieldName();
	$refField = static::getReferenceFieldName();

	$names2Update = array();
	$res = static::getList(array('filter' => array('='.$refField => $primaryOwner)));
	while($item = $res->fetch())
	{
		$isEmpty = static::checkEmpty($item);

		if($isEmpty && $behaviour['TREAT_EMPTY_AS_ABSENT'])
		{
			$names2Update[$item['ID']] = $names[$item[$langField]];
		}

		unset($names[$item[$langField]]);
	}

	foreach($names as $lid => $data)
	{
		$data[$langField] = $lid;
		$data[$refField] = $primaryOwner;

		static::add($data);
	}

	foreach($names2Update as $id => $data)
	{
		static::update($id, $data);
	}
}