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.
 
 
 
 
 
 

250 lines
7.4 KiB

<?php
// (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 = 'forums';
require_once('tiki-setup.php');
$access->check_feature('feature_forums');
// forumId must be received
if (! isset($_REQUEST["forumId"])) {
$smarty->assign('msg', tra("No forum indicated"));
$smarty->display("error.tpl");
die;
}
$smarty->assign('forumId', $_REQUEST["forumId"]);
$commentslib = TikiLib::lib('comments');
// Approval from email
if (isset($_REQUEST["ahash"]) && isset($_REQUEST["qId"])) {
$msg_info = $commentslib->queue_get($_REQUEST['qId']);
$ahash = md5($_REQUEST['qId'] . $msg_info['title'] . $msg_info['data'] . $msg_info['user']);
if ($_REQUEST["ahash"] == $ahash) {
$commentslib->approve_queued($_REQUEST['qId']);
echo ("You have now approved the post by " . htmlspecialchars(TikiLib::lib('user')->clean_user($msg_info['user'])));
} else {
echo ("Error: Unable to approve queued post.");
}
die;
}
$forum_info = $commentslib->get_forum($_REQUEST["forumId"]);
//Check individual permissions for this forum
$smarty->assign('individual', 'n');
$tikilib->get_perm_object($_REQUEST["forumId"], 'forum');
// Now if the user is the moderator then give hime forum admin privs
if ($user) {
if ($forum_info["moderator"] == $user) {
$tiki_p_admin_forum = 'y';
$smarty->assign('tiki_p_admin_forum', 'y');
} elseif (in_array($forum_info['moderator_group'], $userlib->get_user_groups($user))) {
$tiki_p_admin_forum = 'y';
$smarty->assign('tiki_p_admin_forum', 'y');
}
}
$access->check_permission('tiki_p_admin_forum');
$smarty->assign_by_ref('forum_info', $forum_info);
include_once('tiki-section_options.php');
if ($prefs['feature_theme_control'] == 'y') {
$cat_type = 'forum';
$cat_objid = $_REQUEST["forumId"];
include('tiki-tc.php');
}
if (isset($_REQUEST['qId'])) {
$msg_info = $commentslib->queue_get($_REQUEST['qId']);
$smarty->assign_by_ref('msg_info', $msg_info);
}
$smarty->assign('form', 'y');
if (isset($_REQUEST['remove_attachment'])) {
check_ticket('forum-queue');
$commentslib->remove_thread_attachment($_REQUEST['remove_attachment']);
}
if (isset($_REQUEST['qId'])) {
if (isset($_REQUEST['save']) || isset($_REQUEST['saveapp'])) {
check_ticket('forum-queue');
$smarty->assign('form', 'n');
if (! isset($_REQUEST['summary'])) {
$_REQUEST['summary'] = $msg_info['summary'];
}
if (! isset($_REQUEST['topic_smiley'])) {
$_REQUEST['topic_smiley'] = $msg_info['topic_smiley'];
}
if (! isset($_REQUEST['type'])) {
$_REQUEST['type'] = $msg_info['type'];
}
if (! isset($_REQUEST['topic_title'])) {
$_REQUEST['topic_title'] = $msg_info['topic_title'];
}
if (! isset($_REQUEST['in_reply_to'])) {
$_REQUEST['in_reply_to'] = $msg_info['in_reply_to'];
}
if (! isset($_REQUEST['parentId'])) {
$_REQUEST['parentId'] = $msg_info['parentId'];
}
if ($_REQUEST['parentId'] > 0) {
$p_info = $commentslib->get_comment($_REQUEST['parentId']);
$_REQUEST['topic_title'] = $p_info['title'];
}
$commentslib->replace_queue(
$_REQUEST['qId'],
$_REQUEST['forumId'],
'forum:' . $_REQUEST['forumId'],
$_REQUEST['parentId'],
$msg_info['user'],
$_REQUEST['title'],
$_REQUEST['data'],
$_REQUEST['type'],
$_REQUEST['topic_smiley'],
$_REQUEST['summary'],
$_REQUEST['topic_title'],
$_REQUEST['in_reply_to']
);
if (isset($_REQUEST['saveapp'])) {
$commentslib->approve_queued($_REQUEST['qId']);
}
unset($_REQUEST['qId']);
}
if (isset($_REQUEST['remove'])) {
$access->check_authenticity();
$smarty->assign('form', 'n');
$commentslib->remove_queued($_REQUEST['qId']);
}
if (isset($_REQUEST['topicize'])) {
check_ticket('forum-queue');
$smarty->assign('form', 'n');
// Convert to a topic
if (! isset($_REQUEST['summary'])) {
$_REQUEST['summary'] = '';
}
if (! isset($_REQUEST['type'])) {
$_REQUEST['type'] = '';
}
if (! isset($_REQUEST['topic_smiley'])) {
$_REQUEST['topic_smiley'] = '';
}
if (! isset($_REQUEST['topic_title'])) {
$_REQUEST['topic_title'] = '';
}
if (! isset($_REQUEST['in_reply_to'])) {
$_REQUEST['in_reply_to'] = '';
}
$_REQUEST['parentId'] = 0;
$_REQUEST['type'] = 'n';
$commentslib->replace_queue(
$_REQUEST['qId'],
$_REQUEST['forumId'],
'forum:' . $_REQUEST['forumId'],
$_REQUEST['parentId'],
$msg_info['user'],
$_REQUEST['title'],
$_REQUEST['data'],
$_REQUEST['type'],
$_REQUEST['topic_smiley'],
$_REQUEST['summary'],
$_REQUEST['topic_title'],
$_REQUEST['in_reply_to']
);
unset($_REQUEST['qId']);
}
}
if (isset($_REQUEST['rej']) && isset($_REQUEST['msg'])) {
check_ticket('forum-queue');
foreach (array_keys($_REQUEST['msg']) as $msg) {
$commentslib->remove_queued($msg);
}
}
if (isset($_REQUEST['app']) && isset($_REQUEST['msg'])) {
check_ticket('forum-queue');
foreach (array_keys($_REQUEST['msg']) as $msg) {
$commentslib->approve_queued($msg);
}
}
// Quickjumpt to other forums
if ($tiki_p_admin_forum == 'y' || $prefs['feature_forum_quickjump'] == 'y') {
$all_forums = $commentslib->list_forums(0, -1, 'name_asc', '');
Perms::bulk([ 'type' => 'forum' ], 'object', $all_forums['data'], 'forumId');
$temp_max = count($all_forums["data"]);
for ($i = 0; $i < $temp_max; $i++) {
$forumperms = Perms::get([ 'type' => 'forum', 'object' => $all_forums['data'][$i]['forumId'] ]);
$all_forums["data"][$i]["can_read"] = $forumperms->forum_read ? 'y' : 'n';
}
$smarty->assign('all_forums', $all_forums['data']);
}
// Number of queued messages
if ($tiki_p_admin_forum == 'y') {
$smarty->assign('queued', $commentslib->get_num_queued('forum' . $_REQUEST['forumId']));
}
// Items will contain messages
if (! isset($_REQUEST["sort_mode"])) {
$sort_mode = 'timestamp_asc';
} else {
$sort_mode = $_REQUEST["sort_mode"];
}
if (! isset($_REQUEST["offset"])) {
$offset = 0;
} else {
$offset = $_REQUEST["offset"];
}
$smarty->assign_by_ref('offset', $offset);
if (isset($_REQUEST["find"])) {
$find = $_REQUEST["find"];
} else {
$find = '';
}
$smarty->assign('find', $find);
$smarty->assign_by_ref('sort_mode', $sort_mode);
$items = $commentslib->list_forum_queue('forum:' . $_REQUEST['forumId'], $offset, $maxRecords, $sort_mode, $find);
$smarty->assign('cant', $items['cant']);
$smarty->assign_by_ref('cant_pages', $items['cant']);
$smarty->assign_by_ref('items', $items["data"]);
$topics = $commentslib->get_forum_topics($_REQUEST['forumId']);
$smarty->assign_by_ref('topics', $topics);
ask_ticket('forum-queue');
// Display the template
$smarty->assign('mid', 'tiki-forum_queue.tpl');
$smarty->display("tiki.tpl");