From 4d6fb64f3a1d035e17d372d5badd06cf614e5e2c Mon Sep 17 00:00:00 2001 From: flashwave Date: Thu, 31 Aug 2023 00:19:20 +0000 Subject: [PATCH] Added shitty search hack to users class. --- public-legacy/search.php | 46 +++++++++++++------------------------- src/Users/Users.php | 35 ++++++++++++++++++++++++++++- templates/home/search.twig | 24 ++++++++++++-------- 3 files changed, 65 insertions(+), 40 deletions(-) diff --git a/public-legacy/search.php b/public-legacy/search.php index 851a9a0..95272e6 100644 --- a/public-legacy/search.php +++ b/public-legacy/search.php @@ -129,7 +129,7 @@ if(!empty($searchQuery)) { } catch(RuntimeException $ex) {} } - $forumPostInfos = $forum->getPosts(categoryInfo: $forumCategoryIds, deleted: false, searchQuery: $searchQueryEvaluated); + $forumPostInfos = $forum->getPosts(categoryInfo: $forumCategoryIds, searchQuery: $searchQueryEvaluated); $forumPosts = []; foreach($forumPostInfos as $postInfo) { @@ -194,34 +194,20 @@ if(!empty($searchQuery)) { ]; } - if(empty($searchQueryEvaluated['type']) || $searchQueryEvaluated['type'] === 'member') { - $findUsers = DB::prepare(' - SELECT u.`user_id`, u.`username`, u.`user_country`, - u.`user_created`, u.`user_active`, r.`role_id`, - COALESCE(u.`user_title`, r.`role_title`) AS `user_title`, - COALESCE(u.`user_colour`, r.`role_colour`) AS `user_colour`, - ( - SELECT COUNT(`topic_id`) - FROM `msz_forum_topics` - WHERE `user_id` = u.`user_id` - AND `topic_deleted` IS NULL - ) AS `user_count_topics`, - ( - SELECT COUNT(`post_Id`) - FROM `msz_forum_posts` - WHERE `user_id` = u.`user_id` - AND `post_deleted` IS NULL - ) AS `user_count_posts` - FROM `msz_users` AS u - LEFT JOIN `msz_roles` AS r - ON r.`role_id` = u.`display_role` - LEFT JOIN `msz_users_roles` AS ur - ON ur.`user_id` = u.`user_id` - WHERE u.`username` LIKE CONCAT("%%", :query, "%%") - GROUP BY u.`user_id` - '); - $findUsers->bind('query', $searchQuery); - $userList = $findUsers->fetchAll(); + $members = []; + $memberInfos = $users->getUsers(searchQuery: $searchQueryEvaluated); + + foreach($memberInfos as $memberInfo) { + $members[] = $member = new stdClass; + $member->info = $memberInfo; + + $memberId = $memberInfo->getId(); + if(!array_key_exists($memberId, $userColours)) + $userColours[$memberId] = $users->getUserColour($memberId); + + $member->colour = $userColours[$memberId]; + $member->ftopics = $forum->countTopics(userInfo: $memberInfo, deleted: false); + $member->fposts = $forum->countPosts(userInfo: $memberInfo, deleted: false); } } @@ -229,6 +215,6 @@ Template::render('home.search', [ 'search_query' => $searchQuery, 'forum_topics' => $forumTopics ?? [], 'forum_posts' => $forumPosts ?? [], - 'users' => $userList ?? [], + 'members' => $members ?? [], 'news_posts' => $newsPosts ?? [], ]); diff --git a/src/Users/Users.php b/src/Users/Users.php index 7060584..1f0754a 100644 --- a/src/Users/Users.php +++ b/src/Users/Users.php @@ -110,8 +110,35 @@ class Users { ?bool $deleted = null, ?string $orderBy = null, ?bool $reverseOrder = null, + ?array $searchQuery = null, ?Pagination $pagination = null ): array { + // remove this hack when search server + $hasSearchQuery = $searchQuery !== null; + $searchLimitResults = false; + if($hasSearchQuery) { + if(!empty($searchQuery['type']) + && $searchQuery['type'] !== 'member') + return []; + + $roleInfo = null; + $after = null; + $lastActiveInMinutes = null; + $newerThanDays = null; + $birthdate = null; + $deleted = false; + $orderBy = 'id'; + $reverseOrder = false; + $pagination = null; + $searchLimitResults = true; + + if(!empty($searchQuery['after'])) + $after = $searchQuery['after']; + + $searchQuery = $searchQuery['query_string']; + $hasSearchQuery = !empty($searchQuery); + } + if($roleInfo instanceof RoleInfo) $roleInfo = $roleInfo->getId(); if($after instanceof UserInfo) @@ -152,12 +179,16 @@ class Users { $query .= sprintf(' %s user_deleted %s NULL', ++$args > 1 ? 'AND' : 'WHERE', $deleted ? 'IS NOT' : 'IS'); if($hasBirthdate) $query .= sprintf(' %s user_birthdate LIKE ?', ++$args > 1 ? 'AND' : 'WHERE'); + if($hasSearchQuery) + $query .= sprintf(' %s username LIKE CONCAT("%%", ?, "%%")', ++$args > 1 ? 'AND' : 'WHERE'); if($hasOrderBy) { $query .= sprintf(' ORDER BY %s', $orderBy[0]); if($orderBy[1] !== null) $query .= ' ' . ($orderBy[1] ? 'DESC' : 'ASC'); } - if($hasPagination) + if($searchLimitResults) + $query .= ' LIMIT 20'; + elseif($hasPagination) $query .= ' LIMIT ? OFFSET ?'; $args = 0; @@ -172,6 +203,8 @@ class Users { $stmt->addParameter(++$args, $newerThanDays); if($hasBirthdate) $stmt->addParameter(++$args, $birthdate->format('%-m-d')); + if($hasSearchQuery) + $stmt->addParameter(++$args, $searchQuery); if($hasPagination) { $stmt->addParameter(++$args, $pagination->getRange()); $stmt->addParameter(++$args, $pagination->getOffset()); diff --git a/templates/home/search.twig b/templates/home/search.twig index 86929df..0a2d8a7 100644 --- a/templates/home/search.twig +++ b/templates/home/search.twig @@ -18,7 +18,7 @@ - {% if forum_topics|length > 0 or forum_posts|length > 0 or users|length > 0 or news_posts|length > 0 %} + {% if forum_topics|length > 0 or forum_posts|length > 0 or members|length > 0 or news_posts|length > 0 %}
{% if forum_topics|length > 0 %} @@ -38,8 +38,8 @@ {% endif %} - {% if users|length > 0 %} - + {% if members|length > 0 %} +
Members @@ -60,7 +60,7 @@
{% if search_query is not empty and not ( - forum_topics|length > 0 or forum_posts|length > 0 or users|length > 0 or news_posts|length > 0 + forum_topics|length > 0 or forum_posts|length > 0 or members|length > 0 or news_posts|length > 0 ) %}