Mercurial > SimpleWebPresenter
annotate InputParser.inc @ 63:92c3e52c12d4
Moved inputParser to InputParser
| author | Tom Fredrik "BFG" Klaussen <bfg@blenning.no> |
|---|---|
| date | Thu, 11 Oct 2012 20:26:27 +0200 |
| parents | inputParser.inc@b7efe2ecbc11 |
| children | 74f7b64bdb78 |
| 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 */ |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
6 class InputParser { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
7 private $options; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
8 private $master; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
9 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
10 function __construct($name, $masterCache) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
11 $this->master = new DOMDocument(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
12 $cache = $masterCache; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
13 $cache->cache_time($name); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
14 $this->master->load($name); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
15 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
16 $this->options = new Options($this->master); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
17 $this->options->setCache($cache); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
18 $this->options->setBasePath(basePath()); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
19 $this->options->setCacheable(true); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
20 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
21 $this->options->setUrlParams(array('name', 'lang')); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
22 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
23 if(array_key_exists('lang', $_GET) && $_GET['lang']) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
24 $this->options->setLang($_GET['lang']); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
25 } |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
26 else { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
27 $this->options->setLang($this->options->getDefaultLang()); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
28 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
29 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
30 if(array_key_exists('name', $_GET) && $_GET['name']) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
31 $this->options->setName($_GET['name']); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
32 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
33 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
34 $params = $this->master->getElementsByTagName("param"); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
35 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
36 foreach ($params as $param) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
37 if ($param->getAttribute("type") == "input") { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
38 $doc = self::getInput($this->master, $param, $this->options); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
39 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
40 $parent = $param->parentNode; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
41 foreach ($doc->firstChild->childNodes as $child) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
42 $clonedChild = $this->master->importNode($child, true); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
43 $parent->insertBefore($clonedChild, $param); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
44 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
45 $parent->removeChild($param); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
46 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
47 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
48 $this->master = self::getFiles($this->master, $this->options); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
49 |
|
29
394b5df43d1a
Fix some formatting.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
26
diff
changeset
|
50 } |
|
394b5df43d1a
Fix some formatting.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
26
diff
changeset
|
51 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
52 function genPage() |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
53 { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
54 if (CACHING && $this->options->getCacheable()) |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
55 $this->options->getCache()->CheckHttpModified(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
56 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
57 print $this->master->saveXml($this->master); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
58 //print_r($cache->cacheSet(1)); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
59 } |
|
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
60 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
61 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
62 function getParam($param) |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
63 { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
64 $param_type=$param->getAttribute("type"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
65 $param_value; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
66 if (!$param_type) |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
67 $param_type="scalar"; |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
68 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
69 if($param_type == "scalar") { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
70 $param_subst=$param->getAttribute("subst"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
71 $param_value=$param->getAttribute("value"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
72 if ($param_subst) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
73 /* |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
74 $param_value=preg_replace("/name/", $name, $param_subst); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
75 $param_value=preg_replace('/lang/', $lang, $param_value); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
76 */ |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
77 } |
|
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
78 } |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
79 elseif($param_type == "array") { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
80 $params=$param->getElementsByTagName("param"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
81 $param_value=array(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
82 foreach ($param->childNodes as $param) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
83 if ($param->nodeType == XML_ELEMENT_NODE) |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
84 { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
85 array_push($param_value, self::getParam($param)); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
86 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
87 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
88 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
89 return $param_value; |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
90 } |
|
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
91 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
92 function getFiles($doc, $options) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
93 $lang = $options->getLang(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
94 $conf = $options->getName(); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
95 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
96 $toRemove = array(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
97 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
98 $topLevelTags = $doc->getElementsByTagName("toplevel"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
99 foreach ($topLevelTags as $topLevel) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
100 $topLevel->parentNode->removeChild($topLevel); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
101 } |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
102 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
103 $valueDict = array(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
104 $fragments = array(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
105 $setters = $doc->getElementsByTagName("set"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
106 foreach ($setters as $setTag) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
107 $key = $setTag->getAttribute("id"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
108 $type = $setTag->getAttribute("type"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
109 if ($type == "fragment") { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
110 $fragments[$key] = $setTag; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
111 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
112 else { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
113 $value = $setTag->getAttribute("value"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
114 if ($key && $value) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
115 $valueDict[$key] = $value; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
116 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
117 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
118 //We need to iterate in the opposite direction when removing, |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
119 //so best shifting. |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
120 array_unshift($toRemove, $setTag); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
121 } |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
122 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
123 $params = $doc->getElementsByTagName("param"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
124 foreach ($params as $param) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
125 if ($param->getAttribute("type")=="input_config") { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
126 $id = $param->getAttribute("id"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
127 if (array_key_exists($id, $valueDict)) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
128 $value = $valueDict[$id]; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
129 $tmp = new DOMDocument(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
130 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
131 $tmp->loadXml("<xml>${value}</xml>"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
132 $parent = $param->parentNode; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
133 $parent->insertBefore(new DOMText($tmp->textContent), $param); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
134 //We need to iterate in the opposite direction when removing, |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
135 //so best shifting. |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
136 array_unshift($toRemove, $param); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
137 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
138 elseif (array_key_exists($id, $fragments)) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
139 $fragment = $fragments[$id]; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
140 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
141 $cloneFragment = $fragment->cloneNode(true); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
142 $insNode = $param; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
143 for ($i = $cloneFragment->childNodes->length - 1; $i >= 0; $i--) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
144 $child = $cloneFragment->childNodes->item($i); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
145 $child = $child->parentNode->removeChild($child); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
146 $insNode = $insNode->parentNode->insertBefore($child, $insNode); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
147 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
148 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
149 //We need to iterate in the opposite direction when removing, |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
150 //so best shifting. |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
151 array_unshift($toRemove, $param); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
152 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
153 } |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
154 } |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
155 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
156 foreach($toRemove as $param) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
157 $parent = $param->parentNode; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
158 $parent->removeChild($param); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
159 } |
|
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
160 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
161 $body = getElementByTagName($doc,"body"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
162 $files = $body->getElementsByTagName("file"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
163 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
164 $toRemove = array(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
165 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
166 foreach ($files as $file) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
167 $script = $file->getAttribute("script"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
168 if ($script) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
169 $options->setCacheable(false); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
170 $src=""; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
171 $cwd = getcwd(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
172 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
173 $matches=array(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
174 preg_match('/(.*\/)/', $script, $matches); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
175 $dirname=$matches[0]; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
176 preg_match('/([^\/]*)$/', $script, $matches); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
177 $filename=$matches[0]; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
178 chdir("${lang}/${dirname}"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
179 $pipe=popen("php ${filename}","r"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
180 $file_content = stream_get_contents($pipe); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
181 chdir("${cwd}"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
182 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
183 else { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
184 $src = $file->getAttribute("src"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
185 $fname = $options->getBasePath() . "/${lang}/${src}"; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
186 $file_content = $options->getCache()->loadFile($fname); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
187 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
188 if(floatval($file_content)<0) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
189 errorPage("Resource not found '${lang}/${src}'"); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
190 } |
|
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
191 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
192 $filters = $file->getElementsByTagName("filter"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
193 foreach($filters as $filter) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
194 $func = $filter->getAttribute("function"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
195 $params = $filter->getElementsByTagName("param"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
196 $callString = "\$file_content = ${func}(\$file_content, \$options"; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
197 $param_values = array(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
198 $i = 0; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
199 foreach ($filter->childNodes as $param) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
200 if ($param->nodeType == XML_ELEMENT_NODE) |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
201 { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
202 $param_value[$i] = self::getParam($param); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
203 $callString .= ",\$param_value[$i]"; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
204 $i++; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
205 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
206 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
207 $callString .= ");"; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
208 eval($callString); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
209 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
210 $ndoc = new DOMDocument(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
211 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
212 $ndoc->loadXml("<xml>${file_content}</xml>"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
213 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
214 $parent = $file->parentNode; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
215 foreach ($ndoc->firstChild->childNodes as $child) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
216 $clonedChild = $doc->importNode($child, true); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
217 $parent->insertBefore($clonedChild, $file); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
218 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
219 //We need to iterate in the opposite direction when removing, |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
220 //so best shifting. |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
221 array_unshift($toRemove, $file); |
|
59
0e157721bbad
Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
51
diff
changeset
|
222 } |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
223 foreach($toRemove as $param) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
224 $parent = $param->parentNode; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
225 $parent->removeChild($param); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
226 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
227 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
228 return $doc; |
|
59
0e157721bbad
Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
51
diff
changeset
|
229 } |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
230 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
231 function getInput($master, $param, $options) |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
232 { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
233 $lang = $options->getLang(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
234 $name = $param->getAttribute("id"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
235 $conf = $options->getName(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
236 if (!$conf) |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
237 $conf = $param->getAttribute("default"); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
238 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
239 $confFile = $options->getBasePath() . "/${lang}/${conf}.xml"; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
240 $options->getCache()->cache_time($confFile); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
241 $doc = new DOMDocument(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
242 $doc->load($confFile); |
|
59
0e157721bbad
Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
51
diff
changeset
|
243 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
244 $toplevel = $doc->getElementsByTagName("toplevel"); |
|
59
0e157721bbad
Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
51
diff
changeset
|
245 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
246 if(! $toplevel->length) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
247 errorPage("Resource '${conf}' is not available", 500); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
248 } |
|
59
0e157721bbad
Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
51
diff
changeset
|
249 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
250 $includes = $doc->getElementsByTagName("include"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
251 $recurse = 0; |
|
59
0e157721bbad
Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
51
diff
changeset
|
252 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
253 while($includes->length > 0) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
254 if(++$recurse > MAX_RECURSE) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
255 errorPage('Recursion limit exceeded', 500); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
256 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
257 foreach ($includes as $include) { |
|
59
0e157721bbad
Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
51
diff
changeset
|
258 $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
|
259 $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
|
260 $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
|
261 $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
|
262 $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
|
263 $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
|
264 $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
|
265 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
|
266 $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
|
267 $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
|
268 $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
|
269 } |
|
0e157721bbad
Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
51
diff
changeset
|
270 $parent->removeChild($include); |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
271 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
272 $includes = $doc->getElementsByTagName("include"); |
|
59
0e157721bbad
Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
51
diff
changeset
|
273 } |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
274 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
275 return $doc; |
|
59
0e157721bbad
Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
51
diff
changeset
|
276 } |
|
0e157721bbad
Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
51
diff
changeset
|
277 } |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
278 ?> |
