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