X-Git-Url: http://git.jankratochvil.net/?a=blobdiff_plain;f=common.php;h=59a765ec6155b47a916b3e313ad9d34010d93588;hb=57c8dd3c392607a7d0694e67570977db0f73751b;hp=7957a9a63c1d95a30890f3786994ad49f7a9644e;hpb=435da90051b87392dbe84d1bef08685cf6990b65;p=www.energie.vellum.cz.git diff --git a/common.php b/common.php index 7957a9a..59a765e 100644 --- a/common.php +++ b/common.php @@ -10,7 +10,7 @@ $cvs_id_split=split(" ",$cvs_id); if (count($cvs_id_split)==8) { $cvs_id_split[1]="".$cvs_id_split[1].""; - $cvs_id_split[5]="".$cvs_id_split[5].""; + $cvs_id_split[5]="".$cvs_id_split[5].""; } $cvs_id_html=join(" ",$cvs_id_split); @@ -19,12 +19,15 @@ if (isset($detect_js) && !$have_js) $head.=''."\n"; - $user_agent=$HTTP_SERVER_VARS["HTTP_USER_AGENT"]; + $user_agent=(!isset($HTTP_SERVER_VARS["HTTP_USER_AGENT"]) ? "" : $HTTP_SERVER_VARS["HTTP_USER_AGENT"]); if (ereg("[[:<:]]MSIE ([0-9]+)\\.",$user_agent,$msie_major_a)) $msie_major=$msie_major_a[1]; else if (ereg("[[:<:]]Mozilla/([0-9]+)\\.",$user_agent,$mozilla_major_a)) $mozilla_major=$mozilla_major_a[1]; + $have_style=!isset($mozilla_major) || $mozilla_major!=4; + $have_css=true; // doesn't hurt anybody AFAIK + function addpercents($url) { $r=$c=""; @@ -40,7 +43,8 @@ function fatal($msg="UNKNOWN") { global $admin_mail; - print("\n

Nastala chyba pøi zpracování: $msg!

\n" + heading(false/*title*/); // it is always safe + print("\n

 
 


Nastala chyba pøi zpracování: $msg!

\n" ."

Mù¾ete tento problém nahlásit správci tohoto webu.

