/** * Paginator class * @author Patrik Bóna
* @version 0.1.0 */ class MyPaginator { /** * Total number of items * @var integer */ protected $TotalItemsCount; /** * Number of items displayed per page * @var integer */ protected $ItemsPerPage; /** * Number of currently displayed page * @var integer */ protected $CurrentPage; /** * Number of Index items in paginator: * example for IndexCount == 10 * Previous | 1 2 3 4 5 6 7 8 ... 18 | Next * 10 items + 2 for Previous and Next item * @var integer */ protected $IndexCount; /** * Total number of pages * @var integer */ protected $TotalPages; protected $Uri; /** * __construct() * @param integer $totalItemsCount * @param integer $itemsPerPage * @param integer $indexCount */ function __construct($totalItemsCount, $itemsPerPage, $indexCount = 10) { $this->CurrentPage = (int) array_key_exists('current_page', $_GET) ? $_GET['current_page'] : 0; $this->CurrentPage = $this->CurrentPage == 0 ? 1 : $this->CurrentPage; $this->TotalItemsCount = $totalItemsCount; $this->ItemsPerPage = $itemsPerPage; $this->TotalPages = ceil($this->TotalItemsCount / $this->ItemsPerPage); $this->IndexCount = $indexCount; $this->IndexCount = $this->IndexCount < $this->TotalPages ? $this->IndexCount : $this->TotalPages; } /** * PrintIndex() is used by {@link Render()} for generating links */ protected function PrintIndex($Page, $Text = null) { $Text = $Text == null ? (int) $Page : $Text; $Page = $Page <= 1 ? null : $Page; $Page = $Page > $this->TotalPages ? $this->TotalPages : $Page; $Page = $Page <= 1 ? null : $Page; $CurrentPage = $this->CurrentPage == 1 ? null : $this->CurrentPage; if($Page != $CurrentPage && $Page != null) { printf('%s ', $this->Uri, $Page, $Text); } else if($Page != $CurrentPage) { printf('%s ', $this->Uri, $Text); } else if(is_integer($Text)) { printf('%s ', $Text); } else { printf('%s ', $Text); } } /** * Render() is used to render paginator (output html) */ public function Render($cssClassName = null) { $cssClassName = $cssClassName == null ? 'paginator' : $cssClassName; printf('