CCrmSearch::_buildEntityCard

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmSearch
  4. _buildEntityCard
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_search.php
  • Класс: \CCrmSearch
  • Вызов: CCrmSearch::_buildEntityCard
static function _buildEntityCard($arEntity, $sTitle, $ENTITY_TYPE, $arOptions = null)
{
	static $arEntityGroup = array();
	static $arStatuses = array();
	static $arSite = array();

	$sBody = $arEntity[$sTitle]."\n";
	$arField2status = array(
		'STATUS_ID' => 'STATUS',
		'SOURCE_ID' => 'SOURCE',
		'CURRENCY_ID' => 'CURRENCY',
		'PRODUCT_ID' => 'PRODUCT',
		'TYPE_ID' => 'CONTACT_TYPE',
		'STAGE_ID' => 'DEAL_STAGE',
		'EVENT_ID' => 'EVENT_TYPE',
		'COMPANY_TYPE' => 'COMPANY_TYPE',
		'EMPLOYEES' => 'EMPLOYEES',
		'INDUSTRY' => 'INDUSTRY'
	);
	foreach ($arEntity as $_k => $_v)
	{
		if ($_k == $sTitle || mb_strpos($_k, '_BY_') !== false || mb_strpos($_k, 'DATE_') === 0 || mb_strpos($_k, 'UF_') === 0)
			continue ;

		if($ENTITY_TYPE === 'CONTACT' && ($_k === 'NAME' || $_k === 'SECOND_NAME' || $_k === 'LAST_NAME'))
		{
			//Already added as title
			continue;
		}

		if (is_array($_v))
			continue ;

		if($_k === 'COMMENTS')
		{
			$_v = CSearch::KillTags($_v);
		}
		$_v = trim($_v);

		if (isset($arField2status[$_k]))
		{
			if (!isset($arStatuses[$_k]))
				$arStatuses[$_k] = CCrmStatus::GetStatusList($arField2status[$_k]);
			$_v = $arStatuses[$_k][$_v] ?? null;
		}

		if (!empty($_v) && !is_numeric($_v) && $_v != 'N' && $_v != 'Y')
			$sBody .= (self::$arMess[$ENTITY_TYPE]['CRM_FIELD_'.$_k] ?? null).": $_v\n";
	}

	if($ENTITY_TYPE === 'CONTACT' || $ENTITY_TYPE === 'COMPANY' || $ENTITY_TYPE === 'LEAD')
	{
		$multiFields = is_array($arOptions) && isset($arOptions['FM']) ? $arOptions['FM'] : null;
		if(is_array($multiFields))
		{
			foreach($multiFields as $typeID => $multiFieldItems)
			{
				if($typeID === 'PHONE')
				{
					$sBody .= GetMessage('CRM_PHONES').': '.implode(', ', $multiFieldItems)."\n";
				}
				elseif($typeID === 'EMAIL')
				{
					$sBody .= GetMessage('CRM_EMAILS').': '.implode(', ', $multiFieldItems)."\n";
				}
			}
		}
	}

	$sDetailURL = CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_'.mb_strtolower($ENTITY_TYPE).'_show'),
		array(
			mb_strtolower($ENTITY_TYPE).'_id' => $arEntity['ID']
		)
	);

	$_arAttr = \Bitrix\Crm\Security\EntityAuthorization::getPermissionAttributes(
		CCrmOwnerType::ResolveID($ENTITY_TYPE),
		array($arEntity['ID'])
	);

	if (empty($arSite))
	{
		$rsSite = CSite::GetList();
		while ($_arSite = $rsSite->Fetch())
			$arSite[] = $_arSite['ID'];
	}

	$sattr_d = '';
	$sattr_s = '';
	$sattr_u = '';
	$sattr_o = '';
	$arAttr = array();
	if (!isset($_arAttr[$arEntity['ID']]))
		$_arAttr[$arEntity['ID']] = array();

	$permEntity = $ENTITY_TYPE;
	if($ENTITY_TYPE === 'DEAL')
	{
		$permEntity = \Bitrix\Crm\Category\DealCategory::convertToPermissionEntityType(
			$arEntity['CATEGORY_ID']
		);
	}

	$arAttr[] = $permEntity; // for perm X
	foreach ($_arAttr[$arEntity['ID']] as $_s)
	{
		if (preg_match('/^U/', $_s))
		{
			$sattr_u = $_s;
		}
		elseif (preg_match('/^D/', $_s))
		{
			$sattr_d = $_s;
		}
		elseif (preg_match('/^S/', $_s))
		{
			$sattr_s = $_s;
		}
		elseif (preg_match('/^O/', $_s))
		{
			$sattr_o = $_s;
		}
		$arAttr[] = "{$permEntity}_{$_s}";
	}

	if (!empty($sattr_s))
	{
		$arAttr[] = "{$permEntity}_{$sattr_s}";  // for perm X in status

		if (!empty($sattr_u))
		{
			$arAttr[] = "{$permEntity}_{$sattr_u}_{$sattr_s}";
		}

		if (!empty($sattr_d))
		{
			$arAttr[] = "{$permEntity}_{$sattr_d}_{$sattr_s}";
		}

		if (!empty($sattr_o))
		{
			$arAttr[] = "{$permEntity}_{$sattr_o}_{$sattr_s}";
		}
	}

	$arSitePath = array();
	foreach ($arSite as $sSite)
		$arSitePath[$sSite] = $sDetailURL;

	$arResult = Array(
		'LAST_MODIFIED' => $arEntity['DATE_MODIFY'],
		'DATE_FROM' => $arEntity['DATE_CREATE'],
		'TITLE' => GetMessage('CRM_'.$ENTITY_TYPE).': '.$arEntity[$sTitle],
		'PARAM1' => $ENTITY_TYPE,
		'PARAM2' => $arEntity['ID'],
		'SITE_ID' => $arSitePath,
		'PERMISSIONS' => $arAttr,
		'BODY' => $sBody,
		'TAGS' => 'crm,'.mb_strtolower($ENTITY_TYPE).','.GetMessage('CRM_'.$ENTITY_TYPE)
	);

	if (self::$bReIndex)
		$arResult['ID'] = $ENTITY_TYPE.'.'.$arEntity['ID'];
	
	return $arResult;
}

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