\n"); footer(); } @@ -67,8 +71,7 @@ function prepvar($name,$regex=".",$require=true) if (!isset($v)) return(0); - global $$name; - $$name=$v; + $GLOBALS[$name]=$v; return($v); } @@ -79,7 +82,7 @@ function db_connect() if (isset($db_link)) return; - if (!($db_link=@mysql_connect($db_host,$db_user,$db_pwd))) + if (!($db_link=mysql_connect($db_host,$db_user,$db_pwd))) fatal("MySQL connect: ".mysql_error()); if (!mysql_select_db($db_name,$db_link)) fatal("MySQL database select: ".mysql_error()); @@ -95,7 +98,7 @@ function db_query($query) return($r); } -function db_row($query) +function db_row($query) // pure indexes { $q=db_query($query); $r=mysql_fetch_row($q); @@ -103,36 +106,264 @@ function db_row($query) return($r); } +function db_array($query) // field-names associative +{ + $q=db_query($query); + $r=mysql_fetch_array($q); + mysql_free_result($q); + return($r); +} + function db_item($query) { $row=db_row($query); return($row[0]); } -function month_a($year,$month,$month_last=0) +function num2greg($num) { - global $tb_obsah; + $r=""; + $vals=array(1=>"I",5=>"V",10=>"X",50=>"L",100=>"C",500=>"D",1000=>"M"); + krsort($vals,SORT_NUMERIC); + foreach($vals as $val=>$sym) { + while ($num<0 && $num+$val<-$num) { + $r=substr($r,0,-1).$sym.substr($r,-1,1); + $num+=$val; + } + while (10*$num>=8*$val+(substr($val,0,1)=="1")) { + $r=$r.$sym; + $num-=$val; + } + } + return($r); +} - if (!$month_last) - $month_last=db_item("select month_last from $tb_obsah where year='$year' and month='$month'"); +function month_a($year,$month,$month_last=0,$sequential=0) +{ + global $tb_obsah,$obsah_year_base; + + if (!$month_last || !$sequential) + list($month_last,$sequential)=db_row("select month_last,sequential from $tb_obsah where year='$year' and month='$month'"); $month_full=sprintf("%02d".($month==$month_last ? "" : "-%02d"),$month,$month_last); $r=array("year"=>$year,"month"=>$month,"month_last"=>$month_last,"month_full"=>$month_full, - "name"=>"$year/${month_full}", - "img" =>"img/eap-$year-${month_full}.jpg", - "icon"=>"img/eap-$year-${month_full}s.jpg", + "name"=>"$month" .($month==$month_last ? "" : "-$month_last")."/$year", + "img" =>"img/eap-$year-${month_full}.jpeg", + "icon"=>"img/eap-$year-${month_full}s.jpeg", ); + $r["name_full"]=$r["name"] + ." ($sequential".($month==$month_last ? "" : "-".($sequential+$month_last-$month)).")" + ." - ".num2greg($year-$obsah_year_base+1).". roèník"; return($r); } -function img_size($width,$height=0) +function img_size($width,$height) +{ + global $have_style; + + return(($have_style ? "style=\"border:0;width:${width}px;height:${height}px\"" : "border=\"0\"") + ." width=\"$width\" height=\"$height\""); +} + +function img($file,$alt,$attrs="") { - if (!$height) - list($width,$height)=getimagesize($width); - return("style=\"border:0;width:${width}px;height:${height}px\" width=\"$width\" height=\"$height\""); + list($width,$height)=getimagesize($file); + return("\"".htmlspecialchars($alt)."\""); } -function footer() +function gsm_banking() +{ + return(img("img/sluzby_bankovni_pggsm.gif","Paegas GSM banking","class=\"img-align\"")); +} + +function price_a() +{ + if (!($f=fopen("objednavka.js","r"))) + fatal("Nepodaøilo se naèíst seznam dostupného zbo¾í"); + $r=array(); + while (($s=fgets($f,0x1000))) { + if (!($s=trim($s))) + break; + if (!(ereg("^want_price\\[ *'([^']*)'\\]=([0-9]*);$",$s,$matched))) + continue; + $r[$matched[1]]=$matched[2]; + } + fclose($f); + return($r); +} + +function title_name($year,$month) +{ + if (isset($year) && isset($month)) { + $month_a=month_a($year,$month); + return("Èíslo ".$month_a["name_full"]); + } + else if (isset($year)) + return("Roèník $year"); + else + return("V¹echny roèníky"); +} + +function title_month($year,$month) +{ + $month_a=month_a($year,$month); + return("" + ."\n" + ."\n" + ."
\n" + ."\n" + ."
".img($month_a["img"],"titulní stránka ".$month_a["name"])."
\n" + ); +} + +function title_icons_table_month($year,$month,$month_last,$sequential) +{ + global $tb_clanek; + + $month_a=month_a($year,$month,$month_last,$sequential); + print("" + ."\n" + ."\n" + ."
".$month_a["name"]."
" + .img($month_a["icon"],"titulní stránka ".$month_a["name_full"])."
\n" + ."• titulní strana
\n" + ."• obsah
\n"); + $result=db_query("select name,id from $tb_clanek where year=$year and month=$month order by id"); + while ($row=mysql_fetch_array($result)) + print("• " + .htmlspecialchars($row["name"])."
\n"); + mysql_free_result($result); + print("
"); +} + +function title_icons($year,$month) +{ + global $tb_obsah; + + print("

" + .(isset($year) ? "" : "") + .title_name(&$year,&$month) + .(isset($year) ? "" : "") + ."

\n"); + + $result=db_query("select year,month,month_last,sequential from $tb_obsah" + .(isset($year) || isset($month) ? " where" : "") + .(isset($year ) ? " year=$year" : "") + .(isset($year) && isset($month) ? " and" : "") + .(isset($month) ? " month=$month" : "") + ." order by year,month"); + $split=4; + + // $year variable changes its meaning here!!! + if (isset($year)) + $wanted_year=$year; + $year=0; + + $fin_split=""; + $fin_year=""; + while ($row=mysql_fetch_array($result)) { + $row["month" ]--; + $row["month_last"]--; + + if ($row["year"]!=$year) { + print($fin_split.$fin_year); + + $year=$row["year"]; + print("" + .(!isset($wanted_year) ? "

 

" : "") + ."
\n" + ."\n" + ); + $fin_year="
Roèník $year (obsahy èísel)
\n"; + $fin_split=""; + $month=-1; + $floor=-1; + } + while ($floor"); + $fin_split="\n"; + $floor++; + $month=$floor*$split-1; + } + while ($month+1<$row["month"]) { + print(""); + $month++; + } + print(""); + title_icons_table_month($year,$row["month"]+1,$row["month_last"]+1,$row["sequential"]); + print("\n"); + $month=$row["month_last"]; + } + mysql_free_result($result); + print($fin_split.$fin_year); +} + +function title($year,$month) +{ + if (isset($year) && isset($month)) + return(title_month( $year, $month)); + else + return(title_icons(&$year,&$month)); +} + +function image_supported($mime) +{ + global $HTTP_SERVER_VARS; + + if (!isset($HTTP_SERVER_VARS["HTTP_ACCEPT"])) + return(false); + $exp=explode(",",$HTTP_SERVER_VARS["HTTP_ACCEPT"]); + while (($s=array_shift($exp))) { + $s=trim(ereg_replace(";.*","",$s)); + if ($s==$mime) + return(true); + } + return(false); +} + +// PHP dirname() is broken: ("/1/2/3"=>"/1/2", "/1"->"/") +function dirnameslashed($filename) +{ + $r=dirname($filename); + if (substr($r,-1)!="/") + $r.="/"; + return($r); +} + +function usersize($size) +{ + $suffix_a=array("","k","M","G","T"); + while ($size>=1000 && sizeof($suffix_a)>=2) { + $size/=1000; + array_shift($suffix_a); + } + return(round($size)." ".$suffix_a[0]."B"); +} + +function data_href($filename,$text,$details="") +{ + return("$text (".usersize(filesize($filename))."$details)"); +} + +function img_href($filename,$text) +{ + list($width,$height)=getimagesize($filename); + return(data_href($filename,$text,", ${width}x${height} bodù")); +} + +function footer_img($url,$text,$size) +{ + global $footer_LOCAL; + if (!isset($footer_LOCAL)) + return("\"$text\""); + else + return($text); +} + +function footer($delimit=true) { // deadlock prevention: global $footer_passed; @@ -141,40 +372,68 @@ function footer() $footer_passed=true; global $cvs_id_html,$viewcvs,$viewcvs,$HTTP_SERVER_VARS; + if ($delimit) + print("

 

