TraceLinker::build

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. TraceLinker
  4. build
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/tracking/ad/index/tracelinker.php
  • Класс: Bitrix\Crm\Tracking\Ad\Index\TraceLinker
  • Вызов: TraceLinker::build
protected function build()
{
	$rows = $this->getTraceSources();
	if (!$rows)
	{
		return;
	}


	$levels = [];
	foreach ($rows as $row)
	{
		$level = (int) $row['LEVEL'];
		$levels[$level][$row['ID']] = $row['CODE'];
	}

	foreach ($levels as $level => $rows)
	{
		$children = Tracking\Internals\SourceChildTable::getList([
			'select' => ['ID', 'CODE'],
			'filter' => [
				'=SOURCE_ID' => $this->sourceId,
				'=LEVEL' => $level,
				'=CODE' => array_values($rows),
			],
		])->fetchAll();
		$children = array_combine(
			array_column($children, 'CODE'),
			array_column($children, 'ID')
		);

		foreach ($rows as $traceSourceId => $code)
		{
			$childId = $children[$code] ?? 0;
			Tracking\Internals\TraceSourceTable::update($traceSourceId, [
				'SOURCE_CHILD_ID' => $childId,
				'PROCESSED' => 1,
			]);
		}
	}

}

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