Your IP : 3.144.29.103


Current Path : /var/www/www-root/data/www/monolith-realty.ru/bitrix/modules/landing/lib/publicaction/
Upload File :
Current File : /var/www/www-root/data/www/monolith-realty.ru/bitrix/modules/landing/lib/publicaction/role.php

<?php
namespace Bitrix\Landing\PublicAction;

use \Bitrix\Main\Localization\Loc;
use \Bitrix\Landing\Manager;
use \Bitrix\Landing\Rights;
use \Bitrix\Landing\Role as RoleCore;
use \Bitrix\Landing\PublicActionResult;

Loc::loadMessages(__FILE__);

class Role
{
	/**
	 * Check feature enabled and if current user is admin.
	 * @return \Bitrix\Landing\PublicActionResult
	 */
	public static function init()
	{
		static $internal = true;

		$result = new PublicActionResult();
		$error = new \Bitrix\Landing\Error;

		if (!Rights::isAdmin())
		{
			$error->addError(
				'IS_NOT_ADMIN',
				Loc::getMessage('LANDING_IS_NOT_ADMIN_ERROR')
			);
			$result->setError($error);
		}
		else if (!Manager::checkFeature(Manager::FEATURE_PERMISSIONS_AVAILABLE))
		{
			$error->addError(
				'FEATURE_NOT_AVAIL',
				\Bitrix\Landing\Restriction\Manager::getSystemErrorMessage(
					'limit_sites_access_permissions'
				)
			);
			$result->setError($error);
		}

		return $result;
	}

	/**
	 * Gets available roles.
	 * @return \Bitrix\Landing\PublicActionResult
	 */
	public static function getList()
	{
		$result = new PublicActionResult();

		$roles = [];
		foreach (RoleCore::fetchAll() as $item)
		{
			$roles[] = [
				'ID' => $item['ID'],
				'TITLE' => $item['TITLE'],
				'XML_ID' => $item['XML_ID']
			];
		}

		$result->setResult($roles);

		return $result;
	}

	/**
	 * Gets rights for each site in this role.
	 * @param int $id Role id.
	 * @return \Bitrix\Landing\PublicActionResult
	 */
	public static function getRights($id)
	{
		$id = (int)$id;
		$result = new PublicActionResult();
		$result->setResult(
			RoleCore::getRights($id)
		);
		return $result;
	}

	/**
	 * Set rights for role.
	 * @param int $id Role id.
	 * @param array $rights Rights array ([[site_id] => [right1, right2]].
	 * @param array $additional Addition rights array ([Rights::ADDITIONAL_RIGHTS]].
	 * @return \Bitrix\Landing\PublicActionResult
	 */
	public static function setRights($id, array $rights, $additional = null)
	{
		static $mixedParams = ['additional'];

		$id = (int)$id;
		$result = new PublicActionResult();
		$result->setResult(true);
		RoleCore::setRights(
			$id,
			$rights,
			($additional !== null) ? $additional : null
		);

		return $result;
	}

	/**
	 * Set new access codes for role and refresh all rights.
	 * @param int $id Role id.
	 * @param array $codes Codes array.
	 * @return \Bitrix\Landing\PublicActionResult
	 */
	public static function setAccessCodes($id, array $codes = array())
	{
		$result = new PublicActionResult();
		$result->setResult(true);
		RoleCore::setAccessCodes((int)$id, $codes);
		return $result;
	}

	/**
	 * Return true if role model is switch on.
	 * @return \Bitrix\Landing\PublicActionResult
	 */
	public static function isEnabled()
	{
		$result = new PublicActionResult();
		$result->setResult(
			!Rights::isExtendedMode()
		);
		return $result;
	}

	/**
	 * Switch on/off role model.
	 * @param bool $mode Mode: on/off.
	 * @return \Bitrix\Landing\PublicActionResult
	 */
	public static function enable($mode)
	{
		$result = new PublicActionResult();
		$extended = Rights::isExtendedMode();
		if (
			$mode && $extended ||
			!$mode && !$extended
		)
		{
			Rights::switchMode();
		}
		$result->setResult(true);
		return $result;
	}
}