Provider::getActualSources

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. Provider
  4. getActualSources
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/tracking/provider.php
  • Класс: Bitrix\Crm\Tracking\Provider
  • Вызов: Provider::getActualSources
static function getActualSources()
{
	$adsSources = self::getStaticSources();
	$adsSources = array_combine(array_column($adsSources, 'CODE'), $adsSources);
	$sourceFields = Internals\SourceFieldTable::getSourceFields();
	$sourceFieldsDefaults = Internals\SourceFieldTable::getSourceFieldsDefaults();


	$list = Internals\SourceTable::getList([
		'select' => ['ID', 'CODE', 'NAME', 'ICON_COLOR', 'AD_CLIENT_ID', 'AD_ACCOUNT_ID'],
		'filter' => ['=ACTIVE' => 'Y'],
		'order' => ['ID' => 'ASC'],
		'cache' => ['ttl' => 3600]
	])->fetchAll();
	foreach ($list as $index => $item)
	{
		if ($item['CODE'] && isset($adsSources[$item['CODE']]))
		{
			$item = ['NAME' => $item['NAME']] + $adsSources[$item['CODE']] + $item;
			$adsSources[$item['CODE']]['SAVED'] = true;
		}

		if (!isset($adsSources[$item['CODE']]))
		{
			$item['CODE'] = '';
		}

		if (!$item['CODE'])
		{
			$userSources[] = $item['ID'];
			$item['ICON_COLOR'] = $item['ICON_COLOR'] ?: '#55d0e0';
		}

		$item = $item + ($sourceFields[$item['ID']] ?? $sourceFieldsDefaults);

		$list[$index] = $item + [
			'DESCRIPTION' => Source\Base::getDescriptionByCode($item['CODE'], $item['NAME']),
			'ICON_CLASS' => 'ui-icon ui-icon-service-universal',
			'CONFIGURED' => !empty($item['UTM_SOURCE']) || !empty($item['REF_DOMAIN']),
			'HAS_PATH_TO_LIST' => true,
		];

		$item['ID'] = (int) $item['ID'];
	}

	foreach ($adsSources as $sourceCode => $source)
	{
		if (!isset($source['CONFIGURED']) || $source['CONFIGURABLE'] || !empty($source['SAVED']))
		{
			continue;
		}

		$list[] = $source;
	}

	foreach ($list as $index => $source)
	{
		if (!empty($source['ID']) || empty($source['SAVEABLE']))
		{
			continue;
		}

		$saveResult = Internals\SourceTable::add([
			'CODE' => $source['CODE'],
			'NAME' => $source['NAME'],
		]);
		if ($saveResult->isSuccess())
		{
			$source['ID'] = $saveResult->getId();
		}
		$list[$index] = $source;
	}

	usort($list, [__CLASS__, 'sortSourcesByCode']);

	return $list;
}

Добавить комментарий