Your IP : 172.69.59.18


Current Path : /var/www/element/data/www/revenuestory.ru/bitrix/modules/seo/lib/ui/provider/
Upload File :
Current File : /var/www/element/data/www/revenuestory.ru/bitrix/modules/seo/lib/ui/provider/regionsprovider.php

<?php

namespace Bitrix\Seo\UI\Provider;

use Bitrix\Seo\Marketing\Configurator;
use Bitrix\Seo\Marketing\Services\AdCampaignFacebook;
use Bitrix\UI\EntitySelector\Dialog;
use Bitrix\UI\EntitySelector\Item;
use Bitrix\UI\EntitySelector\SearchQuery;

class RegionsProvider extends InterestsProvider
{
	const SEARCH_TYPE = 'adgeolocation';
	const ENTITY_TYPE = 'regions';

	public function doSearch(SearchQuery $searchQuery, Dialog $dialog): void
	{
		$service = Configurator::getService();
		$service->setClientId($this->getOption('clientId'));
		$searchQuery->setCacheable(false);

		$response = Configurator::searchTargetingData(
			AdCampaignFacebook::TYPE_CODE,
			[
				'q' => $searchQuery->getQuery(),
				'type' => static::SEARCH_TYPE
			]
		);

		$items = [];

		foreach ($response as $value)
		{
			if (!isset($value['key']))
			{
				continue;
			}

			$items[] =
				new Item(
					[
						'id' => $value['key'],
						'entityId' => static::ENTITY_TYPE,
						'title' => $value['name'],
						'tagOptions' => [
							'bgColor' => "#{$this->stringToColor($value['key'])}",
							'textColor' => "#fff"
						],
						'customData' => [
							'type' => $value['type'],
						]
					]
				);
		}

		$dialog->addItems(
			$items
		);
	}
}