<?php
 
include 'config.php';
 
include 'A/Paginator/Collection.php'; 
include 'A/Pager.php'; 
include 'A/Pager/Array.php';
 
include 'A/Template/Include.php';        // same as A/Sandbox/Template.php 
 
// converted class to use the A_Pager methods
 
class PagerHelper    {
 
 
function __construct ($paginator, $template, $size)    {
 
    $this->paginator = $paginator;
 
    $this->template = $template;
 
    $this->size = $size;
 
}
 
 
function first()    {
 
#    if ($this->paginator->previous ($this->size) && $this->paginator->previous ($this->size) > $this->paginator->first()) return $this->paginator->first();
 
    if (($this->paginator->getCurrentPage() - $this->size) > $this->paginator->getFirstPage()) {
 
        return $this->paginator->getFirstPage();
 
    } else {
 
        return '';
 
    }
 
}
 
 
function last()    {
 
#    if ($this->paginator->last() && $this->paginator->next ($this->size) && ($this->paginator->next ($this->size) < $this->paginator->last())) return $this->paginator->last();
 
    if (($this->paginator->getLastPage() && ($this->paginator->getCurrentPage() + $this->size) < $this->paginator->getLastPage())) {
 
        return $this->paginator->getLastPage();
 
    } else {
 
        return '';
 
    }
 
}
 
 
function previous()    {
 
    return ($this->paginator->getPrevPage() > $this->paginator->getFirstPage()) ? $this->paginator->getPrevPage() : '';
 
}
 
 
function next()    {
 
    return ($this->paginator->getNextPage() < $this->paginator->getLastPage()) ? $this->paginator->getNextPage() : '';
 
}
 
 
function page()    {
 
    return $this->paginator->getCurrentPage();
 
}
 
 
function before()    {
 
    $before = new Collection();
 
    if ($this->paginator->getCurrentPage()-5 > $this->paginator->getFirstPage()) {
 
        $before->add(-$this->size + 1, $this->paginator->getPrevPage(5));
 
    }
 
    $first = $this->paginator->getFirstPage();
 
    if ($this->paginator->getCurrentPage() > $first) {
 
        for ($a = $this->size; $a >= 1; $a--):
 
            $before->add($a, $this->paginator->getPrevPage($a));
 
            if ($this->paginator->getPrevPage($a) == $first) {
 
                break;
 
            }
 
        endfor;
 
    }
 
    return $before;
 
}
 
 
function after()    {
 
    $after = new Collection();
 
    $last = $this->paginator->getLastPage();
 
    if ($this->paginator->getCurrentPage() < $last) {
 
        for ($a = 1; $a <= $this->size; $a++):
 
            $after->add($a, $this->paginator->getNextPage($a));
 
            if ($this->paginator->getNextPage($a) == $last) {
 
                break;
 
            }
 
        endfor;
 
    }
 
    if ($this->paginator->getCurrentPage()+5 < $this->paginator->getLastPage()) {
 
        $after->add ($this->size + 1, $this->paginator->getNextPage(5));
 
    }
 
    return $after;
 
}
 
 
function render()    {
 
    $this->template->set('paginator', $this->paginator);
 
    $this->template->set('previous', $this->previous());
 
    $this->template->set('next', $this->next());
 
    $this->template->set('first', $this->first());
 
    $this->template->set('last', $this->last());
 
    $this->template->set('page', $this->page());
 
    $this->template->set('before', $this->before());
 
    $this->template->set('after', $this->after());
 
    return $this->template->render();
 
}
 
 
}
 
 
$collection = new Collection(); 
$collection->add ('one', 'uno'); 
$collection->add ('two', 'dos'); 
$collection->add ('three', 'tres'); 
$collection->add ('four', 'cuatro'); 
$collection->add ('five', 'cinco'); 
$collection->add ('six', 'seis'); 
$collection->add ('seven', 'siete'); 
$collection->add ('eight', 'ocho'); 
$collection->add ('nine', 'nueve'); 
$collection->add ('ten', 'diez'); 
$collection->add ('eleven', 'once'); 
$collection->add ('twelve', 'doce'); 
$collection->add ('thirteen', 'trece'); 
$collection->add ('fourteen', 'catorce'); 
$collection->add ('fifteen', 'quince'); 
$collection->add ('sixteen', 'diez y seis'); 
$collection->add ('seventeen', 'diez y siete'); 
$collection->add ('eighteen', 'diez y ocho'); 
$collection->add ('ninetten', 'diez y nueve'); 
$collection->add ('twenty', 'viente'); 
$collection->add ('twenty one', 'viente uno'); 
$collection->add ('twenty two', 'viente dos'); 
$collection->add ('twenty three', 'viente tres'); 
$collection->add ('twenty four', 'viente cuatro'); 
$collection->add ('twenty five', 'viente cinco'); 
$collection->add ('twenty six', 'viente seis'); 
$collection->add ('twenty seven', 'viente siete'); 
$collection->add ('twenty eight', 'viente ocho'); 
$collection->add ('twenty nine', 'viente nueve'); 
$collection->add ('thirty', 'treinte'); 
 
$datasource = new A_Pager_Array($collection->toArray());    // temporary hack until pager supports Collections
 
 
$pager = new A_Pager($datasource); 
$pager->setPageSize(3);
 
 
// create a request processor to set pager from GET parameters
 
$request = new A_Pager_Request($pager);
 
$request->process();
 
 
$template = new A_Template_Include('templates/standard_pagination.tpl'); 
 
// create a HTML writer to output
 
#$helper = new A_Pager_HTMLWriter($pager);
 
 
// get rows of data
 
$start_row = $pager->getStartRow();
 
$end_row = $pager->getEndRow();
 
$rows = $datasource->getRows($start_row, $end_row);
 
 
$helper = new PagerHelper ($pager, $template, 2); 
 
?> 
 
<p><?php echo $helper->render(); ?></p> 
<?php foreach ($rows as $key => $value): ?> 
<strong><?php echo $key; ?>:</strong> <?php echo $value ?><br /> 
<?php endforeach; ?> 
<p><?php echo $helper->render(); ?></p>
 
 |