...Человеческий поиск в разработке...
- Модуль: 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; }