Mercurial > SimpleWebPresenter
changeset 26:d8c7b328899e
Removed globals, and introduced Options object for passing values
around.
Introduced <accepted_values> tag into master.xml
| author | Tom Fredrik "BFG" Klaussen <bfg@blenning.no> |
|---|---|
| date | Sun, 30 Sep 2012 00:16:58 +0200 |
| parents | da86ec2814e2 |
| children | 1ec0738a1623 |
| files | Options.inc index.php inputParser.inc |
| diffstat | 3 files changed, 80 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Options.inc Sun Sep 30 00:16:58 2012 +0200 @@ -0,0 +1,58 @@ +<?php +class Options +{ + private $defaultLang; + private $lang; + private $name; + private $acceptedLanguages = array(); + + function getDefaultLang() + { + return $this->defaultLang; + } + + function getLang() + { + return $this->lang; + } + + function setLang($lang) + { + $this->lang = $lang; + } + + function setName($name) + { + $this->name = $name; + } + + function getName() + { + return $this->name; + } + + function __construct($baseDocument) + { + $params = $baseDocument->getElementsByTagName("param"); + foreach ($params as $param) { + if ($param->getAttribute("type") == "option") { + $id = $param->getAttribute("id"); + if ($id == "lang") { + $this->defaultLang = $param->getAttribute("default"); + $accepts = $param->getElementsByTagName("accept_value"); + foreach($accepts as $accept) { + foreach($accept->childNodes as $child) { + array_push($this->acceptedLanguages, $child->nodeValue); + } + } + } + else { + die("Invalid option : $id"); + } + $parent = $param->parentNode; + $parent->removeChild($param); + } + } + } +} +?> \ No newline at end of file
--- a/index.php Wed Sep 19 21:50:20 2012 +0200 +++ b/index.php Sun Sep 30 00:16:58 2012 +0200 @@ -18,37 +18,37 @@ $cacheable = true; include 'php/cache_check.inc'; +include_with_mtime('php/Options.inc'); include_with_mtime('php/accept-language.inc'); +include_with_mtime('php/common-functions.inc'); include_with_mtime('php/filters.inc'); -include_with_mtime('php/common-functions.inc'); include_with_mtime('php/inputParser.inc'); $URL_PARAMS=array('name','lang'); -#Globals -$name = $_GET['name']; -$lang = $_GET['lang']; - $master = new DOMDocument(); $master->load("master.xml"); -$params = $master->getElementsByTagName("param"); -foreach ($params as $param) { - if ($param->getAttribute("type") == "option") { - if ($param->getAttribute("id") == "lang") { - $defaultLang = $param->getAttribute("default"); - } - } +$options = new Options($master); + +$lang = $_GET['lang']; +if($lang) { + $options->setLang($lang); +} +else { + $options->setLang($options->getDefaultLang()); } -if (!$lang) { - $lang = preferLanguage($defaultLang); +$name = $_GET['name']; +if($name) { + $options->setName($name); } +$params = $master->getElementsByTagName("param"); foreach ($params as $param) { if ($param->getAttribute("type") == "input") { - $doc = getInput($master, $param); + $doc = getInput($master, $param, $options); $parent = $param->parentNode; foreach ($doc->firstChild->childNodes as $child) { @@ -56,7 +56,6 @@ $parent->insertBefore($clonedChild, $param); } $parent->removeChild($param); - } }
--- a/inputParser.inc Wed Sep 19 21:50:20 2012 +0200 +++ b/inputParser.inc Sun Sep 30 00:16:58 2012 +0200 @@ -29,16 +29,15 @@ return $param_value; } -function getInput($master, $param) +function getInput($master, $param, $options) { $out=''; - $lang=$GLOBALS['lang']; + $lang = $options->getLang(); $name=$param->getAttribute("id"); - $conf=$_GET[$name]; - $GLOBALS[$name]=$conf; + $conf = $options->getName(); if (!$conf) - $conf=$param->getAttribute("default"); + $conf = $param->getAttribute("default"); $fname = "${lang}/${conf}.xml"; cache_time($fname); @@ -65,9 +64,9 @@ $parent=$include->parentNode; $xml=getElementByTagName($subdoc,"xml"); foreach($xml->childNodes as $child) { - $text=$subdoc->saveXml($child); - $clonedChild=$doc->importNode($child,true); - $parent->insertBefore($clonedChild,$include); + $text=$subdoc->saveXml($child); + $clonedChild=$doc->importNode($child,true); + $parent->insertBefore($clonedChild,$include); } $parent->removeChild($include); }
