Mercurial > SimpleWebPresenter
annotate InputParser.inc @ 107:d5f3efba33e2
Support for common files between languages.
| author | Tom Fredrik "BFG" Klaussen <bfg@blenning.no> |
|---|---|
| date | Mon, 07 Mar 2016 20:44:15 +0100 |
| parents | b6381903122e |
| children | adf7b11921f4 b9668126e52e |
| rev | line source |
|---|---|
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
1 <?php |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
69
diff
changeset
|
2 /// @cond |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
69
diff
changeset
|
3 $baseDir = dirname(__FILE__); |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
69
diff
changeset
|
4 $cache = ScriptIncludeCache::instance(__FILE__); |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
69
diff
changeset
|
5 $cache->includeOnce('Page.inc', dirname(__FILE__)); |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
69
diff
changeset
|
6 /// @endcond |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
69
diff
changeset
|
7 |
|
51
2cfea6e84694
Documentation update.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
39
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 * 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
|
10 */ |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
69
diff
changeset
|
11 class InputParser extends Page |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
69
diff
changeset
|
12 { |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
13 private $options; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
14 private $master; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
15 |
|
66
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
16 /** |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
17 * 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
|
18 * |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
19 * @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
|
20 * |
|
69
dd4ddedca4c5
Add convenience header ScriptIncludeCache
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
68
diff
changeset
|
21 * @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
|
22 * 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
|
23 */ |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
24 function __construct($name, $masterCache) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
25 $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
|
26 $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
|
27 $cache->addParent($masterCache); |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
69
diff
changeset
|
28 parent::setCache($cache); |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
29 $this->master->load($name); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
30 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
31 $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
|
32 $this->options->setCache($cache); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
33 $this->options->setBasePath(basePath()); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
34 $this->options->setCacheable(true); |
|
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 $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
|
37 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
38 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
|
39 $this->options->setLang($_GET['lang']); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
40 } |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
41 else { |
|
100
0a33803ee026
Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
99
diff
changeset
|
42 if (count($this->options->getAcceptedLanguages()) > 1) |
|
0a33803ee026
Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
99
diff
changeset
|
43 $this->addVariant('Accept-Language'); |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
44 $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
|
45 } |
|
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 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
|
48 $this->options->setName($_GET['name']); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
49 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
50 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
51 $params = $this->master->getElementsByTagName("param"); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
52 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
53 foreach ($params as $param) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
54 if ($param->getAttribute("type") == "input") { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
55 $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
|
56 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
57 $parent = $param->parentNode; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
58 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
|
59 $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
|
60 $parent->insertBefore($clonedChild, $param); |
|
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 $parent->removeChild($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 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
65 $this->master = self::getFiles($this->master, $this->options); |
|
99
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
92
diff
changeset
|
66 $cache->setMaxAge(20); |
|
29
394b5df43d1a
Fix some formatting.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
26
diff
changeset
|
67 } |
|
394b5df43d1a
Fix some formatting.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
26
diff
changeset
|
68 |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
69
diff
changeset
|
69 function cacheCheck() |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
69
diff
changeset
|
70 { |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
69
diff
changeset
|
71 return $this->options->getCacheable(); |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
69
diff
changeset
|
72 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
69
diff
changeset
|
73 |
|
66
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 * 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
|
76 * 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
|
77 */ |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
69
diff
changeset
|
78 function generateContent() |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
79 { |
|
105
b6381903122e
Prevent entity encoding of javascript
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
100
diff
changeset
|
80 //We may need to set and check the contenttype and replace |
|
b6381903122e
Prevent entity encoding of javascript
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
100
diff
changeset
|
81 //saveHTML with saveXML |
|
b6381903122e
Prevent entity encoding of javascript
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
100
diff
changeset
|
82 $retVal = new PageContent($this->master->saveHTML($this->master)); |
|
92
f468365813c9
Set language header.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
83 $retVal->setHeader('Content-Language', $this->options->getLang()); |
|
f468365813c9
Set language header.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
84 return $retVal; |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
85 } |
|
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
86 |
|
66
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
87 /** |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
88 * 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
|
89 * |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
90 * @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
|
91 * |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
92 * @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
|
93 * scalar |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
94 */ |
|
105
b6381903122e
Prevent entity encoding of javascript
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
100
diff
changeset
|
95 static function getParam($param) |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
96 { |
|
66
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
97 $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
|
98 $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
|
99 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
|
100 $param_type = "scalar"; |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
101 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
102 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
|
103 $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
|
104 $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
|
105 if ($param_subst) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
106 /* |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
107 $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
|
108 $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
|
109 */ |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
110 } |
|
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
111 } |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
112 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
|
113 $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
|
114 $param_value = array(); |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
115 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
|
116 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
|
117 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
|
118 } |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
119 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
120 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
121 return $param_value; |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
122 } |
|
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
123 |
|
66
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
124 /** |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
125 * 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
|
126 * |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
127 * @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
|
128 * @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
|
129 * |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
130 * @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
|
131 */ |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
132 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
|
133 $lang = $options->getLang(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
134 $conf = $options->getName(); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
135 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
136 $toRemove = array(); |
|
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 $topLevelTags = $doc->getElementsByTagName("toplevel"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
139 foreach ($topLevelTags as $topLevel) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
140 $topLevel->parentNode->removeChild($topLevel); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
141 } |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
142 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
143 $valueDict = array(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
144 $fragments = array(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
145 $setters = $doc->getElementsByTagName("set"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
146 foreach ($setters as $setTag) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
147 $key = $setTag->getAttribute("id"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
148 $type = $setTag->getAttribute("type"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
149 if ($type == "fragment") { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
150 $fragments[$key] = $setTag; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
151 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
152 else { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
153 $value = $setTag->getAttribute("value"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
154 if ($key && $value) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
155 $valueDict[$key] = $value; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
156 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
157 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
158 //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
|
159 //so best shifting. |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
160 array_unshift($toRemove, $setTag); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
161 } |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
162 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
163 $params = $doc->getElementsByTagName("param"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
164 foreach ($params as $param) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
165 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
|
166 $id = $param->getAttribute("id"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
167 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
|
168 $value = $valueDict[$id]; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
169 $tmp = new DOMDocument(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
170 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
171 $tmp->loadXml("<xml>${value}</xml>"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
172 $parent = $param->parentNode; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
173 $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
|
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 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
|
179 $fragment = $fragments[$id]; |
|
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 $cloneFragment = $fragment->cloneNode(true); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
182 $insNode = $param; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
183 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
|
184 $child = $cloneFragment->childNodes->item($i); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
185 $child = $child->parentNode->removeChild($child); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
186 $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
|
187 } |
|
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 //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
|
190 //so best shifting. |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
191 array_unshift($toRemove, $param); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
192 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
193 } |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
194 } |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
195 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
196 foreach($toRemove as $param) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
197 $parent = $param->parentNode; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
198 $parent->removeChild($param); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
199 } |
|
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
200 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
201 $body = getElementByTagName($doc,"body"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
202 $files = $body->getElementsByTagName("file"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
203 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
204 $toRemove = array(); |
|
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 foreach ($files as $file) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
207 $script = $file->getAttribute("script"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
208 if ($script) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
209 $options->setCacheable(false); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
210 $src=""; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
211 $cwd = getcwd(); |
|
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 $matches=array(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
214 preg_match('/(.*\/)/', $script, $matches); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
215 $dirname=$matches[0]; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
216 preg_match('/([^\/]*)$/', $script, $matches); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
217 $filename=$matches[0]; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
218 chdir("${lang}/${dirname}"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
219 $pipe=popen("php ${filename}","r"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
220 $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
|
221 chdir("${cwd}"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
222 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
223 else { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
224 $src = $file->getAttribute("src"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
225 $fname = $options->getBasePath() . "/${lang}/${src}"; |
|
107
d5f3efba33e2
Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
105
diff
changeset
|
226 if (!file_exists($fname) ) { |
|
d5f3efba33e2
Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
105
diff
changeset
|
227 $fname = $options->getBasePath() . "/common/${src}"; |
|
d5f3efba33e2
Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
105
diff
changeset
|
228 } |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
229 $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
|
230 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
231 if(floatval($file_content)<0) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
232 errorPage("Resource not found '${lang}/${src}'"); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
233 } |
|
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
234 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
235 $filters = $file->getElementsByTagName("filter"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
236 foreach($filters as $filter) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
237 $func = $filter->getAttribute("function"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
238 $params = $filter->getElementsByTagName("param"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
239 $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
|
240 $param_values = array(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
241 $i = 0; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
242 foreach ($filter->childNodes as $param) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
243 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
|
244 { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
245 $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
|
246 $callString .= ",\$param_value[$i]"; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
247 $i++; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
248 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
249 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
250 $callString .= ");"; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
251 eval($callString); |
|
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 $ndoc = new DOMDocument(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
254 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
255 $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
|
256 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
257 $parent = $file->parentNode; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
258 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
|
259 $clonedChild = $doc->importNode($child, true); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
260 $parent->insertBefore($clonedChild, $file); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
261 } |
|
105
b6381903122e
Prevent entity encoding of javascript
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
100
diff
changeset
|
262 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
263 //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
|
264 //so best shifting. |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
265 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
|
266 } |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
267 foreach($toRemove as $param) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
268 $parent = $param->parentNode; |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
269 $parent->removeChild($param); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
270 } |
|
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 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
|
273 } |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
274 |
|
66
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
275 /** |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
276 * 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
|
277 * $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
|
278 * |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
279 * 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
|
280 * 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
|
281 * |
|
74f7b64bdb78
Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
63
diff
changeset
|
282 * @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
|
283 * @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
|
284 * @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
|
285 */ |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
286 function getInput($master, $param, $options) |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
287 { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
288 $lang = $options->getLang(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
289 $name = $param->getAttribute("id"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
290 $conf = $options->getName(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
291 if (!$conf) |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
292 $conf = $param->getAttribute("default"); |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
293 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
294 $confFile = $options->getBasePath() . "/${lang}/${conf}.xml"; |
|
107
d5f3efba33e2
Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
105
diff
changeset
|
295 if (! file_exists($confFile) ) { |
|
d5f3efba33e2
Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
105
diff
changeset
|
296 $confFile = $options->getBasePath() . "/common/${conf}.xml"; |
|
d5f3efba33e2
Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
105
diff
changeset
|
297 } |
|
d5f3efba33e2
Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
105
diff
changeset
|
298 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
299 $options->getCache()->cache_time($confFile); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
300 $doc = new DOMDocument(); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
301 $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
|
302 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
303 $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
|
304 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
305 if(! $toplevel->length) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
306 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
|
307 } |
|
59
0e157721bbad
Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
51
diff
changeset
|
308 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
309 $includes = $doc->getElementsByTagName("include"); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
310 $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
|
311 |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
312 while($includes->length > 0) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
313 if(++$recurse > MAX_RECURSE) { |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
314 errorPage('Recursion limit exceeded', 500); |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
315 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
316 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
|
317 $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
|
318 $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
|
319 $subfile = $options->getBasePath() . "/${lang}/${src}"; |
|
107
d5f3efba33e2
Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
105
diff
changeset
|
320 if (! file_exists($subfile) ) { |
|
d5f3efba33e2
Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
105
diff
changeset
|
321 $subfile = $options->getBasePath() . "/common/${src}"; |
|
d5f3efba33e2
Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
105
diff
changeset
|
322 } |
|
59
0e157721bbad
Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
51
diff
changeset
|
323 $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
|
324 $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
|
325 $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
|
326 $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
|
327 foreach($xml->childNodes as $child) { |
|
105
b6381903122e
Prevent entity encoding of javascript
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
100
diff
changeset
|
328 $text = $subdoc->saveHTML($child); |
|
59
0e157721bbad
Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
51
diff
changeset
|
329 $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
|
330 $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
|
331 } |
|
0e157721bbad
Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
51
diff
changeset
|
332 $parent->removeChild($include); |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
333 } |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
334 $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
|
335 } |
|
62
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
336 |
|
b7efe2ecbc11
Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
59
diff
changeset
|
337 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
|
338 } |
|
0e157721bbad
Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
51
diff
changeset
|
339 } |
|
23
814296ea84a9
Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
340 ?> |
