Mercurial > SimpleWebPresenter
view Options.inc @ 47:66382989353f
Extract baseDir only once.
Function for generating cacheset.
Added logger functionality.
Removed hardcoded location for flagScript.
BUGFIX: masterdocument was not added to the cacheset.
BUGFIX: When two options existed next to eachother, the last was not
read.
| author | Tom Fredrik "BFG" Klaussen <bfg@blenning.no> |
|---|---|
| date | Mon, 08 Oct 2012 17:35:08 +0200 |
| parents | bd82b719a0de |
| children | c6d0892f81ff |
line wrap: on
line source
<?php class Options { private $defaultLang; private $lang; private $name; private $acceptedLanguages = array(); private $inputDefaults = array(); private $cache; private $urlParams = array(); private $basePath; private $flagUrl; private $baseUrl; function getDefaultLang() { return $this->defaultLang; } function getLang() { return $this->lang; } function getBaseUrl() { if ($this->baseUrl) return $this->baseUrl; $request = $_SERVER['REQUEST_URI']; $l = strpos($request, '?'); $base = ($l) ? substr($request, 0 , $l) : $request; return "http://" . $_SERVER['HTTP_HOST'] . $base; } function replacePlaceholders($value) { $value = preg_replace('/%HOST%/', $_SERVER['HTTP_HOST'], $value); return $value; } function setBaseUrl($baseUrl) { $baseUrl = self::replacePlaceholders($baseUrl); $this->baseUrl = $baseUrl; } function setFlagUrl($flagUrl) { $flagUrl = self::replacePlaceholders($flagUrl); $this->flagUrl = $flagUrl; } function getFlagUrl() { if ($this->flagUrl) return $this->flagUrl; return $this->getBaseUrl() . "/flag.php"; } function setLang($lang) { $this->lang = $lang; } function getBasePath() { return $this->basePath; } function setBasePath($basePath) { $this->basePath = $basePath; } function setUrlParams($urlParams) { foreach($urlParams as $key) { $value = array_key_exists($key, $_GET) ? $_GET[$key] : ''; $this->urlParams[$key] = $value; } } function getUrlParams() { return $this->urlParams; } function setName($name) { $this->name = $name; } function getName() { return $this->name; } function setCache($cache) { $this->cache = $cache; } function getCache() { return $this->cache; } function getAcceptedLanguages() { return $this->acceptedLanguages; } function getInputDefault($key) { return $this->inputDefaults[$key]; } function __construct($baseDocument) { $params = $baseDocument->getElementsByTagName("param"); $toRemove = array(); 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); } } } elseif ($id == "baseUrl") { $value = $param->getAttribute("value"); if($value) $this->setBaseUrl($value); } elseif ($id == "flagUrl") { $value = $param->getAttribute("value"); if($value) $this->setFlagUrl($value); } else { warn("Invalid option: ${id}"); } //We need to iterate in the opposite direction when removing, //so best shifting. array_unshift($toRemove, $param); } elseif ($param->getAttribute("type") == "input") { $id = $param->getAttribute("id"); $default = $param->getAttribute("default"); $this->inputDefaults[$id] = $default; } } foreach($toRemove as $param) { $parent = $param->parentNode; $parent->removeChild($param); } } } ?>
