changeset 4:74196528fc64

Refac to use xml as input, and remove filters and helper-functions from main script.
author Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
date Thu, 19 May 2011 18:04:33 +0200
parents 238c5127b78c
children 18aafb1a8986
files common-functions.inc filters.inc index.php
diffstat 3 files changed, 118 insertions(+), 70 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common-functions.inc	Thu May 19 18:04:33 2011 +0200
@@ -0,0 +1,24 @@
+<?php
+function loadFile($sFilename, $sCharset = 'UTF-8')
+{
+    if (floatval(phpversion()) >= 4.3) {
+      if (!file_exists($sFilename)) return -3;
+      $sData = file_get_contents($sFilename);
+    } else {
+        if (!file_exists($sFilename)) return -3;
+        $rHandle = fopen($sFilename, 'r');
+        if (!$rHandle) return -2;
+
+        $sData = '';
+        while(!feof($rHandle))
+            $sData .= fread($rHandle, filesize($sFilename));
+        fclose($rHandle);
+    }
+    if ($sEncoding = mb_detect_encoding($sData, 'auto', true) != $sCharset) {
+       if ($sEncoding != 1) {
+       	 $sData = mb_convert_encoding($sData, $sCharset, $sEncoding);
+       }
+    }
+    return $sData;
+}
+?>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filters.inc	Thu May 19 18:04:33 2011 +0200
@@ -0,0 +1,35 @@
+<?php
+function activeNav($input, $name, $lang)
+{
+	$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=\"?name=$1&amp;lang=${lang}\">\$3</a></li>";
+	$output=preg_replace($pattern, $replacement, $output);
+
+	return $output;
+}
+
+function addLangBar($input, $lang) {
+	 $languages = array("no","en");
+	 $langbar='<ul id="language-select">';
+
+	 foreach($languages as $l) {
+	   $active=($l == $lang)?1:0;
+	     $langbar.= "
+	    <li class=\"${l}\">
+	      <img src=\"http://dev.bfginvest.no/php/flag.php?lang=${l}&amp;active=${active}\" width=\"20\" height=\"16\" alt=\"Norsk versjon - inaktiv\" title=\"Norsk\"/>
+	    </li>
+";
+
+	}
+	$langbar.='</ul>';
+	$pattern = '/<ul id="language-select"\/>/';
+	$replacement = $langbar;
+	$output=preg_replace($pattern, $replacement, $input);
+
+	return $output;
+}
+?>
\ No newline at end of file
--- a/index.php	Tue May 10 19:08:48 2011 +0200
+++ b/index.php	Thu May 19 18:04:33 2011 +0200
@@ -1,30 +1,8 @@
 <?php
 include 'php/cache_check.inc';
 include 'php/accept-language.inc';
-
-function loadFile($sFilename, $sCharset = 'UTF-8')
-{
-    if (floatval(phpversion()) >= 4.3) {
-      if (!file_exists($sFilename)) return -3;
-      $sData = file_get_contents($sFilename);
-    } else {
-        if (!file_exists($sFilename)) return -3;
-        $rHandle = fopen($sFilename, 'r');
-        if (!$rHandle) return -2;
-
-        $sData = '';
-        while(!feof($rHandle))
-            $sData .= fread($rHandle, filesize($sFilename));
-        fclose($rHandle);
-    }
-    if ($sEncoding = mb_detect_encoding($sData, 'auto', true) != $sCharset) {
-       if ($sEncoding != 1) {
-       	 $sData = mb_convert_encoding($sData, $sCharset, $sEncoding);
-       }
-    }
-    return $sData;
-}
-
+include 'php/filters.inc';
+include 'php/common-functions.inc';
 
 $name = $_GET['name'];
 $lang = $_GET['lang'];
@@ -44,23 +22,30 @@
 }
 
 $title="Dummy title";
-$header="header.html";
-$footer="footer.html";
-$body="body.html";
+
+$config=loadFile("${lang}/${name}.xml");
 
-$config=loadFile("${lang}/${name}.cfg");
+function getElementByTagName($obj, $name) {
+  $elems=$obj->getElementsByTagName($name);
+  if ($elems->length != 1) {
+    exit;
+  }
+  $elem=$elems->item(0);
+  return $elem;
+}
 
-eval($config);
-$body_content=loadFile("${lang}/${body}");
-if(floatval($body_content)<0) {
-  header('HTTP/1.0 404 Not Found');
-  $body_content='<div id="page"><h1>Resource not found</h1></div>';
-}
-if (!file_exists($lang)) {
-  $lang=no;
-  header('HTTP/1.0 404 Not Found');
-  $body_content='<div id="page"><h1>Language is not available</h1></div>';
-}
+$doc = new DOMDocument();
+$doc->load("${lang}/${name}.xml");
+  
+$head=getElementByTagName($doc,"head");
+$title=$head->getAttribute("title");
+
+$css=getElementByTagName($head,"css");
+$css=$doc->saveXML($css);
+$css=preg_replace('/\s*<\/?\s*css\s*>\s*/s', '', $css);
+
+$body=getElementByTagName($doc,"body");
+$files=$body->getElementsByTagName("file");
 
 print '<?xml version="1.0" encoding="UTF-8"?>';
 ?>
@@ -81,38 +66,42 @@
       <div id="container">
 
 <?php
-$header_content=loadFile("${lang}/${header}");
-$footer_content=loadFile("${lang}/${footer}");
-
-$pattern = "/<li id=\"${name}\"\s?([^>]*)>/is";
-$replacement = "<li id=\"${name}\" class=\"active\" $1>";
-$header_content= preg_replace($pattern, $replacement, $header_content);
-
-$pattern = '/<li id="([^"]+)"\s?([^>]*)>(.*?)<\/li>/is';
-$replacement = "<li id=\"\$1\" \$2><a href=\"?name=$1&lang=${lang}\">\$3</a></li>";
-$header_content=preg_replace($pattern, $replacement, $header_content);
-
-$languages = array("no","en");
-$langbar='<ul id="language-select">';
-
-foreach($languages as $l) {
-  $active=($l == $lang)?1:0;
-  $langbar.= "
-	    <li class=\"norwegian\">
-	      <img src=\"http://dev.bfginvest.no/php/flag.php?lang=${l}&active=${active}\" width=\"20\" height=\"16\" alt=\"Norsk versjon - inaktiv\" title=\"Norsk\"/>
-	    </li>
-";
-
+foreach ( $files as $file) {
+	$src=$file->getAttribute("src");
+	$file_content=loadFile("${lang}/${src}");
+//	print $file_content;
+	$filters=$file->getElementsByTagName("filter");
+	foreach($filters as $filter) {
+	  $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}\"";
+	  }
+	  $callString.=");";
+	  eval($callString);
+        }
+        print $file_content;
 }
-$langbar.='</ul>';
-$pattern = '/<ul id="language-select"\/>/';
-$replacement = $langbar;
-$header_content=preg_replace($pattern, $replacement, $header_content);
-
-print $header_content;
-print $body_content;
-print $footer_content;
-
+        
+/*
+$body_content=loadFile("${lang}/${body}");
+if(floatval($body_content)<0) {
+  header('HTTP/1.0 404 Not Found');
+  $body_content='<div id="page"><h1>Resource not found</h1></div>';
+}
+if (!file_exists($lang)) {
+  $lang=no;
+  header('HTTP/1.0 404 Not Found');
+  $body_content='<div id="page"><h1>Language is not available</h1></div>';
+}
+*/
 
 ?>