From 22dacc02179643ddd4578a34cf8693ef86791cf7 Mon Sep 17 00:00:00 2001 From: Thomas Lange Date: Thu, 27 Apr 2017 12:37:01 +0200 Subject: Several changes have been made in this commit, which together with the previous commits result in version 2.0 (database update required): + Implemented [core]: A new database field has been added to all tables to define optional "arguments" for a page, post or user through the content editor. These arguments will be parsed into key->value pairs and can be used within templates to do something special. Please read the wiki of this repository for further information about this new feature. + Bugfix [core]: The function "makeSlugURL" had not convert uppercase umlauts to lowercase because "strtolower" was used instead of the multibyte equivalent "mb_strtolower". + Optimization [core]: The first regular expression within the function "makeSlugURL" has been optimized (checking for uppercase characters at this point is unnecessary because $string is only lowercase). + Optimization [all templates]: Markup for the pagination.php has been simplified (a little bit). + Optimization [admin template]: The javascript for the arrow key navigation has been outsourced to the main.js file. + Optimization [admin template]: The javascript file will now be included with the "defer" attribute. + Optimization [standard template]: Some language variables have been changed. Database update to version 2.0 (no existing data will be lost or changed): ALTER TABLE `page` ADD `argv` VARCHAR(100) NULL DEFAULT NULL AFTER `body`; ALTER TABLE `post` ADD `argv` VARCHAR(100) NULL DEFAULT NULL AFTER `body`; ALTER TABLE `user` ADD `argv` VARCHAR(100) NULL DEFAULT NULL AFTER `body`; --- core/functions.php | 8 ++++++-- core/namespace/Item.php | 17 +++++++++++++++++ core/namespace/Page/Attribute.php | 1 + core/namespace/Post/Attribute.php | 1 + core/namespace/User/Attribute.php | 1 + 5 files changed, 26 insertions(+), 2 deletions(-) (limited to 'core') diff --git a/core/functions.php b/core/functions.php index c6bdb1e..2e36524 100644 --- a/core/functions.php +++ b/core/functions.php @@ -90,6 +90,7 @@ function generateItemData(Item $Item): array { 'ID' => $Item->getID(), 'URL' => $Item->getURL(), 'GUID' => $Item->getGUID(), + 'ARGV' => $Item->getArguments(), 'PREV' => FALSE, 'NEXT' => FALSE, @@ -108,6 +109,7 @@ function generateItemData(Item $Item): array { 'SLUG' => $Item->attr('slug'), 'NAME' => $Item->attr('name'), 'BODY' => $Item->attr('body'), + 'ARGV' => $Item->attr('argv'), 'TIME_INSERT' => $Item->attr('time_insert'), 'TIME_UPDATE' => $Item->attr('time_update') ] @@ -136,6 +138,7 @@ function generateUserItemData(User\Item $User): array { 'ID' => $User->getID(), 'URL' => $User->getURL(), 'GUID' => $User->getGUID(), + 'ARGV' => $User->getArguments(), 'PREV' => FALSE, 'NEXT' => FALSE, @@ -152,6 +155,7 @@ function generateUserItemData(User\Item $User): array { 'ATTR' => [ 'SLUG' => $User->attr('slug'), 'BODY' => $User->attr('body'), + 'ARGV' => $User->attr('argv'), 'USERNAME' => $User->attr('username'), 'FULLNAME' => $User->attr('fullname'), 'MAILADDR' => $User->attr('mailaddr'), @@ -323,9 +327,9 @@ function description($string, $length = 200, $replace = ' […]') { # Generate a valid slug URL part from a string #=============================================================================== function makeSlugURL($string) { - $string = strtolower($string); + $string = mb_strtolower($string); $string = str_replace(['ä', 'ö', 'ü', 'ß'], ['ae', 'oe', 'ue', 'ss'], $string); - $string = preg_replace('/[^a-zA-Z0-9\-]/', '-', $string); + $string = preg_replace('/[^a-z0-9\-]/', '-', $string); $string = preg_replace('/-+/', '-', $string); return trim($string, '-'); diff --git a/core/namespace/Item.php b/core/namespace/Item.php index f3b6ceb..426dd2a 100644 --- a/core/namespace/Item.php +++ b/core/namespace/Item.php @@ -101,6 +101,23 @@ abstract class Item implements ItemInterface { return []; } + #=============================================================================== + # Return parsed arguments + #=============================================================================== + public function getArguments(): array { + if($argv = $this->Attribute->get('argv')) { + foreach(explode('|', rtrim($argv, '|')) as $delimeter) { + $part = explode('=', $delimeter); + + if(!empty($part[0])) { + $arguments[strtoupper($part[0])] = $part[1] ?? TRUE; + } + } + } + + return $arguments ?? []; + } + #=============================================================================== # Return previous item ID #=============================================================================== diff --git a/core/namespace/Page/Attribute.php b/core/namespace/Page/Attribute.php index c12a2c8..b1c4e01 100644 --- a/core/namespace/Page/Attribute.php +++ b/core/namespace/Page/Attribute.php @@ -11,6 +11,7 @@ class Attribute extends \Attribute { protected $slug = FALSE; protected $name = FALSE; protected $body = FALSE; + protected $argv = FALSE; protected $time_insert = FALSE; protected $time_update = FALSE; diff --git a/core/namespace/Post/Attribute.php b/core/namespace/Post/Attribute.php index 6f20183..73af3a2 100644 --- a/core/namespace/Post/Attribute.php +++ b/core/namespace/Post/Attribute.php @@ -11,6 +11,7 @@ class Attribute extends \Attribute { protected $slug = FALSE; protected $name = FALSE; protected $body = FALSE; + protected $argv = FALSE; protected $time_insert = FALSE; protected $time_update = FALSE; diff --git a/core/namespace/User/Attribute.php b/core/namespace/User/Attribute.php index b161fa9..c83fdfc 100644 --- a/core/namespace/User/Attribute.php +++ b/core/namespace/User/Attribute.php @@ -13,6 +13,7 @@ class Attribute extends \Attribute { protected $fullname = FALSE; protected $mailaddr = FALSE; protected $body = FALSE; + protected $argv = FALSE; protected $time_insert = FALSE; protected $time_update = FALSE; -- cgit v1.2.3