annotate InputParser.inc @ 124:6766250a0baa

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