di geschichte mit der teilung ist doch ne gröbere sache
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.lastmodified '.$order;
         }
         /*
          * Absetzen des Queries.
          */
         $this->db->query("" .
               "SELECT " .
               "   b.idart " .
               "FROM {$this->cfg['tab']['cat_art']} as a, " .
               "{$this->cfg['tab']['cat_lang']} as c " .
               "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 " .
               "   AND a.idcat = c.idcat " .
               "   AND b.idartlang != c.startidartlang " .
               "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);
         $startPosition = ($this->first != '') ? (1) : (0);
         $endPosition = ($this->last != '') ? (count($this->articles) - 1) : (count($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>   ';
         } 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>';
         }
         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 '   <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:underline;');
// Styleangabe für den aktuellen Artikel
$pageTurning->aStyleSelected('font-weight:bold; color:red;');
// Anzeige für vorige Seite
$pageTurning->previousPage('<<< ');
// Anzeige nächste Seite
$pageTurning->nextPage(' >>>');
// Alternativausgabe für die erste Seite (anstatt 1)
$pageTurning->first(' FirstPage   ');
// Alternativausgabe für die letzte Seite
$pageTurning->last('   LastPage ');
// Ausgabe vor der Blätterleiste
$pageTurning->before('<div width="559px" align="center" style="padding:20px;">');
// Ausgabe zwischen zwei Seitenzahlen
$pageTurning->between(' ');
// Ausgabe nach der Blätterleiste
$pageTurning->after('</div>');
// Ausgabe an den Browser
$pageTurning->show();
?>