403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/ilovecveti.ru/bitrix/modules/socialnetwork/lib/component/loglist/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/ilovecveti.ru/bitrix/modules/socialnetwork/lib/component/loglist/page.php
<?php

namespace Bitrix\Socialnetwork\Component\LogList;

use Bitrix\Socialnetwork\LogPageTable;
use Bitrix\Socialnetwork\LogViewTable;
use Bitrix\Socialnetwork\UserToGroupTable;

class Page
{
	protected $component;
	protected $processorInstance;
	protected $request;

	protected $needSetLogPage = false;
	protected $dateLastPageStart = null;
	protected $lastPageData = null;
	protected $prevPageLogIdList = [];
	protected $dateFirstPageTS = 0;

	public function __construct($params)
	{
		if (!empty($params['component']))
		{
			$this->component = $params['component'];
		}
		if (!empty($params['processorInstance']))
		{
			$this->processorInstance = $params['processorInstance'];
		}
		if (!empty($params['request']))
		{
			$this->request = $params['request'];
		}
		else
		{
			$this->request = Util::getRequest();
		}
	}

	public function getRequest()
	{
		return $this->request;
	}

	protected function getComponent()
	{
		return $this->component;
	}
	protected function getProcessorInstance()
	{
		return $this->processorInstance;
	}

	public function setNeedSetLogPage($value = false): void
	{
		$this->needSetLogPage = $value;
	}
	public function getNeedSetLogPage(): bool
	{
		return $this->needSetLogPage;
	}

	public function setDateLastPageStart($value = null): void
	{
		$this->dateLastPageStart = $value;
	}
	public function getDateLastPageStart()
	{
		return $this->dateLastPageStart;
	}

	public function setLastPageData($value = null): void
	{
		$this->lastPageData = $value;
	}
	public function getLastPageData()
	{
		return $this->lastPageData;
	}

	public function setPrevPageLogIdList($value = []): void
	{
		$this->prevPageLogIdList = $value;
	}
	public function getPrevPageLogIdList(): array
	{
		return $this->prevPageLogIdList;
	}

	public function setDateFirstPageTimestamp($value = 0): void
	{
		$this->dateFirstPageTS = $value;
	}
	public function getDateFirstPageTimestamp(): int
	{
		return $this->dateFirstPageTS;
	}

	public function preparePrevPageLogId(): void
	{
		$request = $this->getRequest();
		$params = $this->getComponent()->arParams;

		$prevPageLogId = null;
		if (isset($params['PREV_PAGE_LOG_ID']))
		{
			$prevPageLogId = $params['PREV_PAGE_LOG_ID'];
		}
		elseif ($request->get('pplogid') !== null)
		{
			$prevPageLogId = $request->get('pplogid');
		}

		if ($prevPageLogId !== null)
		{
			$prevPageLogIdList = explode('|', trim($prevPageLogId));
			foreach($prevPageLogIdList as $key => $val)
			{
				preg_match('/^(\d+)$/', $val, $matches);
				if (count($matches) <= 0)
				{
					unset($prevPageLogIdList[$key]);
				}
			}
			$prevPageLogIdList = array_map(static function($logId) { return (int)$logId; }, array_unique($prevPageLogIdList));
			$this->setPrevPageLogIdList($prevPageLogIdList);
		}
	}

	public function getLogPageData(&$result): void
	{
		$params = $this->getComponent()->arParams;
		$processorInstance = $this->getProcessorInstance();

		$this->setNeedSetLogPage(false);

		if ($params['SET_LOG_PAGE_CACHE'] === 'Y')
		{
			$resPages = LogPageTable::getList([
				'order' => [],
				'filter' => [
					'USER_ID' => $result['currentUserId'],
					'=SITE_ID' => SITE_ID,
					'=GROUP_CODE' => $result['COUNTER_TYPE'],
					'PAGE_SIZE' => $params['PAGE_SIZE'],
					'PAGE_NUM' => $result['PAGE_NUMBER']
				],
				'select' => [ 'PAGE_LAST_DATE', 'TRAFFIC_AVG', 'TRAFFIC_CNT', 'TRAFFIC_LAST_DATE' ]
			]);

			if ($pagesFields = $resPages->fetch())
			{
				$this->setDateLastPageStart($pagesFields['PAGE_LAST_DATE']);
				$this->setLastPageData([
					'TRAFFIC_LAST_DATE_TS' => ($pagesFields['TRAFFIC_LAST_DATE'] ? $processorInstance->makeTimeStampFromDateTime($pagesFields['TRAFFIC_LAST_DATE'], 'FULL') : 0),
					'TRAFFIC_AVG' => (int)$pagesFields['TRAFFIC_AVG'],
					'TRAFFIC_CNT' => (int)$pagesFields['TRAFFIC_CNT']
				]);
				$processorInstance->setFilterKey('>=LOG_UPDATE', convertTimeStamp($processorInstance->makeTimeStampFromDateTime($pagesFields['PAGE_LAST_DATE'], 'FULL') - 60*60*24*1, 'FULL'));
			}
			elseif(
				$result['isExtranetSite']
				&& !$this->getComponent()->getCurrentUserAdmin()
			) // extranet user
			{
				$res = UserToGroupTable::getList([
					'order' => [
						'GROUP_DATE_CREATE' => 'ASC'
					],
					'filter' => [
						'USER_ID' => $result['currentUserId'],
						'@ROLE' => UserToGroupTable::getRolesMember(),
						'!GROUP_DATE_CREATE' => false
					],
					'select' => [
						'GROUP_DATE_CREATE' => 'GROUP.DATE_CREATE'
					]
				]);
				if ($relation = $res->fetch())
				{
					$processorInstance->setFilterKey('>=LOG_UPDATE', $relation['GROUP_DATE_CREATE']);
				}
			}
			elseif (
				(
					$result['COUNTER_TYPE'] !== '**'
					|| $result['MY_GROUPS_ONLY'] !== 'Y'
				)
				&& $result['PAGE_NUMBER'] <= 1
			)
			{
				$resPages = LogPageTable::getList([
					'order' => [
						'PAGE_LAST_DATE' => 'DESC'
					],
					'filter' => [
						'=SITE_ID' => SITE_ID,
						'=GROUP_CODE' => $result['COUNTER_TYPE'],
						'PAGE_SIZE' => $params['PAGE_SIZE'],
						'PAGE_NUM' => $result['PAGE_NUMBER']
					],
					'select' => [ 'PAGE_LAST_DATE' ]
				]);

				if ($pagesFields = $resPages->fetch())
				{
					$this->setDateLastPageStart($pagesFields['PAGE_LAST_DATE']);
					$processorInstance->setFilterKey('>=LOG_UPDATE', convertTimeStamp($processorInstance->makeTimeStampFromDateTime($pagesFields['PAGE_LAST_DATE'], 'FULL') - 60*60*24*4, 'FULL'));
					$this->setNeedSetLogPage(true);
				}
			}
		}
	}

	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;
				}
			}
		}
	}

	public function deleteLogPageData($result): void
	{
		$params = $this->getComponent()->arParams;

		if (
			empty($result['arLogTmpID'])
			&& $params['SET_LOG_PAGE_CACHE'] === 'Y'
			&& $this->getDateLastPageStart() !== null
			&& Util::checkUserAuthorized()
		)
		{
			\CSocNetLogPages::deleteEx($result['currentUserId'], SITE_ID, $params['PAGE_SIZE'], $result['COUNTER_TYPE']);
			$this->setNeedSetLogPage(true);
		}
	}

}

Youez - 2016 - github.com/yon3zu
LinuXploit