CCrmSipHelper::getEntityFields

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmSipHelper
  4. getEntityFields
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/sip_helper.php
  • Класс: \CCrmSipHelper
  • Вызов: CCrmSipHelper::getEntityFields
static function getEntityFields($entityTypeID, $entityID, $params = array())
{
	$fields = null;

	$userID = isset($params['USER_ID']) ? intval($params['USER_ID']) : 0;
	if ($userID <= 0)
	{
		$userID = CCrmPerms::GetCurrentUserID();
	}

	$isAdmin = CCrmPerms::IsAdmin($userID);

	$userPermissions = CCrmPerms::GetUserPermissions($userID);
	$enableExtendedMode = isset($params['ENABLE_EXTENDED_MODE']) ? (bool)$params['ENABLE_EXTENDED_MODE'] : true;

	if ($entityTypeID === CCrmOwnerType::Contact)
	{
		$contactFactory = Container::getInstance()->getFactory(\CCrmOwnerType::Contact);
		if (!$contactFactory)
		{
			return null;
		}

		$contactItem = $contactFactory->getItem($entityID);
		if (!$contactItem)
		{
			return null;
		}

		$companyId = $contactItem->getCompanyId();

		$fields = [
			'ID' => $contactItem->getId(),
			'FORMATTED_NAME' => $contactItem->getHeading() ?? '',
			'PHOTO' => $contactItem->get(Item\Contact::FIELD_NAME_PHOTO) ?? 0,
			'COMPANY_ID' => $companyId ?? 0,
			'COMPANY_TITLE' => static::getCompanyTitle($companyId) ?? '',
			'POST' => $contactItem->getPost() ?? '',
			'ASSIGNED_BY_ID' => $contactItem->getAssignedById() ?? 0,
			'CAN_READ' => CCrmContact::CheckReadPermission($entityID, $userPermissions)
		];

		if ($fields['CAN_READ'] && $enableExtendedMode)
		{
			self::setFieldsEntities($fields, $entityTypeID, $entityID, $userID, $isAdmin);

			$invoiceIds = \Bitrix\Crm\Binding\EntityContactTable::getEntityIds(\CCrmOwnerType::SmartInvoice, $entityID);
			if (!empty($invoiceIds))
			{
				$fields['SMART_INVOICES'] = static::loadSmartInvoices([
					'@ID' => $invoiceIds,
				]);
			}
		}
	}
	elseif ($entityTypeID === CCrmOwnerType::Company)
	{
		$companyFactory = Container::getInstance()->getFactory(\CCrmOwnerType::Company);
		if (!$companyFactory)
		{
			return null;
		}

		$companyItem = $companyFactory->getItem($entityID);
		if (!$companyItem)
		{
			return null;
		}

		$companyTitle = $companyItem->getTitle();
		$companyLogo = $companyItem->get(Item\Company::FIELD_NAME_LOGO);
		$companyAssignedBy = $companyItem->getAssignedById();
		$fields = [
			'ID' => $companyItem->getId(),
			'TITLE' => $companyTitle ?? '',
			'LOGO' => $companyLogo ?? 0,
			'ASSIGNED_BY_ID' => $companyAssignedBy ?? 0,
			'CAN_READ' => CCrmCompany::CheckReadPermission($entityID, $userPermissions)
		];

		if ($fields['CAN_READ'] && $enableExtendedMode)
		{
			self::setFieldsEntities($fields, $entityTypeID, $entityID, $userID, $isAdmin);

			$fields['SMART_INVOICES'] = static::loadSmartInvoices([
				'=COMPANY_ID' => $entityID,
			]);
		}
	}
	elseif ($entityTypeID === CCrmOwnerType::Lead)
	{
		$leadFactory = Container::getInstance()->getFactory(\CCrmOwnerType::Lead);
		if (!$leadFactory)
		{
			return null;
		}

		$leadItem = $leadFactory->getItem($entityID);
		if (!$leadItem)
		{
			return null;
		}

		$companyId = $leadItem->getCompanyId();

		$fields = [
			'ID' => $leadItem->getId(),
			'TITLE' => $leadItem->getTitle() ?? '',
			'FORMATTED_NAME' => $leadItem->getHeading() ?? '',
			'COMPANY_TITLE' => static::getCompanyTitle($companyId) ?? '',
			'POST' => $leadItem->getPost() ?? '',
			'ASSIGNED_BY_ID' => $leadItem->getAssignedById() ?? 0,
			'CAN_READ' => CCrmLead::CheckReadPermission($entityID, $userPermissions),
			'IS_FINAL' => \Bitrix\Crm\PhaseSemantics::isFinal(CCrmLead::GetSemanticID($leadItem->get(Item\Lead::FIELD_NAME_STATUS_ID))),
			'STATUS_TEXT' => static::getStatusText(\CCrmOwnerType::Lead, $leadItem->getIsReturnCustomer(), false),
			'STATUS_COLOR' => static::getStatusColor(\CCrmOwnerType::Lead),
			'LEAD' => static::getLeadData($leadItem, $leadFactory),
		];
	}

	if (!is_array($fields))
	{
		return null;
	}


	if ($fields['CAN_READ'] && $enableExtendedMode)
	{
		$showUrl = $fields['SHOW_URL'] = CCrmOwnerType::GetEntityShowPath($entityTypeID, $entityID);
		$defaultFormId = '';
		switch ($entityTypeID)
		{
			case CCrmOwnerType::Lead:
				$defaultFormId = CCrmLead::DEFAULT_FORM_ID;
				break;
			case CCrmOwnerType::Contact:
				$defaultFormId = CCrmContact::DEFAULT_FORM_ID;
				break;
			case CCrmOwnerType::Company:
				$defaultFormId = CCrmCompany::DEFAULT_FORM_ID;
				break;
		}
		
		if ($showUrl !== '' && $defaultFormId != '')
		{
			$fields['ACTIVITY_LIST_URL'] = CCrmUrlUtil::AddUrlParams(
				$showUrl,
				array("{$defaultFormId}_active_tab" => 'tab_activity')
			);

			$fields['INVOICE_LIST_URL'] = CCrmUrlUtil::AddUrlParams(
				$showUrl,
				array("{$defaultFormId}_active_tab" => 'tab_invoice')
			);

			if ($entityTypeID === CCrmOwnerType::Contact || $entityTypeID === CCrmOwnerType::Company)
			{
				$fields['DEAL_LIST_URL'] = CCrmUrlUtil::AddUrlParams(
					$showUrl,
					array("{$defaultFormId}_active_tab" => 'tab_deal')
				);
			}
		}

		$activities = array();

		// We can skip permissions check, because user should be able to read activities,
		// bound to the entity, that he is able to read (see $fields['CAN_READ'])
		$dbActivity = CCrmActivity::GetList(
			array('DEADLINE' => 'ASC'),
			array(
				'COMPLETED' => 'N',
				'BINDINGS' => array(array('OWNER_TYPE_ID' => $entityTypeID, 'OWNER_ID' => $entityID)),
				'CHECK_PERMISSIONS' => 'N'
			),
			false,
			array('nTopCount' => 4),
			array('ID', 'SUBJECT', 'START_TIME', 'END_TIME', 'DEADLINE'),
			array('PERMS' => $userPermissions)
		);

		if (is_object($dbActivity))
		{
			while ($activityFields = $dbActivity->Fetch())
			{
				$activityFields['SHOW_URL'] = CCrmOwnerType::GetEntityShowPath(CCrmOwnerType::Activity, $activityFields['ID']);
				if(CCrmDateTimeHelper::IsMaxDatabaseDate($activityFields['DEADLINE']))
				{
					$activityFields['DEADLINE'] = '';
				}
				$activities[] = &$activityFields;
				unset($activityFields);
			}
		}

		$fields['ACTIVITIES'] = &$activities;
		unset($activities);
	}

	return $fields;
}

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