summaryrefslogtreecommitdiffstats
path: root/apps/dav
diff options
context:
space:
mode:
Diffstat (limited to 'apps/dav')
-rw-r--r--apps/dav/lib/BackgroundJob/BuildReminderIndexBackgroundJob.php6
-rw-r--r--apps/dav/lib/CardDAV/SystemAddressbook.php2
-rw-r--r--apps/dav/lib/Connector/Sabre/DavAclPlugin.php15
3 files changed, 18 insertions, 5 deletions
diff --git a/apps/dav/lib/BackgroundJob/BuildReminderIndexBackgroundJob.php b/apps/dav/lib/BackgroundJob/BuildReminderIndexBackgroundJob.php
index 2ae47ee89ea..a38524da9e2 100644
--- a/apps/dav/lib/BackgroundJob/BuildReminderIndexBackgroundJob.php
+++ b/apps/dav/lib/BackgroundJob/BuildReminderIndexBackgroundJob.php
@@ -105,8 +105,8 @@ class BuildReminderIndexBackgroundJob extends QueuedJob {
->andWhere($query->expr()->gt('id', $query->createNamedParameter($offset)))
->orderBy('id', 'ASC');
- $stmt = $query->execute();
- while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) {
+ $result = $query->executeQuery();
+ while ($row = $result->fetch(\PDO::FETCH_ASSOC)) {
$offset = $row['id'];
if (is_resource($row['calendardata'])) {
$row['calendardata'] = stream_get_contents($row['calendardata']);
@@ -120,10 +120,12 @@ class BuildReminderIndexBackgroundJob extends QueuedJob {
}
if (($this->timeFactory->getTime() - $startTime) > 15) {
+ $result->closeCursor();
return $offset;
}
}
+ $result->closeCursor();
return $stopAt;
}
}
diff --git a/apps/dav/lib/CardDAV/SystemAddressbook.php b/apps/dav/lib/CardDAV/SystemAddressbook.php
index 1cffde63474..1f71c36ef79 100644
--- a/apps/dav/lib/CardDAV/SystemAddressbook.php
+++ b/apps/dav/lib/CardDAV/SystemAddressbook.php
@@ -64,7 +64,7 @@ class SystemAddressbook extends AddressBook {
IUserSession $userSession,
?IRequest $request = null,
?TrustedServers $trustedServers = null,
- ?IGroupManager $groupManager) {
+ ?IGroupManager $groupManager = null) {
parent::__construct($carddavBackend, $addressBookInfo, $l10n);
$this->config = $config;
$this->userSession = $userSession;
diff --git a/apps/dav/lib/Connector/Sabre/DavAclPlugin.php b/apps/dav/lib/Connector/Sabre/DavAclPlugin.php
index 6842975835d..7fa94d7b903 100644
--- a/apps/dav/lib/Connector/Sabre/DavAclPlugin.php
+++ b/apps/dav/lib/Connector/Sabre/DavAclPlugin.php
@@ -94,8 +94,19 @@ class DavAclPlugin extends \Sabre\DAVACL\Plugin {
$path = $request->getPath();
// prevent the plugin from causing an unneeded overhead for file requests
- if (strpos($path, 'files/') !== 0) {
- parent::beforeMethod($request, $response);
+ if (str_starts_with($path, 'files/')) {
+ return;
+ }
+
+ parent::beforeMethod($request, $response);
+
+ $createAddressbookOrCalendarRequest = ($request->getMethod() === 'MKCALENDAR' || $request->getMethod() === 'MKCOL')
+ && (str_starts_with($path, 'addressbooks/') || str_starts_with($path, 'calendars/'));
+
+ if ($createAddressbookOrCalendarRequest) {
+ [$parentName] = \Sabre\Uri\split($path);
+ // is calendars/users/bob or addressbooks/users/bob writeable?
+ $this->checkPrivileges($parentName, '{DAV:}write');
}
}
}