]> source.dussan.org Git - nextcloud-server.git/commitdiff
fix merge conflicts
authorGeorg Ehrke <dev@georgswebsite.de>
Sun, 15 Apr 2012 10:43:07 +0000 (12:43 +0200)
committerGeorg Ehrke <dev@georgswebsite.de>
Sun, 15 Apr 2012 10:43:07 +0000 (12:43 +0200)
1  2 
apps/calendar/ajax/event/delete.php
apps/calendar/ajax/events.php
apps/calendar/appinfo/app.php
apps/calendar/appinfo/version
apps/calendar/lib/app.php
core/css/styles.css

index 6307e1a0f270d70637ec84ad7653929fbf4c6f84,5fc12900ef3bcb23623fb8b96de868f1d697d7d3..fd7b709393a374dddbef2b3f5307d58d04570770
@@@ -11,10 -11,7 +11,10 @@@ OC_JSON::checkLoggedIn()
  OC_JSON::checkAppEnabled('calendar');
  
  $id = $_POST['id'];
 -$event_object = OC_Calendar_App::getEventObject($id);
 +$access = OC_Calendar_App::getaccess($id, OC_Calendar_App::EVENT);
 +if($access != 'owner' && $access != 'rw'){
 +      OC_JSON::error(array('message'=>'permission denied'));
 +      exit;
 +}
  $result = OC_Calendar_Object::delete($id);
- OC_JSON::success();
+ OC_JSON::success();
 -?> 
index fad1097cdce388623156262b901ad6a7be6f42cf,d053df2e4c11e0e719c1e748a8fc1c51bb360c7e..3c990422f0cd636e9dc1fd57043b7744bc2ca986
@@@ -12,15 -29,81 +12,15 @@@ require_once('when/When.php')
  OC_JSON::checkLoggedIn();
  OC_JSON::checkAppEnabled('calendar');
  
 -if(version_compare(PHP_VERSION, '5.3.0', '>=')){
 -      $start = DateTime::createFromFormat('U', $_GET['start']);
 -      $end = DateTime::createFromFormat('U', $_GET['end']);
 -}else{
 -      $start = new DateTime('@' . $_GET['start']);
 -      $end = new DateTime('@' . $_GET['end']);
 -}
 +$start = (version_compare(PHP_VERSION, '5.3.0', '>='))?DateTime::createFromFormat('U', $_GET['start']):new DateTime('@' . $_GET['start']);
 +$end = (version_compare(PHP_VERSION, '5.3.0', '>='))?DateTime::createFromFormat('U', $_GET['end']):new DateTime('@' . $_GET['end']);
  
 -$calendar_id = $_GET['calendar_id'];
 -if (is_numeric($calendar_id)) {
 -      $calendar = OC_Calendar_App::getCalendar($calendar_id);
 -      OC_Response::enableCaching(0);
 -      OC_Response::setETagHeader($calendar['ctag']);
 -      $events = OC_Calendar_Object::allInPeriod($calendar_id, $start, $end);
 -} else {
 -      $events = array();
 -      OC_Hook::emit('OC_Calendar', 'getEvents', array('calendar_id' => $calendar_id, 'events' => &$events));
 -}
 +$events = OC_Calendar_App::getrequestedEvents($_GET['calendar_id'], $start, $end);
  
 -$user_timezone = OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezone', date_default_timezone_get());
 -$return = array();
 +$output = array();
  foreach($events as $event){
 -      if (isset($event['calendardata'])) {
 -              $object = OC_VObject::parse($event['calendardata']);
 -              $vevent = $object->VEVENT;
 -      } else {
 -              $vevent = $event['vevent'];
 -      }
 -
 -      $return_event = create_return_event($event, $vevent);
 -
 -      $dtstart = $vevent->DTSTART;
 -      $start_dt = $dtstart->getDateTime();
 -      $dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent);
 -      $end_dt = $dtend->getDateTime();
 -      if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE){
 -              $return_event['allDay'] = true;
 -      }else{
 -              $return_event['allDay'] = false;
 -              $start_dt->setTimezone(new DateTimeZone($user_timezone));
 -              $end_dt->setTimezone(new DateTimeZone($user_timezone));
 -      }
 -
 -      //Repeating Events
 -      if($event['repeating'] == 1){
 -              $duration = (double) $end_dt->format('U') - (double) $start_dt->format('U');
 -              $r = new When();
 -              $r->recur($start_dt)->rrule((string) $vevent->RRULE);
 -              while($result = $r->next()){
 -                      if($result < $start){
 -                              continue;
 -                      }
 -                      if($result > $end){
 -                              break;
 -                      }
 -                      if($return_event['allDay'] == true){
 -                              $return_event['start'] = $result->format('Y-m-d');
 -                              $return_event['end'] = date('Y-m-d', $result->format('U') + --$duration);
 -                      }else{
 -                              $return_event['start'] = $result->format('Y-m-d H:i:s');
 -                              $return_event['end'] = date('Y-m-d H:i:s', $result->format('U') + $duration);
 -                      }
 -                      $return[] = $return_event;
 -              }
 -      }else{
 -              if($return_event['allDay'] == true){
 -                      $return_event['start'] = $start_dt->format('Y-m-d');
 -                      $end_dt->modify('-1 sec');
 -                      $return_event['end'] = $end_dt->format('Y-m-d');
 -              }else{
 -                      $return_event['start'] = $start_dt->format('Y-m-d H:i:s');
 -                      $return_event['end'] = $end_dt->format('Y-m-d H:i:s');
 -              }
 -              $return[] = $return_event;
 -      }
 +      $output[] = OC_Calendar_App::generateEventOutput($event, $start, $end);
 +      
  }
 -OC_JSON::encodedPrint($return);
 +OC_JSON::encodedPrint($output);
