2011-10-17 17:58:56 +00:00
< ? php
/**
2012-04-08 02:39:37 +00:00
* Copyright ( c ) 2011 , 2012 Georg Ehrke < ownclouddev at georgswebsite dot de >
2014-01-16 23:46:59 +00:00
* Copyright ( c ) 2014 Michał " rysiek " Woźniak < rysiek @ hackerspace . pl >
2011-10-17 17:58:56 +00:00
* This file is licensed under the Affero General Public License version 3 or
* later .
* See the COPYING - README file .
*/
2014-01-16 22:51:42 +00:00
// is a user logged-in?
2014-01-16 23:46:59 +00:00
if ( OCP\User :: isLoggedIn ()) {
2014-01-16 22:51:42 +00:00
// is the app enabled?
OCP\JSON :: checkAppEnabled ( 'calendar' );
session_write_close ();
// Look for the calendar id
$calendar_id = null ;
if ( strval ( intval ( $_GET [ 'calendar_id' ])) == strval ( $_GET [ 'calendar_id' ])) { // integer for sure.
$id = intval ( $_GET [ 'calendar_id' ]);
$calendarrow = OC_Calendar_App :: getCalendar ( $id , true , false ); // Let's at least security check otherwise we might as well use OC_Calendar_Calendar::find())
if ( $calendarrow !== false ) {
$calendar_id = $id ;
} else {
if ( OCP\Share :: getItemSharedWithBySource ( 'calendar' , $id ) === false ){
OCP\JSON :: encodedPrint ( array ());
exit ;
}
}
}
$calendar_id = ( is_null ( $calendar_id ) ? strip_tags ( $_GET [ 'calendar_id' ]) : $calendar_id );
// no logged-in user? ookaay, do we have a token?
2014-01-16 23:46:59 +00:00
} elseif ( \OC :: $session -> exists ( 'public_link_token' )) {
2014-01-16 22:51:42 +00:00
// is the app enabled?
OCP\JSON :: checkAppEnabled ( 'calendar' );
session_write_close ();
// shareapi enabled?
if ( \OC_Appconfig :: getValue ( 'core' , 'shareapi_allow_links' , 'yes' ) !== 'yes' ) {
header ( 'HTTP/1.0 404 Not Found' );
exit ();
}
2014-02-04 17:52:20 +00:00
// check if we're being asked for something we can provide
if ( $_GET [ 'calendar_id' ] !== 'shared_events' ) {
header ( 'HTTP/1.0 404 Not Found' );
exit ();
}
2014-01-16 22:51:42 +00:00
// get the data
$linkItem = OCP\Share :: getShareByToken (
\OC :: $session -> get ( 'public_link_token' )
);
// did we get anything?
if ( ! is_array ( $linkItem ) || ! isset ( $linkItem [ 'uid_owner' ])) {
// nope! chuck testa!
header ( 'HTTP/1.0 404 Not Found' );
exit ();
}
// resolve all the re-shares
$rootLinkItem = OCP\Share :: resolveReShare ( $linkItem );
// did we get anything?
if ( ! is_array ( $rootLinkItem ) || ! isset ( $rootLinkItem [ 'uid_owner' ])) {
// nope! chuck testa!
header ( 'HTTP/1.0 404 Not Found' );
exit ();
}
// do we have a password on this share?
if ( isset ( $linkItem [ 'share_with' ])) {
// we're not going to check the password here, we're in AJAX mode
// what we can do is to check for 'public_link_authenticated' session var
if ( ! \OC :: $session -> exists ( 'public_link_authenticated' )
|| \OC :: $session -> get ( 'public_link_authenticated' ) !== $linkItem [ 'id' ]
) {
header ( 'HTTP/1.0 401 Unauthorized' );
exit ();
}
}
// just another check
if ( ! OC_Calendar_App :: getCalendar ( $rootLinkItem [ 'item_source' ], true , true )) {
header ( 'HTTP/1.0 403 Forbidden' );
exit ();
}
// finally, get the calendar id
$calendar_id = $rootLinkItem [ 'item_source' ];
// no user, no token...
} else {
header ( 'HTTP/1.0 404 Not Found' );
exit ();
2012-05-08 06:46:14 +00:00
}
2012-05-10 19:50:47 +00:00
2014-01-16 22:51:42 +00:00
// data retrieval and formatting
2012-05-10 19:50:47 +00:00
$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' ]);
2013-04-21 22:12:08 +00:00
$events = OC_Calendar_App :: getrequestedEvents ( $calendar_id , $start , $end );
2012-04-08 02:39:37 +00:00
$output = array ();
2012-09-07 13:21:03 +00:00
foreach ( $events as $event ) {
2013-11-26 17:15:04 +00:00
$result = OC_Calendar_App :: generateEventOutput ( $event , $start , $end );
if ( is_array ( $result )) {
$output = array_merge ( $output , $result );
}
2011-10-17 17:58:56 +00:00
}
2014-01-16 22:51:42 +00:00
2012-11-20 00:45:29 +00:00
OCP\JSON :: encodedPrint ( $output );