{HEADER END}
{BLAME START}

MLAB

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

Blame information for rev 1869

Číslo řádky Revize Autor Line
1 944 miho <?php
2 944 miho
3 944 miho
4 944 miho define('WEBSVNSCRIPT''/WebSVN/listing.php'true);   // Cesta k WebSVN skriptu
5 1491 miho define('WIKISERVER',   'wiki',                true);   // Jméno Wiki serveru (co se strčí místo jména stávajícího serveru)
6 944 miho
7 944 miho
8 944 miho function Error($str)
9 944 miho // Ukončení běhu při chybhě
10 944 miho {
11 944 miho   echo '<b>Ups...<b>'.$str;
12 944 miho   exit;
13 944 miho }
14 944 miho
15 944 miho
16 944 miho function WrapString($String$Wrap=0)
17 944 miho // Provede odstranění nadbytečných bílých znaků
18 944 miho // a volitleně (pokud je $Wrap nenulové) provede zálámání na zadaný počet znaků
19 944 miho {
20 944 miho   // Odstaň bílé znaky
21 944 miho   $String preg_replace('/\s+/su'' '$String);
22 944 miho   
23 944 miho   // Volitelné nalámání
24 944 miho   if ($Wrap!=0)
25 944 miho     $String wordwrap($String$Wrap);
26 944 miho
27 944 miho   return $String;
28 944 miho }
29 944 miho
30 944 miho
31 960 miho function CheckEnvironment()
32 960 miho {
33 960 miho   // POZOR DOPSAT
34 960 miho }
35 960 miho
36 944 miho function CheckWebPath($Path)
37 944 miho // Zadaná cesta se chápe jako cesta uvnitř webu (vzhledem k document root).
38 944 miho // Případné relativní části (/../..) převede na absolutní a zkontroluje
39 944 miho // výsledek, zda nevybočuje mimo web.
40 944 miho // Na začátku nechá lomítko, na konci ho odstraní.
41 944 miho // Pokud je výsledná cesta neplatná, vrátí prázdný řetězec. Kontroluje, zda
42 944 miho // zadaný adresář existuje.
43 944 miho {
44 944 miho   // Převeď cestu na opravdovou, odstraň relativní odkazy
45 944 miho   $Path realpath($_SERVER['DOCUMENT_ROOT'].$Path);
46 944 miho
47 944 miho   // Zkontroluj, zda jsme nevybočili z webu
48 944 miho   if ( == strncmp($Path$_SERVER['DOCUMENT_ROOT'], strlen($_SERVER['DOCUMENT_ROOT']) ) )
49 944 miho   {
50 944 miho     // Shoda - odstraň DOCUMENT_ROOT část cesty
51 944 miho     return substr$Pathstrlen($_SERVER['DOCUMENT_ROOT']) );
52 944 miho   }
53 944 miho   else
54 944 miho   {
55 944 miho     // Vybočili jsme z webu
56 944 miho     return '';
57 944 miho   }
58 944 miho }
59 944 miho
60 944 miho
61 944 miho function GetSection($Path)
62 944 miho // Vrátí první část cesty (to je to, co nazýváme sekce)
63 944 miho {
64 944 miho   // Ignoruj lomítko na začátku
65 944 miho   $Path ltrim($Path'/');
66 944 miho
67 944 miho   // Vykousni první slovo až po lomítko
68 944 miho   $Section substr($Path0strpos($Path.'/''/'));
69 944 miho
70 944 miho   // Ošetři root
71 944 miho   if ($Section=='')
72 944 miho     $Section "(root)";
73 944 miho
74 944 miho   // Vrať výsledek
75 944 miho   return $Section;
76 944 miho }
77 944 miho
78 944 miho
79 944 miho function LangFile($FileName$Lang)
80 944 miho // Dostává cestu k souboru a jazyk. Zkusí ověřit existenci souboru s doplněným
81 944 miho // zadaným jazykem, dále zkusí angličtinu a nakonec zkusí nemodifikovaný název.
82 944 miho // Vrací jméno souboru s tou variantou, kterou našel.
83 944 miho {
84 944 miho   // Najdi příponu (poslední tečka)
85 944 miho   $Pos strrpos($FileName'.');
86 944 miho   if ($Pos === false)
87 944 miho     return '';
88 944 miho   if ($Pos strrchr($FileName'/'))
89 944 miho     return '';
90 944 miho
91 944 miho   // Zkus doplnit zadaný jazyk
92 944 miho   $File substr($FileName0$Pos+1).$Lang.substr($FileName$Pos);
93 944 miho
94 944 miho   if (is_file($File))
95 944 miho     return $File;
96 944 miho
97 944 miho   // Zkus doplnit en
98 944 miho   $File substr($FileName0$Pos+1).'en'.substr($FileName$Pos);
99 944 miho   if (is_file($File))
100 944 miho     return $File;
101 944 miho
102 944 miho   // Zkus soubor tak jak je
103 944 miho   if (is_file($FileName))
104 944 miho     return $FileName;
105 944 miho
106 944 miho   // Nic nevyšlo
107 944 miho   return '';
108 944 miho }
109 944 miho
110 1869 kaklik function CreateLink($InternetWebPath$Title='')
111 1869 kaklik // Vstupem je cesta do jiného webu.
112 1869 kaklik // a volitelně title (zobrazí se při najetí myši na odkaz).
113 1869 kaklik // Vrací řetězec s odkazem
114 1869 kaklik {
115 1869 kaklik   $Link  '<a href="'.$InternetWebPath.'"';
116 1869 kaklik   if ($Title != '')
117 1869 kaklik     $Link .= "\n".'   title="'.$Title.'"';
118 1869 kaklik   $Link .= '>';
119 1869 kaklik   $Link .= $Title;
120 1869 kaklik   $Link .= '</a>';
121 944 miho
122 1869 kaklik   return $Link;
123 1869 kaklik }
124 1869 kaklik
125 944 miho function CreateFileLink($FileName$Title='')
126 944 miho // Vstupem je cesta k souboru v rámci webu (od DOCUMENT_ROOT)
127 944 miho // a volitelně title (zobrazí se při najetí myši na odkaz).
128 944 miho // Vrací řetězec s odkazem
129 944 miho {
130 944 miho   $FileName htmlspecialchars($FileName);
131 944 miho
132 944 miho   $Link  '<a href="http://'.$_SERVER['SERVER_NAME'].$FileName.'"';
133 944 miho   if ($Title != '')
134 944 miho     $Link .= "\n".'   title="'.$Title.'"';
135 944 miho   $Link .= '>';
136 944 miho   if (basename($FileName)=='')
137 944 miho     $Link .= '(root)';
138 944 miho   else
139 944 miho     $Link .= basename($FileName);
140 944 miho   $Link .= '</a>';
141 944 miho
142 944 miho   return $Link;
143 944 miho }
144 944 miho
145 944 miho function CreateFilesLink($Path$Glue$Title='')
146 944 miho // Sestaví odkazy na všechny soubory zadaného jména slepené lepidlem
147 944 miho // Volitelně lze zadat title (zobrazí se při najetí myši na odkaz).
148 944 miho // Cesta se chápe v rámci webu (od DOCUMENT_ROOT).
149 944 miho // Vrací řetězec s odkazy
150 944 miho {
151 944 miho   // Při lepení odřádkujeme aby byl generovaný kód strukturovaný
152 944 miho   $Glue ' '.$Glue."\n";
153 944 miho   
154 944 miho   // Pro každou položku
155 944 miho   $Line '';
156 944 miho   $Ofset strlen($_SERVER['DOCUMENT_ROOT']);
157 944 miho   foreach (glob($_SERVER['DOCUMENT_ROOT'].$Path0) as $DirName)
158 944 miho   {
159 944 miho     // Sestav odkaz
160 944 miho     if (is_file($DirName))
161 944 miho       $Line .= $Glue.CreateFileLink(substr($DirName$Ofset), $Title);
162 944 miho   }
163 944 miho
164 944 miho   // Vrať výsledek ale bez lepidla na začátku
165 944 miho   return substr($Linestrlen($Glue));
166 944 miho }
167 944 miho
168 944 miho
169 944 miho function CreateScriptLink($Params$DirName=''$Title='')
170 944 miho // Vytvoř odkaz na skript s parametry skriptu. Parametry jsou předány jako
171 944 miho // pole s jmény položek a hodnotami. Volitelná položka $DirName se přidá k cestě
172 944 miho // v položce $Params. Pokud je zadaná cesta prázdná nebo / zobrazí se slovo root
173 944 miho {
174 944 miho   // Připoj volitelné jméno adresáře
175 944 miho   if ($DirName!='')
176 944 miho     $Params['path'] = $Params['path'].'/'.$DirName;
177 944 miho
178 944 miho   // Odvoď jméno z názvu adresáře
179 944 miho   $DirName basename($Params['path']);
180 944 miho   if ($DirName == '')
181 944 miho   {
182 944 miho     $DirName '(root)';
183 944 miho     $Params['path'] = '/';
184 944 miho   }
185 944 miho
186 944 miho   // Zpracuj pole parametrů
187 944 miho   $ParamsLine '';
188 944 miho   $LocalGlue '';
189 944 miho   foreach($Params as $Key => $Value)
190 944 miho   {
191 944 miho     $ParamsLine .= $LocalGlue.$Key.'='.urlencode($Value);
192 944 miho     $LocalGlue '&amp;';
193 944 miho   }
194 944 miho   unset($LocalGlue);
195 944 miho
196 944 miho   // Sestav odkaz
197 944 miho   $Link  '<a href="'.$_SERVER['SCRIPT_NAME'].'?'.$ParamsLine.'"';
198 944 miho   if ($Title!='')
199 944 miho     $Link .= "\n".'   title="'.htmlspecialchars($Title).'"';
200 944 miho   $Link .= ">$DirName</a>";
201 944 miho
202 944 miho   return $Link;
203 944 miho }
204 944 miho
205 944 miho
206 944 miho function CreateScriptLinkPath($Params$Title)
207 944 miho // Vstupem je cesta (začínající /) od DOCUMENT_ROOT
208 944 miho // Výsledkem je řádka odkazů na jednotlivé adresáře cesty
209 944 miho // Odkazy jsou odkazy na skript s parametrem cesty a jazyka
210 944 miho // Vstupem je pole parametrů ze kterých použijeme parametr 'path',
211 944 miho // ostatní jen umístíme do odkazů.
212 944 miho {
213 944 miho   // Rozděl cestu na kousky
214 944 miho   $Parts explode('/'$Params['path']);
215 944 miho   if ($Parts[0]=='')
216 944 miho     array_shift($Parts); // vyhoď případnou prázdnou položku
217 944 miho
218 944 miho   // Začínáme od rootu
219 944 miho   $TempPath '';
220 944 miho
221 944 miho   // Odkaz na root (je vždy)
222 944 miho   $Params['path'] = $TempPath;
223 944 miho   $Link CreateScriptLink($Params''$Title);
224 944 miho
225 944 miho   // Je něco víc než root?
226 944 miho   if (isset($Parts[0]) && $Parts[0]!='')
227 944 miho   {
228 944 miho     // Odkaz na všechny další adresáře cesty
229 944 miho     foreach($Parts as $Key => $Value)
230 944 miho     {
231 944 miho       // Přidej adresář
232 944 miho       $TempPath .= '/'.$Value;
233 944 miho
234 944 miho       // Vyrob odkaz
235 944 miho       $Link .= " /\n";
236 944 miho       $Params['path'] = $TempPath;
237 944 miho       $Link .= CreateScriptLink($Params''$Title);
238 944 miho     }
239 944 miho   }
240 944 miho
241 944 miho   // Vrať výsledek
242 944 miho   return $Link;
243 944 miho }
244 944 miho
245 944 miho
246 944 miho function CreateSVNLink($Path$Lang$Title)
247 944 miho // Vytvoří odkaz do WebSVN podle cesty a jazyka
248 944 miho {
249 944 miho   $Path htmlspecialchars($Path);
250 944 miho
251 944 miho   $Link  '<a href="http://';
252 944 miho   $Link .= $_SERVER['SERVER_NAME'];
253 944 miho   $Link .= WEBSVNSCRIPT;
254 944 miho   $Link .= '?repname=MLAB&amp;path=';
255 944 miho   $Link .= $Path;
256 944 miho   $Link .= '/';
257 944 miho   if ($Lang=='cs')
258 944 miho     $Link .= '&amp;langchoice=Česky';
259 944 miho   else
260 944 miho     $Link .= '&amp;langchoice=English';
261 944 miho   $Link .= '"';
262 944 miho   if ($Title!='')
263 944 miho     $Link .= "\n".'   title="'.htmlspecialchars($Title).'"';
264 944 miho   $Link .= '>WebSVN</a>';
265 944 miho
266 944 miho   return $Link;
267 944 miho }
268 944 miho
269 944 miho
270 1491 miho function CreateWikiLink($Name$Lang$Title)
271 1491 miho // Vytvoří odkaz do Wiki podle jména modulu a jazyka
272 1491 miho {
273 1491 miho   // Ukousni verzi a revizi modulu (například 01A)
274 1491 miho   $Name preg_replace('/[0-9][0-9][a-z]$/i'''$Name); 
275 1491 miho   $Name htmlspecialchars($Name);
276 1491 miho
277 1491 miho   // Sestav odkaz
278 1491 miho   $Link  '<a href="http://';
279 1491 miho   $Link .= preg_replace('/^.+?\./'WIKISERVER.'.'$_SERVER['SERVER_NAME']);
280 1491 miho   $Link .= '/doku.php?id='.$Lang.':'.$Name;
281 1491 miho   $Link .= '"';
282 1491 miho   
283 1491 miho   if ($Title!='')
284 1491 miho     $Link .= "\n".'   title="'.htmlspecialchars($Title).'"';
285 1491 miho   $Link .= '>Wiki</a>';
286 1491 miho
287 1491 miho   return $Link;
288 1491 miho }
289 1491 miho
290 1491 miho
291 944 miho function CreatePicturesLink($Path$Glue$Alt=''$NoPicture)
292 944 miho // Najde na uvedené cestě obrázky, které mají v názvu Small
293 944 miho // a sestaví na ně odkaz. Pokud není žádný obrázek, vytvoří odkaz na obrázek
294 944 miho // v parametru $NoPicture.
295 944 miho {
296 944 miho   // Najdi všechny soubory
297 944 miho   $Files = array();
298 944 miho   foreach (glob($_SERVER['DOCUMENT_ROOT'].$Path.'/*') as $File)
299 944 miho   {
300 944 miho     if (is_file($File))
301 944 miho     {
302 944 miho       // Jen jméno souboru
303 944 miho       $File substr($File1+strlen($_SERVER['DOCUMENT_ROOT'].$Path));
304 944 miho       
305 944 miho       // TOHLE ASI RADĚJI PŘEZ REGEX
306 944 miho
307 944 miho       // Odděl příponu
308 944 miho       $DotPos strrpos($File'.');
309 944 miho       $Extension substr($File$DotPos+1);
310 944 miho       $BaseName  substr($File0$DotPos);
311 944 miho       
312 944 miho       // Vezmi obrázky, které mají ve jméně Small
313 944 miho       if( (strtolower($Extension)=='jpg' or strtolower($Extension)=='png')
314 944 miho           and strpos($BaseName'Small')>)
315 944 miho       {
316 944 miho         $Files[] = $Path.'/'.$File;
317 944 miho       }
318 944 miho     }
319 944 miho   }
320 944 miho
321 944 miho   // V adresáři nejsou žádné vhodné obrázky
322 944 miho   if (count($Files) == 0)
323 944 miho   {
324 944 miho     // Není na co udělat odkaz
325 944 miho     if ($NoPicture=='')
326 944 miho       return '';
327 944 miho     // Přidej odkaz nikam
328 944 miho     $Files[] = $NoPicture;
329 944 miho   }
330 944 miho
331 944 miho   // Udělej odkazy na pole souborů
332 944 miho   $Alt  htmlspecialchars($Alt);
333 944 miho   $Line  '';
334 944 miho   $FirstGlue TRUE;
335 944 miho   foreach($Files as $File)
336 944 miho   {
337 944 miho     $File htmlspecialchars($File);
338 944 miho
339 944 miho     if(!$FirstGlue)
340 944 miho       $Line .= ' '.$Glue."\n";
341 944 miho     $FirstGlue FALSE;
342 944 miho
343 944 miho     $Line .= '<a href="'.$File.'">'."\n";
344 944 miho     $Line .= '<img src="'.$File.'"'."\n";
345 944 miho     $Line .= '     width="150"'."\n";
346 944 miho     $Line .= '     alt="'.$Alt.'">'."\n";
347 944 miho     $Line .= '</a>'."\n";
348 944 miho   }
349 944 miho
350 944 miho   return $Line;
351 944 miho }
352 944 miho
353 944 miho
354 944 miho ?>
{BLAME END}
{FOOTER START}

Poháněno WebSVN v2.1 alpha 1