diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2016-02-03 15:43:45 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2016-02-18 11:48:34 +0100 |
commit | c9187cc82084e5b140f52cbaefa7d71c70f989a0 (patch) | |
tree | 20418d39a67ea01c4b31e183fd1334b88d442d66 /apps/dav/appinfo | |
parent | 73d46afc3c5ef237cc8a5431aa1bef4686a7521b (diff) | |
download | nextcloud-server-c9187cc82084e5b140f52cbaefa7d71c70f989a0.tar.gz nextcloud-server-c9187cc82084e5b140f52cbaefa7d71c70f989a0.zip |
Sync a users contacts birthday to the users birthday calendar
Diffstat (limited to 'apps/dav/appinfo')
-rw-r--r-- | apps/dav/appinfo/application.php | 36 | ||||
-rw-r--r-- | apps/dav/appinfo/register_command.php | 4 |
2 files changed, 35 insertions, 5 deletions
diff --git a/apps/dav/appinfo/application.php b/apps/dav/appinfo/application.php index 28b9a833456..df3bd34d477 100644 --- a/apps/dav/appinfo/application.php +++ b/apps/dav/appinfo/application.php @@ -20,6 +20,7 @@ */ namespace OCA\Dav\AppInfo; +use OCA\DAV\CalDAV\BirthdayService; use OCA\DAV\CalDAV\CalDavBackend; use OCA\DAV\CardDAV\CardDavBackend; use OCA\DAV\CardDAV\ContactsManager; @@ -34,6 +35,7 @@ use \OCP\AppFramework\App; use OCP\AppFramework\IAppContainer; use OCP\Contacts\IManager; use OCP\IUser; +use Symfony\Component\EventDispatcher\GenericEvent; class Application extends App { @@ -74,12 +76,12 @@ class Application extends App { $container->registerService('CardDavBackend', function($c) { /** @var IAppContainer $c */ $db = $c->getServer()->getDatabaseConnection(); - $logger = $c->getServer()->getLogger(); + $dispatcher = $c->getServer()->getEventDispatcher(); $principal = new \OCA\DAV\Connector\Sabre\Principal( $c->getServer()->getUserManager(), $c->getServer()->getGroupManager() ); - return new CardDavBackend($db, $principal, $logger); + return new CardDavBackend($db, $principal, $dispatcher); }); $container->registerService('CalDavBackend', function($c) { @@ -125,6 +127,36 @@ class Application extends App { /** @var HookManager $hm */ $hm = $this->getContainer()->query('HookManager'); $hm->setup(); + + $listener = function($event) { + if ($event instanceof GenericEvent) { + $b = new BirthdayService( + $this->getContainer()->query('CalDavBackend'), + $this->getContainer()->query('CardDavBackend') + ); + $b->onCardChanged( + $event->getArgument('addressBookId'), + $event->getArgument('cardUri'), + $event->getArgument('cardData') + ); + } + }; + + $dispatcher = $this->getContainer()->getServer()->getEventDispatcher(); + $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::createCard', $listener); + $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::updateCard', $listener); + $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', function($event) { + if ($event instanceof GenericEvent) { + $b = new BirthdayService( + $this->getContainer()->query('CalDavBackend'), + $this->getContainer()->query('CardDavBackend') + ); + $b->onCardDeleted( + $event->getArgument('addressBookId'), + $event->getArgument('cardUri') + ); + } + }); } public function getSyncService() { diff --git a/apps/dav/appinfo/register_command.php b/apps/dav/appinfo/register_command.php index 4981cab9264..963bea16ca8 100644 --- a/apps/dav/appinfo/register_command.php +++ b/apps/dav/appinfo/register_command.php @@ -26,18 +26,16 @@ use OCA\Dav\Command\MigrateAddressbooks; use OCA\Dav\Command\MigrateCalendars; use OCA\DAV\Command\SyncSystemAddressBook; -$config = \OC::$server->getConfig(); $dbConnection = \OC::$server->getDatabaseConnection(); $userManager = OC::$server->getUserManager(); $groupManager = OC::$server->getGroupManager(); $config = \OC::$server->getConfig(); -$logger = \OC::$server->getLogger(); $app = new Application(); /** @var Symfony\Component\Console\Application $application */ -$application->add(new CreateAddressBook($userManager, $groupManager, $dbConnection, $logger)); $application->add(new CreateCalendar($userManager, $groupManager, $dbConnection)); +$application->add(new CreateAddressBook($userManager, $app->getContainer()->query('CardDavBackend'))); $application->add(new SyncSystemAddressBook($app->getSyncService())); // the occ tool is *for now* only available in debug mode for developers to test |