Commit graph

162 commits

Author SHA1 Message Date
John Molakvoæ
7b6a650b6e
feat: public dav endpoint v2
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2024-01-09 10:56:06 +01:00
Anna Larch
4c6eff975f fix(userstatus): set user status to 'In a meeting' if calendar is busy
Signed-off-by: Anna Larch <anna@nextcloud.com>
2023-12-19 14:59:00 +01:00
Joas Schilling
2ff3a3c4fb
fix(out-of-office)!: Remove non OCS endpoint
Signed-off-by: Joas Schilling <coding@schilljs.com>
2023-12-01 09:46:03 +01:00
Richard Steinmetz
8191295f66
feat(dav): dispatch out-of-office started and ended events
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2023-11-23 17:18:49 +01:00
Christoph Wurst
5b7a5474b9
feat(caldav): Create personal event for out-of-office messages
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2023-11-14 13:57:12 +01:00
Christoph Wurst
7248d9b091
Merge pull request #40615 from nextcloud/enh/automate-calendar-event-user-status
feat(user status): automate user status for events
2023-11-09 19:56:39 +01:00
Anna Larch
f14a4f8fd7 feat(user status): automate user status for events
and automatically set a user status to free or busy depending on their calendar
transparency, event status and availability settings

Signed-off-by: Anna Larch <anna@nextcloud.com>
2023-11-09 16:20:19 +01:00
Christoph Wurst
ab1a1d688d
feat: Add out-of-office message API
[skipci]

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2023-11-09 10:36:11 +01:00
Richard Steinmetz
425e770c04
feat(dav): implement personal absence settings
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2023-11-07 17:27:10 +01:00
Akhil
439de119c7
add index for classification
Signed-off-by: Akhil <akhil@e.email>
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-10-31 10:41:32 +01:00
Richard Steinmetz
45ed9b10d5
feat(dav): implement personal absence settings backend
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2023-10-29 00:08:44 +02:00
Côme Chilliet
6aa6f26427
Move NeedsSystemAddressBookSync to dav application where it’s registered
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2023-10-19 11:44:02 +02:00
Joas Schilling
72667a667d
feat(dav): Emit a typed event to deprecate OCA\DAV\Connector\Sabre::addPlugin
Signed-off-by: Joas Schilling <coding@schilljs.com>
2023-07-17 16:06:15 +02:00
Joas Schilling
05aa39d777
Fix event names of 2FA related typed events
Signed-off-by: Joas Schilling <coding@schilljs.com>
2023-07-03 14:25:01 +02:00
Thomas Citharel
13a3ebd4cc
feat(CardDAV): Add Sabre\DAV\IMoveTarget support to OCA\DAV\CardDAV\AddressBook
This allows to just UPDATE the card row instead of deleting it and reinsert it. It's very similar to https://github.com/nextcloud/server/pull/30120 for calendars.

As we need the addressbookid exposed, this introduces OCA\DAV\CardDAV\Card that extends Sabre's.

I chose specifically NOT to auto-inject LoggerInterface in Addressbook like in #30120 because the chain of DI is huge just for ONE simple call and it would break an existing dirty call (OCA\Contacts calling OCA\DAV) of ContactsManager in Contacts: https://github.com/nextcloud/contacts/pull/1722 (in SocialApiService), but this is debatable.

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-16 11:38:57 +02:00
Arthur Schiwon
b6c034ac57
Merge pull request #37961 from nextcloud/poc/noid/systemtags-perf
SystemTags endpoint to return tags used by a user with meta data
2023-05-11 10:16:03 +02:00
Arthur Schiwon
6bff6a5667
PoC: SystemTags endpoint to return tags used by a user with meta data
Target case is photos app: when visiting the tags category, all systemtags
of the whole cloud are retrieved. In subequent steps the next tag is
requested until the browser view is filled with tag tiles (i.e. previews
are requested just as well).

With this approach, we incorpoate the dav search and look for user related
tags that are used by them, and already returns the statistics (number of
files tagged with the respective tag) as well as a file id for the purpose
to load the preview. This defaults to the file with the highest id.

Call:
curl -s -u 'user:password' \
  'https://my.nc.srv/remote.php/dav/systemtags-current' \
  -X PROPFIND -H 'Accept: text/plain' \
  -H 'Accept-Language: en-US,en;q=0.5'  -H 'Depth: 1' \
  -H 'Content-Type: text/plain;charset=UTF-8' \
  --data @/home/doe/request-systemtag-props.xml

With request-systemtag-props.xml:
<?xml version="1.0" encoding="UTF-8"?>
<d:propfind xmlns:d="DAV:">
        <d:prop xmlns:oc="http://owncloud.org/ns" xmlns:nc="http://nextcloud.org/ns">
                <oc:id/>
                <oc:display-name/>
                <oc:user-visible/>
                <oc:user-assignable/>
                <oc:can-assign/>
                <nc:files-assigned/>
                <nc:reference-fileid/>
        </d:prop>
</d:propfind>

Example output:
  …
  <d:response>
    <d:href>/master/remote.php/dav/systemtags/84</d:href>
    <d:propstat>
      <d:prop>
        <oc:id>84</oc:id>
        <oc:display-name>Computer</oc:display-name>
        <oc:user-visible>true</oc:user-visible>
        <oc:user-assignable>true</oc:user-assignable>
        <oc:can-assign>true</oc:can-assign>
        <nc:files-assigned>42</nc:files-assigned>
        <nc:reference-fileid>924022</nc:reference-fileid>
      </d:prop>
      <d:status>HTTP/1.1 200 OK</d:status>
    </d:propstat>
  </d:response>
  <d:response>
    <d:href>/remote.php/dav/systemtags/97</d:href>
    <d:propstat>
      <d:prop>
        <oc:id>97</oc:id>
        <oc:display-name>Bear</oc:display-name>
        <oc:user-visible>true</oc:user-visible>
        <oc:user-assignable>true</oc:user-assignable>
        <oc:can-assign>true</oc:can-assign>
        <nc:files-assigned>1</nc:files-assigned>
        <nc:reference-fileid>923422</nc:reference-fileid>
      </d:prop>
      <d:status>HTTP/1.1 200 OK</d:status>
    </d:propstat>
  </d:response>
  …

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2023-05-09 23:51:48 +02:00
Anna Larch
bd80a1b2dd
feat(dav): store scopes for properties and filter locally scoped properties for federated address book sync
Signed-off-by: Anna Larch <anna@nextcloud.com>
2023-05-09 19:17:39 +02:00
Joas Schilling
b91957e3df
fix(dav): Abort requests with 429 instead of waiting
Signed-off-by: Joas Schilling <coding@schilljs.com>
2023-05-03 22:43:36 +02:00
Robin Appelman
74ced3d2eb
expose system tags as dav property for files
Signed-off-by: Robin Appelman <robin@icewind.nl>
2023-04-28 10:46:38 +02:00
Ferdinand Thiessen
62c4ae78df Feature: Provide access to app generated calendars through CalDAV
This adds CalDAV support for app generated calendars,
which are registered to the nextcloud core.
This is done by adding a dav plugin which wraps
all ICalendarProviders into a Sabre plugin (inspired by the deck app).

Add unit test for AppCalendar wrapper plugin and calendar object implementation.

Signed-off-by: Ferdinand Thiessen <rpm@fthiessen.de>
2023-04-25 18:11:49 +02:00
Joas Schilling
cca3b9495c
chore(autoloader): Update autoloaders with composer 2.5.5
Signed-off-by: Joas Schilling <coding@schilljs.com>
2023-04-21 15:53:55 +02:00
Anna
ac90fa2f8e
Merge pull request #36800 from rotdrop/feature/dav-macos-quirks
apps/dav: add some OSX specific quirks.
2023-03-13 11:46:19 +01:00
Julius Härtl
e23aa8883e
feat(s3): Use multipart upload for chunked uploading
This allows to stream file chunks directly to S3 during upload.

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-03-08 14:00:04 +01:00
Claus-Justus Heine
64e9dcc9c3
apps/dav: add some OSX specific quirks.
Signed-off-by: Claus-Justus Heine <himself@claus-justus-heine.de>
2023-03-07 16:23:30 +01:00
Anna Larch
38e9cb6a05 Use recurrence instance to build iMip email
instead of the main VEVENT of a repeating event

Fixes part of https://github.com/nextcloud/calendar/issues/3919

Signed-off-by: Anna Larch <anna@nextcloud.com>
2023-02-02 16:25:59 +01:00
Christoph Wurst
aee9941fed
chore(autoloaders): Update autoloader files for Composer 2.5.1
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2023-01-25 10:42:34 +01:00
Julien Veyssier
73f2876d64
rename SabrePublicPluginEvent to BeforeSabrePubliclyLoadedEvent, run build/autoloaderchecker.sh
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2022-12-15 17:37:34 +01:00
Carl Schwan
f244406ebd Update composer autoloader
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-11-22 13:35:17 +01:00
Thomas Citharel
6f15873321 Add a background job to prune outdated sync tokens
We remove all outdated sync tokens, based on their auto-incremented ID.

By default we only keep the last 10 000, but this can be configurable.

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-27 20:12:13 +00:00
Joas Schilling
c443ecfbff
Rebuild autoloader
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-09-20 10:33:26 +02:00
Carl Schwan
9b8ca9ad1f
Move findBinaryFinder and isFunctionEnabled away from OC_Helper
findBinaryFinder is now a service that is still private but with some
minor optimization (remove the hasKey check).

isFunctionEnabled is now in OCP\Util

Both function are still keep but all internal usage in nextcloud/server
were migrated to the new usage, so that we can remove it in 26

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-08-23 19:44:04 +02:00
Vincent Petry
a95c19e14b
Add share attributes + prevent download permission
Makes it possible to store download permission

Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-07-28 16:53:22 +02:00
Carl Schwan
16b5e6bc7f
Merge pull request #32973 from nextcloud/cleanup/avatar-code
Cleanup avatar related code
2022-07-11 11:56:39 +02:00
Carl Schwan
ec5cbdeb7f Make Color class public
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-07-05 14:44:44 +02:00
Joas Schilling
fdcf3eafd6
Fix determination of cron job run
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-07-01 12:33:05 +02:00
Carl Schwan
a9cfa72d1c Summer cleanup of the federation app
- Use IEventDispatcher instead of deprecated symfony dispatcher
- Use LoggerInterface where possible
- Use php 7.4 properties
- Add type hinting where possible
- Move federation hooks to a seperate listener

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-06-24 15:39:52 +02:00
Thomas Citharel
39ef0500d1
Handle the move operation properly between shared calendars
- Introduce a new CalendarObjectMovedEvent typed event dedicated for
  this operation
- Handle the event in the activity backend and add new appropriate activity subjects

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-06-14 14:40:24 +02:00
Vincent Petry
2ee948e8d1
Merge pull request #30368 from nextcloud/dav-allow-object-properties
Allow DAV Object properties
2022-06-10 17:07:38 +02:00
Vincent Petry
8e61671b82
Merge pull request #32364 from nextcloud/dav-listeners
🧹 Remove all legacy event dispatchers from CalDAV & CardDAV backends
2022-06-10 15:57:35 +02:00
Joas Schilling
8e3b30f388
Don't spam the log with fatals when maintenance mode is enabled or an upgrade has to be done
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-06-10 00:36:52 +02:00
Thomas Citharel
4bb31c021e
Remove all legacy event dispatchers from CalDAV & CardDAV backends
Move them to proper EventListeners and test them

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-05-17 15:09:46 +02:00
Thomas Citharel
bd8b2137e2
Allow DAV Object properties
The current implementation only saves them as string. It seems they can
be more complex than that, and that objects were saved directly.

You may find such objects saved in some production databases by
executing:
```sql
SELECT * from oc_properties where propertyvalue = 'Object';
```

This commit adds a repair job to clean all of these "broken" properties
values, adds a new database column to save the type of the property, and
handles converting from and to correct values.

Implementation is very similar to SabreDAV's own PDO backend: 4921806dfb/sabre/dav/lib/DAV/PropertyStorage/Backend/PDO.php

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-05-16 15:02:00 +02:00
Carl Schwan
829490ab7a Cleanup dav
- Remove unused class AppEnabledPlugin
- Add more type hinting when possible

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-05-05 22:03:59 +02:00
Carl Schwan
7817845538 Add a metadata service to store file metadata
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-04-13 14:06:29 +02:00
Vincent Petry
4bb8e9472e
Merge pull request #31673 from nextcloud/feat/contacts-migration
Contacts migration
2022-04-07 17:36:53 +02:00
John Molakvoæ
47cc5a9405
Merge pull request #29510 from nextcloud/backport/27378/master 2022-04-04 22:15:01 +02:00
Carl Schwan
135bdb3d58
Merge pull request #30823 from nextcloud/work/profiler
Built-in profiler

This adds the required API for collecting information about requests. This information
can then be displayed with the new 'profiler' app.
2022-04-04 12:56:37 +02:00
Carl Schwan
7d272c54d0 Add a built-in profiler inside Nextcloud
The webui is provided by a seperate application named profiler

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-04-04 10:28:26 +02:00
Robin Appelman
ff666e648a Add dav plugin to trigger recalculating of checksums
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-03-31 07:44:13 +00:00