Some maintenance is scheduled for today which requires LiveJournal to be down briefly. Please see this post for details.

Дон Карлос (kastaneda) wrote,

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. Для тех, кто в танке, поясняю. Этот кусок дерьма - пример кода, с которым мне приходится сейчас работать. По ссылке - код, с которым мне приходилось работать тогда (на другой фирме). И тот, и другой фрагменты кода написаны с примерно одинаковой целью; и то, и то я ПИЗДЕЦ КАК НЕ ОДОБРЯЮ.
Tags: webdev, wtf
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded  

  • 11 comments