summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/private/Calendar/Manager.php35
-rw-r--r--lib/private/Repair/RepairMimeTypes.php15
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');
+ }
}
}