commit 77196b4e6e446475d587eb89d106f9f03b2c1cde
parent 5568460a81b23d196d17f88f424427ebe8fe7167
Author: markseu <mark2011@mayberg.se>
Date: Tue, 3 Feb 2015 14:00:01 +0100
Core update (better date handling)
Diffstat:
3 files changed, 34 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
@@ -1,4 +1,4 @@
-Yellow 0.4.25
+Yellow 0.4.26
=============
[](https://gitter.im/markseu/yellowcms)
diff --git a/system/config/language-en.ini b/system/config/language-en.ini
@@ -18,5 +18,7 @@ webinterfaceNew = +
webinterfaceUserHelp = Help
webinterfaceUserHelpUrl = https://github.com/markseu/yellowcms/wiki
webinterfaceUserLogout = Logout
+dateMonths = January, February, March, April, May, June, July, August, September, October, November, December
+dateWeekdays = Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
paginationPrevious = ← Previous
paginationNext = Next →
diff --git a/system/core/core.php b/system/core/core.php
@@ -5,7 +5,7 @@
// Yellow main class
class Yellow
{
- const Version = "0.4.25";
+ const Version = "0.4.26";
var $page; //current page
var $pages; //pages from file system
var $config; //configuration
@@ -463,7 +463,6 @@ class YellowPage
function parseMeta($pageError = "")
{
$this->metaData = array();
- $this->set("modified", date("c", is_readable($this->fileName) ? filemtime($this->fileName) : 0));
$this->set("title", $this->yellow->toolbox->createTextTitle($this->location));
$this->set("sitename", $this->yellow->config->get("sitename"));
$this->set("author", $this->yellow->config->get("author"));
@@ -474,6 +473,7 @@ class YellowPage
$this->set("language", $this->yellow->toolbox->findLanguageFromFile($this->fileName,
$this->yellow->config->get("contentDir"), $this->yellow->config->get("contentRootDir"),
$this->yellow->config->get("language")));
+ $this->set("modified", date("c", $this->yellow->toolbox->findModifiedFromFile($this->fileName)));
$this->set("parser", $this->yellow->config->get("parser"));
if(preg_match("/^(\xEF\xBB\xBF)?\-\-\-[\r\n]+(.+?)[\r\n]+\-\-\-[\r\n]+/s", $this->rawData, $parsed))
@@ -623,10 +623,10 @@ class YellowPage
}
// Return page meta data as human readable date, HTML encoded
- function getFormatted($key, $dateFormat = "")
+ function getFormatted($key)
{
- if(empty($dateFormat)) $dateFormat = $this->yellow->text->get("languageDateFormat");
- return htmlspecialchars(date($dateFormat, strtotime($this->get($key))));
+ $dateFormat = $this->yellow->text->get("languageDateFormat");
+ return $this->yellow->text->getDateFormatted($dateFormat, strtotime($this->get($key)));
}
// Return page content, HTML encoded or raw format
@@ -1378,6 +1378,20 @@ class YellowText
return htmlspecialchars($this->getText($key, $this->language));
}
+ // Return human readable date, HTML encoded
+ function getDateFormatted($dateFormat, $timestamp)
+ {
+ $dateMonths = preg_split("/,\s*/", $this->get("dateMonths"));
+ $dateWeekdays = preg_split("/,\s*/", $this->get("dateWeekdays"));
+ $month = $dateMonths[date('n', $timestamp) - 1];
+ $weekday = $dateWeekdays[date('N', $timestamp) - 1];
+ $dateFormat = preg_replace("/(?<!\\\)F/", addcslashes($month, 'A..Za..z'), $dateFormat);
+ $dateFormat = preg_replace("/(?<!\\\)M/", addcslashes(substru($month, 0, 3), 'A..Za..z'), $dateFormat);
+ $dateFormat = preg_replace("/(?<!\\\)D/", addcslashes(substru($weekday, 0, 3), 'A..Za..z'), $dateFormat);
+ $dateFormat = preg_replace("/(?<!\\\)l/", addcslashes($weekday, 'A..Za..z'), $dateFormat);
+ return htmlspecialchars(date($dateFormat, $timestamp));
+ }
+
// Return text strings
function getData($filterStart = "", $language = "")
{
@@ -1942,6 +1956,18 @@ class YellowToolbox
}
return $fileNames;
}
+
+ // Return modification date from file path, Unix time
+ function findModifiedFromFile($fileName)
+ {
+ $modified = is_readable($fileName) ? filemtime($fileName) : 0;
+ if($modified == 0)
+ {
+ $path = dirname($fileName);
+ $modified = is_readable($path) ? filemtime($path) : 0;
+ }
+ return $modified;
+ }
// Return theme/template name from file path
function findNameFromFile($fileName, $pathBase, $nameDefault, $fileExtension)