diff options
author | Thomas Lange <code@nerdmind.de> | 2017-02-24 21:27:59 +0100 |
---|---|---|
committer | Thomas Lange <code@nerdmind.de> | 2017-02-24 21:27:59 +0100 |
commit | 52b077a48c743ba4d08ac00520a0bf1ef6deef5f (patch) | |
tree | b4205c194167e0e03e273957cdd0aab3be9fdf01 /core/namespace/Post | |
download | blog-1.0.tar.gz blog-1.0.tar.xz blog-1.0.zip |
Initial commit.v1.0
Diffstat (limited to 'core/namespace/Post')
-rw-r--r-- | core/namespace/Post/Attribute.php | 22 | ||||
-rw-r--r-- | core/namespace/Post/Exception.php | 5 | ||||
-rw-r--r-- | core/namespace/Post/Factory.php | 9 | ||||
-rw-r--r-- | core/namespace/Post/Item.php | 50 |
4 files changed, 86 insertions, 0 deletions
diff --git a/core/namespace/Post/Attribute.php b/core/namespace/Post/Attribute.php new file mode 100644 index 0000000..6f20183 --- /dev/null +++ b/core/namespace/Post/Attribute.php @@ -0,0 +1,22 @@ +<?php +namespace Post; + +class Attribute extends \Attribute { + + #=============================================================================== + # Pre-Define database table columns + #=============================================================================== + protected $id = FALSE; + protected $user = FALSE; + protected $slug = FALSE; + protected $name = FALSE; + protected $body = FALSE; + protected $time_insert = FALSE; + protected $time_update = FALSE; + + #=============================================================================== + # Define database table name + #=============================================================================== + const TABLE = 'post'; +} +?>
\ No newline at end of file diff --git a/core/namespace/Post/Exception.php b/core/namespace/Post/Exception.php new file mode 100644 index 0000000..516ddbe --- /dev/null +++ b/core/namespace/Post/Exception.php @@ -0,0 +1,5 @@ +<?php +namespace Post; + +class Exception extends \Exception {} +?>
\ No newline at end of file diff --git a/core/namespace/Post/Factory.php b/core/namespace/Post/Factory.php new file mode 100644 index 0000000..34aa5e4 --- /dev/null +++ b/core/namespace/Post/Factory.php @@ -0,0 +1,9 @@ +<?php +namespace Post; + +class Factory extends \ItemFactory { + public static function buildBySlug($slug): \Item { + return self::build(Item::getIDByField('slug', $slug, \Application::getDatabase())); + } +} +?>
\ No newline at end of file diff --git a/core/namespace/Post/Item.php b/core/namespace/Post/Item.php new file mode 100644 index 0000000..a269ce4 --- /dev/null +++ b/core/namespace/Post/Item.php @@ -0,0 +1,50 @@ +<?php +namespace Post; + +class Item extends \Item { + const CONFIGURATION = 'POST'; + + #=============================================================================== + # Return absolute post URL + #=============================================================================== + public function getURL(): string { + if(\Application::get('POST.SLUG_URLS')) { + return \Application::getPostURL("{$this->Attribute->get('slug')}/"); + } + + return \Application::getPostURL("{$this->Attribute->get('id')}/"); + } + + #=============================================================================== + # Return unique pseudo GUID + #=============================================================================== + public function getGUID(): string { + foreach(\Application::get('POST.FEED_GUID') as $attribute) { + $attributes[] = $this->Attribute->get($attribute); + } + + return sha1(implode(NULL, $attributes)); + } + + #=============================================================================== + # Return unique post IDs for search results + #=============================================================================== + public static function getSearchResultIDs($search, array $date, \Database $Database): array { + $D = ($D = intval($date[0])) !== 0 ? $D : 'NULL'; + $M = ($M = intval($date[1])) !== 0 ? $M : 'NULL'; + $Y = ($Y = intval($date[2])) !== 0 ? $Y : 'NULL'; + + $Statement = $Database->prepare(sprintf("SELECT id FROM %s WHERE + ({$Y} IS NULL OR YEAR(time_insert) = {$Y}) AND + ({$M} IS NULL OR MONTH(time_insert) = {$M}) AND + ({$D} IS NULL OR DAY(time_insert) = {$D}) AND + MATCH(name, body) AGAINST(? IN BOOLEAN MODE) LIMIT 20", Attribute::TABLE)); + + if($Statement->execute([$search])) { + return $Statement->fetchAll($Database::FETCH_COLUMN); + } + + return []; + } +} +?>
\ No newline at end of file |