示例#1
0
 public function formatItems($items, $format, $parameters = null)
 {
     $vtodos = array();
     if ($format === self::FORMAT_TODO) {
         $user_timezone = CalendarApp::getTimezone();
         foreach ($items as $item) {
             $item['item_source'] = CalendarApp::validateItemSource($item['item_source'], CalendarApp::SHARETODOPREFIX);
             if (!TasksApp::checkSharedTodo($item['item_source'])) {
                 $event = TasksApp::getEventObject($item['item_source']);
                 $vcalendar = VObject::parse($event['calendardata']);
                 $vtodo = $vcalendar->VTODO;
                 $accessclass = $vtodo->getAsString('CLASS');
                 if ($accessclass == '' || $accessclass == 'PUBLIC') {
                     $permissions['permissions'] = $item['permissions'];
                     $permissions['calendarcolor'] = '#cccccc';
                     $permissions['isOnlySharedTodo'] = true;
                     $permissions['calendarowner'] = Object::getowner($item['item_source']);
                     $permissions['displayname'] = $item['uid_owner'];
                     //\OCP\Util::writeLog('calendar','Cal Owner :'.$permissions['calendarowner'].$vtodo -> getAsString('SUMMARY') ,\OCP\Util::DEBUG);
                     $permissions['iscompleted'] = false;
                     if ($vtodo->COMPLETED) {
                         $permissions['iscompleted'] = true;
                         $vtodos['done'][] = TasksApp::arrayForJSON($item['item_source'], $vtodo, $user_timezone, $permissions, $event);
                     } else {
                         $vtodos['open'][] = TasksApp::arrayForJSON($item['item_source'], $vtodo, $user_timezone, $permissions, $event);
                     }
                 }
             }
             //$vtodos[] = $vtodo;
         }
     }
     return $vtodos;
 }
