aboutsummaryrefslogtreecommitdiffstats
path: root/apps/dav/lib/CardDAV/HasPhotoPlugin.php
diff options
context:
space:
mode:
authorJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2019-02-26 17:19:26 +0100
committerJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2019-02-27 09:04:01 +0100
commitcea53d0a07843ccddad9a6bf4c984617435c9409 (patch)
tree9c9919b113b20def79a63570e14f33fe0c31128f /apps/dav/lib/CardDAV/HasPhotoPlugin.php
parent0051bb7e4cd890793edac99d5b6475457c8580f3 (diff)
downloadnextcloud-server-cea53d0a07843ccddad9a6bf4c984617435c9409.tar.gz
nextcloud-server-cea53d0a07843ccddad9a6bf4c984617435c9409.zip
Add HasPhoto DAV plugin
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
Diffstat (limited to 'apps/dav/lib/CardDAV/HasPhotoPlugin.php')
-rw-r--r--apps/dav/lib/CardDAV/HasPhotoPlugin.php100
1 files changed, 100 insertions, 0 deletions
diff --git a/apps/dav/lib/CardDAV/HasPhotoPlugin.php b/apps/dav/lib/CardDAV/HasPhotoPlugin.php
new file mode 100644
index 00000000000..58fffd275d9
--- /dev/null
+++ b/apps/dav/lib/CardDAV/HasPhotoPlugin.php
@@ -0,0 +1,100 @@
+<?php
+declare (strict_types = 1);
+/**
+ * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @author John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\DAV\CardDAV;
+
+use Sabre\CardDAV\Card;
+use Sabre\DAV\INode;
+use Sabre\DAV\PropFind;
+use Sabre\DAV\Server;
+use Sabre\VObject\Component\VCard;
+use Sabre\VObject\Reader;
+
+class HasPhotoPlugin extends \Sabre\CardDAV\Plugin {
+
+ /** @var Server */
+ protected $server;
+
+ /**
+ * Initializes the plugin and registers event handlers
+ *
+ * @param Server $server
+ * @return void
+ */
+ function initialize(Server $server) {
+ $server->on('propFind', [$this, 'propFind']);
+ parent::initialize($server);
+ }
+
+ /**
+ * Adds all CardDAV-specific properties
+ *
+ * @param PropFind $propFind
+ * @param INode $node
+ * @return void
+ */
+ function propFind(PropFind $propFind, INode $node) {
+
+ $ns = '{http://nextcloud.com/ns}';
+
+ if ($node instanceof Card) {
+ $propFind->handle($ns . 'has-photo', function () use ($node) {
+ $vcard = Reader::read($node->get());
+ return ($vcard instanceof VCard && $vcard->PHOTO);
+ });
+ }
+ }
+
+ /**
+ * 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 'vcard-has-photo';
+ }
+
+ /**
+ * 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' => 'Return a boolean stating if the vcard have a photo property set or not.'
+ ];
+
+ }
+
+}