diff index.php @ 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
line wrap: on
line diff
--- 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);