Use user cards for user search results.

This commit is contained in:
flash 2019-04-14 01:20:04 +02:00
parent 58457634e0
commit 03a6e15fe1
4 changed files with 71 additions and 15 deletions

View file

@ -2,6 +2,8 @@
display: flex;
flex-wrap: wrap;
justify-content: center;
overflow: hidden;
padding: 2px;
&__item {
margin: 2px;

View file

@ -101,8 +101,8 @@ $getUsers = db_prepare(sprintf(
:current_user_id AS `current_user_id`,
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`,
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`
@ -139,10 +139,10 @@ $getUsers = db_prepare(sprintf(
WHERE `user_id` = u.`user_id`
AND `subject_id` = `current_user_id`
) AS `user_is_follower`
FROM `msz_users` as u
LEFT JOIN `msz_roles` as r
FROM `msz_users` AS u
LEFT JOIN `msz_roles` AS r
ON r.`role_id` = u.`display_role`
LEFT JOIN `msz_user_roles` as ur
LEFT JOIN `msz_user_roles` AS ur
ON ur.`user_id` = u.`user_id`
WHERE ur.`role_id` = :role_id
%1$s

View file

@ -26,12 +26,62 @@ if (!empty($searchQuery)) {
$findForumPosts->bindValue('query', $searchQuery);
$forumPosts = db_fetch_all($findForumPosts);
$findUsers = db_prepare('
SELECT `user_id`, `username`
FROM `msz_users`
WHERE LOWER(`username`) LIKE CONCAT("%", LOWER(:query), "%");
');
$findUsers = db_prepare(sprintf(
'
SELECT
:current_user_id AS `current_user_id`,
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`,
(
SELECT COUNT(`subject_id`)
FROM `msz_user_relations`
WHERE `user_id` = u.`user_id`
AND `relation_type` = %1$d
) AS `user_count_following`,
(
SELECT COUNT(`user_id`)
FROM `msz_user_relations`
WHERE `subject_id` = u.`user_id`
AND `relation_type` = %1$d
) AS `user_count_followers`,
(
SELECT `relation_type` = %1$d
FROM `msz_user_relations`
WHERE `user_id` = `current_user_id`
AND `subject_id` = u.`user_id`
) AS `user_is_following`,
(
SELECT `relation_type` = %1$d
FROM `msz_user_relations`
WHERE `user_id` = u.`user_id`
AND `subject_id` = `current_user_id`
) AS `user_is_follower`
FROM `msz_users` AS u
LEFT JOIN `msz_roles` AS r
ON r.`role_id` = u.`display_role`
LEFT JOIN `msz_user_roles` AS ur
ON ur.`user_id` = u.`user_id`
WHERE LOWER(u.`username`) LIKE CONCAT("%%", LOWER(:query), "%%")
GROUP BY u.`user_id`
',
MSZ_USER_RELATION_FOLLOW
));
$findUsers->bindValue('query', $searchQuery);
$findUsers->bindValue('current_user_id', user_session_current('user_id', 0));
$users = db_fetch_all($findUsers);
$findNewsPosts = db_prepare('

View file

@ -1,6 +1,7 @@
{% extends 'home/master.twig' %}
{% from 'macros.twig' import container_title %}
{% from '_layout/input.twig' import input_text %}
{% from 'user/macros.twig' import user_card %}
{% set title = search_query|length < 1 ? 'Search' : 'Looking for ' ~ search_query %}
{% set canonical_url = url('search-query', {'query': search_query}) %}
@ -44,11 +45,14 @@
<div id="users" class="container container--lazy">
{{ container_title('Users (%s)'|format(users|length|number_format)) }}
{% for user in users %}
<a href="{{ url('user-profile', {'user': user.user_id}) }}" class="link">
{{ user.username }}
</a><br>
{% endfor %}
<div class="userlist">
{% for user in users %}
<div class="userlist__item">
{{ user_card(user) }}
</div>
{% endfor %}
</div>
</div>
<div id="news" class="container container--lazy">