Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/modules/main/lib/userfield/access/
Upload File :
Current File : /var/www/homesaver/www/bitrix/modules/main/lib/userfield/access/userfieldaccesscontroller.php

<?php

namespace Bitrix\Main\UserField\Access;

use Bitrix\Main\Access\Exception\UnknownActionException;
use Bitrix\Main\Access\User\AccessibleUser;
use Bitrix\Main\Access\BaseAccessController;
use Bitrix\Main\UserField\Access\Model\UserFieldModel;
use Bitrix\Main\UserField\Access\Model\UserModel;
use Bitrix\Main\Access\AccessibleItem;

class UserFieldAccessController extends BaseAccessController
{
	public static function getAccessibleFields($userId, string $action, $itemId = null, $params = null): array
	{
		$userId = (int) $userId;
		$controller = new static($userId);
		return $controller->checkByItemsId($action, $itemId, $params);
	}

	public function checkByItemsId(string $action, iterable $itemId = null, $params = null): array
	{
		$items = $this->loadItems($itemId);
		return $this->massCheck($action, $items, $params);
	}

	protected function loadItems(iterable $itemsId = null): array
	{
		$userFieldModels = [];
		foreach ($itemsId as $itemId){
			$userFieldModels[] = UserFieldModel::createFromId($itemId);
		}

		return $userFieldModels;
	}

	public function massCheck(string $action, array $items = null, $params = null): array
	{
		$ruleName = $this->getRuleName($action);

		if (!$ruleName || !class_exists($ruleName))
		{
			throw new UnknownActionException($action);
		}

		return (new $ruleName($this))->executeMass($items, $params);
	}

	protected function loadItem(int $itemId = null): AccessibleItem
	{
		if ($itemId)
		{
			return UserFieldModel::createFromId($itemId);
		}

		return UserFieldModel::createNew();
	}

	protected function loadUser(int $userId): AccessibleUser
	{
		return UserModel::createFromId($userId);
	}
}