From a2dda76e6cfe084702f0bad24af8820a39e64491 Mon Sep 17 00:00:00 2001 From: markseu Date: Mon, 19 Aug 2013 14:47:00 +0200 Subject: [PATCH] Hello application interface (remix by Datentechniker David) --- system/core/core.php | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/system/core/core.php b/system/core/core.php index 0ad7b3e..0d6fc1d 100755 --- a/system/core/core.php +++ b/system/core/core.php @@ -5,7 +5,7 @@ // Yellow main class class Yellow { - const Version = "0.1.13"; + const Version = "0.1.14"; var $page; //current page data var $pages; //current page tree from file system var $toolbox; //toolbox with helpers @@ -362,6 +362,7 @@ class Yellow_Page function parseMeta() { $this->set("title", $this->yellow->toolbox->createTextTitle($this->location)); + $this->set("modified", date("c", is_readable($this->fileName) ? filemtime($this->fileName) : 0)); $this->set("sitename", $this->yellow->config->get("sitename")); $this->set("author", $this->yellow->config->get("author")); $this->set("language", $this->yellow->config->get("language")); @@ -479,9 +480,8 @@ class Yellow_Page // Return page modification time, Unix time function getModified($httpFormat = false) { - $modified = is_readable($this->fileName) ? filemtime($this->fileName) : 0; - if($this->isExisting("modified")) $modified = strtotime($this->get("modified")); - return $httpFormat ? $this->yellow->toolbox->getHttpTimeFormatted($modified) : $modified; + $modified = strtotime($this->get("modified")); + return $httpFormat ? $this->yellow->toolbox->getHttpTimeFormatted($modified) : $modified; } // Return page status code @@ -592,6 +592,21 @@ class Yellow_PageCollection extends ArrayObject } return $this; } + + // Sort page collection by meta data + function sort($key, $ascendingOrder = true) + { + $callback = function($a, $b) use ($key, $ascendingOrder) + { + return $ascendingOrder ? + strnatcasecmp($a->get($key), $b->get($key)) : + strnatcasecmp($b->get($key), $a->get($key)); + }; + $array = $this->getArrayCopy(); + usort($array, $callback); + $this->exchangeArray($array); + return $this; + } // Merge page collection function merge($input) @@ -600,8 +615,15 @@ class Yellow_PageCollection extends ArrayObject return $this; } + // Limit the number of pages in page collection + function limit($pagesMax) + { + $this->exchangeArray(array_slice($this->getArrayCopy(), 0, $pagesMax)); + return $this; + } + // Reverse page collection - function reverse($entriesMax = 0) + function reverse() { $this->exchangeArray(array_reverse($this->getArrayCopy())); return $this; @@ -1173,17 +1195,19 @@ class Yellow_Toolbox $elementFound = preg_match("/&.*?\;|<\s*?(\/?\w*)\s*?(.*?)\s*?\>/s", $text, $matches, PREG_OFFSET_CAPTURE, $offsetBytes); $element = $matches[0][0]; $elementName = $matches[1][0]; + $elementText = $matches[2][0]; $elementOffsetBytes = $elementFound ? $matches[0][1] : strlenb($text); $string = substrb($text, $offsetBytes, $elementOffsetBytes - $offsetBytes); $length = strlenu($string); $output .= substru($string, 0, $length < $lengthMax ? $length : $lengthMax-1); $lengthMax -= $length + ($element[0]=='&' ? 1 : 0); if($lengthMax<=0 || !$elementFound) break; - if(!empty($elementName)) + if(!empty($elementName) && substru($elementText, -1)!='/' && + !preg_match("/^(area|br|col|hr|img|input|col|param)/i", $elementName)) { - if(!preg_match("/^(\/|area|br|col|hr|img|input|col|param)/i", $elementName)) + if($elementName[0] != '/') { - if(substru($matches[2][0], -1) != '/') array_push($elementsOpen, $elementName); + array_push($elementsOpen, $elementName); } else { array_pop($elementsOpen); }