code.fastix.org

Dateiansicht:

Datei:Projekte -> PHP:Insite-Navigation-Generator -> insiteNavGenerator.php
md5:8c0d3f5959bb69530bfb8b8673b2c572
sha1:a8d9b468af632e7fdf32d4cc1f9d50ae3319b900
  1. <?php
  2.  
  3. class insiteNavGenerator {
  4.  
  5.         private $subject          = false;
  6.         private $output           = false;
  7.         private $menue            = false;
  8.         private $insertNavMenue   = false;
  9.         private $navID            = false;
  10.         private $navClass         = false;
  11.         private $insertNavBefore  = false;
  12.         private $insertNavAfter   = false;
  13.        
  14.         private $pattern          = '/(<[hH][1-6])(.*)(>.*)(<\/[hH][1-6]>)/';
  15.         private $idFormat                 = '_%06d';
  16.         private $i                = 0;
  17.         private $navStart         = '';
  18.         private $navEnd           = '';
  19.        
  20.  
  21.         function __construct ( $subject, $idFormat='_%03d', $insertNavMenue=false, $insertNavAfter=false, $insertNavBefore=false, $navID=false, $navClass=false ) {
  22.                
  23.                 if ( $subject ) {
  24.                         $this -> subject = $subject;
  25.                 } else {
  26.                         return false;
  27.                 }
  28.                
  29.                 if ( $idFormat && 'default' != $idFormat ) {
  30.                         $this -> idFormat = $idFormat;
  31.                 }
  32.                
  33.                 if ( $insertNavAfter )   {
  34.                         if ( ! $insertNavMenue )  {
  35.                                 $this -> insertNavMenue = false;
  36.                                 trigger_error( '$insertNavAfter wurde ignoriert, weil Navigation-Tag nicht eingefügt werden soll.', E_USER_Notice );
  37.                         }
  38.                         if ( $insertNavBefore )  {
  39.                                 trigger_error( 'insertNavAfter und insertNavBefore können nicht gleichzeitig gesetzt werden.', E_USER_ERROR );
  40.                         }
  41.                         if ( false === strpos ($subject, $insertNavAfter ) ) {
  42.                                 trigger_error( '$insertNavAfter wurde in $subjekt nicht gefunden.', E_USER_ERROR );                                    
  43.                         }
  44.                         $this -> insertNavAfter = $insertNavAfter;
  45.                         if ( $insertNavMenue ) $this -> insertNavMenue = true;
  46.                 }
  47.                
  48.                
  49.                 if ( $insertNavBefore )   {
  50.                         if ( ! $insertNavMenue )  {
  51.                                 $this -> insertNavMenue = false;
  52.                                 trigger_error( '$insertNavAfter wurde ignoriert, weil Navigation-Tag nicht eingefügt werden soll.', E_USER_NOTICE );
  53.                         }
  54.                         if ( $insertNavAfter )  {
  55.                                 trigger_error( 'insertNavAfter und insertNavBefore können nicht gleichzeitig gesetzt werden.', E_USER_ERROR );
  56.                         }
  57.                         if ( false === strpos ($subject, $insertNavBefore ) ) {
  58.                                 trigger_error( '$insertNavAfter wurde in $subjekt nicht gefunden.', E_USER_ERROR );                                    
  59.                         }
  60.                         $this -> insertNavBefore = $insertNavBefore;
  61.                         if ( $insertNavMenue ) $this -> insertNavMenue = true;
  62.                 }
  63.                
  64.                 if ( $subject ) {
  65.                         $this -> subject = $subject;
  66.                 }
  67.                
  68.                 if ( $this -> insertNavMenue ) {
  69.                
  70.                         if ( $navClass ) {
  71.                                 $classStr = ' class="' . $navClass . '"';
  72.                         } else {
  73.                                 $classStr = '';
  74.                         }
  75.                        
  76.                         if ( $navID ) {
  77.                                 $idStr    = ' id="' .    $navID . '"';
  78.                         } else {
  79.                                 $idStr    = '';
  80.                         }
  81.                        
  82.                         $this -> navStart = "\n<nav" . $idStr . $classStr . ">\n\t<ul>\n";
  83.                         $this -> navEnd = "\t</ul>\n<nav>\n";
  84.                 } else {
  85.                         $this -> navStart = "\n<ul>\n";
  86.                         $this -> navEnd = "</ul>";                             
  87.                 }
  88.                
  89.                 $this -> output  = preg_replace_callback ( $this-> pattern , 'insiteNavGenerator::replFunkt' , $this-> subject , -1 , $count );
  90.                 $this -> menue  = $this -> navStart . $this -> menue . $this -> navEnd . "\n";
  91.                
  92.                 if ( $this ->  insertNavBefore ) {
  93.                         $this -> output = str_replace ( $this ->  insertNavBefore, $this -> menue . $this -> insertNavBefore,  $this -> output );
  94.                 } else if ( $this ->  insertNavAfter ) {
  95.                         $this -> output = str_replace ( $this ->  insertNavAfter,  $this ->  insertNavAfter . $this -> menue,  $this -> output );                      
  96.                 }
  97.                
  98.         }
  99.  
  100.         function replFunkt($ar) {
  101.                 #print_r($ar);
  102.                 $this -> i++;
  103.                 $this -> menue .= "\t\t" . '<li><a href="#'. sprintf( $this -> idFormat , $this -> i ) . '"' . strip_tags( $ar[3] ) . '</a></li>' . "\n";
  104.                 return $ar[1] . ' id="' . sprintf( $this -> idFormat , $this -> i ) . '"' . $ar[2] . $ar[3] . $ar[4];
  105.         }      
  106.  
  107.         function getMenue() {
  108.                 return $this -> menue;
  109.         }
  110.        
  111.         function getOutput() {
  112.                 return $this -> output;
  113.         }
  114.        
  115. }