rewrite OC_Calendar_APP class

remotes/origin/stable4
Georg Ehrke 2012-03-31 16:13:04 +07:00
parent 10fc51dc92
commit 70237f7ecc
1 changed files with 143 additions and 76 deletions

@ -1,143 +1,210 @@
<?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;
}
}