• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/filter/userdataprovider.php
  • Класс: BitrixMainFilterUserDataProvider
  • Вызов: UserDataProvider::prepareFields
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;
}