- Модуль: rpa
- Путь к файлу: ~/bitrix/modules/rpa/lib/controller/item.php
- Класс: BitrixRpaControllerItem
- Вызов: Item::prepareFilter
protected function prepareFilter(BitrixRpaModelType $type, array $filter = null): array
{
if(empty($filter))
{
return Driver::getInstance()->getUserPermissions()->getFilterForViewableItems($type);
}
$converter = new Converter(Converter::TO_UPPER | Converter::TO_SNAKE);
$logic = null;
$tasks = null;
foreach($filter as $name => $value)
{
if($name === 'logic')
{
$logic = $value;
unset($filter[$name]);
continue;
}
if($name === 'tasks')
{
$tasks = $value;
unset($filter[$name]);
continue;
}
if(is_numeric($name))
{
$filter[$name] = $this->prepareFilter($type, $filter[$name]);
}
elseif(strpos($name, 'UF_RPA_') === false)
{
$nameCamel = $converter->process($name);
$filter[$nameCamel] = $filter[$name];
unset($filter[$name]);
}
}
if($logic)
{
$filter = array_merge(['LOGIC' => $logic], $filter);
}
if($tasks)
{
$settings = new Settings([
'ID' => $this->getScope().'_list',
], $type);
$itemProvider = new Provider($settings);
$itemProvider->processTasksFilter($tasks, $filter);
}
if($this->getScope() === self::SCOPE_REST)
{
$this->prepareDateTimeFieldsForFilter($filter, $this->getItemDateTimeFieldNames($type));
}
return [
$filter,
Driver::getInstance()->getUserPermissions()->getFilterForViewableItems($type),
];
}