• Модуль: location
  • Путь к файлу: ~/bitrix/modules/location/lib/repository/addressrepository.php
  • Класс: BitrixLocationRepositoryAddressRepository
  • Вызов: AddressRepository::save
public function save(EntityAddress $address)
{
	$result = new Result();

	if($location = $address->getLocation())
	{
		// Even if location has id > 0. It could contain unsaved name on other language.
		$res = $location->save();

		if(!$res->isSuccess())
		{
			$result->addErrors($res->getErrors());
		}
	}

	$fields = EntityAddressConverterDbFieldConverter::convertToDbField($address);

	if((int)$fields['ID'] > 0)
	{
		$result = $this->tableClass::update($fields['ID'], $fields);
	}
	else
	{
		$result = $this->tableClass::add($fields);

		if($result->isSuccess())
		{
			$address->setId($result->getId());
		}
	}

	if($address->getId() <= 0 || !$result->isSuccess())
	{
		return  $result;
	}

	$res = $this->saveFieldCollection($address);

	if(!$res->isSuccess())
	{
		$result->addErrors($res->getErrors());
	}

	$res = $this->saveLinkCollection($address);

	if(!$res->isSuccess())
	{
		$result->addErrors($res->getErrors());
	}

	return $result;
}