public function prepareFields()
{
$result = [];
$whiteList = $this->getSettings()->getWhiteList();
$fieldsList = [
'ID' => [],
'NAME' => [
'whiteList' => [ 'FULL_NAME', 'NAME' ]
],
'LAST_NAME' => [
'whiteList' => [ 'FULL_NAME', 'LAST_NAME' ],
'options' => [ 'default' => true ]
],
'SECOND_NAME' => [
'whiteList' => [ 'SECOND_NAME' ]
],
'FIRED' => [
// 'conditionMethod' => 'self::getFiredAvailability',
'options' => [ 'type' => 'checkbox' ]
],
'EXTRANET' => [
'conditionMethod' => 'self::getExtranetAvailability',
'options' => [ 'type' => 'checkbox' ]
],
'INVITED' => [
'conditionMethod' => 'self::getInvitedAvailability',
'options' => [ 'type' => 'checkbox' ]
],
'INTEGRATOR' => [
'conditionMethod' => 'self::getIntegratorAvailability',
'options' => [ 'type' => 'list', 'partial' => true ]
],
'ADMIN' => [
'conditionMethod' => 'self::getAdminAvailability',
'options' => [ 'type' => 'list', 'partial' => true ]
],
'IS_ONLINE' => [
'options' => [ 'type' => 'checkbox' ]
],
'DEPARTMENT' => [
'whiteList' => [ 'UF_DEPARTMENT' ],
'options' => [ 'default' => true, 'type' => 'dest_selector', 'partial' => true ]
],
'DEPARTMENT_FLAT' => [
'whiteList' => [ 'UF_DEPARTMENT_FLAT' ],
'options' => [ 'type' => 'dest_selector', 'partial' => true ]
],
'TAGS' => [
'whiteList' => [ 'TAGS' ],
'options' => [ 'default' => true ]
],
'LOGIN' => [
'whiteList' => [ 'LOGIN' ]
],
'EMAIL' => [
'whiteList' => [ 'EMAIL' ]
],
'DATE_REGISTER' => [
'whiteList' => [ 'DATE_REGISTER' ],
'options' => [ 'type' => 'date' ]
],
'LAST_ACTIVITY_DATE' => [
'whiteList' => [ 'LAST_ACTIVITY_DATE' ],
'options' => [ 'type' => 'date' ]
],
'BIRTHDAY' => [
'whiteList' => [ 'PERSONAL_BIRTHDAY' ],
'options' => [ 'type' => 'date' ]
],
'GENDER' => [
'whiteList' => [ 'PERSONAL_GENDER' ],
'options' => [ 'type' => 'list', 'partial' => true ]
],
'PHONE_MOBILE' => [
'whiteList' => [ 'PERSONAL_MOBILE' ]
],
'PERSONAL_CITY' => [
'whiteList' => [ 'PERSONAL_CITY' ]
],
'PERSONAL_STREET' => [
'whiteList' => [ 'PERSONAL_STREET' ]
],
'PERSONAL_STATE' => [
'whiteList' => [ 'PERSONAL_STATE' ]
],
'PERSONAL_ZIP' => [
'whiteList' => [ 'PERSONAL_ZIP' ]
],
'PERSONAL_MAILBOX' => [
'whiteList' => [ 'PERSONAL_MAILBOX' ]
],
'PERSONAL_COUNTRY' => [
'whiteList' => [ 'PERSONAL_COUNTRY' ],
'options' => [ 'type' => 'list', 'partial' => true ]
],
'WORK_CITY' => [
'whiteList' => [ 'WORK_CITY' ]
],
'WORK_STREET' => [
'whiteList' => [ 'WORK_STREET' ]
],
'WORK_STATE' => [
'whiteList' => [ 'WORK_STATE' ]
],
'WORK_ZIP' => [
'whiteList' => [ 'WORK_ZIP' ]
],
'WORK_MAILBOX' => [
'whiteList' => [ 'WORK_MAILBOX' ]
],
'WORK_COUNTRY' => [
'whiteList' => [ 'WORK_COUNTRY' ],
'options' => [ 'type' => 'list', 'partial' => true ]
],
'WORK_PHONE' => [
'whiteList' => [ 'WORK_PHONE' ]
],
'POSITION' => [
'whiteList' => [ 'WORK_POSITION' ]
],
'COMPANY' => [
'whiteList' => [ 'WORK_COMPANY' ]
],
'WORK_DEPARTMENT' => [
'whiteList' => [ 'WORK_DEPARTMENT' ]
],
];
foreach($fieldsList as $column => $field)
{
$whiteListPassed = false;
if (
!empty($field['conditionMethod'])
&& is_callable($field['conditionMethod'])
)
{
$whiteListPassed = call_user_func_array($field['conditionMethod'], []);
}
elseif (
empty($whiteList)
|| empty($field['whiteList'])
)
{
$whiteListPassed = true;
}
else
{
foreach($field['whiteList'] as $whiteListField)
{
if (in_array($whiteListField, $whiteList))
{
$whiteListPassed = true;
break;
}
}
}
if ($whiteListPassed)
{
$result[$column] = $this->createField(
$column,
(!empty($field['options']) ? $field['options'] : [])
);
}
}
return $result;
}