annotate InputParser.inc.php @ 136:60bc8f62384d default tip

Use internal URL if available to generate Sitemap.
author Tom Fredrik Blenning <bfg@bfgconsult.no>
date Mon, 23 Jan 2023 00:17:36 +0100
parents b6b4a58c7625
children
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__);
134
b6b4a58c7625 Using .inc.php rather than just .inc for include files.
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents: 130
diff changeset
5 $cache->includeOnce('Page.inc.php', dirname(__FILE__));
78
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();
130
ee5f98a0bc93 Retrieve documents from DOCUMENT_ROOT, not SCRIPT_ROOT
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents: 126
diff changeset
34 $base=$_SERVER['DOCUMENT_ROOT'];
124
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 }
126
7858ceb293d1 A bit more verbosity in errors.
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents: 124
diff changeset
149 else {
7858ceb293d1 A bit more verbosity in errors.
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents: 124
diff changeset
150 throw new UnexpectedValueException("Unknown parameter type '$param_type'");
7858ceb293d1 A bit more verbosity in errors.
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents: 124
diff changeset
151 }
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
152 return $param_value;
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
153 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
154
66
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
155 /**
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
156 * 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
157 *
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
158 * @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
159 * @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
160 *
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
161 * @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
162 */
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
163 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
164 $lang = $options->getLang();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
165 $conf = $options->getName();
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
166
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
167 $toRemove = array();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
168
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
169 $topLevelTags = $doc->getElementsByTagName("toplevel");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
170 foreach ($topLevelTags as $topLevel) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
171 $topLevel->parentNode->removeChild($topLevel);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
172 }
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
173
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
174 $valueDict = array();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
175 $fragments = array();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
176 $setters = $doc->getElementsByTagName("set");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
177 foreach ($setters as $setTag) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
178 $key = $setTag->getAttribute("id");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
179 $type = $setTag->getAttribute("type");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
180 if ($type == "fragment") {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
181 $fragments[$key] = $setTag;
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
182 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
183 else {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
184 $value = $setTag->getAttribute("value");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
185 if ($key && $value) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
186 $valueDict[$key] = $value;
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
187 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
188 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
189 //We need to iterate in the opposite direction when removing,
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
190 //so best shifting.
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
191 array_unshift($toRemove, $setTag);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
192 }
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
193
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
194 $params = $doc->getElementsByTagName("param");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
195 foreach ($params as $param) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
196 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
197 $id = $param->getAttribute("id");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
198 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
199 $value = $valueDict[$id];
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
200 $tmp = new DOMDocument();
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 $tmp->loadXml("<xml>${value}</xml>");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
203 $parent = $param->parentNode;
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
204 $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
205 //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
206 //so best shifting.
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
207 array_unshift($toRemove, $param);
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 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
210 $fragment = $fragments[$id];
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
211
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
212 $cloneFragment = $fragment->cloneNode(true);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
213 $insNode = $param;
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
214 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
215 $child = $cloneFragment->childNodes->item($i);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
216 $child = $child->parentNode->removeChild($child);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
217 $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
218 }
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 //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
221 //so best shifting.
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
222 array_unshift($toRemove, $param);
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 }
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
225 }
62
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 foreach($toRemove as $param) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
228 $parent = $param->parentNode;
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
229 $parent->removeChild($param);
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
230 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
231
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
232 $body = getElementByTagName($doc,"html");
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
233 $files = $body->getElementsByTagName("file");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
234
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
235 $toRemove = array();
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 foreach ($files as $file) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
238 $script = $file->getAttribute("script");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
239 if ($script) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
240 $options->setCacheable(false);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
241 $src="";
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
242 $cwd = getcwd();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
243
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
244 $matches=array();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
245 preg_match('/(.*\/)/', $script, $matches);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
246 $dirname=$matches[0];
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
247 preg_match('/([^\/]*)$/', $script, $matches);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
248 $filename=$matches[0];
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
249 chdir("${lang}/${dirname}");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
250 $pipe=popen("php ${filename}","r");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
251 $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
252 chdir("${cwd}");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
253 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
254 else {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
255 $src = $file->getAttribute("src");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
256 $fname = $options->getBasePath() . "/${lang}/${src}";
107
d5f3efba33e2 Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 105
diff changeset
257 if (!file_exists($fname) ) {
d5f3efba33e2 Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 105
diff changeset
258 $fname = $options->getBasePath() . "/common/${src}";
d5f3efba33e2 Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 105
diff changeset
259 }
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
260 $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
261 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
262 if(floatval($file_content)<0) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
263 errorPage("Resource not found '${lang}/${src}'");
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
264 }
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
265
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
266 $filters = $file->getElementsByTagName("filter");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
267 foreach($filters as $filter) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
268 $func = $filter->getAttribute("function");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
269 $params = $filter->getElementsByTagName("param");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
270 $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
271 $param_values = array();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
272 $i = 0;
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
273 foreach ($filter->childNodes as $param) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
274 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
275 {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
276 $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
277 $callString .= ",\$param_value[$i]";
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
278 $i++;
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
279 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
280 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
281 $callString .= ");";
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
282 eval($callString);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
283 }
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 $ndoc = $doc->createDocumentFragment();
62
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 $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
287
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
288 $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
289 $parent->insertBefore($ndoc, $file);
105
b6381903122e Prevent entity encoding of javascript
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 100
diff changeset
290
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
291 //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
292 //so best shifting.
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
293 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
294 }
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
295 foreach($toRemove as $param) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
296 $parent = $param->parentNode;
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
297 $parent->removeChild($param);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
298 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
299
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
300 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
301 }
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
302
66
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 * 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
305 * $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
306 *
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
307 * 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
308 * 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
309 *
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 63
diff changeset
310 * @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
311 * @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
312 * @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
313 */
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
314 function getInput($master, $param, $options)
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
315 {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
316 $lang = $options->getLang();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
317 $name = $param->getAttribute("id");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
318 $conf = $options->getName();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
319 if (!$conf)
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
320 $conf = $param->getAttribute("default");
23
814296ea84a9 Move functionality into inputParser.inc
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
321
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
322 $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
323 if (! file_exists($confFile) ) {
d5f3efba33e2 Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 105
diff changeset
324 $confFile = $options->getBasePath() . "/common/${conf}.xml";
d5f3efba33e2 Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 105
diff changeset
325 }
d5f3efba33e2 Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 105
diff changeset
326
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
327 $options->getCache()->cache_time($confFile);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
328 $doc = new DOMDocument();
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
329 $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
330
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
331 $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
332
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
333 if(! $toplevel->length) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
334 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
335 }
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 $includes = $doc->getElementsByTagName("include");
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
338 $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
339
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
340 while($includes->length > 0) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
341 if(++$recurse > MAX_RECURSE) {
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
342 errorPage('Recursion limit exceeded', 500);
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
343 }
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
344 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
345 $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
346 $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
347 $subfile = $options->getBasePath() . "/${lang}/${src}";
107
d5f3efba33e2 Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 105
diff changeset
348 if (! file_exists($subfile) ) {
d5f3efba33e2 Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 105
diff changeset
349 $subfile = $options->getBasePath() . "/common/${src}";
d5f3efba33e2 Support for common files between languages.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 105
diff changeset
350 }
59
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
351 $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
352 $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
353 $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
354 $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
355 foreach($xml->childNodes as $child) {
105
b6381903122e Prevent entity encoding of javascript
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 100
diff changeset
356 $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
357 $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
358 $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
359 }
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
360 $parent->removeChild($include);
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 $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
363 }
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
364
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 59
diff changeset
365 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
366 }
0e157721bbad Change the way we parse input files, preparing for more reasonable
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 51
diff changeset
367 }
126
7858ceb293d1 A bit more verbosity in errors.
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents: 124
diff changeset
368 ?>