commit f8dd50d5720213b5e1b9b50d68fadb5eddd5ca84
parent 9fdeb9972b744f3c9abc8ef98ff44182d33f3f21
Author: markseu <mark2011@mayberg.se>
Date: Mon, 4 Apr 2016 12:02:11 +0200
System update (developers cut)
Diffstat:
1 file changed, 46 insertions(+), 44 deletions(-)
diff --git a/system/plugins/core.php b/system/plugins/core.php
@@ -81,11 +81,8 @@ class YellowCore
}
$this->config->load($this->config->get("configDir").$this->config->get("configFile"));
$this->text->load($this->config->get("pluginDir").$this->config->get("textFile"));
- $this->themes->load($this->config->get("themeDir")."(.*).css");
- date_default_timezone_set($this->config->get("serverTime"));
- list($pathRoot, $pathHome) = $this->lookup->getContentInformation();
- $this->config->set("contentRootDir", $pathRoot);
- $this->config->set("contentHomeDir", $pathHome);
+ $this->lookup->load();
+ $this->themes->load();
}
// Handle command
@@ -158,13 +155,13 @@ class YellowCore
}
if($statusCode == 0)
{
- $statusCode = is_readable($fileName) ? 200 : 404;
- $fileName = $this->getStaticFileFromCache($location, $fileName, $cacheable, $statusCode);
- if($this->isStaticFile($fileName))
+ if($this->isStaticFile($location, $fileName, $cacheable))
{
- $statusCode = $this->sendFile($statusCode, $fileName, $cacheable);
+ $fileName = $this->getStaticFileFromCache($location, $fileName, $cacheable);
+ $statusCode = $this->sendFile(200, $fileName, $cacheable);
} else {
- $fileName = $this->readPage($serverScheme, $serverName, $base, $location, $fileName, $cacheable, $statusCode);
+ $fileName = $this->readPage($serverScheme, $serverName, $base, $location, $fileName, $cacheable,
+ max(is_readable($fileName) ? 200 : 404, $this->page->statusCode), $this->page->get("pageError"));
$statusCode = $this->sendPage();
}
}
@@ -323,26 +320,22 @@ class YellowCore
}
// Return static file from cache if available
- function getStaticFileFromCache($location, $fileName, $cacheable, $statusCode)
+ function getStaticFileFromCache($location, $fileName, $cacheable)
{
- if(PHP_SAPI!="cli" && $cacheable)
+ if(PHP_SAPI!="cli" && is_readable($fileName) && $cacheable)
{
- if($statusCode == 200)
- {
- $location .= $this->toolbox->getLocationArgs();
- $fileNameStatic = rtrim($this->config->get("staticDir"), '/').$location;
- if(!$this->lookup->isFileLocation($location)) $fileNameStatic .= $this->config->get("staticDefaultFile");
- } else if($statusCode == 404) {
- $fileNameStatic = $this->config->get("staticDir").$this->config->get("staticErrorFile");
- }
+ $location .= $this->toolbox->getLocationArgs();
+ $fileNameStatic = rtrim($this->config->get("staticDir"), '/').$location;
+ if(!$this->lookup->isFileLocation($location)) $fileNameStatic .= $this->config->get("staticDefaultFile");
if(is_readable($fileNameStatic)) $fileName = $fileNameStatic;
}
return $fileName;
}
// Check if static file
- function isStaticFile($fileName)
+ function isStaticFile($location, $fileName, $cacheable)
{
+ $fileName = $this->getStaticFileFromCache($location, $fileName, $cacheable);
$staticDirLength = strlenu($this->config->get("staticDir"));
$systemDirLength = strlenu($this->config->get("systemDir"));
return substru($fileName, 0, $staticDirLength) == $this->config->get("staticDir") ||
@@ -604,7 +597,7 @@ class YellowPage
}
if(!$this->isCacheable()) $this->setHeader("Cache-Control", "no-cache, must-revalidate");
if(!$this->isHeader("Content-Type")) $this->setHeader("Content-Type", "text/html; charset=utf-8");
- if(!$this->isHeader("Content-Modified")) $this->setHeader("Content-Modified", $this->getModified(true));
+ if(!$this->isHeader("Page-Modified")) $this->setHeader("Page-Modified", $this->getModified(true));
if(!$this->isHeader("Last-Modified")) $this->setHeader("Last-Modified", $this->getLastModified(true));
if(!$this->yellow->text->isLanguage($this->get("language")))
{
@@ -861,7 +854,7 @@ class YellowPage
return $this->isHeader($key) ? $this->headerData[$key] : "";
}
- // Return page content modification date, Unix time or HTTP format
+ // Return page modification date, Unix time or HTTP format
function getModified($httpFormat = false)
{
$modified = strtotime($this->get("modified"));
@@ -1623,11 +1616,10 @@ class YellowThemes
}
// Load themes
- function load($fileName)
+ function load()
{
- $path = dirname($fileName);
- $regex = "/^".basename($fileName)."$/";
- foreach($this->yellow->toolbox->getDirectoryEntries($path, $regex, true, false) as $entry)
+ $path = $this->yellow->config->get("themeDir");
+ foreach($this->yellow->toolbox->getDirectoryEntries($path, "/^.*\.css$/", true, false) as $entry)
{
$name = $this->yellow->lookup->normaliseName(basename($entry), true, true);
$theme = $version = "";
@@ -1933,6 +1925,15 @@ class YellowLookup
{
$this->yellow = $yellow;
}
+
+ // Load file system information
+ function load()
+ {
+ list($pathRoot, $pathHome) = $this->getContentInformation();
+ $this->yellow->config->set("contentRootDir", $pathRoot);
+ $this->yellow->config->set("contentHomeDir", $pathHome);
+ date_default_timezone_set($this->yellow->config->get("serverTime"));
+ }
// Return root locations
function findRootLocations($includePath = true)
@@ -2546,27 +2547,28 @@ class YellowToolbox
}
// Return human readable HTTP server status
- function getHttpStatusFormatted($statusCode)
+ function getHttpStatusFormatted($statusCode, $shortFormat = false)
{
- $serverProtocol = $_SERVER["SERVER_PROTOCOL"];
- if(!preg_match("/^HTTP\//", $serverProtocol)) $serverProtocol = "HTTP/1.1";
switch($statusCode)
{
- case 0: $text = "$serverProtocol $statusCode No data"; break;
- case 200: $text = "$serverProtocol $statusCode OK"; break;
- case 301: $text = "$serverProtocol $statusCode Moved permanently"; break;
- case 302: $text = "$serverProtocol $statusCode Moved temporarily"; break;
- case 303: $text = "$serverProtocol $statusCode Reload please"; break;
- case 304: $text = "$serverProtocol $statusCode Not modified"; break;
- case 400: $text = "$serverProtocol $statusCode Bad request"; break;
- case 404: $text = "$serverProtocol $statusCode Not found"; break;
- case 424: $text = "$serverProtocol $statusCode Not existing"; break;
- case 444: $text = "$serverProtocol $statusCode No response"; break;
- case 500: $text = "$serverProtocol $statusCode Server error"; break;
- case 503: $text = "$serverProtocol $statusCode Service unavailable"; break;
- default: $text = "$serverProtocol $statusCode Unknown status";
+ case 0: $text = "No data"; break;
+ case 200: $text = "OK"; break;
+ case 301: $text = "Moved permanently"; break;
+ case 302: $text = "Moved temporarily"; break;
+ case 303: $text = "Reload please"; break;
+ case 304: $text = "Not modified"; break;
+ case 400: $text = "Bad request"; break;
+ case 403: $text = "Forbidden"; break;
+ case 404: $text = "Not found"; break;
+ case 424: $text = "Not existing"; break;
+ case 444: $text = "No response"; break;
+ case 500: $text = "Server error"; break;
+ case 503: $text = "Service unavailable"; break;
+ default: $text = "Error $statusCode";
}
- return $text;
+ $serverProtocol = $_SERVER["SERVER_PROTOCOL"];
+ if(!preg_match("/^HTTP\//", $serverProtocol)) $serverProtocol = "HTTP/1.1";
+ return $shortFormat ? $text : "$serverProtocol $statusCode $text";
}
// Return human readable HTTP date