From 5e8d267f10b5ae3b2a2d9bd82eb6ed44885950bd Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms <tleilax+studip@gmail.com> Date: Mon, 4 Jul 2022 07:53:03 +0000 Subject: [PATCH] fix errors in jsonapi code, fixes #1228 Closes #1228 Merge request studip/studip!740 --- .../JsonApi/Routes/Blubber/FilterTrait.php | 2 +- .../CourseMembershipsUpdate.php | 1 + .../Courses/CoursesMembershipsIndex.php | 1 + .../Routes/Courses/Rel/Memberships.php | 1 + .../JsonApi/Routes/Courseware/Authority.php | 22 +++++++++--- .../Routes/Courseware/ContainersUpdate.php | 1 + .../Rel/UsersBookmarkedStructuralElements.php | 3 -- .../StructuralElementsImageUpload.php | 1 + .../Routes/Courseware/TemplatesIndex.php | 4 +-- .../JsonApi/Routes/Events/UserEventsIcal.php | 5 +-- .../JsonApi/Routes/Files/FileRefsUpdate.php | 4 +-- .../JsonApi/Routes/Files/FoldersDelete.php | 1 + .../Routes/Files/RoutesHelperTrait.php | 36 +++++++++++-------- .../Routes/Forum/ForumCategoriesDelete.php | 1 + .../Routes/Forum/ForumEntriesDelete.php | 1 + .../JsonApi/Routes/News/ByCurrentUser.php | 1 + .../JsonApi/Routes/News/ByUserIndex.php | 1 + .../JsonApi/Routes/News/CommentsIndex.php | 1 + .../JsonApi/Routes/News/NewsUpdate.php | 1 + .../JsonApi/Routes/News/Rel/Ranges.php | 2 +- .../Routes/News/StudipNewsDatesHelper.php | 1 + .../JsonApi/Routes/News/UserNewsCreate.php | 1 + .../JsonApi/Routes/Wiki/WikiCreate.php | 6 ++-- .../JsonApi/Routes/Wiki/WikiDelete.php | 1 + lib/classes/JsonApi/Schemas/StudipNews.php | 2 +- 25 files changed, 67 insertions(+), 34 deletions(-) diff --git a/lib/classes/JsonApi/Routes/Blubber/FilterTrait.php b/lib/classes/JsonApi/Routes/Blubber/FilterTrait.php index 1f043388f68..40bf4b0a098 100644 --- a/lib/classes/JsonApi/Routes/Blubber/FilterTrait.php +++ b/lib/classes/JsonApi/Routes/Blubber/FilterTrait.php @@ -2,7 +2,7 @@ namespace JsonApi\Routes\Blubber; -use Psr\Http\Message\ServerRequestInterface as Request; +use JsonApi\Errors\BadRequestException; trait FilterTrait { diff --git a/lib/classes/JsonApi/Routes/CourseMemberships/CourseMembershipsUpdate.php b/lib/classes/JsonApi/Routes/CourseMemberships/CourseMembershipsUpdate.php index 1ec91e7d72f..6bf71eadd06 100644 --- a/lib/classes/JsonApi/Routes/CourseMemberships/CourseMembershipsUpdate.php +++ b/lib/classes/JsonApi/Routes/CourseMemberships/CourseMembershipsUpdate.php @@ -4,6 +4,7 @@ namespace JsonApi\Routes\CourseMemberships; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\Errors\BadRequestException; +use JsonApi\Errors\InternalServerError; use JsonApi\Errors\RecordNotFoundException; use JsonApi\JsonApiController; use JsonApi\Routes\ValidationTrait; diff --git a/lib/classes/JsonApi/Routes/Courses/CoursesMembershipsIndex.php b/lib/classes/JsonApi/Routes/Courses/CoursesMembershipsIndex.php index 0d09a34ce1d..d4877bbe969 100644 --- a/lib/classes/JsonApi/Routes/Courses/CoursesMembershipsIndex.php +++ b/lib/classes/JsonApi/Routes/Courses/CoursesMembershipsIndex.php @@ -5,6 +5,7 @@ namespace JsonApi\Routes\Courses; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\Errors\AuthorizationFailedException; +use JsonApi\Errors\BadRequestException; use JsonApi\Errors\RecordNotFoundException; use JsonApi\JsonApiController; use JsonApi\Schemas\CourseMember; diff --git a/lib/classes/JsonApi/Routes/Courses/Rel/Memberships.php b/lib/classes/JsonApi/Routes/Courses/Rel/Memberships.php index 2932aaafe29..77591bffd66 100644 --- a/lib/classes/JsonApi/Routes/Courses/Rel/Memberships.php +++ b/lib/classes/JsonApi/Routes/Courses/Rel/Memberships.php @@ -3,6 +3,7 @@ namespace JsonApi\Routes\Courses\Rel; use Psr\Http\Message\ServerRequestInterface as Request; +use JsonApi\Errors\RecordNotFoundException; use JsonApi\Routes\Courses\Authority; use JsonApi\Routes\RelationshipsController; diff --git a/lib/classes/JsonApi/Routes/Courseware/Authority.php b/lib/classes/JsonApi/Routes/Courseware/Authority.php index 9c5a37b4fbc..6f192d7d451 100755 --- a/lib/classes/JsonApi/Routes/Courseware/Authority.php +++ b/lib/classes/JsonApi/Routes/Courseware/Authority.php @@ -8,6 +8,8 @@ use Courseware\BlockFeedback; use Courseware\Container; use Courseware\Instance; use Courseware\StructuralElement; +use Courseware\StructuralElementComment; +use Courseware\StructuralElementFeedback; use Courseware\Task; use Courseware\TaskFeedback; use Courseware\TaskGroup; @@ -81,7 +83,7 @@ class Authority } public static function canUpdateEditBlocker(User $user, $resource) - { + { $structural_element = null; if ($resource instanceof Block) { $structural_element = $resource->container->structural_element; @@ -268,6 +270,16 @@ class Authority return $resource->user_id === $user->id || self::canUpdateBlock($user, $resource->block); } + public static function canUpdateBlockFeedback(User $user, BlockFeedback $resource) + { + return self::canShowBlockFeedback($user, $resource); + } + + public static function canDeleteBlockFeedback(User $user, BlockFeedback $resource) + { + return self::canUpdateBlockFeedback($user, $resource); + } + public static function canUploadStructuralElementsImage(User $user, StructuralElement $resource) { return self::canUpdateStructuralElement($user, $resource); @@ -306,12 +318,12 @@ class Authority public static function canDeleteTask(User $user, Task $resource): bool { - return self::canCreateTasks($user, $resource['structural_element']); + return self::canCreateTasks($user, $resource->structural_element); } public static function canCreateTaskFeedback(User $user, Task $resource): bool { - return self::canCreateTasks($user, $resource['structural_element']); + return self::canCreateTasks($user, $resource->structural_element); } public static function canShowTaskFeedback(User $user, Task $resource): bool @@ -337,7 +349,7 @@ class Authority public static function canShowStructuralElementComment(User $user, StructuralElementComment $resource) { - return self::canShowStructuralElement($user, $resource); + return self::canShowStructuralElement($user, $resource->structural_element); } public static function canCreateStructuralElementComment(User $user, StructuralElement $resource) @@ -392,7 +404,7 @@ class Authority public static function canShowStructuralElementFeedback(User $user, StructuralElementFeedback $resource) { - return $resource->user_id === $user->id || self::canUpdateStructuralElement($resource->structural_element); + return $resource->user_id === $user->id || self::canUpdateStructuralElement($user, $resource->structural_element); } public static function canDeleteStructuralElementFeedback(User $user, StructuralElementComment $resource) diff --git a/lib/classes/JsonApi/Routes/Courseware/ContainersUpdate.php b/lib/classes/JsonApi/Routes/Courseware/ContainersUpdate.php index 77d3d2c75b2..219395d2209 100755 --- a/lib/classes/JsonApi/Routes/Courseware/ContainersUpdate.php +++ b/lib/classes/JsonApi/Routes/Courseware/ContainersUpdate.php @@ -5,6 +5,7 @@ namespace JsonApi\Routes\Courseware; use Courseware\Container; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\Errors\RecordNotFoundException; +use JsonApi\Errors\UnprocessableEntityException; use JsonApi\JsonApiController; use JsonApi\Routes\ValidationTrait; use JsonApi\Schemas\Courseware\Container as ContainerSchema; diff --git a/lib/classes/JsonApi/Routes/Courseware/Rel/UsersBookmarkedStructuralElements.php b/lib/classes/JsonApi/Routes/Courseware/Rel/UsersBookmarkedStructuralElements.php index 7f05c66a648..cfe487d6652 100755 --- a/lib/classes/JsonApi/Routes/Courseware/Rel/UsersBookmarkedStructuralElements.php +++ b/lib/classes/JsonApi/Routes/Courseware/Rel/UsersBookmarkedStructuralElements.php @@ -3,11 +3,8 @@ namespace JsonApi\Routes\Courseware\Rel; use Courseware\Bookmark; -use Courseware\Instance; use Courseware\StructuralElement; use JsonApi\Errors\AuthorizationFailedException; -use JsonApi\Errors\BadRequestException; -use JsonApi\Errors\ConflictException; use JsonApi\Errors\RecordNotFoundException; use JsonApi\Routes\Courseware\Authority; use JsonApi\Routes\Courseware\CoursewareInstancesHelper; diff --git a/lib/classes/JsonApi/Routes/Courseware/StructuralElementsImageUpload.php b/lib/classes/JsonApi/Routes/Courseware/StructuralElementsImageUpload.php index 070ca6c842c..3f85d9bb3cf 100755 --- a/lib/classes/JsonApi/Routes/Courseware/StructuralElementsImageUpload.php +++ b/lib/classes/JsonApi/Routes/Courseware/StructuralElementsImageUpload.php @@ -6,6 +6,7 @@ use Courseware\Filesystem\PublicFolder; use Courseware\StructuralElement; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\Errors\BadRequestException; +use JsonApi\Errors\InternalServerError; use JsonApi\Errors\RecordNotFoundException; use JsonApi\NonJsonApiController; use JsonApi\Routes\Files\RoutesHelperTrait as FilesRoutesHelper; diff --git a/lib/classes/JsonApi/Routes/Courseware/TemplatesIndex.php b/lib/classes/JsonApi/Routes/Courseware/TemplatesIndex.php index 1831bb7ef29..9345a59fcc1 100755 --- a/lib/classes/JsonApi/Routes/Courseware/TemplatesIndex.php +++ b/lib/classes/JsonApi/Routes/Courseware/TemplatesIndex.php @@ -3,7 +3,7 @@ namespace JsonApi\Routes\Courseware; use Courseware\Template; -use JsonApi\Errors\RecordNotFoundException; +use JsonApi\Errors\AuthorizationFailedException; use JsonApi\JsonApiController; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; @@ -29,4 +29,4 @@ class TemplatesIndex extends JsonApiController return $this->getContentResponse($resources); } -} \ No newline at end of file +} diff --git a/lib/classes/JsonApi/Routes/Events/UserEventsIcal.php b/lib/classes/JsonApi/Routes/Events/UserEventsIcal.php index 335f90556a9..c8080c46803 100644 --- a/lib/classes/JsonApi/Routes/Events/UserEventsIcal.php +++ b/lib/classes/JsonApi/Routes/Events/UserEventsIcal.php @@ -23,8 +23,9 @@ class UserEventsIcal extends NonJsonApiController // damit unsichtbare Nutzer nicht ermittelt werden können throw new RecordNotFoundException(); } - $calender_writer = new \CalendarWriterICalendar(); - $export = new \CalendarExport($calender_writer); + + $writer = new \CalendarWriterICalendar(); + $export = new \CalendarExport($writer); $export->exportFromDatabase($observedUser->id, 0, 2114377200, ['CalendarEvent', 'CourseEvent', 'CourseCancelledEvent']); if ($GLOBALS['_calendar_error']->getMaxStatus(\ErrorHandler::ERROR_CRITICAL)) { throw new InternalServerError(); diff --git a/lib/classes/JsonApi/Routes/Files/FileRefsUpdate.php b/lib/classes/JsonApi/Routes/Files/FileRefsUpdate.php index 08126f43589..27ddabab7b1 100644 --- a/lib/classes/JsonApi/Routes/Files/FileRefsUpdate.php +++ b/lib/classes/JsonApi/Routes/Files/FileRefsUpdate.php @@ -6,8 +6,8 @@ use JsonApi\Errors\AuthorizationFailedException; use JsonApi\Errors\RecordNotFoundException; use JsonApi\JsonApiController; use JsonApi\Routes\ValidationTrait; -use Neomerx\JsonApi\Document\Error; use Neomerx\JsonApi\Exceptions\JsonApiException; +use Neomerx\JsonApi\Schema\Error; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; @@ -61,7 +61,7 @@ class FileRefsUpdate extends JsonApiController if (!$result instanceof \FileRef) { throw new JsonApiException(array_map(function ($error) { - return new Error('Bad Request Error', null, 400, null, null, $error); + return new Error('Bad Request Error', null, null, null, 400, $error); }, $result), 400); } } diff --git a/lib/classes/JsonApi/Routes/Files/FoldersDelete.php b/lib/classes/JsonApi/Routes/Files/FoldersDelete.php index c383e02cb65..2ed7e45b77a 100644 --- a/lib/classes/JsonApi/Routes/Files/FoldersDelete.php +++ b/lib/classes/JsonApi/Routes/Files/FoldersDelete.php @@ -5,6 +5,7 @@ namespace JsonApi\Routes\Files; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\Errors\AuthorizationFailedException; +use JsonApi\Errors\InternalServerError; use JsonApi\Errors\RecordNotFoundException; use JsonApi\JsonApiController; diff --git a/lib/classes/JsonApi/Routes/Files/RoutesHelperTrait.php b/lib/classes/JsonApi/Routes/Files/RoutesHelperTrait.php index 8122ec59893..cc8785ee729 100644 --- a/lib/classes/JsonApi/Routes/Files/RoutesHelperTrait.php +++ b/lib/classes/JsonApi/Routes/Files/RoutesHelperTrait.php @@ -4,6 +4,7 @@ namespace JsonApi\Routes\Files; use JsonApi\Errors\BadRequestException; use JsonApi\Errors\InternalServerError; +use JsonApi\Routes\ArrayHelperTrait; use JsonApi\Schemas\FileRef as FileRefSchema; use JsonApi\Schemas\Folder as FolderSchema; use JsonApi\Schemas\ContentTermsOfUse as ContentTermsOfUseSchema; @@ -13,28 +14,33 @@ use Slim\Psr7\UploadedFile; trait RoutesHelperTrait { + use ArrayHelperTrait { + arrayHas as array_has; + arrayGet as array_get; + } + protected function validateResourceIdentifier($json, $type, $newResource = true) { - if (!self::arrayHas($json, 'data')) { + if (!self::array_has($json, 'data')) { return 'Missing `data` member at document´s top level.'; } // type - if (self::arrayGet($json, 'data.type') + if (self::array_get($json, 'data.type') !== $type ) { return 'Missing `type` member of document´s `data`.'; } // id - if ($newResource && self::arrayHas($json, 'data.id')) { + if ($newResource && self::array_has($json, 'data.id')) { return 'New document must not have an `id`.'; } } protected function validateFileRefResourceObject($json, \FileRef $fileRef = null) { - if (!self::arrayHas($json, 'data')) { + if (!self::array_has($json, 'data')) { return 'Missing `data` member at document´s top level.'; } @@ -49,12 +55,12 @@ trait RoutesHelperTrait } // Relationship: terms-of-use - if (self::arrayHas($json, 'data.relationships.terms-of-use')) { - $license = self::arrayGet($json, 'data.relationships.terms-of-use'); + if (self::array_has($json, 'data.relationships.terms-of-use')) { + $license = self::array_get($json, 'data.relationships.terms-of-use'); if ($err = $this->validateResourceIdentifier($license, ContentTermsOfUseSchema::TYPE, false)) { return $err; } - $termsId = self::arrayGet($license, 'data.id'); + $termsId = self::array_get($license, 'data.id'); if (!\ContentTermsOfUse::find($termsId)) { return 'Invalid `terms-of-use` specified.'; } @@ -66,12 +72,12 @@ trait RoutesHelperTrait private function validateFileRefAttributes($json) { // Attributes - if (!self::arrayHas($json, 'data.attributes')) { + if (!self::array_has($json, 'data.attributes')) { return 'Missing `attributes` member of document´s `data`.'; } // Attribute: name - $name = self::arrayGet($json, 'data.attributes.name'); + $name = self::array_get($json, 'data.attributes.name'); if (!$name || 0 === mb_strlen(trim($name))) { return '`name` must not be empty.'; } @@ -81,24 +87,24 @@ trait RoutesHelperTrait { // Attributes needed to create a new folder if (!$folder) { - if (!self::arrayHas($json, 'data.attributes')) { + if (!self::array_has($json, 'data.attributes')) { return 'Missing `attributes` member of document´s `data`.'; } - if (!self::arrayHas($json, 'data.attributes.name')) { + if (!self::array_has($json, 'data.attributes.name')) { return 'Missing `data.name`.'; } } // Attribute: name must not be empty if present - if (self::arrayHas($json, 'data.attributes.name') - && !mb_strlen(trim(self::arrayGet($json, 'data.attributes.name', '')))) { + if (self::array_has($json, 'data.attributes.name') + && !mb_strlen(trim(self::array_get($json, 'data.attributes.name', '')))) { return '`name` must not be empty.'; } // Relationship: parent - if (self::arrayHas($json, 'data.relationships.parent')) { - $parent = self::arrayGet($json, 'data.relationships.parent'); + if (self::array_has($json, 'data.relationships.parent')) { + $parent = self::array_get($json, 'data.relationships.parent'); if ($err = $this->validateResourceIdentifier($parent, FolderSchema::TYPE, false)) { return $err; } diff --git a/lib/classes/JsonApi/Routes/Forum/ForumCategoriesDelete.php b/lib/classes/JsonApi/Routes/Forum/ForumCategoriesDelete.php index 8cd431b9bf7..2441a1f88b0 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumCategoriesDelete.php +++ b/lib/classes/JsonApi/Routes/Forum/ForumCategoriesDelete.php @@ -2,6 +2,7 @@ namespace JsonApi\Routes\Forum; +use JsonApi\Errors\AuthorizationFailedException; use JsonApi\Errors\RecordNotFoundException; use JsonApi\JsonApiController; use JsonApi\Models\ForumCat; diff --git a/lib/classes/JsonApi/Routes/Forum/ForumEntriesDelete.php b/lib/classes/JsonApi/Routes/Forum/ForumEntriesDelete.php index 319510fd269..41de02d0488 100644 --- a/lib/classes/JsonApi/Routes/Forum/ForumEntriesDelete.php +++ b/lib/classes/JsonApi/Routes/Forum/ForumEntriesDelete.php @@ -4,6 +4,7 @@ namespace JsonApi\Routes\Forum; 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 JsonApi\Models\ForumEntry; diff --git a/lib/classes/JsonApi/Routes/News/ByCurrentUser.php b/lib/classes/JsonApi/Routes/News/ByCurrentUser.php index d6fe3d6f258..1c858b39e60 100644 --- a/lib/classes/JsonApi/Routes/News/ByCurrentUser.php +++ b/lib/classes/JsonApi/Routes/News/ByCurrentUser.php @@ -4,6 +4,7 @@ namespace JsonApi\Routes\News; 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; diff --git a/lib/classes/JsonApi/Routes/News/ByUserIndex.php b/lib/classes/JsonApi/Routes/News/ByUserIndex.php index f460a19fe6b..3d1574d6643 100644 --- a/lib/classes/JsonApi/Routes/News/ByUserIndex.php +++ b/lib/classes/JsonApi/Routes/News/ByUserIndex.php @@ -4,6 +4,7 @@ namespace JsonApi\Routes\News; 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; diff --git a/lib/classes/JsonApi/Routes/News/CommentsIndex.php b/lib/classes/JsonApi/Routes/News/CommentsIndex.php index d25319f4783..581ba3bf364 100644 --- a/lib/classes/JsonApi/Routes/News/CommentsIndex.php +++ b/lib/classes/JsonApi/Routes/News/CommentsIndex.php @@ -4,6 +4,7 @@ namespace JsonApi\Routes\News; 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; diff --git a/lib/classes/JsonApi/Routes/News/NewsUpdate.php b/lib/classes/JsonApi/Routes/News/NewsUpdate.php index 425929dbf09..269c4501e01 100644 --- a/lib/classes/JsonApi/Routes/News/NewsUpdate.php +++ b/lib/classes/JsonApi/Routes/News/NewsUpdate.php @@ -3,6 +3,7 @@ namespace JsonApi\Routes\News; use JsonApi\Errors\AuthorizationFailedException; +use JsonApi\Errors\InternalServerError; use JsonApi\Errors\RecordNotFoundException; use JsonApi\JsonApiController; use JsonApi\Routes\ValidationTrait; diff --git a/lib/classes/JsonApi/Routes/News/Rel/Ranges.php b/lib/classes/JsonApi/Routes/News/Rel/Ranges.php index 3f90dcdcf4d..ceeddcace1b 100644 --- a/lib/classes/JsonApi/Routes/News/Rel/Ranges.php +++ b/lib/classes/JsonApi/Routes/News/Rel/Ranges.php @@ -189,7 +189,7 @@ class Ranges extends RelationshipsController private function getGlobalRange() { - return new \JsonApi\Model\Studip(); + return new \JsonApi\Models\Studip(); } private function addRanges(\StudipNews $news, array $ranges) diff --git a/lib/classes/JsonApi/Routes/News/StudipNewsDatesHelper.php b/lib/classes/JsonApi/Routes/News/StudipNewsDatesHelper.php index 876baf67b64..cfb51585968 100644 --- a/lib/classes/JsonApi/Routes/News/StudipNewsDatesHelper.php +++ b/lib/classes/JsonApi/Routes/News/StudipNewsDatesHelper.php @@ -2,6 +2,7 @@ namespace JsonApi\Routes\News; +use DateTime; use JsonApi\Routes\TimestampTrait; trait StudipNewsDatesHelper diff --git a/lib/classes/JsonApi/Routes/News/UserNewsCreate.php b/lib/classes/JsonApi/Routes/News/UserNewsCreate.php index 84ea30efb50..7580202504a 100644 --- a/lib/classes/JsonApi/Routes/News/UserNewsCreate.php +++ b/lib/classes/JsonApi/Routes/News/UserNewsCreate.php @@ -6,6 +6,7 @@ use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use JsonApi\Errors\AuthorizationFailedException; use JsonApi\Errors\InternalServerError; +use JsonApi\Errors\RecordNotFoundException; /** * Create a news where the range is the user himself. diff --git a/lib/classes/JsonApi/Routes/Wiki/WikiCreate.php b/lib/classes/JsonApi/Routes/Wiki/WikiCreate.php index d3eb1671299..79a8a558fd0 100644 --- a/lib/classes/JsonApi/Routes/Wiki/WikiCreate.php +++ b/lib/classes/JsonApi/Routes/Wiki/WikiCreate.php @@ -4,8 +4,10 @@ namespace JsonApi\Routes\Wiki; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; -use JsonApi\Errors\ConflictError; +use JsonApi\Errors\AuthorizationFailedException; +use JsonApi\Errors\ConflictException; use JsonApi\Errors\InternalServerError; +use JsonApi\Errors\RecordNotFoundException; use JsonApi\JsonApiController; use JsonApi\Routes\ValidationTrait; use JsonApi\Schemas\WikiPage; @@ -38,7 +40,7 @@ class WikiCreate extends JsonApiController $keyword = self::arrayGet($json, 'data.attributes.keyword'); if (\WikiPage::findLatestPage($range->id, $keyword)) { - throw new ConflictError('Wiki page already exists.'); + throw new ConflictException('Wiki page already exists.'); } if (!$wiki = $this->createWikiFromJSON($user, $range, $json)) { diff --git a/lib/classes/JsonApi/Routes/Wiki/WikiDelete.php b/lib/classes/JsonApi/Routes/Wiki/WikiDelete.php index 6573e7f34ff..709c468692e 100644 --- a/lib/classes/JsonApi/Routes/Wiki/WikiDelete.php +++ b/lib/classes/JsonApi/Routes/Wiki/WikiDelete.php @@ -4,6 +4,7 @@ namespace JsonApi\Routes\Wiki; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; +use JsonApi\Errors\AuthorizationFailedException; use JsonApi\JsonApiController; require_once 'lib/wiki.inc.php'; diff --git a/lib/classes/JsonApi/Schemas/StudipNews.php b/lib/classes/JsonApi/Schemas/StudipNews.php index 1bf766aee4e..d9504ad4f54 100644 --- a/lib/classes/JsonApi/Schemas/StudipNews.php +++ b/lib/classes/JsonApi/Schemas/StudipNews.php @@ -113,7 +113,7 @@ class StudipNews extends SchemaProvider return $news->news_ranges->map(function ($range) use ($include) { switch ($range->type) { case 'global': - return new \Jsonapi\Models\Studip(); + return new \JsonApi\Models\Studip(); case 'sem': return $include -- GitLab