function buildPagerXml(&$xmlWriter, $page, $itemsCount, $itemsPerPage, $pagesPerPager) {
$pageCount = floor( ($itemsCount - 1) / $itemsPerPage + 1);
$startItem = $itemsPerPage * ($page - 1) + 1;
$endItem = $itemsPerPage * $page;
if ($endItem > $itemsCount)
$endItem = $itemsCount;
$xmlWriter->WriteStartElement("pager");
$xmlWriter->WriteElementString("items-per-page", $itemsPerPage);
$xmlWriter->WriteElementString("page-count", $pageCount);
$xmlWriter->WriteElementString("current-page", $page);
$xmlWriter->WriteElementString("start-item", $startItem);
$xmlWriter->WriteElementString("end-item", $endItem);
$xmlWriter->WriteStartElement("first-page");
if ($page == 1)
$xmlWriter->WriteAttributeString("current", "");
$xmlWriter->WriteString("1");
$xmlWriter->WriteEndElement();
$xmlWriter->WriteStartElement("previous-page");
if ($page == 1)
$xmlWriter->WriteAttributeString("current", "");
$xmlWriter->WriteString($page - ($page == 1 ? 0 : 1));
$xmlWriter->WriteEndElement();
$xmlWriter->WriteStartElement("next-page");
if ($page == $pageCount)
$xmlWriter->WriteAttributeString("current", "");
$xmlWriter->WriteString($page + ($page == $pageCount ? 0 : 1));
$xmlWriter->WriteEndElement();
$xmlWriter->WriteStartElement("last-page");
if ($page == $pageCount)
$xmlWriter->WriteAttributeString("current", "");
$xmlWriter->WriteString($pageCount);
$xmlWriter->WriteEndElement();
if ($pagesPerPager < $pageCount) {
$startPage = $page - (int) ($pagesPerPager / 2);
if ($startPage < 1)
$startPage = 1;
if ($page + (int) ($pagesPerPager / 2) > $pageCount)
$startPage = $startPage - ($page + (int) (($pagesPerPager) / 2) - $pageCount) + ($pagesPerPager % 2 == 1 ? 0 : 1);
if ($startPage > 1)
$xmlWriter->WriteElementString("previous-pager-page",
$startPage - 1);
if ($startPage + $pagesPerPager < $pageCount)
$xmlWriter->WriteElementString("next-pager-page",
$startPage + $pagesPerPager);
for ($i = $startPage; $i < $startPage + $pagesPerPager; $i++) {
$xmlWriter->WriteStartElement("page-link");
if ($i == $page)
$xmlWriter->WriteAttributeString("active", "");
$xmlWriter->WriteString($i);
$xmlWriter->WriteEndElement();
}
}
else
for ($i = 1; $i <= $pageCount; $i++) {
$xmlWriter->WriteStartElement("page-link");
if ($i == $page)
$xmlWriter->WriteAttributeString("active", "");
$xmlWriter->WriteString($i);
$xmlWriter->WriteEndElement();
}
$xmlWriter->WriteEndElement();
}
Почуствуйте разницу.
Update. Для тех, кто в танке, поясняю. Этот кусок дерьма - пример кода, с которым мне приходится сейчас работать. По ссылке - код, с которым мне приходилось работать тогда (на другой фирме). И тот, и другой фрагменты кода написаны с примерно одинаковой целью; и то, и то я ПИЗДЕЦ КАК НЕ ОДОБРЯЮ.