<?php
class PortalDispatcher
{
	protected $sPortalid;
	protected $aData;
	
	public function __construct($sPortalId)
	{
		$this->sPortalid = $sPortalId;
		$this->aData = PortalDispatcherData::GetData($sPortalId);
	}
	
	public function IsUserAllowed()
	{
		$bRet = true;
		$aProfiles = UserRights::ListProfiles();
		
		foreach($this->aData['deny'] as $sDeniedProfile)
		{
			// If one denied profile is present, it's enough => return false
			if (in_array($sDeniedProfile, $aProfiles))
			{
				return false;
			}
		}
		// If there are some "allow" profiles, then by default the result is false
		// since the user must have at least one of the profiles to be allowed
		if (count($this->aData['allow']) > 0)
		{
			$bRet = false;
		}
		foreach($this->aData['allow'] as $sAllowProfile)
		{
			// If one "allow" profile is present, it's enough => return true
			if (in_array($sAllowProfile, $aProfiles))
			{
				return true;
			}
		}
		return $bRet;
	}
	
	public function GetURL()
	{
		$aOverloads = MetaModel::GetConfig()->Get('portal_dispatch_urls');
		if (array_key_exists($this->sPortalid, $aOverloads))
		{
			$sRet = $aOverloads[$this->sPortalid];
		}
		else
		{
			$sRet = utils::GetAbsoluteUrlAppRoot().$this->aData['url'];
		}
		return $sRet;
	}
	
	public function GetLabel()
	{
		return Dict::S('portal:'.$this->sPortalid);
	}
	
	public function GetRank()
	{
		return $this->aData['rank'];
	}
}