Skip to content

Instantly share code, notes, and snippets.

@anoriar
Last active January 16, 2019 17:43
Show Gist options
  • Save anoriar/68ed99f8d1eee32cab67f25b0e242c54 to your computer and use it in GitHub Desktop.
Save anoriar/68ed99f8d1eee32cab67f25b0e242c54 to your computer and use it in GitHub Desktop.
public function getProductsWithPager($params, $countInterval){
return $this->pagerIblock($params, $countInterval);
}
public function pagerIblock($params, $countInterval)
{
$arResult = [];
$countMax = CIBlockElement::GetList(array('ID' => 'ASC'), $params["filter"], array(), false, array('ID'));
if ($countMax > 0) {
$pages = ceil($countMax / $countInterval);
} else {
$pages = 1;
}
if (!$params["nav"]) {
$params["nav"] = [];
}
for ($i = 0; $i < $pages; $i++) {
$params["nav"] = array_merge($params["nav"], ["nPageSize" => $countInterval, "iNumPage" => $i]);
// $arResult = array_merge_recursive($this->getElements($params), $arResult);
}
return $arResult;
}
public function pagerIblock2($params, $countInterval){
if (key_exists('cacheTime', $params)) {
$cacheTime = $params['cacheTime'];
unset($params['cacheTime']);
} else {
$cacheTime = 3600;
}
if (key_exists('cacheTag', $params)) {
$cacheTag = $params['cacheTag'];
unset($params['cacheTag']);
} else {
$cacheTag = '';
}
if (key_exists('indexArray', $params)) {
$indexArray = $params['indexArray'];
unset($params['indexArray']);
} else {
$indexArray = false;
}
$order = $params['order'] ? $params['order'] : [];
$arFilter = $params['filter'] ? $params['filter'] : [];
$arSelect = $params['select'] ? $params['select'] : ['*'];
$arGroup = $params['group'] ? $params['group'] : false;
$arNav = $params['nav'] ? $params['nav'] : [];
if (!$arFilter['IBLOCK_ID']) {
$arFilter['IBLOCK_ID'] = $this->id;
}
$cache = $this->getCache([__METHOD__, $params], $cacheTime, $cacheTag);
if ($cache->start()) {
$arResult = [];
$countMax = CIBlockElement::GetList(array('ID' => 'ASC'), $params["filter"], array(), false, array('ID'));
if ($countMax > 0) {
$pages = ceil($countMax / $countInterval);
} else {
$pages = 1;
}
for ($i = 0; $i < $pages; $i++) {
$rs = \CIBlockElement::GetList($order, $arFilter, $arGroup, array_merge($arNav, ["nPageSize" => $countInterval, "iNumPage" => $i]), $arSelect);
$index = 0;
while ($ar = $rs->GetNext()) {
if ($indexArray) {
$ar['INDEX'] = $index;
$arResult[$ar[$indexArray]] = $ar;
} else {
$arResult[] = $ar;
}
$index++;
}
}
if (!empty($arResult)) {
$cache->end($arResult);
} else {
$cache->abort();
}
} else {
$arResult = $cache->getVars();
}
return $arResult;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment