summaryrefslogtreecommitdiffstats
path: root/core/namespace/Post
diff options
context:
space:
mode:
authorThomas Lange <code@nerdmind.de>2017-02-24 21:27:59 +0100
committerThomas Lange <code@nerdmind.de>2017-02-24 21:27:59 +0100
commit52b077a48c743ba4d08ac00520a0bf1ef6deef5f (patch)
treeb4205c194167e0e03e273957cdd0aab3be9fdf01 /core/namespace/Post
downloadblog-6442789bf36c04639bf5f104ea963937717a39b5.tar.gz
blog-6442789bf36c04639bf5f104ea963937717a39b5.tar.xz
blog-6442789bf36c04639bf5f104ea963937717a39b5.zip
Initial commit.v1.0
Diffstat (limited to 'core/namespace/Post')
-rw-r--r--core/namespace/Post/Attribute.php22
-rw-r--r--core/namespace/Post/Exception.php5
-rw-r--r--core/namespace/Post/Factory.php9
-rw-r--r--core/namespace/Post/Item.php50
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