Various fixes in forum

Add new access type: guest - all visitors, player will be now for logged players only
Fixed default forum board access for guests
This commit is contained in:
slawkens 2024-02-03 20:01:38 +01:00
parent bbe922a65d
commit 00cbce20b0
9 changed files with 127 additions and 85 deletions

View File

@ -13,90 +13,107 @@ use MyAAC\Forum;
defined('MYAAC') or exit('Direct access not allowed!'); defined('MYAAC') or exit('Direct access not allowed!');
$canEdit = Forum::isModerator(); if(!$canEdit) {
if($canEdit) { return;
$groups = new OTS_Groups_List(); }
if(!empty($action)) { $groupsList = new OTS_Groups_List();
if($action == 'delete_board' || $action == 'edit_board' || $action == 'hide_board' || $action == 'moveup_board' || $action == 'movedown_board') $groups = [
$id = $_REQUEST['id']; ['id' => 0, 'name' => 'Guest'],
];
if(isset($_REQUEST['access'])) { foreach ($groupsList as $group) {
$access = $_REQUEST['access']; $groups[] = [
} 'id' => $group->getId(),
'name' => $group->getName()
];
}
if(isset($_REQUEST['guild'])) { if(!empty($action)) {
$guild = $_REQUEST['guild']; if($action == 'delete_board' || $action == 'edit_board' || $action == 'hide_board' || $action == 'moveup_board' || $action == 'movedown_board')
} $id = $_REQUEST['id'];
if(isset($_REQUEST['name'])) { if(isset($_REQUEST['access'])) {
$name = $_REQUEST['name']; $access = $_REQUEST['access'];
}
if(isset($_REQUEST['description'])) {
$description = stripslashes($_REQUEST['description']);
}
$errors = [];
if($action == 'add_board') {
if(Forum::add_board($name, $description, $access, $guild, $errors)) {
$action = $name = $description = '';
}
}
else if($action == 'delete_board') {
Forum::delete_board($id, $errors);
$action = '';
}
else if($action == 'edit_board')
{
if(isset($id) && !isset($name)) {
$board = Forum::get_board($id);
$name = $board['name'];
$access = $board['access'];
$guild = $board['guild'];
$description = $board['description'];
}
else {
Forum::update_board($id, $name, $access, $guild, $description);
$action = $name = $description = '';
$access = $guild = 0;
}
}
else if($action == 'hide_board') {
Forum::toggleHide_board($id, $errors);
$action = '';
}
else if($action == 'moveup_board') {
Forum::move_board($id, -1, $errors);
$action = '';
}
else if($action == 'movedown_board') {
Forum::move_board($id, 1, $errors);
$action = '';
}
if(!empty($errors)) {
$twig->display('error_box.html.twig', array('errors' => $errors));
$action = '';
}
} }
if(empty($action) || $action == 'edit_board') { if(isset($_REQUEST['guild'])) {
$guilds = $db->query('SELECT `id`, `name` FROM `guilds`')->fetchAll(); $guild = $_REQUEST['guild'];
$twig->display('forum.add_board.html.twig', array( }
'link' => getLink('forum', ($action == 'edit_board' ? 'edit_board' : 'add_board')),
'action' => $action,
'id' => isset($id) ? $id : null,
'name' => isset($name) ? $name : null,
'description' => isset($description) ? $description : null,
'access' => isset($access) ? $access : 0,
'guild' => isset($guild) ? $guild : null,
'groups' => $groups,
'guilds' => $guilds
));
if($action == 'edit_board') if(isset($_REQUEST['name'])) {
$action = ''; $name = $_REQUEST['name'];
}
if(isset($_REQUEST['description'])) {
$description = stripslashes($_REQUEST['description']);
}
$errors = [];
if($action == 'add_board') {
if(Forum::add_board($name, $description, $access, $guild, $errors)) {
$action = $name = $description = '';
header('Location: ' . getLink('forum'));
}
}
else if($action == 'delete_board') {
Forum::delete_board($id, $errors);
header('Location: ' . getLink('forum'));
$action = '';
}
else if($action == 'edit_board')
{
if(isset($id) && !isset($name)) {
$board = Forum::get_board($id);
$name = $board['name'];
$access = $board['access'];
$guild = $board['guild'];
$description = $board['description'];
}
else {
Forum::update_board($id, $name, $access, $guild, $description);
header('Location: ' . getLink('forum'));
$action = $name = $description = '';
$access = $guild = 0;
}
}
else if($action == 'hide_board') {
Forum::toggleHide_board($id, $errors);
header('Location: ' . getLink('forum'));
$action = '';
}
else if($action == 'moveup_board') {
Forum::move_board($id, -1, $errors);
header('Location: ' . getLink('forum'));
$action = '';
}
else if($action == 'movedown_board') {
Forum::move_board($id, 1, $errors);
header('Location: ' . getLink('forum'));
$action = '';
}
if(!empty($errors)) {
$twig->display('error_box.html.twig', array('errors' => $errors));
$action = '';
} }
} }
if(empty($action) || $action == 'edit_board') {
$guilds = $db->query('SELECT `id`, `name` FROM `guilds`')->fetchAll();
$twig->display('forum.add_board.html.twig', array(
'link' => getLink('forum', ($action == 'edit_board' ? 'edit_board' : 'add_board')),
'action' => $action,
'id' => $id ?? null,
'name' => $name ?? null,
'description' => $description ?? null,
'access' => $access ?? 0,
'guild' => $guild ?? null,
'groups' => $groups,
'guilds' => $guilds
));
if($action == 'edit_board')
$action = '';
}

