From 8d576328132728b277e6cda19840065a9537566a Mon Sep 17 00:00:00 2001 From: Chuck Hagenbuch Date: Fri, 14 Aug 2009 16:38:10 -0400 Subject: [PATCH] add quickAdd API method --- kronolith/lib/Api.php | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/kronolith/lib/Api.php b/kronolith/lib/Api.php index da35a5d60..efbfeb88c 100644 --- a/kronolith/lib/Api.php +++ b/kronolith/lib/Api.php @@ -667,6 +667,58 @@ class Kronolith_Api extends Horde_Registry_Api } /** + * 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) + { + $no_maint = true; + require_once dirname(__FILE__) . '/base.php'; + global $kronolith_shares; + + if (!isset($calendar)) { + $calendar = Kronolith::getDefaultCalendar(PERMS_EDIT); + } + if (!array_key_exists($calendar, + Kronolith::listCalendars(false, PERMS_EDIT))) { + 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(); + } + + /** * Exports an event, identified by UID, in the requested content type. * * @param string $uid Identify the event to export. -- 2.11.0