ACC SHELL

Path : /srv/www/vhosts/marevva/nadacekrizovatka/
File Upload :
Current File : /srv/www/vhosts/marevva/nadacekrizovatka/class.paginator.php

<?php

class Paginator

{

	private $currentPage;

	private $currentPageQueryString;

	private $itemsPerPage;

	private $itemsCount;

	private $pageURL;

	private $pageURLparameter;

		

	public function __construct( $currentPage, $itemsPerPage, $itemsCount, $pageURL, $pageURLparameter = 'page' )

	{

		$this->currentPage = $currentPage;

		

		$this->currentPageQueryString = '';

		$pos = strpos( $pageURL, '?' );

		if ( !( $pos === false ) ) 

			$this->currentPageQueryString = substr( $pageURL, $pos + 1 );

		

		$this->itemsPerPage = $itemsPerPage;

		$this->itemsCount = $itemsCount;

		$this->pageURL = $pageURL;

		$this->pageURLparameter = $pageURLparameter;

	}

	

	// return: array( 'start' => .., 'end' => .. )

	public function getItemsRangeForCurrentPage()

	{

		$start = $this->currentPage * $this->itemsPerPage;

		

		$end = $start + $this->itemsPerPage;

		if ( $end > $this->itemsCount )

			$end = $this->itemsCount;

			

		$range = array();

		$range['start'] = $start;

		$range['end'] = $end;

		

		return $range;

	}

	

	// return: array( 'pages' => '', 'firstPage' => .., 'prevPage' => .., 'nextPage' => .., 'lastPage' => .. )

	public function getPages( $reverse = false )

	{

		$pages = '';

		$firstPage = '';  $prevPage = '';

		$nextPage = '';  $lastPage = '';

		

		$maxPages = ceil( $this->itemsCount / $this->itemsPerPage );

		

		for ( $i = 1; $i <= $maxPages; $i++ )

		{
			if ( $this->pageURL == '' )
			{
				$pageHref = $_SERVER['REQUEST_URI'];
			}
			else
			{
				$pageURLexploded = explode( '?', $this->pageURL );
				if ( isset( $pageURLexploded[0] ) )
					$pageHref = $pageURLexploded[0];
			}

			

			if ( ( $i > 1 ) /*&& ( $this->currentPageQueryString != '' )*/ )

			{

				if ( $this->currentPageQueryString == '' )

				{

					$pageHref .= '?' . $this->pageURLparameter . '=' . $i;

				}

				else

				{

					$params = explode( '&', $this->currentPageQueryString );

					$pageHref = '?';

					foreach ( $params as $param )

					{

						$pos = strpos( $param, $this->pageURLparameter . '=' );

						if ( $pos === false )

							$pageHref .= $param . '&';

					}

					$pageHref .= $this->pageURLparameter . '=' . $i;

				}

			}
			else
			{
				//$pageHref = 'abc';
			}

			

			// first page

			if ( ( $i == 1 ) && ( $i != $this->currentPage + 1 ) )

				$firstPage = '<div class="numberbutton"><a href="' . $pageHref . '"> &lt;&lt; </a></div>';

			// previous page

			if ( ( $this->currentPage + 1 ) == ( $i + 1 ) )

				$prevPage = '<div class="numberbutton"><a href="' . $pageHref . '"> &lt; </a></div>';

			

			// current page

			if ( ( $this->currentPage + 1 ) == $i )

			{

				if ( $reverse )

					$pages = '<div class="numberbutton" style="font-weight:bold;"><a href="' . $pageHref . '">  <span class="numberbutton-selected">' . $i. '</span> </a></div>'. $pages;

				else

					$pages .= '<div class="numberbutton" style="font-weight:bold;"><a href="' . $pageHref . '">  <span class="numberbutton-selected">' . $i. '</span> </a></div>';

			}

			// other pages

			else

			{

				if ( $reverse )

					$pages = '<div class="numberbutton"><a href="' . $pageHref . '"> ' . $i. ' </a></div>' . $pages;

				else

					$pages .= '<div class="numberbutton"><a href="' . $pageHref . '"> ' . $i. ' </a></div>';

			}

			

			// last page

			if ( ( $i == $maxPages ) && ( $i != $this->currentPage + 1 ) )

				$lastPage = '<div class="numberbutton"><a href="' . $pageHref . '"> &gt;&gt; </a></div>';

			// next page

			if ( ( $this->currentPage + 1 ) == ( $i - 1 ) )

				$nextPage = '<div class="numberbutton"><a href="' . $pageHref . '"> &gt; </a></div>';

				

			// separator

			//if ( $i < $maxPages )

			//	$pages .= ' | ';				

		}

		

		$paginator = array();

		

		$paginator['pages'] = $pages;

		if ( $reverse )

		{

			$paginator['firstPage'] = $lastPage;

			$paginator['prevPage'] = $nextPage;

			$paginator['nextPage'] = $prevPage;

			$paginator['lastPage'] = $firstPage;

		}

		else

		{

			$paginator['firstPage'] = $firstPage;

			$paginator['prevPage'] = $prevPage;

			$paginator['nextPage'] = $nextPage;

			$paginator['lastPage'] = $lastPage;

		}

		

		return $paginator;

	}

	

}



?>

ACC SHELL 2018