Mercurial > SimpleWebPresenter
view Options.inc @ 99:d98e315308cd
Improved caching of flag and sitemap.
| author | Tom Fredrik "BFG" Klaussen <bfg@blenning.no> |
|---|---|
| date | Sun, 14 Sep 2014 21:11:27 +0200 |
| parents | 2a8e2f571b24 |
| children | df158368051e |
line wrap: on
line source
<?php /** */ abstract class Cacheable { const NO = 0; const YES = 1; const UNDETERMINED = -1; } /** * Contains alle configurable parameters, and "globals" * * @author Tom Fredrik Blenning Klaussen */ 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; private $cacheable = Cacheable::YES; /** * Gets the default language * * @return two letter code for the language */ function getDefaultLang() { return $this->defaultLang; } /** * Gets the selected language * * @return two letter code for the language */ function getLang() { return $this->lang; } /** * Sets wether or not this page may be cached * * @param $cacheable Cacheable */ function setCacheable($cacheable) { $this->cacheable = $cacheable; } /** * Gets wether or not this page may be cached * * @return Cacheable, default is YES */ function getCacheable() { return $this->cacheable; } /** * Get the base url, or if non set, extracts it from _SERVER * * @return the baseurl for the scripts */ function getBaseUrl() { if ($this->baseUrl) return $this->baseUrl; $request = $_SERVER['REQUEST_URI']; $l = strpos($request, '?'); $base = ($l) ? substr($request, 0 , $l) : $request; $base = rtrim($base, '/'); return "http://" . $_SERVER['HTTP_HOST'] . $base; } /** * Replaces placeholder variables, with actual values. * * Currently supported values: * @li \%HOST\% * * @param $value string to replace values in * @return the processed string */ function replacePlaceholders($value) { $value = preg_replace('/%HOST%/', $_SERVER['HTTP_HOST'], $value); return $value; } /** * Sets the base url where scripts are located * * @param $baseUrl the url where scripts are located */ function setBaseUrl($baseUrl) { $baseUrl = self::replacePlaceholders($baseUrl); $this->baseUrl = $baseUrl; } /** * Sets the url for the flag script * * @param $flagUrl for flag script */ function setFlagUrl($flagUrl) { $flagUrl = self::replacePlaceholders($flagUrl); $this->flagUrl = $flagUrl; } /** * Gets the url for the flag script, or autogenerate if not set * * @return url for flag script */ function getFlagUrl() { if ($this->flagUrl) return $this->flagUrl; return $this->getBaseUrl() . "/flag.php"; } /** * Sets the selected language * * @param $lang two letter code for the language */ function setLang($lang) { $this->lang = $lang; } /** * Gets the path where the scripts are located * * @return path where scripts are located */ function getBasePath() { return $this->basePath; } /** * Sets the path where the scripts are located * * @param $basePath path where scripts are located */ function setBasePath($basePath) { $this->basePath = $basePath; } /** * Sets a set of urlparameters * * @param $urlParams list of parameters to get from the URL */ function setUrlParams($urlParams) { foreach($urlParams as $key) { $value = array_key_exists($key, $_GET) ? $_GET[$key] : ''; $this->urlParams[$key] = $value; } } /** * Gets the default language * * @return associative array of key and value for the url parameters */ function getUrlParams() { return $this->urlParams; } /** * Sets the name(identity) for this page * * @param $name name(identity) */ function setName($name) { $this->name = $name; } /** * Gets the name(identity) for this page * * @return name(identity) */ function getName() { return $this->name; } /** * Sets a cache object * * @param $cache CacheTimeCheck object */ function setCache($cache) { $this->cache = $cache; } /** * Gets the cache object * * @return cache object */ function getCache() { return $this->cache; } /** * A list of languages which this configuration supports. * * @return array of two letter language codes */ function getAcceptedLanguages() { return $this->acceptedLanguages; } /** * Gets the default value associated whith the key * * @param $key as specified in master xml file. * @return associated default */ function getInputDefault($key) { return $this->inputDefaults[$key]; } /** * Constructs an options object * * This contstructor will consume any tag with the type option, and * extract values from any tag with type input * * @include master.xml * * @param $baseDocument An open xml file */ 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); } } } ?>
