annotate InputParser.inc @ 116:374e3eff07fd

Branch merge
author Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
date Thu, 17 Mar 2016 22:34:49 +0100
parents b9668126e52e adf7b11921f4
children e01ce5722f2b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
1 <?php
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);
115
b9668126e52e Remove comments.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 107
diff changeset
66 self::removeCommentsFromDOM($this->master);
111
adf7b11921f4 No compression when debugging.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 107
diff changeset
67 $cache->setMaxAge(0);
29
394b5df43d1a Fix some formatting.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 26
diff changeset
68 }
394b5df43d1a Fix some formatting.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 26
diff changeset
69
115
b9668126e52e Remove comments.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 107
diff changeset
70 /**
b9668126e52e Remove comments.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 107
diff changeset
71 * Removes all comments from the DOM
b9668126e52e Remove comments.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 107
diff changeset
72 *
b9668126e52e Remove comments.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 107
diff changeset
73 * @param $dom A DOMDocument for processing
b9668126e52e Remove comments.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 107
diff changeset
74 */
b9668126e52e Remove comments.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 107
diff changeset
75 static function removeCommentsFromDOM($dom)
b9668126e52e Remove comments.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 107
diff changeset
76 {
b9668126e52e Remove comments.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 107
diff changeset
77 $xpath = new DOMXPath($dom);
b9668126e52e Remove comments.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 107
diff changeset
78 foreach ($xpath->query('//comment()') as $comment) {
b9668126e52e Remove comments.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 107
diff changeset
79 $comment->parentNode->removeChild($comment);
b9668126e52e Remove comments.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 107
diff changeset
80 }
b9668126e52e Remove comments.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 107
diff changeset
81 }
b9668126e52e Remove comments.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 107
diff changeset
82
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 69
diff changeset
83 function cacheCheck()
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 69
diff changeset
84 {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 69
diff changeset
85 return $this->options->getCacheable();
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 69
diff changeset
86 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 69
diff changeset
87
66
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
88 /**
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
89 * 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
90 * 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
91 */
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 69
diff changeset
92 function generateContent()
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
93 {
105
b6381903122e Prevent entity encoding of javascript
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 100
diff changeset
94 //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
95 //saveHTML with saveXML
b6381903122e Prevent entity encoding of javascript
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 100
diff changeset
96 $retVal = new PageContent($this->master->saveHTML($this->master));
92
f468365813c9 Set language header.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 78
diff changeset
97 $retVal->setHeader('Content-Language', $this->options->getLang());
f468365813c9 Set language header.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 78
diff changeset
98 return $retVal;
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
99 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
100
66
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
101 /**
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
102 * 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
103 *
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
104 * @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
105 *
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
106 * @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
107 * scalar
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
108 */
105
b6381903122e Prevent entity encoding of javascript
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 100
diff changeset
109 static function getParam($param)
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
110 {
66
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
111 $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
112 $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
113 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
114 $param_type = "scalar";
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
115
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
116 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
117 $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
118 $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
119 if ($param_subst) {
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 $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
122 $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
123 */
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
124 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
125 }
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
126 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
127 $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
128 $param_value = array();
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
129 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
130 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
131 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
132 }
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
133 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
134 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
135 return $param_value;
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
136 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
137
66
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
138 /**
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
139 * 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
140 *
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
141 * @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
142 * @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
143 *
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
144 * @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
145 */
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
146 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
147 $lang = $options->getLang();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
148 $conf = $options->getName();
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
149
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
150 $toRemove = array();
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 $topLevelTags = $doc->getElementsByTagName("toplevel");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
153 foreach ($topLevelTags as $topLevel) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
154 $topLevel->parentNode->removeChild($topLevel);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
155 }
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
156
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
157 $valueDict = array();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
158 $fragments = array();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
159 $setters = $doc->getElementsByTagName("set");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
160 foreach ($setters as $setTag) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
161 $key = $setTag->getAttribute("id");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
162 $type = $setTag->getAttribute("type");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
163 if ($type == "fragment") {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
164 $fragments[$key] = $setTag;
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 else {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
167 $value = $setTag->getAttribute("value");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
168 if ($key && $value) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
169 $valueDict[$key] = $value;
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 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
172 //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
173 //so best shifting.
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
174 array_unshift($toRemove, $setTag);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
175 }
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
176
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
177 $params = $doc->getElementsByTagName("param");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
178 foreach ($params as $param) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
179 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
180 $id = $param->getAttribute("id");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
181 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
182 $value = $valueDict[$id];
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
183 $tmp = new DOMDocument();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
184
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
185 $tmp->loadXml("<xml>${value}</xml>");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
186 $parent = $param->parentNode;
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
187 $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
188 //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
189 //so best shifting.
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
190 array_unshift($toRemove, $param);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
191 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
192 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
193 $fragment = $fragments[$id];
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
194
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
195 $cloneFragment = $fragment->cloneNode(true);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
196 $insNode = $param;
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
197 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
198 $child = $cloneFragment->childNodes->item($i);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
199 $child = $child->parentNode->removeChild($child);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
200 $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
201 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
202
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
203 //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
204 //so best shifting.
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
205 array_unshift($toRemove, $param);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
206 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
207 }
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
208 }
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
209
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
210 foreach($toRemove as $param) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
211 $parent = $param->parentNode;
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
212 $parent->removeChild($param);
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
213 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
214
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
215 $body = getElementByTagName($doc,"body");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
216 $files = $body->getElementsByTagName("file");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
217
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
218 $toRemove = array();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
219
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
220 foreach ($files as $file) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
221 $script = $file->getAttribute("script");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
222 if ($script) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
223 $options->setCacheable(false);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
224 $src="";
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
225 $cwd = getcwd();
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 $matches=array();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
228 preg_match('/(.*\/)/', $script, $matches);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
229 $dirname=$matches[0];
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
230 preg_match('/([^\/]*)$/', $script, $matches);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
231 $filename=$matches[0];
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
232 chdir("${lang}/${dirname}");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
233 $pipe=popen("php ${filename}","r");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
234 $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
235 chdir("${cwd}");
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 else {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
238 $src = $file->getAttribute("src");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
239 $fname = $options->getBasePath() . "/${lang}/${src}";
107
d5f3efba33e2 Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 105
diff changeset
240 if (!file_exists($fname) ) {
d5f3efba33e2 Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 105
diff changeset
241 $fname = $options->getBasePath() . "/common/${src}";
d5f3efba33e2 Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 105
diff changeset
242 }
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
243 $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
244 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
245 if(floatval($file_content)<0) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
246 errorPage("Resource not found '${lang}/${src}'");
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
247 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
248
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
249 $filters = $file->getElementsByTagName("filter");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
250 foreach($filters as $filter) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
251 $func = $filter->getAttribute("function");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
252 $params = $filter->getElementsByTagName("param");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
253 $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
254 $param_values = array();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
255 $i = 0;
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
256 foreach ($filter->childNodes as $param) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
257 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
258 {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
259 $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
260 $callString .= ",\$param_value[$i]";
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
261 $i++;
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
262 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
263 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
264 $callString .= ");";
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
265 eval($callString);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
266 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
267 $ndoc = new DOMDocument();
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 $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
270
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
271 $parent = $file->parentNode;
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
272 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
273 $clonedChild = $doc->importNode($child, true);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
274 $parent->insertBefore($clonedChild, $file);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
275 }
105
b6381903122e Prevent entity encoding of javascript
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 100
diff changeset
276
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
277 //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
278 //so best shifting.
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
279 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
280 }
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
281 foreach($toRemove as $param) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
282 $parent = $param->parentNode;
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
283 $parent->removeChild($param);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
284 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
285
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
286 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
287 }
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
288
66
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
289 /**
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
290 * 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
291 * $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
292 *
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
293 * 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
294 * 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
295 *
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
296 * @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
297 * @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
298 * @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
299 */
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
300 function getInput($master, $param, $options)
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
301 {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
302 $lang = $options->getLang();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
303 $name = $param->getAttribute("id");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
304 $conf = $options->getName();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
305 if (!$conf)
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
306 $conf = $param->getAttribute("default");
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
307
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
308 $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
309 if (! file_exists($confFile) ) {
d5f3efba33e2 Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 105
diff changeset
310 $confFile = $options->getBasePath() . "/common/${conf}.xml";
d5f3efba33e2 Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 105
diff changeset
311 }
d5f3efba33e2 Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 105
diff changeset
312
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
313 $options->getCache()->cache_time($confFile);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
314 $doc = new DOMDocument();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
315 $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
316
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
317 $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
318
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
319 if(! $toplevel->length) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
320 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
321 }
59
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
322
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
323 $includes = $doc->getElementsByTagName("include");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
324 $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
325
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
326 while($includes->length > 0) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
327 if(++$recurse > MAX_RECURSE) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
328 errorPage('Recursion limit exceeded', 500);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
329 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
330 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
331 $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
332 $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
333 $subfile = $options->getBasePath() . "/${lang}/${src}";
107
d5f3efba33e2 Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 105
diff changeset
334 if (! file_exists($subfile) ) {
d5f3efba33e2 Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 105
diff changeset
335 $subfile = $options->getBasePath() . "/common/${src}";
d5f3efba33e2 Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 105
diff changeset
336 }
59
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
337 $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
338 $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
339 $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
340 $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
341 foreach($xml->childNodes as $child) {
105
b6381903122e Prevent entity encoding of javascript
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 100
diff changeset
342 $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
343 $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
344 $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
345 }
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
346 $parent->removeChild($include);
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
347 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
348 $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
349 }
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
350
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
351 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
352 }
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
353 }
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
354 ?>