CCrmEvent::BuildPermSql

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmEvent
  4. BuildPermSql
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_event.php
  • Класс: \CCrmEvent
  • Вызов: CCrmEvent::BuildPermSql
public function BuildPermSql($aliasPrefix = 'CE', $permType = 'READ')
{
	if (empty($arFilter['ENTITY_TYPE']))
	{
		$arEntity = array(
			CCrmOwnerType::LeadName,
			CCrmOwnerType::DealName,
			CCrmOwnerType::QuoteName,
			CCrmOwnerType::ContactName,
			CCrmOwnerType::CompanyName
		);
	}
	elseif(isset($arFilter['ENTITY_TYPE']) && is_array($arFilter['ENTITY_TYPE']))
	{
		$arEntity = $arFilter['ENTITY_TYPE'];
	}
	else
	{
		$arEntity = array($arFilter['ENTITY_TYPE']);
	}

	$entitiesSql = array();
	$permOptions = array('IDENTITY_COLUMN' => 'ENTITY_ID');
	foreach ($arEntity as $entityType)
	{
		if($entityType === CCrmOwnerType::LeadName)
		{
			$entitiesSql[CCrmOwnerType::LeadName] = CCrmLead::BuildPermSql('CER', $permType, $permOptions);
		}
		elseif($entityType === CCrmOwnerType::DealName)
		{
			$entitiesSql[CCrmOwnerType::DealName] = CCrmDeal::BuildPermSql('CER', $permType, $permOptions);
		}
		elseif($entityType === CCrmOwnerType::QuoteName)
		{
			$entitiesSql[CCrmOwnerType::QuoteName] = CCrmQuote::BuildPermSql('CER', $permType, $permOptions);
		}
		elseif($entityType === CCrmOwnerType::ContactName)
		{
			$entitiesSql[CCrmOwnerType::ContactName] = CCrmContact::BuildPermSql('CER', $permType, $permOptions);
		}
		elseif($entityType === CCrmOwnerType::CompanyName)
		{
			$entitiesSql[CCrmOwnerType::CompanyName] = CCrmCompany::BuildPermSql('CER', $permType, $permOptions);
		}
	}

	foreach($entitiesSql as $entityType => $entitySql)
	{
		if(!is_string($entitySql))
		{
			//If $entityPermSql is not string - acces denied. Clear permission SQL and related records will be ignored.
			unset($entitiesSql[$entityType]);
			continue;
		}

		if($entitySql !== '')
		{
			$entitiesSql[$entityType] = "(CER.ENTITY_TYPE = '{$entityType}' AND ({$entitySql}))";
		}
		else
		{
			// No permissions check - fetch all related records
			$entitiesSql[$entityType] = "(CER.ENTITY_TYPE = '$entityType')";
		}
	}

	//If $entitiesSql is empty - user does not have permissions at all.
	if(empty($entitiesSql))
	{
		return false;
	}

	return implode(' OR ', $entitiesSql);
}

Добавить комментарий