- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/dbresult.php
- Класс: CAllDBResult
- Вызов: CAllDBResult::GetNavParams
static function GetNavParams($nPageSize = 0, $bShowAll = true, $iNumPage = false)
{
/** @global CMain $APPLICATION */
global $NavNum, $APPLICATION;
$bDescPageNumbering = false; //it can be extracted from $nPageSize
if (is_array($nPageSize))
{
$params = $nPageSize;
if (isset($params["iNumPage"]))
{
$iNumPage = $params["iNumPage"];
}
if (isset($params["nPageSize"]))
{
$nPageSize = $params["nPageSize"];
}
if (isset($params["bDescPageNumbering"]))
{
$bDescPageNumbering = $params["bDescPageNumbering"];
}
if (isset($params["bShowAll"]))
{
$bShowAll = $params["bShowAll"];
}
if (isset($params["NavShowAll"]))
{
$NavShowAll = $params["NavShowAll"];
}
if (isset($params["sNavID"]))
{
$sNavID = $params["sNavID"];
}
}
$nPageSize = intval($nPageSize);
$NavNum = intval($NavNum);
$PAGEN_NAME = "PAGEN_" . ($NavNum + 1);
$SHOWALL_NAME = "SHOWALL_" . ($NavNum + 1);
global ${$PAGEN_NAME}, ${$SHOWALL_NAME};
if ($iNumPage === false)
{
$PAGEN = ${$PAGEN_NAME} ?? 0;
}
else
{
$PAGEN = $iNumPage;
}
$PAGEN = (int)$PAGEN;
$SHOWALL = ${$SHOWALL_NAME};
$application = MainApplication::getInstance();
$inSession = (CPageOption::GetOptionString("main", "nav_page_in_session", "Y") == "Y") && $application->getKernelSession()->isStarted();
if ($inSession)
{
$md5Path = md5($sNavID ?? $APPLICATION->GetCurPage());
$SESS_PAGEN = $md5Path . "SESS_PAGEN_" . ($NavNum + 1);
$SESS_ALL = $md5Path . "SESS_ALL_" . ($NavNum + 1);
$localStorage = $application->getLocalSession('navigation');
$session = $localStorage->getData();
}
if ($PAGEN <= 0)
{
if ($inSession && isset($session[$SESS_PAGEN]) && $session[$SESS_PAGEN] > 0)
{
$PAGEN = $session[$SESS_PAGEN];
}
elseif ($bDescPageNumbering === true)
{
$PAGEN = 0;
}
else
{
$PAGEN = 1;
}
}
//Number of records on a page
$SIZEN = $nPageSize;
if ($SIZEN < 1)
{
$SIZEN = 10;
}
//Show all records
$SHOW_ALL = ($bShowAll && (isset($SHOWALL) ? ($SHOWALL == 1) : ($inSession && isset($session[$SESS_ALL]) && $session[$SESS_ALL] == 1)));
//$NavShowAll comes from $nPageSize array
$res = [
"PAGEN" => $PAGEN,
"SIZEN" => $SIZEN,
"SHOW_ALL" => ($NavShowAll ?? $SHOW_ALL),
];
if ($inSession)
{
$localStorage->set($SESS_PAGEN, $PAGEN);
$localStorage->set($SESS_ALL, $SHOW_ALL);
$res["SESS_PAGEN"] = $SESS_PAGEN;
$res["SESS_ALL"] = $SESS_ALL;
}
return $res;
}