misuzu/public/index.php

79 lines
2.5 KiB
PHP

<?php
use Misuzu\Application;
use Misuzu\Cache;
use Misuzu\Database;
require_once __DIR__ . '/../misuzu.php';
$config = $app->getConfig();
if ($config->get('Site', 'embed_linked_data', 'bool', false)) {
tpl_vars([
'embed_linked_data' => true,
'embed_name' => $config->get('Site', 'name'),
'embed_url' => $config->get('Site', 'url'),
'embed_logo' => $config->get('Site', 'external_logo'),
'embed_same_as' => explode(',', $config->get('Site', 'social_media')),
]);
}
$news = Database::query('
SELECT
p.`post_id`, p.`post_title`, p.`post_text`, p.`created_at`,
u.`user_id`, u.`username`,
COALESCE(u.`user_colour`, r.`role_colour`) as `user_colour`,
(
SELECT COUNT(`comment_id`)
FROM `msz_comments_posts`
WHERE `category_id` = `comment_section_id`
) as `post_comments`
FROM `msz_news_posts` as p
LEFT JOIN `msz_users` as u
ON p.`user_id` = u.`user_id`
LEFT JOIN `msz_roles` as r
ON u.`display_role` = r.`role_id`
WHERE p.`is_featured` = true
ORDER BY p.`created_at` DESC
LIMIT 3
')->fetchAll(PDO::FETCH_ASSOC);
$statistics = Cache::instance()->get('index:stats:v1', function () {
return [
'users' => (int)Database::query('
SELECT COUNT(`user_id`)
FROM `msz_users`
')->fetchColumn(),
'lastUser' => Database::query('
SELECT
u.`user_id`, u.`username`, u.`created_at`,
COALESCE(u.`user_colour`, r.`role_colour`) as `user_colour`
FROM `msz_users` as u
LEFT JOIN `msz_roles` as r
ON r.`role_id` = u.`display_role`
ORDER BY u.`user_id` DESC
LIMIT 1
')->fetch(PDO::FETCH_ASSOC),
];
}, 10800);
$changelog = Cache::instance()->get('index:changelog:v1', function () {
return Database::query('
SELECT
c.`change_id`, c.`change_log`,
a.`action_name`, a.`action_colour`, a.`action_class`,
DATE(`change_created`) as `change_date`,
!ISNULL(c.`change_text`) as `change_has_text`
FROM `msz_changelog_changes` as c
LEFT JOIN `msz_changelog_actions` as a
ON a.`action_id` = c.`action_id`
ORDER BY c.`change_created` DESC
LIMIT 10
')->fetchAll(PDO::FETCH_ASSOC);
}, 1800);
echo tpl_render('home.index', [
'users_count' => $statistics['users'],
'last_user' => $statistics['lastUser'],
'featured_changelog' => $changelog,
'featured_news' => $news,
]);