示例#2
0
 /**
  * 
  * @param string $query
  * @return \OCP\Search\Result
  */
 function search($query)
 {
     $today = date('Y-m-d', time());
     $allowedCommands = array('#ra' => 1, '#dt' => 1);
     $calendars = Calendar::allCalendars(\OCP\USER::getUser(), true);
     $activeCalendars = '';
     $config = \OC::$server->getConfig();
     foreach ($calendars as $calendar) {
         $isAktiv = $calendar['active'];
         if ($config->getUserValue(\OCP\USER::getUser(), CalendarApp::$appname, 'calendar_' . $calendar['id']) != '') {
             $isAktiv = $config->getUserValue(\OCP\USER::getUser(), CalendarApp::$appname, 'calendar_' . $calendar['id']);
         }
         if (!array_key_exists('active', $calendar)) {
             $isAktiv = 1;
         }
         if ($isAktiv == 1 && (int) $calendar['issubscribe'] === 0) {
             $activeCalendars[] = $calendar;
         }
     }
     if (count($activeCalendars) == 0 || !\OCP\App::isEnabled(CalendarApp::$appname)) {
         //return false;
     }
     $results = array();
     $searchquery = array();
     if (substr_count($query, ' ') > 0) {
         $searchquery = explode(' ', $query);
     } else {
         $searchquery[] = $query;
     }
     $user_timezone = CalendarApp::getTimezone();
     $l = \OC::$server->getL10N(TasksApp::$appname);
     $isDate = false;
     if (strlen($query) >= 5 && self::validateDate($query)) {
         $isDate = true;
         //\OCP\Util::writeLog('calendar','VALID DATE FOUND', \OCP\Util::DEBUG);
     }
     //foreach($calendars as $calendar) {
     $objects = TasksApp::all($activeCalendars);
     foreach ($objects as $object) {
         if ($object['objecttype'] != 'VTODO') {
             continue;
         }
         $searchAdvanced = false;
         if ($isDate == true && strlen($query) >= 5) {
             $tempQuery = strtotime($query);
             $checkDate = date('Y-m-d', $tempQuery);
             if (substr_count($object['startdate'], $checkDate) > 0 || substr_count($object['enddate'], $checkDate) > 0) {
                 $searchAdvanced = true;
             }
         }
         if (array_key_exists($query, $allowedCommands) && $allowedCommands[$query]) {
             if ($query == '#dt') {
                 $search = $object['startdate'];
                 if (substr_count($search, $today) > 0) {
                     $searchAdvanced = true;
                 }
             }
             if ($query == '#ra') {
                 if ($object['isalarm'] == 1) {
                     $searchAdvanced = true;
                 }
             }
         }
         if (substr_count(strtolower($object['summary']), strtolower($query)) > 0 || $searchAdvanced == true) {
             $calendardata = VObject::parse($object['calendardata']);
             $vtodo = $calendardata->VTODO;
             if (Object::getowner($object['id']) !== \OCP\USER::getUser()) {
                 if (isset($vtodo->CLASS) && $vtodo->CLASS->getValue() === 'CONFIDENTIAL') {
                     continue;
                 }
                 if (isset($vtodo->CLASS) && ($vtodo->CLASS->getValue() === 'PRIVATE' || $vtodo->CLASS->getValue() === '')) {
                     continue;
                 }
             }
             if ($vtodo->DUE) {
                 $dtstart = $vtodo->DUE;
                 $start_dt = $dtstart->getDateTime();
                 $start_dt->setTimezone(new \DateTimeZone($user_timezone));
                 if ($dtstart->getValueType() == 'DATE') {
                     $info = $l->t('Date') . ': ' . $start_dt->format('d.m.Y');
                 } else {
                     $info = $l->t('Date') . ': ' . $start_dt->format('d.m.y H:i');
                 }
             }
             if ($vtodo->DTSTART) {
                 $dtstart1 = $vtodo->DTSTART;
                 $start_dt = $dtstart1->getDateTime();
                 $start_dt->setTimezone(new \DateTimeZone($user_timezone));
                 if ($dtstart1->getValueType() == 'DATE') {
                     $info = $l->t('Date') . ': ' . $start_dt->format('d.m.Y');
                 } else {
                     $info = $l->t('Date') . ': ' . $start_dt->format('d.m.y H:i');
                 }
             }
             $link = \OC::$server->getURLGenerator()->linkToRoute(TasksApp::$appname . '.page.index') . '#' . urlencode($object['id']);
             $returnData['id'] = $object['id'];
             $returnData['description'] = $object['summary'] . ' ' . $info;
             $returnData['link'] = $link;
             $results[] = new Result($returnData);
         }
     }
     //}
     return $results;
 }
示例#3
0
 public function generateTasksToCalendarOutput()
 {
     $this->aTasksOutput = \OCP\Share::getItemsSharedWith(CalendarApp::SHARETODO, Vtodo::FORMAT_TODO);
     foreach ($this->aTasks as $task) {
         if ($task['objecttype'] != 'VTODO') {
             continue;
         }
         if (is_null($task['summary'])) {
             continue;
         }
         $object = VObject::parse($task['calendardata']);
         $vtodo = $object->VTODO;
         $isCompleted = $vtodo->COMPLETED;
         try {
             if ($this->sMode != '' && $this->sMode != 'alltasksdone') {
                 //if($isCompleted){
                 //$this->aTasksOutput['done'][] = App::arrayForJSON($task['id'], $vtodo, $this->dUserTimeZone,$this->aCalendar[$task['calendarid']],$task);
                 //}else{
                 $this->aTasksOutput['open'][] = App::arrayForJSON($task['id'], $vtodo, $this->dUserTimeZone, $this->aCalendar[$task['calendarid']], $task);
                 //}
             } elseif ($this->sMode != '' && $this->sMode == 'alltasksdone') {
                 if ($isCompleted) {
                     //$dateCompleted=$isCompleted->getDateTime() -> format('d.m.Y');
                     $this->aTasksOutput['done'][] = App::arrayForJSON($task['id'], $vtodo, $this->dUserTimeZone, $this->aCalendar[$task['calendarid']], $task);
                 }
             } else {
                 //if($isCompleted){
                 //$this->aTasksOutput['done'][] = App::arrayForJSON($task['id'], $vtodo, $this->dUserTimeZone,$this->aCalendar[$task['calendarid']],$task);
                 //}else{
                 $this->aTasksOutput['open'][] = App::arrayForJSON($task['id'], $vtodo, $this->dUserTimeZone, $this->aCalendar[$task['calendarid']], $task);
                 //}
             }
         } catch (\Exception $e) {
             \OCP\Util::writeLog(App::$appname, $e->getMessage(), \OCP\Util::ERROR);
         }
     }
 }
