Размер файла: 2.92Kb
<?php
/**
* This file is part of JohnCMS Content Management System.
*
* @copyright JohnCMS Community
* @license https://opensource.org/licenses/GPL-3.0 GPL-3.0
* @link https://johncms.com JohnCMS Project
*/
declare(strict_types=1);
defined('_IN_JOHNCMS') || die('Error: restricted access');
/**
* @var PDO $db
* @var Johncms\System\Legacy\Tools $tools
*/
$mod = $request->getQuery('mod', '', FILTER_SANITIZE_STRING);
$title = __('List of users');
$nav_chain->add($title);
$album_access = 'AND (`access` > 1 OR `t1`.`user_id` = ' . $user->id . ')';
$count_access = 'WHERE (`access` > 1 OR `user_id` = ' . $user->id . ')';
if ($user->rights >= 6) {
$album_access = '';
$count_access = '';
}
// Список посетителей. у которых есть фотографии
switch ($mod) {
case 'boys':
$sql = 'WHERE `u`.`sex` = "m" ' . $album_access;
break;
case 'girls':
$sql = 'WHERE `u`.`sex` = "zh" ' . $album_access;
break;
default:
$sql = 'WHERE `u`.`sex` <> "" ' . $album_access;
}
$data = [];
$data['filters'] = [
'all' => [
'name' => __('All'),
'url' => './users',
'active' => ! $mod,
],
'boys' => [
'name' => __('Guys'),
'url' => './users?mod=boys',
'active' => $mod === 'boys',
],
'girls' => [
'name' => __('Girls'),
'url' => './users?mod=girls',
'active' => $mod === 'girls',
],
];
$total = $db->query('SELECT COUNT(DISTINCT(`t1`.`user_id`))
FROM `cms_album_cat` t1
JOIN `users` u ON `u`.`id` = `t1`.`user_id` ' . $sql . ';')->fetchColumn();
if ($total) {
// TODO: create index idx_combine ON cms_album_cat/cms_albun_files (access, user_id);
$req = $db->query('SELECT DISTINCT (`t1`.`user_id`) AS id,
`cat2`.`count_albums`,
`a2`.`count`,
`u`.`name` AS nick,
`u`.`lastdate`
FROM `cms_album_cat` t1
JOIN (SELECT `user_id`, COUNT(*) `count_albums` FROM `cms_album_cat` ' . $count_access . ' GROUP BY `user_id`) cat2
ON `t1`.`user_id` = `cat2`.`user_id`
LEFT JOIN (SELECT `user_id`, COUNT(*) `count` FROM `cms_album_files` ' . $count_access . ' GROUP BY `user_id`) a2
ON `a2`.`user_id` = `cat2`.`user_id`
JOIN `users` u ON `u`.`id` = `t1`.`user_id` ' . $sql . '
ORDER BY `u`.`name` ASC LIMIT ' . $start . ', ' . $user->config->kmess);
$users = [];
while ($res = $req->fetch()) {
$res['user_is_online'] = time() <= $res['lastdate'] + 300;
$res['album_url'] = './list?user=' . $res['id'];
if (! $res['count']) {
$res['count'] = 0;
}
$users[] = $res;
}
}
$data['total'] = $total;
$data['pagination'] = $tools->displayPagination('?' . ($mod ? 'mod=' . $mod . '&' : ''), $start, $total, $user->config->kmess);
$data['users'] = $users ?? [];
echo $view->render(
'album::users',
[
'title' => $title,
'page_title' => $title,
'data' => $data,
]
);