annotate inputParser.inc @ 59:0e157721bbad

Change the way we parse input files, preparing for more reasonable caching strategy.
author Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
date Thu, 11 Oct 2012 16:40:03 +0200
parents 2cfea6e84694
children b7efe2ecbc11
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
1 <?php
51
2cfea6e84694 Documentation update.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 39
diff changeset
2 /**
2cfea6e84694 Documentation update.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 39
diff changeset
3 * @file
2cfea6e84694 Documentation update.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 39
diff changeset
4 * Functionality for translating an XML document into a webpage
2cfea6e84694 Documentation update.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 39
diff changeset
5 */
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
6 function getParam($param)
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
7 {
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
8 $param_type=$param->getAttribute("type");
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
9 $param_value;
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
10 if (!$param_type)
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
11 $param_type="scalar";
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
12
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
13 if($param_type == "scalar") {
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
14 $param_subst=$param->getAttribute("subst");
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
15 $param_value=$param->getAttribute("value");
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
16 if ($param_subst) {
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
17 /*
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
18 $param_value=preg_replace("/name/", $name, $param_subst);
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
19 $param_value=preg_replace('/lang/', $lang, $param_value);
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
20 */
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
21 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
22 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
23 elseif($param_type == "array") {
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
24 $params=$param->getElementsByTagName("param");
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
25 $param_value=array();
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
26 foreach ($param->childNodes as $param) {
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
27 if ($param->nodeType == XML_ELEMENT_NODE)
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
28 {
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
29 array_push($param_value, getParam($param));
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
30 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
31 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
32 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
33 return $param_value;
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
34 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
35
59
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
36 function getFiles($doc, $options) {
26
d8c7b328899e Removed globals, and introduced Options object for passing values
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 23
diff changeset
37 $lang = $options->getLang();
d8c7b328899e Removed globals, and introduced Options object for passing values
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 23
diff changeset
38 $conf = $options->getName();
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
39
59
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
40 $toRemove = array();
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
41
59
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
42 $topLevelTags = $doc->getElementsByTagName("toplevel");
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
43 foreach ($topLevelTags as $topLevel) {
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
44 $topLevel->parentNode->removeChild($topLevel);
29
394b5df43d1a Fix some formatting.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 26
diff changeset
45 }
394b5df43d1a Fix some formatting.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 26
diff changeset
46
59
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
47 $valueDict = array();
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
48 $fragments = array();
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
49 $setters = $doc->getElementsByTagName("set");
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
50 foreach ($setters as $setTag) {
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
51 $key = $setTag->getAttribute("id");
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
52 $type = $setTag->getAttribute("type");
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
53 if ($type == "fragment") {
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
54 $fragments[$key] = $setTag;
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
55 }
59
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
56 else {
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
57 $value = $setTag->getAttribute("value");
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
58 if ($key && $value) {
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
59 $valueDict[$key] = $value;
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
60 }
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
61 }
59
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
62 //We need to iterate in the opposite direction when removing,
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
63 //so best shifting.
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
64 array_unshift($toRemove, $setTag);
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
65 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
66
59
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
67 $params = $doc->getElementsByTagName("param");
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
68 foreach ($params as $param) {
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
69 if ($param->getAttribute("type")=="input_config") {
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
70 $id = $param->getAttribute("id");
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
71 if (array_key_exists($id, $valueDict)) {
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
72 $value = $valueDict[$id];
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
73 $tmp = new DOMDocument();
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
74
59
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
75 $tmp->loadXml("<xml>${value}</xml>");
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
76 $parent = $param->parentNode;
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
77 $parent->insertBefore(new DOMText($tmp->textContent), $param);
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
78 //We need to iterate in the opposite direction when removing,
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
79 //so best shifting.
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
80 array_unshift($toRemove, $param);
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
81 }
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
82 elseif (array_key_exists($id, $fragments)) {
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
83 $fragment = $fragments[$id];
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
84
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
85 $cloneFragment = $fragment->cloneNode(true);
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
86 $insNode = $param;
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
87 for ($i = $cloneFragment->childNodes->length - 1; $i >= 0; $i--) {
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
88 $child = $cloneFragment->childNodes->item($i);
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
89 $child = $child->parentNode->removeChild($child);
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
90 $insNode = $insNode->parentNode->insertBefore($child, $insNode);
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
91 }
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
92
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
93 //We need to iterate in the opposite direction when removing,
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
94 //so best shifting.
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
95 array_unshift($toRemove, $param);
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
96 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
97 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
98 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
99
59
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
100 foreach($toRemove as $param) {
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
101 $parent = $param->parentNode;
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
102 $parent->removeChild($param);
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
103 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
104
59
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
105 $body = getElementByTagName($doc,"body");
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
106 $files = $body->getElementsByTagName("file");
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
107
59
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
108 $toRemove = array();
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
109
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
110 foreach ($files as $file) {
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
111 $script=$file->getAttribute("script");
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
112 if ($script) {
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
113 $cacheable = false;
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
114 $src="";
39
bd82b719a0de Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 38
diff changeset
115 $cwd = getcwd();
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
116
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
117 $matches=array();
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
118 preg_match('/(.*\/)/', $script, $matches);
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
119 $dirname=$matches[0];
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
120 preg_match('/([^\/]*)$/', $script, $matches);
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
121 $filename=$matches[0];
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
122 chdir("${lang}/${dirname}");
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
123 $pipe=popen("php ${filename}","r");
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
124 $file_content = stream_get_contents($pipe);
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
125 chdir("${cwd}");
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
126 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
127 else {
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
128 $src = $file->getAttribute("src");
39
bd82b719a0de Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 38
diff changeset
129 $fname = $options->getBasePath() . "/${lang}/${src}";
38
42533600214b Rename cache_check.inc to CacheTimeCheck.inc.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 33
diff changeset
130 $file_content = $options->getCache()->loadFile($fname);
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
131 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
132 if(floatval($file_content)<0) {
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
133 errorPage("Resource not found '${lang}/${src}'");
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
134 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
135
59
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
136 $filters = $file->getElementsByTagName("filter");
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
137 foreach($filters as $filter) {
33
511b6514823f Remove more globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 32
diff changeset
138 $func = $filter->getAttribute("function");
511b6514823f Remove more globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 32
diff changeset
139 $params = $filter->getElementsByTagName("param");
511b6514823f Remove more globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 32
diff changeset
140 $callString = "\$file_content = ${func}(\$file_content, \$options";
511b6514823f Remove more globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 32
diff changeset
141 $param_values = array();
511b6514823f Remove more globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 32
diff changeset
142 $i = 0;
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
143 foreach ($filter->childNodes as $param) {
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
144 if ($param->nodeType == XML_ELEMENT_NODE)
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
145 {
33
511b6514823f Remove more globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 32
diff changeset
146 $param_value[$i] = getParam($param);
511b6514823f Remove more globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 32
diff changeset
147 $callString .= ",\$param_value[$i]";
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
148 $i++;
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
149 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
150 }
33
511b6514823f Remove more globals.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 32
diff changeset
151 $callString .= ");";
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
152 eval($callString);
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
153 }
59
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
154 $ndoc = new DOMDocument();
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
155
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
156 $ndoc->loadXml("<xml>${file_content}</xml>");
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
157
59
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
158 $parent = $file->parentNode;
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
159 foreach ($ndoc->firstChild->childNodes as $child) {
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
160 $clonedChild = $doc->importNode($child, true);
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
161 $parent->insertBefore($clonedChild, $file);
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
162 }
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
163 //We need to iterate in the opposite direction when removing,
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
164 //so best shifting.
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
165 array_unshift($toRemove, $file);
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
166 }
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
167 foreach($toRemove as $param) {
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
168 $parent = $param->parentNode;
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
169 $parent->removeChild($param);
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
170 }
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
171
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
172 return $doc;
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
173 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
174
59
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
175 function getInput($master, $param, $options)
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
176 {
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
177 $lang = $options->getLang();
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
178 $name = $param->getAttribute("id");
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
179 $conf = $options->getName();
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
180 if (!$conf)
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
181 $conf = $param->getAttribute("default");
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
182
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
183 $confFile = $options->getBasePath() . "/${lang}/${conf}.xml";
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
184 $options->getCache()->cache_time($confFile);
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
185 $doc = new DOMDocument();
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
186 $doc->load($confFile);
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
187
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
188 $toplevel = $doc->getElementsByTagName("toplevel");
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
189
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
190 if(! $toplevel->length) {
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
191 errorPage("Resource '${conf}' is not available", 500);
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
192 }
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
193
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
194 $includes = $doc->getElementsByTagName("include");
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
195 $recurse = 0;
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
196
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
197 while($includes->length > 0) {
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
198 if(++$recurse > MAX_RECURSE) {
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
199 errorPage('Recursion limit exceeded', 500);
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
200 }
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
201 foreach ($includes as $include) {
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
202 $src = $include->getAttribute("src");
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
203 $subdoc = new DOMDocument();
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
204 $subfile = $options->getBasePath() . "/${lang}/${src}";
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
205 $subdoc->load("$subfile");
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
206 $options->getCache()->cache_time($subfile);
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
207 $parent = $include->parentNode;
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
208 $xml = getElementByTagName($subdoc,"xml");
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
209 foreach($xml->childNodes as $child) {
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
210 $text = $subdoc->saveXml($child);
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
211 $clonedChild = $doc->importNode($child,true);
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
212 $parent->insertBefore($clonedChild,$include);
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
213 }
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
214 $parent->removeChild($include);
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
215 }
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
216 $includes = $doc->getElementsByTagName("include");
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
217 }
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
218
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
219 return $doc;
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
220 }
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
221 ?>