aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorThomas Lange <code@nerdmind.de>2017-04-27 12:37:01 +0200
committerThomas Lange <code@nerdmind.de>2017-04-27 12:37:01 +0200
commit22dacc02179643ddd4578a34cf8693ef86791cf7 (patch)
treee5d575fcf12d30aee0eb21e4259ed5d611df37de /core
parent39944454324b4c66b8cf2444cca17c149208dfac (diff)
downloadblog-22dacc02179643ddd4578a34cf8693ef86791cf7.tar.gz
blog-22dacc02179643ddd4578a34cf8693ef86791cf7.tar.xz
blog-22dacc02179643ddd4578a34cf8693ef86791cf7.zip
Several changes have been made in this commit, which together with the previous commits result in version 2.0 (database update required):v2.0
+ 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`;
Diffstat (limited to 'core')
-rw-r--r--core/functions.php8
-rw-r--r--core/namespace/Item.php17
-rw-r--r--core/namespace/Page/Attribute.php1
-rw-r--r--core/namespace/Post/Attribute.php1
-rw-r--r--core/namespace/User/Attribute.php1
5 files changed, 26 insertions, 2 deletions
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
@@ -102,6 +102,23 @@ abstract class Item implements ItemInterface {
}
#===============================================================================
+ # 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
#===============================================================================
public function getPrevID(): int {
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;