| 1009 | aurelien | 1 | <?php
 | 
        
           |  |  | 2 | Class Pagination extends aControleur {
 | 
        
           |  |  | 3 |   | 
        
           |  |  | 4 | 	private $depart = 0;
 | 
        
           |  |  | 5 | 	private $limite = 30;
 | 
        
           |  |  | 6 | 	private $total = 1;
 | 
        
           |  |  | 7 | 	private $taille_page = 25;
 | 
        
           |  |  | 8 |   | 
        
           |  |  | 9 | 	protected $urls = null;
 | 
        
           |  |  | 10 |   | 
        
           |  |  | 11 | 	public function Pagination() {
 | 
        
           |  |  | 12 | 		$this->initialiser();
 | 
        
           |  |  | 13 | 	}
 | 
        
           |  |  | 14 |   | 
        
           |  |  | 15 | 	 public function initialiser() {
 | 
        
           |  |  | 16 | 		$this->capturerParametres();
 | 
        
           |  |  | 17 | 		$this->conteneur = new Conteneur();
 | 
        
           |  |  | 18 | 		$this->urls = $this->conteneur->getAppUrls();
 | 
        
           |  |  | 19 | 	}
 | 
        
           |  |  | 20 |   | 
        
           |  |  | 21 | 	private function capturerParametres() {
 | 
        
           |  |  | 22 |   | 
        
           |  |  | 23 | 		if (isset($_GET['navigation_depart'])) {
 | 
        
           |  |  | 24 | 			$this->depart = $_GET['navigation_depart'];
 | 
        
           |  |  | 25 | 			unset($_GET['navigation_depart']);
 | 
        
           |  |  | 26 | 		}
 | 
        
           |  |  | 27 | 		if (isset($_GET['navigation_limite'])) {
 | 
        
           |  |  | 28 | 			$this->limite = $_GET['navigation_limite'];
 | 
        
           |  |  | 29 | 			unset($_GET['navigation_limite']);
 | 
        
           |  |  | 30 | 		}
 | 
        
           |  |  | 31 | 		$this->total = Registre::get('navigation.total');
 | 
        
           |  |  | 32 | 		if (isset($_GET['navigation_taille_page'])) {
 | 
        
           |  |  | 33 | 			$this->taille_page = $_GET['navigation_taille_page'];
 | 
        
           |  |  | 34 | 			unset($_GET['navigation_taille_page']);
 | 
        
           |  |  | 35 | 		}
 | 
        
           |  |  | 36 | 	}
 | 
        
           |  |  | 37 |   | 
        
           |  |  | 38 | 	public function getPagination() {
 | 
        
           |  |  | 39 | 		$donnees = array();
 | 
        
           |  |  | 40 |   | 
        
           |  |  | 41 | 		if ($this->depart == 0) {
 | 
        
           |  |  | 42 | 			$page_en_cours = 1;
 | 
        
           |  |  | 43 | 		} else if ($this->total != 0) {
 | 
        
           |  |  | 44 | 			$page_en_cours = floor(($this->depart + 1)/$this->limite + 1);
 | 
        
           |  |  | 45 | 		}
 | 
        
           |  |  | 46 |   | 
        
           |  |  | 47 | 		$pages_avant_apres = 7;
 | 
        
           |  |  | 48 | 		$pages_debut_intervalle = 0;
 | 
        
           |  |  | 49 | 		$nb_pages = 0;
 | 
        
           |  |  | 50 |   | 
        
           |  |  | 51 | 		if ($page_en_cours < $pages_avant_apres)  {
 | 
        
           |  |  | 52 | 			$pages_debut_intervalle = 1;
 | 
        
           |  |  | 53 | 		} else {
 | 
        
           |  |  | 54 | 			$pages_debut_intervalle = $page_en_cours - $pages_avant_apres + 2;
 | 
        
           |  |  | 55 | 		}
 | 
        
           |  |  | 56 | 		$pages_a_afficher = $this->taille_page;
 | 
        
           |  |  | 57 | 		$intervalle_max = (($page_en_cours) * $this->limite);
 | 
        
           |  |  | 58 |   | 
        
           |  |  | 59 | 		$donnees['url_base_pagination'] = '?'.http_build_query($_GET).'&navigation.limite='.$this->limite.'&navigation.depart=';
 | 
        
           |  |  | 60 |   | 
        
           |  |  | 61 | 		$nb_pages = ceil($this->total/$this->limite);
 | 
        
           |  |  | 62 |   | 
        
           |  |  | 63 | 		if ($page_en_cours == $nb_pages) {
 | 
        
           |  |  | 64 | 			$intervalle_max = $this->total;
 | 
        
           |  |  | 65 | 		}
 | 
        
           |  |  | 66 |   | 
        
           |  |  | 67 | 		$donnees['pages_taille_intervalle'] = $pages_avant_apres;
 | 
        
           |  |  | 68 | 		$donnees['pages_debut_intervalle'] = $pages_debut_intervalle;
 | 
        
           |  |  | 69 | 		$donnees['page_en_cours'] = $page_en_cours;
 | 
        
           |  |  | 70 | 		$donnees['intervalle_min'] = (($page_en_cours-1) * $this->limite);
 | 
        
           |  |  | 71 | 		$donnees['intervalle_max'] = $intervalle_max;
 | 
        
           |  |  | 72 | 		$donnees['nb_resultats'] = $this->total;
 | 
        
           |  |  | 73 | 		$donnees['nb_pages'] = $nb_pages;
 | 
        
           |  |  | 74 | 		$donnees['taille_page'] = $this->limite;
 | 
        
           |  |  | 75 |   | 
        
           |  |  | 76 | 		$vue = $this->getVue('/home/aurelien/web/eflore-consultation/modules/pagination/squelettes/pagination', $donnees);
 | 
        
           |  |  | 77 | 		return $vue;
 | 
        
           |  |  | 78 | 	}
 | 
        
           |  |  | 79 | }
 | 
        
           |  |  | 80 | ?>
 |