From 2a017afea40941f6cc18208a6f595ee129ae143c Mon Sep 17 00:00:00 2001 From: Thomas Lange Date: Sun, 1 Apr 2018 16:18:47 +0200 Subject: Add method "getSearchResults" to Page and Post class --- core/namespace/Page/Item.php | 14 ++++++++++++++ core/namespace/Post/Item.php | 21 +++++++++++++++++++++ 2 files changed, 35 insertions(+) (limited to 'core') diff --git a/core/namespace/Page/Item.php b/core/namespace/Page/Item.php index 4206f2f..cd2c94f 100644 --- a/core/namespace/Page/Item.php +++ b/core/namespace/Page/Item.php @@ -40,6 +40,20 @@ class Item extends \Item { return []; } + #=============================================================================== + # Return search results as Page\Attribute + #=============================================================================== + public static function getSearchResults($search, \Database $Database): array { + $Statement = $Database->prepare(sprintf("SELECT * FROM %s WHERE + MATCH(name, body) AGAINST(? IN BOOLEAN MODE) LIMIT 20", Attribute::TABLE)); + + if($Statement->execute([$search])) { + return $Statement->fetchAll($Database::FETCH_CLASS, 'Page\Attribute'); + } + + return []; + } + #=============================================================================== # Return associated User\Attribute #=============================================================================== diff --git a/core/namespace/Post/Item.php b/core/namespace/Post/Item.php index d5b7f2e..71d8014 100644 --- a/core/namespace/Post/Item.php +++ b/core/namespace/Post/Item.php @@ -47,6 +47,27 @@ class Item extends \Item { return []; } + #=============================================================================== + # Return search results as Post\Attribute + #=============================================================================== + public static function getSearchResults($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 * 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_CLASS, 'Post\Attribute'); + } + + return []; + } + #=============================================================================== # Return associated User\Attribute #=============================================================================== -- cgit v1.2.3