annotate index.php @ 14:91ee5f49907e

Correct caching. We could probably push caching earlier, but more important that it is correct.
author Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
date Wed, 19 Sep 2012 13:55:58 +0200
parents 19dfa6f3e2be
children a64e8f968e7e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
1 <?php
6
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
2 define(DEBUG,0);
7
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
3 define(MAX_RECURSE,50);
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
4
14
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
5 function include_with_mtime($file) {
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
6 global $newest;
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
7 $mtime = filemtime($file);
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
8 if ($mtime > $newest) {
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
9 $newest = $mtime;
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
10 }
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
11 include $file;
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
12 }
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
13
6
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
14 if (DEBUG) {
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
15 error_reporting(E_ALL);
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
16 ini_set("display_errors", 1);
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
17 }
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
18
14
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
19 $SCRIPT_FILENAME=$_SERVER['SCRIPT_FILENAME'];
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
20 $newest = filemtime($SCRIPT_FILENAME);
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
21 $cachable = true;
6
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
22
14
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
23 include_with_mtime('php/cache_check.inc');
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
24 include_with_mtime('php/accept-language.inc');
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
25 include_with_mtime('php/filters.inc');
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
26 include_with_mtime('php/common-functions.inc');
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
27
14
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
28 $URL_PARAMS=array('name', 'lang');
5
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
29
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
30 #Globals
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
31 $name = $_GET['name'];
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
32 $lang = $_GET['lang'];
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
33
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
34 if(!$name) {
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
35 $name="home";
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
36 }
5
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
37
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
38 if(!$lang) {
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
39 $lang="no";
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
40 $langs=acceptedLanguages();
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
41 foreach ($langs as $l => $val) {
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
42 if (file_exists($l)) {
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
43 $lang=$l;
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
44 break;
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
45 }
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
46 }
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
47 }
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
48
1
d91abe5f6214 Support for evaluated configuration files.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 0
diff changeset
49 $title="Dummy title";
4
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
50
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
51 $config=loadFile("${lang}/${name}.xml");
1
d91abe5f6214 Support for evaluated configuration files.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 0
diff changeset
52
5
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
53 $confFile="${lang}/${name}.xml";
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
54 if (!file_exists($confFile)) {
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
55 errorPage("Resource not available");
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
56 }
4
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
57 $doc = new DOMDocument();
5
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
58 $doc->load($confFile);
4
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
59
7
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
60 $includes=$doc->getElementsByTagName("include");
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
61 $recurse=0;
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
62
14
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
63 while($includes->length > 0) {
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
64 if(++$recurse > MAX_RECURSE) {
7
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
65 errorPage('Recursion limit exceeded', 500);
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
66 }
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
67 foreach ($includes as $include) {
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
68 $src=$include->getAttribute("src");
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
69 $subdoc = new DOMDocument();
14
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
70 $fname = "${lang}/${src}";
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
71 $subdoc->load($fname);
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
72 $mtime = filemtime($fname);
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
73 if ($mtime > $newest) {
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
74 $newest = $mtime;
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
75 }
7
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
76 $parent=$include->parentNode;
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
77 $xml=getElementByTagName($subdoc,"xml");
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
78 foreach($xml->childNodes as $child) {
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
79 $text=$subdoc->saveXml($child);
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
80 $clonedChild=$doc->importNode($child,true);
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
81 $parent->insertBefore($clonedChild,$include);
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
82 }
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
83 $parent->removeChild($include);
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
84 }
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
85 $includes=$doc->getElementsByTagName("include");
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
86 }
350a8c63bd14 Support for recursive includes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 6
diff changeset
87
4
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
88 $head=getElementByTagName($doc,"head");
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
89 $title=$head->getAttribute("title");
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
90
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
91 $css=getElementByTagName($head,"css");
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
92 $css=$doc->saveXML($css);
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
93 $css=preg_replace('/\s*<\/?\s*css\s*>\s*/s', '', $css);
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
94
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
95 $body=getElementByTagName($doc,"body");
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
96 $files=$body->getElementsByTagName("file");
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
97
5
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
98
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
99 $out= '<?xml version="1.0" encoding="UTF-8"?>';
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
100
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
101 $out.= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
102 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
103 <html xmlns="http://www.w3.org/1999/xhtml">
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
104 <head>
5
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
105 <title>';
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
106
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
107 $out.= "$title";
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
108 $out.= '
1
d91abe5f6214 Support for evaluated configuration files.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 0
diff changeset
109 </title>
5
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
110 ';
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
111 $out.= "$css";
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
112 $out.= '
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
113 </head>
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
114 <body>
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
115 <div id="container">
5
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
116 ';
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
117
6
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
118 function getParam($param) {
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
119 $param_type=$param->getAttribute("type");
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
120 $param_value;
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
121 if (!$param_type)
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
122 $param_type="scalar";
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
123
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
124 if($param_type == "scalar") {
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
125 $param_subst=$param->getAttribute("subst");
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
126 $param_value=$param->getAttribute("value");
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
127 if ($param_subst) {
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
128 /*
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
129 $param_value=preg_replace("/name/", $name, $param_subst);
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
130 $param_value=preg_replace('/lang/', $lang, $param_value);
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
131 */
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
132 }
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
133 }
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
134 elseif($param_type == "array") {
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
135 $params=$param->getElementsByTagName("param");
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
136 $param_value=array();
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
137 foreach ($param->childNodes as $param) {
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
138 if ($param->nodeType == XML_ELEMENT_NODE)
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
139 {
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
140 array_push($param_value, getParam($param));
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
141 }
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
142 }
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
143 }
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
144 return $param_value;
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
145 }
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
146
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
147 foreach ($files as $file) {
8
19dfa6f3e2be Support for scripts.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 7
diff changeset
148 $script=$file->getAttribute("script");
19dfa6f3e2be Support for scripts.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 7
diff changeset
149 if ($script) {
14
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
150 $cachable = false;
8
19dfa6f3e2be Support for scripts.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 7
diff changeset
151 $src="";
19dfa6f3e2be Support for scripts.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 7
diff changeset
152 $cwd=getcwd();
19dfa6f3e2be Support for scripts.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 7
diff changeset
153
19dfa6f3e2be Support for scripts.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 7
diff changeset
154 $matches=array();
19dfa6f3e2be Support for scripts.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 7
diff changeset
155 preg_match('/(.*\/)/', $script, $matches);
19dfa6f3e2be Support for scripts.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 7
diff changeset
156 $dirname=$matches[0];
19dfa6f3e2be Support for scripts.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 7
diff changeset
157 preg_match('/([^\/]*)$/', $script, $matches);
19dfa6f3e2be Support for scripts.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 7
diff changeset
158 $filename=$matches[0];
19dfa6f3e2be Support for scripts.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 7
diff changeset
159 chdir("${lang}/${dirname}");
19dfa6f3e2be Support for scripts.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 7
diff changeset
160 $pipe=popen("php ${filename}","r");
19dfa6f3e2be Support for scripts.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 7
diff changeset
161 $file_content = stream_get_contents($pipe);
19dfa6f3e2be Support for scripts.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 7
diff changeset
162 chdir("${cwd}");
19dfa6f3e2be Support for scripts.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 7
diff changeset
163 }
19dfa6f3e2be Support for scripts.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 7
diff changeset
164 else {
19dfa6f3e2be Support for scripts.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 7
diff changeset
165 $src=$file->getAttribute("src");
14
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
166 $fname = "${lang}/${src}";
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
167 $mtime = filemtime($fname);
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
168 if ($mtime > $newest) {
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
169 $newest = $mtime;
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
170 }
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
171 $file_content=loadFile($fname);
8
19dfa6f3e2be Support for scripts.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 7
diff changeset
172 }
5
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
173 if(floatval($file_content)<0) {
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
174 errorPage("Resource not found '${lang}/${src}'");
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
175 }
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
176
4
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
177 $filters=$file->getElementsByTagName("filter");
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
178 foreach($filters as $filter) {
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
179 $func=$filter->getAttribute("function");
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
180 $params=$filter->getElementsByTagName("param");
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
181 $callString="\$file_content=${func}(\$file_content";
6
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
182 $param_values=array();
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
183 $i=0;
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
184 foreach ($filter->childNodes as $param) {
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
185 if ($param->nodeType == XML_ELEMENT_NODE)
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
186 {
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
187 $param_value[$i]=getParam($param);
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
188 $callString.=",\$param_value[$i]";
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
189 $i++;
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 5
diff changeset
190 }
4
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
191 }
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
192 $callString.=");";
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
193 eval($callString);
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
194 }
5
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
195 $out.= $file_content;
4
74196528fc64 Refac to use xml as input, and remove filters and helper-functions from
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 3
diff changeset
196 }
14
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
197 if ($cachable)
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
198 cache_check($newest);
91ee5f49907e Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 8
diff changeset
199
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
200
5
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
201 $out.='
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
202 </div>
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
203 </body>
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
204 </html>
5
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
205 ';
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
206
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
207 print $out;
18aafb1a8986 Better handling of errors and globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 4
diff changeset
208 ?>