misuzu/public/changelog.php

101 lines
3.3 KiB
PHP
Raw Normal View History

2018-07-06 01:28:06 +00:00
<?php
use Misuzu\Database;
require_once __DIR__ . '/../misuzu.php';
$changelogOffset = max((int)($_GET['o'] ?? 0), 0);
$changelogRange = 30;
$changelogChange = (int)($_GET['c'] ?? 0);
$changelogDate = $_GET['d'] ?? '';
$changelogUser = (int)($_GET['u'] ?? 0);
$changelogTags = $_GET['t'] ?? '';
2018-07-06 01:28:06 +00:00
2018-08-06 22:19:35 +00:00
$commentPerms = comments_get_perms($app->getUserId());
2018-08-15 01:12:58 +00:00
tpl_vars([
2018-07-06 01:28:06 +00:00
'changelog_offset' => $changelogOffset,
'changelog_take' => $changelogRange,
2018-08-06 22:19:35 +00:00
'comments_perms' => $commentPerms,
2018-07-06 01:28:06 +00:00
]);
if ($changelogChange > 0) {
$getChange = Database::prepare('
2018-07-06 01:28:06 +00:00
SELECT
c.`change_id`, c.`change_created`, c.`change_log`, c.`change_text`,
a.`action_name`, a.`action_colour`, a.`action_class`,
u.`user_id`, u.`username`,
DATE(`change_created`) as `change_date`,
COALESCE(u.`user_title`, r.`role_title`) as `user_title`,
COALESCE(u.`user_colour`, r.`role_colour`) as `user_colour`
2018-07-06 01:28:06 +00:00
FROM `msz_changelog_changes` as c
LEFT JOIN `msz_users` as u
ON u.`user_id` = c.`user_id`
LEFT JOIN `msz_roles` as r
ON r.`role_id` = u.`display_role`
LEFT JOIN `msz_changelog_actions` as a
ON a.`action_id` = c.`action_id`
WHERE `change_id` = :change_id
');
$getChange->bindValue('change_id', $changelogChange);
$change = $getChange->execute() ? $getChange->fetch(PDO::FETCH_ASSOC) : [];
if (!$change) {
http_response_code(404);
} else {
$getTags = Database::prepare('
2018-07-06 01:28:06 +00:00
SELECT
t.`tag_id`, t.`tag_name`, t.`tag_description`
FROM `msz_changelog_tags` as t
LEFT JOIN `msz_changelog_change_tags` as ct
ON ct.`tag_id` = t.`tag_id`
WHERE ct.`change_id` = :change_id
');
$getTags->bindValue('change_id', $change['change_id']);
$tags = $getTags->execute() ? $getTags->fetchAll(PDO::FETCH_ASSOC) : [];
2018-08-15 01:12:58 +00:00
tpl_var('tags', $tags);
2018-07-06 01:28:06 +00:00
}
2018-08-15 01:12:58 +00:00
echo tpl_render('changelog.change', [
2018-08-06 22:19:35 +00:00
'change' => $change,
'comments_category' => $commentsCategory = comments_category_info(
"changelog-date-{$change['change_date']}",
true
),
'comments' => comments_category_get($commentsCategory['category_id'], $app->getUserId()),
2018-08-06 22:19:35 +00:00
]);
2018-07-06 01:28:06 +00:00
return;
}
if (!empty($changelogDate)) {
$dateParts = explode('-', $changelogDate, 3);
if (count($dateParts) !== 3
|| !array_test($dateParts, 'is_numeric')
|| !checkdate($dateParts[1], $dateParts[2], $dateParts[0])) {
2018-07-06 01:28:06 +00:00
echo render_error(404);
return;
}
}
$changesCount = !empty($changelogDate) ? -1 : changelog_count_changes($changelogDate, $changelogUser);
$changes = changelog_get_changes($changelogDate, $changelogUser, $changelogOffset, $changelogRange);
2018-07-06 01:28:06 +00:00
if (!$changes) {
http_response_code(404);
}
2018-07-06 01:28:06 +00:00
2018-08-15 20:29:18 +00:00
if (!empty($changelogDate) && count($changes) > 0) {
2018-08-15 01:12:58 +00:00
tpl_vars([
2018-08-06 22:19:35 +00:00
'comments_category' => $commentsCategory = comments_category_info("changelog-date-{$changelogDate}", true),
'comments' => comments_category_get($commentsCategory['category_id'], $app->getUserId()),
2018-08-06 22:19:35 +00:00
]);
}
2018-08-15 01:12:58 +00:00
echo tpl_render('changelog.index', [
2018-07-06 01:28:06 +00:00
'changes' => $changes,
'changelog_count' => $changesCount,
'changelog_date' => $changelogDate,
'changelog_user' => $changelogUser,
2018-07-06 01:28:06 +00:00
]);