public function prepareFieldData($fieldID)
{
$userFields = $this->getUserFields();
if(!isset($userFields[$fieldID]))
{
return null;
}
$userField = $userFields[$fieldID];
$typeID = $userField['USER_TYPE']['USER_TYPE_ID'];
$isMultiple = isset($userField['MULTIPLE']) && $userField['MULTIPLE'] === 'Y';
$ID = $userField['ID'];
if ($typeID === 'employee')
{
return [
'params' => [
'multiple' => $isMultiple ? 'Y' : 'N',
'dialogOptions' => [
'height' => 200,
'context' => 'CRM_UF_FILTER_' . $fieldID,
'entities' => [
[
'id' => 'user',
'options' => [
'inviteEmployeeLink' => false,
'intranetUsersOnly' => true,
]
],
],
'showAvatars' => true,
'dropdownMode' => false,
],
],
];
}
elseif($typeID === 'enumeration')
{
$entity = new CUserFieldEnum();
$dbResult = $entity->GetList(array('SORT' => 'ASC'), array('USER_FIELD_ID' => $ID));
$items = array();
if(is_object($dbResult))
{
while($ary = $dbResult->Fetch())
{
$items[$ary['ID']] = $ary['VALUE'];
}
}
if ($userField['SETTINGS']['DISPLAY'] === EnumType::DISPLAY_DIALOG)
{
$dialogItems = [];
foreach ($items as $itemId => $itemTitle)
{
$dialogItems[] = [
'id' => $itemId,
'entityId' => $userField['FIELD_NAME'],
'title' => $itemTitle,
'tabs' => $userField['FIELD_NAME'],
];
}
return [
'params' => [
'multiple' => 'Y',
'dialogOptions' => [
'items' => $dialogItems,
'height' => 200,
'dropdownMode' => true,
'compactView' => true,
'tabs' => [
[
'id' => $userField['FIELD_NAME'],
'title' => $userField['EDIT_FORM_LABEL'],
],
],
],
],
];
}
return array(
'params' => array('multiple' => 'Y'),
'items' => $items
);
}
elseif($typeID === 'iblock_element')
{
$entity = new CUserTypeIBlockElement();
$dbResult = $entity->GetList($userField);
$items = array();
if(is_object($dbResult))
{
$count = 0;
while($ary = $dbResult->Fetch())
{
$items[$ary['ID']] = $ary['NAME'];
if(++$count > 500)
{
break;
}
}
}
return array(
'params' => array('multiple' => 'Y'),
'items' => $items
);
}
elseif($typeID === 'iblock_section')
{
$entity = new CUserTypeIBlockSection();
$dbResult = $entity->GetList($userField);
$items = array();
if(is_object($dbResult))
{
$count = 0;
while($ary = $dbResult->Fetch())
{
$items[$ary['ID']] = isset($ary['DEPTH_LEVEL']) && $ary['DEPTH_LEVEL'] > 1
? str_repeat('. ', ($ary['DEPTH_LEVEL'] - 1)).$ary['NAME'] : $ary['NAME'];
if(++$count > 500)
{
break;
}
}
}
return array(
'params' => array('multiple' => 'Y'),
'items' => $items
);
}
elseif($typeID === 'crm')
{
$settings = isset($userField['SETTINGS']) && is_array($userField['SETTINGS'])
? $userField['SETTINGS'] : array();
$entityTypeNames = array();
$supportedEntityTypeNames = array(
CCrmOwnerType::LeadName,
CCrmOwnerType::DealName,
CCrmOwnerType::ContactName,
CCrmOwnerType::CompanyName
);
foreach($supportedEntityTypeNames as $entityTypeName)
{
if(isset($settings[$entityTypeName]) && $settings[$entityTypeName] === 'Y')
{
$entityTypeNames[] = $entityTypeName;
}
}
$destSelectorParams = array(
'apiVersion' => 3,
'context' => 'CRM_UF_FILTER_ENTITY',
'contextCode' => 'CRM',
'useClientDatabase' => 'N',
'enableAll' => 'N',
'enableDepartments' => 'N',
'enableUsers' => 'N',
'enableSonetgroups' => 'N',
'allowEmailInvitation' => 'N',
'allowSearchEmailUsers' => 'N',
'departmentSelectDisable' => 'Y',
'enableCrm' => 'Y',
'multiple' => ($isMultiple ? 'Y' : 'N'),
'convertJson' => 'Y'
);
$entityTypeCounter = 0;
foreach($entityTypeNames as $entityTypeName)
{
switch($entityTypeName)
{
case CCrmOwnerType::LeadName:
$destSelectorParams['enableCrmLeads'] = 'Y';
$destSelectorParams['addTabCrmLeads'] = 'Y';
$entityTypeCounter++;
break;
case CCrmOwnerType::DealName:
$destSelectorParams['enableCrmDeals'] = 'Y';
$destSelectorParams['addTabCrmDeals'] = 'Y';
$entityTypeCounter++;
break;
case CCrmOwnerType::ContactName:
$destSelectorParams['enableCrmContacts'] = 'Y';
$destSelectorParams['addTabCrmContacts'] = 'Y';
$entityTypeCounter++;
break;
case CCrmOwnerType::CompanyName:
$destSelectorParams['enableCrmCompanies'] = 'Y';
$destSelectorParams['addTabCrmCompanies'] = 'Y';
$entityTypeCounter++;
break;
default:
}
}
if ($entityTypeCounter <= 1)
{
$destSelectorParams['addTabCrmLeads'] = 'N';
$destSelectorParams['addTabCrmDeals'] = 'N';
$destSelectorParams['addTabCrmContacts'] = 'N';
$destSelectorParams['addTabCrmCompanies'] = 'N';
}
return array(
'params' => $destSelectorParams
);
}
elseif($typeID === 'crm_status')
{
$items = array();
if(isset($userField['SETTINGS'])
&& is_array($userField['SETTINGS'])
&& isset($userField['SETTINGS']['ENTITY_TYPE'])
)
{
$entityType = $userField['SETTINGS']['ENTITY_TYPE'];
if($entityType !== '')
{
$items = CCrmStatus::GetStatusList($entityType);
}
}
return array(
'params' => array('multiple' => 'Y'),
'items' => $items
);
}
return null;
}