Code: Alles auswählen
<?php
/**
  * $Revision: 1.12 $
  * $Source: D:/cvs/cvsrepo/test/PPI_Nade/module/pageTurning/output.php,v $
  * $Date: 2005/11/29 18:36:15 $
  */
/**
 * pageTurning
 * @author Andreas Kummer
 * @copyright Copyright © 2005 w3concepts AG
 */
if (!class_exists('pageTurning')) {
	
	class pageTurning {
		
		/**
		 * Konstruktor der Klasse.
		 * @param String  Ordnungsprinzip (sorted, alphabetical, created,
		 * modified).
		 * @param Boolean  True = ASC, False = DESC
		 */
		function pageTurning($sortCriteria, $asc = true) {
			
			global $client, $lang, $idcat, $cfg, $idart;
			
			$this->client = $client;
			$this->lang = $lang;
			$this->idcat = $idcat;
			$this->cfg = $cfg;
			$this->idart = $idart;
			
			$this->before('<div>');
			$this->after('</div>');
			$this->between(' | ');
			$this->first('');
			$this->last('');
			$this->aClass('');
			$this->aStyle('text-decoration:none;');
			$this->aStyleSelected('font-weight:bold;');
			$this->previousPage('<<<');
			$this->nextPage('>>>');
			
			$this->db = new DB_Contenido();
			
			$this->readArticles($sortCriteria, $asc);
		}
		
		/**
		 * Setzt den Text für den ersten Eintrag.
		 * @param String  Text für den ersten Eintrag.
		 */
		function first($text) {
			
			$this->first = $text;
		}
		
		/**
		 * Setzt den Text für den letzten Eintrag.
		 * @param String  Text für den letzten Eintrag.
		 */
		function last($text) {
			
			$this->last = $text;
		}
		
		/**
		 * Setzt den HTML-Code, der vor der Blätteranzeige ausgegeben wird.
		 * @param String  HTML-Code, der vor der Blätteranzeige ausgegen werden
		 * wird.
		 */
		function before($text) {
			
			$this->before = $text;
		}
		
		/**
		 * Setzt den HTML-Code, der nach der Blätteranzeige ausgegeben werden
		 * wird.
		 * @param String  HTML-Code, der nach der Blätteranzeige ausgegeben
		 * werden wird.
		 */
		function after($text) {
			
			$this->after = $text;
		}
		
		/**
		 * Setzt den Text, der zwischen zwei Seitenzahlen ausgegeben werden
		 * wird.
		 * @param String  Text, der zwischen zwei Seitenzahlen ausgegeben werden
		 * wird.
		 */
		function between($text) {
			
			$this->between = $text;
		}
		
		/**
		 * Setzt den Klassennamen, der für die Links zu verwenden ist.
		 * @param String  Klassenname, der den Links zuzuordnen ist.
		 */
		function aClass($name) {
			
			$this->aClass = $name;
		}
		
		function aStyle($style) {
			
			$this->aStyle = $style;
		}
		
		function aStyleSelected($style) {
			
			$this->aStyleSelected = $style;
		}
		
		function previousPage($text) {
			
			$this->previousPage = $text;
		}
		
		function nextPage($text) {
			
			$this->nextPage = $text;
		}
		
		/**
		 * Liest die Artikel der aktuellen Kategorie ein.
		 * @param String  Ordnungsprinzip.
		 * @param Boolean  True = aufsteigend, False = absteigend
		 */
		function readArticles($sortCriteria, $asc) {
			
			/*
			 * Ordnungsprinzip fest legen
			 */
			$order = ($asc) ? ('ASC') : ('DESC');
			
			/*
			 * Sortierkriterium fest legen
			 */
			switch ($sortCriteria) {
				case 'created':
					$sortOrder = 'b.created '.$order;
					break;
				case 'modified':
					$sortOrder = 'b.lastmodified '.$order;
					break;
				case 'sorted':
					$sortOrder = 'b.artsort '.$order.', b.title '.$order;
					break;
				case 'alphabetical':
					$sortOrder = 'b.title '.$order;
					break;
				default:
					$sortOrder = 'b.created '.$order;
			}
			
			/*
			 * Absetzen des Queries.
			 */
			$this->db->query("" .
					"SELECT " .
					"	b.idart " .
					"FROM {$this->cfg['tab']['cat_art']} as a " .
					"LEFT JOIN {$this->cfg['tab']['art_lang']} as b ON a.idart = b.idart " .
					"WHERE " .
					"	a.idcat = {$this->idcat} " .
					"	AND b.idlang = {$this->lang} " .
					"	AND b.online = 1 " .
					"ORDER BY " .
					"	$sortOrder " .
					"");
			
			while ($this->db->next_record()) {
				$this->articles[] = $this->db->f('idart');
			}
		}
		
		/**
		 * Gibt die Blätterleiste an die Standardausgabe aus.
		 */
		function show() {
			
			if (empty($this->articles) || count($this->articles) == 1) {
				return false;
			}
			
			/*
			 * Ermittlung der aktuellen Position
			 */
			$position = array_search ($this->idart,$this->articles);
			
			/*
			 * Ausgabe Previous
			 */
			if ($position > 0) {
				$previous = $position - 1;
				echo $this->before.'<a href="front_content.php?idcat='.$this->idcat.'&idart='.$this->articles[$previous].'&lang='.$this->lang.'&client='.$this->client.'" class="'.$this->aClass.'">'.$this->previousPage.'</a>'.$this->between;
			} else {
				echo $this->before;
			}
			
			if ($this->first != '') {
				/*
				 * Ausgabe Link auf die erste Seite
				 */
				echo '<a href="front_content.php?idcat='.$this->idcat.'&idart='.$this->articles[0].'&lang='.$this->lang.'&client='.$this->client.'" class="'.$this->aClass.'">'.$this->first.'</a>';
			}
			
			$startPosition = ($this->first != '') ? (1) : (0);
			$endPosition = ($this->last != '') ? (count($this->articles) - 1) : (count($this->articles));
			
			for ($i = $startPosition; $i < $endPosition; $i++) {
				$seite = $i + 1;
				if ($i > 0) {
					echo $this->between;
				}
				$style = ' style="'.$this->aStyle;
				if ($i == $position) {
					$style .= $this->aStyleSelected;
				}
				$style .= '"';
				echo '<a href="front_content.php?idcat='.$this->idcat.'&idart='.$this->articles[$i].'&lang='.$this->lang.'&client='.$this->client.'" class="'.$this->aClass.'"'.$style.'>'.$seite.'</a>';
			}
			
			if ($this->last != '') {
				/*
				 * Ausgabe Link auf die letzte Seite
				 */
				echo $this->between.'<a href="front_content.php?idcat='.$this->idcat.'&idart='.$this->articles[count($this->articles)-1].'&lang='.$this->lang.'&client='.$this->client.'" class="'.$this->aClass.'">'.$this->last.'</a>';
			}
			
			/*
			 * Ausgabe Next
			 */
			if ($position < count($this->articles) - 1) {
				$next = $position + 1;
				echo $this->between.'<a href="front_content.php?idcat='.$this->idcat.'&idart='.$this->articles[$next].'&lang='.$this->lang.'&client='.$this->client.'" class="'.$this->aClass.'">'.$this->nextPage.'</a>'.$this->after;
			} else {
				echo $this->after;
			}
		}
	}
}
// Klasseninstantiierung
$pageTurning = new pageTurning('created');
// Angabe der zu verwendenden A-Klasse (für die Links)
$pageTurning->aClass('');
// Styleangabe für alle Links
$pageTurning->aStyle('text-decoration:none;');
// Styleangabe für den aktuellen Artikel
$pageTurning->aStyleSelected('font-weight:bold;');
// Anzeige für vorige Seite
$pageTurning->previousPage('<<<');
// Anzeige nächste Seite
$pageTurning->nextPage('>>>');
// Alternativausgabe für die erste Seite (anstatt 1)
// $pageTurning->first('Erste Seite');
// Alternativausgabe für die letzte Seite
// $pageTurning->last('');
// Ausgabe vor der Blätterleiste
$pageTurning->before('<div>');
// Ausgabe zwischen zwei Seitenzahlen
$pageTurning->between(' | ');
// Ausgabe nach der Blätterleiste
$pageTurning->after('</div>');
// Ausgabe an den Browser
$pageTurning->show();
?>
gruss,
andreas