• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/component/loglist/page.php
  • Класс: BitrixSocialnetworkComponentLogListPage
  • Вызов: Page::setLogPageData
public function setLogPageData(&$result): void
{
	$params = $this->getComponent()->arParams;
	$processorInstance = $this->getProcessorInstance();

	$lastEventFields = false;
	if (is_array($result['Events']))
	{
		$tmp = $result['Events'];
		$lastEventFields = array_pop($tmp);
		unset($tmp);
	}

	$result['LAST_ENTRY_DATE_TS'] = 0;
	$result['dateLastPageId'] = ($lastEventFields ? $lastEventFields['ID'] : 0);

	if ($lastEventFields)
	{
		if ($params['USE_FOLLOW'] === 'N')
		{
			if (!empty($processorInstance->getOrderKey('LOG_DATE')))
			{
				$result['LAST_ENTRY_DATE_TS'] = $processorInstance->makeTimeStampFromDateTime($lastEventFields['LOG_DATE'], 'FULL');
			}
			elseif ($lastEventFields['LOG_UPDATE'])
			{
				$result['LAST_ENTRY_DATE_TS'] = $processorInstance->makeTimeStampFromDateTime($lastEventFields['LOG_UPDATE'], 'FULL');
			}
		}

		if (
			empty($result['LAST_ENTRY_DATE_TS'])
			&& $lastEventFields['DATE_FOLLOW']
		)
		{
			$result['LAST_ENTRY_DATE_TS'] = $processorInstance->makeTimeStampFromDateTime($lastEventFields['DATE_FOLLOW'], 'FULL');
		}
	}

	if ($params['SET_LOG_PAGE_CACHE'] !== 'N')
	{
		$result['dateLastPageTS'] = $result['LAST_ENTRY_DATE_TS'];
	}

	$dateLastPage = null;
	if (!empty($result['dateLastPageTS']))
	{
		$dateLastPage = convertTimeStamp($result['dateLastPageTS'], 'FULL');
	}

	if (
		$params['SET_LOG_PAGE_CACHE'] === 'Y'
		&& $dateLastPage
		&& Util::checkUserAuthorized()
		&& (
			!$this->getDateLastPageStart()
			|| $this->getDateLastPageStart() != $dateLastPage
			|| $this->getNeedSetLogPage()
		)
	)
	{
		$lastPageData = $this->getLastPageData();
		if (empty($lastPageData))
		{
			$lastPageData = [
				'TRAFFIC_AVG' => 0,
				'TRAFFIC_CNT' => 0,
				'TRAFFIC_LAST_DATE_TS' => 0
			];
		}

		$bNeedSetTraffic = CSocNetLogComponent::isSetTrafficNeeded([
			'PAGE_NUMBER' => $result['PAGE_NUMBER'],
			'GROUP_CODE' => $result['COUNTER_TYPE'],
			'TRAFFIC_LAST_DATE_TS' => $lastPageData['TRAFFIC_LAST_DATE_TS']
		]);

		CSocNetLogPages::set(
			$result['currentUserId'],
			convertTimeStamp($processorInstance->makeTimeStampFromDateTime($dateLastPage, 'FULL') - $result['TZ_OFFSET'], 'FULL'),
			$params['PAGE_SIZE'],
			$result['PAGE_NUMBER'],
			SITE_ID,
			$result['COUNTER_TYPE'],
			(
				$bNeedSetTraffic
					? ($lastPageData['TRAFFIC_AVG'] + $this->getDateFirstPageTimestamp() - $result['dateLastPageTS']) / ($lastPageData['TRAFFIC_CNT'] + 1)
					: false
			),
			(
			$bNeedSetTraffic
				? ($lastPageData['TRAFFIC_CNT'] + 1)
				: false
			)
		);

		if (
			(int)$result['PAGE_NUMBER'] === 1
			&& $params['USE_TASKS'] === 'Y'
			&& $result['EXPERT_MODE'] !== 'Y'
		)
		{
			$result['EXPERT_MODE_SET'] = LogViewTable::checkExpertModeAuto($result['currentUserId'], $processorInstance->getTasksCount(), $params['PAGE_SIZE']);
			if ($result['EXPERT_MODE_SET'])
			{
				$params['SET_LOG_COUNTER'] = 'N';
				$this->getComponent()->arParams = $params;
			}
		}
	}
}