\n"); + $uri="uri=".addpercents("http://".$HTTP_SERVER_VARS["HTTP_HOST"].$HTTP_SERVER_VARS["REQUEST_URI"]); ?>
+ href="http://validator.w3.org/check?">
alt="Valid XHTML 1.0!" />"> alt="Valid CSS!" />
- =4) - print(''."\n"); + if (isset($heading_done)) + return; + $heading_done=1; + + if (isset($force_charset)) + $client_charset=$force_charset; + else + $client_charset=(!isset($HTTP_SERVER_VARS["CLIENT_CHARSET"]) ? "iso-8859-2" : $HTTP_SERVER_VARS["CLIENT_CHARSET"]); + // When "CLIENT_CHARSET" is set we MUST NOT explicitely specify our "charset" + header("Content-type: text/html".(isset($HTTP_SERVER_VARS["CLIENT_CHARSET"]) ? "" : "; charset=$client_charset")); + header("Content-Style-Type: text/css"); + if (!isset($msie_major) || $msie_major>=4) { + print(''."\n"); + } ?> - - -Energie & peníze<?php +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs"> +<head><?php + print("<title>$title_prefix"); if (isset($title_tail)) - print(": $title_tail"); -?> -\n"); + if (isset($head_css)) + print(trim($head_css)."\n"); + print("-->\n"); + } if (isset($head)) print($head); print("\n"); + if ($title) + print("

" + .img("img/eap-title.".(image_supported("image/png") ? "png" : "gif"),"Energie & Peníze") + ."

\n"); } ?>