diff options
author | Carl Schwan <carl@carlschwan.eu> | 2022-05-17 15:59:59 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-17 15:59:59 +0300 |
commit | 07c9bf1adff8a2d10ff774da32c2ddd54fd01923 (patch) | |
tree | 97f83709746d15a63f1ada29607f7c972378d183 | |
parent | a4f23b17a94078addec014e07229121ae8dac8bb (diff) | |
parent | f7be76125f885d66caac4a8d6697e121dce52708 (diff) |
Merge pull request #31943 from nextcloud/dav-cleanup
Cleanup dav
40 files changed, 222 insertions, 687 deletions
diff --git a/apps/dav/appinfo/v1/caldav.php b/apps/dav/appinfo/v1/caldav.php index 9036a30f95c..6a496a992e6 100644 --- a/apps/dav/appinfo/v1/caldav.php +++ b/apps/dav/appinfo/v1/caldav.php @@ -100,7 +100,7 @@ $server->setBaseUri($baseuri); // Add plugins $server->addPlugin(new MaintenancePlugin(\OC::$server->getConfig(), \OC::$server->getL10N('dav'))); -$server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend, 'ownCloud')); +$server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend)); $server->addPlugin(new \Sabre\CalDAV\Plugin()); $server->addPlugin(new LegacyDAVACL()); diff --git a/apps/dav/appinfo/v1/publicwebdav.php b/apps/dav/appinfo/v1/publicwebdav.php index 43b472c107b..389461f94b1 100644 --- a/apps/dav/appinfo/v1/publicwebdav.php +++ b/apps/dav/appinfo/v1/publicwebdav.php @@ -29,6 +29,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/> * */ + +use Psr\Log\LoggerInterface; + // load needed apps $RUNTIME_APPTYPES = ['filesystem', 'authentication', 'logging']; @@ -48,7 +51,7 @@ $authPlugin = new \Sabre\DAV\Auth\Plugin($authBackend); $serverFactory = new OCA\DAV\Connector\Sabre\ServerFactory( \OC::$server->getConfig(), - \OC::$server->get(Psr\Log\LoggerInterface::class), + \OC::$server->get(LoggerInterface::class), \OC::$server->getDatabaseConnection(), \OC::$server->getUserSession(), \OC::$server->getMountManager(), diff --git a/apps/dav/appinfo/v1/webdav.php b/apps/dav/appinfo/v1/webdav.php index e39a6b48d57..8dbe846f3ff 100644 --- a/apps/dav/appinfo/v1/webdav.php +++ b/apps/dav/appinfo/v1/webdav.php @@ -28,6 +28,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/> * */ +use Psr\Log\LoggerInterface; + // no php execution timeout for webdav if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) { @set_time_limit(0); @@ -39,7 +41,7 @@ ignore_user_abort(true); $serverFactory = new \OCA\DAV\Connector\Sabre\ServerFactory( \OC::$server->getConfig(), - \OC::$server->get(Psr\Log\LoggerInterface::class), + \OC::$server->get(LoggerInterface::class), \OC::$server->getDatabaseConnection(), \OC::$server->getUserSession(), \OC::$server->getMountManager(), diff --git a/apps/dav/composer/composer/autoload_classmap.php b/apps/dav/composer/composer/autoload_classmap.php index 5f7815a9bfc..0583b94a86c 100644 --- a/apps/dav/composer/composer/autoload_classmap.php +++ b/apps/dav/composer/composer/autoload_classmap.php @@ -139,7 +139,6 @@ return array( 'OCA\\DAV\\Connector\\LegacyDAVACL' => $baseDir . '/../lib/Connector/LegacyDAVACL.php', 'OCA\\DAV\\Connector\\PublicAuth' => $baseDir . '/../lib/Connector/PublicAuth.php', 'OCA\\DAV\\Connector\\Sabre\\AnonymousOptionsPlugin' => $baseDir . '/../lib/Connector/Sabre/AnonymousOptionsPlugin.php', - 'OCA\\DAV\\Connector\\Sabre\\AppEnabledPlugin' => $baseDir . '/../lib/Connector/Sabre/AppEnabledPlugin.php', 'OCA\\DAV\\Connector\\Sabre\\Auth' => $baseDir . '/../lib/Connector/Sabre/Auth.php', 'OCA\\DAV\\Connector\\Sabre\\BearerAuth' => $baseDir . '/../lib/Connector/Sabre/BearerAuth.php', 'OCA\\DAV\\Connector\\Sabre\\BlockLegacyClientPlugin' => $baseDir . '/../lib/Connector/Sabre/BlockLegacyClientPlugin.php', diff --git a/apps/dav/composer/composer/autoload_static.php b/apps/dav/composer/composer/autoload_static.php index 1f57b8b043a..301be38246a 100644 --- a/apps/dav/composer/composer/autoload_static.php +++ b/apps/dav/composer/composer/autoload_static.php @@ -154,7 +154,6 @@ class ComposerStaticInitDAV 'OCA\\DAV\\Connector\\LegacyDAVACL' => __DIR__ . '/..' . '/../lib/Connector/LegacyDAVACL.php', 'OCA\\DAV\\Connector\\PublicAuth' => __DIR__ . '/..' . '/../lib/Connector/PublicAuth.php', 'OCA\\DAV\\Connector\\Sabre\\AnonymousOptionsPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/AnonymousOptionsPlugin.php', - 'OCA\\DAV\\Connector\\Sabre\\AppEnabledPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/AppEnabledPlugin.php', 'OCA\\DAV\\Connector\\Sabre\\Auth' => __DIR__ . '/..' . '/../lib/Connector/Sabre/Auth.php', 'OCA\\DAV\\Connector\\Sabre\\BearerAuth' => __DIR__ . '/..' . '/../lib/Connector/Sabre/BearerAuth.php', 'OCA\\DAV\\Connector\\Sabre\\BlockLegacyClientPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/BlockLegacyClientPlugin.php', diff --git a/apps/dav/lib/BackgroundJob/BuildReminderIndexBackgroundJob.php b/apps/dav/lib/BackgroundJob/BuildReminderIndexBackgroundJob.php index 7f1e78248d3..2ae47ee89ea 100644 --- a/apps/dav/lib/BackgroundJob/BuildReminderIndexBackgroundJob.php +++ b/apps/dav/lib/BackgroundJob/BuildReminderIndexBackgroundJob.php @@ -71,12 +71,9 @@ class BuildReminderIndexBackgroundJob extends QueuedJob { $this->timeFactory = $timeFactory; } - /** - * @param $arguments - */ - public function run($arguments) { - $offset = (int) $arguments['offset']; - $stopAt = (int) $arguments['stopAt']; + public function run($argument) { + $offset = (int) $argument['offset']; + $stopAt = (int) $argument['stopAt']; $this->logger->info('Building calendar reminder index (' . $offset .'/' . $stopAt . ')'); diff --git a/apps/dav/lib/BackgroundJob/EventReminderJob.php b/apps/dav/lib/BackgroundJob/EventReminderJob.php index ab7dadd8c0b..55cecf5519d 100644 --- a/apps/dav/lib/BackgroundJob/EventReminderJob.php +++ b/apps/dav/lib/BackgroundJob/EventReminderJob.php @@ -52,12 +52,11 @@ class EventReminderJob extends TimedJob { } /** - * @param $arg * @throws \OCA\DAV\CalDAV\Reminder\NotificationProvider\ProviderNotAvailableException * @throws \OCA\DAV\CalDAV\Reminder\NotificationTypeDoesNotExistException * @throws \OC\User\NoUserException */ - public function run($arg):void { + public function run($argument):void { if ($this->config->getAppValue('dav', 'sendEventReminders', 'yes') !== 'yes') { return; } diff --git a/apps/dav/lib/BackgroundJob/GenerateBirthdayCalendarBackgroundJob.php b/apps/dav/lib/BackgroundJob/GenerateBirthdayCalendarBackgroundJob.php index a338a172d66..8e72e8f076c 100644 --- a/apps/dav/lib/BackgroundJob/GenerateBirthdayCalendarBackgroundJob.php +++ b/apps/dav/lib/BackgroundJob/GenerateBirthdayCalendarBackgroundJob.php @@ -47,12 +47,9 @@ class GenerateBirthdayCalendarBackgroundJob extends QueuedJob { $this->config = $config; } - /** - * @param array $arguments - */ - public function run($arguments) { - $userId = $arguments['userId']; - $purgeBeforeGenerating = $arguments['purgeBeforeGenerating'] ?? false; + public function run($argument) { + $userId = $argument['userId']; + $purgeBeforeGenerating = $argument['purgeBeforeGenerating'] ?? false; // make sure admin didn't change his mind $isGloballyEnabled = $this->config->getAppValue('dav', 'generateBirthdayCalendar', 'yes'); diff --git a/apps/dav/lib/BackgroundJob/UploadCleanup.php b/apps/dav/lib/BackgroundJob/UploadCleanup.php index 76906becb54..f612f58cd7c 100644 --- a/apps/dav/lib/BackgroundJob/UploadCleanup.php +++ b/apps/dav/lib/BackgroundJob/UploadCleanup.php @@ -32,18 +32,15 @@ use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJob; use OCP\BackgroundJob\IJobList; use OCP\BackgroundJob\TimedJob; +use OCP\Files\Node; use OCP\Files\File; use OCP\Files\Folder; use OCP\Files\IRootFolder; use OCP\Files\NotFoundException; class UploadCleanup extends TimedJob { - - /** @var IRootFolder */ - private $rootFolder; - - /** @var IJobList */ - private $jobList; + private IRootFolder $rootFolder; + private IJobList $jobList; public function __construct(ITimeFactory $time, IRootFolder $rootFolder, IJobList $jobList) { parent::__construct($time); @@ -71,6 +68,7 @@ class UploadCleanup extends TimedJob { return; } + /** @var File[] $files */ $files = $uploadFolder->getDirectoryListing(); // Remove if all files have an mtime of more than a day diff --git a/apps/dav/lib/CalDAV/BirthdayService.php b/apps/dav/lib/CalDAV/BirthdayService.php index bdcf0796283..1030768e26f 100644 --- a/apps/dav/lib/CalDAV/BirthdayService.php +++ b/apps/dav/lib/CalDAV/BirthdayService.php @@ -53,34 +53,15 @@ use Sabre\VObject\Reader; */ class BirthdayService { public const BIRTHDAY_CALENDAR_URI = 'contact_birthdays'; - - /** @var GroupPrincipalBackend */ - private $principalBackend; - - /** @var CalDavBackend */ - private $calDavBackEnd; - - /** @var CardDavBackend */ - private $cardDavBackEnd; - - /** @var IConfig */ - private $config; - - /** @var IDBConnection */ - private $dbConnection; - - /** @var IL10N */ - private $l10n; + private GroupPrincipalBackend $principalBackend; + private CalDavBackend $calDavBackEnd; + private CardDavBackend $cardDavBackEnd; + private IConfig $config; + private IDBConnection $dbConnection; + private IL10N $l10n; /** * BirthdayService constructor. - * - * @param CalDavBackend $calDavBackEnd - * @param CardDavBackend $cardDavBackEnd - * @param GroupPrincipalBackend $principalBackend - * @param IConfig $config - * @param IDBConnection $dbConnection - * @param IL10N $l10n */ public function __construct(CalDavBackend $calDavBackEnd, CardDavBackend $cardDavBackEnd, @@ -96,14 +77,9 @@ class BirthdayService { $this->l10n = $l10n; } - /** - * @param int $addressBookId - * @param string $cardUri - * @param string $cardData - */ public function onCardChanged(int $addressBookId, string $cardUri, - string $cardData) { + string $cardData): void { if (!$this->isGloballyEnabled()) { return; } @@ -129,12 +105,8 @@ class BirthdayService { } } - /** - * @param int $addressBookId - * @param string $cardUri - */ public function onCardDeleted(int $addressBookId, - string $cardUri) { + string $cardUri): void { if (!$this->isGloballyEnabled()) { return; } @@ -156,11 +128,9 @@ class BirthdayService { } /** - * @param string $principal - * @return array|null * @throws \Sabre\DAV\Exception\BadRequest */ - public function ensureCalendarExists(string $principal):?array { + public function ensureCalendarExists(string $principal): ?array { $calendar = $this->calDavBackEnd->getCalendarByUri($principal, self::BIRTHDAY_CALENDAR_URI); if (!is_null($calendar)) { return $calendar; diff --git a/apps/dav/lib/CalDAV/CachedSubscription.php b/apps/dav/lib/CalDAV/CachedSubscription.php index 18e61450ee9..f42b5f97f5d 100644 --- a/apps/dav/lib/CalDAV/CachedSubscription.php +++ b/apps/dav/lib/CalDAV/CachedSubscription.php @@ -31,6 +31,7 @@ use OCA\DAV\Exception\UnsupportedLimitOnInitialSyncException; use Sabre\CalDAV\Backend\BackendInterface; use Sabre\DAV\Exception\MethodNotAllowed; use Sabre\DAV\Exception\NotFound; +use Sabre\DAV\INode; use Sabre\DAV\PropPatch; /** @@ -51,7 +52,7 @@ class CachedSubscription extends \Sabre\CalDAV\Calendar { /** * @return array */ - public function getACL():array { + public function getACL() { return [ [ 'privilege' => '{DAV:}read', @@ -79,7 +80,7 @@ class CachedSubscription extends \Sabre\CalDAV\Calendar { /** * @return array */ - public function getChildACL():array { + public function getChildACL() { return [ [ 'privilege' => '{DAV:}read', @@ -139,9 +140,9 @@ class CachedSubscription extends \Sabre\CalDAV\Calendar { } /** - * @return array + * @return INode[] */ - public function getChildren():array { + public function getChildren(): array { $objs = $this->caldavBackend->getCalendarObjects($this->calendarInfo['id'], CalDavBackend::CALENDAR_TYPE_SUBSCRIPTION); $children = []; @@ -169,8 +170,8 @@ class CachedSubscription extends \Sabre\CalDAV\Calendar { /** * @param string $name - * @param null $calendarData - * @return null|string|void + * @param null|resource|string $calendarData + * @return null|string * @throws MethodNotAllowed */ public function createFile($name, $calendarData = null) { diff --git a/apps/dav/lib/CalDAV/CachedSubscriptionObject.php b/apps/dav/lib/CalDAV/CachedSubscriptionObject.php index db8c9fa8e80..3c1373763e1 100644 --- a/apps/dav/lib/CalDAV/CachedSubscriptionObject.php +++ b/apps/dav/lib/CalDAV/CachedSubscriptionObject.php @@ -50,7 +50,7 @@ class CachedSubscriptionObject extends \Sabre\CalDAV\CalendarObject { /** * @param resource|string $calendarData - * @return string|void + * @return string * @throws MethodNotAllowed */ public function put($calendarData) { diff --git a/apps/dav/lib/CalDAV/ICSExportPlugin/ICSExportPlugin.php b/apps/dav/lib/CalDAV/ICSExportPlugin/ICSExportPlugin.php index 0c76e4f5e10..627959c90f6 100644 --- a/apps/dav/lib/CalDAV/ICSExportPlugin/ICSExportPlugin.php +++ b/apps/dav/lib/CalDAV/ICSExportPlugin/ICSExportPlugin.php @@ -35,10 +35,7 @@ use Sabre\VObject\Property\ICalendar\Duration; * @package OCA\DAV\CalDAV\ICSExportPlugin */ class ICSExportPlugin extends \Sabre\CalDAV\ICSExportPlugin { - - /** @var IConfig */ - private $config; - + private IConfig $config; private LoggerInterface $logger; /** @var string */ diff --git a/apps/dav/lib/CalDAV/InvitationResponse/InvitationResponseServer.php b/apps/dav/lib/CalDAV/InvitationResponse/InvitationResponseServer.php index c8da92c8277..a85892443cc 100644 --- a/apps/dav/lib/CalDAV/InvitationResponse/InvitationResponseServer.php +++ b/apps/dav/lib/CalDAV/InvitationResponse/InvitationResponseServer.php @@ -100,7 +100,7 @@ class InvitationResponseServer { )); // wait with registering these until auth is handled and the filesystem is setup - $this->server->on('beforeMethod:*', function () use ($root) { + $this->server->on('beforeMethod:*', function () use ($root): void { // register plugins from apps $pluginManager = new PluginManager( \OC::$server, diff --git a/apps/dav/lib/CalDAV/Publishing/PublishPlugin.php b/apps/dav/lib/CalDAV/Publishing/PublishPlugin.php index 97e942f9da2..aabf78da1aa 100644 --- a/apps/dav/lib/CalDAV/Publishing/PublishPlugin.php +++ b/apps/dav/lib/CalDAV/Publishing/PublishPlugin.php @@ -134,8 +134,8 @@ class PublishPlugin extends ServerPlugin { $canPublish = (!$node->isSubscription() && $node->canWrite()); if ($this->config->getAppValue('dav', 'limitAddressBookAndCalendarSharingToOwner', 'no') === 'yes') { - $canShare &= ($node->getOwner() === $node->getPrincipalURI()); - $canPublish &= ($node->getOwner() === $node->getPrincipalURI()); + $canShare = $canShare && ($node->getOwner() === $node->getPrincipalURI()); + $canPublish = $canPublish && ($node->getOwner() === $node->getPrincipalURI()); } return new AllowedSharingModes($canShare, $canPublish); diff --git a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php index 7e0020b5f55..c147b47860e 100644 --- a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php +++ b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php @@ -38,6 +38,7 @@ use OCP\IURLGenerator; use OCP\L10N\IFactory as L10NFactory; use OCP\Mail\IEMailTemplate; use OCP\Mail\IMailer; +use OCP\IUser; use Psr\Log\LoggerInterface; use Sabre\VObject; use Sabre\VObject\Component\VEvent; @@ -54,8 +55,7 @@ class EmailProvider extends AbstractProvider { /** @var string */ public const NOTIFICATION_TYPE = 'EMAIL'; - /** @var IMailer */ - private $mailer; + private IMailer $mailer; public function __construct(IConfig $config, IMailer $mailer, @@ -168,10 +168,6 @@ class EmailProvider extends AbstractProvider { } } - /** - * @param string $path - * @return string - */ private function getAbsoluteImagePath(string $path):string { return $this->urlGenerator->getAbsoluteURL( $this->urlGenerator->imagePath('core', $path) @@ -207,9 +203,8 @@ class EmailProvider extends AbstractProvider { } /** - * @param array $emails - * @param string $defaultLanguage - * @return array + * @param array<string, array{LANG?: string}> $emails + * @return array<string, string[]> */ private function sortEMailAddressesByLanguage(array $emails, string $defaultLanguage):array { @@ -234,7 +229,7 @@ class EmailProvider extends AbstractProvider { /** * @param VEvent $vevent - * @return array + * @return array<string, array{LANG?: string}> */ private function getAllEMailAddressesFromEvent(VEvent $vevent):array { $emailAddresses = []; @@ -277,7 +272,7 @@ class EmailProvider extends AbstractProvider { $properties = []; $langProp = $attendee->offsetGet('LANG'); - if ($langProp instanceof VObject\Parameter) { + if ($langProp instanceof VObject\Parameter && $langProp->getValue() !== null) { $properties['LANG'] = $langProp->getValue(); } @@ -287,18 +282,15 @@ class EmailProvider extends AbstractProvider { } if (isset($vevent->ORGANIZER) && $this->hasAttendeeMailURI($vevent->ORGANIZER)) { - $emailAddresses[$this->getEMailAddressOfAttendee($vevent->ORGANIZER)] = []; + $organizerEmailAddress = $this->getEMailAddressOfAttendee($vevent->ORGANIZER); + if ($organizerEmailAddress !== null) { + $emailAddresses[$organizerEmailAddress] = []; + } } return $emailAddresses; } - - - /** - * @param VObject\Property $attendee - * @return string - */ private function getCUTypeOfAttendee(VObject\Property $attendee):string { $cuType = $attendee->offsetGet('CUTYPE'); if ($cuType instanceof VObject\Parameter) { @@ -308,10 +300,6 @@ class EmailProvider extends AbstractProvider { return 'INDIVIDUAL'; } - /** - * @param VObject\Property $attendee - * @return string - */ private function getPartstatOfAttendee(VObject\Property $attendee):string { $partstat = $attendee->offsetGet('PARTSTAT'); if ($partstat instanceof VObject\Parameter) { @@ -321,19 +309,11 @@ class EmailProvider extends AbstractProvider { return 'NEEDS-ACTION'; } - /** - * @param VObject\Property $attendee - * @return bool - */ - private function hasAttendeeMailURI(VObject\Property $attendee):bool { + private function hasAttendeeMailURI(VObject\Property $attendee): bool { return stripos($attendee->getValue(), 'mailto:') === 0; } - /** - * @param VObject\Property $attendee - * @return string|null - */ - private function getEMailAddressOfAttendee(VObject\Property $attendee):?string { + private function getEMailAddressOfAttendee(VObject\Property $attendee): ?string { if (!$this->hasAttendeeMailURI($attendee)) { return null; } @@ -342,8 +322,8 @@ class EmailProvider extends AbstractProvider { } /** - * @param array $users - * @return array + * @param IUser[] $users + * @return array<string, array{LANG?: string}> */ private function getEMailAddressesOfAllUsersWithWriteAccessToCalendar(array $users):array { $emailAddresses = []; @@ -366,12 +346,9 @@ class EmailProvider extends AbstractProvider { } /** - * @param IL10N $l10n - * @param VEvent $vevent - * @return string * @throws \Exception */ - private function generateDateString(IL10N $l10n, VEvent $vevent):string { + private function generateDateString(IL10N $l10n, VEvent $vevent): string { $isAllDay = $vevent->DTSTART instanceof Property\ICalendar\Date; /** @var Property\ICalendar\Date | Property\ICalendar\DateTime $dtstart */ @@ -437,57 +414,27 @@ class EmailProvider extends AbstractProvider { . ' (' . $startTimezone . ')'; } - /** - * @param DateTime $dtStart - * @param DateTime $dtEnd - * @return bool - */ private function isDayEqual(DateTime $dtStart, DateTime $dtEnd):bool { return $dtStart->format('Y-m-d') === $dtEnd->format('Y-m-d'); } - /** - * @param IL10N $l10n - * @param DateTime $dt - * @return string - */ private function getWeekDayName(IL10N $l10n, DateTime $dt):string { - return $l10n->l('weekdayName', $dt, ['width' => 'abbreviated']); + return (string)$l10n->l('weekdayName', $dt, ['width' => 'abbreviated']); } - /** - * @param IL10N $l10n - * @param DateTime $dt - * @return string - */ private function getDateString(IL10N $l10n, DateTime $dt):string { - return $l10n->l('date', $dt, ['width' => 'medium']); + return (string)$l10n->l('date', $dt, ['width' => 'medium']); } - /** - * @param IL10N $l10n - * @param DateTime $dt - * @return string - */ private function getDateTimeString(IL10N $l10n, DateTime $dt):string { - return $l10n->l('datetime', $dt, ['width' => 'medium|short']); + return (string)$l10n->l('datetime', $dt, ['width' => 'medium|short']); } - /** - * @param IL10N $l10n - * @param DateTime $dt - * @return string - */ private function getTimeString(IL10N $l10n, DateTime $dt):string { - return $l10n->l('time', $dt, ['width' => 'short']); + return (string)$l10n->l('time', $dt, ['width' => 'short']); } - /** - * @param VEvent $vevent - * @param IL10N $l10n - * @return string - */ private function getTitleFromVEvent(VEvent $vevent, IL10N $l10n):string { if (isset($vevent->SUMMARY)) { return (string)$vevent->SUMMARY; diff --git a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php index 298297fdc38..cb873020c38 100644 --- a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php +++ b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php @@ -109,8 +109,6 @@ class PushProvider extends AbstractProvider { } /** - * @var VEvent $vevent - * @return array * @throws \Exception */ protected function extractEventDetails(VEvent $vevent):array { diff --git a/apps/dav/lib/CalDAV/Reminder/Notifier.php b/apps/dav/lib/CalDAV/Reminder/Notifier.php index 8535c55054a..c658ef2ff01 100644 --- a/apps/dav/lib/CalDAV/Reminder/Notifier.php +++ b/apps/dav/lib/CalDAV/Reminder/Notifier.php @@ -298,7 +298,7 @@ class Notifier implements INotifier { * @return string */ private function getWeekDayName(DateTime $dt):string { - return $this->l10n->l('weekdayName', $dt, ['width' => 'abbreviated']); + return (string)$this->l10n->l('weekdayName', $dt, ['width' => 'abbreviated']); } /** @@ -306,7 +306,7 @@ class Notifier implements INotifier { * @return string */ private function getDateString(DateTime $dt):string { - return $this->l10n->l('date', $dt, ['width' => 'medium']); + return (string)$this->l10n->l('date', $dt, ['width' => 'medium']); } /** @@ -314,7 +314,7 @@ class Notifier implements INotifier { * @return string */ private function getDateTimeString(DateTime $dt):string { - return $this->l10n->l('datetime', $dt, ['width' => 'medium|short']); + return (string)$this->l10n->l('datetime', $dt, ['width' => 'medium|short']); } /** @@ -322,6 +322,6 @@ class Notifier implements INotifier { * @return string */ private function getTimeString(DateTime $dt):string { - return $this->l10n->l('time', $dt, ['width' => 'short']); + return (string)$this->l10n->l('time', $dt, ['width' => 'short']); } } diff --git a/apps/dav/lib/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php index f5ed9a548d1..864f3da9367 100644 --- a/apps/dav/lib/CardDAV/CardDavBackend.php +++ b/apps/dav/lib/CardDAV/CardDavBackend.php @@ -291,16 +291,15 @@ class CardDavBackend implements BackendInterface, SyncSupport { /** * @param int $addressBookId */ - public function getAddressBookById($addressBookId) { + public function getAddressBookById(int $addressBookId): ?array { $query = $this->db->getQueryBuilder(); $result = $query->select(['id', 'uri', 'displayname', 'principaluri', 'description', 'synctoken']) ->from('addressbooks') - ->where($query->expr()->eq('id', $query->createNamedParameter($addressBookId))) - ->execute(); - + ->where($query->expr()->eq('id', $query->createNamedParameter($addressBookId, IQueryBuilder::PARAM_INT))) + ->executeQuery(); $row = $result->fetch(); $result->closeCursor(); - if ($row === false) { + if (!$row) { return null; } @@ -457,7 +456,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { $addressBookId = $query->getLastInsertId(); $addressBookRow = $this->getAddressBookById($addressBookId); - $this->dispatcher->dispatchTyped(new AddressBookCreatedEvent((int)$addressBookId, $addressBookRow)); + $this->dispatcher->dispatchTyped(new AddressBookCreatedEvent($addressBookId, $addressBookRow)); return $addressBookId; } @@ -495,7 +494,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { ->execute(); if ($addressBookData) { - $this->dispatcher->dispatchTyped(new AddressBookDeletedEvent((int) $addressBookId, $addressBookData, $shares)); + $this->dispatcher->dispatchTyped(new AddressBookDeletedEvent($addressBookId, $addressBookData, $shares)); } } @@ -515,14 +514,14 @@ class CardDavBackend implements BackendInterface, SyncSupport { * calculating them. If they are specified, you can also ommit carddata. * This may speed up certain requests, especially with large cards. * - * @param mixed $addressBookId + * @param mixed $addressbookId * @return array */ - public function getCards($addressBookId) { + public function getCards($addressbookId) { $query = $this->db->getQueryBuilder(); $query->select(['id', 'uri', 'lastmodified', 'etag', 'size', 'carddata', 'uid']) ->from($this->dbCardsTable) - ->where($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId))); + ->where($query->expr()->eq('addressbookid', $query->createNamedParameter($addressbookId))); $cards = []; @@ -588,7 +587,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { * If the backend supports this, it may allow for some speed-ups. * * @param mixed $addressBookId - * @param string[] $uris + * @param array $uris * @return array */ public function getMultipleCards($addressBookId, array $uris) { @@ -692,7 +691,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { $addressBookData = $this->getAddressBookById($addressBookId); $shares = $this->getShares($addressBookId); $objectRow = $this->getCard($addressBookId, $cardUri); - $this->dispatcher->dispatchTyped(new CardCreatedEvent((int)$addressBookId, $addressBookData, $shares, $objectRow)); + $this->dispatcher->dispatchTyped(new CardCreatedEvent($addressBookId, $addressBookData, $shares, $objectRow)); $this->legacyDispatcher->dispatch('\OCA\DAV\CardDAV\CardDavBackend::createCard', new GenericEvent(null, [ 'addressBookId' => $addressBookId, @@ -756,7 +755,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { $addressBookData = $this->getAddressBookById($addressBookId); $shares = $this->getShares($addressBookId); $objectRow = $this->getCard($addressBookId, $cardUri); - $this->dispatcher->dispatchTyped(new CardUpdatedEvent((int)$addressBookId, $addressBookData, $shares, $objectRow)); + $this->dispatcher->dispatchTyped(new CardUpdatedEvent($addressBookId, $addressBookData, $shares, $objectRow)); $this->legacyDispatcher->dispatch('\OCA\DAV\CardDAV\CardDavBackend::updateCard', new GenericEvent(null, [ 'addressBookId' => $addressBookId, @@ -787,13 +786,13 @@ class CardDavBackend implements BackendInterface, SyncSupport { $ret = $query->delete($this->dbCardsTable) ->where($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId))) ->andWhere($query->expr()->eq('uri', $query->createNamedParameter($cardUri))) - ->execute(); + ->executeStatement(); $this->addChange($addressBookId, $cardUri, 3); if ($ret === 1) { if ($cardId !== null) { - $this->dispatcher->dispatchTyped(new CardDeletedEvent((int)$addressBookId, $addressBookData, $shares, $objectRow)); + $this->dispatcher->dispatchTyped(new CardDeletedEvent($addressBookId, $addressBookData, $shares, $objectRow)); $this->legacyDispatcher->dispatch('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', new GenericEvent(null, [ 'addressBookId' => $addressBookId, @@ -871,12 +870,12 @@ class CardDavBackend implements BackendInterface, SyncSupport { ->where( $qb->expr()->eq('id', $qb->createNamedParameter($addressBookId)) ); - $stmt = $qb->execute(); + $stmt = $qb->executeQuery(); $currentToken = $stmt->fetchOne(); $stmt->closeCursor(); if (is_null($currentToken)) { - return null; + return []; } $result = [ @@ -903,7 +902,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { } // Fetching all changes - $stmt = $qb->execute(); + $stmt = $qb->executeQuery(); $changes = []; @@ -935,7 +934,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { $qb->expr()->eq('addressbookid', $qb->createNamedParameter($addressBookId)) ); // No synctoken supplied, this is the initial sync. - $stmt = $qb->execute(); + $stmt = $qb->executeQuery(); $result['added'] = $stmt->fetchAll(\PDO::FETCH_COLUMN); $stmt->closeCursor(); } diff --git a/apps/dav/lib/CardDAV/PhotoCache.php b/apps/dav/lib/CardDAV/PhotoCache.php index 66391b268a6..777a0b0e169 100644 --- a/apps/dav/lib/CardDAV/PhotoCache.php +++ b/apps/dav/lib/CardDAV/PhotoCache.php @@ -34,12 +34,12 @@ use OCP\Files\NotFoundException; use OCP\Files\NotPermittedException; use OCP\Files\SimpleFS\ISimpleFile; use OCP\Files\SimpleFS\ISimpleFolder; -use Psr\Log\LoggerInterface; use Sabre\CardDAV\Card; use Sabre\VObject\Document; use Sabre\VObject\Parameter; use Sabre\VObject\Property\Binary; use Sabre\VObject\Reader; +use Psr\Log\LoggerInterface; class PhotoCache { @@ -51,9 +51,7 @@ class PhotoCache { 'image/vnd.microsoft.icon' => 'ico', ]; - /** @var IAppData */ - protected $appData; - + protected IAppData $appData; protected LoggerInterface $logger; /** @@ -65,15 +63,9 @@ class PhotoCache { } /** - * @param int $addressBookId - * @param string $cardUri - * @param int $size - * @param Card $card - * - * @return ISimpleFile * @throws NotFoundException */ - public function get($addressBookId, $cardUri, $size, Card $card) { + public function get(int $addressBookId, string $cardUri, int $size, Card $card): ISimpleFile { $folder = $this->getFolder($addressBookId, $cardUri); if ($this->isEmpty($folder)) { @@ -91,17 +83,11 @@ class PhotoCache { return $this->getFile($folder, $size); } - /** - * @param ISimpleFolder $folder - * @return bool - */ - private function isEmpty(ISimpleFolder $folder) { + private function isEmpty(ISimpleFolder $folder): bool { return $folder->getDirectoryListing() === []; } /** - * @param ISimpleFolder $folder - * @param Card $card * @throws NotPermittedException */ private function init(ISimpleFolder $folder, Card $card): void { @@ -124,11 +110,14 @@ class PhotoCache { $file->putContent($data['body']); } - private function hasPhoto(ISimpleFolder $folder) { + private function hasPhoto(ISimpleFolder $folder): bool { return !$folder->fileExists('nophoto'); } - private function getFile(ISimpleFolder $folder, $size) { + /** + * @param float|-1 $size + */ + private function getFile(ISimpleFolder $folder, $size): ISimpleFile { $ext = $this->getExtension($folder); if ($size === -1) { @@ -189,8 +178,6 @@ class PhotoCache { /** * Get the extension of the avatar. If there is no avatar throw Exception * - * @param ISimpleFolder $folder - * @return string * @throws NotFoundException */ private function getExtension(ISimpleFolder $folder): string { @@ -205,7 +192,7 @@ class PhotoCache { /** * @param Card $node - * @return bool|array{body: string, Content-Type: string} + * @return false|array{body: string, Content-Type: string} */ private function getPhoto(Card $node) { try { @@ -220,8 +207,7 @@ class PhotoCache { } /** - * @param Document $vObject - * @return bool|array{body: string, Content-Type: string} + * @return false|array{body: string, Content-Type: string} */ public function getPhotoFromVObject(Document $vObject) { try { @@ -265,11 +251,7 @@ class PhotoCache { return false; } - /** - * @param string $cardData - * @return \Sabre\VObject\Document - */ - private function readCard($cardData) { + private function readCard(string $cardData): Document { return Reader::read($cardData); } diff --git a/apps/dav/lib/CardDAV/SyncService.php b/apps/dav/lib/CardDAV/SyncService.php index e1ac3af5cc9..169dbc79e0f 100644 --- a/apps/dav/lib/CardDAV/SyncService.php +++ b/apps/dav/lib/CardDAV/SyncService.php @@ -86,7 +86,7 @@ class SyncService { */ public function syncRemoteAddressBook($url, $userName, $addressBookUrl, $sharedSecret, $syncToken, $targetBookId, $targetPrincipal, $targetProperties) { // 1. create addressbook - $book = $this->ensureSystemAddressBookExists($targetPrincipal, $targetBookId, $targetProperties); + $book = $this->ensureSystemAddressBookExists($targetPrincipal, (string)$targetBookId, $targetProperties); $addressBookId = $book['id']; // 2. query changes diff --git a/apps/dav/lib/Connector/PublicAuth.php b/apps/dav/lib/Connector/PublicAuth.php index 426cbf871d7..cc51a249e75 100644 --- a/apps/dav/lib/Connector/PublicAuth.php +++ b/apps/dav/lib/Connector/PublicAuth.php @@ -44,28 +44,12 @@ use Sabre\DAV\Auth\Backend\AbstractBasic; */ class PublicAuth extends AbstractBasic { private const BRUTEFORCE_ACTION = 'public_webdav_auth'; + private ?IShare $share = null; + private IManager $shareManager; + private ISession $session; + private IRequest $request; + private Throttler $throttler; - /** @var \OCP\Share\IShare */ - private $share; - - /** @var IManager */ - private $shareManager; - - /** @var ISession */ - private $session; - - /** @var IRequest */ - private $request; - - /** @var Throttler */ - private $throttler; - - /** - * @param IRequest $request - * @param IManager $shareManager - * @param ISession $session - * @param Throttler $throttler - */ public function __construct(IRequest $request, IManager $shareManager, ISession $session, @@ -88,7 +72,6 @@ class PublicAuth extends AbstractBasic { * * @param string $username * @param string $password - * * @return bool * @throws \Sabre\DAV\Exception\NotAuthenticated */ @@ -133,15 +116,12 @@ class PublicAuth extends AbstractBasic { $this->throttler->registerAttempt(self::BRUTEFORCE_ACTION, $this->request->getRemoteAddress()); return false; } - } else { - return true; } + return true; } - /** - * @return \OCP\Share\IShare - */ - public function getShare() { + public function getShare(): IShare { + assert($this->share !== null); return $this->share; } } diff --git a/apps/dav/lib/Connector/Sabre/AppEnabledPlugin.php b/apps/dav/lib/Connector/Sabre/AppEnabledPlugin.php deleted file mode 100644 index 244e5de0683..00000000000 --- a/apps/dav/lib/Connector/Sabre/AppEnabledPlugin.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Georg Ehrke <oc.list@georgehrke.com> - * @author Robin Appelman <robin@icewind.nl> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ -namespace OCA\DAV\Connector\Sabre; - -use OCP\App\IAppManager; -use Sabre\DAV\Exception\Forbidden; -use Sabre\DAV\ServerPlugin; - -/** - * Plugin to check if an app is enabled for the current user - */ -class AppEnabledPlugin extends ServerPlugin { - - /** - * Reference to main server object - * - * @var \Sabre\DAV\Server - */ - private $server; - - /** - * @var string - */ - private $app; - - /** - * @var \OCP\App\IAppManager - */ - private $appManager; - - /** - * @param string $app - * @param \OCP\App\IAppManager $appManager - */ - public function __construct($app, IAppManager $appManager) { - $this->app = $app; - $this->appManager = $appManager; - } - - /** - * This initializes the plugin. - * - * This function is called by \Sabre\DAV\Server, after - * addPlugin is called. - * - * This method should set up the required event subscriptions. - * - * @param \Sabre\DAV\Server $server - * @return void - */ - public function initialize(\Sabre\DAV\Server $server) { - $this->server = $server; - $this->server->on('beforeMethod:*', [$this, 'checkAppEnabled'], 30); - } - - /** - * This method is called before any HTTP after auth and checks if the user has access to the app - * - * @throws \Sabre\DAV\Exception\Forbidden - * @return bool - */ - public function checkAppEnabled() { - if (!$this->appManager->isEnabledForUser($this->app)) { - throw new Forbidden(); - } - } -} diff --git a/apps/dav/lib/Connector/Sabre/Auth.php b/apps/dav/lib/Connector/Sabre/Auth.php index d81a3f9d667..1610c554b9b 100644 --- a/apps/dav/lib/Connector/Sabre/Auth.php +++ b/apps/dav/lib/Connector/Sabre/Auth.php @@ -51,33 +51,19 @@ use Sabre\HTTP\ResponseInterface; class Auth extends AbstractBasic { public const DAV_AUTHENTICATED = 'AUTHENTICATED_TO_DAV_BACKEND'; - /** @var ISession */ - private $session; - /** @var Session */ - private $userSession; - /** @var IRequest */ - private $request; - /** @var string */ - private $currentUser; - /** @var Manager */ - private $twoFactorManager; - /** @var Throttler */ - private $throttler; + private ISession $session; + private Session $userSession; + private IRequest $request; + private ?string $currentUser = null; + private Manager $twoFactorManager; + private Throttler $throttler; - /** - * @param ISession $session - * @param Session $userSession - * @param IRequest $request - * @param Manager $twoFactorManager - * @param Throttler $throttler - * @param string $principalPrefix - */ public function __construct(ISession $session, Session $userSession, IRequest $request, Manager $twoFactorManager, Throttler $throttler, - $principalPrefix = 'principals/users/') { + string $principalPrefix = 'principals/users/') { $this->session = $session; $this->userSession = $userSession; $this->twoFactorManager = $twoFactorManager; @@ -97,11 +83,8 @@ class Auth extends AbstractBasic { * account was changed. * * @see https://github.com/owncloud/core/issues/13245 - * - * @param string $username - * @return bool */ - public function isDavAuthenticated($username) { + public function isDavAuthenticated(string $username): bool { return !is_null($this->session->get(self::DAV_AUTHENTICATED)) && $this->session->get(self::DAV_AUTHENTICATED) === $username; } @@ -144,9 +127,7 @@ class Auth extends AbstractBasic { } /** - * @param RequestInterface $request - * @param ResponseInterface $response - * @return array + * @return array{bool, string} * @throws NotAuthenticated * @throws ServiceUnavailable */ @@ -165,10 +146,8 @@ class Auth extends AbstractBasic { /** * Checks whether a CSRF check is required on the request - * - * @return bool */ - private function requiresCSRFCheck() { + private function requiresCSRFCheck(): bool { // GET requires no check at all if ($this->request->getMethod() === 'GET') { return false; @@ -203,12 +182,10 @@ class Auth extends AbstractBasic { } /** - * @param RequestInterface $request - * @param ResponseInterface $response - * @return array + * @return array{bool, string} * @throws NotAuthenticated */ - private function auth(RequestInterface $request, ResponseInterface $response) { + private function auth(RequestInterface $request, ResponseInterface $response): array { $forcedLogout = false; if (!$this->request->passesCSRFCheck() && diff --git a/apps/dav/lib/Connector/Sabre/BearerAuth.php b/apps/dav/lib/Connector/Sabre/BearerAuth.php index d28a9cfdb84..5a69d07b002 100644 --- a/apps/dav/lib/Connector/Sabre/BearerAuth.php +++ b/apps/dav/lib/Connector/Sabre/BearerAuth.php @@ -31,21 +31,11 @@ use Sabre\HTTP\RequestInterface; use Sabre\HTTP\ResponseInterface; class BearerAuth extends AbstractBearer { - /** @var IUserSession */ - private $userSession; - /** @var ISession */ - private $session; - /** @var IRequest */ - private $request; - /** @var string */ - private $principalPrefix; + private IUserSession $userSession; + private ISession $session; + private IRequest $request; + private string $principalPrefix; - /** - * @param IUserSession $userSession - * @param ISession $session - * @param string $principalPrefix - * @param IRequest $request - */ public function __construct(IUserSession $userSession, ISession $session, IRequest $request, @@ -90,7 +80,7 @@ class BearerAuth extends AbstractBearer { * @param RequestInterface $request * @param ResponseInterface $response */ - public function challenge(RequestInterface $request, ResponseInterface $response) { + public function challenge(RequestInterface $request, ResponseInterface $response): void { $response->setStatus(401); } } diff --git a/apps/dav/lib/Connector/Sabre/BlockLegacyClientPlugin.php b/apps/dav/lib/Connector/Sabre/BlockLegacyClientPlugin.php index 8e2ea4d4e16..2d2be631416 100644 --- a/apps/dav/lib/Connector/Sabre/BlockLegacyClientPlugin.php +++ b/apps/dav/lib/Connector/Sabre/BlockLegacyClientPlugin.php @@ -28,6 +28,7 @@ namespace OCA\DAV\Connector\Sabre; use OCP\IConfig; use Sabre\DAV\ServerPlugin; use Sabre\HTTP\RequestInterface; +use Sabre\DAV\Server; /** * Class BlockLegacyClientPlugin is used to detect old legacy sync clients and @@ -36,23 +37,17 @@ use Sabre\HTTP\RequestInterface; * @package OCA\DAV\Connector\Sabre */ class BlockLegacyClientPlugin extends ServerPlugin { - /** @var \Sabre\DAV\Server */ - protected $server; - /** @var IConfig */ - protected $config; + protected ?Server $server = null; + protected IConfig $config; - /** - * @param IConfig $config - */ public function __construct(IConfig $config) { $this->config = $config; } /** - * @param \Sabre\DAV\Server $server * @return void */ - public function initialize(\Sabre\DAV\Server $server) { + public function initialize(Server $server) { $this->server = $server; $this->server->on('beforeMethod:*', [$this, 'beforeHandler'], 200); } diff --git a/apps/dav/lib/Connector/Sabre/CachingTree.php b/apps/dav/lib/Connector/Sabre/CachingTree.php index eb1233d3540..81ffd47a977 100644 --- a/apps/dav/lib/Connector/Sabre/CachingTree.php +++ b/apps/dav/lib/Connector/Sabre/CachingTree.php @@ -28,17 +28,18 @@ use Sabre\DAV\Tree; class CachingTree extends Tree { /** * Store a node in the cache - * - * @param Node $node - * @param null|string $path */ - public function cacheNode(Node $node, $path = null) { + public function cacheNode(Node $node, ?string $path = null): void { if (is_null($path)) { $path = $node->getPath(); } $this->cache[trim($path, '/')] = $node; } + /** + * @param string $path + * @return void + */ public function markDirty($path) { // We don't care enough about sub-paths // flushing the entire cache diff --git a/apps/dav/lib/Connector/Sabre/ChecksumList.php b/apps/dav/lib/Connector/Sabre/ChecksumList.php index 74cdc98ef4f..344e6a4ab3c 100644 --- a/apps/dav/lib/Connector/Sabre/ChecksumList.php +++ b/apps/dav/lib/Connector/Sabre/ChecksumList.php @@ -35,12 +35,9 @@ class ChecksumList implements XmlSerializable { public const NS_OWNCLOUD = 'http://owncloud.org/ns'; /** @var string[] of TYPE:CHECKSUM */ - private $checksums; + private array $checksums; - /** - * @param string $checksum - */ - public function __construct($checksum) { + public function __construct(string $checksum) { $this->checksums = explode(',', $checksum); } diff --git a/apps/dav/lib/Connector/Sabre/ChecksumUpdatePlugin.php b/apps/dav/lib/Connector/Sabre/ChecksumUpdatePlugin.php index 3247259357f..c222923bc8e 100644 --- a/apps/dav/lib/Connector/Sabre/ChecksumUpdatePlugin.php +++ b/apps/dav/lib/Connector/Sabre/ChecksumUpdatePlugin.php @@ -26,14 +26,12 @@ namespace OCA\DAV\Connector\Sabre; use Sabre\DAV\ServerPlugin; use Sabre\HTTP\RequestInterface; use Sabre\HTTP\ResponseInterface; +use Sabre\DAV\Server; class ChecksumUpdatePlugin extends ServerPlugin { - /** - * @var \Sabre\DAV\Server - */ - protected $server; + protected ?Server $server = null; - public function initialize(\Sabre\DAV\Server $server) { + public function initialize(Server $server) { $this->server = $server; $server->on('method:PATCH', [$this, 'httpPatch']); } @@ -42,6 +40,7 @@ class ChecksumUpdatePlugin extends ServerPlugin { return 'checksumupdate'; } + /** @return string[] */ public function getHTTPMethods($path): array { $tree = $this->server->tree; @@ -55,6 +54,7 @@ class ChecksumUpdatePlugin extends ServerPlugin { return []; } + /** @return string[] */ public function getFeatures(): array { return ['nextcloud-checksum-update']; } diff --git a/apps/dav/lib/Connector/Sabre/CommentPropertiesPlugin.php b/apps/dav/lib/Connector/Sabre/CommentPropertiesPlugin.php index 82980553fa8..4a1205e8606 100644 --- a/apps/dav/lib/Connector/Sabre/CommentPropertiesPlugin.php +++ b/apps/dav/lib/Connector/Sabre/CommentPropertiesPlugin.php @@ -29,22 +29,17 @@ use OCP\Comments\ICommentsManager; use OCP\IUserSession; use Sabre\DAV\PropFind; use Sabre\DAV\ServerPlugin; +use Sabre\DAV\Server; class CommentPropertiesPlugin extends ServerPlugin { public const PROPERTY_NAME_HREF = '{http://owncloud.org/ns}comments-href'; public const PROPERTY_NAME_COUNT = '{http://owncloud.org/ns}comments-count'; public const PROPERTY_NAME_UNREAD = '{http://owncloud.org/ns}comments-unread'; - /** @var \Sabre\DAV\Server */ - protected $server; - - /** @var ICommentsManager */ - private $commentsManager; - - /** @var IUserSession */ - private $userSession; - - private $cachedUnreadCount = []; + protected ?Server $server = null; + private ICommentsManager $commentsManager; + private IUserSession $userSession; + private array $cachedUnreadCount = []; public function __construct(ICommentsManager $commentsManager, IUserSession $userSession) { $this->commentsManager = $commentsManager; @@ -67,7 +62,7 @@ class CommentPropertiesPlugin extends ServerPlugin { $this->server->on('propFind', [$this, 'handleGetProperties']); } - private function cacheDirectory(Directory $directory) { + private function cacheDirectory(Directory $directory): void { $children = $directory->getChildren(); $ids = []; @@ -109,14 +104,14 @@ class CommentPropertiesPlugin extends ServerPlugin { } // need prefetch ? - if ($node instanceof \OCA\DAV\Connector\Sabre\Directory + if ($node instanceof Directory && $propFind->getDepth() !== 0 && !is_null($propFind->getStatus(self::PROPERTY_NAME_UNREAD)) ) { $this->cacheDirectory($node); } - $propFind->handle(self::PROPERTY_NAME_COUNT, function () use ($node) { + $propFind->handle(self::PROPERTY_NAME_COUNT, function () use ($node): int { return $this->commentsManager->getNumberOfCommentsForObject('files', (string)$node->getId()); }); @@ -124,19 +119,15 @@ class CommentPropertiesPlugin extends ServerPlugin { return $this->getCommentsLink($node); }); - $propFind->handle(self::PROPERTY_NAME_UNREAD, function () use ($node) { - if (isset($this->cachedUnreadCount[$node->getId()])) { - return $this->cachedUnreadCount[$node->getId()]; - } - return $this->getUnreadCount($node); + $propFind->handle(self::PROPERTY_NAME_UNREAD, function () use ($node): ?bool { + return $this->cachedUnreadCount[$node->getId()] ?? $this->getUnreadCount($node); }); } /** - * returns a reference to the comments node + * Returns a reference to the comments node * - * @param Node $node - * @return mixed|string + * @return array|string|null */ public function getCommentsLink(Node $node) { $href = $this->server->getBaseUri(); @@ -151,13 +142,10 @@ class CommentPropertiesPlugin extends ServerPlugin { } /** - * returns the number of unread comments for the currently logged in user + * Returns the number of unread comments for the currently logged in user * on the given file or directory node - * - * @param Node $node - * @return Int|null */ - public function getUnreadCount(Node $node) { + public function getUnreadCount(Node $node): ?int { $user = $this->userSession->getUser(); if (is_null($user)) { return null; diff --git a/apps/dav/lib/Connector/Sabre/CopyEtagHeaderPlugin.php b/apps/dav/lib/Connector/Sabre/CopyEtagHeaderPlugin.php index 029e631f4d9..f3ea94be3b6 100644 --- a/apps/dav/lib/Connector/Sabre/CopyEtagHeaderPlugin.php +++ b/apps/dav/lib/Connector/Sabre/CopyEtagHeaderPlugin.php @@ -27,6 +27,7 @@ namespace OCA\DAV\Connector\Sabre; use Sabre\DAV\Exception\NotFound; use Sabre\HTTP\RequestInterface; use Sabre\HTTP\ResponseInterface; +use Sabre\DAV\Server; /** * Copies the "Etag" header to "OC-Etag" after any request. @@ -34,9 +35,8 @@ use Sabre\HTTP\ResponseInterface; * or mangle Etag headers. */ class CopyEtagHeaderPlugin extends \Sabre\DAV\ServerPlugin { + private ?Server $server = null; - /** @var \Sabre\DAV\Server */ - private $server; /** * This initializes the plugin. * diff --git a/apps/dav/lib/Connector/Sabre/Directory.php b/apps/dav/lib/Connector/Sabre/Directory.php index ed98b5050f8..5280511d5be 100644 --- a/apps/dav/lib/Connector/Sabre/Directory.php +++ b/apps/dav/lib/Connector/Sabre/Directory.php @@ -54,40 +54,27 @@ use Sabre\DAV\Exception\NotFound; use Sabre\DAV\Exception\ServiceUnavailable; use Sabre\DAV\IFile; use Sabre\DAV\INode; +use OCP\Share\IManager as IShareManager; class Directory extends \OCA\DAV\Connector\Sabre\Node implements \Sabre\DAV\ICollection, \Sabre\DAV\IQuota, \Sabre\DAV\IMoveTarget, \Sabre\DAV\ICopyTarget { /** * Cached directory content - * * @var \OCP\Files\FileInfo[] */ - private $dirContent; + private ?array $dirContent = null; - /** - * Cached quota info - * - * @var array - */ - private $quotaInfo; - - /** - * @var ObjectTree|null - */ - private $tree; + /** Cached quota info */ + private ?array $quotaInfo = null; + private ?ObjectTree $tree = null; /** @var array<string, array<int, FileMetadata>> */ private array $metadata = []; /** * Sets up the node, expects a full path name - * - * @param \OC\Files\View $view - * @param \OCP\Files\FileInfo $info - * @param ObjectTree|null $tree - * @param \OCP\Share\IManager $shareManager */ - public function __construct(View $view, FileInfo $info, $tree = null, $shareManager = null) { + public function __construct(View $view, FileInfo $info, ?ObjectTree $tree = null, IShareManager $shareManager = null) { parent::__construct($view, $info, $shareManager); $this->tree = $tree; } diff --git a/apps/dav/lib/Connector/Sabre/DummyGetResponsePlugin.php b/apps/dav/lib/Connector/Sabre/DummyGetResponsePlugin.php index 3a8469e99b4..8e35afe2e7c 100644 --- a/apps/dav/lib/Connector/Sabre/DummyGetResponsePlugin.php +++ b/apps/dav/lib/Connector/Sabre/DummyGetResponsePlugin.php @@ -28,6 +28,7 @@ namespace OCA\DAV\Connector\Sabre; use Sabre\HTTP\RequestInterface; use Sabre\HTTP\ResponseInterface; +use Sabre\DAV\Server; /** * Class DummyGetResponsePlugin is a plugin used to not show a "Not implemented" @@ -43,8 +44,7 @@ use Sabre\HTTP\ResponseInterface; * @package OCA\DAV\Connector\Sabre */ class DummyGetResponsePlugin extends \Sabre\DAV\ServerPlugin { - /** @var \Sabre\DAV\Server */ - protected $server; + protected ?Server $server = null; /** * @param \Sabre\DAV\Server $server diff --git a/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php b/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php index e89ce3a8037..ea94b5c8933 100644 --- a/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php +++ b/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php @@ -83,16 +83,13 @@ class ExceptionLoggerPlugin extends \Sabre\DAV\ServerPlugin { RequestedRangeNotSatisfiable::class => true, ]; - /** @var string */ - private $appName; - + private string $appName; private LoggerInterface $logger; /** * @param string $loggerAppName app name to use when logging - * @param LoggerInterface $logger */ - public function __construct($loggerAppName, LoggerInterface $logger) { + public function __construct(string $loggerAppName, LoggerInterface $logger) { $this->appName = $loggerAppName; $this->logger = $logger; } @@ -114,7 +111,6 @@ class ExceptionLoggerPlugin extends \Sabre\DAV\ServerPlugin { /** * Log exception - * */ public function logException(\Throwable $ex) { $exceptionClass = get_class($ex); @@ -128,11 +124,12 @@ class ExceptionLoggerPlugin extends \Sabre\DAV\ServerPlugin { 'app' => $this->appName, 'exception' => $ex, ]); - } else { - $this->logger->critical($ex->getMessage(), [ - 'app' => $this->appName, - 'exception' => $ex, - ]); + return; } + + $this->logger->critical($ex->getMessage(), [ + 'app' => $this->appName, + 'exception' => $ex, + ]); } } diff --git a/apps/dav/lib/Connector/Sabre/FilesPlugin.php b/apps/dav/lib/Connector/Sabre/FilesPlugin.php index 9c4f912610b..b784764f8fe 100644 --- a/apps/dav/lib/Connector/Sabre/FilesPlugin.php +++ b/apps/dav/lib/Connector/Sabre/FilesPlugin.php @@ -49,6 +49,7 @@ use Sabre\DAV\IFile; use Sabre\DAV\PropFind; use Sabre\DAV\PropPatch; use Sabre\DAV\ServerPlugin; +use Sabre\DAV\Server; use Sabre\DAV\Tree; use Sabre\HTTP\RequestInterface; use Sabre\HTTP\ResponseInterface; @@ -84,66 +85,28 @@ class FilesPlugin extends ServerPlugin { public const SUBFILE_COUNT_PROPERTYNAME = '{http://nextcloud.org/ns}contained-file-count'; public const FILE_METADATA_SIZE = '{http://nextcloud.org/ns}file-metadata-size'; - /** - * Reference to main server object - * - * @var \Sabre\DAV\Server - */ - private $server; - - /** - * @var Tree - */ - private $tree; - - /** - * @var IUserSession - */ - private $userSession; + /** Reference to main server object */ + private ?Server $server = null; + private Tree $tree; + private IUserSession $userSession; /** * Whether this is public webdav. * If true, some returned information will be stripped off. - * - * @var bool - */ - private $isPublic; - - /** - * @var bool */ - private $downloadAttachment; + private bool $isPublic; + private bool $downloadAttachment; + private IConfig $config; + private IRequest $request; + private IPreview $previewManager; - /** - * @var IConfig - */ - private $config; - - /** - * @var IRequest - */ - private $request; - - /** - * @var IPreview - */ - private $previewManager; - - /** - * @param Tree $tree - * @param IConfig $config - * @param IRequest $request - * @param IPreview $previewManager - * @param bool $isPublic - * @param bool $downloadAttachment - */ public function __construct(Tree $tree, IConfig $config, IRequest $request, IPreview $previewManager, IUserSession $userSession, - $isPublic = false, - $downloadAttachment = true) { + bool $isPublic = false, + bool $downloadAttachment = true) { $this->tree = $tree; $this->config = $config; $this->request = $request; @@ -161,10 +124,9 @@ class FilesPlugin extends ServerPlugin { * * This method should set up the required event subscriptions. * - * @param \Sabre\DAV\Server $server * @return void */ - public function initialize(\Sabre\DAV\Server $server) { + public function initialize(Server $server) { $server->xml->namespaceMap[self::NS_OWNCLOUD] = 'oc'; $server->xml->namespaceMap[self::NS_NEXTCLOUD] = 'nc'; $server->protectedProperties[] = self::FILEID_PROPERTYNAME; @@ -347,7 +309,7 @@ class FilesPlugin extends ServerPlugin { ); }); - $propFind->handle(self::OCM_SHARE_PERMISSIONS_PROPERTYNAME, function () use ($node, $httpRequest) { + $propFind->handle(self::OCM_SHARE_PERMISSIONS_PROPERTYNAME, function () use ($node, $httpRequest): ?string { $user = $this->userSession->getUser(); if ($user === null) { return null; @@ -359,11 +321,11 @@ class FilesPlugin extends ServerPlugin { return json_encode($ocmPermissions); }); - $propFind->handle(self::GETETAG_PROPERTYNAME, function () use ($node) { + $propFind->handle(self::GETETAG_PROPERTYNAME, function () use ($node): string { return $node->getETag(); }); - $propFind->handle(self::OWNER_ID_PROPERTYNAME, function () use ($node) { + $propFind->handle(self::OWNER_ID_PROPERTYNAME, function () use ($node): ?string { $owner = $node->getOwner(); if (!$owner) { return null; @@ -371,7 +333,7 @@ class FilesPlugin extends ServerPlugin { return $owner->getUID(); } }); - $propFind->handle(self::OWNER_DISPLAY_NAME_PROPERTYNAME, function () use ($node) { + $propFind->handle(self::OWNER_DISPLAY_NAME_PROPERTYNAME, function () use ($node): ?string { $owner = $node->getOwner(); if (!$owner) { return null; @@ -383,14 +345,14 @@ class FilesPlugin extends ServerPlugin { $propFind->handle(self::HAS_PREVIEW_PROPERTYNAME, function () use ($node) { return json_encode($this->previewManager->isAvailable($node->getFileInfo())); }); - $propFind->handle(self::SIZE_PROPERTYNAME, function () use ($node) { + $propFind->handle(self::SIZE_PROPERTYNAME, function () use ($node): ?int { return $node->getSize(); }); $propFind->handle(self::MOUNT_TYPE_PROPERTYNAME, function () use ($node) { return $node->getFileInfo()->getMountPoint()->getMountType(); }); - $propFind->handle(self::SHARE_NOTE, function () use ($node, $httpRequest) { + $propFind->handle(self::SHARE_NOTE, function () use ($node, $httpRequest): ?string { $user = $this->userSession->getUser(); if ($user === null) { return null; @@ -569,10 +531,7 @@ class FilesPlugin extends ServerPlugin { if (empty($etag)) { return false; } - if ($node->setEtag($etag) !== -1) { - return true; - } - return false; + return $node->setEtag($etag) !== -1; }); $propPatch->handle(self::CREATIONDATE_PROPERTYNAME, function ($time) use ($node) { if (empty($time)) { diff --git a/apps/dav/lib/Connector/Sabre/ServerFactory.php b/apps/dav/lib/Connector/Sabre/ServerFactory.php index 635645ed992..8f1f710ca5e 100644 --- a/apps/dav/lib/Connector/Sabre/ServerFactory.php +++ b/apps/dav/lib/Connector/Sabre/ServerFactory.php @@ -48,25 +48,16 @@ use Sabre\DAV\Auth\Plugin; use Symfony\Component\EventDispatcher\EventDispatcherInterface; class ServerFactory { - /** @var IConfig */ - private $config; + private IConfig $config; private LoggerInterface $logger; - /** @var IDBConnection */ - private $databaseConnection; - /** @var IUserSession */ - private $userSession; - /** @var IMountManager */ - private $mountManager; - /** @var ITagManager */ - private $tagManager; - /** @var IRequest */ - private $request; - /** @var IPreview */ - private $previewManager; - /** @var EventDispatcherInterface */ - private $eventDispatcher; - /** @var IL10N */ - private $l10n; + private IDBConnection $databaseConnection; + private IUserSession $userSession; + private IMountManager $mountManager; + private ITagManager $tagManager; + private IRequest $request; + private IPreview $previewManager; + private EventDispatcherInterface $eventDispatcher; + private IL10N $l10n; public function __construct( IConfig $config, @@ -93,16 +84,12 @@ class ServerFactory { } /** - * @param string $baseUri - * @param string $requestUri - * @param Plugin $authPlugin * @param callable $viewCallBack callback that should return the view for the dav endpoint - * @return Server */ - public function createServer($baseUri, - $requestUri, + public function createServer(string $baseUri, + string $requestUri, Plugin $authPlugin, - callable $viewCallBack) { + callable $viewCallBack): Server { // Fire up server $objectTree = new \OCA\DAV\Connector\Sabre\ObjectTree(); $server = new \OCA\DAV\Connector\Sabre\Server($objectTree); diff --git a/apps/dav/lib/Connector/Sabre/SharesPlugin.php b/apps/dav/lib/Connector/Sabre/SharesPlugin.php index 57c91e05a8c..9fa6775c3b5 100644 --- a/apps/dav/lib/Connector/Sabre/SharesPlugin.php +++ b/apps/dav/lib/Connector/Sabre/SharesPlugin.php @@ -30,10 +30,14 @@ namespace OCA\DAV\Connector\Sabre; use OCA\DAV\Connector\Sabre\Node as DavNode; use OCP\Files\Folder; +use OCP\Files\Node; use OCP\Files\NotFoundException; use OCP\IUserSession; use OCP\Share\IShare; +use OCP\Share\IManager; use Sabre\DAV\PropFind; +use Sabre\DAV\Tree; +use Sabre\DAV\Server; /** * Sabre Plugin to provide share-related properties @@ -50,36 +54,20 @@ class SharesPlugin extends \Sabre\DAV\ServerPlugin { * @var \Sabre\DAV\Server */ private $server; - - /** @var \OCP\Share\IManager */ - private $shareManager; - - /** @var \Sabre\DAV\Tree */ - private $tree; - - /** @var string */ - private $userId; - - /** @var \OCP\Files\Folder */ - private $userFolder; - + private IManager $shareManager; + private Tree $tree; + private string $userId; + private Folder $userFolder; /** @var IShare[][] */ - private $cachedShares = []; - + private array $cachedShares = []; /** @var string[] */ - private $cachedFolders = []; + private array $cachedFolders = []; - /** - * @param \Sabre\DAV\Tree $tree tree - * @param IUserSession $userSession user session - * @param \OCP\Files\Folder $userFolder user home folder - * @param \OCP\Share\IManager $shareManager share manager - */ public function __construct( - \Sabre\DAV\Tree $tree, + Tree $tree, IUserSession $userSession, - \OCP\Files\Folder $userFolder, - \OCP\Share\IManager $shareManager + Folder $userFolder, + IManager $shareManager ) { $this->tree = $tree; $this->shareManager = $shareManager; @@ -95,9 +83,9 @@ class SharesPlugin extends \Sabre\DAV\ServerPlugin { * * This method should set up the required event subscriptions. * - * @param \Sabre\DAV\Server $server + * @return void */ - public function initialize(\Sabre\DAV\Server $server) { + public function initialize(Server $server) { $server->xml->namespaceMap[self::NS_OWNCLOUD] = 'oc'; $server->xml->elementMap[self::SHARETYPES_PROPERTYNAME] = ShareTypeList::class; $server->protectedProperties[] = self::SHARETYPES_PROPERTYNAME; @@ -108,10 +96,10 @@ class SharesPlugin extends \Sabre\DAV\ServerPlugin { } /** - * @param \OCP\Files\Node $node + * @param Node $node * @return IShare[] */ - private function getShare(\OCP\Files\Node $node): array { + private function getShare(Node $node): array { $result = []; $requestedShareTypes = [ IShare::TYPE_USER, @@ -209,7 +197,7 @@ class SharesPlugin extends \Sabre\DAV\ServerPlugin { } } - $propFind->handle(self::SHARETYPES_PROPERTYNAME, function () use ($sabreNode) { + $propFind->handle(self::SHARETYPES_PROPERTYNAME, function () use ($sabreNode): ShareTypeList { $shares = $this->getShares($sabreNode); $shareTypes = array_unique(array_map(function (IShare $share) { @@ -219,7 +207,7 @@ class SharesPlugin extends \Sabre\DAV\ServerPlugin { return new ShareTypeList($shareTypes); }); - $propFind->handle(self::SHAREES_PROPERTYNAME, function () use ($sabreNode) { + $propFind->handle(self::SHAREES_PROPERTYNAME, function () use ($sabreNode): ShareeList { $shares = $this->getShares($sabreNode); return new ShareeList($shares); diff --git a/apps/dav/lib/Server.php b/apps/dav/lib/Server.php index 9791bc6b334..5b532465aba 100644 --- a/apps/dav/lib/Server.php +++ b/apps/dav/lib/Server.php @@ -237,7 +237,7 @@ class Server { $this->server->addPlugin(new SearchPlugin($lazySearchBackend)); // wait with registering these until auth is handled and the filesystem is setup - $this->server->on('beforeMethod:*', function () use ($root, $lazySearchBackend) { + $this->server->on('beforeMethod:*', function () use ($root, $lazySearchBackend, $logger) { // custom properties plugin must be the last one $userSession = \OC::$server->getUserSession(); $user = $userSession->getUser(); @@ -306,7 +306,6 @@ class Server { \OC::$server->getShareManager(), $view )); - $logger = \OC::$server->get(LoggerInterface::class); $this->server->addPlugin( new BulkUploadPlugin($userFolder, $logger) ); diff --git a/apps/dav/tests/unit/Files/FileSearchBackendTest.php b/apps/dav/tests/unit/Files/FileSearchBackendTest.php index dec5db1b1b0..da682a5fb21 100644 --- a/apps/dav/tests/unit/Files/FileSearchBackendTest.php +++ b/apps/dav/tests/unit/Files/FileSearchBackendTest.php @@ -29,7 +29,7 @@ namespace OCA\DAV\Tests\Files; use OC\Files\Search\SearchComparison; use OC\Files\Search\SearchQuery; use OC\Files\View; -use OCA\DAV\Connector\Sabre\CachingTree; +use OCA\DAV\Connector\Sabre\ObjectTree; use OCA\DAV\Connector\Sabre\Directory; use OCA\DAV\Connector\Sabre\File; use OCA\DAV\Connector\Sabre\FilesPlugin; @@ -48,7 +48,7 @@ use SearchDAV\Query\Query; use Test\TestCase; class FileSearchBackendTest extends TestCase { - /** @var CachingTree|\PHPUnit\Framework\MockObject\MockObject */ + /** @var ObjectTree|\PHPUnit\Framework\MockObject\MockObject */ private $tree; /** @var IUser */ @@ -80,7 +80,7 @@ class FileSearchBackendTest extends TestCase { ->method('getUID') ->willReturn('test'); - $this->tree = $this->getMockBuilder(CachingTree::class) + $this->tree = $this->getMockBuilder(ObjectTree::class) ->disableOriginalConstructor() ->getMock(); diff --git a/build/psalm-baseline.xml b/build/psalm-baseline.xml index d88e616032b..9c151593f8d 100644 --- a/build/psalm-baseline.xml +++ b/build/psalm-baseline.xml @@ -55,9 +55,6 @@ </UndefinedFunction> </file> <file src="apps/dav/appinfo/v1/caldav.php"> - <TooManyArguments occurrences="1"> - <code>new \Sabre\DAV\Auth\Plugin($authBackend, 'ownCloud')</code> - </TooManyArguments> <UndefinedGlobalVariable occurrences="1"> <code>$baseuri</code> </UndefinedGlobalVariable> @@ -122,26 +119,6 @@ <code>Uri\split($this->principalInfo['uri'])</code> </UndefinedFunction> </file> - <file src="apps/dav/lib/BackgroundJob/BuildReminderIndexBackgroundJob.php"> - <ParamNameMismatch occurrences="1"> - <code>$arguments</code> - </ParamNameMismatch> - </file> - <file src="apps/dav/lib/BackgroundJob/EventReminderJob.php"> - <ParamNameMismatch occurrences="1"> - <code>$arg</code> - </ParamNameMismatch> - </file> - <file src="apps/dav/lib/BackgroundJob/GenerateBirthdayCalendarBackgroundJob.php"> - <ParamNameMismatch occurrences="1"> - <code>$arguments</code> - </ParamNameMismatch> - </file> - <file src="apps/dav/lib/BackgroundJob/UploadCleanup.php"> - <InvalidArgument occurrences="1"> - <code>File</code> - </InvalidArgument> - </file> <file src="apps/dav/lib/CalDAV/BirthdayService.php"> <UndefinedMethod occurrences="2"> <code>setDateTime</code> @@ -155,20 +132,11 @@ </UndefinedPropertyFetch> </file> <file src="apps/dav/lib/CalDAV/CachedSubscription.php"> - <LessSpecificImplementedReturnType occurrences="1"> - <code>array</code> - </LessSpecificImplementedReturnType> - <MoreSpecificImplementedParamType occurrences="1"> - <code>$calendarData</code> - </MoreSpecificImplementedParamType> <ParamNameMismatch occurrences="1"> <code>$calendarData</code> </ParamNameMismatch> </file> <file src="apps/dav/lib/CalDAV/CachedSubscriptionObject.php"> - <ImplementedReturnTypeMismatch occurrences="1"> - <code>string|void</code> - </ImplementedReturnTypeMismatch> <NullableReturnStatement occurrences="1"> <code>$this->objectData['calendardata']</code> </NullableReturnStatement> @@ -263,16 +231,6 @@ <code>$paths</code> </MoreSpecificImplementedParamType> </file> - <file src="apps/dav/lib/CalDAV/Publishing/PublishPlugin.php"> - <InvalidOperand occurrences="2"> - <code>$canPublish</code> - <code>$canShare</code> - </InvalidOperand> - <InvalidScalarArgument occurrences="2"> - <code>$canPublish</code> - <code>$canShare</code> - </InvalidScalarArgument> - </file> <file src="apps/dav/lib/CalDAV/Reminder/NotificationProvider/AbstractProvider.php"> <UndefinedMethod occurrences="3"> <code>hasTime</code> @@ -281,60 +239,17 @@ </UndefinedMethod> </file> <file src="apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php"> - <FalsableReturnStatement occurrences="4"> - <code>$l10n->l('date', $dt, ['width' => 'medium'])</code> - <code>$l10n->l('datetime', $dt, ['width' => 'medium|short'])</code> - <code>$l10n->l('time', $dt, ['width' => 'short'])</code> - <code>$l10n->l('weekdayName', $dt, ['width' => 'abbreviated'])</code> - </FalsableReturnStatement> - <InvalidReturnStatement occurrences="4"> - <code>$l10n->l('date', $dt, ['width' => 'medium'])</code> - <code>$l10n->l('datetime', $dt, ['width' => 'medium|short'])</code> - <code>$l10n->l('time', $dt, ['width' => 'short'])</code> - <code>$l10n->l('weekdayName', $dt, ['width' => 'abbreviated'])</code> - </InvalidReturnStatement> - <InvalidReturnType occurrences="4"> - <code>string</code> - <code>string</code> - <code>string</code> - <code>string</code> - </InvalidReturnType> <UndefinedMethod occurrences="3"> <code>getDateTime</code> <code>getDateTime</code> <code>isFloating</code> </UndefinedMethod> </file> - <file src="apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php"> - <PossiblyInvalidDocblockTag occurrences="1"> - <code>@var VEvent $vevent</code> - </PossiblyInvalidDocblockTag> - </file> <file src="apps/dav/lib/CalDAV/Reminder/NotificationProviderManager.php"> <UndefinedConstant occurrences="1"> <code>$provider::NOTIFICATION_TYPE</code> </UndefinedConstant> </file> - <file src="apps/dav/lib/CalDAV/Reminder/Notifier.php"> - <FalsableReturnStatement occurrences="4"> - <code>$this->l10n->l('date', $dt, ['width' => 'medium'])</code> - <code>$this->l10n->l('datetime', $dt, ['width' => 'medium|short'])</code> - <code>$this->l10n->l('time', $dt, ['width' => 'short'])</code> - <code>$this->l10n->l('weekdayName', $dt, ['width' => 'abbreviated'])</code> - </FalsableReturnStatement> - <InvalidReturnStatement occurrences="4"> - <code>$this->l10n->l('date', $dt, ['width' => 'medium'])</code> - <code>$this->l10n->l('datetime', $dt, ['width' => 'medium|short'])</code> - <code>$this->l10n->l('time', $dt, ['width' => 'short'])</code> - <code>$this->l10n->l('weekdayName', $dt, ['width' => 'abbreviated'])</code> - </InvalidReturnStatement> - <InvalidReturnType occurrences="4"> - <code>string</code> - <code>string</code> - <code>string</code> - <code>string</code> - </InvalidReturnType> - </file> <file src="apps/dav/lib/CalDAV/Reminder/ReminderService.php"> <UndefinedMethod occurrences="3"> <code>getDateInterval</code> @@ -457,21 +372,6 @@ <code>'\OCA\DAV\CardDAV\CardDavBackend::deleteCard'</code> <code>'\OCA\DAV\CardDAV\CardDavBackend::updateCard'</code> </InvalidArgument> - <InvalidNullableReturnType occurrences="1"> - <code>array</code> - </InvalidNullableReturnType> - <MoreSpecificImplementedParamType occurrences="1"> - <code>$uris</code> - </MoreSpecificImplementedParamType> - <NullableReturnStatement occurrences="1"> - <code>null</code> - </NullableReturnStatement> - <ParamNameMismatch occurrences="1"> - <code>$addressBookId</code> - </ParamNameMismatch> - <RedundantCast occurrences="1"> - <code>(int)$addressBookId</code> - </RedundantCast> <TooManyArguments occurrences="3"> <code>dispatch</code> <code>dispatch</code> @@ -511,11 +411,6 @@ <code>\Sabre\Uri\split($principal)</code> </UndefinedFunction> </file> - <file src="apps/dav/lib/CardDAV/SyncService.php"> - <InvalidScalarArgument occurrences="1"> - <code>$targetBookId</code> - </InvalidScalarArgument> - </file> <file src="apps/dav/lib/CardDAV/UserAddressBooks.php"> <InvalidArgument occurrences="2"> <code>$this->principalUri</code> @@ -583,11 +478,6 @@ <code>bool</code> </InvalidNullableReturnType> </file> - <file src="apps/dav/lib/Connector/Sabre/AppEnabledPlugin.php"> - <InvalidReturnType occurrences="1"> - <code>bool</code> - </InvalidReturnType> - </file> <file src="apps/dav/lib/Connector/Sabre/BearerAuth.php"> <UndefinedInterfaceMethod occurrences="1"> <code>tryTokenLogin</code> |