Класс umiSelection является набором критериев выборки: будь то тип объектов, значение определенного поля, порядок сортировки и т.п. Для установки отдельных критериев служат методы класса. Вот их список:

Метод класса Описание
addObjectType($objectTypeId)

Добавляет отбор по типу объектов

$objectTypeId - id типа объекта

addElementType($elementTypeId)

Добавляет отбор по типу элемента иерархии

$elementTypeId - id типа элемента

addLimit($resultsPerQueryPage, $resultsPage = 0)

Добавляет количественные ограничения на выборку

$resultsPerQueryPage - количество элементов/объектов на странице

$resultsPage - номер запрашиваемой страницы

setOrderByProperty($fieldId, $asc = true)

Устанавливает сортировку по значению поля

$fieldId - id поля, по значению которого осуществляется сортировка

$asc - если true, то порядок сортировки прямой, в противном случае порядок обратный

setOrderByOrd($asc = true)

Устанавливает сортировку по положению в иерархии

$asc - если true, то порядок сортировки прямой, в противном случае порядок обратный

setOrderByRand()

Устанавливает случайную сортировку

setOrderByName($asc = true)

Устанавливает сортировку по имени объекта или элемента иерархии

$asc - если true, то порядок сортировки прямой, в противном случае порядок обратный

setOrderByObjectId($asc = true)

Устанавливает сортировку по id объекта

$asc - если true, то порядок сортировки прямой, в противном случае порядок обратный

addHierarchyFilter($elementId, $depth = 0, $ignoreIsDefault = false)  
addPropertyFilterBetween($fieldId, $minValue, $maxValue)

Устанавливает проверку попадания значения поля в интервал

$fieldId - Id поля

$minValue - Минимальное значение

$maxValue - Максимальное значение

addPropertyFilterEqual($fieldId, $exactValue, $caseInsencetive = true)

Устанавливает проверку значения поля на равенство

$fieldId - Id поля

$exactValue - Значение для сравнения

$caseInsencetive - true - не учитывать регистр, false - учитывать регистр

addPropertyFilterNotEqual($fieldId, $exactValue, $caseInsencetive = true)

Устанавливает проверку значения поля на неравенство

$fieldId - Id поля

$exactValue - Значение для сравнения

$caseInsencetive - true - не учитывать регистр, false - учитывать регистр

addPropertyFilterLike($fieldId, $likeValue, $caseInsencetive = true)

Устанавливает проверку значения поля на включение поисковой строки

$fieldId - Id поля

$exactValue - Значение для сравнения

$caseInsencetive - true - не учитывать регистр, false - учитывать регистр

addPropertyFilterMore($fieldId, $val)

Устанавливает проверку значения поля на "больше"

$fieldId - Id поля

$val - Значение для сравнения

addPropertyFilterLess($fieldId, $val)

Устанавливает проверку значения поля на "меньше"

$fieldId - Id поля

$val - Значение для сравнения

addPropertyFilterIsNull($fieldId)

Устанавливает проверку значения поля на отсутствие значения

$fieldId - Id поля

addActiveFilter($active)

Устанавливает проверку активности элементов иерархии

$active - true - выбираются активные, false - выбираются неактивные

addOwnerFilter($owner)

Устанавливает допустимых владельцев объекта/элемента

$owner - Допустимые id владельцев

addElementsFilter($vEids)

Устанавливает допустимые id элементов иерархии

$vEids - Допустимые id элементов

addNameFilterEquals($exactValue)

Устанавливает значение для проверки имени объекта/элемента на равенство

$exactValue - Значение для проверки

addNameFilterLike($likeValue)

Устанавливает значение для поиска в имени

$likeValue - значение для поиска

addPermissions($userId = false)

Устанавливает пользователя или группу для проверки прав на элемент

$userId - ID пользователя или группы

setConditionModeOR()

Устанавливает флаг "ИЛИ" группировки результатов выборки по значению полей. Если этот флаг установлен, то выбираются объекты/элементы иерархии, удовлетворяющие хотя бы одному условию, из указанных. В противном случае требуется соблюдение всех указанных условий.

setIsDomainIgnored($isDomainIgnored = false)

Устанавливает значение флага игнорирования текущего домена

$isDomainIgnored True - домен игнорируется, false - не игнорируется

Приведем пример использования umiSelection:

/**
* Для примера выведем список пользователей,
* имеющих почтовый ящик на сервере mail.ru
*/
$oCriteria = new umiSelection();

// Установим тип объектов "пользователи"
$iTypeId = umiObjectTypesCollection::getInstance()->getBaseType('users', 'user');
$oCriteria->addObjectType($iTypeId);

// Установим фильтрацию по значению поля e-mail
$oType    = umiObjectTypesCollection::getInstance()->getType($iTypeId);
$iFieldId = $oType->getFieldId('e-mail');
$oCriteria->addPropertyFilterLike($iFieldId, '@mail.ru', true);

// Наконец произведем выборку
$aUserIDs = umiSelectionsParser::runSelection($oCriteria);

// Обработаем результат
foreach($aUserIDs as $iUserId) {
...
}

Кроме этого, класс umiSelection содержит ряд методов для получения параметров выборки. Это методы с префиксом get. Они имеют назначение, обратное назначению аналогичных методов с префиксом set, и возвращают соответствующий критерий. Вот список этих методов:

  • getOrderConds()

  • getLimitConds()

  • getPropertyConds()

  • getObjectTypeConds()

  • getElementTypeConds()

  • getHierarchyConds()

  • getPermissionsConds()

  • getActiveConds()

  • getOwnerConds()

  • getObjectsConds()

  • getElementsConds()

  • getNameConds()

  • getConditionModeOR()

  • getIsDomainIgnored()