/** * return an array with all needed data to create the navigation * for changing pages by back/next or page-number. */ function get_gbNav($full=false) { // rückgabearray initialisieren. $ret = array(); // sicherstellen, dass es auch zahlen sind. $this->setvalue('start', (int)$this->getvalue('start')); $this->setvalue('limit', (int)$this->getvalue('limit')); $this->setvalue('posts', (int)$this->getvalue('posts')); // anzahl der seiten und aktuelle seite ermitteln $this->setvalue('allpages', ceil($this->getvalue('posts')/$this->getvalue('limit'))); $this->setvalue('actpage', ceil($this->getvalue('start')/$this->getvalue('limit')+1)); // back/next link errechnen $back = (($this->getvalue('start') - $this->getvalue('limit')) > -1 ) ? ($this->getvalue('start') - $this->getvalue('limit')) : ''; $next = (($this->getvalue('start') + $this->getvalue('limit')) < $this->getvalue('posts') ) ? ($this->getvalue('start') + $this->getvalue('limit')) : ''; // back-link $ret[] = array('text' => 'back', 'start' => $back); // wenn eine komplette darstellung incl. seitenzahlen gewüscht ist. switch ($this->getvalue('navtype')) { case 'comfort': $start = max(1, ($this->getvalue('actpage') - floor($this->getvalue('display')/2)) ); $start = min($start, ($this->getvalue('allpages') - $this->getvalue('display')+1) ); $start = ($start < 1) ? 1 : $start; $ende = min($start+$this->getvalue('display')-1, $this->getvalue('allpages') ); for ($i=$start;$i<=$ende;$i++) { $pagestart = ($i-1) * $this->getvalue('limit'); $ret[] = array( 'text' => $i, 'start' => (($pagestart!=$this->getvalue('start')) ? (int)$pagestart : (string)'') ); } break; case 'normal': for ($i=1;$i<=$this->getvalue('allpages');$i++) { $pagestart = ($i-1) * $this->getvalue('limit'); $ret[] = array( 'text' => $i, 'start' => (($pagestart!=$this->getvalue('start')) ? (int)$pagestart : (string)'') ); } break; default: } // next-link $ret[] = array('text' => 'next', 'start' => $next); if ($this->getvalue('navtype')=='comfort') { $ret[] = array( 'text' => 'last', 'start' => (($this->getvalue('actpage')!=$this->getvalue('allpages')) ? (int)($this->getvalue('allpages')*$this->getvalue('limit')-$this->getvalue('limit')) : (string)'') ); array_unshift($ret, array( 'text' => 'first', 'start' => (($this->getvalue('actpage')!=1) ? (int)0 : (string)'') )); } // rückgabe return $ret; }