misuzu/public/news.php
2019-03-18 20:59:46 +01:00

100 lines
2.6 KiB
PHP

<?php
use Misuzu\Request\RequestVar;
require_once '../misuzu.php';
if (RequestVar::get()->isset('n')) {
header(sprintf('Location: %s', url('news-post', [
'post' => RequestVar::get()->select('n')->int(),
])));
http_response_code(301);
return;
}
$categoryId = RequestVar::get()->select('c')->int();
$postId = RequestVar::get()->select('p')->int();
if ($postId > 0) {
$post = news_post_get($postId);
if (!$post) {
echo render_error(404);
return;
}
if ($post['comment_section_id'] === null) {
$commentsInfo = comments_category_create("news-{$post['post_id']}");
if ($commentsInfo) {
$post['comment_section_id'] = $commentsInfo['category_id'];
news_post_comments_set(
$post['post_id'],
$post['comment_section_id'] = $commentsInfo['category_id']
);
}
} else {
$commentsInfo = comments_category_info($post['comment_section_id']);
}
echo tpl_render('news.post', [
'post' => $post,
'comments_perms' => comments_get_perms(user_session_current('user_id', 0)),
'comments_category' => $commentsInfo,
'comments' => comments_category_get($commentsInfo['category_id'], user_session_current('user_id', 0)),
]);
return;
}
if ($categoryId > 0) {
$category = news_category_get($categoryId, true);
if (empty($category)) {
echo render_error(404);
return;
}
$categoryPagination = pagination_create($category['posts_count'], 5);
$postsOffset = pagination_offset($categoryPagination, pagination_param('page'));
if (!pagination_is_valid_offset($postsOffset)) {
echo render_error(404);
return;
}
$posts = news_posts_get(
$postsOffset,
$categoryPagination['range'],
$category['category_id']
);
$featured = news_posts_get(0, 10, $category['category_id'], true);
tpl_var('news_pagination', $categoryPagination);
echo tpl_render('news.category', compact('category', 'posts', 'featured'));
return;
}
$categories = news_categories_get(0, 0, true);
$newsPagination = pagination_create(news_posts_count(null, true), 5);
$postsOffset = pagination_offset($newsPagination, pagination_param('page'));
if (!pagination_is_valid_offset($postsOffset)) {
echo render_error(404);
return;
}
$posts = news_posts_get(
$postsOffset,
$newsPagination['range'],
null,
true
);
if (!$posts) {
echo render_error(404);
return;
}
tpl_var('news_pagination', $newsPagination);
echo tpl_render('news.index', compact('categories', 'posts'));