| 0,0 → 1,125 |
| <?php |
| |
| // DirMetadata |
| // ----------- |
| // |
| // Modul zpracování popisného souboru pro popis obsahu adresáře/projektu |
| // |
| // (c)miho www.mlab.cz 2007, free software |
| // |
| // Formát souboru DIRINFO viz komentáře v souboru DIRINFO |
| // |
| |
| |
| //require_once('Common.php'); // Společné funkce |
| |
| |
| // Objekt pro zpracování informace o adresáři |
| class DirMetadata |
| { |
| public $DirData; // Sem se načtou data o adresáři v podobě klíč=>hodnota |
| private $Valid; // Zde je příznak platnosti |
| |
| function LoadDirInfo($FileName, $Lang) |
| // Funkce načte informace ze souboru $FileName do vlastní paměti |
| // Cesta je od DOCUMENT_ROOT. |
| // Funkce bere v potaz zadaný jazyk, pokud není pro daný jazyk |
| // informace dostupná, použije se infromace bez udaného jazyka. |
| // Pokud není k dispozici soubor, vrací false. |
| // Soubor může být prázdný a není to chyba. |
| { |
| // Zruš předchozí informaci |
| $this->Valid = FALSE; |
| $this->DirData = array(); |
| |
| // Jméno popisného souboru na cestě |
| $FileName = $_SERVER['DOCUMENT_ROOT'].$FileName; |
| |
| // Ověř existenci popisného souboru |
| if (!is_file($FileName)) |
| return FALSE; |
| |
| // Načti popisný soubor |
| $File = @file($FileName); |
| if ($File===FALSE) |
| return FALSE; |
| |
| // Vyhoď komentáře (po řádcích) |
| foreach($File as $Key => $Line) |
| if (substr(ltrim($Line), 0, 2) == '//') |
| unset($File[$Key]); |
| |
| // Sestav z pole jeden retězec |
| $File = implode($File); |
| |
| // Vyhledej v souboru informace |
| $PatternKey = '\[(?P<Key>[a-z,A-Z,0-9,\-\_\.]+)\]'; |
| $PatternKeyNext = '(?=\[(?:[a-z,A-Z,0-9,\-\_\.]+)\])'; |
| $PatternValue = '(?P<Value>.*?)'; |
| $Pattern = '/'.$PatternKey.'\s*'.$PatternValue.'\s*'.$PatternKeyNext.'/su'; |
| preg_match_all($Pattern, $File, $Temp); |
| |
| // Sestav pole dat |
| $Data = array(); |
| foreach($Temp['Key'] as $Key => $KeyName) |
| { |
| $Data[$KeyName] = trim(htmlspecialchars($Temp['Value'][$Key], ENT_NOQUOTES)); |
| //echo '{'.$KeyName.'->'.$Data[$KeyName].'<-}'."\n"; |
| } |
| unset($Temp); |
| |
| // Aplikuj jazyk |
| // Priorita je "uvedený jazyk"/"bez jazyka" |
| foreach($Data as $Key => $Value) // projdi vše |
| { |
| $Temp = explode('.', $Key, 2); // základní část klíče |
| if (isset($Temp[1])) // existuje přípona |
| { |
| if ($Temp[1] == $Lang) // přípona |
| $Data[$Temp[0]] = $Value; // zkopíruj jazykovou hodnotu |
| unset($Data[$Key]); // klíč s příponou vyhoď |
| } |
| } |
| |
| // Uschovej si získaná data |
| $this->Valid = TRUE; |
| $this->DirData = $Data; |
| |
| // Soubor byl nalezen a načten |
| return TRUE; |
| } |
| |
| |
| function GetVariable($Key) |
| // Vrací řetězec s informaci podle klíče |
| // Když data nejsou, vrací prázdný řetězec |
| // Klíčem je jméno informace ze souboru DIRINFO bez jazykové přípony |
| { |
| // Test na přítomnost informace |
| if (isset($this->DirData[$Key])) |
| return $this->DirData[$Key]; |
| else |
| return ''; |
| } |
| |
| function GetString($VarName, $Wrap=0) |
| // Vrátí parametr jako jeden řetězec s redukovanými bílými znaky |
| // Volitelně vloží odřádkování do delších řetězců |
| { |
| $Temp = $this->GetVariable($VarName); |
| $Temp = preg_replace('/\s+/su', ' ', $Temp); |
| if ($Wrap!=0) |
| wordwrap($Temp, $Wrap); |
| return $Temp; |
| } |
| |
| // function GetList |
| |
| function GetValid() |
| // Vrátí TRUE pokud je načtená informace o adresáři |
| { |
| return $this->Valid; |
| } |
| |
| } |
| ?> |