getUser($request), $fileRef)) { throw new AuthorizationFailedException(); } $json = $this->validate($request, $fileRef); $this->updateFileRef($fileRef, $json, $user); $fileRef->restore(); return $this->getContentResponse($fileRef); } private function updateFileRef(\FileRef $fileRef, array $json, \User $user) { $getTrimmed = function ($key, $default = '') use ($json) { return trim(self::arrayGet($json, $key, $default)); }; $name = $getTrimmed('data.attributes.name', $fileRef->name); $description = $getTrimmed('data.attributes.description', $fileRef->description); $termsId = $getTrimmed( 'data.relationships.terms-of-use.data.id', $fileRef->content_terms_of_use_id ); if ($fileRef->name === $name && $fileRef->description === $description && $fileRef->content_terms_of_use_id === $termsId ) { return; } $result = \FileManager::editFileRef($fileRef, $user, $name, $description, $termsId); if (!$result instanceof \FileRef) { throw new JsonApiException(array_map(function ($error) { return new Error('Bad Request Error', null, null, null, 400, $error); }, $result), 400); } } protected function validateResourceDocument($json, $data) { if ($err = $this->validateFileRefResourceObject($json, $data)) { return $err; } } }