• Модуль: 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; }