Mercurial > SimpleWebPresenter
annotate InputParser.inc @ 69:dd4ddedca4c5
Add convenience header ScriptIncludeCache
Split CacheTimeCheck and FileCacheSet
| author | Tom Fredrik "BFG" Klaussen <bfg@blenning.no> |
|---|---|
| date | Thu, 11 Oct 2012 23:32:14 +0200 |
| parents | 4dfa3f6a2dc1 |
| children | 7c68015b211a |
| 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 /** |
|
66
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
3 * Functionality for translating an XML configuration document into a webpage |
|
51
2cfea6e84694
Documentation update.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
39
diff
changeset
|
4 */ |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
5 class InputParser { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
6 private $options; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
7 private $master; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
8 |
|
66
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
9 /** |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
10 * Constructs a new InputParser object |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
11 * |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
12 * @param $name name of file to read configuration from |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
13 * |
|
69
dd4ddedca4c5
Add convenience header ScriptIncludeCache
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
68
diff
changeset
|
14 * @param $masterCache CacheTimeCheck cache object to use as parent |
|
dd4ddedca4c5
Add convenience header ScriptIncludeCache
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
68
diff
changeset
|
15 * for this inputParsercache |
|
66
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
16 */ |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
17 function __construct($name, $masterCache) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
18 $this->master = new DOMDocument(); |
|
68
4dfa3f6a2dc1
Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
66
diff
changeset
|
19 $cache = new CacheTimeCheck($name); |
|
4dfa3f6a2dc1
Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
66
diff
changeset
|
20 $cache->addParent($masterCache); |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
21 $this->master->load($name); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
22 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
23 $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
|
24 $this->options->setCache($cache); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
25 $this->options->setBasePath(basePath()); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
26 $this->options->setCacheable(true); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
27 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
28 $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
|
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('lang', $_GET) && $_GET['lang']) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
31 $this->options->setLang($_GET['lang']); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
32 } |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
33 else { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
34 $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
|
35 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
36 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
37 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
|
38 $this->options->setName($_GET['name']); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
39 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
40 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
41 $params = $this->master->getElementsByTagName("param"); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
42 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
43 foreach ($params as $param) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
44 if ($param->getAttribute("type") == "input") { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
45 $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
|
46 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
47 $parent = $param->parentNode; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
48 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
|
49 $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
|
50 $parent->insertBefore($clonedChild, $param); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
51 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
52 $parent->removeChild($param); |
|
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 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
55 $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
|
56 |
|
29
394b5df43d1a
Fix some formatting.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
26
diff
changeset
|
57 } |
|
394b5df43d1a
Fix some formatting.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
26
diff
changeset
|
58 |
|
66
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
59 /** |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
60 * Generate an appropriate response for this page, eg. 302 NOT |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
61 * MODIFIED or the actual page |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
62 */ |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
63 function genPage() |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
64 { |
|
68
4dfa3f6a2dc1
Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
66
diff
changeset
|
65 //print_r($this->options->getCache()->cacheSet(1)); |
|
4dfa3f6a2dc1
Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
66
diff
changeset
|
66 //exit; |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
67 if (CACHING && $this->options->getCacheable()) |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
68 $this->options->getCache()->CheckHttpModified(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
69 print $this->master->saveXml($this->master); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
70 } |
|
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
71 |
|
66
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
72 /** |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
73 * Extracts data from a @<param@> tag. |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
74 * |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
75 * @param $param the param tag |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
76 * |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
77 * @return if the type is array, return an array, otherwise return a |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
78 * scalar |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
79 */ |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
80 function getParam($param) |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
81 { |
|
66
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
82 $param_type = $param->getAttribute("type"); |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
83 $param_value; |
|
66
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
84 if (! $param_type) |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
85 $param_type = "scalar"; |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
86 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
87 if($param_type == "scalar") { |
|
66
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
88 $param_subst = $param->getAttribute("subst"); |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
89 $param_value = $param->getAttribute("value"); |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
90 if ($param_subst) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
91 /* |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
92 $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
|
93 $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
|
94 */ |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
95 } |
|
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
96 } |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
97 elseif($param_type == "array") { |
|
66
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
98 $params = $param->getElementsByTagName("param"); |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
99 $param_value = array(); |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
100 foreach ($param->childNodes as $param) { |
|
66
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
101 if ($param->nodeType == XML_ELEMENT_NODE) { |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
102 array_push($param_value, self::getParam($param)); |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
103 } |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
104 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
105 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
106 return $param_value; |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
107 } |
|
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
108 |
|
66
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
109 /** |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
110 * This is the last processing stage for generating a file. |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
111 * |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
112 * @param $doc the document to be worked upon |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
113 * @param $options an Options object for this file. |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
114 * |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
115 * @return This is the same as the input document, fully processed |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
116 */ |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
117 static function getFiles($doc, $options) { |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
118 $lang = $options->getLang(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
119 $conf = $options->getName(); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
120 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
121 $toRemove = array(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
122 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
123 $topLevelTags = $doc->getElementsByTagName("toplevel"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
124 foreach ($topLevelTags as $topLevel) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
125 $topLevel->parentNode->removeChild($topLevel); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
126 } |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
127 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
128 $valueDict = array(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
129 $fragments = array(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
130 $setters = $doc->getElementsByTagName("set"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
131 foreach ($setters as $setTag) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
132 $key = $setTag->getAttribute("id"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
133 $type = $setTag->getAttribute("type"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
134 if ($type == "fragment") { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
135 $fragments[$key] = $setTag; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
136 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
137 else { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
138 $value = $setTag->getAttribute("value"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
139 if ($key && $value) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
140 $valueDict[$key] = $value; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
141 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
142 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
143 //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
|
144 //so best shifting. |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
145 array_unshift($toRemove, $setTag); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
146 } |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
147 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
148 $params = $doc->getElementsByTagName("param"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
149 foreach ($params as $param) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
150 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
|
151 $id = $param->getAttribute("id"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
152 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
|
153 $value = $valueDict[$id]; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
154 $tmp = new DOMDocument(); |
|
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 $tmp->loadXml("<xml>${value}</xml>"); |
|
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->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
|
159 //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
|
160 //so best shifting. |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
161 array_unshift($toRemove, $param); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
162 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
163 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
|
164 $fragment = $fragments[$id]; |
|
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 $cloneFragment = $fragment->cloneNode(true); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
167 $insNode = $param; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
168 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
|
169 $child = $cloneFragment->childNodes->item($i); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
170 $child = $child->parentNode->removeChild($child); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
171 $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
|
172 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
173 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
174 //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
|
175 //so best shifting. |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
176 array_unshift($toRemove, $param); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
177 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
178 } |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
179 } |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
180 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
181 foreach($toRemove as $param) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
182 $parent = $param->parentNode; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
183 $parent->removeChild($param); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
184 } |
|
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
185 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
186 $body = getElementByTagName($doc,"body"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
187 $files = $body->getElementsByTagName("file"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
188 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
189 $toRemove = array(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
190 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
191 foreach ($files as $file) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
192 $script = $file->getAttribute("script"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
193 if ($script) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
194 $options->setCacheable(false); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
195 $src=""; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
196 $cwd = getcwd(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
197 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
198 $matches=array(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
199 preg_match('/(.*\/)/', $script, $matches); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
200 $dirname=$matches[0]; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
201 preg_match('/([^\/]*)$/', $script, $matches); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
202 $filename=$matches[0]; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
203 chdir("${lang}/${dirname}"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
204 $pipe=popen("php ${filename}","r"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
205 $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
|
206 chdir("${cwd}"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
207 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
208 else { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
209 $src = $file->getAttribute("src"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
210 $fname = $options->getBasePath() . "/${lang}/${src}"; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
211 $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
|
212 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
213 if(floatval($file_content)<0) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
214 errorPage("Resource not found '${lang}/${src}'"); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
215 } |
|
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
216 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
217 $filters = $file->getElementsByTagName("filter"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
218 foreach($filters as $filter) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
219 $func = $filter->getAttribute("function"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
220 $params = $filter->getElementsByTagName("param"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
221 $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
|
222 $param_values = array(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
223 $i = 0; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
224 foreach ($filter->childNodes as $param) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
225 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
|
226 { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
227 $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
|
228 $callString .= ",\$param_value[$i]"; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
229 $i++; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
230 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
231 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
232 $callString .= ");"; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
233 eval($callString); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
234 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
235 $ndoc = new DOMDocument(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
236 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
237 $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
|
238 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
239 $parent = $file->parentNode; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
240 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
|
241 $clonedChild = $doc->importNode($child, true); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
242 $parent->insertBefore($clonedChild, $file); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
243 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
244 //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
|
245 //so best shifting. |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
246 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
|
247 } |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
248 foreach($toRemove as $param) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
249 $parent = $param->parentNode; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
250 $parent->removeChild($param); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
251 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
252 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
253 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
|
254 } |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
255 |
|
66
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
256 /** |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
257 * Follows all include directives recursively for the specified |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
258 * $param an generates an xml file. |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
259 * |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
260 * This function may be used to generate a file which has all the |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
261 * necessary information to determine wether or not we may cache. |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
262 * |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
263 * @param $master The master document to be processed |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
264 * @param $param the input tag to resolve |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
265 * @param $options the options object for this file |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
266 */ |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
267 function getInput($master, $param, $options) |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
268 { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
269 $lang = $options->getLang(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
270 $name = $param->getAttribute("id"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
271 $conf = $options->getName(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
272 if (!$conf) |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
273 $conf = $param->getAttribute("default"); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
274 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
275 $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
|
276 $options->getCache()->cache_time($confFile); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
277 $doc = new DOMDocument(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
278 $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
|
279 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
280 $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
|
281 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
282 if(! $toplevel->length) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
283 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
|
284 } |
|
59
0e157721bbad
Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
51
diff
changeset
|
285 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
286 $includes = $doc->getElementsByTagName("include"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
287 $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
|
288 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
289 while($includes->length > 0) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
290 if(++$recurse > MAX_RECURSE) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
291 errorPage('Recursion limit exceeded', 500); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
292 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
293 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
|
294 $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
|
295 $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
|
296 $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
|
297 $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
|
298 $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
|
299 $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
|
300 $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
|
301 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
|
302 $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
|
303 $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
|
304 $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
|
305 } |
|
0e157721bbad
Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
51
diff
changeset
|
306 $parent->removeChild($include); |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
307 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
308 $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
|
309 } |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
310 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
311 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
|
312 } |
|
0e157721bbad
Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
51
diff
changeset
|
313 } |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
314 ?> |
