Skip to content

Commit

Permalink
Send reminder emails and notifications
Browse files Browse the repository at this point in the history
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
  • Loading branch information
tcitworld committed Jul 13, 2017
1 parent 598835b commit 5554ec6
Show file tree
Hide file tree
Showing 8 changed files with 575 additions and 7 deletions.
38 changes: 38 additions & 0 deletions apps/dav/appinfo/database.xml
Original file line number Diff line number Diff line change
Expand Up @@ -798,4 +798,42 @@ CREATE TABLE calendarobjects (
</index>
</declaration>
</table>
<table>
<name>*dbprefix*calendar_reminders</name>
<declaration>
<field>
<name>id</name>
<type>integer</type>
<default>0</default>
<notnull>true</notnull>
<autoincrement>1</autoincrement>
<unsigned>true</unsigned>
<length>11</length>
</field>
<field>
<name>user</name>
<type>text</type>
<length>64</length>
</field>
<field>
<name>calendarid</name>
<type>integer</type>
<length>11</length>
</field>
<field>
<name>objecturi</name>
<type>string</type>
<length>255</length>
</field>
<field>
<name>type</name>
<type>string</type>
<length>255</length>
</field>
<field>
<name>notificationDate</name>
<type>timestamp</type>
</field>
</declaration>
</table>
</database>
4 changes: 4 additions & 0 deletions apps/dav/appinfo/info.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@
<command>OCA\DAV\Command\SyncSystemAddressBook</command>
</commands>

<background-jobs>
<job>OCA\DAV\CalDAV\Reminder\ReminderJob</job>
</background-jobs>

<activity>
<filters>
<filter>OCA\DAV\CalDAV\Activity\Filter\Calendar</filter>
Expand Down
35 changes: 30 additions & 5 deletions apps/dav/lib/AppInfo/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
use OCA\DAV\CalDAV\Activity\Backend;
use OCA\DAV\CalDAV\Activity\Provider\Event;
use OCA\DAV\CalDAV\BirthdayService;
use OCA\DAV\CalDAV\Reminder\Backend as ReminderBackend;
use OCA\DAV\CalDAV\Reminder\Notifier;
use OCA\DAV\Capabilities;
use OCA\DAV\CardDAV\ContactsManager;
use OCA\DAV\CardDAV\PhotoCache;
Expand All @@ -40,6 +42,8 @@

class Application extends App {

const APP_ID = 'dav';

/**
* Application constructor.
*/
Expand Down Expand Up @@ -86,8 +90,7 @@ public function registerHooks() {
}
});

// carddav/caldav sync event setup
$listener = function($event) {
$birthdayListener = function ($event) {
if ($event instanceof GenericEvent) {
/** @var BirthdayService $b */
$b = $this->getContainer()->query(BirthdayService::class);
Expand All @@ -99,9 +102,9 @@ public function registerHooks() {
}
};

$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) {
$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::createCard', $birthdayListener);
$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::updateCard', $birthdayListener);
$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', function ($event) {
if ($event instanceof GenericEvent) {
/** @var BirthdayService $b */
$b = $this->getContainer()->query(BirthdayService::class);
Expand Down Expand Up @@ -182,6 +185,16 @@ public function registerHooks() {
$event->getArgument('shares'),
$event->getArgument('objectData')
);

/** @var ReminderBackend $reminderBackend */
$reminderBackend = $this->getContainer()->query(ReminderBackend::class);

$reminderBackend->onTouchCalendarObject(
$eventName,
$event->getArgument('calendarData'),
$event->getArgument('shares'),
$event->getArgument('objectData')
);
};
$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject', $listener);
$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::updateCalendarObject', $listener);
Expand All @@ -192,4 +205,16 @@ public function getSyncService() {
return $this->getContainer()->query(SyncService::class);
}

public function registerNotifier() {
$this->getContainer()->getServer()->getNotificationManager()->registerNotifier(function() {
return $this->getContainer()->query(Notifier::class);
}, function() {
$l = $this->getContainer()->getServer()->getL10NFactory()->get(self::APP_ID);
return [
'id' => self::APP_ID,
'name' => $l->t('Calendars and Contacts'),
];
});
}

}
4 changes: 3 additions & 1 deletion apps/dav/lib/CalDAV/CalDavBackend.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCA\DAV\Connector\Sabre\Principal;
use OCA\DAV\DAV\Sharing\Backend;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\IUser;
use OCP\IUserManager;
Expand Down Expand Up @@ -157,13 +158,15 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
* @param IDBConnection $db
* @param Principal $principalBackend
* @param IUserManager $userManager
* @param IConfig $config
* @param ISecureRandom $random
* @param EventDispatcherInterface $dispatcher
* @param bool $legacyEndpoint
*/
public function __construct(IDBConnection $db,
Principal $principalBackend,
IUserManager $userManager,
IConfig $config,
ISecureRandom $random,
EventDispatcherInterface $dispatcher,
$legacyEndpoint = false) {
Expand Down Expand Up @@ -1001,7 +1004,6 @@ function createCalendarObject($calendarId, $objectUri, $calendarData) {
*/
function updateCalendarObject($calendarId, $objectUri, $calendarData) {
$extraData = $this->getDenormalizedData($calendarData);

$query = $this->db->getQueryBuilder();
$query->update('calendarobjects')
->set('calendardata', $query->createNamedParameter($calendarData, IQueryBuilder::PARAM_LOB))
Expand Down
Loading

0 comments on commit 5554ec6

Please sign in to comment.