################################################
# ФУНКЦИЯ SetRangePicker - выдаёт строку с номерами страниц результатов
# Пример: "Страницы результатов: << 11 12 13 14 15 16 >> ( 361 - 390 )"
# где
# << - ссылка на предыдущую страницу (в данном случае 10ю)
# 11 12 ... - ссылки на номера страниц
# 13 - текущая страница (без ссылки)
# >> - ссылка на следующую страницу (17ю)
# ( 361 - 390 ) - номера строк результатов
#
# Параметры:
# $iCurPage - текущая страница
# $iLinesPP - кол-во результатов на странице
# $iReturned - кол-во результатов всего
# $iShowNums - сколько номеров страниц показывать вперёд и назад
# $bIsDesc - результаты в обратном порядке
# $bShowResNums - показывать номера строк результатов "(с ... по ...)"
# $sQueryString - дополнительные параметры строки запроса (если надо)
#
# Выходные данные:
# массив (строка со ссылками, номер первой записи на текущей странице)
################################################
function SetRangePicker( $iCurPage, $iLinesPP, $iReturned, $iShowNums, $bIsDesc, $bShowResNums, $sQueryString )
{
if ( $iReturned > 0 )
{
$iTotalPages = $iReturned/$iLinesPP;
if ($iTotalPages != (int)$iTotalPages)
{
if($iTotalPages > 1) $iTotalPages = (int)$iTotalPages + 1;
else $iTotalPages = 1;
}
if($iTotalPages == 1) return array("", 0);
// Определяем начальную страницу
if ( $iCurPage > $iShowNums )
{
if($iCurPage - $iShowNums < 1) $iStartPage = 1;
else $iStartPage = $iCurPage - $iShowNums;
}
else $iStartPage = 1;
// Определяем конечную страницу
if ( $iCurPage < 1 )
{
if($iTotalPages >= $iShowNums) $iStopPage = $iShowNums;
else $iStopPage = $iTotalPages;
}
else
{
if($iTotalPages < $iCurPage + $iShowNums) $iStopPage = $iTotalPages;
else $iStopPage = $iCurPage + $iShowNums;
}
$sPicker = "<div class=\"pager\"><b>Страницы:</b> ";
if ( $iStartPage > 1 )
{
if ( $iStartPage > 1 ) $iJumpPage = ( $iStartPage - 1 );
else $iJumpPage = 1;
$sPicker .= "<span><a href=\"?pn=".($iCurPage - $iShowNums - 1)."$sQueryString\"><<</a></span> ";
}
for($iPage = $iStartPage; $iPage <= $iStopPage; $iPage++)
{
$sPicker .= "<span>";
if ( $iPage != $iCurPage ) $sPicker .= "<a href=\"?pn=$iPage$sQueryString\">";
$sPicker .= "<b>".$iPage."</b>";
if ( $iPage != $iCurPage ) $sPicker .= "</a>";
$sPicker .= " </span> ";
}
if ( $iStopPage < $iTotalPages )
{
if ( $iStopPage + 1 > $iTotalPages ) $iJumpPage = $iTotalPages;
else $iJumpPage = $iStopPage+1;
$sPicker .= "<span><a href=\"?pn=".($iCurPage + $iShowNums + 1)."$sQueryString\">>></a></span>";
}
//определяем номера строк результатов
$iLow = 1 + (($iCurPage-1)*$iLinesPP);
$iHigh = ($iLow + ($iLinesPP - 1));
if ( $iHigh > $iReturned ) $iHigh = $iReturned;
if($bShowResNums)
{
if($bIsDesc) $sPicker .= " <b>( строки с ".($iReturned - $iLow)." по ".($iReturned - $iHigh)." )</b>";
else $sPicker .= " <b>( строки с ".$iLow." по ".$iHigh." )</b>";
}
$sPicker .= "</div>";
}
else {
$sPicker = "";
$iLow = 1;
}
return array($sPicker, ($iLow - 1) );
}