Branch 'dev/kolab3' - plugins/calendar

Thomas Brüderli bruederli at kolabsys.com
Wed May 16 18:59:16 CEST 2012


 plugins/calendar/TODO                           |    3 ++-
 plugins/calendar/drivers/kolab/SQL/mysql.sql    |    5 ++++-
 plugins/calendar/drivers/kolab/kolab_driver.php |   24 ++++++++++++++++--------
 3 files changed, 22 insertions(+), 10 deletions(-)

New commits:
commit 394fb8f56dc4f4cb755f19acf3495c60db43489b
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Wed May 16 18:58:57 2012 +0200

    Store event alarm status by event uid + user id. Attention: database schema changed!

diff --git a/plugins/calendar/TODO b/plugins/calendar/TODO
index 35d5e0a..b1a08d7 100644
--- a/plugins/calendar/TODO
+++ b/plugins/calendar/TODO
@@ -13,7 +13,7 @@
 + View: 3.3: Display modes (agenda / day / week / month)
   + Day / Week / Month
   + List (Agenda) view
-    - Add selection for date range
+    + Add selection for date range
   - Individual days selection
 + Show list of calendars in a (hideable) drawer
   + View: 3.1: Folder list
@@ -39,6 +39,7 @@
 + Colors for calendars should be user-configurable
 + ICS parser/generator (http://code.google.com/p/qcal/)
 
+- Script to send event alarms by email (in cronjob)
 - Export *with* attachments
 - Remember last visited view
 - Create/manage invdividual views
diff --git a/plugins/calendar/drivers/kolab/SQL/mysql.sql b/plugins/calendar/drivers/kolab/SQL/mysql.sql
index e64413a..7a93d0a 100644
--- a/plugins/calendar/drivers/kolab/SQL/mysql.sql
+++ b/plugins/calendar/drivers/kolab/SQL/mysql.sql
@@ -8,9 +8,12 @@
 
 CREATE TABLE IF NOT EXISTS `kolab_alarms` (
   `event_id` VARCHAR(255) NOT NULL,
+  `user_id` int(10) UNSIGNED NOT NULL,
   `notifyat` DATETIME DEFAULT NULL,
   `dismissed` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
-  PRIMARY KEY(`event_id`)
+  PRIMARY KEY(`event_id`),
+  CONSTRAINT `fk_kolab_alarms_user_id` FOREIGN KEY (`user_id`)
+    REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
 ) /*!40000 ENGINE=INNODB */;
 
 CREATE TABLE IF NOT EXISTS `itipinvitations` (
diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php
index 5d1906b..b97d2e1 100644
--- a/plugins/calendar/drivers/kolab/kolab_driver.php
+++ b/plugins/calendar/drivers/kolab/kolab_driver.php
@@ -786,11 +786,13 @@ class kolab_driver extends calendar_driver
     if (!empty($events)) {
       $event_ids = array_map(array($this->rc->db, 'quote'), array_keys($events));
       $result = $this->rc->db->query(sprintf(
-        "SELECT * FROM kolab_alarms
-         WHERE event_id IN (%s)",
-         join(',', $event_ids),
-         $this->rc->db->now()
-       ));
+          "SELECT * FROM kolab_alarms
+           WHERE event_id IN (%s) AND user_id=?",
+           join(',', $event_ids),
+           $this->rc->db->now()
+          ),
+          $this->rc->user->ID
+       );
 
       while ($result && ($e = $this->rc->db->fetch_assoc($result))) {
         $dbdata[$e['event_id']] = $e;
@@ -820,16 +822,22 @@ class kolab_driver extends calendar_driver
   public function dismiss_alarm($event_id, $snooze = 0)
   {
     // delete old alarm entry
-    $this->rc->db->query("DELETE FROM kolab_alarms WHERE event_id=?", $event_id);
+    $this->rc->db->query(
+      "DELETE FROM kolab_alarms
+       WHERE event_id=? AND user_id=?",
+       $event_id,
+       $this->rc->user->ID
+    );
 
     // set new notifyat time or unset if not snoozed
     $notifyat = $snooze > 0 ? date('Y-m-d H:i:s', time() + $snooze) : null;
 
     $query = $this->rc->db->query(
       "INSERT INTO kolab_alarms
-       (event_id, dismissed, notifyat)
-       VALUES(?, ?, ?)",
+       (event_id, user_id, dismissed, notifyat)
+       VALUES(?, ?, ?, ?)",
       $event_id,
+      $this->rc->user->ID,
       $snooze > 0 ? 0 : 1,
       $notifyat
     );





More information about the commits mailing list