• Модуль: seo
  • Путь к файлу: ~/bitrix/modules/seo/lib/adv/yandexcampaign.php
  • Класс: BitrixSeoAdvYandexCampaignTable
  • Вызов: YandexCampaignTable::onBeforeAdd
static function onBeforeAdd(EntityEvent $event)
{
	$result = new EntityEventResult();

	$data = $event->getParameter("fields");

	$engine = self::getEngine();

	$ownerInfo = $engine->getCurrentUser();

	if(!static::$skipRemoteUpdate)
	{
		$data["SETTINGS"] = self::createParam($engine, $data, $result);
		$data["XML_ID"] = 'Error';
	}
	else
	{
		$data["XML_ID"] = $data["SETTINGS"]["CampaignID"];
	}

	$data["NAME"] = $data["SETTINGS"]["Name"];

	$data["ENGINE_ID"] = $engine->getId();

	$data['OWNER_ID'] = $ownerInfo['id'];
	$data['OWNER_NAME'] = $ownerInfo['login'];

	if(!static::$skipRemoteUpdate && $result->getType() == EntityEventResult::SUCCESS)
	{
		try
		{
			$data["XML_ID"] = $engine->addCampaign($data["SETTINGS"]);

			$campaignSettings = $engine->getCampaign(array($data['XML_ID']));
			$data['SETTINGS'] = $campaignSettings[0];
		}
		catch(EngineYandexDirectException $e)
		{
			$result->addError(new EntityFieldError(
				static::getEntity()->getField('ENGINE_ID'),
				$e->getMessage(),
				$e->getCode()
			));
		}
	}

	$data['LAST_UPDATE'] = new MainTypeDateTime();
	$data['ACTIVE'] = $data['SETTINGS']['StatusArchive'] == EngineYandexDirect::BOOL_YES
		? static::INACTIVE
		: static::ACTIVE;

	$result->modifyFields($data);

	return $result;
}