Mercurial > SimpleWebPresenter
annotate inputParser.inc @ 60:63ea1cfd387d
Branch merge
| author | Tom Fredrik "BFG" Klaussen <bfg@blenning.no> |
|---|---|
| date | Thu, 11 Oct 2012 17:05:25 +0200 |
| parents | 0e157721bbad |
| children | b7efe2ecbc11 |
| 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 ?> |
