Direct payment method implemented
[www.energie.vellum.cz.git] / common.php
index d391a21..1e6f22f 100644 (file)
@@ -1,14 +1,30 @@
-<?php
+<?php // $Id$
+
        error_reporting(E_ALL);
 
-       $viewcvs=ereg_replace("^/~short/","\\0cgi-bin/viewcvs/",$HTTP_SERVER_VARS["SCRIPT_NAME"]);
+       include("config.php");
+
+       // $viewcvs prepared by "config.php"
        if ($viewcvs==$HTTP_SERVER_VARS["SCRIPT_NAME"])
                unset($viewcvs);
        $cvs_id_split=split(" ",$cvs_id);
-       $cvs_id_split[1]="<a href=\"$viewcvs\">".$cvs_id_split[1]."</a>";
-       $cvs_id_split[5]="<a href=\"mailto:".$cvs_id_split[5]."@".$HTTP_SERVER_VARS["HTTP_HOST"]."\">".$cvs_id_split[5]."</a>";
+       if (count($cvs_id_split)==8) {
+               $cvs_id_split[1]="<a href=\"$viewcvs\">".$cvs_id_split[1]."</a>";
+               $cvs_id_split[5]="<a href=\"mailto:".$cvs_id_split[5]."@".$HTTP_SERVER_VARS["HTTP_HOST"]."\">".$cvs_id_split[5]."</a>";
+               }
        $cvs_id_html=join(" ",$cvs_id_split);
 
+       $have_js=(isset($HTTP_GET_VARS["have_js"]) || isset($HTTP_POST_VARS["have_js"])
+                       ? "?have_js=1" : "");
+       if (isset($detect_js) && !$have_js)
+               $head.='<script type="text/javascript" src="have_js.js"></script>'."\n";
+
+       $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];
+
 function addpercents($url)
 {
        $r=$c="";
@@ -20,26 +36,165 @@ function addpercents($url)
        return($r);
 }
 
+function fatal($msg="UNKNOWN")
+{
+       global $admin_mail;
+
+       print("\n<br /><h1 class=\"error\">Nastala chyba pøi zpracování: $msg!</h1>\n"
+                       ."<p>Mù¾ete tento problém nahlásit <a href=\"mailto:$admin_mail\">správci tohoto webu</a>.</p>\n");
+       footer();
+}
+
+function prepvar($name,$regex=".",$require=true)
+{
+       global $HTTP_GET_VARS,$HTTP_POST_VARS;
+
+            if (isset($HTTP_GET_VARS[$name]))
+               $v=$HTTP_GET_VARS[$name];
+       else if (isset($HTTP_POST_VARS[$name]))
+               $v=$HTTP_POST_VARS[$name];
+       else
+               unset($v);
+
+       $name_html="Parametr <span class=\"quote\">".htmlspecialchars($name)."</span>";
+
+       $regex="^$regex\$";
+       if (isset($v) && !ereg($regex,$v))
+               fatal("$name_html nevyhovuje po¾adovanému regexu <span class=\"quote\">".htmlspecialchars($regex)."</span>");
+       if (!isset($v) && $require)
+               fatal("$name_html je vy¾adován");
+
+       if (!isset($v))
+               return(0);
+
+       global $$name;
+       $$name=$v;
+       return($v);
+}
+
+function db_connect()
+{
+       global $db_host,$db_user,$db_pwd,$db_name;
+       global $db_link;
+
+       if (isset($db_link))
+               return;
+       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());
+}
+
+function db_query($query)
+{
+       global $db_link;
+
+       db_connect();
+       if (!($r=mysql_query($query,$db_link)))
+               fatal("MySQL query \"$query\": ".mysql_error());
+       return($r);
+}
+
+function db_row($query)
+{
+       $q=db_query($query);
+       $r=mysql_fetch_row($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)
+{
+       global $tb_obsah;
+
+       if (!$month_last)
+               $month_last=db_item("select month_last 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",
+                       );
+       return($r);
+}
+
+function img_size($width,$height=0)
+{
+       if (!$height)
+               list($width,$height)=getimagesize($width);
+       return("style=\"border:0;width:${width}px;height:${height}px\" width=\"$width\" height=\"$height\"");
+}
+
+function gsm_banking()
+{
+       return("<img src=\"img/sluzby_bankovni_pggsm.gif\"".img_size(89,31)." alt=\"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 footer()
 {
+       // deadlock prevention:
+       global $footer_passed;
+       if (isset($footer_passed))
+               exit();
+       $footer_passed=true;
+
        global $cvs_id_html,$viewcvs,$viewcvs,$HTTP_SERVER_VARS;
        ?>
 <hr />
 <table border="0" width="100%">
 <tr><td align="left"><span class="cvs-id"><?php print($cvs_id_html); ?></span></td><td align="right"><a
        href="http://validator.w3.org/check/referer"><img src="http://www.w3.org/Icons/valid-xhtml10"
-               style="border:0;width:88px;height:31px" width="88" height="31" alt="Valid XHTML 1.0!" /></a><a
+               <?php print(img_size(88,31)); ?> alt="Valid XHTML 1.0!" /></a><a
        href="http://jigsaw.w3.org/css-validator/validator?warning=2&amp;profile=css2&amp;uri=<?php
                print(addpercents("http://".$HTTP_SERVER_VARS["HTTP_HOST"].$HTTP_SERVER_VARS["REQUEST_URI"]));
                ?>"><img src="http://jigsaw.w3.org/css-validator/images/vcss"
-               style="border:0;width:88px;height:31px" width="88" height="31" alt="Valid CSS!" /></a></td></tr>
+               <?php print(img_size(88,31)); ?> alt="Valid CSS!" /></a></td></tr>
 </table>
 </body></html>
        <?php
+       exit();
 }
 
+// Stolen from: php-manual.html#function.header
+function no_cache()
+{
+       header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");          // Date in the past
+       header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); // always modified
+       header("Cache-Control: no-cache, must-revalidate");        // HTTP/1.1
+       header("Pragma: no-cache");                                // HTTP/1.0
+}
+
+function heading()
+{
+       global $msie_major,$mozilla_major,$title_tail,$head_css,$head;
+
+       header("Content-type: text/html; charset=iso-8859-2");
+       if (!isset($msie_major) || $msie_major>=4)
+               print('<?xml version="1.0" encoding="iso-8859-2"?>'."\n");
 ?>
-<?xml version="1.0" encoding="iso-8859-2"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
 <head><title>Energie &amp; peníze<?php
@@ -47,11 +202,25 @@ function footer()
                print(": $title_tail");
 ?></title>
 <style type="text/css"><!--
-.cvs-id { font-family: monospace; }<?php
+.cvs-id  { font-family: monospace; }
+.error   { color: red;    background-color: transparent; }
+.quote   { font-family: monospace; }
+body {
+               background-color: black;
+               color: white;
+               }
+:link    { color: aqua;   background-color: transparent; }
+:visited { color: teal;   background-color: transparent; }
+h1,h2    { color: yellow; background-color: transparent; }
+<?php
        if (isset($head_css))
-               print($head_css);
+               print(trim($head_css)."\n");
        print("--></style>\n");
        if (isset($head))
                print($head);
+       print("</head><body");
+       if (isset($mozilla_major) && $mozilla_major==4)
+               print(" bgcolor=\"black\" text=\"white\" link=\"cyan\" vlink=\"teal\"");
+       print(">\n");
+}
 ?>
-</head><body>