diff options
| author | Murtaza Sultani <sultani@data-quest.de> | 2025-07-15 09:30:48 +0200 |
|---|---|---|
| committer | Murtaza Sultani <sultani@data-quest.de> | 2025-07-15 09:30:48 +0200 |
| commit | 3b8ca07f47502466bfa537db838b8599dc3ce861 (patch) | |
| tree | 9ff029908a1146d2fd5db67b6eaa7578266718b4 /app | |
| parent | e04fa1e9b79f784628d640d4c0355f5eba61da01 (diff) | |
Resolve "Autor darf keine neue Diskussion starten"
Closes #5724
Merge request studip/studip!4355
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/course/forum/ForumBaseController.php | 12 | ||||
| -rw-r--r-- | app/controllers/course/forum/discussions.php | 21 |
2 files changed, 13 insertions, 20 deletions
diff --git a/app/controllers/course/forum/ForumBaseController.php b/app/controllers/course/forum/ForumBaseController.php index 196bbcf..aaa4dd4 100644 --- a/app/controllers/course/forum/ForumBaseController.php +++ b/app/controllers/course/forum/ForumBaseController.php @@ -31,13 +31,11 @@ abstract class ForumBaseController extends StudipController { $actions = new ActionsWidget(); - if ($this->is_moderator) { - $actions->addLink( - _('Neue Diskussion starten'), - $this->url_for('course/forum/discussions/edit'), - Icon::create('add', Icon::ROLE_CLICKABLE, ['title' => _('Neue Diskussion starten')]) - )->asDialog('width=900;height=750'); - } + $actions->addLink( + _('Neue Diskussion starten'), + $this->url_for('course/forum/discussions/edit'), + Icon::create('add', Icon::ROLE_CLICKABLE, ['title' => _('Neue Diskussion starten')]) + )->asDialog('width=900;height=750'); if ($this->is_admin) { $actions->addLink( diff --git a/app/controllers/course/forum/discussions.php b/app/controllers/course/forum/discussions.php index c946401..7e7aca7 100644 --- a/app/controllers/course/forum/discussions.php +++ b/app/controllers/course/forum/discussions.php @@ -112,10 +112,6 @@ class Course_Forum_DiscussionsController extends Forum\ForumBaseController public function edit_action(ForumDiscussion $discussion = null) { - if (!$this->is_moderator) { - throw new AccessDeniedException(); - } - if ($discussion->isNew()) { PageLayout::setTitle(_('Neue Diskussion starten')); } else { @@ -155,21 +151,20 @@ class Course_Forum_DiscussionsController extends Forum\ForumBaseController public function save_action($discussion_id = null) { - if (!$this->is_moderator) { - throw new AccessDeniedException(); - } - CSRFProtection::verifyUnsafeRequest(); if ($discussion_id) { $discussion = ForumDiscussion::find($discussion_id); } else { $discussion = new ForumDiscussion(); + $discussion->user_id = User::findCurrent()->user_id; } $discussion->title = Request::get('title'); $discussion->closed_at = Request::bool('closed_at', false) ? time() : null; - $discussion->sticky = Request::bool('sticky', false); + if ($this->is_moderator) { + $discussion->sticky = Request::bool('sticky', false); + } if (Request::get('type_id')) { $discussion->type_id = Request::get('type_id'); @@ -227,16 +222,16 @@ class Course_Forum_DiscussionsController extends Forum\ForumBaseController public function delete_action($discussion_id) { - if (!$this->is_moderator) { - throw new AccessDeniedException(); - } - $discussion = ForumDiscussion::find($discussion_id); if (!$discussion) { throw new AccessDeniedException(); } + if (!$this->is_moderator && $discussion->user_id !== User::findCurrent()->user_id) { + throw new AccessDeniedException(); + } + TagRelation::deleteBySQL("range_id = ? AND range_type = 'forum'", [$discussion->discussion_id]); $topic_id = $discussion->topic_id; |
