• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/userfield/access/model/userfieldmodel.php
  • Класс: BitrixMainUserFieldAccessModelUserFieldModel
  • Вызов: UserFieldModel::getPermissions
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;
}