diff --git a/lib/Controller/DirectViewController.php b/lib/Controller/DirectViewController.php index 30b72c933d..725a2dd2c0 100644 --- a/lib/Controller/DirectViewController.php +++ b/lib/Controller/DirectViewController.php @@ -26,6 +26,7 @@ use OCP\Files\NotFoundException; use OCP\IConfig; use OCP\IRequest; +use OCP\Share\IManager as ShareManager; use Psr\Log\LoggerInterface; class DirectViewController extends Controller { @@ -34,6 +35,7 @@ class DirectViewController extends Controller { public function __construct( string $appName, IRequest $request, + private ShareManager $shareManager, private IRootFolder $rootFolder, private TokenManager $tokenManager, private DirectMapper $directMapper, @@ -133,7 +135,7 @@ public function show($token) { public function showPublicShare(Direct $direct) { try { - $share = \OC::$server->getShareManager()->getShareByToken($direct->getShare()); + $share = $this->shareManager->getShareByToken($direct->getShare()); $node = $share->getNode(); if ($node instanceof Folder) { @@ -151,12 +153,11 @@ public function showPublicShare(Direct $direct) { return $response; } - $this->settings = \OC::$server->getConfig(); if ($node instanceof Node) { $params = [ 'permissions' => $share->getPermissions(), 'title' => $node->getName(), - 'fileId' => $node->getId() . '_' . $this->settings->getSystemValue('instanceid'), + 'fileId' => $node->getId() . '_' . $this->config->getSystemValueString('instanceid'), 'path' => '/', 'userId' => null, 'direct' => true, @@ -164,7 +165,7 @@ public function showPublicShare(Direct $direct) { ]; $urlSrc = $this->tokenManager->getUrlSrc($node); - $wopi = $this->tokenManager->generateWopiToken($node->getId(), $direct->getShare(), $direct->getUid(), true); + $wopi = $this->tokenManager->generateWopiToken((string)$node->getId(), $direct->getShare(), $direct->getUid(), true); if (!empty($direct->getInitiatorHost())) { $this->tokenManager->upgradeFromDirectInitiator($direct, $wopi); } diff --git a/lib/Controller/DocumentController.php b/lib/Controller/DocumentController.php index bf15598211..c0c405845a 100644 --- a/lib/Controller/DocumentController.php +++ b/lib/Controller/DocumentController.php @@ -6,7 +6,6 @@ namespace OCA\Richdocuments\Controller; use Exception; -use OC; use OC\User\NoUserException; use OCA\Richdocuments\AppConfig; use OCA\Richdocuments\Db\Wopi; @@ -24,6 +23,8 @@ use OCP\AppFramework\Http\RedirectResponse; use OCP\AppFramework\Http\TemplateResponse; use OCP\Constants; +use OCP\Encryption\IFile as EncryptionFilesHelper; +use OCP\Encryption\IManager as IEncryptionManager; use OCP\Files\File; use OCP\Files\Folder; use OCP\Files\IRootFolder; @@ -140,12 +141,12 @@ public function index($fileId, ?string $path = null): RedirectResponse|TemplateR } } - $encryptionManager = OC::$server->getEncryptionManager(); + $encryptionManager = \OCP\Server::get(IEncryptionManager::class); if ($encryptionManager->isEnabled()) { // Update the current file to be accessible with system public shared key $owner = $file->getOwner()->getUID(); $absPath = '/' . $owner . '/' . $file->getInternalPath(); - $accessList = OC::$server->getEncryptionFilesHelper()->getAccessList($absPath); + $accessList = \OCP\Server::get(EncryptionFilesHelper::class)->getAccessList($absPath); $accessList['public'] = true; $encryptionManager->getEncryptionModule()->update($absPath, $owner, $accessList); } diff --git a/lib/Controller/DocumentTrait.php b/lib/Controller/DocumentTrait.php index 99520dc7a8..0e003dcc4e 100644 --- a/lib/Controller/DocumentTrait.php +++ b/lib/Controller/DocumentTrait.php @@ -16,7 +16,7 @@ trait DocumentTrait { private AppConfig $appConfig; private function documentTemplateResponse(Wopi $wopi, array $params): TemplateResponse { - $eventDispatcher = \OC::$server->get(IEventDispatcher::class); + $eventDispatcher = \OCP\Server::get(IEventDispatcher::class); $eventDispatcher->dispatchTyped(new RenderReferenceEvent()); $this->initialState->provideDocument($wopi, $params); $response = new TemplateResponse('richdocuments', 'documents', $params, 'base'); diff --git a/lib/Controller/FederationController.php b/lib/Controller/FederationController.php index 7397af88c3..cda10a3bf6 100644 --- a/lib/Controller/FederationController.php +++ b/lib/Controller/FederationController.php @@ -12,6 +12,7 @@ use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\OCS\OCSNotFoundException; use OCP\AppFramework\OCSController; +use OCP\Http\Client\IClientService; use OCP\IConfig; use OCP\IRequest; use OCP\IURLGenerator; @@ -27,6 +28,7 @@ public function __construct( private WopiMapper $wopiMapper, private IUserManager $userManager, private IURLGenerator $urlGenerator, + private IClientService $clientService, ) { parent::__construct($appName, $request); } @@ -62,7 +64,7 @@ public function remoteWopiToken($token): DataResponse { try { $initiatorWopi = $this->wopiMapper->getWopiForToken($token); if (empty($initiatorWopi->getEditorUid()) && !empty($initiatorWopi->getRemoteServer()) && !empty($initiatorWopi->getRemoteServerToken())) { - $client = \OC::$server->getHTTPClientService()->newClient(); + $client = $this->clientService->newClient(); $response = $client->post( rtrim($initiatorWopi->getRemoteServer(), '/') . '/ocs/v2.php/apps/richdocuments/api/v1/federation/user?format=json', [ 'body' => [ 'token' => $initiatorWopi->getRemoteServerToken() ], 'timeout' => 10 ] diff --git a/lib/Controller/OCSController.php b/lib/Controller/OCSController.php index 0d9fd422f2..4ce31cf8ba 100644 --- a/lib/Controller/OCSController.php +++ b/lib/Controller/OCSController.php @@ -23,6 +23,7 @@ use OCP\Files\Folder; use OCP\Files\IRootFolder; use OCP\Files\NotFoundException; +use OCP\Http\Client\IClientService; use OCP\IRequest; use OCP\IURLGenerator; use OCP\Share\Exceptions\ShareNotFound; @@ -37,6 +38,7 @@ public function __construct( string $appName, IRequest $request, private IRootFolder $rootFolder, + private IClientService $clientService, private $userId, private DirectMapper $directMapper, private IURLGenerator $urlGenerator, @@ -105,11 +107,11 @@ public function createPublic( $wopi = $this->tokenManager->newInitiatorToken($host, null, $shareToken, true, $this->userId); - $client = \OC::$server->getHTTPClientService()->newClient(); + $client = $this->clientService->newClient(); try { $response = $client->post(rtrim($host, '/') . '/ocs/v2.php/apps/richdocuments/api/v1/direct/share/initiator?format=json', [ 'body' => [ - 'initiatorServer' => \OC::$server->getURLGenerator()->getAbsoluteURL(''), + 'initiatorServer' => $this->urlGenerator->getAbsoluteURL(''), 'initiatorToken' => $wopi->getToken(), 'shareToken' => $shareToken, 'path' => $path, diff --git a/lib/Controller/WopiController.php b/lib/Controller/WopiController.php index c1ef8548f0..4c209744e5 100644 --- a/lib/Controller/WopiController.php +++ b/lib/Controller/WopiController.php @@ -34,8 +34,11 @@ use OCP\AppFramework\Http\StreamResponse; use OCP\AppFramework\QueryException; use OCP\Constants; +use OCP\Contacts\IManager as IContactsManager; +use OCP\Defaults; use OCP\Encryption\IManager as IEncryptionManager; use OCP\EventDispatcher\IEventDispatcher; +use OCP\Federation\ICloudIdManager; use OCP\Files\File; use OCP\Files\Folder; use OCP\Files\GenericFileException; @@ -125,7 +128,7 @@ public function checkFileInfo(string $fileId, string $access_token): JSONRespons } $isPublic = empty($wopi->getEditorUid()); - $guestUserId = 'Guest-' . \OC::$server->getSecureRandom()->generate(8); + $guestUserId = 'Guest-' . \OCP\Server::get(\OCP\Security\ISecureRandom::class)->generate(8); $user = $this->userManager->get($wopi->getEditorUid()); $userDisplayName = $user !== null && !$isPublic ? $user->getDisplayName() : $wopi->getGuestDisplayname(); $isVersion = $version !== '0'; @@ -230,7 +233,7 @@ public function checkFileInfo(string $fileId, string $access_token): JSONRespons $replacements = [ 'userId' => $wopi->getEditorUid(), 'date' => $currentDateTime->format('Y-m-d H:i:s'), - 'themingName' => \OC::$server->getThemingDefaults()->getName(), + 'themingName' => \OCP\Server::get(Defaults::class)->getName(), 'userDisplayName' => $userDisplayName, 'email' => $email, ]; @@ -277,16 +280,16 @@ public function checkFileInfo(string $fileId, string $access_token): JSONRespons private function setFederationFileInfo(Wopi $wopi, $response) { - $response['UserId'] = 'Guest-' . \OC::$server->getSecureRandom()->generate(8); + $response['UserId'] = 'Guest-' . \OCP\Server::get(\OCP\Security\ISecureRandom::class)->generate(8); if ($wopi->getTokenType() === Wopi::TOKEN_TYPE_REMOTE_USER) { $remoteUserId = $wopi->getGuestDisplayname(); - $cloudID = \OC::$server->getCloudIdManager()->resolveCloudId($remoteUserId); + $cloudID = \OCP\Server::get(ICloudIdManager::class)->resolveCloudId($remoteUserId); $response['UserId'] = $cloudID->getDisplayId(); $response['UserFriendlyName'] = $cloudID->getDisplayId(); $response['UserExtraInfo']['avatar'] = $this->urlGenerator->linkToRouteAbsolute('core.avatar.getAvatar', ['userId' => explode('@', $remoteUserId)[0], 'size' => self::WOPI_AVATAR_SIZE]); $cleanCloudId = str_replace(['http://', 'https://'], '', $cloudID->getId()); - $addressBookEntries = \OC::$server->getContactsManager()->search($cleanCloudId, ['CLOUD']); + $addressBookEntries = \OCP\Server::get(IContactsManager::class)->search($cleanCloudId, ['CLOUD']); foreach ($addressBookEntries as $entry) { if (isset($entry['CLOUD'])) { foreach ($entry['CLOUD'] as $cloudID) { @@ -348,7 +351,7 @@ public function getFile(string $fileId, string $access_token): JSONResponse|Stre $file = $this->getFileForWopiToken($wopi); \OC_User::setIncognitoMode(true); if ($version !== '0') { - $versionManager = \OC::$server->get(IVersionManager::class); + $versionManager = \OCP\Server::get(IVersionManager::class); $info = $versionManager->getVersionFile($this->userManager->get($wopi->getUserForFileAccess()), $file, $version); if ($info->getSize() === 0) { $response = new Http\Response(); @@ -362,7 +365,6 @@ public function getFile(string $fileId, string $access_token): JSONResponse|Stre $filesize = $file->getSize(); if ($this->request->getHeader('Range')) { - $partialContent = true; preg_match('/bytes=(\d+)-(\d+)?/', $this->request->getHeader('Range'), $matches); $offset = intval($matches[1] ?? 0); @@ -373,13 +375,13 @@ public function getFile(string $fileId, string $access_token): JSONResponse|Stre $fp = $file->fopen('rb'); $rangeStream = fopen('php://temp', 'w+b'); - stream_copy_to_stream($fp, $rangeStream, $length, $offset); + stream_copy_to_stream($fp, $rangeStream, (int)$length, $offset); fclose($fp); fseek($rangeStream, 0); $response = new StreamResponse($rangeStream); $response->addHeader('Accept-Ranges', 'bytes'); - $response->addHeader('Content-Length', $filesize); + $response->addHeader('Content-Length', (string)$filesize); $response->setStatus(Http::STATUS_PARTIAL_CONTENT); $response->addHeader('Content-Range', 'bytes ' . $offset . '-' . ($offset + $length) . '/' . $filesize); } else { @@ -415,7 +417,7 @@ public function getSettings(string $type, string $access_token): JSONResponse { } $isPublic = empty($wopi->getEditorUid()); - $guestUserId = 'Guest-' . \OC::$server->getSecureRandom()->generate(8); + $guestUserId = 'Guest-' . \OCP\Server::get(\OCP\Security\ISecureRandom::class)->generate(8); $userId = !$isPublic ? $wopi->getEditorUid() : $guestUserId; $userConfig = $this->settingsService->generateSettingsConfig($type, $userId); @@ -977,7 +979,7 @@ public function getTemplate(string $fileId, string $access_token): JSONResponse| */ private function isMasterKeyEnabled(): bool { try { - $util = \OC::$server->query(\OCA\Encryption\Util::class); + $util = \OCP\Server::get(\OCA\Encryption\Util::class); return $util->isMasterKeyEnabled(); } catch (QueryException) { // No encryption module enabled diff --git a/lib/Service/FederationService.php b/lib/Service/FederationService.php index aa9d303514..e37c5e102c 100644 --- a/lib/Service/FederationService.php +++ b/lib/Service/FederationService.php @@ -48,7 +48,7 @@ public function __construct( ) { $this->cache = $cacheFactory->createDistributed('richdocuments_remote/'); try { - $this->trustedServers = \OC::$server->get(\OCA\Federation\TrustedServers::class); + $this->trustedServers = \OCP\Server::get(\OCA\Federation\TrustedServers::class); } catch (NotFoundExceptionInterface|ContainerExceptionInterface|AutoloadNotAllowedException) { } } diff --git a/tests/psalm-baseline.xml b/tests/psalm-baseline.xml index 09c0c27f3f..9e0fe758a0 100644 --- a/tests/psalm-baseline.xml +++ b/tests/psalm-baseline.xml @@ -1,5 +1,5 @@ - + @@ -41,6 +41,12 @@ + + + + + + @@ -59,9 +65,16 @@ + + $replacements[$matches[1]]]]> + + + + +