]> source.dussan.org Git - nextcloud-server.git/commitdiff
rewrite OC_Calendar_APP class
authorGeorg Ehrke <dev@georgswebsite.de>
Sat, 31 Mar 2012 20:13:04 +0000 (16:13 -0400)
committerGeorg Ehrke <dev@georgswebsite.de>
Sat, 31 Mar 2012 20:13:04 +0000 (16:13 -0400)
apps/calendar/lib/app.php

index b4d9f844c195167814b324169646fdc50720350c..8bc416d2ce48a011385762d3f7d4da3fc719f287 100644 (file)
 <?php
 /**
  * Copyright (c) 2011 Bart Visscher <bartv@thisnet.nl>
+ * Copyright (c) 2012 Georg Ehrke <georg@owncloud.com>
  * This file is licensed under the Affero General Public License version 3 or
  * later.
  * See the COPYING-README file.
- */
-
-/**
+ * 
  * This class manages our app actions
  */
 OC_Calendar_App::$l10n = new OC_L10N('calendar');
 class OC_Calendar_App{
+       /*
+        * @brief: language object for calendar app
+        */
        public static $l10n;
 
-       public static function getCalendar($id){
-               return OC_Calendar_Calendar::find( $id );
-       }
-
-       public static function getEventObject($id){
-               $event_object = OC_Calendar_Object::find( $id );
-               if( $event_object === false ){
-                       OC_JSON::error();
-                       exit();
+       /*
+        * @brief: returns informations about a calendar
+        * @param: int $id - id of the calendar
+        * @param: bool $security - check access rights or not
+        * @param: bool $shared - check if the user got access via sharing
+        * @return: mixed - bool / array
+        */
+       public static function getCalendar($id, $security = true, $shared = false){
+               $calendar = OC_Calendar_Object::find($id);
+               if($shared === true){
+                       if(OC_Calendar_Share::check_access(OC_User::getUser(), $id, OC_Calendar_Share::CALENDAR)){
+                               return $calendar;
+                       }
                }
-
-               //self::getCalendar( $event_object['calendarid'] );//access check
-               return $event_object;
+               if($security === true){
+                       if($calendar['userid'] != OC_User::getUser()){
+                               return false;
+                       }
+               }
+               if($calendar === false){
+                       return false;
+               }
+               return OC_Calendar_Calendar::find($id);
        }
-
-       public static function check_access($id){
-               $event_object = self::getEventObject($id);
-               $calendar = self::getCalendar($event_object['calendarid']);
-               if($calendar['userid'] == OC_User::getUser()){
-                       return 'owner';
+       
+       /*
+        * @brief: returns informations about an event
+        * @param: int $id - id of the event
+        * @param: bool $security - check access rights or not
+        * @param: bool $shared - check if the user got access via sharing
+        * @return: mixed - bool / array
+        */
+       public static function getEventObject($id, $security = true, $shared = false){
+               $event = OC_Calendar_Object::find($id);
+               if($shared === true){
+                       if(OC_Calendar_Share::check_access(OC_User::getUser(), $id, OC_Calendar_Share::EVENT)){
+                               return $calendar;
+                       }
                }
-               if(OC_Calendar_Share::check_access(OC_User::getUser(), $id, OC_Calendar_Share::EVENT)){
-                       if(OC_Calendar_Share::is_editing_allowed(OC_User::getUser(), $id,  OC_Calendar_Share::EVENT)){
-                               return 'rw';
-                       }else{
-                               return 'r';
+               if($security === true){
+                       $calendar = self::getCalendar($event['calendarid'], false);
+                       if($calendar['userid'] != OC_User::getUser()){
+                               return false;
                        }
                }
-               return false;
+               if($event === false){
+                       return false;
+               }
+               return $event;
        }
-
-       public static function getVCalendar($id){
-               $event_object = self::getEventObject( $id );
-
-               $vcalendar = OC_VObject::parse($event_object['calendardata']);
-               // Check if the vcalendar is valid
-               if(is_null($vcalendar)){
-                       OC_JSON::error();
-                       exit();
+       
+       /*
+        * @brief: returns the parsed calendar data
+        * @param: int $id - id of the event
+        * @param: bool $security - check access rights or not
+        * @return: mixed - bool / object
+        */
+       public static function getVCalendar($id, $security = true){
+               $event_object = self::getEventObject($id, $security);
+               if($event_object === false){
+                       return false;
+               }
+               $vobject = OC_VObject::parse($event_object['calendardata']);
+               if(is_null($vobject)){
+                       return false;
                }
-               return $vcalendar;
+               return $vobject;
        }
-
-       public static function isNotModified($vevent, $lastmodified)
-       {
+       
+       /*
+        * 
+        */
+       public static function isNotModified($vevent, $lastmodified){
                $last_modified = $vevent->__get('LAST-MODIFIED');
                if($last_modified && $lastmodified != $last_modified->getDateTime()->format('U')){
                        OC_JSON::error(array('modified'=>true));
                        exit;
                }
        }
-
-       public static function getCategoryOptions()
-       {
-               return array(
-                       self::$l10n->t('Birthday'),
-                       self::$l10n->t('Business'),
-                       self::$l10n->t('Call'),
-                       self::$l10n->t('Clients'),
-                       self::$l10n->t('Deliverer'),
-                       self::$l10n->t('Holidays'),
-                       self::$l10n->t('Ideas'),
-                       self::$l10n->t('Journey'),
-                       self::$l10n->t('Jubilee'),
-                       self::$l10n->t('Meeting'),
-                       self::$l10n->t('Other'),
-                       self::$l10n->t('Personal'),
-                       self::$l10n->t('Projects'),
-                       self::$l10n->t('Questions'),
-                       self::$l10n->t('Work'),
-               );
+       /*
+        * THIS FUNCTION IS DEPRECATED AND WILL BE REMOVED SOON
+        * @brief: returns the valid categories
+        * @return: array - categories
+        */
+       public static function getCategoryOptions(){
+               return OC_Calendar_Object::getCategoryOptions(self::$l10n);
        }
-
+       
+       /*
+        * @brief: returns the options for an repeating event
+        * @return: array - valid inputs for repeating events
+        */
        public static function getRepeatOptions(){
                return OC_Calendar_Object::getRepeatOptions(self::$l10n);
        }
-
+       
+       /*
+        * @brief: returns the options for the end of an repeating event
+        * @return: array - valid inputs for the end of an repeating events
+        */
        public static function getEndOptions(){
                return OC_Calendar_Object::getEndOptions(self::$l10n);
        }
-
+       
+       /*
+        * @brief: returns the options for an monthly repeating event
+        * @return: array - valid inputs for monthly repeating events
+        */
        public static function getMonthOptions(){
                return OC_Calendar_Object::getMonthOptions(self::$l10n);
        }
-
+       
+       /*
+        * @brief: returns the options for an weekly repeating event
+        * @return: array - valid inputs for weekly repeating events
+        */
        public static function getWeeklyOptions(){
                return OC_Calendar_Object::getWeeklyOptions(self::$l10n);
        }
-
+       
+       /*
+        * @brief: returns the options for an yearly repeating event
+        * @return: array - valid inputs for yearly repeating events
+        */
        public static function getYearOptions(){
                return OC_Calendar_Object::getYearOptions(self::$l10n);
        }
-
+       
+       /*
+        * @brief: returns the options for an yearly repeating event which occurs on specific days of the year
+        * @return: array - valid inputs for yearly repeating events
+        */
        public static function getByYearDayOptions(){
                return OC_Calendar_Object::getByYearDayOptions();
        }
-
+       
+       /*
+        * @brief: returns the options for an yearly repeating event which occurs on specific month of the year
+        * @return: array - valid inputs for yearly repeating events
+        */
        public static function getByMonthOptions(){
                return OC_Calendar_Object::getByMonthOptions(self::$l10n);
        }
        
+       /*
+        * @brief: returns the options for an yearly repeating event which occurs on specific week numbers of the year
+        * @return: array - valid inputs for yearly repeating events
+        */
        public static function getByWeekNoOptions(){
                return OC_Calendar_Object::getByWeekNoOptions();
        }
-
+       
+       /*
+        * @brief: returns the options for an yearly or monthly repeating event which occurs on specific days of the month
+        * @return: array - valid inputs for yearly or monthly repeating events
+        */
        public static function getByMonthDayOptions(){
                return OC_Calendar_Object::getByMonthDayOptions();
        }
        
+       /*
+        * @brief: returns the options for an monthly repeating event which occurs on specific weeks of the month
+        * @return: array - valid inputs for monthly repeating events
+        */
        public static function getWeekofMonth(){
                return OC_Calendar_Object::getWeekofMonth(self::$l10n);
        }
        
-       public static function prepareForOutput($event, $vevent){
-               $return_event = array();
-               $return_event['id'] = (int)$event['id'];
-               $return_event['title'] = htmlspecialchars(($event['summary']!=NULL || $event['summary'] != '')?$event['summary']: self::$l10n->t('unnamed'));
-               $return_event['description'] = isset($vevent->DESCRIPTION)?htmlspecialchars($vevent->DESCRIPTION->value):'';
-               $last_modified = $vevent->__get('LAST-MODIFIED');
+       /*
+        * @brief: returns the prepared output for the json calendar data
+        * @param: array $event - array with event informations (self::getEventObject)
+        * @return: array - prepared output
+        */
+       public static function prepareForOutput($event){
+               if(isset($event['calendardata'])){
+                       $object = self::getVCalendar($event['calendardata'], false);
+                       $vevent = $object->VEVENT;
+               }else{
+                       $vevent = $event['vevent'];
+               }$last_modified = $vevent->__get('LAST-MODIFIED');
                if ($last_modified){
                        $lastmodified = $last_modified->getDateTime()->format('U');
                }else{
                        $lastmodified = 0;
                }
-               $return_event['lastmodified'] = (int)$lastmodified;
-               return $return_event;
+               $last_modified = ($vevent->__get('LAST-MODIFIED'))?$last_modified->getDateTime()->format('U'):0;
+               $return = array('id'=>(int)$event['id'],
+                                               'title' => htmlspecialchars(($event['summary']!=NULL || $event['summary'] != '')?$event['summary']: self::$l10n->t('unnamed')),
+                                               'description' => isset($vevent->DESCRIPTION)?htmlspecialchars($vevent->DESCRIPTION->value):'',
+                                               'lastmodified'=>(int)$lastmodified);
+               return $return;
        }
 }