{HEADER END}
{BLAME START}

MLAB

[/] [Server/] [GenIndex/] [DirMetadata.php] -

Blame information for rev 944

Číslo řádky Revize Autor Line
1 944 miho <?php
2 944 miho
3 944 miho //  DirMetadata
4 944 miho //  -----------
5 944 miho //
6 944 miho // Modul zpracování popisného souboru pro popis obsahu adresáře/projektu
7 944 miho //
8 944 miho // (c)miho www.mlab.cz 2007, free software
9 944 miho //
10 944 miho // Formát souboru DIRINFO viz komentáře v souboru DIRINFO
11 944 miho //
12 944 miho
13 944 miho
14 944 miho //require_once('Common.php');           // Společné funkce
15 944 miho
16 944 miho
17 944 miho // Objekt pro zpracování informace o adresáři
18 944 miho class DirMetadata
19 944 miho {
20 944 miho   public $DirData;    // Sem se načtou data o adresáři v podobě klíč=>hodnota
21 944 miho   private $Valid;     // Zde je příznak platnosti
22 944 miho
23 944 miho   function LoadDirInfo($FileName$Lang)
24 944 miho   // Funkce načte informacime ze souboru $FileName do vlastní paměti
25 944 miho   // Cesta je od DOCUMENT_ROOT.
26 944 miho   // Funkce bere v potaz zadaný jazyk, pokud není pro daný jazyk
27 944 miho   // informace dostupná, použije se infromace bez udaného jazyka.
28 944 miho   // Pokud není k dispozici soubor, vrací false.
29 944 miho   // Soubor může být prázdný a není to chyba.
30 944 miho   {
31 944 miho     // Zruš předchozí informaci
32 944 miho     $this->Valid FALSE;
33 944 miho     $this->DirData = array();
34 944 miho
35 944 miho     // Jméno popisného souboru na cestě
36 944 miho     $FileName $_SERVER['DOCUMENT_ROOT'].$FileName;
37 944 miho
38 944 miho     // Ověř existenci popisného souboru
39 944 miho     if (!is_file($FileName))
40 944 miho       return FALSE;
41 944 miho     
42 944 miho     // Načti popisný soubor
43 944 miho     $File = @file($FileName);
44 944 miho     if ($File===FALSE)
45 944 miho         return FALSE;
46 944 miho
47 944 miho     // Vyhoď komentáře (po řádcích)
48 944 miho     foreach($File as $Key => $Line)
49 944 miho       if (substr(ltrim($Line), 02) == '//')
50 944 miho         unset($File[$Key]);
51 944 miho
52 944 miho     // Sestav z pole jeden retězec
53 944 miho     $File implode($File);
54 944 miho
55 944 miho     // Vyhledej v souboru informace
56 944 miho     $PatternKey     '\[(?P<Key>[a-z,A-Z,0-9,\-\_\.]+)\]';
57 944 miho     $PatternKeyNext =   '(?=\[(?:[a-z,A-Z,0-9,\-\_\.]+)\])';
58 944 miho     $PatternValue   '(?P<Value>.*?)';
59 944 miho     $Pattern    '/'.$PatternKey.'\s*'.$PatternValue.'\s*'.$PatternKeyNext.'/su';
60 944 miho     preg_match_all($Pattern$File$Temp);
61 944 miho
62 944 miho     // Sestav pole dat
63 944 miho     $Data = array();
64 944 miho     foreach($Temp['Key'] as $Key => $KeyName)
65 944 miho     {
66 944 miho       $Data[$KeyName] = trim(htmlspecialchars($Temp['Value'][$Key], ENT_NOQUOTES));
67 944 miho       //echo '{'.$KeyName.'->'.$Data[$KeyName].'<-}'."\n";
68 944 miho     }
69 944 miho     unset($Temp);
70 944 miho
71 944 miho     // Aplikuj jazyk
72 944 miho     // Priorita je "uvedený jazyk"/"bez jazyka"
73 944 miho     foreach($Data as $Key => $Value)    // projdi vše
74 944 miho     {
75 944 miho       $Temp explode('.'$Key2);    // základní část klíče
76 944 miho       if (isset($Temp[1]))              // existuje přípona
77 944 miho       {
78 944 miho         if ($Temp[1] == $Lang)          // přípona
79 944 miho           $Data[$Temp[0]] = $Value;     // zkopíruj jazykovou hodnotu
80 944 miho         unset($Data[$Key]);             // klíč s příponou vyhoď
81 944 miho       }
82 944 miho     }
83 944 miho
84 944 miho     // Uschovej si získaná data
85 944 miho     $this->Valid TRUE;
86 944 miho     $this->DirData $Data;
87 944 miho
88 944 miho     // Soubor byl nalezen a načten
89 944 miho     return TRUE;
90 944 miho   }
91 944 miho
92 944 miho
93 944 miho   function GetVariable($Key)
94 944 miho   // Vrací řetězec s informaci podle klíče
95 944 miho   // Když data nejsou, vrací prázdný řetězec
96 944 miho   // Klíčem je jméno informace ze souboru DIRINFO bez jazykové přípony
97 944 miho   {
98 944 miho     // Test na přítomnost informace
99 944 miho     if (isset($this->DirData[$Key]))
100 944 miho       return $this->DirData[$Key];
101 944 miho     else
102 944 miho       return '';
103 944 miho   }
104 944 miho   
105 944 miho   function GetString($VarName$Wrap=0)
106 944 miho   // Vrátí parametr jako jeden řetězec s redukovanými bílými znaky
107 944 miho   // Volitelně vloží odřádkování do delších řetězců
108 944 miho   {
109 944 miho     $Temp $this->GetVariable($VarName);
110 944 miho     $Temp preg_replace('/\s+/su'' '$Temp);
111 944 miho     if ($Wrap!=0)
112 944 miho       wordwrap($Temp$Wrap);
113 944 miho     return $Temp;
114 944 miho   }
115 944 miho   
116 944 miho   // function GetList
117 944 miho
118 944 miho   function GetValid()
119 944 miho   // Vrátí TRUE pokud je načtená informace o adresáři
120 944 miho   {
121 944 miho     return $this->Valid;
122 944 miho   }
123 944 miho
124 944 miho }
125 944 miho
126 944 miho /*
127 944 miho function WrapString($String, $Wrap=0)
128 944 miho // Volitleně (pokud je $Wrap nenulové) provede zálámání na zadaný počet
129 944 miho // znaků a odstranění nadbytečných mezer
130 944 miho {
131 944 miho   if ($Wrap!=0)
132 944 miho   {
133 944 miho     // Proveď zalámání hodnoty
134 944 miho preg_replace('/\s+/su', ' ', $Temp);
135 944 miho     $String = wordwrap($String, $Wrap);
136 944 miho   }
137 944 miho   return $String;
138 944 miho }
139 944 miho
140 944 miho */
141 944 miho ?>
{BLAME END}
{FOOTER START}

Poháněno WebSVN v2.1 alpha 1