diff options
| author | Murtaza Sultani <sultani@data-quest.de> | 2025-07-28 17:23:38 +0200 |
|---|---|---|
| committer | Murtaza Sultani <sultani@data-quest.de> | 2025-07-28 17:23:38 +0200 |
| commit | 28a9e7237135aa6a4f6beb69bda09a28d52d31a4 (patch) | |
| tree | c4f9e6dcb68808fda7cb0b6c9899fd3ef777638a | |
| parent | 1352f30ea1a3fd4401e0e7eba988c560c7fc9585 (diff) | |
Resolve "Forum verwendet falsche Rechteabfragen in der JSON-API"
Closes #5753
Merge request studip/studip!4386
| -rw-r--r-- | app/controllers/course/forum/BaseController.php (renamed from app/controllers/course/forum/ForumBaseController.php) | 2 | ||||
| -rw-r--r-- | app/controllers/course/forum/categories.php | 18 | ||||
| -rw-r--r-- | app/controllers/course/forum/configs.php | 4 | ||||
| -rw-r--r-- | app/controllers/course/forum/discussion_types.php | 10 | ||||
| -rw-r--r-- | app/controllers/course/forum/discussions.php | 50 | ||||
| -rw-r--r-- | app/controllers/course/forum/recent.php | 4 | ||||
| -rw-r--r-- | app/controllers/course/forum/search.php | 12 | ||||
| -rw-r--r-- | app/controllers/course/forum/subscriptions.php | 4 | ||||
| -rw-r--r-- | app/controllers/course/forum/topics.php | 26 | ||||
| -rw-r--r-- | app/views/course/forum/configs/edit.php | 1 | ||||
| -rw-r--r-- | app/views/course/forum/discussion_types/index.php | 7 | ||||
| -rw-r--r-- | lib/classes/Forum/DTO/Member.php (renamed from lib/classes/Forum/DTO/ForumMember.php) | 2 | ||||
| -rw-r--r-- | lib/classes/Forum/DTO/Tag.php (renamed from lib/classes/Forum/DTO/ForumTag.php) | 2 | ||||
| -rw-r--r-- | lib/classes/Forum/Service/DiscussionNotification.php | 16 | ||||
| -rw-r--r-- | lib/classes/Forum/Service/PostingNotification.php | 24 | ||||
| -rw-r--r-- | lib/classes/JsonApi/RouteMap.php | 53 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/Authority.php | 13 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/CategoryIndex.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumCategoryIndex.php) | 11 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/CategoryShow.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumCategoryShow.php) | 11 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/CategoryTopics.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumCategoryTopics.php) | 11 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/CategoryUpdateSort.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumCategoryUpdateSort.php) | 8 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/ConfigIndex.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumConfigIndex.php) | 5 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/DiscussionIndex.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumDiscussionIndex.php) | 21 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/DiscussionPostings.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumDiscussionPostings.php) | 25 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/DiscussionShow.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumDiscussionShow.php) | 17 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/DiscussionTypeIndex.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumDiscussionTypeIndex.php) | 8 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/DiscussionTypeShow.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumDiscussionTypeShow.php) | 8 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/ForumDiscussionTypeDiscussions.php | 32 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/PostingDelete.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumPostingDelete.php) | 6 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/PostingReactionDelete.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumPostingReactionDelete.php) | 6 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/PostingReactionShow.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumPostingReactionShow.php) | 10 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/PostingReactionStore.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumPostingReactionStore.php) | 15 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/PostingReactions.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumPostingReactions.php) | 13 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/PostingShow.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumPostingShow.php) | 19 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/PostingStore.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumPostingStore.php) | 35 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/PostingUpdate.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumPostingUpdate.php) | 18 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/SubscriptionDelete.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumSubscriptionDelete.php) | 6 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/SubscriptionIndex.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumSubscriptionIndex.php) | 15 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/SubscriptionShow.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumSubscriptionShow.php) | 12 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/SubscriptionStore.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumSubscriptionStore.php) | 12 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/TopicDiscussions.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumTopicDiscussions.php) | 21 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/TopicIndex.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumTopicIndex.php) | 11 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/TopicShow.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumTopicShow.php) | 9 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Forum/TopicUpdateSort.php (renamed from lib/classes/JsonApi/Routes/Forum/ForumTopicUpdateSort.php) | 8 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/Institutes/Authority.php | 5 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Routes/RangeAuthority.php | 41 | ||||
| -rw-r--r-- | lib/classes/JsonApi/SchemaMap.php | 18 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Schemas/Activity.php | 2 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Schemas/Forum/Category.php (renamed from lib/classes/JsonApi/Schemas/Forum/ForumCategory.php) | 2 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Schemas/Forum/Discussion.php (renamed from lib/classes/JsonApi/Schemas/Forum/ForumDiscussion.php) | 2 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Schemas/Forum/DiscussionType.php (renamed from lib/classes/JsonApi/Schemas/Forum/ForumDiscussionType.php) | 2 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Schemas/Forum/Member.php (renamed from lib/classes/JsonApi/Schemas/Forum/ForumMember.php) | 2 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Schemas/Forum/Posting.php (renamed from lib/classes/JsonApi/Schemas/Forum/ForumPosting.php) | 2 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Schemas/Forum/PostingReaction.php (renamed from lib/classes/JsonApi/Schemas/Forum/ForumPostingReaction.php) | 2 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Schemas/Forum/Subscription.php (renamed from lib/classes/JsonApi/Schemas/Forum/ForumSubscription.php) | 2 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Schemas/Forum/Tag.php (renamed from lib/classes/JsonApi/Schemas/Forum/ForumTag.php) | 2 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Schemas/Forum/Topic.php (renamed from lib/classes/JsonApi/Schemas/Forum/ForumTopic.php) | 10 | ||||
| -rw-r--r-- | lib/classes/Privacy.php | 2 | ||||
| -rw-r--r-- | lib/classes/Siteinfo.php | 2 | ||||
| -rw-r--r-- | lib/middleware/LegacyRedirectorMiddleware.php | 4 | ||||
| -rw-r--r-- | lib/models/CourseTopic.php | 4 | ||||
| -rw-r--r-- | lib/models/Forum/Category.php (renamed from lib/models/Forum/ForumCategory.php) | 10 | ||||
| -rw-r--r-- | lib/models/Forum/Discussion.php (renamed from lib/models/Forum/ForumDiscussion.php) | 48 | ||||
| -rw-r--r-- | lib/models/Forum/DiscussionType.php (renamed from lib/models/Forum/ForumDiscussionType.php) | 10 | ||||
| -rw-r--r-- | lib/models/Forum/Posting.php (renamed from lib/models/Forum/ForumPosting.php) | 26 | ||||
| -rw-r--r-- | lib/models/Forum/PostingReaction.php (renamed from lib/models/Forum/ForumPostingReaction.php) | 6 | ||||
| -rw-r--r-- | lib/models/Forum/PostingRead.php (renamed from lib/models/Forum/ForumPostingRead.php) | 12 | ||||
| -rw-r--r-- | lib/models/Forum/Subscription.php (renamed from lib/models/Forum/ForumSubscription.php) | 14 | ||||
| -rw-r--r-- | lib/models/Forum/Topic.php (renamed from lib/models/Forum/ForumTopic.php) | 22 | ||||
| -rw-r--r-- | lib/models/User.php | 6 | ||||
| -rw-r--r-- | lib/modules/CoreForum.php | 8 |
71 files changed, 406 insertions, 481 deletions
diff --git a/app/controllers/course/forum/ForumBaseController.php b/app/controllers/course/forum/BaseController.php index 246a8b2..6525250 100644 --- a/app/controllers/course/forum/ForumBaseController.php +++ b/app/controllers/course/forum/BaseController.php @@ -10,7 +10,7 @@ use SearchWidget; use Sidebar; use StudipController; -abstract class ForumBaseController extends StudipController +abstract class BaseController extends StudipController { protected $with_session = true; diff --git a/app/controllers/course/forum/categories.php b/app/controllers/course/forum/categories.php index 4f9f324..8ed7950 100644 --- a/app/controllers/course/forum/categories.php +++ b/app/controllers/course/forum/categories.php @@ -1,9 +1,9 @@ <?php -require_once 'ForumBaseController.php'; +require_once 'BaseController.php'; -use Forum\ForumCategory; +use Forum\Category; -class Course_Forum_CategoriesController extends Forum\ForumBaseController +class Course_Forum_CategoriesController extends Forum\BaseController { public function before_filter(&$action, &$args) { @@ -25,7 +25,7 @@ class Course_Forum_CategoriesController extends Forum\ForumBaseController public function show_action($category_id) { - $category = ForumCategory::find($category_id); + $category = Category::find($category_id); if (!$category) { throw new AccessDeniedException(); @@ -54,14 +54,14 @@ class Course_Forum_CategoriesController extends Forum\ForumBaseController if ($category_id) { PageLayout::setTitle(_('Kategorie bearbeiten')); - $category = ForumCategory::findOneBySQL("range_id = ? AND category_id = ?", [$this->range_id, $category_id]); + $category = Category::findOneBySQL("range_id = ? AND category_id = ?", [$this->range_id, $category_id]); if (!$category) { throw new AccessDeniedException(); } } else { PageLayout::setTitle(_('Neue Kategorie anlegen')); - $category = new ForumCategory(); + $category = new Category(); } $this->render_vue_app( @@ -81,12 +81,12 @@ class Course_Forum_CategoriesController extends Forum\ForumBaseController CSRFProtection::verifyUnsafeRequest(); if ($category_id) { - $category = ForumCategory::findOneBySQL("range_id = ? AND category_id = ?", [$this->range_id, $category_id]); + $category = Category::findOneBySQL("range_id = ? AND category_id = ?", [$this->range_id, $category_id]); if (!$category) { throw new AccessDeniedException(); } } else { - $category = new ForumCategory(); + $category = new Category(); $category->range_id = $this->range_id; } @@ -107,7 +107,7 @@ class Course_Forum_CategoriesController extends Forum\ForumBaseController throw new AccessDeniedException(); } - $category = ForumCategory::findOneBySQL("range_id = ? AND category_id = ?", [$this->range_id, $category_id]); + $category = Category::findOneBySQL("range_id = ? AND category_id = ?", [$this->range_id, $category_id]); if (!$category) { throw new AccessDeniedException(); diff --git a/app/controllers/course/forum/configs.php b/app/controllers/course/forum/configs.php index 70fdb2b..209799f 100644 --- a/app/controllers/course/forum/configs.php +++ b/app/controllers/course/forum/configs.php @@ -1,7 +1,7 @@ <?php -require_once 'ForumBaseController.php'; +require_once 'BaseController.php'; -class Course_Forum_ConfigsController extends Forum\ForumBaseController +class Course_Forum_ConfigsController extends Forum\BaseController { public function before_filter(&$action, &$args) { diff --git a/app/controllers/course/forum/discussion_types.php b/app/controllers/course/forum/discussion_types.php index da4ea27..68005a5 100644 --- a/app/controllers/course/forum/discussion_types.php +++ b/app/controllers/course/forum/discussion_types.php @@ -1,5 +1,5 @@ <?php -use Forum\ForumDiscussionType; +use Forum\DiscussionType; class Course_Forum_DiscussionTypesController extends AuthenticatedController { @@ -26,10 +26,10 @@ class Course_Forum_DiscussionTypesController extends AuthenticatedController public function index_action() { - $this->discussion_types = ForumDiscussionType::findBySQL("TRUE ORDER BY mkdate DESC"); + $this->discussion_types = DiscussionType::findBySQL("TRUE ORDER BY mkdate DESC"); } - public function edit_action(ForumDiscussionType $discussion_type = null) + public function edit_action(DiscussionType $discussion_type = null) { if ($discussion_type->isNew()) { PageLayout::setTitle(_('Neuen Diskussionstyp anlegen')); @@ -58,7 +58,7 @@ class Course_Forum_DiscussionTypesController extends AuthenticatedController ); } - public function save_action(ForumDiscussionType $discussion_type = null) + public function save_action(DiscussionType $discussion_type = null) { CSRFProtection::verifyUnsafeRequest(); @@ -72,7 +72,7 @@ class Course_Forum_DiscussionTypesController extends AuthenticatedController $this->relocate('course/forum/discussion_types/index'); } - public function delete_action(ForumDiscussionType $discussion_type) + public function delete_action(DiscussionType $discussion_type) { $discussion_type->delete(); diff --git a/app/controllers/course/forum/discussions.php b/app/controllers/course/forum/discussions.php index e86940a..2463d6d 100644 --- a/app/controllers/course/forum/discussions.php +++ b/app/controllers/course/forum/discussions.php @@ -1,17 +1,17 @@ <?php -require_once 'ForumBaseController.php'; +require_once 'BaseController.php'; use Studip\Markup; -use Forum\ForumDiscussion; -use Forum\ForumDiscussionType; -use Forum\DTO\ForumMember; -use Forum\ForumPosting; -use Forum\ForumPostingRead; -use Forum\ForumSubscription; -use Forum\DTO\ForumTag; -use Forum\ForumTopic; - -class Course_Forum_DiscussionsController extends Forum\ForumBaseController +use Forum\Discussion; +use Forum\DiscussionType; +use Forum\Posting; +use Forum\PostingRead; +use Forum\Subscription; +use Forum\DTO\Member as MemberDTO; +use Forum\DTO\Tag as TagDTO; +use Forum\Topic; + +class Course_Forum_DiscussionsController extends Forum\BaseController { public function before_filter(&$action, &$args) { @@ -51,7 +51,7 @@ class Course_Forum_DiscussionsController extends Forum\ForumBaseController public function show_action($discussion_id) { - $discussion = ForumDiscussion::find($discussion_id); + $discussion = Discussion::find($discussion_id); if (!$discussion) { throw new AccessDeniedException(); @@ -64,7 +64,7 @@ class Course_Forum_DiscussionsController extends Forum\ForumBaseController $discussion->view_count += 1; $discussion->store(); - $posting_read = ForumPostingRead::findOneBySQL( + $posting_read = PostingRead::findOneBySQL( "discussion_id = :discussion_id AND user_id = :user_id", [ 'discussion_id' => $discussion->getId(), @@ -72,7 +72,7 @@ class Course_Forum_DiscussionsController extends Forum\ForumBaseController ] ); - $user_subscription = ForumSubscription::findOneBySQL( + $user_subscription = Subscription::findOneBySQL( "subject = :subject AND subject_id = :subject_id AND user_id = :user_id", [ 'subject' => 'discussion', @@ -82,8 +82,8 @@ class Course_Forum_DiscussionsController extends Forum\ForumBaseController ); $category = $discussion->getCategory(); - $tags = array_map(fn(ForumTag $tag) => $tag->toRawArray(), $discussion->tags); - $members = array_map(fn(ForumMember $member) => $member->toRawArray(), $discussion->members); + $tags = array_map(fn(TagDTO $tag) => $tag->toRawArray(), $discussion->tags); + $members = array_map(fn(MemberDTO $member) => $member->toRawArray(), $discussion->members); $this->render_vue_app( Studip\VueApp::create('forum/discussions/Show') @@ -110,7 +110,7 @@ class Course_Forum_DiscussionsController extends Forum\ForumBaseController ); } - public function edit_action(ForumDiscussion $discussion = null) + public function edit_action(Discussion $discussion = null) { if ($discussion->isNew()) { PageLayout::setTitle(_('Neue Diskussion starten')); @@ -130,9 +130,9 @@ class Course_Forum_DiscussionsController extends Forum\ForumBaseController ['range_id' => $this->range_id] ); - $all_tags = array_map(fn(ForumTag $tag) => $tag->toRawArray(), ForumTag::getForumTags()); - $discussion_tags = array_map(fn(ForumTag $tag) => $tag->toRawArray(), $discussion->tags); - $discussion_types = array_map(fn(ForumDiscussionType $discussion_type) => $discussion_type->toRawArray(), ForumDiscussionType::getForumDiscussionType()); + $all_tags = array_map(fn(TagDTO $tag) => $tag->toRawArray(), TagDTO::getForumTags()); + $discussion_tags = array_map(fn(TagDTO $tag) => $tag->toRawArray(), $discussion->tags); + $discussion_types = array_map(fn(DiscussionType $discussion_type) => $discussion_type->toRawArray(), DiscussionType::getForumDiscussionType()); $this->render_vue_app( Studip\VueApp::create('forum/discussions/Edit') @@ -154,9 +154,9 @@ class Course_Forum_DiscussionsController extends Forum\ForumBaseController CSRFProtection::verifyUnsafeRequest(); if ($discussion_id) { - $discussion = ForumDiscussion::find($discussion_id); + $discussion = Discussion::find($discussion_id); } else { - $discussion = new ForumDiscussion(); + $discussion = new Discussion(); $discussion->user_id = User::findCurrent()->user_id; } @@ -173,7 +173,7 @@ class Course_Forum_DiscussionsController extends Forum\ForumBaseController $topic = json_decode(Request::get('topic'), true); if (empty($topic['topic_id'])) { - $newTopic = ForumTopic::create([ + $newTopic = Topic::create([ 'range_id' => $this->range_id, 'name' => $topic['name'] ]); @@ -185,7 +185,7 @@ class Course_Forum_DiscussionsController extends Forum\ForumBaseController $discussion->store(); if (!$discussion_id && Request::get('content')) { - ForumPosting::create([ + Posting::create([ 'range_id' => $this->range_id, 'discussion_id' => $discussion->discussion_id, 'content' => Markup::markAsHtml(Request::get('content')), @@ -222,7 +222,7 @@ class Course_Forum_DiscussionsController extends Forum\ForumBaseController public function delete_action($discussion_id) { - $discussion = ForumDiscussion::find($discussion_id); + $discussion = Discussion::find($discussion_id); if (!$discussion) { throw new AccessDeniedException(); diff --git a/app/controllers/course/forum/recent.php b/app/controllers/course/forum/recent.php index 2c3fda2..7a117cd 100644 --- a/app/controllers/course/forum/recent.php +++ b/app/controllers/course/forum/recent.php @@ -1,7 +1,7 @@ <?php -require_once 'ForumBaseController.php'; +require_once 'BaseController.php'; -class Course_Forum_RecentController extends Forum\ForumBaseController +class Course_Forum_RecentController extends Forum\BaseController { public function before_filter(&$action, &$args) { diff --git a/app/controllers/course/forum/search.php b/app/controllers/course/forum/search.php index b928803..f6fc223 100644 --- a/app/controllers/course/forum/search.php +++ b/app/controllers/course/forum/search.php @@ -1,10 +1,10 @@ <?php -require_once 'ForumBaseController.php'; +require_once 'BaseController.php'; -use Forum\ForumDiscussionType; -use Forum\DTO\ForumTag; +use Forum\DiscussionType; +use Forum\DTO\Tag as TagDTO; -class Course_Forum_SearchController extends Forum\ForumBaseController +class Course_Forum_SearchController extends Forum\BaseController { public function before_filter(&$action, &$args) { @@ -36,8 +36,8 @@ class Course_Forum_SearchController extends Forum\ForumBaseController ]; } - $tags = array_map(fn(ForumTag $tag) => $tag->toRawArray(), ForumTag::getForumTags()); - $discussion_types = array_map(fn(ForumDiscussionType $discussion_type) => $discussion_type->toRawArray(), ForumDiscussionType::getForumDiscussionType()); + $tags = array_map(fn(TagDTO $tag) => $tag->toRawArray(), TagDTO::getForumTags()); + $discussion_types = array_map(fn(DiscussionType $discussion_type) => $discussion_type->toRawArray(), DiscussionType::getForumDiscussionType()); $this->render_vue_app( Studip\VueApp::create('forum/search/Index') diff --git a/app/controllers/course/forum/subscriptions.php b/app/controllers/course/forum/subscriptions.php index 399c072..1f5582c 100644 --- a/app/controllers/course/forum/subscriptions.php +++ b/app/controllers/course/forum/subscriptions.php @@ -1,7 +1,7 @@ <?php -require_once 'ForumBaseController.php'; +require_once 'BaseController.php'; -class Course_Forum_SubscriptionsController extends Forum\ForumBaseController +class Course_Forum_SubscriptionsController extends Forum\BaseController { public function before_filter(&$action, &$args) { diff --git a/app/controllers/course/forum/topics.php b/app/controllers/course/forum/topics.php index a72da84..b6a1307 100644 --- a/app/controllers/course/forum/topics.php +++ b/app/controllers/course/forum/topics.php @@ -1,11 +1,11 @@ <?php -require_once 'ForumBaseController.php'; +require_once 'BaseController.php'; -use Forum\ForumCategory; -use Forum\ForumSubscription; -use Forum\ForumTopic; +use Forum\Category; +use Forum\Subscription; +use Forum\Topic; -class Course_Forum_TopicsController extends Forum\ForumBaseController +class Course_Forum_TopicsController extends Forum\BaseController { public function before_filter(&$action, &$args) { @@ -25,7 +25,7 @@ class Course_Forum_TopicsController extends Forum\ForumBaseController public function show_action($topic_id) { - $topic = ForumTopic::find($topic_id); + $topic = Topic::find($topic_id); if (!$topic) { throw new AccessDeniedException(); @@ -33,7 +33,7 @@ class Course_Forum_TopicsController extends Forum\ForumBaseController PageLayout::setTitle($topic->name); - $user_subscription = ForumSubscription::findOneBySQL( + $user_subscription = Subscription::findOneBySQL( "subject = :subject AND subject_id = :subject_id AND user_id = :user_id", [ 'subject' => 'topic', @@ -65,14 +65,14 @@ class Course_Forum_TopicsController extends Forum\ForumBaseController if ($topic_id) { PageLayout::setTitle(_('Thema bearbeiten')); - $topic = ForumTopic::getCourseTopic($this->range_id, $topic_id); + $topic = Topic::getCourseTopic($this->range_id, $topic_id); if (!$topic) { throw new AccessDeniedException(); } } else { PageLayout::setTitle(_('Neues Thema anlegen')); - $topic = new ForumTopic(); + $topic = new Topic(); $topic['category_id'] = Request::get('category_id'); } @@ -99,19 +99,19 @@ class Course_Forum_TopicsController extends Forum\ForumBaseController CSRFProtection::verifyUnsafeRequest(); if ($topic_id) { - $topic = ForumTopic::getCourseTopic($this->range_id, $topic_id); + $topic = Topic::getCourseTopic($this->range_id, $topic_id); if (!$topic) { throw new AccessDeniedException(); } } else { - $topic = new ForumTopic(); + $topic = new Topic(); $topic->range_id = $this->range_id; } $category = json_decode(Request::get('category'), true); if (empty($category['category_id']) && !empty($category['name'])) { - $newCategory = ForumCategory::create([ + $newCategory = Category::create([ 'range_id' => $this->range_id, 'color' => '#28497C', 'name' => $category['name'] @@ -142,7 +142,7 @@ class Course_Forum_TopicsController extends Forum\ForumBaseController throw new AccessDeniedException(); } - $topic = ForumTopic::getCourseTopic($this->range_id, $topic_id); + $topic = Topic::getCourseTopic($this->range_id, $topic_id); if (!$topic) { throw new AccessDeniedException(); diff --git a/app/views/course/forum/configs/edit.php b/app/views/course/forum/configs/edit.php index 59d7b1d..ceb23d8 100644 --- a/app/views/course/forum/configs/edit.php +++ b/app/views/course/forum/configs/edit.php @@ -4,6 +4,7 @@ * @var CourseConfig $config */ ?> + <form class="default" method="post" action="<?= $controller->url_for('course/forum/configs/save') ?>"> <?= CSRFProtection::tokenTag() ?> diff --git a/app/views/course/forum/discussion_types/index.php b/app/views/course/forum/discussion_types/index.php index a196342..c148d6b 100644 --- a/app/views/course/forum/discussion_types/index.php +++ b/app/views/course/forum/discussion_types/index.php @@ -1,11 +1,10 @@ <?php +use Forum\DiscussionType; + /** * @var Course_Forum_DiscussionTypesController $controller - * @var ForumDiscussionType[] $discussion_types + * @var DiscussionType[] $discussion_types */ - -use Forum\ForumDiscussionType; - ?> <div class="forum"> diff --git a/lib/classes/Forum/DTO/ForumMember.php b/lib/classes/Forum/DTO/Member.php index a6f4ea4..2e32b9a 100644 --- a/lib/classes/Forum/DTO/ForumMember.php +++ b/lib/classes/Forum/DTO/Member.php @@ -5,7 +5,7 @@ use Avatar; use Context; use User; -class ForumMember +class Member { public function __construct( public string $id, diff --git a/lib/classes/Forum/DTO/ForumTag.php b/lib/classes/Forum/DTO/Tag.php index ca0e045..93050ba 100644 --- a/lib/classes/Forum/DTO/ForumTag.php +++ b/lib/classes/Forum/DTO/Tag.php @@ -3,7 +3,7 @@ namespace Forum\DTO; use DBManager; -class ForumTag +class Tag { public function __construct( public string $id, diff --git a/lib/classes/Forum/Service/DiscussionNotification.php b/lib/classes/Forum/Service/DiscussionNotification.php index c3dcfe8..0daaffb 100644 --- a/lib/classes/Forum/Service/DiscussionNotification.php +++ b/lib/classes/Forum/Service/DiscussionNotification.php @@ -4,17 +4,17 @@ namespace Forum\Service; use Forum\Enum\SubscriptionNotificationType; use Icon; use PersonalNotifications; -use Forum\ForumDiscussion; -use Forum\ForumSubscription; -use Forum\ForumTopic; +use Forum\Discussion; +use Forum\Subscription; +use Forum\Topic; use URLHelper; class DiscussionNotification { - protected ForumTopic $topic; - protected ForumDiscussion $discussion; + protected Topic $topic; + protected Discussion $discussion; - public function __construct(ForumDiscussion $discussion) + public function __construct(Discussion $discussion) { $this->discussion = $discussion; $this->topic = $discussion->topic; @@ -31,7 +31,7 @@ class DiscussionNotification protected function getSubscribers(): array { - return ForumSubscription::findBySQL( + return Subscription::findBySQL( "subject = :subject AND subject_id = :subject_id AND notification_type = :notification_type", [ 'subject' => 'topic', @@ -41,7 +41,7 @@ class DiscussionNotification ); } - protected function sendNotifications(ForumSubscription $subscriber): void + protected function sendNotifications(Subscription $subscriber): void { $url = URLHelper::getURL('dispatch.php/course/forum/discussions/show/'.$this->discussion->discussion_id, ['cid' => $this->topic->range_id], true); diff --git a/lib/classes/Forum/Service/PostingNotification.php b/lib/classes/Forum/Service/PostingNotification.php index 5e46535..9f6d82f 100644 --- a/lib/classes/Forum/Service/PostingNotification.php +++ b/lib/classes/Forum/Service/PostingNotification.php @@ -4,19 +4,19 @@ namespace Forum\Service; use Forum\Enum\SubscriptionNotificationType; use Icon; use PersonalNotifications; -use Forum\ForumDiscussion; -use Forum\ForumPosting; -use Forum\ForumSubscription; -use Forum\ForumTopic; +use Forum\Discussion; +use Forum\Posting; +use Forum\Subscription; +use Forum\Topic; use URLHelper; class PostingNotification { - protected ForumPosting $posting; - protected ForumDiscussion $discussion; - protected ForumTopic $topic; + protected Posting $posting; + protected Discussion $discussion; + protected Topic $topic; - public function __construct(ForumPosting $posting) + public function __construct(Posting $posting) { $this->posting = $posting; $this->topic = $posting->discussion->topic; @@ -60,7 +60,7 @@ class PostingNotification $query[1]['user_id'] = $excludeUserId; } - $subscriptions = ForumSubscription::findBySQL(...$query); + $subscriptions = Subscription::findBySQL(...$query); /** * Allow only one subscription per user. @@ -89,7 +89,7 @@ class PostingNotification return array_values($filteredSubscriptions); } - protected function sendNotifications(ForumSubscription $subscriber): void + protected function sendNotifications(Subscription $subscriber): void { $url = URLHelper::getURL('dispatch.php/course/forum/discussions/show/'.$this->discussion->discussion_id, ['cid' => $this->topic->range_id], true)."#post_" . $this->posting->posting_id; @@ -107,11 +107,11 @@ class PostingNotification ); } - protected function notifyParentPostAuthor(): ?ForumSubscription + protected function notifyParentPostAuthor(): ?Subscription { $parent = $this->posting->posting; - $subscriber = ForumSubscription::findOneBySQL( + $subscriber = Subscription::findOneBySQL( "range_id = :range_id AND subject_id IN (:subject_ids) AND user_id = :user_id AND notification_type != :notification_type ORDER BY subject", [ 'range_id' => $parent->range_id, diff --git a/lib/classes/JsonApi/RouteMap.php b/lib/classes/JsonApi/RouteMap.php index 176c1ea..235f4b6 100644 --- a/lib/classes/JsonApi/RouteMap.php +++ b/lib/classes/JsonApi/RouteMap.php @@ -674,54 +674,53 @@ class RouteMap private function addAuthenticatedForumRoutes(RouteCollectorProxy $group): void { $group->group('/courses/{range_id}', function ($forum) { - $forum->get('/forum-configs', Routes\Forum\ForumConfigIndex::class); - $forum->get('/forum-categories', Routes\Forum\ForumCategoryIndex::class); - $forum->get('/forum-discussions', Routes\Forum\ForumDiscussionIndex::class); - $forum->get('/forum-topics', Routes\Forum\ForumTopicIndex::class); - $forum->get('/forum-subscriptions', Routes\Forum\ForumSubscriptionIndex::class); + $forum->get('/forum-configs', Routes\Forum\ConfigIndex::class); + $forum->get('/forum-categories', Routes\Forum\CategoryIndex::class); + $forum->get('/forum-discussions', Routes\Forum\DiscussionIndex::class); + $forum->get('/forum-topics', Routes\Forum\TopicIndex::class); + $forum->get('/forum-subscriptions', Routes\Forum\SubscriptionIndex::class); }); $group->group('/forum-subscriptions', function ($forum) { - $forum->post('', Routes\Forum\ForumSubscriptionStore::class); - $forum->get('/{subscription_id}', Routes\Forum\ForumSubscriptionShow::class); - $forum->delete('/{subscription_id}', Routes\Forum\ForumSubscriptionDelete::class); + $forum->post('', Routes\Forum\SubscriptionStore::class); + $forum->get('/{subscription_id}', Routes\Forum\SubscriptionShow::class); + $forum->delete('/{subscription_id}', Routes\Forum\SubscriptionDelete::class); }); $group->group('/forum-topics', function ($forum) { - $forum->get('/{topic_id}', Routes\Forum\ForumTopicShow::class); - $forum->get('/{topic_id}/discussions', Routes\Forum\ForumTopicDiscussions::class); - $forum->patch('/sort', Routes\Forum\ForumTopicUpdateSort::class); + $forum->get('/{topic_id}', Routes\Forum\TopicShow::class); + $forum->get('/{topic_id}/discussions', Routes\Forum\TopicDiscussions::class); + $forum->patch('/sort', Routes\Forum\TopicUpdateSort::class); }); $group->group('/forum-categories', function ($forum) { - $forum->get('/{category_id}', Routes\Forum\ForumCategoryShow::class); - $forum->get('/{category_id}/topics', Routes\Forum\ForumCategoryTopics::class); - $forum->patch('/sort', Routes\Forum\ForumCategoryUpdateSort::class); + $forum->get('/{category_id}', Routes\Forum\CategoryShow::class); + $forum->get('/{category_id}/topics', Routes\Forum\CategoryTopics::class); + $forum->patch('/sort', Routes\Forum\CategoryUpdateSort::class); }); $group->group('/forum-discussion-types', function ($forum) { - $forum->get('', Routes\Forum\ForumDiscussionTypeIndex::class); - $forum->get('/{type_id}', Routes\Forum\ForumDiscussionTypeShow::class); - $forum->get('/{type_id}/discussions', Routes\Forum\ForumDiscussionTypeDiscussions::class); + $forum->get('', Routes\Forum\DiscussionTypeIndex::class); + $forum->get('/{type_id}', Routes\Forum\DiscussionTypeShow::class); }); $group->group('/forum-discussions', function ($forum) { - $forum->get('/{discussion_id}', Routes\Forum\ForumDiscussionShow::class); - $forum->get('/{discussion_id}/postings', Routes\Forum\ForumDiscussionPostings::class); + $forum->get('/{discussion_id}', Routes\Forum\DiscussionShow::class); + $forum->get('/{discussion_id}/postings', Routes\Forum\DiscussionPostings::class); }); $group->group('/forum-postings', function ($forum) { - $forum->post('', Routes\Forum\ForumPostingStore::class); - $forum->get('/{posting_id}', Routes\Forum\ForumPostingShow::class); - $forum->get('/{posting_id}/reactions', Routes\Forum\ForumPostingReactions::class); - $forum->patch('/{posting_id}', Routes\Forum\ForumPostingUpdate::class); - $forum->delete('/{posting_id}', Routes\Forum\ForumPostingDelete::class); + $forum->post('', Routes\Forum\PostingStore::class); + $forum->get('/{posting_id}', Routes\Forum\PostingShow::class); + $forum->get('/{posting_id}/reactions', Routes\Forum\PostingReactions::class); + $forum->patch('/{posting_id}', Routes\Forum\PostingUpdate::class); + $forum->delete('/{posting_id}', Routes\Forum\PostingDelete::class); }); $group->group('/forum-posting-reactions', function ($forum) { - $forum->post('', Routes\Forum\ForumPostingReactionStore::class); - $forum->get('/{reaction_id}', Routes\Forum\ForumPostingReactionShow::class); - $forum->delete('/{reaction_id}', Routes\Forum\ForumPostingReactionDelete::class); + $forum->post('', Routes\Forum\PostingReactionStore::class); + $forum->get('/{reaction_id}', Routes\Forum\PostingReactionShow::class); + $forum->delete('/{reaction_id}', Routes\Forum\PostingReactionDelete::class); }); } diff --git a/lib/classes/JsonApi/Routes/Forum/Authority.php b/lib/classes/JsonApi/Routes/Forum/Authority.php new file mode 100644 index 0000000..95091a0 --- /dev/null +++ b/lib/classes/JsonApi/Routes/Forum/Authority.php @@ -0,0 +1,13 @@ +<?php +namespace JsonApi\Routes\Forum; + +use Range; +use User; + +class Authority +{ + public static function canShowForum(?User $user, Range $range): bool + { + return $range->isAccessibleToUser($user?->user_id); + } +} diff --git a/lib/classes/JsonApi/Routes/Forum/ForumCategoryIndex.php b/lib/classes/JsonApi/Routes/Forum/CategoryIndex.php index 9518736..caa3c7f 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumCategoryIndex.php +++ b/lib/classes/JsonApi/Routes/Forum/CategoryIndex.php @@ -3,17 +3,16 @@ namespace JsonApi\Routes\Forum; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\Errors\RecordNotFoundException; -use JsonApi\Routes\RangeAuthority; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\JsonApiController; -use Forum\ForumCategory; +use Forum\Category; -class ForumCategoryIndex extends JsonApiController +class CategoryIndex extends JsonApiController { protected $allowedPagingParameters = ['offset', 'limit']; protected $allowedIncludePaths = [ - \JsonApi\Schemas\Forum\ForumCategory::REL_TOPICS + \JsonApi\Schemas\Forum\Category::REL_TOPICS ]; public function __invoke(Request $request, Response $response, $args) @@ -24,11 +23,11 @@ class ForumCategoryIndex extends JsonApiController } $user = $this->getUser($request); - if (!RangeAuthority::canShowRange($user, $range)) { + if (!Authority::canShowForum($user, $range)) { throw new AuthorizationFailedException(); } - $categories = ForumCategory::getCourseCategories($range->id); + $categories = Category::getCourseCategories($range->id); return $this->getPaginatedContentResponse( array_slice($categories, ...$this->getOffsetAndLimit()), diff --git a/lib/classes/JsonApi/Routes/Forum/ForumCategoryShow.php b/lib/classes/JsonApi/Routes/Forum/CategoryShow.php index f0ee1e1..4014536 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumCategoryShow.php +++ b/lib/classes/JsonApi/Routes/Forum/CategoryShow.php @@ -1,23 +1,22 @@ <?php namespace JsonApi\Routes\Forum; -use Forum\ForumCategory; +use Forum\Category; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\Errors\RecordNotFoundException; -use JsonApi\Routes\RangeAuthority; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\JsonApiController; -class ForumCategoryShow extends JsonApiController +class CategoryShow extends JsonApiController { protected $allowedIncludePaths = [ - \JsonApi\Schemas\Forum\ForumCategory::REL_TOPICS + \JsonApi\Schemas\Forum\Category::REL_TOPICS ]; public function __invoke(Request $request, Response $response, $args) { - $category = ForumCategory::find($args['category_id']); + $category = Category::find($args['category_id']); if (!$category) { throw new RecordNotFoundException(); } @@ -28,7 +27,7 @@ class ForumCategoryShow extends JsonApiController } $user = $this->getUser($request); - if (!RangeAuthority::canShowRange($user, $range)) { + if (!Authority::canShowForum($user, $range)) { throw new AuthorizationFailedException(); } diff --git a/lib/classes/JsonApi/Routes/Forum/ForumCategoryTopics.php b/lib/classes/JsonApi/Routes/Forum/CategoryTopics.php index cfa7937..10d47b4 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumCategoryTopics.php +++ b/lib/classes/JsonApi/Routes/Forum/CategoryTopics.php @@ -2,23 +2,22 @@ namespace JsonApi\Routes\Forum; use JsonApi\Errors\RecordNotFoundException; -use JsonApi\Routes\RangeAuthority; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\JsonApiController; -use Forum\ForumCategory; +use Forum\Category; -class ForumCategoryTopics extends JsonApiController +class CategoryTopics extends JsonApiController { protected $allowedPagingParameters = ['offset', 'limit']; protected $allowedIncludePaths = [ - \JsonApi\Schemas\Forum\ForumCategory::REL_TOPICS + \JsonApi\Schemas\Forum\Category::REL_TOPICS ]; public function __invoke(Request $request, Response $response, $args) { - $category = ForumCategory::find($args['category_id']); + $category = Category::find($args['category_id']); if (!$category) { throw new RecordNotFoundException(); } @@ -29,7 +28,7 @@ class ForumCategoryTopics extends JsonApiController } $user = $this->getUser($request); - if (!RangeAuthority::canShowRange($user, $range)) { + if (!Authority::canShowForum($user, $range)) { throw new AuthorizationFailedException(); } diff --git a/lib/classes/JsonApi/Routes/Forum/ForumCategoryUpdateSort.php b/lib/classes/JsonApi/Routes/Forum/CategoryUpdateSort.php index 39fbb9d..b1eb6b2 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumCategoryUpdateSort.php +++ b/lib/classes/JsonApi/Routes/Forum/CategoryUpdateSort.php @@ -8,9 +8,9 @@ use Psr\Http\Message\ResponseInterface as Response; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\JsonApiController; use JsonApi\Routes\ValidationTrait; -use Forum\ForumCategory; +use Forum\Category; -class ForumCategoryUpdateSort extends JsonApiController +class CategoryUpdateSort extends JsonApiController { use ValidationTrait; @@ -30,8 +30,8 @@ class ForumCategoryUpdateSort extends JsonApiController $category_ids = self::arrayGet($json, 'data.attributes.category-ids'); - ForumCategory::findEachBySQL( - function (ForumCategory $category) use ($category_ids) { + Category::findEachBySQL( + function (Category $category) use ($category_ids) { $category->position = (int) array_search($category->category_id, $category_ids); $category->store(); }, diff --git a/lib/classes/JsonApi/Routes/Forum/ForumConfigIndex.php b/lib/classes/JsonApi/Routes/Forum/ConfigIndex.php index 507e2de..8383608 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumConfigIndex.php +++ b/lib/classes/JsonApi/Routes/Forum/ConfigIndex.php @@ -4,7 +4,6 @@ namespace JsonApi\Routes\Forum; use Config; use CoreForum; -use JsonApi\Routes\RangeAuthority; use UserConfig; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\Errors\RecordNotFoundException; @@ -12,7 +11,7 @@ use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\JsonApiController; -class ForumConfigIndex extends JsonApiController +class ConfigIndex extends JsonApiController { public function __invoke(Request $request, Response $response, $args) { @@ -22,7 +21,7 @@ class ForumConfigIndex extends JsonApiController } $user = $this->getUser($request); - if (!RangeAuthority::canShowRange($user, $range)) { + if (!Authority::canShowForum($user, $range)) { throw new AuthorizationFailedException(); } diff --git a/lib/classes/JsonApi/Routes/Forum/ForumDiscussionIndex.php b/lib/classes/JsonApi/Routes/Forum/DiscussionIndex.php index 83af8ac..91b5c06 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumDiscussionIndex.php +++ b/lib/classes/JsonApi/Routes/Forum/DiscussionIndex.php @@ -3,13 +3,12 @@ namespace JsonApi\Routes\Forum; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\Errors\RecordNotFoundException; -use JsonApi\Routes\RangeAuthority; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\JsonApiController; -use Forum\ForumDiscussion; +use Forum\Discussion; -class ForumDiscussionIndex extends JsonApiController +class DiscussionIndex extends JsonApiController { protected $allowedPagingParameters = ['offset', 'limit']; protected $allowedFilteringParameters = [ @@ -24,12 +23,12 @@ class ForumDiscussionIndex extends JsonApiController 'status' ]; protected $allowedIncludePaths = [ - \JsonApi\Schemas\Forum\ForumCategory::REL_TOPICS, - \JsonApi\Schemas\Forum\ForumDiscussion::REL_CATEGORY, - \JsonApi\Schemas\Forum\ForumDiscussion::REL_USER, - \JsonApi\Schemas\Forum\ForumDiscussion::REL_DISCUSSION_TYPE, - \JsonApi\Schemas\Forum\ForumDiscussion::REL_MEMBERS, - \JsonApi\Schemas\Forum\ForumDiscussion::REL_TAGS + \JsonApi\Schemas\Forum\Category::REL_TOPICS, + \JsonApi\Schemas\Forum\Discussion::REL_CATEGORY, + \JsonApi\Schemas\Forum\Discussion::REL_USER, + \JsonApi\Schemas\Forum\Discussion::REL_DISCUSSION_TYPE, + \JsonApi\Schemas\Forum\Discussion::REL_MEMBERS, + \JsonApi\Schemas\Forum\Discussion::REL_TAGS ]; @@ -41,7 +40,7 @@ class ForumDiscussionIndex extends JsonApiController } $user = $this->getUser($request); - if (!RangeAuthority::canShowRange($user, $range)) { + if (!Authority::canShowForum($user, $range)) { throw new AuthorizationFailedException(); } @@ -50,7 +49,7 @@ class ForumDiscussionIndex extends JsonApiController $_SESSION['forum'][$range->id]['search_filter'] = $filters; } - $discussions = ForumDiscussion::getCourseDiscussions($range->id, $filters); + $discussions = Discussion::getCourseDiscussions($range->id, $filters); return $this->getPaginatedContentResponse( array_slice($discussions, ...$this->getOffsetAndLimit()), diff --git a/lib/classes/JsonApi/Routes/Forum/ForumDiscussionPostings.php b/lib/classes/JsonApi/Routes/Forum/DiscussionPostings.php index 2e07c87..8b64021 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumDiscussionPostings.php +++ b/lib/classes/JsonApi/Routes/Forum/DiscussionPostings.php @@ -1,30 +1,29 @@ <?php namespace JsonApi\Routes\Forum; -use Forum\ForumDiscussion; +use Forum\Discussion; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\Errors\RecordNotFoundException; -use JsonApi\Routes\RangeAuthority; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\JsonApiController; -use Forum\ForumPostingRead; +use Forum\PostingRead; -class ForumDiscussionPostings extends JsonApiController +class DiscussionPostings extends JsonApiController { protected $allowedPagingParameters = ['offset', 'limit']; protected $allowedIncludePaths = [ - \JsonApi\Schemas\Forum\ForumPosting::REL_DISCUSSION, - \JsonApi\Schemas\Forum\ForumPosting::REL_POSTING, - \JsonApi\Schemas\Forum\ForumPosting::REL_OPENGRAPH_URLS, - \JsonApi\Schemas\Forum\ForumPosting::REL_AUTHOR, - \JsonApi\Schemas\Forum\ForumPosting::REL_REACTIONS, - \JsonApi\Schemas\Forum\ForumPosting::REL_REACTIONS_USER + \JsonApi\Schemas\Forum\Posting::REL_DISCUSSION, + \JsonApi\Schemas\Forum\Posting::REL_POSTING, + \JsonApi\Schemas\Forum\Posting::REL_OPENGRAPH_URLS, + \JsonApi\Schemas\Forum\Posting::REL_AUTHOR, + \JsonApi\Schemas\Forum\Posting::REL_REACTIONS, + \JsonApi\Schemas\Forum\Posting::REL_REACTIONS_USER ]; public function __invoke(Request $request, Response $response, $args) { - $discussion = ForumDiscussion::find($args['discussion_id']); + $discussion = Discussion::find($args['discussion_id']); if (!$discussion) { throw new RecordNotFoundException(); } @@ -35,13 +34,13 @@ class ForumDiscussionPostings extends JsonApiController } $user = $this->getUser($request); - if (!RangeAuthority::canShowRange($user, $range)) { + if (!Authority::canShowForum($user, $range)) { throw new AuthorizationFailedException(); } $postings = $discussion->postings ?? \SimpleORMapCollection::createFromArray([]); - ForumPostingRead::updateUserReadPoint($user->user_id, $discussion->discussion_id, count($postings)); + PostingRead::updateUserReadPoint($user->user_id, $discussion->discussion_id, count($postings)); return $this->getPaginatedContentResponse( $postings->limit(...$this->getOffsetAndLimit()), diff --git a/lib/classes/JsonApi/Routes/Forum/ForumDiscussionShow.php b/lib/classes/JsonApi/Routes/Forum/DiscussionShow.php index 93bc970..4dc2821 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumDiscussionShow.php +++ b/lib/classes/JsonApi/Routes/Forum/DiscussionShow.php @@ -1,26 +1,25 @@ <?php namespace JsonApi\Routes\Forum; -use Forum\ForumDiscussion; +use Forum\Discussion; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\Errors\RecordNotFoundException; -use JsonApi\Routes\RangeAuthority; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\JsonApiController; -class ForumDiscussionShow extends JsonApiController +class DiscussionShow extends JsonApiController { protected $allowedIncludePaths = [ - \JsonApi\Schemas\Forum\ForumDiscussion::REL_POSTINGS, - \JsonApi\Schemas\Forum\ForumCategory::REL_TOPICS, - \JsonApi\Schemas\Forum\ForumDiscussion::REL_CATEGORY, - \JsonApi\Schemas\Forum\ForumDiscussion::REL_DISCUSSION_TYPE + \JsonApi\Schemas\Forum\Discussion::REL_POSTINGS, + \JsonApi\Schemas\Forum\Category::REL_TOPICS, + \JsonApi\Schemas\Forum\Discussion::REL_CATEGORY, + \JsonApi\Schemas\Forum\Discussion::REL_DISCUSSION_TYPE ]; public function __invoke(Request $request, Response $response, $args) { - $discussion = ForumDiscussion::find($args['discussion_id']); + $discussion = Discussion::find($args['discussion_id']); if (!$discussion) { throw new RecordNotFoundException(); } @@ -31,7 +30,7 @@ class ForumDiscussionShow extends JsonApiController } $user = $this->getUser($request); - if (!RangeAuthority::canShowRange($user, $range)) { + if (!Authority::canShowForum($user, $range)) { throw new AuthorizationFailedException(); } diff --git a/lib/classes/JsonApi/Routes/Forum/ForumDiscussionTypeIndex.php b/lib/classes/JsonApi/Routes/Forum/DiscussionTypeIndex.php index 75f9750..cd32b90 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumDiscussionTypeIndex.php +++ b/lib/classes/JsonApi/Routes/Forum/DiscussionTypeIndex.php @@ -1,22 +1,22 @@ <?php namespace JsonApi\Routes\Forum; -use Forum\ForumDiscussionType; +use Forum\DiscussionType; use JsonApi\Errors\BadRequestException; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\JsonApiController; -class ForumDiscussionTypeIndex extends JsonApiController +class DiscussionTypeIndex extends JsonApiController { protected $allowedPagingParameters = ['offset', 'limit']; protected $allowedIncludePaths = [ - \JsonApi\Schemas\Forum\ForumDiscussionType::REL_DISCUSSIONS + \JsonApi\Schemas\Forum\DiscussionType::REL_DISCUSSIONS ]; public function __invoke(Request $request, Response $response, $args) { - $discussion_types = ForumDiscussionType::findBySQL('1'); + $discussion_types = DiscussionType::findBySQL('1'); return $this->getPaginatedContentResponse( array_slice($discussion_types, ...$this->getOffsetAndLimit()), diff --git a/lib/classes/JsonApi/Routes/Forum/ForumDiscussionTypeShow.php b/lib/classes/JsonApi/Routes/Forum/DiscussionTypeShow.php index a3e37d9..939835a 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumDiscussionTypeShow.php +++ b/lib/classes/JsonApi/Routes/Forum/DiscussionTypeShow.php @@ -1,21 +1,21 @@ <?php namespace JsonApi\Routes\Forum; -use Forum\ForumDiscussionType; +use Forum\DiscussionType; use JsonApi\Errors\RecordNotFoundException; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\JsonApiController; -class ForumDiscussionTypeShow extends JsonApiController +class DiscussionTypeShow extends JsonApiController { protected $allowedIncludePaths = [ - \JsonApi\Schemas\Forum\ForumDiscussionType::REL_DISCUSSIONS + \JsonApi\Schemas\Forum\DiscussionType::REL_DISCUSSIONS ]; public function __invoke(Request $request, Response $response, $args) { - $discussion_type = ForumDiscussionType::find($args['type_id']); + $discussion_type = DiscussionType::find($args['type_id']); if (!$discussion_type) { throw new RecordNotFoundException(); } diff --git a/lib/classes/JsonApi/Routes/Forum/ForumDiscussionTypeDiscussions.php b/lib/classes/JsonApi/Routes/Forum/ForumDiscussionTypeDiscussions.php deleted file mode 100644 index 6db27ab..0000000 --- a/lib/classes/JsonApi/Routes/Forum/ForumDiscussionTypeDiscussions.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php -namespace JsonApi\Routes\Forum; - -use Forum\ForumDiscussionType; -use JsonApi\Errors\RecordNotFoundException; -use Psr\Http\Message\ServerRequestInterface as Request; -use Psr\Http\Message\ResponseInterface as Response; -use JsonApi\JsonApiController; - -class ForumDiscussionTypeDiscussions extends JsonApiController -{ - protected $allowedPagingParameters = ['offset', 'limit']; - protected $allowedIncludePaths = [ - \JsonApi\Schemas\Forum\ForumDiscussionType::REL_DISCUSSIONS, - \JsonApi\Schemas\Forum\ForumDiscussion::REL_USER, - ]; - - public function __invoke(Request $request, Response $response, $args) - { - $discussionType = ForumDiscussionType::find($args['type_id']); - if (!$discussionType) { - throw new RecordNotFoundException(); - } - - $discussions = $discussionType->discussions; - - return $this->getPaginatedContentResponse( - array_slice($discussions, ...$this->getOffsetAndLimit()), - count($discussions) - ); - } -} diff --git a/lib/classes/JsonApi/Routes/Forum/ForumPostingDelete.php b/lib/classes/JsonApi/Routes/Forum/PostingDelete.php index 9929b14..e49755d 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumPostingDelete.php +++ b/lib/classes/JsonApi/Routes/Forum/PostingDelete.php @@ -7,15 +7,15 @@ use JsonApi\Routes\Courses\Authority as CourseAuthority; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\JsonApiController; -use Forum\ForumPosting; +use Forum\Posting; -class ForumPostingDelete extends JsonApiController +class PostingDelete extends JsonApiController { public function __invoke(Request $request, Response $response, $args) { $user = $this->getUser($request); - $posting = ForumPosting::findOneBySQL( + $posting = Posting::findOneBySQL( "posting_id = :posting_id AND user_id = :user_id", [ 'posting_id' => $args['posting_id'], diff --git a/lib/classes/JsonApi/Routes/Forum/ForumPostingReactionDelete.php b/lib/classes/JsonApi/Routes/Forum/PostingReactionDelete.php index 6e5ff35..7849815 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumPostingReactionDelete.php +++ b/lib/classes/JsonApi/Routes/Forum/PostingReactionDelete.php @@ -5,15 +5,15 @@ use JsonApi\Errors\RecordNotFoundException; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\JsonApiController; -use Forum\ForumPostingReaction; +use Forum\PostingReaction; -class ForumPostingReactionDelete extends JsonApiController +class PostingReactionDelete extends JsonApiController { public function __invoke(Request $request, Response $response, $args) { $user = $this->getUser($request); - $posting_reaction = ForumPostingReaction::findOneBySQL( + $posting_reaction = PostingReaction::findOneBySQL( "id = :reaction_id AND user_id = :user_id", [ 'reaction_id' => $args['reaction_id'], diff --git a/lib/classes/JsonApi/Routes/Forum/ForumPostingReactionShow.php b/lib/classes/JsonApi/Routes/Forum/PostingReactionShow.php index 0df6931..fb658b9 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumPostingReactionShow.php +++ b/lib/classes/JsonApi/Routes/Forum/PostingReactionShow.php @@ -1,22 +1,22 @@ <?php namespace JsonApi\Routes\Forum; -use Forum\ForumPostingReaction; +use Forum\PostingReaction; use JsonApi\Errors\RecordNotFoundException; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\JsonApiController; -class ForumPostingReactionShow extends JsonApiController +class PostingReactionShow extends JsonApiController { protected $allowedIncludePaths = [ - \JsonApi\Schemas\Forum\ForumPostingReaction::REL_POSTING, - \JsonApi\Schemas\Forum\ForumPostingReaction::REL_USER, + \JsonApi\Schemas\Forum\PostingReaction::REL_POSTING, + \JsonApi\Schemas\Forum\PostingReaction::REL_USER, ]; public function __invoke(Request $request, Response $response, $args) { - $posting_reaction = ForumPostingReaction::find($args['reaction_id']); + $posting_reaction = PostingReaction::find($args['reaction_id']); if (!$posting_reaction) { throw new RecordNotFoundException(); } diff --git a/lib/classes/JsonApi/Routes/Forum/ForumPostingReactionStore.php b/lib/classes/JsonApi/Routes/Forum/PostingReactionStore.php index a913e9b..992cf0d 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumPostingReactionStore.php +++ b/lib/classes/JsonApi/Routes/Forum/PostingReactionStore.php @@ -4,20 +4,19 @@ namespace JsonApi\Routes\Forum; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\Errors\BadRequestException; use JsonApi\Errors\RecordNotFoundException; -use JsonApi\Routes\RangeAuthority; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\JsonApiController; use JsonApi\Routes\ValidationTrait; -use Forum\ForumPosting; -use Forum\ForumPostingReaction; +use Forum\Posting; +use Forum\PostingReaction; -class ForumPostingReactionStore extends JsonApiController +class PostingReactionStore extends JsonApiController { use ValidationTrait; protected $allowedIncludePaths = [ - \JsonApi\Schemas\Forum\ForumPostingReaction::REL_USER + \JsonApi\Schemas\Forum\PostingReaction::REL_USER ]; public function __invoke(Request $request, Response $response, $args) @@ -25,7 +24,7 @@ class ForumPostingReactionStore extends JsonApiController $json = $this->validate($request); $user = $this->getUser($request); - $posting = ForumPosting::find(self::arrayGet($json, 'data.relationships.posting.data.id')); + $posting = Posting::find(self::arrayGet($json, 'data.relationships.posting.data.id')); if (!$posting) { throw new BadRequestException(); } @@ -35,11 +34,11 @@ class ForumPostingReactionStore extends JsonApiController throw new RecordNotFoundException(); } - if (!RangeAuthority::canShowRange($user, $range)) { + if (!Authority::canShowForum($user, $range)) { throw new AuthorizationFailedException(); } - $posting_reaction = ForumPostingReaction::create([ + $posting_reaction = PostingReaction::create([ 'posting_id' => $posting->posting_id, 'user_id' => $user->user_id, 'emoji' => self::arrayGet($json, 'data.attributes.emoji') diff --git a/lib/classes/JsonApi/Routes/Forum/ForumPostingReactions.php b/lib/classes/JsonApi/Routes/Forum/PostingReactions.php index 9c6a182..12caad4 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumPostingReactions.php +++ b/lib/classes/JsonApi/Routes/Forum/PostingReactions.php @@ -1,26 +1,25 @@ <?php namespace JsonApi\Routes\Forum; -use Forum\ForumPosting; +use Forum\Posting; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\Errors\RecordNotFoundException; -use JsonApi\Routes\RangeAuthority; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\JsonApiController; use SimpleORMapCollection; -class ForumPostingReactions extends JsonApiController +class PostingReactions extends JsonApiController { protected $allowedPagingParameters = ['offset', 'limit']; protected $allowedIncludePaths = [ - \JsonApi\Schemas\Forum\ForumPostingReaction::REL_POSTING, - \JsonApi\Schemas\Forum\ForumPostingReaction::REL_USER + \JsonApi\Schemas\Forum\PostingReaction::REL_POSTING, + \JsonApi\Schemas\Forum\PostingReaction::REL_USER ]; public function __invoke(Request $request, Response $response, $args) { - $posting = ForumPosting::find($args['posting_id']); + $posting = Posting::find($args['posting_id']); if (!$posting) { throw new RecordNotFoundException(); } @@ -31,7 +30,7 @@ class ForumPostingReactions extends JsonApiController } $user = $this->getUser($request); - if (!RangeAuthority::canShowRange($user, $range)) { + if (!Authority::canShowForum($user, $range)) { throw new AuthorizationFailedException(); } diff --git a/lib/classes/JsonApi/Routes/Forum/ForumPostingShow.php b/lib/classes/JsonApi/Routes/Forum/PostingShow.php index 4a810b2..c062169 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumPostingShow.php +++ b/lib/classes/JsonApi/Routes/Forum/PostingShow.php @@ -1,27 +1,26 @@ <?php namespace JsonApi\Routes\Forum; -use Forum\ForumPosting; +use Forum\Posting; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\Errors\RecordNotFoundException; -use JsonApi\Routes\RangeAuthority; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\JsonApiController; -class ForumPostingShow extends JsonApiController +class PostingShow extends JsonApiController { protected $allowedIncludePaths = [ - \JsonApi\Schemas\Forum\ForumPosting::REL_DISCUSSION, - \JsonApi\Schemas\Forum\ForumPosting::REL_POSTING, - \JsonApi\Schemas\Forum\ForumPosting::REL_OPENGRAPH_URLS, - \JsonApi\Schemas\Forum\ForumPosting::REL_REACTIONS, - \JsonApi\Schemas\Forum\ForumPosting::REL_REACTIONS_USER + \JsonApi\Schemas\Forum\Posting::REL_DISCUSSION, + \JsonApi\Schemas\Forum\Posting::REL_POSTING, + \JsonApi\Schemas\Forum\Posting::REL_OPENGRAPH_URLS, + \JsonApi\Schemas\Forum\Posting::REL_REACTIONS, + \JsonApi\Schemas\Forum\Posting::REL_REACTIONS_USER ]; public function __invoke(Request $request, Response $response, $args) { - $posting = ForumPosting::find($args['posting_id']); + $posting = Posting::find($args['posting_id']); if (!$posting) { throw new RecordNotFoundException(); } @@ -32,7 +31,7 @@ class ForumPostingShow extends JsonApiController } $user = $this->getUser($request); - if (!RangeAuthority::canShowRange($user, $range)) { + if (!Authority::canShowForum($user, $range)) { throw new AuthorizationFailedException(); } diff --git a/lib/classes/JsonApi/Routes/Forum/ForumPostingStore.php b/lib/classes/JsonApi/Routes/Forum/PostingStore.php index 70c5792..f7a667e 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumPostingStore.php +++ b/lib/classes/JsonApi/Routes/Forum/PostingStore.php @@ -2,7 +2,6 @@ namespace JsonApi\Routes\Forum; use JsonApi\Errors\RecordNotFoundException; -use JsonApi\Routes\RangeAuthority; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\Errors\AuthorizationFailedException; @@ -10,22 +9,22 @@ use JsonApi\JsonApiController; use JsonApi\Routes\ValidationTrait; use Forum\Enum\SubscriptionNotificationType; use Studip\Markup; -use Forum\ForumDiscussion; -use Forum\ForumPosting; -use Forum\ForumPostingRead; -use Forum\ForumSubscription; +use Forum\Discussion; +use Forum\Posting; +use Forum\PostingRead; +use Forum\Subscription; -class ForumPostingStore extends JsonApiController +class PostingStore extends JsonApiController { use ValidationTrait; protected $allowedIncludePaths = [ - \JsonApi\Schemas\Forum\ForumPosting::REL_DISCUSSION, - \JsonApi\Schemas\Forum\ForumPosting::REL_POSTING, - \JsonApi\Schemas\Forum\ForumPosting::REL_OPENGRAPH_URLS, - \JsonApi\Schemas\Forum\ForumPosting::REL_AUTHOR, - \JsonApi\Schemas\Forum\ForumPosting::REL_REACTIONS, - \JsonApi\Schemas\Forum\ForumPosting::REL_REACTIONS_USER + \JsonApi\Schemas\Forum\Posting::REL_DISCUSSION, + \JsonApi\Schemas\Forum\Posting::REL_POSTING, + \JsonApi\Schemas\Forum\Posting::REL_OPENGRAPH_URLS, + \JsonApi\Schemas\Forum\Posting::REL_AUTHOR, + \JsonApi\Schemas\Forum\Posting::REL_REACTIONS, + \JsonApi\Schemas\Forum\Posting::REL_REACTIONS_USER ]; public function __invoke(Request $request, Response $response, $args) @@ -33,7 +32,7 @@ class ForumPostingStore extends JsonApiController $json = $this->validate($request); $user = $this->getUser($request); - $discussion = ForumDiscussion::find(self::arrayGet($json, 'data.relationships.discussion.data.id')); + $discussion = Discussion::find(self::arrayGet($json, 'data.relationships.discussion.data.id')); $range = get_object_by_range_id($discussion->range_id); if (!$discussion || !$range) { @@ -41,7 +40,7 @@ class ForumPostingStore extends JsonApiController } if ( - !RangeAuthority::canShowRange($user, $range) || + !Authority::canShowForum($user, $range) || $discussion->closed_at ) { throw new AuthorizationFailedException(); @@ -49,7 +48,7 @@ class ForumPostingStore extends JsonApiController $parent_id = self::arrayGet($json, 'data.relationships.posting.data.id'); - $psoting = ForumPosting::create([ + $psoting = Posting::create([ 'range_id' => $discussion->range_id, 'parent_id' => $parent_id ?? null, 'discussion_id' => $discussion->discussion_id, @@ -58,7 +57,7 @@ class ForumPostingStore extends JsonApiController 'user_id' => $user->user_id ]); - $subscription = ForumSubscription::findOneBySQL( + $subscription = Subscription::findOneBySQL( "user_id = :user_id AND subject_id IN (:subject_ids)", [ 'user_id' => $user->user_id, @@ -67,7 +66,7 @@ class ForumPostingStore extends JsonApiController ); if (!$subscription) { - $subscription = new ForumSubscription(); + $subscription = new Subscription(); $subscription->user_id = $user->user_id; $subscription->range_id = $discussion->range_id; $subscription->subject_id = $discussion->discussion_id; @@ -76,7 +75,7 @@ class ForumPostingStore extends JsonApiController $subscription->store(); } - ForumPostingRead::updateUserReadPoint($user->user_id, $discussion->discussion_id); + PostingRead::updateUserReadPoint($user->user_id, $discussion->discussion_id); return $this->getCreatedResponse($psoting); } diff --git a/lib/classes/JsonApi/Routes/Forum/ForumPostingUpdate.php b/lib/classes/JsonApi/Routes/Forum/PostingUpdate.php index b8470fa..c720bb6 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumPostingUpdate.php +++ b/lib/classes/JsonApi/Routes/Forum/PostingUpdate.php @@ -8,19 +8,19 @@ use JsonApi\Errors\AuthorizationFailedException; use JsonApi\JsonApiController; use JsonApi\Routes\ValidationTrait; use Studip\Markup; -use Forum\ForumPosting; +use Forum\Posting; -class ForumPostingUpdate extends JsonApiController +class PostingUpdate extends JsonApiController { use ValidationTrait; protected $allowedIncludePaths = [ - \JsonApi\Schemas\Forum\ForumPosting::REL_DISCUSSION, - \JsonApi\Schemas\Forum\ForumPosting::REL_POSTING, - \JsonApi\Schemas\Forum\ForumPosting::REL_OPENGRAPH_URLS, - \JsonApi\Schemas\Forum\ForumPosting::REL_AUTHOR, - \JsonApi\Schemas\Forum\ForumPosting::REL_REACTIONS, - \JsonApi\Schemas\Forum\ForumPosting::REL_REACTIONS_USER + \JsonApi\Schemas\Forum\Posting::REL_DISCUSSION, + \JsonApi\Schemas\Forum\Posting::REL_POSTING, + \JsonApi\Schemas\Forum\Posting::REL_OPENGRAPH_URLS, + \JsonApi\Schemas\Forum\Posting::REL_AUTHOR, + \JsonApi\Schemas\Forum\Posting::REL_REACTIONS, + \JsonApi\Schemas\Forum\Posting::REL_REACTIONS_USER ]; public function __invoke(Request $request, Response $response, $args) @@ -28,7 +28,7 @@ class ForumPostingUpdate extends JsonApiController $json = $this->validate($request); $user = $this->getUser($request); - $posting = ForumPosting::findOneBySQL( + $posting = Posting::findOneBySQL( "posting_id = :posting_id AND user_id = :user_id", [ 'posting_id' => $args['posting_id'], diff --git a/lib/classes/JsonApi/Routes/Forum/ForumSubscriptionDelete.php b/lib/classes/JsonApi/Routes/Forum/SubscriptionDelete.php index fef6ac0..21ebe0b 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumSubscriptionDelete.php +++ b/lib/classes/JsonApi/Routes/Forum/SubscriptionDelete.php @@ -5,15 +5,15 @@ use JsonApi\Errors\RecordNotFoundException; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\JsonApiController; -use Forum\ForumSubscription; +use Forum\Subscription; -class ForumSubscriptionDelete extends JsonApiController +class SubscriptionDelete extends JsonApiController { public function __invoke(Request $request, Response $response, $args) { $user = $this->getUser($request); - $subscription = ForumSubscription::findOneBySQL( + $subscription = Subscription::findOneBySQL( "id = :subscription_id AND user_id = :user_id", [ 'subscription_id' => $args['subscription_id'], diff --git a/lib/classes/JsonApi/Routes/Forum/ForumSubscriptionIndex.php b/lib/classes/JsonApi/Routes/Forum/SubscriptionIndex.php index 8e0cee8..b653a84 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumSubscriptionIndex.php +++ b/lib/classes/JsonApi/Routes/Forum/SubscriptionIndex.php @@ -3,19 +3,18 @@ namespace JsonApi\Routes\Forum; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\Errors\RecordNotFoundException; -use JsonApi\Routes\RangeAuthority; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\JsonApiController; -use Forum\ForumSubscription; +use Forum\Subscription; -class ForumSubscriptionIndex extends JsonApiController +class SubscriptionIndex extends JsonApiController { protected $allowedPagingParameters = ['offset', 'limit']; protected $allowedIncludePaths = [ - \JsonApi\Schemas\Forum\ForumSubscription::REL_RANGE, - \JsonApi\Schemas\Forum\ForumSubscription::REL_SUBJECT, - \JsonApi\Schemas\Forum\ForumSubscription::REL_USER + \JsonApi\Schemas\Forum\Subscription::REL_RANGE, + \JsonApi\Schemas\Forum\Subscription::REL_SUBJECT, + \JsonApi\Schemas\Forum\Subscription::REL_USER ]; public function __invoke(Request $request, Response $response, $args) @@ -26,11 +25,11 @@ class ForumSubscriptionIndex extends JsonApiController } $user = $this->getUser($request); - if (!RangeAuthority::canShowRange($user, $range)) { + if (!Authority::canShowForum($user, $range)) { throw new AuthorizationFailedException(); } - $subscriptions = ForumSubscription::getUserSubscriptions($range->id, $user->user_id); + $subscriptions = Subscription::getUserSubscriptions($range->id, $user->user_id); return $this->getPaginatedContentResponse( array_slice($subscriptions, ...$this->getOffsetAndLimit()), diff --git a/lib/classes/JsonApi/Routes/Forum/ForumSubscriptionShow.php b/lib/classes/JsonApi/Routes/Forum/SubscriptionShow.php index dd0854d..ce98f9a 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumSubscriptionShow.php +++ b/lib/classes/JsonApi/Routes/Forum/SubscriptionShow.php @@ -5,21 +5,21 @@ use JsonApi\Errors\RecordNotFoundException; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\JsonApiController; -use Forum\ForumSubscription; +use Forum\Subscription; -class ForumSubscriptionShow extends JsonApiController +class SubscriptionShow extends JsonApiController { protected $allowedIncludePaths = [ - \JsonApi\Schemas\Forum\ForumSubscription::REL_RANGE, - \JsonApi\Schemas\Forum\ForumSubscription::REL_SUBJECT, - \JsonApi\Schemas\Forum\ForumSubscription::REL_USER, + \JsonApi\Schemas\Forum\Subscription::REL_RANGE, + \JsonApi\Schemas\Forum\Subscription::REL_SUBJECT, + \JsonApi\Schemas\Forum\Subscription::REL_USER, ]; public function __invoke(Request $request, Response $response, $args) { $user = $this->getUser($request); - $subscription = ForumSubscription::findOneBySQL( + $subscription = Subscription::findOneBySQL( "id = :id AND user_id = :user_id", [ 'id' => $args['subscription_id'], diff --git a/lib/classes/JsonApi/Routes/Forum/ForumSubscriptionStore.php b/lib/classes/JsonApi/Routes/Forum/SubscriptionStore.php index ea3f308..f7ba658 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumSubscriptionStore.php +++ b/lib/classes/JsonApi/Routes/Forum/SubscriptionStore.php @@ -7,10 +7,10 @@ use Psr\Http\Message\ResponseInterface as Response; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\JsonApiController; use JsonApi\Routes\ValidationTrait; -use Forum\ForumDiscussion; -use Forum\ForumSubscription; +use Forum\Discussion; +use Forum\Subscription; -class ForumSubscriptionStore extends JsonApiController +class SubscriptionStore extends JsonApiController { use ValidationTrait; @@ -21,7 +21,7 @@ class ForumSubscriptionStore extends JsonApiController $subjectType = $this->mapSubjectType(self::arrayGet($json, 'data.relationships.subject.data.type')); if ($subjectType === 'discussion') { - $discussion = ForumDiscussion::find(self::arrayGet($json, 'data.relationships.subject.data.id')); + $discussion = Discussion::find(self::arrayGet($json, 'data.relationships.subject.data.id')); if (!$discussion || $discussion->closed_at) { throw new AuthorizationFailedException(); @@ -29,10 +29,10 @@ class ForumSubscriptionStore extends JsonApiController } if (!self::arrayHas($json, 'data.id')) { - $subscription = new ForumSubscription(); + $subscription = new Subscription(); $subscription->user_id = $user->user_id; } else { - $subscription = ForumSubscription::findOneBySQL( + $subscription = Subscription::findOneBySQL( "id = :id AND user_id = :user_id", [ 'id' => self::arrayGet($json, 'data.id'), diff --git a/lib/classes/JsonApi/Routes/Forum/ForumTopicDiscussions.php b/lib/classes/JsonApi/Routes/Forum/TopicDiscussions.php index c482c0a..03fa55f 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumTopicDiscussions.php +++ b/lib/classes/JsonApi/Routes/Forum/TopicDiscussions.php @@ -1,29 +1,28 @@ <?php namespace JsonApi\Routes\Forum; -use Forum\ForumTopic; +use Forum\Topic; use JsonApi\Errors\RecordNotFoundException; -use JsonApi\Routes\RangeAuthority; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\JsonApiController; -class ForumTopicDiscussions extends JsonApiController +class TopicDiscussions extends JsonApiController { protected $allowedPagingParameters = ['offset', 'limit']; protected $allowedIncludePaths = [ - \JsonApi\Schemas\Forum\ForumCategory::REL_TOPICS, - \JsonApi\Schemas\Forum\ForumDiscussion::REL_CATEGORY, - \JsonApi\Schemas\Forum\ForumDiscussion::REL_USER, - \JsonApi\Schemas\Forum\ForumDiscussion::REL_DISCUSSION_TYPE, - \JsonApi\Schemas\Forum\ForumDiscussion::REL_MEMBERS, - \JsonApi\Schemas\Forum\ForumDiscussion::REL_TAGS + \JsonApi\Schemas\Forum\Category::REL_TOPICS, + \JsonApi\Schemas\Forum\Discussion::REL_CATEGORY, + \JsonApi\Schemas\Forum\Discussion::REL_USER, + \JsonApi\Schemas\Forum\Discussion::REL_DISCUSSION_TYPE, + \JsonApi\Schemas\Forum\Discussion::REL_MEMBERS, + \JsonApi\Schemas\Forum\Discussion::REL_TAGS ]; public function __invoke(Request $request, Response $response, $args) { - $topic = ForumTopic::find($args['topic_id']); + $topic = Topic::find($args['topic_id']); if (!$topic) { throw new RecordNotFoundException(); } @@ -34,7 +33,7 @@ class ForumTopicDiscussions extends JsonApiController } $user = $this->getUser($request); - if (!RangeAuthority::canShowRange($user, $range)) { + if (!Authority::canShowForum($user, $range)) { throw new AuthorizationFailedException(); } diff --git a/lib/classes/JsonApi/Routes/Forum/ForumTopicIndex.php b/lib/classes/JsonApi/Routes/Forum/TopicIndex.php index 038d0c9..b46ee72 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumTopicIndex.php +++ b/lib/classes/JsonApi/Routes/Forum/TopicIndex.php @@ -3,18 +3,17 @@ namespace JsonApi\Routes\Forum; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\Errors\RecordNotFoundException; -use JsonApi\Routes\RangeAuthority; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\JsonApiController; -use Forum\ForumTopic; +use Forum\Topic; -class ForumTopicIndex extends JsonApiController +class TopicIndex extends JsonApiController { protected $allowedPagingParameters = ['offset', 'limit']; protected $allowedFilteringParameters = ['course-id']; protected $allowedIncludePaths = [ - \JsonApi\Schemas\Forum\ForumTopic::REL_CATEGORY + \JsonApi\Schemas\Forum\Topic::REL_CATEGORY ]; public function __invoke(Request $request, Response $response, $args) @@ -25,11 +24,11 @@ class ForumTopicIndex extends JsonApiController } $user = $this->getUser($request); - if (!RangeAuthority::canShowRange($user, $range)) { + if (!Authority::canShowForum($user, $range)) { throw new AuthorizationFailedException(); } - $topics = ForumTopic::getCourseTopics($range->id); + $topics = Topic::getCourseTopics($range->id); return $this->getPaginatedContentResponse( array_slice($topics, ...$this->getOffsetAndLimit()), diff --git a/lib/classes/JsonApi/Routes/Forum/ForumTopicShow.php b/lib/classes/JsonApi/Routes/Forum/TopicShow.php index 32704b7..1598ffc 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumTopicShow.php +++ b/lib/classes/JsonApi/Routes/Forum/TopicShow.php @@ -1,21 +1,20 @@ <?php namespace JsonApi\Routes\Forum; -use JsonApi\Routes\RangeAuthority; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\Errors\RecordNotFoundException; use JsonApi\JsonApiController; -use Forum\ForumTopic; +use Forum\Topic; -class ForumTopicShow extends JsonApiController +class TopicShow extends JsonApiController { protected $allowedPagingParameters = ['offset', 'limit']; public function __invoke(Request $request, Response $response, $args) { - $topic = ForumTopic::find($args['topic_id']); + $topic = Topic::find($args['topic_id']); if (!$topic) { throw new RecordNotFoundException(); } @@ -26,7 +25,7 @@ class ForumTopicShow extends JsonApiController } $user = $this->getUser($request); - if (!RangeAuthority::canShowRange($user, $range)) { + if (!Authority::canShowForum($user, $range)) { throw new AuthorizationFailedException(); } diff --git a/lib/classes/JsonApi/Routes/Forum/ForumTopicUpdateSort.php b/lib/classes/JsonApi/Routes/Forum/TopicUpdateSort.php index 3e77b40..919d2a9 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumTopicUpdateSort.php +++ b/lib/classes/JsonApi/Routes/Forum/TopicUpdateSort.php @@ -8,9 +8,9 @@ use Psr\Http\Message\ResponseInterface as Response; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\JsonApiController; use JsonApi\Routes\ValidationTrait; -use Forum\ForumTopic; +use Forum\Topic; -class ForumTopicUpdateSort extends JsonApiController +class TopicUpdateSort extends JsonApiController { use ValidationTrait; @@ -30,8 +30,8 @@ class ForumTopicUpdateSort extends JsonApiController $topic_ids = self::arrayGet($json, 'data.attributes.topic-ids'); - ForumTopic::findEachBySQL( - function (ForumTopic $topic) use ($topic_ids) { + Topic::findEachBySQL( + function (Topic $topic) use ($topic_ids) { $topic->position = (int) array_search($topic->topic_id, $topic_ids); $topic->store(); }, diff --git a/lib/classes/JsonApi/Routes/Institutes/Authority.php b/lib/classes/JsonApi/Routes/Institutes/Authority.php index 2bd68a5..c6ee43b 100644 --- a/lib/classes/JsonApi/Routes/Institutes/Authority.php +++ b/lib/classes/JsonApi/Routes/Institutes/Authority.php @@ -7,11 +7,6 @@ use User; class Authority { - public static function canShowInstitute(User $user, Institute $institute): bool - { - return $institute->isAccessibleToUser($user->id); - } - /** * @SuppressWarnings(PHPMD.Superglobals) */ diff --git a/lib/classes/JsonApi/Routes/RangeAuthority.php b/lib/classes/JsonApi/Routes/RangeAuthority.php deleted file mode 100644 index 447ae60..0000000 --- a/lib/classes/JsonApi/Routes/RangeAuthority.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php - -namespace JsonApi\Routes; - -use Course; -use Institute; -use Range; -use User; -use JsonApi\Routes\Courses\Authority as CourseAuthority; -use JsonApi\Routes\Institutes\Authority as InstituteAuthority; - -class RangeAuthority -{ - const SCOPE_BASIC = 'basic'; - - public static function canShowRange(User $user, Range $range, $scope = self::SCOPE_BASIC): bool - { - if ($range instanceof Course) { - return CourseAuthority::canShowCourse($user, $range, $scope); - } - - if ($range instanceof Institute) { - return InstituteAuthority::canShowInstitute($user, $range); - } - - return false; - } - - public static function canEditRange(User $user, Range $range): bool - { - if ($range instanceof Course) { - return CourseAuthority::canEditCourse($user, $range); - } - - if ($range instanceof Institute) { - return InstituteAuthority::canEditInstitute($user, $range); - } - - return false; - } -} diff --git a/lib/classes/JsonApi/SchemaMap.php b/lib/classes/JsonApi/SchemaMap.php index e460150..d45c6a7 100644 --- a/lib/classes/JsonApi/SchemaMap.php +++ b/lib/classes/JsonApi/SchemaMap.php @@ -39,15 +39,15 @@ class SchemaMap \Degree::class => Schemas\Degree::class, \FeedbackElement::class => Schemas\FeedbackElement::class, \FeedbackEntry::class => Schemas\FeedbackEntry::class, - \Forum\ForumCategory::class => \JsonApi\Schemas\Forum\ForumCategory::class, - \Forum\ForumTopic::class => \JsonApi\Schemas\Forum\ForumTopic::class, - \Forum\ForumDiscussion::class => \JsonApi\Schemas\Forum\ForumDiscussion::class, - \Forum\ForumDiscussionType::class => \JsonApi\Schemas\Forum\ForumDiscussionType::class, - \Forum\ForumPosting::class => \JsonApi\Schemas\Forum\ForumPosting::class, - \Forum\ForumPostingReaction::class => \JsonApi\Schemas\Forum\ForumPostingReaction::class, - \Forum\ForumSubscription::class => \JsonApi\Schemas\Forum\ForumSubscription::class, - \Forum\DTO\ForumMember::class => \JsonApi\Schemas\Forum\ForumMember::class, - \Forum\DTO\ForumTag::class => \JsonApi\Schemas\Forum\ForumTag::class, + \Forum\Category::class => \JsonApi\Schemas\Forum\Category::class, + \Forum\Topic::class => \JsonApi\Schemas\Forum\Topic::class, + \Forum\Discussion::class => \JsonApi\Schemas\Forum\Discussion::class, + \Forum\DiscussionType::class => \JsonApi\Schemas\Forum\DiscussionType::class, + \Forum\Posting::class => \JsonApi\Schemas\Forum\Posting::class, + \Forum\PostingReaction::class => \JsonApi\Schemas\Forum\PostingReaction::class, + \Forum\Subscription::class => \JsonApi\Schemas\Forum\Subscription::class, + \Forum\DTO\Member::class => \JsonApi\Schemas\Forum\Member::class, + \Forum\DTO\Tag::class => \JsonApi\Schemas\Forum\Tag::class, \Institute::class => Schemas\Institute::class, \InstituteMember::class => Schemas\InstituteMember::class, \LtiTool::class => Schemas\LtiTool::class, diff --git a/lib/classes/JsonApi/Schemas/Activity.php b/lib/classes/JsonApi/Schemas/Activity.php index 3839793..6607a4d 100644 --- a/lib/classes/JsonApi/Schemas/Activity.php +++ b/lib/classes/JsonApi/Schemas/Activity.php @@ -89,7 +89,7 @@ class Activity extends SchemaProvider { $mapping = [ 'documents' => \FileRef::class, - 'forum' => \Forum\ForumPosting::class, + 'forum' => \Forum\Posting::class, 'message' => \Message::class, 'news' => \StudipNews::class, 'participants' => \Course::class, diff --git a/lib/classes/JsonApi/Schemas/Forum/ForumCategory.php b/lib/classes/JsonApi/Schemas/Forum/Category.php index b75e82b..de5aa3e 100644 --- a/lib/classes/JsonApi/Schemas/Forum/ForumCategory.php +++ b/lib/classes/JsonApi/Schemas/Forum/Category.php @@ -5,7 +5,7 @@ use JsonApi\Schemas\SchemaProvider; use Neomerx\JsonApi\Contracts\Schema\ContextInterface; use Neomerx\JsonApi\Schema\Link; -class ForumCategory extends SchemaProvider +class Category extends SchemaProvider { const TYPE = 'forum-categories'; const REL_TOPICS = 'topics'; diff --git a/lib/classes/JsonApi/Schemas/Forum/ForumDiscussion.php b/lib/classes/JsonApi/Schemas/Forum/Discussion.php index 6c5309e..abac14e 100644 --- a/lib/classes/JsonApi/Schemas/Forum/ForumDiscussion.php +++ b/lib/classes/JsonApi/Schemas/Forum/Discussion.php @@ -6,7 +6,7 @@ use JsonApi\Schemas\SchemaProvider; use Neomerx\JsonApi\Contracts\Schema\ContextInterface; use Neomerx\JsonApi\Schema\Link; -class ForumDiscussion extends SchemaProvider +class Discussion extends SchemaProvider { const TYPE = 'forum-discussions'; const REL_POSTINGS = 'postings'; diff --git a/lib/classes/JsonApi/Schemas/Forum/ForumDiscussionType.php b/lib/classes/JsonApi/Schemas/Forum/DiscussionType.php index 7bdf6bb..07ea34d 100644 --- a/lib/classes/JsonApi/Schemas/Forum/ForumDiscussionType.php +++ b/lib/classes/JsonApi/Schemas/Forum/DiscussionType.php @@ -5,7 +5,7 @@ use JsonApi\Schemas\SchemaProvider; use Neomerx\JsonApi\Contracts\Schema\ContextInterface; use Neomerx\JsonApi\Schema\Link; -class ForumDiscussionType extends SchemaProvider +class DiscussionType extends SchemaProvider { const TYPE = 'forum-discussion-types'; diff --git a/lib/classes/JsonApi/Schemas/Forum/ForumMember.php b/lib/classes/JsonApi/Schemas/Forum/Member.php index 71a0226..6798c4e 100644 --- a/lib/classes/JsonApi/Schemas/Forum/ForumMember.php +++ b/lib/classes/JsonApi/Schemas/Forum/Member.php @@ -4,7 +4,7 @@ namespace JsonApi\Schemas\Forum; use JsonApi\Schemas\SchemaProvider; use Neomerx\JsonApi\Contracts\Schema\ContextInterface; -class ForumMember extends SchemaProvider +class Member extends SchemaProvider { const TYPE = 'forum-members'; diff --git a/lib/classes/JsonApi/Schemas/Forum/ForumPosting.php b/lib/classes/JsonApi/Schemas/Forum/Posting.php index a03e75d..426c876 100644 --- a/lib/classes/JsonApi/Schemas/Forum/ForumPosting.php +++ b/lib/classes/JsonApi/Schemas/Forum/Posting.php @@ -6,7 +6,7 @@ use JsonApi\Schemas\SchemaProvider; use Neomerx\JsonApi\Contracts\Schema\ContextInterface; use Neomerx\JsonApi\Schema\Link; -class ForumPosting extends SchemaProvider +class Posting extends SchemaProvider { const TYPE = 'forum-postings'; const REL_AUTHOR = 'author'; diff --git a/lib/classes/JsonApi/Schemas/Forum/ForumPostingReaction.php b/lib/classes/JsonApi/Schemas/Forum/PostingReaction.php index 1b7bfa9..9441b63 100644 --- a/lib/classes/JsonApi/Schemas/Forum/ForumPostingReaction.php +++ b/lib/classes/JsonApi/Schemas/Forum/PostingReaction.php @@ -6,7 +6,7 @@ use JsonApi\Schemas\SchemaProvider; use Neomerx\JsonApi\Contracts\Schema\ContextInterface; use Neomerx\JsonApi\Schema\Link; -class ForumPostingReaction extends SchemaProvider +class PostingReaction extends SchemaProvider { const TYPE = 'forum-posting-reactions'; const REL_POSTING = 'posting'; diff --git a/lib/classes/JsonApi/Schemas/Forum/ForumSubscription.php b/lib/classes/JsonApi/Schemas/Forum/Subscription.php index 6cc82e0..4e5484e 100644 --- a/lib/classes/JsonApi/Schemas/Forum/ForumSubscription.php +++ b/lib/classes/JsonApi/Schemas/Forum/Subscription.php @@ -6,7 +6,7 @@ use JsonApi\Schemas\SchemaProvider; use Neomerx\JsonApi\Contracts\Schema\ContextInterface; use Neomerx\JsonApi\Schema\Link; -class ForumSubscription extends SchemaProvider +class Subscription extends SchemaProvider { const TYPE = 'forum-subscriptions'; const REL_USER = 'user'; diff --git a/lib/classes/JsonApi/Schemas/Forum/ForumTag.php b/lib/classes/JsonApi/Schemas/Forum/Tag.php index 00bf2e9..1c2e72e 100644 --- a/lib/classes/JsonApi/Schemas/Forum/ForumTag.php +++ b/lib/classes/JsonApi/Schemas/Forum/Tag.php @@ -4,7 +4,7 @@ namespace JsonApi\Schemas\Forum; use JsonApi\Schemas\SchemaProvider; use Neomerx\JsonApi\Contracts\Schema\ContextInterface; -class ForumTag extends SchemaProvider +class Tag extends SchemaProvider { const TYPE = 'forum-tags'; diff --git a/lib/classes/JsonApi/Schemas/Forum/ForumTopic.php b/lib/classes/JsonApi/Schemas/Forum/Topic.php index 88461a1..624c6e7 100644 --- a/lib/classes/JsonApi/Schemas/Forum/ForumTopic.php +++ b/lib/classes/JsonApi/Schemas/Forum/Topic.php @@ -7,7 +7,7 @@ use JsonApi\Schemas\Studip; use Neomerx\JsonApi\Contracts\Schema\ContextInterface; use Neomerx\JsonApi\Schema\Link; -class ForumTopic extends SchemaProvider +class Topic extends SchemaProvider { const TYPE = 'forum-topics'; const REL_CATEGORY = 'category'; @@ -21,7 +21,7 @@ class ForumTopic extends SchemaProvider /** * @inheritdoc * - * @param \Forum\ForumTopic $topic + * @param \Forum\Topic $topic */ public function getAttributes($topic, ContextInterface $context): iterable { @@ -37,7 +37,7 @@ class ForumTopic extends SchemaProvider /** * @inheritdoc * - * @param \Forum\ForumTopic $topic + * @param \Forum\Topic $topic */ public function hasResourceMeta($topic): bool { @@ -47,7 +47,7 @@ class ForumTopic extends SchemaProvider /** * @inheritdoc * - * @param \Forum\ForumTopic $topic + * @param \Forum\Topic $topic */ public function getResourceMeta($topic) { @@ -65,7 +65,7 @@ class ForumTopic extends SchemaProvider /** * @SuppressWarnings(PHPMD.UnusedFormalParameter) * - * @param \Forum\ForumTopic $topic + * @param \Forum\Topic $topic */ public function getRelationships($topic, ContextInterface $context): iterable { diff --git a/lib/classes/Privacy.php b/lib/classes/Privacy.php index d28ecf4..a0c1690 100644 --- a/lib/classes/Privacy.php +++ b/lib/classes/Privacy.php @@ -42,7 +42,7 @@ class Privacy ], 'content' => [ FileRef::class, - \Forum\ForumPosting::class, + \Forum\Posting::class, WikiPage::class, Courseware\Unit::class, Courseware\StructuralElement::class, diff --git a/lib/classes/Siteinfo.php b/lib/classes/Siteinfo.php index 8ca1c08..a11e8cb 100644 --- a/lib/classes/Siteinfo.php +++ b/lib/classes/Siteinfo.php @@ -557,7 +557,7 @@ class SiteinfoMarkupEngine { if ($key === 'posting') { $template->title = _('Forenbeiträge'); $template->detail = _('Anzahl Beiträge aller verwendeten Foren'); - $template->count = \Forum\ForumPosting::countBySql(); + $template->count = \Forum\Posting::countBySql(); } else { // iterate over the other indicators if (in_array($key,array_keys($indicator))) { diff --git a/lib/middleware/LegacyRedirectorMiddleware.php b/lib/middleware/LegacyRedirectorMiddleware.php index 5b9960c..d072e27 100644 --- a/lib/middleware/LegacyRedirectorMiddleware.php +++ b/lib/middleware/LegacyRedirectorMiddleware.php @@ -1,7 +1,7 @@ <?php namespace Studip\Middleware; -use Forum\ForumTopic; +use Forum\Topic; use NotificationCenter; use Psr\Http\Message\ResponseFactoryInterface; use Psr\Http\Message\{ResponseInterface as Response, @@ -82,7 +82,7 @@ final class LegacyRedirectorMiddleware implements MiddlewareInterface $uri->getPath() ) ); - } elseif (ForumTopic::exists($forum_id)) { + } elseif (Topic::exists($forum_id)) { $redirectUri = $uri->withPath( str_replace( 'course/forum/index/index', diff --git a/lib/models/CourseTopic.php b/lib/models/CourseTopic.php index fb31efc..f61738a 100644 --- a/lib/models/CourseTopic.php +++ b/lib/models/CourseTopic.php @@ -51,7 +51,7 @@ class CourseTopic extends SimpleORMap 'foreign_key' => 'author_id' ]; $config['has_and_belongs_to_many']['forum_topics'] = [ - 'class_name' => \Forum\ForumTopic::class, + 'class_name' => \Forum\Topic::class, 'thru_table' => 'forum_topics_issues', 'on_delete' => 'delete', 'on_store' => 'store' @@ -122,7 +122,7 @@ class CourseTopic extends SimpleORMap public function connectWithForumThread() { if ($this->seminar_id && !$this->forum_thread_url) { - $forum_topic = new \Forum\ForumTopic(); + $forum_topic = new \Forum\Topic(); $forum_topic['range_id'] = $this->seminar_id; $forum_topic['name'] = $this['title']; $forum_topic['description'] = $this['description']; diff --git a/lib/models/Forum/ForumCategory.php b/lib/models/Forum/Category.php index bf42092..73c96e1 100644 --- a/lib/models/Forum/ForumCategory.php +++ b/lib/models/Forum/Category.php @@ -16,27 +16,27 @@ use User; * @property int $chdate * * @property Range $range - * @property ForumTopic[] $topics + * @property Topic[] $topics * @property array $metadata */ -class ForumCategory extends \SimpleORMap +class Category extends \SimpleORMap { protected static function configure($config = []) { $config['db_table'] = 'forum_categories'; $config['has_many']['topics'] = [ - 'class_name' => ForumTopic::class, + 'class_name' => Topic::class, 'foreign_key' => 'category_id', 'assoc_foreign_key' => 'category_id', 'order_by' => 'ORDER BY position ASC, mkdate DESC', ]; $config['additional_fields']['range'] = [ - 'set' => function (ForumCategory $category, string $field, Range $range) { + 'set' => function (Category $category, string $field, Range $range) { $category->range_id = $range->getRangeId(); }, - 'get' => function (ForumCategory $category): Range { + 'get' => function (Category $category): Range { return get_object_by_range_id($category->range_id); }, ]; diff --git a/lib/models/Forum/ForumDiscussion.php b/lib/models/Forum/Discussion.php index 0dae82e..96bd85a 100644 --- a/lib/models/Forum/ForumDiscussion.php +++ b/lib/models/Forum/Discussion.php @@ -4,8 +4,8 @@ namespace Forum; use User; use DBManager; use SimpleORMap; -use Forum\DTO\ForumMember; -use Forum\DTO\ForumTag; +use Forum\DTO\Member as MemberDTO; +use Forum\DTO\Tag as TagDTO; use Forum\Service\DiscussionNotification; /** @@ -19,43 +19,43 @@ use Forum\Service\DiscussionNotification; * @property int $mkdate * @property int $chdate * - * @property ForumTopic $topic + * @property Topic $topic * @property User $user - * @property ForumDiscussionType $discussion_type - * @property ForumPosting[] $postings - * @property ForumSubscription[] $subscribers + * @property DiscussionType $discussion_type + * @property Posting[] $postings + * @property Subscription[] $subscribers * @property User[] $users - * @property ForumMember[] $members - * @property ForumTag[] $tags - * @property ForumCategory $category + * @property MemberDTO[] $members + * @property TagDTO[] $tags + * @property Category $category */ -class ForumDiscussion extends SimpleORMap +class Discussion extends SimpleORMap { protected static function configure($config = []) { $config['db_table'] = 'forum_discussions'; $config['belongs_to']['topic'] = [ - 'class_name' => ForumTopic::class, + 'class_name' => Topic::class, 'foreign_key' => 'topic_id', 'assoc_foreign_key' => 'topic_id' ]; $config['belongs_to']['discussion_type'] = [ - 'class_name' => ForumDiscussionType::class, + 'class_name' => DiscussionType::class, 'foreign_key' => 'type_id', 'assoc_foreign_key' => 'type_id' ]; $config['has_many']['postings'] = [ - 'class_name' => ForumPosting::class, + 'class_name' => Posting::class, 'foreign_key' => 'discussion_id', 'assoc_foreign_key' => 'discussion_id', 'order_by' => 'ORDER BY mkdate', ]; $config['has_many']['subscribers'] = [ - 'class_name' => ForumSubscription::class, + 'class_name' => Subscription::class, 'foreign_key' => 'discussion_id', 'assoc_foreign_key' => 'discussion_id' ]; @@ -155,6 +155,9 @@ class ForumDiscussion extends SimpleORMap ); } + /** + * @return TagDTO[] + */ public function getTags(): array { return DBManager::get()->fetchAll( @@ -164,7 +167,7 @@ class ForumDiscussion extends SimpleORMap ORDER BY `tags`.`mkdate` DESC", ['discussion_id' => $this->discussion_id], function ($tag) { - return ForumTag::fromArray([ + return TagDTO::fromArray([ 'id' => $tag['tag_id'], 'name' => $tag['name'] ]); @@ -172,9 +175,9 @@ class ForumDiscussion extends SimpleORMap ); } - public function getCategory(): ?ForumCategory + public function getCategory(): ?Category { - return ForumCategory::findOneBySQL("JOIN forum_topics USING (category_id) WHERE forum_topics.topic_id = :topic_id", ['topic_id' => $this->topic_id]); + return Category::findOneBySQL("JOIN forum_topics USING (category_id) WHERE forum_topics.topic_id = :topic_id", ['topic_id' => $this->topic_id]); } public function getRangeId(): string @@ -206,13 +209,16 @@ class ForumDiscussion extends SimpleORMap return array_values($unique_users); } + /** + * @return MemberDTO[] + */ public function getMembers($last_visit = null): array { $users = $this->getUsers($last_visit); $members = []; foreach ($users as $user) { - $members[] = ForumMember::fromUser($user, $this->range_id); + $members[] = MemberDTO::fromUser($user, $this->range_id); } return $members; @@ -276,8 +282,8 @@ class ForumDiscussion extends SimpleORMap public function onDelete(): void { - ForumSubscription::deleteBySQL("subject_id = ?", [$this->discussion_id]); - ForumPosting::deleteBySQL("discussion_id = ?", [$this->discussion_id]); - ForumPostingRead::deleteBySQL("discussion_id = ?", [$this->discussion_id]); + Subscription::deleteBySQL("subject_id = ?", [$this->discussion_id]); + Posting::deleteBySQL("discussion_id = ?", [$this->discussion_id]); + PostingRead::deleteBySQL("discussion_id = ?", [$this->discussion_id]); } } diff --git a/lib/models/Forum/ForumDiscussionType.php b/lib/models/Forum/DiscussionType.php index e3914b5..0462388 100644 --- a/lib/models/Forum/ForumDiscussionType.php +++ b/lib/models/Forum/DiscussionType.php @@ -12,17 +12,17 @@ use SimpleORMap; * @property int $mkdate * @property int $chdate * - * @property ForumDiscussion[] $discussions + * @property Discussion[] $discussions */ -class ForumDiscussionType extends SimpleORMap +class DiscussionType extends SimpleORMap { protected static function configure($config = []) { $config['db_table'] = 'forum_discussion_types'; $config['has_many']['discussions'] = [ - 'class_name' => ForumDiscussion::class, + 'class_name' => Discussion::class, 'foreign_key' => 'type_id' , 'assoc_foreign_key' => 'type_id' ]; @@ -36,7 +36,7 @@ class ForumDiscussionType extends SimpleORMap } /** - * @return ForumDiscussion[] + * @return Discussion[] */ public function getDiscussions(): array { @@ -50,7 +50,7 @@ class ForumDiscussionType extends SimpleORMap GROUP BY discussions.discussion_id ORDER BY discussions.sticky DESC, latest_post_date DESC", ['type_id' => $this->type_id], - ForumDiscussion::buildExisting(...) + Discussion::buildExisting(...) ); } } diff --git a/lib/models/Forum/ForumPosting.php b/lib/models/Forum/Posting.php index b442046..b0ae0e8 100644 --- a/lib/models/Forum/ForumPosting.php +++ b/lib/models/Forum/Posting.php @@ -5,7 +5,7 @@ use OpenGraph; use SimpleORMap; use Forum\Service\PostingNotification; use User; -use Forum\DTO\ForumMember; +use Forum\DTO\Member as MemberDTO; /** * @property string $posting_id @@ -16,26 +16,26 @@ use Forum\DTO\ForumMember; * @property int $mkdate * @property int $chdate * - * @property ForumDiscussion $discussion - * @property ForumPosting $posting - * @property ForumPostingReaction[] $reactions + * @property Discussion $discussion + * @property Posting $posting + * @property PostingReaction[] $reactions * @property User $user - * @property ForumMember $author + * @property MemberDTO $author */ -class ForumPosting extends SimpleORMap +class Posting extends SimpleORMap { protected static function configure($config = []) { $config['db_table'] = 'forum_postings'; $config['belongs_to']['discussion'] = [ - 'class_name' => ForumDiscussion::class, + 'class_name' => Discussion::class, 'foreign_key' => 'discussion_id', 'assoc_foreign_key' => 'discussion_id' ]; $config['belongs_to']['posting'] = [ - 'class_name' => ForumPosting::class, + 'class_name' => Posting::class, 'foreign_key' => 'parent_id', 'assoc_foreign_key' => 'posting_id' ]; @@ -47,7 +47,7 @@ class ForumPosting extends SimpleORMap ]; $config['has_many']['reactions'] = [ - 'class_name' => ForumPostingReaction::class, + 'class_name' => PostingReaction::class, 'foreign_key' => 'posting_id', 'assoc_foreign_key' => 'posting_id' ]; @@ -59,15 +59,15 @@ class ForumPosting extends SimpleORMap parent::configure($config); } - public function getAuthor(): ?ForumMember + public function getAuthor(): ?MemberDTO { if ($this->anonymous && $this->user_id !== User::findCurrent()->user_id) { - return ForumMember::fromArray(); + return MemberDTO::fromArray(); } $user = $this->user; if ($user) { - return ForumMember::fromUser($user, $this->range_id); + return MemberDTO::fromUser($user, $this->range_id); } return null; @@ -115,6 +115,6 @@ class ForumPosting extends SimpleORMap public function onDelete(): void { - ForumPostingReaction::deleteBySQL("posting_id = ?", [$this->posting_id]); + PostingReaction::deleteBySQL("posting_id = ?", [$this->posting_id]); } } diff --git a/lib/models/Forum/ForumPostingReaction.php b/lib/models/Forum/PostingReaction.php index f7141a9..643e564 100644 --- a/lib/models/Forum/ForumPostingReaction.php +++ b/lib/models/Forum/PostingReaction.php @@ -12,11 +12,11 @@ use User; * @property int $mkdate * @property int $chdate * - * @property ForumPosting $posting + * @property Posting $posting * @property User $user */ -class ForumPostingReaction extends SimpleORMap +class PostingReaction extends SimpleORMap { public const thumbUp = 'THUMBS UP SIGN'; public const thumbDown = 'THUMBS DOWN SIGN'; @@ -33,7 +33,7 @@ class ForumPostingReaction extends SimpleORMap $config['db_table'] = 'forum_posting_reactions'; $config['belongs_to']['posting'] = [ - 'class_name' => ForumPosting::class, + 'class_name' => Posting::class, 'foreign_key' => 'posting_id', 'assoc_foreign_key' => 'posting_id' ]; diff --git a/lib/models/Forum/ForumPostingRead.php b/lib/models/Forum/PostingRead.php index 8232236..f690d1b 100644 --- a/lib/models/Forum/ForumPostingRead.php +++ b/lib/models/Forum/PostingRead.php @@ -10,18 +10,18 @@ use User; * @property int $read_index * @property int $chdate * - * @property ForumDiscussion $discussion + * @property Discussion $discussion * @property User $users */ -class ForumPostingRead extends SimpleORMap +class PostingRead extends SimpleORMap { protected static function configure($config = []) { $config['db_table'] = 'forum_posting_reads'; $config['belongs_to']['discussion'] = [ - 'class_name' => ForumDiscussion::class, + 'class_name' => Discussion::class, 'foreign_key' => 'discussion_id', 'assoc_foreign_key' => 'discussion_id' ]; @@ -35,9 +35,9 @@ class ForumPostingRead extends SimpleORMap parent::configure($config); } - public static function updateUserReadPoint($user_id, $discussion_id, int $read_index = 0): ForumPostingRead + public static function updateUserReadPoint($user_id, $discussion_id, int $read_index = 0): PostingRead { - $postingRead = ForumPostingRead::findOneBySQL( + $postingRead = PostingRead::findOneBySQL( "discussion_id = :discussion_id AND user_id = :user_id", [ 'discussion_id' => $discussion_id, @@ -46,7 +46,7 @@ class ForumPostingRead extends SimpleORMap ); if (!$postingRead) { - $postingRead = new ForumPostingRead(); + $postingRead = new PostingRead(); $postingRead->discussion_id = $discussion_id; $postingRead->user_id = $user_id; } diff --git a/lib/models/Forum/ForumSubscription.php b/lib/models/Forum/Subscription.php index 2ba8335..47ec6b2 100644 --- a/lib/models/Forum/ForumSubscription.php +++ b/lib/models/Forum/Subscription.php @@ -15,12 +15,12 @@ use Forum\Enum\SubscriptionNotificationType; * @property int $mkdate * @property int $chdate * - * @property ForumDiscussion | ForumTopic $subject_object + * @property Discussion | Topic $subject_object * @property User $user * @property Range $range */ -class ForumSubscription extends SimpleORMap +class Subscription extends SimpleORMap { protected static function configure($config = []) { @@ -33,10 +33,10 @@ class ForumSubscription extends SimpleORMap ]; $config['additional_fields']['range'] = [ - 'set' => function (ForumSubscription $subscription, string $field, Range $range) { + 'set' => function (Subscription $subscription, string $field, Range $range) { $subscription->range_id = $range->getRangeId(); }, - 'get' => function (ForumSubscription $subscription): Range { + 'get' => function (Subscription $subscription): Range { return get_object_by_range_id($subscription->range_id); }, ]; @@ -60,11 +60,11 @@ class ForumSubscription extends SimpleORMap ); } - public function getSubjectObject(): ForumDiscussion | ForumTopic + public function getSubjectObject(): Discussion | Topic { return match ($this->subject) { - 'topic' => ForumTopic::find($this->subject_id), - 'discussion' => ForumDiscussion::find($this->subject_id) + 'topic' => Topic::find($this->subject_id), + 'discussion' => Discussion::find($this->subject_id) }; } } diff --git a/lib/models/Forum/ForumTopic.php b/lib/models/Forum/Topic.php index 8dd5404..a6b298f 100644 --- a/lib/models/Forum/ForumTopic.php +++ b/lib/models/Forum/Topic.php @@ -17,36 +17,36 @@ use User; * @property int $chdate * * @property Range $range - * @property ForumCategory $category - * @property ForumDiscussion[] $discussions + * @property Category $category + * @property Discussion[] $discussions * @property User[] $users * @property array $metadata */ -class ForumTopic extends SimpleORMap +class Topic extends SimpleORMap { protected static function configure($config = []) { $config['db_table'] = 'forum_topics'; $config['belongs_to']['category'] = [ - 'class_name' => ForumCategory::class, + 'class_name' => Category::class, 'foreign_key' => 'category_id', 'assoc_foreign_key' => 'category_id' ]; $config['has_many']['discussions'] = [ - 'class_name' => ForumDiscussion::class, + 'class_name' => Discussion::class, 'foreign_key' => 'topic_id', 'assoc_func' => 'getDiscussions', 'assoc_foreign_key' => 'topic_id', ]; $config['additional_fields']['range'] = [ - 'set' => function (ForumTopic $topic, string $field, Range $range) { + 'set' => function (Topic $topic, string $field, Range $range) { $topic->range_id = $range->getRangeId(); }, - 'get' => function (ForumTopic $topic): Range { + 'get' => function (Topic $topic): Range { return get_object_by_range_id($topic->range_id); }, ]; @@ -101,7 +101,7 @@ class ForumTopic extends SimpleORMap } /** - * @return ForumDiscussion[] + * @return Discussion[] */ public function getDiscussions(): array { @@ -115,7 +115,7 @@ class ForumTopic extends SimpleORMap GROUP BY discussions.discussion_id ORDER BY discussions.sticky DESC, latest_post_date DESC", ['topic_id' => $this->topic_id], - ForumDiscussion::buildExisting(...) + Discussion::buildExisting(...) ); } @@ -162,7 +162,7 @@ class ForumTopic extends SimpleORMap public function onDelete(): void { - ForumSubscription::deleteBySQL("subject_id = ?", [$this->topic_id]); - ForumDiscussion::deleteBySQL("topic_id = ?", [$this->topic_id]); + Subscription::deleteBySQL("subject_id = ?", [$this->topic_id]); + Discussion::deleteBySQL("topic_id = ?", [$this->topic_id]); } } diff --git a/lib/models/User.php b/lib/models/User.php index 96bfb7b..1741253 100644 --- a/lib/models/User.php +++ b/lib/models/User.php @@ -234,17 +234,17 @@ class User extends AuthUserMd5 implements Range, PrivacyObject, Studip\Calendar\ // Forum $config['has_many']['forum_posting_reads'] = [ - 'class_name' => Forum\ForumPostingRead::class, + 'class_name' => Forum\PostingRead::class, 'assoc_foreign_key' => 'user_id', 'on_delete' => 'delete', ]; $config['has_many']['forum_posting_reactions'] = [ - 'class_name' => Forum\ForumPostingReaction::class, + 'class_name' => Forum\PostingReaction::class, 'assoc_foreign_key' => 'user_id', 'on_delete' => 'delete', ]; $config['has_many']['forum_subscriptions'] = [ - 'class_name' => Forum\ForumSubscription::class, + 'class_name' => Forum\Subscription::class, 'assoc_foreign_key' => 'user_id', 'on_delete' => 'delete', ]; diff --git a/lib/modules/CoreForum.php b/lib/modules/CoreForum.php index 138fc60..838362b 100644 --- a/lib/modules/CoreForum.php +++ b/lib/modules/CoreForum.php @@ -8,7 +8,7 @@ * @since Stud.IP 6.1 */ -use Forum\ForumPosting; +use Forum\Posting; class CoreForum extends CorePlugin implements StudipModule { @@ -49,7 +49,7 @@ class CoreForum extends CorePlugin implements StudipModule $navigation_title = _('Forum'); if ($GLOBALS['perm']->have_studip_perm('user', $course_id)) { - $recent_posts = ForumPosting::getRecentPosts($course_id, $last_visit); + $recent_posts = Posting::getRecentPosts($course_id, $last_visit); $recent_posts_count = array_sum(array_column($recent_posts, 'posts')); if ($recent_posts_count > 0) { @@ -120,7 +120,7 @@ class CoreForum extends CorePlugin implements StudipModule public static function deleteCourseContents($course_id): void { - \Forum\ForumCategory::deleteBySQL("range_id = ?", [$course_id]); - \Forum\ForumTopic::deleteBySQL("range_id = ?", [$course_id]); + \Forum\Category::deleteBySQL("range_id = ?", [$course_id]); + \Forum\Topic::deleteBySQL("range_id = ?", [$course_id]); } } |