示例#4
0
 /**
  *@PublicPage
  * @NoCSRFRequired
  * @UseSession
  */
 public function index($token)
 {
     if ($token) {
         $linkItem = Share::getShareByToken($token, false);
         if (is_array($linkItem) && isset($linkItem['uid_owner'])) {
             $type = $linkItem['item_type'];
             $itemSource = CalendarApp::validateItemSource($linkItem['item_source'], CalendarApp::SHARETODOPREFIX);
             $shareOwner = $linkItem['uid_owner'];
             $calendarName = $linkItem['item_target'];
             $rootLinkItem = \OCP\Share::resolveReShare($linkItem);
             // stupid copy and paste job
             if (isset($linkItem['share_with'])) {
                 // Authenticate share_with
                 $password = $this->params('password');
                 if (isset($password)) {
                     if ($linkItem['share_type'] === \OCP\Share::SHARE_TYPE_LINK) {
                         // Check Password
                         $newHash = '';
                         if (\OC::$server->getHasher()->verify($password, $linkItem['share_with'], $newHash)) {
                             $this->session->set('public_link_authenticated', $linkItem['id']);
                             if (!empty($newHash)) {
                             }
                         } else {
                             \OCP\Util::addStyle('files_sharing', 'authenticate');
                             $params = array('wrongpw' => true);
                             return new TemplateResponse('files_sharing', 'authenticate', $params, 'guest');
                         }
                     } else {
                         \OCP\Util::writeLog('share', 'Unknown share type ' . $linkItem['share_type'] . ' for share id ' . $linkItem['id'], \OCP\Util::ERROR);
                         return false;
                     }
                 } else {
                     // Check if item id is set in session
                     if (!$this->session->exists('public_link_authenticated') || $this->session->get('public_link_authenticated') !== $linkItem['id']) {
                         // Prompt for password
                         \OCP\Util::addStyle('files_sharing', 'authenticate');
                         $params = array();
                         return new TemplateResponse('files_sharing', 'authenticate', $params, 'guest');
                     }
                 }
             }
             \OCP\Util::addStyle(CalendarApp::$appname, '3rdparty/fontello/css/animation');
             \OCP\Util::addStyle(CalendarApp::$appname, '3rdparty/fontello/css/fontello');
             \OCP\Util::addStyle($this->appName, 'style');
             \OCP\Util::addStyle($this->appName, 'share');
             \OCP\Util::addScript($this->appName, 'share');
             $data = TasksApp::getEventObject($itemSource, false, false);
             $l = \OC::$server->getL10N($this->appName);
             $object = VObject::parse($data['calendardata']);
             $vTodo = $object->VTODO;
             $id = $data['id'];
             $object = Object::cleanByAccessClass($id, $object);
             $accessclass = $vTodo->getAsString('CLASS');
             $permissions = TasksApp::getPermissions($id, TasksApp::TODO, $accessclass);
             if ($accessclass === 'PRIVATE') {
                 header('HTTP/1.0 404 Not Found');
                 $response = new TemplateResponse('core', '404', '', 'guest');
                 return $response;
             }
             $categories = $vTodo->getAsArray('CATEGORIES');
             $summary = strtr($vTodo->getAsString('SUMMARY'), array('\\,' => ',', '\\;' => ';'));
             $location = strtr($vTodo->getAsString('LOCATION'), array('\\,' => ',', '\\;' => ';'));
             $description = strtr($vTodo->getAsString('DESCRIPTION'), array('\\,' => ',', '\\;' => ';'));
             $priorityOptionsArray = TasksApp::getPriorityOptionsFilterd();
             //$priorityOptions=$priorityOptionsArray[(string)$vTodo->priority];
             $priorityOptions = 0;
             $link = strtr($vTodo->getAsString('URL'), array('\\,' => ',', '\\;' => ';'));
             $TaskDate = '';
             $TaskTime = '';
             if ($vTodo->DUE) {
                 $dateDueType = $vTodo->DUE->getValueType();
                 if ($dateDueType == 'DATE') {
                     $TaskDate = $vTodo->DUE->getDateTime()->format('d.m.Y');
                     $TaskTime = '';
                 }
                 if ($dateDueType == 'DATE-TIME') {
                     $TaskDate = $vTodo->DUE->getDateTime()->format('d.m.Y');
                     $TaskTime = $vTodo->DUE->getDateTime()->format('H:i');
                 }
             }
             $TaskStartTime = '';
             $TaskStartDate = '';
             if ($vTodo->DTSTART) {
                 $dateStartType = $vTodo->DTSTART->getValueType();
                 if ($dateStartType === 'DATE') {
                     $TaskStartDate = $vTodo->DTSTART->getDateTime()->format('d.m.Y');
                     $TaskStartTime = '';
                 }
                 if ($dateStartType === 'DATE-TIME') {
                     $TaskStartDate = $vTodo->DTSTART->getDateTime()->format('d.m.Y');
                     $TaskStartTime = $vTodo->DTSTART->getDateTime()->format('H:i');
                 }
             }
             //PERCENT-COMPLETE
             $cptlStatus = (string) $this->l10n->t('needs action');
             $percentComplete = 0;
             if ($vTodo->{'PERCENT-COMPLETE'}) {
                 $percentComplete = $vTodo->{'PERCENT-COMPLETE'};
                 //$cptlStatus = (string)$this->l10n->t('in procress');
                 if ($percentComplete === '0') {
                     $cptlStatus = (string) $this->l10n->t('needs action');
                 }
                 if ($percentComplete > '0' && $percentComplete < '100') {
                     $cptlStatus = (string) $this->l10n->t('in procress');
                 }
             }
             if ($vTodo->{'COMPLETED'}) {
                 $cptlStatus = (string) $this->l10n->t('completed');
             }
             $timezone = \OC::$server->getSession()->get('public_link_timezone');
             $sCat = '';
             if (is_array($categories) && count($categories) > 0) {
                 $sCat = $categories;
             }
             $params = ['eventid' => $itemSource, 'permissions' => $permissions, 'priorityOptions' => $priorityOptions, 'percentComplete' => $percentComplete, 'cptlStatus' => $cptlStatus, 'TaskDate' => isset($TaskDate) ? $TaskDate : '', 'TaskTime' => isset($TaskTime) ? $TaskTime : '', 'TaskStartDate' => isset($TaskStartDate) ? $TaskStartDate : '', 'TaskStartTime' => isset($TaskStartTime) ? $TaskStartTime : '', 'title' => $summary, 'accessclass' => $accessclass, 'location' => $location, 'categories' => $sCat, 'calendar' => $data['calendarid'], 'aCalendar' => CalendarApp::getCalendar($data['calendarid'], false, false), 'calAppName' => CalendarApp::$appname, 'description' => $description, 'repeat_rules' => '', 'link' => $link, 'timezone' => $timezone, 'uidOwner' => $shareOwner, 'displayName' => \OCP\User::getDisplayName($shareOwner), 'sharingToken' => $token, 'token' => $token];
             $response = new TemplateResponse($this->appName, 'publicevent', $params, 'base');
             return $response;
         }
         //end isset
     }
     //end token
     $tmpl = new \OCP\Template('', '404', 'guest');
     $tmpl->printPage();
 }
