- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/location/admin/helper.php
- Класс: BitrixSaleLocationAdminHelper
- Вызов: Helper::getParametersForList
static function getParametersForList($proxed)
{
$columns = self::getMap('list'); // columns only for 'main' class
$parameters = array();
// filter
$filter = array();
if(is_array($proxed['FILTER']) && !empty($proxed['FILTER']))
{
foreach($columns as $code => $fld)
{
if($fld['data_type'] == 'integer' || $fld['data_type'] == 'float')
{
// range or list expected
if(is_array($proxed['FILTER'][$code]))
{
if(mb_strlen($proxed['FILTER'][$code]['FROM']) && mb_strlen($proxed['FILTER'][$code]['TO'])) // range
{
$filter['><'.$code] = array($proxed['FILTER'][$code]['FROM'], $proxed['FILTER'][$code]['TO']);
}
elseif(mb_strlen($proxed['FILTER'][$code]['FROM'])) // greather than
{
$filter['>='.$code] = $proxed['FILTER'][$code]['FROM'];
}
elseif(mb_strlen($proxed['FILTER'][$code]['TO'])) // less than
{
$filter['<='.$code] = $proxed['FILTER'][$code]['TO'];
}
}
elseif(mb_strlen($proxed['FILTER'][$code]))
{
$filter['='.$code] = (string)$proxed['FILTER'][$code];
}
}
else
{
if($proxed['FILTER'][$code] <> '')
{
$filter[static::getFilterModifier($fld['data_type']).$code] = $proxed['FILTER'][$code];
}
}
}
}
if(!empty($filter))
$parameters['filter'] = $filter;
// select
foreach($columns as $code => $col)
$parameters['select'][] = $code;
// order
if(is_array($proxed['ORDER']) && !empty($proxed['ORDER']))
$parameters['order'] = $proxed['ORDER'];
// nav (unused)
if(($page = intval($proxed['NAV']['PAGE_NUM'])) && ($lop = intval($proxed['NAV']['LOP'])))
{
$roadMap = static::getEntityRoadMap();
$road = $roadMap[self::getEntityRoadCode()]['name'];
$class = $road.'Table';
$count = $class::getList(array(
'filter' => is_array($parameters['filter']) ? $parameters['filter'] : array(),
'select' => array('CNT'),
'runtime' => array(
'CNT' => array(
'data_type' => 'integer',
'expression' => array(
'count(%u)',
'ID'
)
)
)
))->fetch();
$bounds = MainDBPaginator::calculateQueryLimits($count['CNT'], $page, $lop);
$parameters['offset'] = $bounds[0];
$parameters['limit'] = $bounds[1];
}
return $parameters;
}