Класс umiSelection
является набором критериев выборки: будь то тип объектов, значение определенного поля, порядок сортировки и т.п. Для установки отдельных критериев служат методы класса. Вот их список:
Метод класса | Описание |
|
Добавляет отбор по типу объектов
|
addElementType($elementTypeId) |
Добавляет отбор по типу элемента иерархии
|
addLimit($resultsPerQueryPage, $resultsPage = 0) |
Добавляет количественные ограничения на выборку
|
setOrderByProperty($fieldId, $asc = true) |
Устанавливает сортировку по значению поля
|
setOrderByOrd($asc = true) |
Устанавливает сортировку по положению в иерархии
|
setOrderByRand() |
Устанавливает случайную сортировку |
setOrderByName($asc = true) |
Устанавливает сортировку по имени объекта или элемента иерархии
|
setOrderByObjectId($asc = true) |
Устанавливает сортировку по id объекта
|
addHierarchyFilter($elementId, $depth = 0, $ignoreIsDefault = false) |
|
addPropertyFilterBetween($fieldId, $minValue, $maxValue) |
Устанавливает проверку попадания значения поля в интервал
|
addPropertyFilterEqual($fieldId, $exactValue, $caseInsencetive = true) |
Устанавливает проверку значения поля на равенство
|
addPropertyFilterNotEqual($fieldId, $exactValue, $caseInsencetive = true) |
Устанавливает проверку значения поля на неравенство
|
addPropertyFilterLike($fieldId, $likeValue, $caseInsencetive = true) |
Устанавливает проверку значения поля на включение поисковой строки
|
addPropertyFilterMore($fieldId, $val) |
Устанавливает проверку значения поля на "больше"
|
addPropertyFilterLess($fieldId, $val) |
Устанавливает проверку значения поля на "меньше"
|
addPropertyFilterIsNull($fieldId) |
Устанавливает проверку значения поля на отсутствие значения
|
addActiveFilter($active) |
Устанавливает проверку активности элементов иерархии
|
addOwnerFilter($owner) |
Устанавливает допустимых владельцев объекта/элемента
|
addElementsFilter($vEids) |
Устанавливает допустимые id элементов иерархии
|
addNameFilterEquals($exactValue) |
Устанавливает значение для проверки имени объекта/элемента на равенство
|
addNameFilterLike($likeValue) |
Устанавливает значение для поиска в имени
|
addPermissions($userId = false) |
Устанавливает пользователя или группу для проверки прав на элемент
|
setConditionModeOR() |
Устанавливает флаг "ИЛИ" группировки результатов выборки по значению полей. Если этот флаг установлен, то выбираются объекты/элементы иерархии, удовлетворяющие хотя бы одному условию, из указанных. В противном случае требуется соблюдение всех указанных условий. |
setIsDomainIgnored($isDomainIgnored = 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()