• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/security/querybuilder/options.php
  • Класс: Bitrix\Crm\Security\QueryBuilder\Options
  • Вызов: Options::createFromArray
static function createFromArray(array $options): Options
{
	$result = new self();

	if (isset($options['IDENTITY_COLUMN']) && (string)$options['IDENTITY_COLUMN'] !== '')
	{
		$result->setIdentityColumnName((string)$options['IDENTITY_COLUMN']);
	}
	if (isset($options['RESTRICT_BY_IDS']) && is_array($options['RESTRICT_BY_IDS']))
	{
		$result->setLimitByIds($options['RESTRICT_BY_IDS']);
	}
	if (isset($options['READ_ALL']) && $options['READ_ALL'])
	{
		$result->setReadAllAllowed(true);
	}
	if (isset($options['PERMISSION_SQL_UNION']) && $options['PERMISSION_SQL_UNION'] === 'DISTINCT')
	{
		$result->setUseDistinctUnion(true);
	}
	if (isset($options['PERMISSION_SQL_TYPE']) && $options['PERMISSION_SQL_TYPE'] === 'FROM')
	{
		$result->setUseJoin(true);
	}
	if(isset($options['RAW_QUERY']) && ($options['RAW_QUERY'] === true || is_array($options['RAW_QUERY'])))
	{
		$result->setNeedReturnRawQuery(true);
		if(is_array($options['RAW_QUERY']) && isset($options['RAW_QUERY']['TOP']) && (int)$options['RAW_QUERY']['TOP'] > 0)
		{
			$order =
				isset($options['RAW_QUERY']['SORT_TYPE'])
				&& mb_strtoupper($options['RAW_QUERY']['SORT_TYPE']) === 'DESC'
					? 'DESC'
					: 'ASC'
			;
			$result->setRawQueryOrder($order);
			$result->setRawQueryLimit((int)$options['RAW_QUERY']['TOP']);
		}
	}

	return $result;
}