<?php
/*	
	Klasa do wyświetlania 'numerkow stron' stronnicowania
*/

class Lib_Page
{
	
	/*
		Limit wynikow wyswietlanych na stronie
	*/
    protected $_limit = 10;
	
	/*
		Limit 'numerkow stron' wyswietlanych na stronie
	*/
    protected $_limitpage = 10;
	
	/*
		Liczba wynikow danego zapytania
	*/
    protected $_max = null;
	
	/*
		Ktory 'numerek strony' jest aktualnie wyswietlany
	*/
    protected $_actualid = 0;
	
	/*
		Ktory kontroler
	*/
    protected $_controller = 'index';
	
	/*
		Ktora akcja
	*/
    protected $_action = 'index';
	
	/*
		Nazwa zmiennej 'ktora strona'
	*/
    protected $_prefix = 'id';
	
	/*
		Zmienna get
	*/
    protected $_getc = '?';
	
	/*
		komunikat
	*/	
	protected $_comunicate = null;
	
	// ------------------------------------------------------------------------------------------------------------------------------
	
	
	/*
		Ustaw limit wyswietlanych rekordow
	*/
    public function setLimit($limit)
    {
		$this->_limit = $limit;
	}
	
	/*
		Ustaw limit wyswietlanych 'numerkow stron'
	*/
    public function setLimitPage($limit)
    {
		$this->_limitpage = $limit;
	}
	
	/*
		Ustaw ilosc wynikow z zapytania 
	*/
    public function setMax($max)
    {
		$this->_max = $max;
	}
	
	/*
		Ustaw ktory numer strony jest aktualnie wyswietlany
	*/
    public function setActualId($actualid)
    {
		$this->_actualid = $actualid;
	}
	
	/*
		Ustaw ktory kontroler
	*/
    public function setController($v)
    {
		$this->_controller = $v;
	}
	
	/*
		Ustaw ktora akcja
	*/
    public function setAction($v)
    {
		$this->_action = $v;
	}
	
	/*
		Ustaw jaka nazwa zmiennej stron
	*/
    public function setPrefix($v)
    {
		$this->_prefix = $v;
	}
	
	/*
		Ustaw jaki get
	*/
    public function setGet($v)
    {
		$this->_getc = $v;
	}
	
	/*
		Ustaw jaki komunikat
	*/
    public function setCommunicate($v)
    {
		$this->_comunicate = $v;
	}
	
	/*
		Metoda zwracajaca wynik
	*/
    public function result()
    {
		$tab['controller'] = $this->_controller;
		$tab['action'] = $this->_action;
		$tab['prefix'] = $this->_prefix;
		$tab['actualid'] = $this->_actualid;
		$tab['getc'] = $this->_getc;
		$tab['max'] = $this->_max;
		$tab['comunicate'] = $this->_comunicate;
		
		$tab['previd'] = null;
		if( $tab['actualid'] > 1 ){
			$tab['previd'] = $tab['actualid'] - 1;
		}
		
		$tab['nextid'] = null;
		$max = ceil( $this->_max / $this->_limit );
		if( $this->_actualid != $max && $max > 1 ) $tab['nextid'] = $this->_actualid + 1;
		
		$tab['nid'] = null;
		if( $this->_actualid != $max && $max > 1 ) $tab['nid'] = $max;
		
		$tab['pid'] = null;
		if( $this->_actualid > 1 ) $tab['pid'] = 1;
		
		
		for( $i = 1; $i != $max + 1; $i++ ){
			$p[] = $i;
		}		
		
		$g_pocz = 1;	
		$g_kon = $max + 1;
		
		$g_p = ceil( $this->_limitpage/2 );
		$g_m = (int)( $this->_limitpage/2 );
		$g_pocz = $this->_actualid - $g_m;
		$g_kon = $this->_actualid + $g_p;
		
		$dod = 0;
		$war = 0;
		if( $g_pocz < 1 ){
			$g_kon = $g_kon - $g_pocz + 1;
			$g_pocz = 1;
			$war = 1;
		}
		
		if( $g_kon > $max + 1 ){
			if( $war==0 ) $g_pocz = $g_pocz - ($g_kon - $max - 1);
			$g_kon = $max + 1;
		}
		
		$tab['kprev'] = null;
		if( $g_pocz > 1 ) $tab['kprev'] = 1;
		
		$m = $max;
		for( $i = $g_pocz; $i != $g_kon; $i++ ){
			if( isset($p[$i-1]) ){
				$tab['number'][] = $p[$i-1];
				$m = $i;
			}
		}
		
		$tab['knext'] = null;
		if( $m < $max ) $tab['knext'] = 1;
		
		return $tab;
	}

}

