Your IP : 3.147.28.158


Current Path : /var/www/axolotl/data/www/yar.axolotls.ru/bitrix/modules/tasks/lib/provider/
Upload File :
Current File : /var/www/axolotl/data/www/yar.axolotls.ru/bitrix/modules/tasks/lib/provider/userprovidertrait.php

<?php
/**
 * Bitrix Framework
 * @package bitrix
 * @subpackage tasks
 * @copyright 2001-2021 Bitrix
 */

namespace Bitrix\Tasks\Provider;


use Bitrix\Main\Access\User\AccessibleUser;
use Bitrix\Tasks\Access\Model\UserModel;
use Bitrix\Tasks\Access\Permission\PermissionDictionary;
use Bitrix\Tasks\Access\Permission\TasksPermissionTable;

trait UserProviderTrait
{
	private $userId;
	private $userModel;
	private $departmentMembers;
	private $roles;
	private $permissions;

	private function getUserModel(): AccessibleUser
	{
		if (!$this->userModel)
		{
			$this->userModel = UserModel::createFromId($this->userId);
		}
		return $this->userModel;
	}

	private function getPermissions(): array
	{
		if ($this->permissions === null)
		{
			$roles = $this->getUserRoles();
			if (empty($roles))
			{
				return [];
			}

			$res = TasksPermissionTable::getList([
				'select' => ['PERMISSION_ID'],
				'filter' => [
					'@ROLE_ID' => $roles,
					'=VALUE' => PermissionDictionary::VALUE_YES
				]
			]);

			$this->permissions = [];
			foreach ($res as $row)
			{
				$this->permissions[$row['PERMISSION_ID']] = $row['PERMISSION_ID'];
			}
		}

		return $this->permissions;
	}

	private function getUserRoles(): array
	{
		if ($this->roles === null)
		{
			$this->roles = $this->getUserModel()->getRoles();
		}

		return $this->roles;
	}

	private function getDepartmentMembers(): array
	{
		if ($this->departmentMembers === null)
		{
			$departments = $this->getUserModel()->getUserDepartments();
			$res = \Bitrix\Intranet\Util::getDepartmentEmployees([
				'DEPARTMENTS' 	=> $departments,
				'RECURSIVE' 	=> 'N',
				'ACTIVE' 		=> 'Y',
				'SKIP' 			=> [],
				'SELECT' 		=> null
			]);

			$this->departmentMembers = [];
			while ($row = $res->GetNext())
			{
				$this->departmentMembers[] = (int) $row['ID'];
			}
		}

		return $this->departmentMembers;
	}
}