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/Space/List/Item/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/ilovecveti.ru/bitrix/modules/socialnetwork/lib/Space/List/Item/Builder.php
<?php

namespace Bitrix\Socialnetwork\Space\List\Item;

use Bitrix\Main\Localization\Loc;
use Bitrix\Socialnetwork\Helper\AvatarManager;
use Bitrix\Socialnetwork\Helper\Workgroup\Access;
use Bitrix\Socialnetwork\Internals\Space\Counter;
use Bitrix\Socialnetwork\Space\List\Dictionary;
use Bitrix\Socialnetwork\Space\List\RecentActivity\Collector;
use Bitrix\Socialnetwork\Space\List\RecentActivity\Item\RecentActivityData;
use Bitrix\Socialnetwork\Space\List\RecentActivity\Service;
use Bitrix\Socialnetwork\Space\List\UserRoleManager;

final class Builder
{
	private AvatarManager $avatarManager;
	public function __construct(private int $userId)
	{
		$this->avatarManager = new AvatarManager();
	}

	/** @return array<Space> */
	public function buildSpacesFromQueryResult(array $queryResult): array
	{
		$spaces = [];
		$counter = Counter::getInstance($this->userId);

		foreach ($queryResult as $value)
		{
			$imageId = (int) ($value['IMAGE_ID'] ?? 0);
			if ($imageId)
			{
				$avatar = $this->avatarManager->getImageAvatar($imageId);
			}
			else
			{
				$avatar = $this->avatarManager->getIconAvatar($value['AVATAR_TYPE'] ?? '');
			}

			$visibilityType = Dictionary::SPACE_VISIBILITY_TYPES['open'];
			if ($value['OPENED'] === 'N')
			{
				$visibilityType = Dictionary::SPACE_VISIBILITY_TYPES['closed'];
			}
			if ($value['VISIBLE'] === 'N')
			{
				$visibilityType = Dictionary::SPACE_VISIBILITY_TYPES['secret'];
			}

			$userRole = (new UserRoleManager())->getUserRole($value['ROLE'], $value['ROLE_INIT_BY_TYPE']);

			$recentActivityData =
				(new RecentActivityData())
					->setSpaceId($value['ID'])
					->setUserId($this->userId)
					->setTypeId($value['RECENT_ACTIVITY_TYPE_ID'] ?? null)
					->setEntityId($value['RECENT_ACTIVITY_ENTITY_ID'] ?? null)
					->setDateTime($value['RECENT_ACTIVITY_DATE'] ?? null)
					->setSecondaryEntityId($value['RECENT_ACTIVITY_SECONDARY_ENTITY_ID'] ?? null)
			;

			$permissions = [
				'canLeave' => Access::canLeave(['groupId' => $value['ID']])
			];

			$spaces[] =
				(new Space())
					->setId($value['ID'])
					->setName($value['NAME'])
					->setIsPinned((int)($value['PIN_ID']) > 0 && $userRole === Dictionary::USER_ROLES['member'])
					->setAvatar($avatar)
					->setVisibilityType($visibilityType)
					->setCounter($counter->getTotal($value['ID']))
					->setUserRole($userRole)
					->setFollow(\CSocNetSubscription::isUserSubscribed($this->userId, 'SG' . $value['ID']))
					->setRecentActivityData($recentActivityData)
					->setPermissions($permissions)
			;
		}

		return $this->fillRecentActivityDescription($spaces);
	}

	private function fillRecentActivityDescription(array $spaces): array
	{
		$collector = new Collector(Collector::getDefaultProviders());
		/** @var array<Space> $spaces */
		foreach ($spaces as $space)
		{
			$data = $space->getRecentActivityData();
			if ($data instanceof RecentActivityData)
			{
				$collector->addRecentActivityData($data);
			}
		}

		$collector->fillData();

		return $spaces;
	}

	public function buildCommonSpace(): Space
	{
		$counter = Counter::getInstance($this->userId);

		$commonSpace =
			(new Space())
				->setId(0)
				->setName(Loc::getMessage('SOCIALNETWORK_SPACES_LIST_COMMON_SPACE_NAME'))
				->setIsPinned(false)
				->setAvatar($this->avatarManager->getIconAvatar('common-space'))
				->setVisibilityType(Dictionary::SPACE_VISIBILITY_TYPES['open'])
				->setCounter($counter->getTotal(0))
				->setUserRole(Dictionary::USER_ROLES['member'])
				->setFollow(true)
				->setRecentActivityData($this->getCommonSpaceRecentActivityData())
		;

		if ($commonSpace->getRecentActivityData()->getId() <= 0)
		{
			$commonSpace->getRecentActivityData()->setDateTime(new \Bitrix\Main\Type\DateTime());
		}

		return $this->fillRecentActivityDescription([$commonSpace])[0];
	}

	private function getCommonSpaceRecentActivityData(): RecentActivityData
	{
		return (new Service())->get($this->userId, 0);
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit