[dev] Horde's SabreDAV 2.0.9 and PHP 7 compat

Ralf Lang lang at b1-systems.de
Sun Feb 28 21:04:19 UTC 2021


Am 17.02.21 um 21:07 schrieb Jan Schneider:
>
> Zitat von Ralf Lang <lang at b1-systems.de>:
>
>> Am 28.01.21 um 23:42 schrieb Ralf Lang:
>>> Hallo,
>>>
>>> The 2.0.9 version of sabreDav bundled with Horde_Dav does not work
>>> correctly under php 7.2 (and possibly all php 7 versions).
>>> While a quick check against thunderbird seems to show it's working
>>> reasonably well, a sync with davx5/davdroid will silently fail. The
>>> server will simply never offer any entries for syncing.
>>>
>>> The key issue is in the CalendarQueryValidator. This is the commit
>>> fixing it:
>>>
>>> https://github.com/sabre-io/dav/commit/c2e3f2f093c6942c5d90bfadf1a13c06465a3361
>>>
>>>
>>> On the weekend, I will prepare a PR to upgrade that dependency at least
>>> to 2.1, if not 3.x - depending on the number of issues I run into.
>>> Implementing calendar sharing, delegation or collection-sync is out of
>>> scope for now, though.
>> The git master of horde_dav already has a bundled sabredav 2.1.10 while
>> the latest proper release has 1.8.12.
>> For my upgrade project, I will unbundle sabredav and use composer.
>>
>> As FRAMEWORK_5_2 has a bc requirement to run on PEAR and on PHP 5.3, it
>> would be incompatible anyway. Modern sabredav requires PHP 7
>
> Yes, I remember, that's why I couldn't merge this change to FW_5_2.
>
TL;DR: Sabre/Dav 3.x now works.


I have a non-prod version running using Sabre/DAV 3.0.9 and I will next
test against Sabre/DAV 3.2.3
I have not yet decided if I aim for 4.0/4.1 or if I leave this to a
future upgrade project.
I have not done optional work or added any of the new features
available. This would be separate feature development projects.

Anyway, you can use the patches by consuming the
maintaina-com/FRAMEWORK_6_0 branches of core, dav, kronolith, nag, turba.
The tagged alpha versions don't have that feature yet. No pull requests yet.

However, you can backport/cherry-pick the changes yourself, they should
run fine against horde/master branches of the said packages.

Here's the full change set:

sabredav 3.x related changes:
DONE
Horde_Core_Factory_DavServer CalendarRootNode -> CalendarRootNode
Compat 8ceb42738ba8012b11e4fbd8b127297807b7d070


Horde_Dav unbundle / add sabre/dav 3 dependency
fb98c8abd835da8c03286d790fabf2f5d84a5adf

Horde_Dav_Collection -> move from URLUtil to Sabre/Uri/Uri
Horde_Dav_Principals -> move from URLUtil to Sabre/Uri/Uri
Horde_Dav_Calendar_Backend -> move from URLUtil to Sabre/Uri/Uri
Horde_Dav_Calendar_File -> move from URLUtil to Sabre/Uri/Uri
Horde_Dav_File -> DAV\Property DAV\Xml\Property
Horde_Dav_Collection -> DAV\Property DAV\Xml\Property
Horde_Dav_Contacts_Backend -> move from URLUtil to Sabre/Uri/Uri

Compat 0bab1eb844f0d26c6a07f6d21a47a9c53cca8a04


Nag_Application SupportedCalendarComponentSet namespace -> xml
Compat c59e8a6288288768550679b26fe5877b06f66860


Kronolith_Application
Sabre\CalDAV\Property\SupportedCalendarComponentSet ns -> xml
Kronolith: Fix two instances in davGetObject, davGetObjects where
Horde_Date objects would spill into SabreDav context and break sabreDav
3.0.9 on a DateTime issue
Compat c90eb243150d941b088125cd2039a99be2707e90

Turba_Application Sabre\CardDAV\Property\SupportedAddressData
Compat 165d7b4bd62149a5cd65a54f321fa82f158f907a


NOT DONE:
Principal backends now have a findByUri method but the default
implementation is not performance optimized for our Horde backend.
Support for free-busy reports has moved to a new plugin. I have not
activated that plugin.
Sabre/DAV 4.x upgrades don't have an official upgrade guide, need to
poke around what's breaking.



-- 
Ralf Lang
Linux Consultant / Developer
Tel.: +49-170-6381563
Mail: lang at b1-systems.de
B1 Systems GmbH
Osterfeldstraße 7 / 85088 Vohburg / http://www.b1-systems.de
GF: Ralph Dehner / Unternehmenssitz: Vohburg / AG: Ingolstadt,HRB 3537



More information about the dev mailing list