CAllCrmActivity::GetEntityList

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CAllCrmActivity
  4. GetEntityList
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_activity.php
  • Класс: \CAllCrmActivity
  • Вызов: CAllCrmActivity::GetEntityList
static function GetEntityList($entityTypeID, $userID, $sortOrder, array $filter, $navParams = false, array $options = null)
{
	$entityTypeID = (int)$entityTypeID;
	$userID = (int)$userID;

	$userIDs = array(0);
	if($userID > 0)
	{
		$userIDs[] = $userID;
	}

	if($options === null)
	{
		$options = array();
	}

	$lb = null;
	$fieldOptions = isset($options['FIELD_OPTIONS']) && is_array($options['FIELD_OPTIONS'])
		? $options['FIELD_OPTIONS'] : null;
	if($entityTypeID === CCrmOwnerType::Lead)
	{
		$lb = CCrmLead::CreateListBuilder($fieldOptions);
	}
	else if($entityTypeID === CCrmOwnerType::Deal)
	{
		$lb = CCrmDeal::CreateListBuilder($fieldOptions);
	}
	else if($entityTypeID === CCrmOwnerType::Contact)
	{
		$lb = CCrmContact::CreateListBuilder($fieldOptions);
	}
	else if($entityTypeID === CCrmOwnerType::Company)
	{
		$lb = CCrmCompany::CreateListBuilder($fieldOptions);
	}
	else if($entityTypeID === CCrmOwnerType::Order)
	{
		$lb = CCrmCompany::CreateListBuilder($fieldOptions);
	}

	if(!$lb)
	{
		return null;
	}

	$fields = $lb->GetFields();
	$entityAlias = $lb->GetTableAlias();
	$join = 'LEFT JOIN '.CCrmActivity::USER_ACTIVITY_TABLE_NAME.' UA ON UA.USER_ID IN ('.implode(',', $userIDs).') AND UA.OWNER_ID = '.$entityAlias.'.ID AND UA.OWNER_TYPE_ID = '.$entityTypeID;
	$fields['ACTIVITY_USER_ID'] = array('FIELD' => 'MAX(UA.USER_ID)', 'TYPE' => 'int', 'FROM'=> $join);
	$fields['ACTIVITY_SORT'] = array('FIELD' => 'MAX(UA.SORT)', 'TYPE' => 'string', 'FROM'=> $join);
	$lb->SetFields($fields);

	$sortOrder = mb_strtoupper($sortOrder);
	if($sortOrder !== 'DESC' && $sortOrder !== 'ASC')
	{
		$sortOrder = 'ASC';
	}

	$options = array_merge(
		$options,
		array(
			'PERMISSION_SQL_TYPE' => 'FROM',
			'PERMISSION_SQL_UNION' => 'DISTINCT',
			'ENABLE_GROUPING_COUNT' => false
		)
	);

	return $lb->Prepare(
		array('ACTIVITY_USER_ID' => 'DESC', 'ACTIVITY_SORT' => $sortOrder, 'ID' => $sortOrder),
		$filter,
		array('ID'),
		$navParams,
		array('ID'),
		$options
	);
}

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