3 error_reporting(E_ALL);
7 // $viewcvs prepared by "config.php"
8 if ($viewcvs==$HTTP_SERVER_VARS["SCRIPT_NAME"])
10 $cvs_id_split=split(" ",$cvs_id);
11 if (count($cvs_id_split)==8) {
12 $cvs_id_split[1]="<a href=\"$viewcvs\">".$cvs_id_split[1]."</a>";
13 $cvs_id_split[5]="<a href=\"mailto:".$cvs_id_split[5]."@$cvs_mailhost\">".$cvs_id_split[5]."</a>";
15 $cvs_id_html=join(" ",$cvs_id_split);
17 $have_js=(isset($HTTP_GET_VARS["have_js"]) || isset($HTTP_POST_VARS["have_js"])
19 if (isset($detect_js) && !$have_js)
20 $head.='<script type="text/javascript" src="have_js.js"></script>'."\n";
22 $user_agent=(!isset($HTTP_SERVER_VARS["HTTP_USER_AGENT"]) ? "" : $HTTP_SERVER_VARS["HTTP_USER_AGENT"]);
23 if (ereg("[[:<:]]MSIE ([0-9]+)\\.",$user_agent,$msie_major_a))
24 $msie_major=$msie_major_a[1];
25 else if (ereg("[[:<:]]Mozilla/([0-9]+)\\.",$user_agent,$mozilla_major_a))
26 $mozilla_major=$mozilla_major_a[1];
28 $have_style=!isset($mozilla_major) || $mozilla_major!=4;
29 $have_css=true; // doesn't hurt anybody AFAIK
31 function addpercents($url)
34 foreach(preg_split('//', $url, -1, PREG_SPLIT_NO_EMPTY) as $c)
35 if (ereg("[a-zA-Z0-9]",$c))
38 $r.=sprintf("%%%02X",ord($c));
42 function fatal($msg="UNKNOWN")
46 heading(false/*title*/); // it is always safe
47 print("\n<p> <br /> </p><hr /><h1 class=\"error\">Nastala chyba pøi zpracování: $msg!</h1>\n"
48 ."<p>Mù¾ete tento problém nahlásit <a href=\"mailto:$admin_mail\">správci tohoto webu</a>.</p>\n");
52 function prepvar($name,$regex=".",$require=true)
54 global $HTTP_GET_VARS,$HTTP_POST_VARS;
56 if (isset($HTTP_GET_VARS[$name]))
57 $v=$HTTP_GET_VARS[$name];
58 else if (isset($HTTP_POST_VARS[$name]))
59 $v=$HTTP_POST_VARS[$name];
63 $name_html="Parametr <span class=\"quote\">".htmlspecialchars($name)."</span>";
66 if (isset($v) && !ereg($regex,$v))
67 fatal("$name_html nevyhovuje po¾adovanému regexu <span class=\"quote\">".htmlspecialchars($regex)."</span>");
68 if (!isset($v) && $require)
69 fatal("$name_html je vy¾adován");
80 global $db_host,$db_user,$db_pwd,$db_name;
85 if (!($db_link=mysql_connect($db_host,$db_user,$db_pwd)))
86 fatal("MySQL connect: ".mysql_error());
87 if (!mysql_select_db($db_name,$db_link))
88 fatal("MySQL database select: ".mysql_error());
91 function db_query($query)
96 if (!($r=mysql_query($query,$db_link)))
97 fatal("MySQL query \"$query\": ".mysql_error());
101 function db_row($query) // pure indexes
104 $r=mysql_fetch_row($q);
105 mysql_free_result($q);
109 function db_array($query) // field-names associative
112 $r=mysql_fetch_array($q);
113 mysql_free_result($q);
117 function db_item($query)
123 function num2greg($num)
126 $vals=array(1=>"I",5=>"V",10=>"X",50=>"L",100=>"C",500=>"D",1000=>"M");
127 krsort($vals,SORT_NUMERIC);
128 foreach($vals as $val=>$sym) {
129 while ($num<0 && $num+$val<-$num) {
130 $r=substr($r,0,-1).$sym.substr($r,-1,1);
133 while (10*$num>=8*$val+(substr($val,0,1)=="1")) {
141 function month_a($year,$month,$month_last=0,$sequential=0)
143 global $tb_obsah,$obsah_year_base;
145 if (!$month_last || !$sequential)
146 list($month_last,$sequential)=db_row("select month_last,sequential from $tb_obsah where year='$year' and month='$month'");
147 $month_full=sprintf("%02d".($month==$month_last ? "" : "-%02d"),$month,$month_last);
149 $r=array("year"=>$year,"month"=>$month,"month_last"=>$month_last,"month_full"=>$month_full,
150 "name"=>"$month" .($month==$month_last ? "" : "-$month_last")."/$year",
151 "img" =>"img/eap-$year-${month_full}.jpeg",
152 "icon"=>"img/eap-$year-${month_full}s.jpeg",
154 $r["name_full"]=$r["name"]
155 ." ($sequential".($month==$month_last ? "" : "-".($sequential+$month_last-$month)).")"
156 ." - ".num2greg($year-$obsah_year_base+1).". roèník";
160 function img_size($width,$height)
164 return(($have_style ? "style=\"border:0;width:${width}px;height:${height}px\"" : "border=\"0\"")
165 ." width=\"$width\" height=\"$height\"");
168 function img($file,$alt,$attrs="")
170 list($width,$height)=getimagesize($file);
171 return("<img src=\"$file\" alt=\"".htmlspecialchars($alt)."\" ".img_size($width,$height)
172 .($attrs=="" ? "" : " ".$attrs)." />");
175 function gsm_banking()
177 return(img("img/sluzby_bankovni_pggsm.gif","Paegas GSM banking","class=\"img-align\""));
182 if (!($f=fopen("objednavka.js","r")))
183 fatal("Nepodaøilo se naèíst seznam dostupného zbo¾í");
185 while (($s=fgets($f,0x1000))) {
188 if (!(ereg("^want_price\\[ *'([^']*)'\\]=([0-9]*);$",$s,$matched)))
190 $r[$matched[1]]=$matched[2];
196 function title_name($year,$month)
198 if (isset($year) && isset($month)) {
199 $month_a=month_a($year,$month);
200 return("Èíslo ".$month_a["name_full"]);
202 else if (isset($year))
203 return("Roèník $year");
205 return("V¹echny roèníky");
208 function title_month($year,$month)
210 $month_a=month_a($year,$month);
212 ."<table border=\"0\" width=\"100%\">\n"
213 ."<tr><td align=\"center\"><table border=\"1\" cellpadding=\"10\">\n"
214 ."<tr><td align=\"center\">".img($month_a["img"],"titulní stránka ".$month_a["name"])."</td></tr>\n"
215 ."</table></td></tr>\n"
220 function title_icons_table_month($year,$month,$month_last,$sequential)
224 $month_a=month_a($year,$month,$month_last,$sequential);
225 print("<table border=\"0\">"
226 ."<tr><th align=\"center\">".$month_a["name"]."</th></tr>\n"
227 ."<tr><td align=\"center\" valign=\"top\">"
228 .img($month_a["icon"],"titulní stránka ".$month_a["name_full"])."</td></tr>\n"
229 ."<tr><td align=\"left\" valign=\"top\" class=\"nowrap\">\n"
230 ."• <a href=\"title.php?year=$year&month=$month\">titulní strana</a><br />\n"
231 ."• <a href=\"obsah.php?year=$year&month=$month\">obsah</a><br />\n");
232 $result=db_query("select name,id from $tb_clanek where year=$year and month=$month order by id");
233 while ($row=mysql_fetch_array($result))
234 print("• <a href=\"clanek.php?year=$year&month=$month&id=".$row["id"]."\">"
235 .htmlspecialchars($row["name"])."</a><br />\n");
236 mysql_free_result($result);
237 print("</td></tr></table>");
240 function title_icons($year,$month)
245 .(isset($year) ? "<a id=\"year_$year\">" : "")
246 .title_name(&$year,&$month)
247 .(isset($year) ? "</a>" : "")
250 $result=db_query("select year,month,month_last,sequential from $tb_obsah"
251 .(isset($year) || isset($month) ? " where" : "")
252 .(isset($year ) ? " year=$year" : "")
253 .(isset($year) && isset($month) ? " and" : "")
254 .(isset($month) ? " month=$month" : "")
255 ." order by year,month");
258 // $year variable changes its meaning here!!!
265 while ($row=mysql_fetch_array($result)) {
267 $row["month_last"]--;
269 if ($row["year"]!=$year) {
270 print($fin_split.$fin_year);
274 .(!isset($wanted_year) ? "<p><a id=\"year_$year\"> </a></p>" : "")
275 ."<table border=\"0\" width=\"100%\"><tr><td align=\"center\"><table border=\"1\" cellpadding=\"5\">\n"
276 ."<tr><th colspan=\"$split\">Roèník $year (<a href=\"obsah.php?year=$year\">obsahy èísel</a>)</th></tr>\n"
278 $fin_year="</table></td></tr></table>\n";
283 while ($floor<floor($row["month"]/$split)) {
284 print($fin_split."<tr>");
285 $fin_split="</tr>\n";
287 $month=$floor*$split-1;
289 while ($month+1<$row["month"]) {
293 print("<td align=\"center\" valign=\"top\""
294 .($row["month_last"]!=$row["month"] ? " colspan=\"".($row["month_last"]+1-$row["month"])."\"" : "")
296 title_icons_table_month($year,$row["month"]+1,$row["month_last"]+1,$row["sequential"]);
298 $month=$row["month_last"];
300 mysql_free_result($result);
301 print($fin_split.$fin_year);
304 function title($year,$month)
306 if (isset($year) && isset($month))
307 return(title_month( $year, $month));
309 return(title_icons(&$year,&$month));
312 function image_supported($mime)
314 global $HTTP_SERVER_VARS;
316 if (!isset($HTTP_SERVER_VARS["HTTP_ACCEPT"]))
318 $exp=explode(",",$HTTP_SERVER_VARS["HTTP_ACCEPT"]);
319 while (($s=array_shift($exp))) {
320 $s=trim(ereg_replace(";.*","",$s));
327 // PHP dirname() is broken: ("/1/2/3"=>"/1/2", "/1"->"/")
328 function dirnameslashed($filename)
330 $r=dirname($filename);
331 if (substr($r,-1)!="/")
336 function usersize($size)
338 $suffix_a=array("","k","M","G","T");
339 while ($size>=1000 && sizeof($suffix_a)>=2) {
341 array_shift($suffix_a);
343 return(round($size)." ".$suffix_a[0]."B");
346 function data_href($filename,$text)
348 return("<a href=\"$filename\">$text (".usersize(filesize($filename)).")</a>");
351 function footer_img($url,$text,$size)
353 global $footer_LOCAL;
354 if (!isset($footer_LOCAL))
355 return("<img src=\"$url\" $size alt=\"$text\" />");
360 function footer($delimit=true)
362 // deadlock prevention:
363 global $footer_passed;
364 if (isset($footer_passed))
368 global $cvs_id_html,$viewcvs,$viewcvs,$HTTP_SERVER_VARS;
370 print("<p> </p>\n");
371 $uri="uri=".addpercents("http://".$HTTP_SERVER_VARS["HTTP_HOST"].$HTTP_SERVER_VARS["REQUEST_URI"]);
374 <table border="0" width="100%">
375 <tr><td align="left"><span class="cvs-id"><?php print($cvs_id_html); ?></span></td><td align="right"><a
376 href="http://validator.w3.org/check?<?php
377 print($uri); ?>"><?php
378 print footer_img("http://www.w3.org/Icons/valid-xhtml11","Valid XHTML 1.1!",img_size(88,31));
379 ?></a><a href="http://jigsaw.w3.org/css-validator/validator?warning=2&profile=css2&<?php
380 print($uri); ?>"><?php
381 print footer_img("http://jigsaw.w3.org/css-validator/images/vcss","Valid CSS!",img_size(88,31));
389 // Stolen from: php-manual.html#function.header
392 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
393 header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); // always modified
394 header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
395 header("Pragma: no-cache"); // HTTP/1.0
398 function heading($title=false)
400 global $HTTP_SERVER_VARS,$msie_major,$mozilla_major,$title_tail,$head_css,$have_css,$head,$heading_done,$title_prefix,$force_charset;
402 if (isset($heading_done))
406 if (isset($force_charset))
407 $client_charset=$force_charset;
409 $client_charset=(!isset($HTTP_SERVER_VARS["CLIENT_CHARSET"]) ? "iso-8859-2" : $HTTP_SERVER_VARS["CLIENT_CHARSET"]);
410 // When "CLIENT_CHARSET" is set we MUST NOT explicitely specify our "charset"
411 header("Content-type: text/html".(isset($HTTP_SERVER_VARS["CLIENT_CHARSET"]) ? "" : "; charset=$client_charset"));
412 header("Content-Style-Type: text/css");
413 if (!isset($msie_major) || $msie_major>=4) {
414 print('<?xml version="1.0" encoding="'.$client_charset.'"?>'."\n");
417 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
418 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs">
420 print("<title>$title_prefix");
421 if (isset($title_tail))
422 print(": ".htmlspecialchars($title_tail));
425 ?><style type="text/css"><!--
426 .cvs-id { font-family: monospace; }
427 .error { color: red; background-color: transparent; }
428 .quote { font-family: monospace; }
429 .nowrap { white-space: nowrap; }
430 .centered { text-align: center; }
432 background-color: black;
435 :link { color: aqua; background-color: transparent; }
436 :visited { color: teal; background-color: transparent; }
437 h1,h2 { color: yellow; background-color: transparent; }
439 if (isset($head_css))
440 print(trim($head_css)."\n");
441 print("--></style>\n");
445 print("</head><body");
446 if (isset($mozilla_major) && $mozilla_major==4)
447 print(" bgcolor=\"black\" text=\"white\" link=\"aqua\" vlink=\"teal\"");
450 print("<h1 class=\"centered\">"
451 .img("img/eap-title.".(image_supported("image/png") ? "png" : "gif"),"Energie & Peníze")