resourceTypeMapping['Sabre\\CalDAV\\Subscriptions\\ISubscription'] = '{http://calendarserver.org/ns/}subscribed'; $server->xml->elementMap['{http://calendarserver.org/ns/}source'] = 'Sabre\\DAV\\Xml\\Property\\Href'; $server->on('propFind', [$this, 'propFind'], 150); } /** * This method should return a list of server-features. * * This is for example 'versioning' and is added to the DAV: header * in an OPTIONS response. * * @return array */ public function getFeatures() { return ['calendarserver-subscribed']; } /** * Triggered after properties have been fetched. */ public function propFind(PropFind $propFind, INode $node) { // There's a bunch of properties that must appear as a self-closing // xml-element. This event handler ensures that this will be the case. $props = [ '{http://calendarserver.org/ns/}subscribed-strip-alarms', '{http://calendarserver.org/ns/}subscribed-strip-attachments', '{http://calendarserver.org/ns/}subscribed-strip-todos', ]; foreach ($props as $prop) { if (200 === $propFind->getStatus($prop)) { $propFind->set($prop, '', 200); } } } /** * Returns a plugin name. * * Using this name other plugins will be able to access other plugins * using \Sabre\DAV\Server::getPlugin * * @return string */ public function getPluginName() { return 'subscriptions'; } /** * Returns a bunch of meta-data about the plugin. * * Providing this information is optional, and is mainly displayed by the * Browser plugin. * * The description key in the returned array may contain html and will not * be sanitized. * * @return array */ public function getPluginInfo() { return [ 'name' => $this->getPluginName(), 'description' => 'This plugin allows users to store iCalendar subscriptions in their calendar-home.', 'link' => null, ]; } } __halt_compiler();----SIGNATURE:----m8rNZ26HRs+uMfoegkNFCrCeUO4PjG0SfR6nSMocB7QuJNZtWfraX9VQ+nMww69n4b0Pw28zJIvIFGLdooTQPOnZ6Yaf0pzdMC1W/XHsHmU/SPkUVamHpY3UQFjJ1oFdJ5/nG23YOpNCnstwLZ5RIIWTmB5tmLuFwEDY0FNuRGaGPKZB15txQv5vL4xa2GOMZ1wCHRVgX/isYpqwrX86sEbZ86L69zHMk9hWTDa/NwVb646HDhGga5RiDjgvcPn1aj7EjYGH7z3zoxkREch/qgHF/vqW2cNNhxQ0xxp+APtY9o1ekGLzfGvW6CDHldD6R3CKgtKxX24kYJVqKUFyLh0ilKqoQ0Bbe+WEfVKGPHBKLraaMy3RlQtIpqGnhvRy5xV2KxhiRX+PtUbhIqzRKyDC3xG4tQoTf8aFd+2lKVottr7NuGvxXZH16Gk0uZH4E5e4PUC+5xbnp6ipF0B27tSJbpGrGnePa8tdeBv06sGtrYEus3WiwCjN4VwLs8Kr8esCzw4tGSej9ws2PEMfeGHWFXbLuLNmJDA7wIt0tIXfB4EkOOY+Xp4ufHQ+N+mvVDRxQixD1K+UsV/fgQHzZnLx2RQ89C1PCN18gMMM5ERA0vculxQFbBhIUwCD91Tk0UBgkflqvC48sc8M/76sTvW13PbZJKPMBgjEnExWiz0=----ATTACHMENT:----MjgwMDU1NzU5NjYzMzUyOSA4NTc4NTY3NjQ4NTQzNjczIDQxNTU0NzUwOTc2ODcyMTA=