';
$halfPages = floor($numberOfPages / 2);
$range = array('start' => 1, 'end' => $totalPages);
$isEven = ($numberOfPages % 2 == 0);
$atRangeEnd = $totalPages - $halfPages;
if($isEven) $atRangeEnd++;
if($totalPages > $numberOfPages)
{
if($page <= $halfPages)
$range['end'] = $numberOfPages;
elseif ($page >= $atRangeEnd)
$range['start'] = $totalPages - $numberOfPages + 1;
else
{
$range['start'] = $page - $halfPages;
$range['end'] = $page + $halfPages;
if($isEven) $range['end']--;
}
}
if($page > 1)
echo '« ';
for ($i = $range['start']; $i <= $range['end']; $i++)
{
if($i == $page)
echo ''.$i.' ';
else
echo ''.$i.' ';
}
if ($page < $totalPages)
echo '» ';
?>