diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/Calendar/Manager.php | 35 | ||||
-rw-r--r-- | lib/private/Repair/RepairMimeTypes.php | 15 |
2 files changed, 46 insertions, 4 deletions
diff --git a/lib/private/Calendar/Manager.php b/lib/private/Calendar/Manager.php index 30ee60e4943..3fa4b55d1ea 100644 --- a/lib/private/Calendar/Manager.php +++ b/lib/private/Calendar/Manager.php @@ -31,6 +31,11 @@ use OCP\Calendar\ICalendar; use OCP\Calendar\ICalendarProvider; use OCP\Calendar\ICalendarQuery; use OCP\Calendar\IManager; +use Psr\Container\ContainerInterface; +use Psr\Log\LoggerInterface; +use Throwable; +use function array_map; +use function array_merge; class Manager implements IManager { @@ -47,8 +52,18 @@ class Manager implements IManager { /** @var Coordinator */ private $coordinator; - public function __construct(Coordinator $coordinator) { + /** @var ContainerInterface */ + private $container; + + /** @var LoggerInterface */ + private $logger; + + public function __construct(Coordinator $coordinator, + ContainerInterface $container, + LoggerInterface $logger) { $this->coordinator = $coordinator; + $this->container = $container; + $this->logger = $logger; } /** @@ -159,9 +174,21 @@ class Manager implements IManager { } /** @var CalendarQuery $query */ - $calendars = array_merge(...array_map(static function (ICalendarProvider $p) use ($query) { - return $p->getCalendars($query->getPrincipalUri(), $query->getCalendarUris()); - }, $context->getCalendarProviders())); + $calendars = array_merge( + ...array_map(function ($registration) use ($query) { + try { + /** @var ICalendarProvider $provider */ + $provider = $this->container->get($registration->getService()); + } catch (Throwable $e) { + $this->logger->error('Could not load calendar provider ' . $registration->getService() . ': ' . $e->getMessage(), [ + 'exception' => $e, + ]); + return []; + } + + return $provider->getCalendars($query->getPrincipalUri(), $query->getCalendarUris()); + }, $context->getCalendarProviders()) + ); $results = []; /** @var ICalendar $calendar */ diff --git a/lib/private/Repair/RepairMimeTypes.php b/lib/private/Repair/RepairMimeTypes.php index b5c17e85147..61512627258 100644 --- a/lib/private/Repair/RepairMimeTypes.php +++ b/lib/private/Repair/RepairMimeTypes.php @@ -192,6 +192,17 @@ class RepairMimeTypes implements IRepairStep { return $this->updateMimetypes($updatedMimetypes); } + private function introduceFlatOpenDocumentType() { + $updatedMimetypes = [ + "fodt" => "application/vnd.oasis.opendocument.text-flat-xml", + "fods" => "application/vnd.oasis.opendocument.spreadsheet-flat-xml", + "fodg" => "application/vnd.oasis.opendocument.graphics-flat-xml", + "fodp" => "application/vnd.oasis.opendocument.presentation-flat-xml", + ]; + + return $this->updateMimetypes($updatedMimetypes); + } + private function introduceOrgModeType() { $updatedMimetypes = [ 'org' => 'text/org' @@ -245,5 +256,9 @@ class RepairMimeTypes implements IRepairStep { if (version_compare($ocVersionFromBeforeUpdate, '21.0.0.7', '<') && $this->introduceOrgModeType()) { $out->info('Fixed orgmode mime types'); } + + if (version_compare($ocVersionFromBeforeUpdate, '23.0.0.2', '<') && $this->introduceFlatOpenDocumentType()) { + $out->info('Fixed Flat OpenDocument mime types'); + } } } |