Move most of quickAdd() to Kronolith:: so that we can call it directly.
authorJan Schneider <jan@horde.org>
Mon, 31 Aug 2009 14:33:16 +0000 (16:33 +0200)
committerJan Schneider <jan@horde.org>
Mon, 31 Aug 2009 14:33:16 +0000 (16:33 +0200)
kronolith/lib/Api.php
kronolith/lib/Kronolith.php

index efbfeb8..8afafcd 100644 (file)
@@ -690,32 +690,7 @@ class Kronolith_Api extends Horde_Registry_Api
             return PEAR::raiseError(_("Permission Denied"));
         }
 
-        $text = trim($text);
-        list($title, $description) = explode($text, "\n", 2);
-        $title = trim($title);
-        $description = trim($description);
-
-        $dateParser = Horde_Date_Parser::factory();
-        $r = $dateParser->parse($title, array('return' => 'result'));
-        if (! ($d = $r->guess())) {
-            throw new Horde_Exception(json_encode(array('name' => $title, 'description' => $description)));
-        }
-
-        $title = $r->untaggedText();
-        $start = $d->timestamp();
-
-        $kronolith_driver = Kronolith::getDriver(null, $calendar);
-        $event = $kronolith_driver->getEvent();
-        $event->setTitle($title);
-        $event->setDescription($description);
-        $event->start = $d;
-        $event->end = $d->add(array('hour' => 1));
-
-        $eventId = $event->save();
-        if (is_a($eventId, 'PEAR_Error')) {
-            return $eventId;
-        }
-        return $event->getUID();
+        return Kronolith::quickAdd($text, $calendar);
     }
 
     /**
index 674b17c..83c97bb 100644 (file)
@@ -618,6 +618,46 @@ class Kronolith
     }
 
     /**
+     * Imports an event parsed from a string.
+     *
+     * @param string $text      The text to parse into an event
+     * @param string $calendar  The calendar into which the event will be
+     *                          imported.  If 'null', the user's default
+     *                          calendar will be used.
+     *
+     * @return array  The UID of all events that were added.
+     */
+    public function quickAdd($text, $calendar = null)
+    {
+        $text = trim($text);
+        list($title, $description) = explode($text, "\n", 2);
+        $title = trim($title);
+        $description = trim($description);
+
+        $dateParser = Horde_Date_Parser::factory();
+        $r = $dateParser->parse($title, array('return' => 'result'));
+        if (!($d = $r->guess())) {
+            throw new Horde_Exception(_("Cannot parse event description."));
+        }
+
+        $title = $r->untaggedText();
+        $start = $d->timestamp();
+
+        $kronolith_driver = Kronolith::getDriver(null, $calendar);
+        $event = $kronolith_driver->getEvent();
+        $event->setTitle($title);
+        $event->setDescription($description);
+        $event->start = $d;
+        $event->end = $d->add(array('hour' => 1));
+
+        $eventId = $event->save();
+        if (is_a($eventId, 'PEAR_Error')) {
+            return $eventId;
+        }
+        return $event->getUID();
+    }
+
+    /**
      * Initial app setup code.
      */
     public static function initialize()