Move logic for dealing with event tags into the Kronolith_Event object.
authorMichael J. Rubinsky <mrubinsk@horde.org>
Mon, 9 Feb 2009 01:19:52 +0000 (20:19 -0500)
committerMichael J. Rubinsky <mrubinsk@horde.org>
Mon, 9 Feb 2009 01:19:52 +0000 (20:19 -0500)
kronolith/add.php
kronolith/lib/Driver.php
kronolith/lib/Driver/kolab.php
kronolith/lib/Driver/sql.php
kronolith/lib/Views/Event.php

index 35d3c2f..50e2500 100644 (file)
@@ -50,8 +50,6 @@ if (!Util::getFormData('cancel')) {
                 }
             }
         }
-        $tagger = Kronolith::getTagger();
-        $tagger->tag($event->getUID(), Util::getFormData('tags'), 'event');
     }
 }
 
index ef3b7b0..587e545 100644 (file)
@@ -365,6 +365,13 @@ class Kronolith_Event {
     var $private = false;
 
     /**
+     * An array of this event's tags in the form of ('tag1', 'tag2', ...)
+     *
+     * @var array
+     */
+    var $tags = array();
+
+    /**
      * All the attendees of this event.
      *
      * This is an associative array where the keys are the email addresses
@@ -483,6 +490,8 @@ class Kronolith_Event {
 
         if ($eventObject !== null) {
             $this->fromDriver($eventObject);
+            $tagger = Kronolith::getTagger();
+            $this->tags = $tagger->getTags($this->getUID(), 'event');
         }
     }
 
@@ -1937,6 +1946,9 @@ class Kronolith_Event {
             }
         }
 
+        // Tags.
+        $this->tags = Util::getFormData('tags');
+
         $this->initialized = true;
     }
 
index b97a2b9..0719731 100644 (file)
@@ -1257,6 +1257,14 @@ class Kronolith_Driver_kolab_wrapper_new extends Kronolith_Driver_kolab_wrapper
             return $result;
         }
 
+        /* Deal with tags */
+        $tagger = Kronolith::getTagger();
+        if (!empty($edit)) {
+            $tagger->replaceTags($event->getUID(), $event->tags, 'event');
+        } else {
+            $tagger->tag($event->getUID(), $event->tags, 'event');
+        }
+
         /* Notify about the changed event. */
         $result = Kronolith::sendNotification($event, $edit ? 'edit' : 'add');
         if (is_a($result, 'PEAR_Error')) {
index 51c42f6..2cbcd0b 100644 (file)
@@ -511,6 +511,10 @@ class Kronolith_Driver_sql extends Kronolith_Driver {
                 $history->log('kronolith:' . $this->_calendar . ':' . $event->getUID(), array('action' => 'modify'), true);
             }
 
+            /* Update tags */
+            $tagger = Kronolith::getTagger();
+            $tagger->replaceTags($event->getUID(), $event->tags, 'event');
+
             /* Notify users about the changed event. */
             $result = Kronolith::sendNotification($event, 'edit');
             if (is_a($result, 'PEAR_Error')) {
@@ -565,6 +569,10 @@ class Kronolith_Driver_sql extends Kronolith_Driver {
             $history = Horde_History::singleton();
             $history->log('kronolith:' . $this->_calendar . ':' . $uid, array('action' => 'add'), true);
 
+            /* Deal with any tags */
+            $tagger = Kronolith::getTagger();
+            $tagger->tag($event->getUID(), $event->tags, 'event');
+
             /* Notify users about the new event. */
             $result = Kronolith::sendNotification($event, 'add');
             if (is_a($result, 'PEAR_Error')) {
index 02a0155..2a315a9 100644 (file)
@@ -96,9 +96,7 @@ class Kronolith_View_Event {
         $timeFormat = $prefs->getValue('twentyFour') ? 'G:i' : 'g:ia';
 
         // Tags
-        $tagger = Kronolith::getTagger();
-        $tags = $tagger->getTags($this->event->getUID(), 'event');
-        $tags = implode(', ', array_values($tags));
+        $tags = implode(', ', $this->event->tags);
 
 
         echo '<div id="Event"' . ($active ? '' : ' style="display:none"') . '>';