diff options
Diffstat (limited to 'lib/helper.php')
-rw-r--r-- | lib/helper.php | 241 |
1 files changed, 0 insertions, 241 deletions
diff --git a/lib/helper.php b/lib/helper.php deleted file mode 100644 index c5577829..00000000 --- a/lib/helper.php +++ /dev/null @@ -1,241 +0,0 @@ -<?php -/** - * ownCloud - Utility class for VObject properties - * - * @author Thomas Tanghus - * @copyright 2013-2014 Thomas Tanghus (thomas@tanghus.net) - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace OCA\Tasks; - -use Sabre\VObject; -// use OCA\Tasks\App; - -Class helper { - - public static function parseVTODO($data) { - $object = \OC_VObject::parse($data); - $vtodo = $object->VTODO; - return $vtodo; - } - - public static function arrayForJSON($id, $vtodo, $user_timezone){ - $task = array( 'id' => $id ); - $task['name'] = $vtodo->getAsString('SUMMARY'); - $task['created'] = $vtodo->getAsString('CREATED'); - $task['note'] = $vtodo->getAsString('DESCRIPTION'); - $task['location'] = $vtodo->getAsString('LOCATION'); - $task['categories'] = $vtodo->getAsArray('CATEGORIES'); - $start = $vtodo->DTSTART; - if ($start) { - try { - $start = $start->getDateTime(); - $start->setTimezone(new \DateTimeZone($user_timezone)); - $task['start'] = $start->format('Ymd\THis'); - } catch(\Exception $e) { - $task['start'] = null; - \OCP\Util::writeLog('tasks', $e->getMessage(), \OCP\Util::ERROR); - } - } else { - $task['start'] = null; - } - $due = $vtodo->DUE; - if ($due) { - try { - $due = $due->getDateTime(); - $due->setTimezone(new \DateTimeZone($user_timezone)); - $task['due'] = $due->format('Ymd\THis'); - } catch(\Exception $e) { - $task['due'] = null; - \OCP\Util::writeLog('tasks', $e->getMessage(), \OCP\Util::ERROR); - } - } else { - $task['due'] = null; - } - $reminder = $vtodo->VALARM; - if($reminder) { - try { - - $reminderType = $reminder->TRIGGER['VALUE']->value; - $reminderAction = $reminder->ACTION->value; - $reminderDate = null; - $reminderDuration = null; - - - if($reminderType == 'DATE-TIME'){ - $reminderDate = $reminder->TRIGGER->getDateTime(); - $reminderDate->setTimezone(new \DateTimeZone($user_timezone)); - $reminderDate = $reminderDate->format('Ymd\THis'); - } elseif ($reminderType == 'DURATION' && ($start || $due)) { - - $parsed = VObject\DateTimeParser::parseDuration($reminder->TRIGGER,true); - // Calculate the reminder date from duration and start date - $related = null; - if(is_object($reminder->TRIGGER['RELATED'])){ - $related = $reminder->TRIGGER['RELATED']->value; - if(is_object($reminder->TRIGGER['RELATED']) && $reminder->TRIGGER['RELATED']->value == 'END' && $due){ - $reminderDate = $due->modify($parsed)->format('Ymd\THis'); - } elseif ($start) { - $reminderDate = $start->modify($parsed)->format('Ymd\THis'); - } - } else{ - throw new \Exception('Reminder duration related to not available date.'); - } - preg_match('/^(?P<plusminus>\+|-)?P((?P<week>\d+)W)?((?P<day>\d+)D)?(T((?P<hour>\d+)H)?((?P<minute>\d+)M)?((?P<second>\d+)S)?)?$/', $reminder->TRIGGER, $matches); - $invert = false; - if ($matches['plusminus']==='-') { - $invert = true; - } - - $parts = array( - 'week', - 'day', - 'hour', - 'minute', - 'second', - ); - - $reminderDuration = array( - 'token' => null - ); - foreach($parts as $part) { - $matches[$part] = isset($matches[$part])&&$matches[$part]?(int)$matches[$part]:0; - $reminderDuration[$part] = $matches[$part]; - if($matches[$part] && !$reminderDuration['token']){ - $reminderDuration['token'] = $part; - } - } - if($reminderDuration['token'] == null){ - $reminderDuration['token'] = $parts[0]; - } - - $reminderDuration['params'] = array( - 'id' => (int)$invert.(int)($related == 'END'), - 'related'=> $related?$related:'START', - 'invert'=> $invert - ); - - } else { - $reminderDate = null; - $reminderDuration = null; - } - - $task['reminder'] = array( - 'type' => $reminderType, - 'action' => $reminderAction, - 'date' => $reminderDate, - 'duration' => $reminderDuration - ); - - } catch(\Exception $e) { - $task['reminder'] = null; - \OCP\Util::writeLog('tasks', $e->getMessage(), \OCP\Util::ERROR); - } - } else { - $task['reminder'] = null; - } - $starred = $vtodo->getAsString('PRIORITY'); - if($starred){ - $task['starred'] = true; - } else { - $task['starred'] = false; - } - $completed = $vtodo->COMPLETED; - if ($completed) { - try { - $completed = $completed->getDateTime(); - $completed->setTimezone(new \DateTimeZone($user_timezone)); - $task['completed_date'] = $completed->format('Ymd\THis'); - $task['completed'] = true; - } catch(\Exception $e) { - $task['completed'] = false; - \OCP\Util::writeLog('tasks', $e->getMessage(), \OCP\Util::ERROR); - } - } else { - $task['completed'] = false; - } - $task['complete'] = $vtodo->getAsString('PERCENT-COMPLETE')==''?'0':$vtodo->getAsString('PERCENT-COMPLETE'); - $comments = $vtodo->COMMENT; - if($comments){ - $comments_parsed = array(); - foreach($comments as $com) { - $time = new \DateTime($com['DATE-TIME']->value); - $time->setTimezone(new \DateTimeZone($user_timezone)); - $time = $time->format('Ymd\THis'); - $comments_parsed[] = array( - 'id' => (int)$com['ID']->value, - 'userID' => $com['USERID']->value, - 'name' => \OCP\USER::getDisplayName($com['USERID']->value), - 'comment' => $com->value, - 'time' => $time - ); - } - $task['comments'] = $comments_parsed; - } - return $task; - } - - - public static function createVCalendarFromRequest($request){ - $vcalendar = new \OC_VObject('VCALENDAR'); - $vcalendar->add('PRODID', 'ownCloud Calendar'); - $vcalendar->add('VERSION', '2.0'); - - $vtodo = new \OC_VObject('VTODO'); - $vcalendar->add($vtodo); - - $vtodo->setDateTime('CREATED', 'now', \Sabre\VObject\Property\DateTime::UTC); - - $vtodo->setUID(); - return self::updateVCalendarFromRequest($request, $vcalendar); - } - - public static function updateVCalendarFromRequest($request, $vcalendar){ - $vtodo = $vcalendar->VTODO; - - $vtodo->setDateTime('LAST-MODIFIED', 'now', \Sabre\VObject\Property\DateTime::UTC); - $vtodo->setDateTime('DTSTAMP', 'now', \Sabre\VObject\Property\DateTime::UTC); - $vtodo->setString('SUMMARY', $request['summary']); - - $vtodo->setString('LOCATION', $request['location']); - $vtodo->setString('DESCRIPTION', $request['description']); - $vtodo->setString('CATEGORIES', $request["categories"]); - $vtodo->setString('PRIORITY', $request['priority']); - $vtodo->setString('PERCENT-COMPLETE', $request['complete']); - - $due = $request['due']; - if ($due) { - $timezone = \OC_Calendar_App::getTimezone(); - $timezone = new \DateTimeZone($timezone); - $due = new \DateTime($due, $timezone); - $vtodo->setDateTime('DUE', $due); - } else { - unset($vtodo->DUE); - } - $start = $request['start']; - if ($start) { - $timezone = \OC_Calendar_App::getTimezone(); - $timezone = new \DateTimeZone($timezone); - $start = new \DateTime($start, $timezone); - $vtodo->setDateTime('DTSTART', $start); - } else { - unset($vtodo->DTSTART); - } - - return $vcalendar; - } -} |