示例#5
0
 /**
  * @NoAdminRequired
  */
 public function deleteTask()
 {
     $id = $this->params('id');
     $task = CalendarApp::getEventObject($id);
     //Search for Sub Tasks
     $subTaskIds = '';
     if ($task['relatedto'] === '') {
         $subTaskIds = TasksApp::getSubTasks($task['eventuid']);
         if ($subTaskIds !== '') {
             $tempIds = explode(',', $subTaskIds);
             foreach ($tempIds as $subIds) {
                 Object::delete($subIds);
             }
         }
     }
     Object::delete($id);
     $params = ['id' => $id];
     $response = new JSONResponse();
     $response->setData($params);
     return $response;
 }
示例#6
0
 /**
  * @NoAdminRequired
  */
 public function setCompletedTask()
 {
     $id = $this->params('id');
     $checked = $this->params('checked');
     $vcalendar = CalendarApp::getVCalendar($id);
     $vtodo = $vcalendar->VTODO;
     TasksApp::setComplete($vtodo, $checked ? 100 : 0, null);
     Object::edit($id, $vcalendar->serialize());
     $user_timezone = CalendarApp::getTimezone();
     $aTask = TasksApp::getEventObject($id, true, true);
     $aCalendar = CalendarCalendar::find($aTask['calendarid']);
     $task_info[] = TasksApp::arrayForJSON($id, $vtodo, $user_timezone, $aCalendar, $aTask);
     $subTaskIds = '';
     if ($aTask['relatedto'] === '') {
         $subTaskIds = TasksApp::getSubTasks($aTask['eventuid']);
         if ($subTaskIds !== '') {
             $tempIds = explode(',', $subTaskIds);
             foreach ($tempIds as $subIds) {
                 $vcalendar = TasksApp::getVCalendar($subIds, true, true);
                 $vtodo = $vcalendar->VTODO;
                 TasksApp::setComplete($vtodo, $checked ? 100 : 0, null);
                 TasksApp::edit($subIds, $vcalendar->serialize());
                 $task_info[] = TasksApp::arrayForJSON($subIds, $vtodo, $user_timezone, $aCalendar, $aTask);
             }
         }
     }
     $params = ['status' => 'success', 'data' => $task_info];
     $response = new JSONResponse($params);
     return $response;
 }
示例#7
0
文件: app.php 项目: ejouvin/tasksplus
 */
/**
 * This class manages our tasks
 */
namespace OCA\TasksPlus;

use Sabre\VObject\Recur\EventIterator;
use OCA\CalendarPlus\Object;
use OCA\CalendarPlus\Calendar;
use OCA\CalendarPlus\VObject;
use OCA\CalendarPlus\App as CalendarApp;
use OCA\CalendarPlus\ActivityData;
use OCA\TasksPlus\Timeline;
use OCA\TasksPlus\Share\Backend\Vtodo;
App::$appname = 'tasksplus';
App::$l10n = \OC::$server->getL10N(App::$appname);
class App
{
    const CALENDAR = 'calendar';
    const TODO = 'todo';
    public static $l10n;
    public static $appname;
    public static function getPriorityOptions()
    {
        return array('' => self::$l10n->t('Unspecified'), '1' => self::$l10n->t('1=highest'), '2' => '2', '3' => '3', '4' => '4', '5' => self::$l10n->t('5=medium'), '6' => '6', '7' => '7', '8' => '8', '9' => self::$l10n->t('9=lowest'));
    }
    /**
     * @brief Returns all  shared events where user is owner
     * 
     * @return array
     */