- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/dbresult.php
- Класс: CAllDBResult
- Вызов: CAllDBResult::GetNavPrint
public function GetNavPrint($title, $show_allways = false, $StyleText = "text", $template_path = false, $arDeleteParam = false)
{
$res = '';
$add_anchor = $this->add_anchor;
$sBegin = GetMessage("nav_begin");
$sEnd = GetMessage("nav_end");
$sNext = GetMessage("nav_next");
$sPrev = GetMessage("nav_prev");
$sAll = GetMessage("nav_all");
$sPaged = GetMessage("nav_paged");
$nPageWindow = $this->nPageWindow;
if (!$show_allways)
{
if ($this->NavRecordCount == 0 || ($this->NavPageCount == 1 && !$this->NavShowAll))
{
return '';
}
}
$sUrlPath = GetPagePath();
$arDel = ["PAGEN_" . $this->NavNum, "SIZEN_" . $this->NavNum, "SHOWALL_" . $this->NavNum, "PHPSESSID"];
if (is_array($arDeleteParam))
{
$arDel = array_merge($arDel, $arDeleteParam);
}
$strNavQueryString = DeleteParam($arDel);
if ($strNavQueryString <> "")
{
$strNavQueryString = htmlspecialcharsbx("&" . $strNavQueryString);
}
if ($template_path !== false && !file_exists($template_path) && file_exists($_SERVER["DOCUMENT_ROOT"] . $template_path))
{
$template_path = $_SERVER["DOCUMENT_ROOT"] . $template_path;
}
if ($this->bDescPageNumbering === true)
{
if ($this->NavPageNomer + floor($nPageWindow / 2) >= $this->NavPageCount)
{
$nStartPage = $this->NavPageCount;
}
else
{
if ($this->NavPageNomer + floor($nPageWindow / 2) >= $nPageWindow)
{
$nStartPage = $this->NavPageNomer + floor($nPageWindow / 2);
}
else
{
if ($this->NavPageCount >= $nPageWindow)
{
$nStartPage = $nPageWindow;
}
else
{
$nStartPage = $this->NavPageCount;
}
}
}
if ($nStartPage - $nPageWindow >= 0)
{
$nEndPage = $nStartPage - $nPageWindow + 1;
}
else
{
$nEndPage = 1;
}
//echo "nEndPage = $nEndPage; nStartPage = $nStartPage;";
}
else
{
if ($this->NavPageNomer > floor($nPageWindow / 2) + 1 && $this->NavPageCount > $nPageWindow)
{
$nStartPage = $this->NavPageNomer - floor($nPageWindow / 2);
}
else
{
$nStartPage = 1;
}
if ($this->NavPageNomer <= $this->NavPageCount - floor($nPageWindow / 2) && $nStartPage + $nPageWindow - 1 <= $this->NavPageCount)
{
$nEndPage = $nStartPage + $nPageWindow - 1;
}
else
{
$nEndPage = $this->NavPageCount;
if ($nEndPage - $nPageWindow + 1 >= 1)
{
$nStartPage = $nEndPage - $nPageWindow + 1;
}
}
}
$this->nStartPage = $nStartPage;
$this->nEndPage = $nEndPage;
if ($template_path !== false && file_exists($template_path))
{
/*
$this->bFirstPrintNav - is first tiem call
$this->NavPageNomer - number of current page
$this->NavPageCount - total page count
$this->NavPageSize - page size
$this->NavRecordCount - records count
$this->bShowAll - show "all" link
$this->NavShowAll - is all shown
$this->NavNum - number of navigation
$this->bDescPageNumbering - reverse paging
$this->nStartPage - first page in chain
$this->nEndPage - last page in chain
$strNavQueryString - query string
$sUrlPath - current url
Url for link to the page #PAGE_NUMBER#:
$sUrlPath.'?PAGEN_'.$this->NavNum.'='.#PAGE_NUMBER#.$strNavQueryString.'#nav_start"'.$add_anchor
*/
ob_start();
include($template_path);
$res = ob_get_contents();
ob_end_clean();
$this->bFirstPrintNav = false;
return $res;
}
if ($this->bFirstPrintNav)
{
$res .= '';
$this->bFirstPrintNav = false;
}
$res .= '' . $title . ' ';
if ($this->bDescPageNumbering === true)
{
$makeweight = ($this->NavRecordCount % $this->NavPageSize);
$NavFirstRecordShow = 0;
if ($this->NavPageNomer != $this->NavPageCount)
{
$NavFirstRecordShow += $makeweight;
}
$NavFirstRecordShow += ($this->NavPageCount - $this->NavPageNomer) * $this->NavPageSize + 1;
if ($this->NavPageCount == 1)
{
$NavLastRecordShow = $this->NavRecordCount;
}
else
{
$NavLastRecordShow = $makeweight + ($this->NavPageCount - $this->NavPageNomer + 1) * $this->NavPageSize;
}
$res .= $NavFirstRecordShow;
$res .= ' - ' . $NavLastRecordShow;
$res .= ' ' . GetMessage("nav_of") . ' ';
$res .= $this->NavRecordCount;
$res .= "n
n";
$res .= '';
if ($this->NavPageNomer < $this->NavPageCount)
{
$res .= '' . $sBegin . ' | ' . $sPrev . '';
}
else
{
$res .= $sBegin . ' | ' . $sPrev;
}
$res .= ' | ';
$NavRecordGroup = $nStartPage;
while ($NavRecordGroup >= $nEndPage)
{
$NavRecordGroupPrint = $this->NavPageCount - $NavRecordGroup + 1;
if ($NavRecordGroup == $this->NavPageNomer)
{
$res .= '' . $NavRecordGroupPrint . ' ';
}
else
{
$res .= '' . $NavRecordGroupPrint . ' ';
}
$NavRecordGroup--;
}
$res .= '| ';
if ($this->NavPageNomer > 1)
{
$res .= '' . $sNext . ' | ' . $sEnd . ' ';
}
else
{
$res .= $sNext . ' | ' . $sEnd . ' ';
}
}
else
{
$res .= ($this->NavPageNomer - 1) * $this->NavPageSize + 1;
$res .= ' - ';
if ($this->NavPageNomer != $this->NavPageCount)
{
$res .= $this->NavPageNomer * $this->NavPageSize;
}
else
{
$res .= $this->NavRecordCount;
}
$res .= ' ' . GetMessage("nav_of") . ' ';
$res .= $this->NavRecordCount;
$res .= "n
n";
$res .= '';
if ($this->NavPageNomer > 1)
{
$res .= '' . $sBegin . ' | ' . $sPrev . '';
}
else
{
$res .= $sBegin . ' | ' . $sPrev;
}
$res .= ' | ';
$NavRecordGroup = $nStartPage;
while ($NavRecordGroup <= $nEndPage)
{
if ($NavRecordGroup == $this->NavPageNomer)
{
$res .= '' . $NavRecordGroup . ' ';
}
else
{
$res .= '' . $NavRecordGroup . ' ';
}
$NavRecordGroup++;
}
$res .= '| ';
if ($this->NavPageNomer < $this->NavPageCount)
{
$res .= '' . $sNext . ' | ' . $sEnd . ' ';
}
else
{
$res .= $sNext . ' | ' . $sEnd . ' ';
}
}
if ($this->bShowAll)
{
$res .= $this->NavShowAll ? '| ' . $sPaged . ' ' : '| ' . $sAll . ' ';
}
$res .= '';
return $res;
}