changeset 6:6c0162497d56

Improved error reporting, and support for multilevel params.
author Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
date Fri, 20 May 2011 22:28:03 +0200
parents 18aafb1a8986
children 350a8c63bd14
files cache_check.inc common-functions.inc filters.inc index.php
diffstat 4 files changed, 71 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/cache_check.inc	Fri May 20 13:25:53 2011 +0200
+++ b/cache_check.inc	Fri May 20 22:28:03 2011 +0200
@@ -1,6 +1,11 @@
 <?php
+if (DEBUG)
+  var_dump($_SERVER);
+
+$HTTP_IF_MODIFIED_SINCE=$_SERVER['HTTP_IF_MODIFIED_SINCE'];
 $if_modified_since = preg_replace('/;.*$/', '', $HTTP_IF_MODIFIED_SINCE);
 
+$SCRIPT_FILENAME=$_SERVER['SCRIPT_FILENAME'];
 $mtime = filemtime($SCRIPT_FILENAME);
 $gmdate_mod = gmdate('D, d M Y H:i:s', $mtime) . ' GMT';
 
--- a/common-functions.inc	Fri May 20 13:25:53 2011 +0200
+++ b/common-functions.inc	Fri May 20 22:28:03 2011 +0200
@@ -51,4 +51,13 @@
 	 }
 	 return $out;
 }
+
+function getElementByTagName($obj, $name) {
+  $elems=$obj->getElementsByTagName($name);
+  if ($elems->length != 1) {
+    exit;
+  }
+  $elem=$elems->item(0);
+  return $elem;
+}
 ?>
\ No newline at end of file
--- a/filters.inc	Fri May 20 13:25:53 2011 +0200
+++ b/filters.inc	Fri May 20 22:28:03 2011 +0200
@@ -6,18 +6,23 @@
 	$pattern = "/<li id=\"${name}\"\s?([^>]*)>/is";
 	$replacement = "<li id=\"${name}\" class=\"active\" $1>";
 	$output= preg_replace($pattern, $replacement, $input);
-	
+
 	$pattern = '/<li id="([^"]+)"\s?([^>]*)>(.*?)<\/li>/is';
-	$replacement = "<li id=\"\$1\" \$2><a href=\"".genUrl(array( "name" => "$1" ))."\">\$3</a></li>";
-	$output=preg_replace($pattern, $replacement, $output);
+	$replacement = "<li id=\"\$1\" \$2><a href=\"%URL-$1%\">\$3</a></li>";
+	$output=preg_replace_callback($pattern, 
+	create_function(
+	  '$matches', 
+	'return "<li id=\"$matches[1]\" $matches[2]><a href=\"".genUrl(array("name" => $matches[1]))."\">$matches[3]</a></li>";'
+	), 
+	$output);
 
 	return $output;
 }
 
-function addLangBar($input) {
+function addLangBar($input, $languages) {
 	 $name=$GLOBALS['name'];
 	 $lang=$GLOBALS['lang'];
-	 $languages = array("no","en");
+//	 $languages = array("no","en");
 	 $langbar='<ul id="language-select">';
 
 	 foreach($languages as $l) {
@@ -25,7 +30,7 @@
 	     $langbar.= "
 	    <li class=\"${l}\">";
 	    if ($active) 
-	    $langbar.='<a href="'.genUrl(array( lang => $l)).'">';
+	    $langbar.='<a href="'.genUrl(array( 'lang' => $l)).'">';
 
 	    $langbar.= "
 	      <img src=\"http://dev.bfginvest.no/php/flag.php?lang=${l}&amp;active=${active}\" width=\"20\" height=\"16\" alt=\"Norsk versjon - inaktiv\" title=\"Norsk\"/>";
--- a/index.php	Fri May 20 13:25:53 2011 +0200
+++ b/index.php	Fri May 20 22:28:03 2011 +0200
@@ -1,4 +1,11 @@
 <?php
+define(DEBUG,0);
+if (DEBUG) {
+  error_reporting(E_ALL);
+  ini_set("display_errors", 1);
+}
+
+
 include 'php/cache_check.inc';
 include 'php/accept-language.inc';
 include 'php/filters.inc';
@@ -29,15 +36,6 @@
 
 $config=loadFile("${lang}/${name}.xml");
 
-function getElementByTagName($obj, $name) {
-  $elems=$obj->getElementsByTagName($name);
-  if ($elems->length != 1) {
-    exit;
-  }
-  $elem=$elems->item(0);
-  return $elem;
-}
-
 $confFile="${lang}/${name}.xml";
 if (!file_exists($confFile)) {
    errorPage("Resource not available");
@@ -75,7 +73,36 @@
       <div id="container">
 ';
 
-foreach ( $files as $file) {
+function getParam($param) {
+  $param_type=$param->getAttribute("type");
+  $param_value;
+  if (!$param_type)
+    $param_type="scalar";
+
+  if($param_type == "scalar") {
+    $param_subst=$param->getAttribute("subst");
+    $param_value=$param->getAttribute("value");
+    if ($param_subst) {
+      /*
+      $param_value=preg_replace("/name/", $name, $param_subst);
+      $param_value=preg_replace('/lang/', $lang, $param_value);
+      */
+    }
+  }
+  elseif($param_type == "array") {
+	  $params=$param->getElementsByTagName("param");
+	  $param_value=array();
+	  foreach ($param->childNodes as $param) {
+	    if ($param->nodeType == XML_ELEMENT_NODE)
+	    {
+	      array_push($param_value, getParam($param));            
+	    }
+	  }
+  }
+  return $param_value;
+}
+
+foreach ($files as $file) {
 	$src=$file->getAttribute("src");
 	$file_content=loadFile("${lang}/${src}");
 	if(floatval($file_content)<0) {
@@ -87,14 +114,15 @@
 	  $func=$filter->getAttribute("function");
 	  $params=$filter->getElementsByTagName("param");
 	  $callString="\$file_content=${func}(\$file_content";
-	  foreach ($params as $param) {
-	  	  $param_subst=$param->getAttribute("subst");
-	  	  $param_value=$param->getAttribute("value");
-		  if ($param_subst) {
-	  	    $param_value=preg_replace("/name/", $name, $param_subst);
-	  	    $param_value=preg_replace('/lang/', $lang, $param_value);
-                  }
-		  $callString.=",\"${param_value}\"";
+	  $param_values=array();
+	  $i=0;
+	  foreach ($filter->childNodes as $param) {
+	    if ($param->nodeType == XML_ELEMENT_NODE)
+	    {
+	      $param_value[$i]=getParam($param);
+	      $callString.=",\$param_value[$i]";
+	      $i++;
+	    }
 	  }
 	  $callString.=");";
 	  eval($callString);