¬ródła

<? 

 
/* Delta Playground, (c) Maciej Łebkowski 2005                              */
 /* kArty, system templejtów                                                 */
 /* http://delta.lebkowski.info/karty                                        */
 /* &delta:info; kArty 0.6 SRC:1 CSS:mod PHP:yes SQL:mod JS:no AJAX:no       */
 
 /*
    &zmienna; - $szablon[zmienna] $->PodaDane();
    <zmienna_block></zmienna_block> - foreach ($zmienna)
    &zmi:key; - $dane[zmi][key]; $->PodajDane();
    &karta:sz; -> $szablon[sz] -> $->Parsuj(sz);
    &delta:sz; -> LadujSzablon( sz, delta(sz) ); -> Parsuj(sz);
    
    + 06.11.05: dodane parsowanie zagnieżdżonych bloków.     + 04.11.06: karty->generuj();
 */
  
  
class karty {
    function 
karty($nazwa_globalna=''){
        global 
$engine;
        
$this->nazwa $nazwa_globalna;
        
$this->LadujDane'login'$engine->login );
        
$engine->login false $this->LadujDane'reklamy''true' );
    }
    function 
LadujSzablon($nazwa,$szablon){
        
$this->szablon[$nazwa] = $szablon
    }
    
    function 
PodajSzablon$nazwa ){
        return 
$this->szablon[$nazwa];
    }
    
    function 
LadujDane$nazwa$dane ){
        if(!
is_array$nazwa ) )
            
$this->dane[$nazwa] = $dane;
        else foreach (
$nazwa as $k=>$v )
            
$this->dane[$k] = $v;
    }
    function 
DodajDane$dane ){
        
$this->dane array_merge_recursive$this->dane$dane );
    }
    
    function 
PodajDane$nazwa ){
        return 
$this->dane[$nazwa];
    }     function 
Generuj$nazwa ){         $this->LadujDane$nazwa$this->Parsuj$nazwa ) );     }

    function 
rozwin_blok$dane$szablon ){
        while( 
preg_match'/\<([a-z0-9_-]+)_block\>(.*)\<\/\1_block\>/isU',
        
$szablon$blok ) ){
        
$dane_bloku = empty($this->nazwa)
            ? 
$dane[$blok[1]]
            : 
$dane[$this->nazwa][$blok[1]];
        
        
$bloki '';
        if( 
is_array$dane_bloku ) ) foreach( $dane_bloku as $element ) {
            
$dodaj_blok = new karty($blok[1]);
            
$dodaj_blok->LadujDane$blok[1], $element );
            
$dodaj_blok->LadujSzablon$blok[1], $blok[2] );
            
$bloki .= $dodaj_blok->Parsuj$blok[1] );
        } else {
            
$bloki = empty( $dane_bloku )
                ? 
''
                
str_replace'&'.$dane_bloku.';'$dane_bloku$blok[2] );
        }

        
$szablon preg_replace'/\<'.$blok[1].'_block\>.*\<\/'.$blok[1]
            .
'_block\>/isU'$bloki$szablon);
        }
        return 
$szablon;
    }
    
    function 
Parsuj($szablon){
        global 
$engine;
        
$szablon $this->PodajSzablon$szablon );
        
$szablon $this->rozwin_blok$this->dane$szablon );
        
        while( 
preg_match'/&(delta|karty):([a-z0-9_-]+);/i'$szablon$blok ) ){
            if( 
strtolower$blok[1] ) == 'delta' )
                
$this->LadujSzablon$blok[2], $engine->delta($blok[2]) );
            
$szablon str_replace$blok[0], $this->Parsuj$blok[2] ), $szablon );
        }
        
        
$dane_bloku = empty( $this->nazwa ) ? $this->dane $this->dane[$this->nazwa];
        foreach( 
$dane_bloku as $nazwa => $dane )
            if( !
is_array$dane ) ){
            
$nazwa $this->nazwa $this->nazwa .':'.$nazwa $nazwa;
            
$szablon preg_replace'/'.preg_quote('&'.$nazwa.';','/').'/i'
                
$dane$szablon );
            }
        return 
$szablon;
    }
  }
  
?>
playground maciej łebkowski