You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

211 lines
6.8 KiB

<?php
/**
* @package tikiwiki
*/
// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
//
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
// $Id$
$section = 'blogs';
require_once('tiki-setup.php');
$bloglib = TikiLib::lib('blog');
$auto_query_args = [
'postId',
'blogId',
'offset',
'find',
'sort_mode',
'page',
'mode',
'show_comments'
];
$access->check_feature('feature_blogs');
if (empty($_REQUEST["postId"])) {
$smarty->assign('msg', tra('No post indicated'));
$smarty->display('error.tpl');
die;
} else {
$postId = $_REQUEST['postId'];
}
$post_info = $bloglib->get_post($postId);
if (! $post_info) {
$smarty->assign('msg', tra("Post not found"));
$smarty->display("error.tpl");
die;
} else {
$bloglib->add_blog_post_hit($postId);
}
$blogId = $post_info['blogId'];
//Keep track of month of last viewed posts for months_links module foldable display
$_SESSION['blogs_last_viewed_month'] = TikiLib::date_format("%Y-%m", $post_info['created']);
$blog_data = $bloglib->get_blog($blogId);
if (! $blog_data) {
$smarty->assign('msg', tra("Blog not found"));
$smarty->display("error.tpl");
die;
}
$tikilib->get_perm_object($postId, 'blog post');
$access->check_permission('tiki_p_read_blog', '', 'blog post', $postId);
$ownsblog = 'n';
if ($user && $user == $blog_data["user"]) {
$ownsblog = 'y';
}
$ownspost = 'n';
if ($user && $user == $post_info["user"]) {
$ownspost = 'y';
}
if ($ownspost == 'n' && $ownsblog == 'n' && $tiki_p_blog_admin != 'y' && $post_info["priv"] == 'y') {
$smarty->assign('errortype', 401);
$smarty->assign('msg', tra("You do not have permission to view this blog post while it is marked as private"));
$smarty->display("error.tpl");
die;
}
if ($ownspost == 'n' && $ownsblog == 'n' && $tiki_p_blog_admin != 'y' && $post_info['created'] > $tikilib->now) {
$smarty->assign('errortype', 401);
$smarty->assign('msg', tra('Permission denied'));
$smarty->display("error.tpl");
die;
}
$allowprivate = 'n';
if (($user && $ownsblog == 'y') || $tiki_p_blog_admin == 'y') {
$allowprivate = 'y';
}
$post_info['adjacent'] = $bloglib->_get_adjacent_posts($blogId, $post_info['created'], $tiki_p_blog_admin == 'y' ? null : $tikilib->now, $user, $allowprivate);
if ($prefs['feature_freetags'] == 'y') {
// Get Tags
$freetaglib = TikiLib::lib('freetag');
$post_info['freetags'] = $freetaglib->get_tags_on_object($postId, "blog post");
if ($blog_data['show_related'] == 'y' && ! empty($post_info['freetags'])) {
$post_info['related_posts'] = $bloglib->get_related_posts($postId, $blog_data['related_max']);
}
}
// We need to figure out in which section and theme we are before any call to tiki-modules.php
// which needs $tc_theme for deciding on the visible modules everywhere in the page
$cat_type = 'blog';
$cat_objid = $blogId;
include_once('tiki-section_options.php');
// Blog comment mail
if ($prefs['feature_user_watches'] == 'y') {
if ($user && isset($_REQUEST['watch_event'])) {
check_ticket('blog');
if ($_REQUEST['watch_action'] == 'add') {
$tikilib->add_user_watch(
$user,
$_REQUEST['watch_event'],
$_REQUEST['watch_object'],
'blog',
$blog_data['title'],
"tiki-view_blog_post.php?postId=" . $_REQUEST['postId']
);
} else {
$tikilib->remove_user_watch($user, $_REQUEST['watch_event'], $_REQUEST['watch_object'], 'blog');
}
}
$smarty->assign('user_watching_blog', 'n');
if ($user && $tikilib->user_watches($user, 'blog_comment_changes', $_REQUEST['postId'], 'blog')) {
$smarty->assign('user_watching_blog', 'y');
}
// Check, if the user is watching this blog by a category.
if ($prefs['feature_categories'] == 'y') {
$categlib = TikiLib::lib('categ');
$watching_categories_temp = $categlib->get_watching_categories($_REQUEST['postId'], 'blog', $user);
$smarty->assign('category_watched', 'n');
if (count($watching_categories_temp) > 0) {
$smarty->assign('category_watched', 'y');
$watching_categories = [];
foreach ($watching_categories_temp as $wct) {
$watching_categories[] = [
"categId" => $wct,
"name" => $categlib->get_category_name($wct)
];
}
$smarty->assign('watching_categories', $watching_categories);
}
}
}
if ($prefs['feature_categories'] == 'y') {
$cat_type = 'blog post';
$cat_objid = $postId;
require_once('categorize_list.php');
}
$smarty->assign('ownsblog', $ownsblog);
$smarty->assign('postId', $postId);
$smarty->assign('blog_data', $blog_data);
$smarty->assign('blogId', $blogId);
$smarty->assign('public', $blog_data['public']);
$smarty->assign('headtitle', $post_info['title'] . ' : ' . $blog_data['title']);
$smarty->assign('title', $post_info['title'] . ' : ' . $blog_data['title']);
if (! isset($_REQUEST['offset'])) {
$_REQUEST['offset'] = 0;
}
if (! isset($_REQUEST['sort_mode'])) {
$_REQUEST['sort_mode'] = 'created_desc';
}
if (! isset($_REQUEST['find'])) {
$_REQUEST['find'] = '';
}
$smarty->assign('offset', $_REQUEST["offset"]);
$smarty->assign('sort_mode', $_REQUEST["sort_mode"]);
$smarty->assign('find', $_REQUEST["find"]);
$offset = $_REQUEST["offset"];
$sort_mode = $_REQUEST["sort_mode"];
$find = $_REQUEST["find"];
if ($post_info['wysiwyg'] == "y") {
$parsed_data = TikiLib::lib('parser')->parse_data($post_info["data"], ['is_html' => true]);
} else {
$parsed_data = TikiLib::lib('parser')->parse_data($post_info["data"]);
}
if (! isset($_REQUEST['page'])) {
$_REQUEST['page'] = 1;
}
$pages = $bloglib->get_number_of_pages($parsed_data);
$post_info['parsed_data'] = $bloglib->get_page($parsed_data, $_REQUEST['page']);
$post_info['pages'] = $pages;
if ($pages > $_REQUEST['page']) {
$post_info['next_page'] = $_REQUEST['page'] + 1;
} else {
$post_info['next_page'] = $_REQUEST['page'];
}
if ($_REQUEST['page'] > 1) {
$post_info['prev_page'] = $_REQUEST['page'] - 1;
} else {
$post_info['prev_page'] = 1;
}
$post_info['first_page'] = 1;
$post_info['last_page'] = $pages;
$post_info['pagenum'] = $_REQUEST['page'];
$smarty->assign('post_info', $post_info);
if ($user && $prefs['feature_notepad'] == 'y' && $tiki_p_notepad == 'y' && isset($_REQUEST['savenotepad'])) {
check_ticket('view-blog-post');
$tikilib->replace_note($user, 0, $post_info['title'] ? $post_info['title'] : $tikilib->date_format("%d/%m/%Y [%H:%M]", $post_info['created']), $post_info['data']);
}
ask_ticket('view-blog-post');
// Display the template
$smarty->assign('mid', 'tiki-view_blog_post.tpl');
$smarty->display("tiki.tpl");