public static function GetEntityList($entityTypeID, $userID, $sortOrder, array $filter, $navParams = false) { $entityTypeID = (int) $entityTypeID; $userID = (int) $userID; $userIDs = array(0); if ($userID > 0) { $userIDs[] = $userID; } $lb = null; if ($entityTypeID === CCrmOwnerType::Lead) { $lb = CCrmLead::CreateListBuilder(); } else { if ($entityTypeID === CCrmOwnerType::Deal) { $lb = CCrmDeal::CreateListBuilder(); } else { if ($entityTypeID === CCrmOwnerType::Contact) { $lb = CCrmContact::CreateListBuilder(); } else { if ($entityTypeID === CCrmOwnerType::Company) { $lb = CCrmCompany::CreateListBuilder(); } } } } 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 = strtoupper($sortOrder); if ($sortOrder !== 'DESC' && $sortOrder !== 'ASC') { $sortOrder = 'ASC'; } $options = array('PERMISSION_SQL_TYPE' => 'FROM', 'PERMISSION_SQL_UNION' => 'DISTINCT'); return $lb->Prepare(array('ACTIVITY_USER_ID' => 'DESC', 'ACTIVITY_SORT' => $sortOrder, 'ID' => $sortOrder), $filter, array('ID'), $navParams, array('ID'), $options); }
/** * @return \CCrmEntityListBuilder */ protected static function createEntityListBuilder() { return \CCrmContact::CreateListBuilder(); }