- ?>
+ ?>
Simple merge
index 0000000000000000000000000000000000000000,7dff5b8921122a487162febe3c8e32effb7acb35..1d71ef97443918d538e8188167c94d7bbafaf753
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,1 +1,1 @@@
 -0.2.1
++0.3
index ee1d39bc662d468fd9a01d1f805d140c888acf36,4b481a4f2867bbf2841b3d888aa4a6b404796346..3ce0d6fa1d47c753a98efd119b618d9cc2369618
   * 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 = OC_L10N::get('calendar');
 +OC_Calendar_App::$l10n = new OC_L10N('calendar');
 +OC_Calendar_App::$tz = OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezone', date_default_timezone_get());
  class OC_Calendar_App{
 +      const CALENDAR = 'calendar';
 +      const EVENT = 'event';
 +      /*
 +       * @brief language object for calendar app
 +       */
        public static $l10n;
++      
++      /*
++       * @brief categories of the user
++       */
        protected static $categories = null;
  
 -      public static function getCalendar($id){
 -              $calendar = OC_Calendar_Calendar::find( $id );
 -              if( $calendar === false || $calendar['userid'] != OC_User::getUser()){
 -                      OC_JSON::error(array('data' => array('message' => self::$l10n->t('Wrong calendar'))));
 -                      exit();
 +      /*
 +       * @brief timezone of the user
 +       */
 +      public static $tz;
 +      
 +      /*
 +       * @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_Calendar::find($id);
 +              if($shared === true){
 +                      if(OC_Calendar_Share::check_access(OC_User::getUser(), $id, OC_Calendar_Share::CALENDAR)){
 +                              return $calendar;
 +                      }
 +              }
 +              if($security === true){
 +                      if($calendar['userid'] != OC_User::getUser()){
 +                              return false;
 +                      }
                }
 -              return $calendar;
 +              if($calendar === false){
 +                      return false;
 +              }
 +              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 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 $event;
 +                      }
                }
 -
 -              self::getCalendar( $event_object['calendarid'] );//access check
 -              return $event_object;
 +              if($security === true){
 +                      $calendar = self::getCalendar($event['calendarid'], false);
 +                      if($calendar['userid'] != OC_User::getUser()){
 +                              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, $shared = false){
 +              $event_object = self::getEventObject($id, $security, $shared);
 +              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)
 -      {
 +      
 +      /*
 +       * @brief checks if an event was edited and dies if it was
 +       * @param (object) $vevent - vevent object of the event
 +       * @param (int) $lastmodified - time of last modification as unix timestamp
 +       * @return (bool)
 +       */
 +      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;
                }
 +              return true;
        }
--
++      
++      /*
++       * @brief returns the default categories of ownCloud
++       * @return (array) $categories
++       */
        protected static function getDefaultCategories()
        {
                return array(
                        self::$l10n->t('Work'),
                );
        }
--
++      
++      /*
++       * @brief returns the vcategories object of the user
++       * @return (object) $vcategories
++       */
        protected static function getVCategories() {
                if (is_null(self::$categories)) {
                        self::$categories = new OC_VCategories('calendar', null, self::getDefaultCategories());
                }
                return self::$categories;
        }
--
++      
++      /*
++       * @brief returns the categories of the vcategories object
++       * @return (array) $categories
++       */
        public static function getCategoryOptions()
        {
                $categories = self::getVCategories()->categories();
        public static function getWeekofMonth(){
                return OC_Calendar_Object::getWeekofMonth(self::$l10n);
        }
- }
 +      
 +      /*
 +       * @brief checks the access for a calendar / an event
 +       * @param (int) $id - id of the calendar / event
 +       * @param (string) $type - type of the id (calendar/event)
 +       * @return (string) $access - level of access
 +       */
 +      public static function getaccess($id, $type){
 +              if($type == self::CALENDAR){
 +                      $calendar = self::getCalendar($id, false, false);
 +                      if($calendar['userid'] == OC_User::getUser()){
 +                              return 'owner';
 +                      }
 +                      $isshared = OC_Calendar_Share::check_access(OC_User::getUser(), $id, OC_Calendar_Share::CALENDAR);
 +                      if($isshared){
 +                              $writeaccess = OC_Calendar_Share::is_editing_allowed(OC_User::getUser(), $id, OC_Calendar_Share::CALENDAR);
 +                              if($writeaccess){
 +                                      return 'rw';
 +                              }else{
 +                                      return 'r';
 +                              }
 +                      }else{
 +                              return false;
 +                      }
 +              }elseif($type == self::EVENT){
 +                      if(OC_Calendar_Object::getowner($id) == OC_User::getUser()){
 +                              return 'owner';
 +                      }
 +                      $isshared = OC_Calendar_Share::check_access(OC_User::getUser(), $id, OC_Calendar_Share::EVENT);
 +                      if($isshared){
 +                              $writeaccess = OC_Calendar_Share::is_editing_allowed(OC_User::getUser(), $id, OC_Calendar_Share::EVENT);
 +                              if($writeaccess){
 +                                      return 'rw';
 +                              }else{
 +                                      return 'r';
 +                              }
 +                      }else{
 +                              return false;
 +                      }
 +              }
 +      }
 +      
 +      /*
 +       * @brief analyses the parameter for calendar parameter and returns the objects
 +       * @param (string) $calendarid - calendarid
 +       * @param (int) $start - unixtimestamp of start
 +       * @param (int) $end - unixtimestamp of end
 +       * @return (array) $events 
 +       */
 +      public static function getrequestedEvents($calendarid, $start, $end){
 +              $events = array();
 +              if($calendarid == 'shared_rw' || $_GET['calendar_id'] == 'shared_r'){
 +                      $calendars = OC_Calendar_Share::allSharedwithuser(OC_USER::getUser(), OC_Calendar_Share::CALENDAR, 1, ($_GET['calendar_id'] == 'shared_rw')?'rw':'r');
 +                      foreach($calendars as $calendar){
 +                              $calendarevents = OC_Calendar_Object::allInPeriod($calendar['calendarid'], $start, $end);
 +                              $events = array_merge($events, $calendarevents);
 +                      }
 +                      $singleevents = OC_Calendar_Share::allSharedwithuser(OC_USER::getUser(), OC_Calendar_Share::EVENT, 1, ($_GET['calendar_id'] == 'shared_rw')?'rw':'r');
 +                      foreach($singleevents as $singleevent){
 +                              $event = OC_Calendar_Object::find($singleevent['eventid']);
 +                              $events[] =  $event;
 +                      }
 +              }else{
 +                      $calendar_id = $_GET['calendar_id'];
 +                      if (is_numeric($calendar_id)) {
 +                              $calendar = self::getCalendar($calendar_id);
 +                              OC_Response::enableCaching(0);
 +                              OC_Response::setETagHeader($calendar['ctag']);
 +                              $events = OC_Calendar_Object::allInPeriod($calendar_id, $start, $end);
 +                      } else {
 +                              OC_Hook::emit('OC_Calendar', 'getEvents', array('calendar_id' => $calendar_id, 'events' => &$events));
 +                      }
 +              }
 +              return $events;
 +      }
 +      
 +      /*
 +       * @brief generates the output for an event which will be readable for our js
 +       * @param (mixed) $event - event object / array
 +       * @param (int) $start - unixtimestamp of start
 +       * @param (int) $end - unixtimestamp of end
 +       * @return (array) $output - readable output
 +       */
 +      public static function generateEventOutput($event, $start, $end){
 +              $output = array();
 +              
 +              if(isset($event['calendardata'])){
 +                      $object = OC_VObject::parse($event['calendardata']);
 +                      $vevent = $object->VEVENT;
 +              }else{
 +                      $vevent = $event['vevent'];
 +              }
 +              
 +              $last_modified = @$vevent->__get('LAST-MODIFIED');
 +              $lastmodified = ($last_modified)?$last_modified->getDateTime()->format('U'):0;
 +              
 +              $output = 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'=>$lastmodified);
 +              
 +              $dtstart = $vevent->DTSTART;
 +              $start_dt = $dtstart->getDateTime();
 +              $dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent);
 +              $end_dt = $dtend->getDateTime();
 +              
 +              if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE){
 +                      $output['allDay'] = true;
 +              }else{
 +                      $output['allDay'] = false;
 +                      $start_dt->setTimezone(new DateTimeZone(self::$tz));
 +                      $end_dt->setTimezone(new DateTimeZone(self::$tz));
 +              }
 +              
 +              if($event['repeating'] == 1){
 +                      $duration = (double) $end_dt->format('U') - (double) $start_dt->format('U');
 +                      $r = new When();
 +                      $r->recur($start_dt)->rrule((string) $vevent->RRULE);
 +                      /*$r = new iCal_Repeat_Generator(array('RECUR'  => $start_dt,
 +                       *                                                                         'RRULE'  => (string)$vevent->RRULE
 +                       *                                                                         'RDATE'  => (string)$vevent->RDATE                                           
 +                       *                                                                         'EXRULE' => (string)$vevent->EXRULE
 +                       *                                                                         'EXDATE' => (string)$vevent->EXDATE));*/
 +                      while($result = $r->next()){
 +                              if($result < $start){
 +                                      continue;
 +                              }
 +                              if($result > $end){
 +                                      break;
 +                              }
 +                              if($output['allDay'] == true){
 +                                      $output['start'] = $result->format('Y-m-d');
 +                                      $output['end'] = date('Y-m-d', $result->format('U') + --$duration);
 +                              }else{
 +                                      $output['start'] = $result->format('Y-m-d H:i:s');
 +                                      $output['end'] = date('Y-m-d H:i:s', $result->format('U') + $duration);
 +                              }
 +                      }
 +              }else{
 +                      if($output['allDay'] == true){
 +                              $output['start'] = $start_dt->format('Y-m-d');
 +                              $end_dt->modify('-1 sec');
 +                              $output['end'] = $end_dt->format('Y-m-d');
 +                      }else{
 +                              $output['start'] = $start_dt->format('Y-m-d H:i:s');
 +                              $output['end'] = $end_dt->format('Y-m-d H:i:s');
 +                      }
 +              }
 +              return $output;
 +      }
+ }
Simple merge