View File

@ -8,6 +8,9 @@
* @copyright 2021 MyAAC * @copyright 2021 MyAAC
* @link https://my-aac.org * @link https://my-aac.org
*/ */
use MyAAC\Forum;
defined('MYAAC') or die('Direct access not allowed!'); defined('MYAAC') or die('Direct access not allowed!');
$title = 'Forum'; $title = 'Forum';
@ -24,10 +27,7 @@ if(strtolower($forumSetting) != 'site') {
return false; return false;
} }
if(!$logged) { $canEdit = Forum::isModerator();
echo 'You are not logged in. <a href="?subtopic=accountmanagement&redirect=' . BASE_URL . urlencode('?subtopic=forum') . '">Log in</a> to post on the forum.<br /><br />';
return false;
}
$sections = array(); $sections = array();
foreach(getForumBoards() as $section) { foreach(getForumBoards() as $section) {

View File

@ -18,6 +18,11 @@ if ($ret === false) {
return; return;
} }
if(!$logged) {
echo 'You are not logged in. <a href="?subtopic=accountmanagement&redirect=' . BASE_URL . urlencode('?subtopic=forum') . '">Log in</a> to post on the forum.<br /><br />';
return;
}
if(Forum::canPost($account_logged)) if(Forum::canPost($account_logged))
{ {
$post_id = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : false; $post_id = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : false;

View File

@ -18,6 +18,11 @@ if ($ret === false) {
return; return;
} }
if(!$logged) {
echo 'You are not logged in. <a href="?subtopic=accountmanagement&redirect=' . BASE_URL . urlencode('?subtopic=forum') . '">Log in</a> to post on the forum.<br /><br />';
return;
}
if(!Forum::isModerator()) { if(!Forum::isModerator()) {
echo 'You are not logged in or you are not moderator.'; echo 'You are not logged in or you are not moderator.';
} }

View File

@ -24,7 +24,7 @@ if(!$logged) {
$extra_url = '&action=new_post&thread_id=' . $_GET['thread_id']; $extra_url = '&action=new_post&thread_id=' . $_GET['thread_id'];
} }
header('Location: ' . BASE_URL . '?subtopic=accountmanagement&redirect=' . BASE_URL . urlencode('?subtopic=forum' . $extra_url)); echo 'You are not logged in. <a href="?subtopic=accountmanagement&redirect=' . BASE_URL . urlencode('?subtopic=forum' . $extra_url) . '">Log in</a> to post on the forum.<br /><br />';
return; return;
} }

View File

@ -18,6 +18,16 @@ if ($ret === false) {
return; return;
} }
if(!$logged) {
$extra_url = '';
if(isset($_GET['section_id'])) {
$extra_url = '&action=new_thread&section_id=' . $_GET['section_id'];
}
echo 'You are not logged in. <a href="?subtopic=accountmanagement&redirect=' . BASE_URL . urlencode('?subtopic=forum' . $extra_url) . '">Log in</a> to post on the forum.<br /><br />';
return;
}
if(Forum::canPost($account_logged)) { if(Forum::canPost($account_logged)) {
$players_from_account = $db->query('SELECT `players`.`name`, `players`.`id` FROM `players` WHERE `players`.`account_id` = '.(int) $account_logged->getId())->fetchAll(); $players_from_account = $db->query('SELECT `players`.`name`, `players`.`id` FROM `players` WHERE `players`.`account_id` = '.(int) $account_logged->getId())->fetchAll();
$section_id = $_REQUEST['section_id'] ?? null; $section_id = $_REQUEST['section_id'] ?? null;

View File

@ -18,6 +18,11 @@ if ($ret === false) {
return; return;
} }
if(!$logged) {
echo 'You are not logged in. <a href="?subtopic=accountmanagement&redirect=' . BASE_URL . urlencode('?subtopic=forum') . '">Log in</a> to post on the forum.<br /><br />';
return;
}
if(Forum::isModerator()) { if(Forum::isModerator()) {
$id = (int) $_REQUEST['id']; $id = (int) $_REQUEST['id'];
$post = $db->query("SELECT `id`, `first_post`, `section` FROM `" . FORUM_TABLE_PREFIX . "forum` WHERE `id` = ".$id." LIMIT 1")->fetch(); $post = $db->query("SELECT `id`, `first_post`, `section` FROM `" . FORUM_TABLE_PREFIX . "forum` WHERE `id` = ".$id." LIMIT 1")->fetch();

View File

@ -22,7 +22,7 @@
<td> <td>
<select name="access"> <select name="access">
{% for id, group in groups %} {% for id, group in groups %}
<option value="{{ group.getId() }}"{% if access == group.getId() %} selected{% endif %}>{{ group.getName() }}</option> <option value="{{ group.id }}"{% if access == group.id %} selected{% endif %}>{{ group.name }}</option>
{% endfor %} {% endfor %}
</select> </select>
</td> </td>

View File

@ -24,7 +24,7 @@
</select> </select>
<input type="submit" value="Move Thread"> <input type="submit" value="Move Thread">
</form> </form>
<form action="{{ section_link }}" method="post"> <form action="{{ section_link }}">
{{ csrf() }} {{ csrf() }}
<input type="submit" value="Cancel"> <input type="submit" value="Cancel">
</form> </form>