mirror of
https://gitlab.com/davical-project/davical.git
synced 2026-05-23 02:14:16 +00:00
Fixes to calendar_auto_schedule.
- Update the SCHEDULE-STATUS parameter correctly when writing the event to the organiser. - Don't include ETag in PUT response when scheduling actions occur. - Write scheduling resources to attendee calendars even when this is an event modification.
This commit is contained in:
parent
d8f920fb13
commit
fbd08e42c6
@ -43,6 +43,7 @@ class WritableCollection extends DAVResource {
|
|||||||
$collection_id = $this->collection_id();
|
$collection_id = $this->collection_id();
|
||||||
|
|
||||||
if ( !isset($resources[0]) ) {
|
if ( !isset($resources[0]) ) {
|
||||||
|
dbg_error_log( 'PUT', 'No calendar content!');
|
||||||
rollback_on_error( $caldav_context, $user_no, $this->dav_name.'/'.$segment_name, translate('No calendar content'), 412 );
|
rollback_on_error( $caldav_context, $user_no, $this->dav_name.'/'.$segment_name, translate('No calendar content'), 412 );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -73,10 +74,18 @@ class WritableCollection extends DAVResource {
|
|||||||
$qry->QDo('SELECT dav_id FROM caldav_data WHERE dav_name = :dav_name ', array(':dav_name' => $path));
|
$qry->QDo('SELECT dav_id FROM caldav_data WHERE dav_name = :dav_name ', array(':dav_name' => $path));
|
||||||
}
|
}
|
||||||
if ( $qry->rows() != 1 || !($row = $qry->Fetch()) ) {
|
if ( $qry->rows() != 1 || !($row = $qry->Fetch()) ) {
|
||||||
// No dav_id? => We're toast!
|
if ( !$create_resource ) {
|
||||||
dbg_error_log( 'PUT', 'No dav_id!!!', $path);
|
// Looks like we will have to create it, even if the caller thought we wouldn't
|
||||||
rollback_on_error( $caldav_context, $user_no, $path);
|
$qry->QDo('SELECT nextval(\'dav_id_seq\') AS dav_id');
|
||||||
return false;
|
if ( $qry->rows() != 1 || !($row = $qry->Fetch()) ) {
|
||||||
|
// No dav_id? => We're toast!
|
||||||
|
trace_bug( 'No dav_id for "%s" on %s!!!', $path, ($create_resource ? 'create': 'update'));
|
||||||
|
rollback_on_error( $caldav_context, $user_no, $path);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$create_resource = true;
|
||||||
|
dbg_error_log( 'PUT', 'Unexpected need to create resource at "%s"', $path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$dav_id = $row->dav_id;
|
$dav_id = $row->dav_id;
|
||||||
|
|
||||||
@ -94,14 +103,19 @@ class WritableCollection extends DAVResource {
|
|||||||
':weak_etag' => $weak_etag
|
':weak_etag' => $weak_etag
|
||||||
) );
|
) );
|
||||||
|
|
||||||
|
if ( !$this->IsSchedulingCollection() && $do_scheduling ) {
|
||||||
|
if ( do_scheduling_requests($vcal, $create_resource ) ) {
|
||||||
|
$dav_params[':dav_data'] = $vcal->Render(null, true);
|
||||||
|
$etag = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ( $create_resource ) {
|
if ( $create_resource ) {
|
||||||
if ( !$this->IsSchedulingCollection() && $do_scheduling ) do_scheduling_requests($vcal,true);
|
|
||||||
$sql = 'INSERT INTO caldav_data ( dav_id, user_no, dav_name, dav_etag, caldav_data, caldav_type, logged_user, created, modified, collection_id, weak_etag )
|
$sql = 'INSERT INTO caldav_data ( dav_id, user_no, dav_name, dav_etag, caldav_data, caldav_type, logged_user, created, modified, collection_id, weak_etag )
|
||||||
VALUES( :dav_id, :user_no, :dav_name, :etag, :dav_data, :caldav_type, :session_user, current_timestamp, current_timestamp, :collection_id, :weak_etag )';
|
VALUES( :dav_id, :user_no, :dav_name, :etag, :dav_data, :caldav_type, :session_user, current_timestamp, current_timestamp, :collection_id, :weak_etag )';
|
||||||
$dav_params[':collection_id'] = $collection_id;
|
$dav_params[':collection_id'] = $collection_id;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if ( !$this->IsSchedulingCollection() && $do_scheduling ) do_scheduling_requests($vcal,false);
|
|
||||||
$sql = 'UPDATE caldav_data SET caldav_data=:dav_data, dav_etag=:etag, caldav_type=:caldav_type, logged_user=:session_user,
|
$sql = 'UPDATE caldav_data SET caldav_data=:dav_data, dav_etag=:etag, caldav_type=:caldav_type, logged_user=:session_user,
|
||||||
modified=current_timestamp, weak_etag=:weak_etag WHERE dav_id=:dav_id';
|
modified=current_timestamp, weak_etag=:weak_etag WHERE dav_id=:dav_id';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -242,7 +242,8 @@ function handle_schedule_request( $ical ) {
|
|||||||
$content = $ncal->Render();
|
$content = $ncal->Render();
|
||||||
$cid = $ar->GetProperty('collection_id');
|
$cid = $ar->GetProperty('collection_id');
|
||||||
dbg_error_log('DELIVER', 'to user: %s, to path: %s, collection: %s, from user: %s, caldata %s', $attendee_principal->user_no(), $deliver_path, $cid, $request->user_no, $content );
|
dbg_error_log('DELIVER', 'to user: %s, to path: %s, collection: %s, from user: %s, caldata %s', $attendee_principal->user_no(), $deliver_path, $cid, $request->user_no, $content );
|
||||||
write_resource( new DAVResource($deliver_path . $etag . '.ics'), $content, $ar, $request->user_no, md5($content),
|
$item_etag = md5($content);
|
||||||
|
write_resource( new DAVResource($deliver_path . $etag . '.ics'), $content, $ar, $request->user_no, $item_etag,
|
||||||
$put_action_type='INSERT', $caldav_context=true, $log_action=true, $etag );
|
$put_action_type='INSERT', $caldav_context=true, $log_action=true, $etag );
|
||||||
$attendee->SetParameterValue ('SCHEDULE-STATUS','1.2;Scheduling message has been delivered');
|
$attendee->SetParameterValue ('SCHEDULE-STATUS','1.2;Scheduling message has been delivered');
|
||||||
}
|
}
|
||||||
@ -252,7 +253,8 @@ function handle_schedule_request( $ical ) {
|
|||||||
$content = $ncal->Render();
|
$content = $ncal->Render();
|
||||||
$deliver_path = $request->principal->internal_url('schedule-inbox');
|
$deliver_path = $request->principal->internal_url('schedule-inbox');
|
||||||
$ar = new DAVResource($deliver_path);
|
$ar = new DAVResource($deliver_path);
|
||||||
write_resource( new DAVResource($deliver_path . $etag . '.ics'), $content, $ar, $request->user_no, md5($content),
|
$item_etag = md5($content);
|
||||||
|
write_resource( new DAVResource($deliver_path . $etag . '.ics'), $content, $ar, $request->user_no, $item_etag,
|
||||||
$put_action_type='INSERT', $caldav_context=true, $log_action=true, $etag );
|
$put_action_type='INSERT', $caldav_context=true, $log_action=true, $etag );
|
||||||
//$etag = md5($content);
|
//$etag = md5($content);
|
||||||
header('ETag: "'. $etag . '"' );
|
header('ETag: "'. $etag . '"' );
|
||||||
@ -314,69 +316,95 @@ function handle_schedule_reply ( vCalendar $ical ) {
|
|||||||
* the scheduled user's default calendar.
|
* the scheduled user's default calendar.
|
||||||
* @param vComponent $resource The VEVENT/VTODO/... resource we are scheduling
|
* @param vComponent $resource The VEVENT/VTODO/... resource we are scheduling
|
||||||
* @param boolean $create true if the scheduling requests are being created.
|
* @param boolean $create true if the scheduling requests are being created.
|
||||||
|
* @return true If there was any scheduling action
|
||||||
*/
|
*/
|
||||||
function do_scheduling_requests( vCalendar $resource, $create ) {
|
function do_scheduling_requests( vCalendar $resource, $create, $old_data = null ) {
|
||||||
global $request, $c;
|
global $request, $c;
|
||||||
if ( !isset($request) || (isset($c->enable_auto_schedule) && !$c->enable_auto_schedule) ) return;
|
if ( !isset($request) || (isset($c->enable_auto_schedule) && !$c->enable_auto_schedule) ) return false;
|
||||||
|
|
||||||
if ( ! is_object($resource) ) {
|
if ( ! is_object($resource) ) {
|
||||||
dbg_error_log( 'PUT', 'do_scheduling_requests called with non-object parameter (%s)', gettype($resource) );
|
trace_bug( 'do_scheduling_requests called with non-object parameter (%s)', gettype($resource) );
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$old_attendees = array();
|
||||||
|
if ( !empty($old_data) ) {
|
||||||
|
$old_resource = new vCalendar($old_data);
|
||||||
|
$old_attendees = $old_resource->GetAttendees();
|
||||||
|
}
|
||||||
$attendees = $resource->GetAttendees();
|
$attendees = $resource->GetAttendees();
|
||||||
if ( count($attendees) == 0 ) {
|
if ( count($attendees) == 0 && count($old_attendees) == 0 ) {
|
||||||
dbg_error_log( 'PUT', 'Event has no attendees - no scheduling required.', count($attendees) );
|
dbg_error_log( 'PUT', 'Event has no attendees - no scheduling required.', count($attendees) );
|
||||||
return;
|
return false;
|
||||||
|
}
|
||||||
|
$removed_attendees = array();
|
||||||
|
foreach( $old_attendees AS $attendee ) {
|
||||||
|
$email = preg_replace( '/^mailto:/i', '', $attendee->Value() );
|
||||||
|
if ( $email == $request->principal->email() ) continue;
|
||||||
|
$removed_attendees[$email] = $attendee;
|
||||||
}
|
}
|
||||||
|
|
||||||
dbg_error_log( 'PUT', 'Adding to scheduling inbox %d attendees', count($attendees) );
|
dbg_error_log( 'PUT', 'Adding to scheduling inbox %d attendees', count($attendees) );
|
||||||
$schedule_request = clone($resource);
|
$schedule_request = clone($resource);
|
||||||
$schedule_request->AddProperty('METHOD','REQUEST');
|
$schedule_request->AddProperty('METHOD','REQUEST');
|
||||||
|
$scheduling_actions = false;
|
||||||
foreach( $attendees AS $attendee ) {
|
foreach( $attendees AS $attendee ) {
|
||||||
$email = preg_replace( '/^mailto:/i', '', $attendee->Value() );
|
$email = preg_replace( '/^mailto:/i', '', $attendee->Value() );
|
||||||
if ( $email == $request->principal->email() ) {
|
if ( $email == $request->principal->email() ) {
|
||||||
dbg_error_log( "PUT", "not delivering to owner" );
|
dbg_error_log( "PUT", "not delivering to owner" );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( $create ) {
|
||||||
|
$attendee_is_new = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$attendee_is_new = !isset($removed_attendees[$email]);
|
||||||
|
if ( !$attendee_is_new ) unset($removed_attendees[$email]);
|
||||||
|
}
|
||||||
|
|
||||||
$agent = $attendee->GetParameterValue('SCHEDULE-AGENT');
|
$agent = $attendee->GetParameterValue('SCHEDULE-AGENT');
|
||||||
if ( $agent && $agent != 'SERVER' ) {
|
if ( $agent && $agent != 'SERVER' ) {
|
||||||
dbg_error_log( "PUT", "not delivering to %s, schedule agent set to value other than server", $email );
|
dbg_error_log( "PUT", "not delivering to %s, schedule agent set to value other than server", $email );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$schedule_target = new Principal('email',$email);
|
$schedule_target = new Principal('email',$email);
|
||||||
|
$response = '5.3;'.translate('No scheduling support for user');
|
||||||
if ( $schedule_target->Exists() ) {
|
if ( $schedule_target->Exists() ) {
|
||||||
$attendee_calendar = new WritableCollection(array('path' => $schedule_target->internal_url('schedule-default-calendar')));
|
$attendee_calendar = new WritableCollection(array('path' => $schedule_target->internal_url('schedule-default-calendar')));
|
||||||
if ( !$attendee_calendar->Exists() ) {
|
if ( !$attendee_calendar->Exists() ) {
|
||||||
dbg_error_log('ERROR','Default calendar at "%s" does not exist for user "%s"',
|
dbg_error_log('ERROR','Default calendar at "%s" does not exist for user "%s"',
|
||||||
$attendee_calendar->dav_name(), $schedule_target->username());
|
$attendee_calendar->dav_name(), $schedule_target->username());
|
||||||
$response = '5.3;'.translate('No scheduling support for user');
|
|
||||||
}
|
|
||||||
else if ( $attendee_calendar->WriteCalendarMember($resource, $create) === false ) {
|
|
||||||
dbg_error_log('ERROR','Could not write new calendar member to %s', $attendee_calendar->dav_name(),
|
|
||||||
$attendee_calendar->dav_name(), $schedule_target->username());
|
|
||||||
$response = '5.3;'.translate('No scheduling support for user');
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$attendee_inbox = new WritableCollection(array('path' => $schedule_target->internal_url('schedule-inbox')));
|
$attendee_inbox = new WritableCollection(array('path' => $schedule_target->internal_url('schedule-inbox')));
|
||||||
if ( ! $attendee_inbox->HavePrivilegeTo('schedule-deliver-invite') ) {
|
if ( ! $attendee_inbox->HavePrivilegeTo('schedule-deliver-invite') ) {
|
||||||
$response = '3.8;'.translate('No authority to deliver invitations to user.');
|
$response = '3.8;'.translate('No authority to deliver invitations to user.');
|
||||||
}
|
}
|
||||||
else if ( $attendee_inbox->WriteCalendarMember($schedule_request, $create) === false ) {
|
else if ( $attendee_inbox->WriteCalendarMember($schedule_request, $attendee_is_new) !== false ) {
|
||||||
$response = '5.3;'.translate('No scheduling support for user');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$response = '2.0;'.translate('Scheduling invitation delivered successfully');
|
$response = '2.0;'.translate('Scheduling invitation delivered successfully');
|
||||||
|
if ( $attendee_calendar->WriteCalendarMember($resource, $attendee_is_new) === false ) {
|
||||||
|
dbg_error_log('ERROR','Could not write new calendar member to %s', $attendee_calendar->dav_name(),
|
||||||
|
$attendee_calendar->dav_name(), $schedule_target->username());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
$response = '5.3;'.translate('No scheduling support for user');
|
|
||||||
}
|
|
||||||
$schedule_status = '"'.$response.'"';
|
$schedule_status = '"'.$response.'"';
|
||||||
dbg_error_log( 'PUT', 'Status for attendee <%s> set to "%s"', $attendee->Value(), $schedule_status );
|
dbg_error_log( 'PUT', 'Status for attendee <%s> set to "%s"', $attendee->Value(), $schedule_status );
|
||||||
$attendee->SetParameterValue( 'SCHEDULE-STATUS', $schedule_status );
|
$attendee->SetParameterValue( 'SCHEDULE-STATUS', $schedule_status );
|
||||||
|
$scheduling_actions = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( !$create ) {
|
||||||
|
foreach( $removed_attendees AS $attendee ) {
|
||||||
|
$schedule_target = new Principal('email',$email);
|
||||||
|
if ( $schedule_target->Exists() ) {
|
||||||
|
$attendee_calendar = new WritableCollection(array('path' => $schedule_target->internal_url('schedule-default-calendar')));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $scheduling_actions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -729,13 +757,13 @@ function write_attendees( $dav_id, vCalendar $ical ) {
|
|||||||
*
|
*
|
||||||
* @return boolean True for success, false for failure.
|
* @return boolean True for success, false for failure.
|
||||||
*/
|
*/
|
||||||
function write_resource( DAVResource $resource, $caldav_data, DAVResource $collection, $author, $etag, $put_action_type, $caldav_context, $log_action=true, $weak_etag=null ) {
|
function write_resource( DAVResource $resource, $caldav_data, DAVResource $collection, $author, &$etag, $put_action_type, $caldav_context, $log_action=true, $weak_etag=null ) {
|
||||||
global $tz_regex, $session;
|
global $tz_regex, $session;
|
||||||
|
|
||||||
$path = $resource->bound_from();
|
$path = $resource->bound_from();
|
||||||
$user_no = $collection->user_no();
|
$user_no = $collection->user_no();
|
||||||
$ic = new vCalendar( $caldav_data );
|
$vcal = new vCalendar( $caldav_data );
|
||||||
$resources = $ic->GetComponents('VTIMEZONE',false); // Not matching VTIMEZONE
|
$resources = $vcal->GetComponents('VTIMEZONE',false); // Not matching VTIMEZONE
|
||||||
if ( !isset($resources[0]) ) {
|
if ( !isset($resources[0]) ) {
|
||||||
$resource_type = 'Unknown';
|
$resource_type = 'Unknown';
|
||||||
/** @todo Handle writing non-calendar resources, like address book entries or random file data */
|
/** @todo Handle writing non-calendar resources, like address book entries or random file data */
|
||||||
@ -745,7 +773,7 @@ function write_resource( DAVResource $resource, $caldav_data, DAVResource $colle
|
|||||||
else {
|
else {
|
||||||
$first = $resources[0];
|
$first = $resources[0];
|
||||||
if ( !($first instanceof vComponent) ) {
|
if ( !($first instanceof vComponent) ) {
|
||||||
print $ic->Render();
|
print $vcal->Render();
|
||||||
fatal('This is not a vComponent!');
|
fatal('This is not a vComponent!');
|
||||||
}
|
}
|
||||||
$resource_type = $first->GetType();
|
$resource_type = $first->GetType();
|
||||||
@ -769,17 +797,19 @@ function write_resource( DAVResource $resource, $caldav_data, DAVResource $colle
|
|||||||
);
|
);
|
||||||
|
|
||||||
if ( $put_action_type == 'INSERT' ) {
|
if ( $put_action_type == 'INSERT' ) {
|
||||||
$qry->QDo('SELECT nextval(\'dav_id_seq\') AS dav_id');
|
$qry->QDo('SELECT nextval(\'dav_id_seq\') AS dav_id, null AS caldav_data');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$qry->QDo('SELECT dav_id FROM caldav_data WHERE dav_name = :dav_name ', array(':dav_name' => $path));
|
$qry->QDo('SELECT dav_id, caldav_data FROM caldav_data WHERE dav_name = :dav_name ', array(':dav_name' => $path));
|
||||||
}
|
}
|
||||||
if ( $qry->rows() != 1 || !($row = $qry->Fetch()) ) {
|
if ( $qry->rows() != 1 || !($row = $qry->Fetch()) ) {
|
||||||
// No dav_id? => We're toast!
|
// No dav_id? => We're toast!
|
||||||
|
trace_bug( 'No dav_id for "%s" on %s!!!', $path, ($create_resource ? 'create': 'update'));
|
||||||
rollback_on_error( $caldav_context, $user_no, $path);
|
rollback_on_error( $caldav_context, $user_no, $path);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$dav_id = $row->dav_id;
|
$dav_id = $row->dav_id;
|
||||||
|
$old_dav_data = $row->caldav_data;
|
||||||
$dav_params[':dav_id'] = $dav_id;
|
$dav_params[':dav_id'] = $dav_id;
|
||||||
$calitem_params[':dav_id'] = $dav_id;
|
$calitem_params[':dav_id'] = $dav_id;
|
||||||
|
|
||||||
@ -865,7 +895,7 @@ function write_resource( DAVResource $resource, $caldav_data, DAVResource $colle
|
|||||||
$last_olson = 'Turkmenikikamukau'; // I really hope this location doesn't exist!
|
$last_olson = 'Turkmenikikamukau'; // I really hope this location doesn't exist!
|
||||||
$tzid = GetTZID($first);
|
$tzid = GetTZID($first);
|
||||||
if ( !empty($tzid) ) {
|
if ( !empty($tzid) ) {
|
||||||
$timezones = $ic->GetComponents('VTIMEZONE');
|
$timezones = $vcal->GetComponents('VTIMEZONE');
|
||||||
foreach( $timezones AS $k => $tz ) {
|
foreach( $timezones AS $k => $tz ) {
|
||||||
if ( $tz->GetPValue('TZID') != $tzid ) {
|
if ( $tz->GetPValue('TZID') != $tzid ) {
|
||||||
/**
|
/**
|
||||||
@ -915,9 +945,15 @@ function write_resource( DAVResource $resource, $caldav_data, DAVResource $colle
|
|||||||
$calitem_params[':percent_complete'] = $first->GetPValue('PERCENT-COMPLETE');
|
$calitem_params[':percent_complete'] = $first->GetPValue('PERCENT-COMPLETE');
|
||||||
$calitem_params[':status'] = $first->GetPValue('STATUS');
|
$calitem_params[':status'] = $first->GetPValue('STATUS');
|
||||||
|
|
||||||
|
if ( !$collection->IsSchedulingCollection() ) {
|
||||||
|
if ( do_scheduling_requests($vcal, ($put_action_type == 'INSERT') ) ) {
|
||||||
|
$dav_params[':dav_data'] = $vcal->Render(null, true);
|
||||||
|
$etag = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ( !isset($dav_params[':modified']) ) $dav_params[':modified'] = 'now';
|
if ( !isset($dav_params[':modified']) ) $dav_params[':modified'] = 'now';
|
||||||
if ( $put_action_type == 'INSERT' ) {
|
if ( $put_action_type == 'INSERT' ) {
|
||||||
if ( !$collection->IsSchedulingCollection() ) do_scheduling_requests($ic,true);
|
|
||||||
$sql = 'INSERT INTO caldav_data ( dav_id, user_no, dav_name, dav_etag, caldav_data, caldav_type, logged_user, created, modified, collection_id, weak_etag )
|
$sql = 'INSERT INTO caldav_data ( dav_id, user_no, dav_name, dav_etag, caldav_data, caldav_type, logged_user, created, modified, collection_id, weak_etag )
|
||||||
VALUES( :dav_id, :user_no, :dav_name, :etag, :dav_data, :caldav_type, :session_user, :created, :modified, :collection_id, :weak_etag )';
|
VALUES( :dav_id, :user_no, :dav_name, :etag, :dav_data, :caldav_type, :session_user, :created, :modified, :collection_id, :weak_etag )';
|
||||||
$dav_params[':collection_id'] = $collection_id;
|
$dav_params[':collection_id'] = $collection_id;
|
||||||
@ -926,7 +962,6 @@ function write_resource( DAVResource $resource, $caldav_data, DAVResource $colle
|
|||||||
$dav_params[':created'] = (isset($created) && $created != '' ? $created : $dtstamp);
|
$dav_params[':created'] = (isset($created) && $created != '' ? $created : $dtstamp);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if ( !$collection->IsSchedulingCollection() ) do_scheduling_requests($ic,false);
|
|
||||||
$sql = 'UPDATE caldav_data SET caldav_data=:dav_data, dav_etag=:etag, caldav_type=:caldav_type, logged_user=:session_user,
|
$sql = 'UPDATE caldav_data SET caldav_data=:dav_data, dav_etag=:etag, caldav_type=:caldav_type, logged_user=:session_user,
|
||||||
modified=:modified, weak_etag=:weak_etag WHERE dav_id=:dav_id';
|
modified=:modified, weak_etag=:weak_etag WHERE dav_id=:dav_id';
|
||||||
}
|
}
|
||||||
@ -968,7 +1003,7 @@ EOSQL;
|
|||||||
}
|
}
|
||||||
|
|
||||||
write_alarms($dav_id, $first);
|
write_alarms($dav_id, $first);
|
||||||
write_attendees($dav_id, $ic);
|
write_attendees($dav_id, $vcal);
|
||||||
|
|
||||||
if ( $log_action && function_exists('log_caldav_action') ) {
|
if ( $log_action && function_exists('log_caldav_action') ) {
|
||||||
log_caldav_action( $put_action_type, $first->GetPValue('UID'), $user_no, $collection_id, $path );
|
log_caldav_action( $put_action_type, $first->GetPValue('UID'), $user_no, $collection_id, $path );
|
||||||
|
|||||||
@ -94,6 +94,6 @@ $collection = $dav_resource->GetParentContainer();
|
|||||||
write_resource( $dav_resource, $request->raw_post, $collection, $session->user_no, $etag,
|
write_resource( $dav_resource, $request->raw_post, $collection, $session->user_no, $etag,
|
||||||
$put_action_type, true, true );
|
$put_action_type, true, true );
|
||||||
|
|
||||||
header(sprintf('ETag: "%s"', $etag) );
|
if ( isset($etag) ) header(sprintf('ETag: "%s"', $etag) );
|
||||||
|
|
||||||
$request->DoResponse( ($dav_resource->Exists() ? 204 : 201) );
|
$request->DoResponse( ($dav_resource->Exists() ? 204 : 201) );
|
||||||
|
|||||||
@ -2,7 +2,6 @@ HTTP/1.1 201 Created
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "baad41c9f24bd1ecbdde6e58882df9b7"
|
|
||||||
Content-Length: 0
|
Content-Length: 0
|
||||||
Content-Type: text/plain; charset="utf-8"
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@ HTTP/1.1 200 OK
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
Content-Length: 22330
|
Content-Length: 22543
|
||||||
Etag: "ae93907cb03bc025b8e733eb61f3a09e"
|
Etag: "ae93907cb03bc025b8e733eb61f3a09e"
|
||||||
Content-Type: text/calendar; charset="utf-8"
|
Content-Type: text/calendar; charset="utf-8"
|
||||||
|
|
||||||
@ -390,14 +390,17 @@ SUMMARY:An invited event. Black tie with pink polka dots is essential.
|
|||||||
chained to a nearby fence.
|
chained to a nearby fence.
|
||||||
ORGANIZER;RSVP=TRUE;PARTSTAT=ACCEPTED;ROLE=CHAIR:mailto:user1@example.ne
|
ORGANIZER;RSVP=TRUE;PARTSTAT=ACCEPTED;ROLE=CHAIR:mailto:user1@example.ne
|
||||||
t
|
t
|
||||||
ATTENDEE;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT:mailto:use
|
ATTENDEE;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;SCHEDULE-S
|
||||||
r2@example.net
|
TATUS="2.0\;Scheduling invitation delivered successfully":mailto:user2@e
|
||||||
ATTENDEE;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT:mailto:use
|
xample.net
|
||||||
r3@example.net
|
ATTENDEE;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;SCHEDULE-S
|
||||||
|
TATUS="2.0\;Scheduling invitation delivered successfully":mailto:user3@e
|
||||||
|
xample.net
|
||||||
ATTENDEE;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT:mailto:use
|
ATTENDEE;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT:mailto:use
|
||||||
r4@example.net
|
r4@example.net
|
||||||
ATTENDEE;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT:mailto:use
|
ATTENDEE;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;SCHEDULE-S
|
||||||
r5@example.net
|
TATUS="2.0\;Scheduling invitation delivered successfully":mailto:user5@e
|
||||||
|
xample.net
|
||||||
DTSTART:20100322T160000
|
DTSTART:20100322T160000
|
||||||
DTEND:20100322T170000
|
DTEND:20100322T170000
|
||||||
X-MOZ-GENERATION:3
|
X-MOZ-GENERATION:3
|
||||||
|
|||||||
@ -4,73 +4,19 @@ HTTP/1.1 201 Created
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "e69b6d5b70189b96126c8993bcf1648a"
|
|
||||||
Content-Length: 0
|
Content-Length: 0
|
||||||
Content-Type: text/plain; charset="utf-8"
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
|
||||||
caldav_data: >BEGIN:VCALENDAR
|
|
||||||
VERSION:2.0
|
|
||||||
PRODID:-//Apple Inc.//iCal 3.0//EN
|
|
||||||
CALSCALE:GREGORIAN
|
|
||||||
BEGIN:VTIMEZONE
|
|
||||||
TZID:Pacific/Auckland
|
|
||||||
BEGIN:STANDARD
|
|
||||||
TZOFFSETFROM:+1300
|
|
||||||
TZOFFSETTO:+1200
|
|
||||||
DTSTART:19900318T030000
|
|
||||||
RRULE:FREQ=YEARLY;UNTIL=20070317T140000Z;BYMONTH=3;BYDAY=3SU
|
|
||||||
TZNAME:NZST
|
|
||||||
END:STANDARD
|
|
||||||
BEGIN:DAYLIGHT
|
|
||||||
TZOFFSETFROM:+1200
|
|
||||||
TZOFFSETTO:+1300
|
|
||||||
DTSTART:20070930T020000
|
|
||||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
|
|
||||||
TZNAME:NZDT
|
|
||||||
END:DAYLIGHT
|
|
||||||
BEGIN:STANDARD
|
|
||||||
TZOFFSETFROM:+1300
|
|
||||||
TZOFFSETTO:+1200
|
|
||||||
DTSTART:20080406T030000
|
|
||||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
|
|
||||||
TZNAME:NZST
|
|
||||||
END:STANDARD
|
|
||||||
END:VTIMEZONE
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SEQUENCE:7
|
|
||||||
DESCRIPTION:Masses of Lunch will be needed
|
|
||||||
UID:PUT-attendees
|
|
||||||
TRANSP:OPAQUE
|
|
||||||
DTSTART;TZID=Pacific/Auckland:20101123T110000
|
|
||||||
DTEND;TZID=Pacific/Auckland:20101123T160000
|
|
||||||
DTSTAMP:20101124T221900Z
|
|
||||||
SUMMARY:Multiple Beard Meeting
|
|
||||||
CREATED:20071124T221521Z
|
|
||||||
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=4TU
|
|
||||||
ORGANIZER;CN=User 1:MAILTO:user1@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
|
||||||
RSVP=TRUE;CN=User 1;LANGUAGE=en:MAILTO:user1@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
|
||||||
RSVP=TRUE;CN=User 2;LANGUAGE=en:MAILTO:user2@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
|
||||||
RSVP=TRUE;CN=User 3;LANGUAGE=en:MAILTO:user3@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
|
||||||
RSVP=TRUE;CN=User 4;LANGUAGE=en:MAILTO:user4@example.net
|
|
||||||
END:VEVENT
|
|
||||||
END:VCALENDAR
|
|
||||||
<
|
|
||||||
caldav_type: >VEVENT<
|
caldav_type: >VEVENT<
|
||||||
dav_name: >/user1/home/PUT-attendees.ics<
|
dav_name: >/user1/home/PUT-attendees.ics<
|
||||||
logged_user: >10<
|
logged_user: >10<
|
||||||
summary: >Multiple Beard Meeting<
|
summary: >Multiple Beard Meeting<
|
||||||
user_no: >10<
|
user_no: >10<
|
||||||
|
vcalendar: >BEGIN:VCALENDAR
|
||||||
caldav_data: >BEGIN:VCALENDAR
|
|
||||||
VERSION:2.0
|
VERSION:2.0
|
||||||
PRODID:-//Apple Inc.//iCal 3.0//EN
|
PRODID:-//Apple Inc.//iCal 3.0//EN
|
||||||
CALSCALE:GREGORIAN
|
CALSCALE:GREGORIAN
|
||||||
METHOD:REQUEST
|
|
||||||
BEGIN:VTIMEZONE
|
BEGIN:VTIMEZONE
|
||||||
TZID:Pacific/Auckland
|
TZID:Pacific/Auckland
|
||||||
BEGIN:STANDARD
|
BEGIN:STANDARD
|
||||||
@ -110,193 +56,24 @@ ORGANIZER;CN=User 1:MAILTO:user1@example.net
|
|||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS
|
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS
|
||||||
VP=TRUE;CN=User 1;LANGUAGE=en:MAILTO:user1@example.net
|
VP=TRUE;CN=User 1;LANGUAGE=en:MAILTO:user1@example.net
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS
|
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS
|
||||||
VP=TRUE;CN=User 2;LANGUAGE=en:MAILTO:user2@example.net
|
VP=TRUE;CN=User 2;LANGUAGE=en;SCHEDULE-STATUS="2.0\;Scheduling invitatio
|
||||||
|
n delivered successfully":MAILTO:user2@example.net
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS
|
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS
|
||||||
VP=TRUE;CN=User 3;LANGUAGE=en:MAILTO:user3@example.net
|
VP=TRUE;CN=User 3;LANGUAGE=en;SCHEDULE-STATUS="2.0\;Scheduling invitatio
|
||||||
|
n delivered successfully":MAILTO:user3@example.net
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS
|
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS
|
||||||
VP=TRUE;CN=User 4;LANGUAGE=en:MAILTO:user4@example.net
|
VP=TRUE;CN=User 4;LANGUAGE=en;SCHEDULE-STATUS="2.0\;Scheduling invitatio
|
||||||
|
n delivered successfully":MAILTO:user4@example.net
|
||||||
END:VEVENT
|
END:VEVENT
|
||||||
END:VCALENDAR
|
END:VCALENDAR
|
||||||
<
|
<
|
||||||
caldav_type: >VEVENT<
|
|
||||||
dav_name: >/user1/.in/PUT-attendees.ics<
|
|
||||||
logged_user: >10<
|
|
||||||
summary: >Multiple Beard Meeting<
|
|
||||||
user_no: >10<
|
|
||||||
|
|
||||||
caldav_data: >BEGIN:VCALENDAR
|
|
||||||
VERSION:2.0
|
|
||||||
PRODID:-//Apple Inc.//iCal 3.0//EN
|
|
||||||
CALSCALE:GREGORIAN
|
|
||||||
BEGIN:VTIMEZONE
|
|
||||||
TZID:Pacific/Auckland
|
|
||||||
BEGIN:STANDARD
|
|
||||||
TZOFFSETFROM:+1300
|
|
||||||
TZOFFSETTO:+1200
|
|
||||||
DTSTART:19900318T030000
|
|
||||||
RRULE:FREQ=YEARLY;UNTIL=20070317T140000Z;BYMONTH=3;BYDAY=3SU
|
|
||||||
TZNAME:NZST
|
|
||||||
END:STANDARD
|
|
||||||
BEGIN:DAYLIGHT
|
|
||||||
TZOFFSETFROM:+1200
|
|
||||||
TZOFFSETTO:+1300
|
|
||||||
DTSTART:20070930T020000
|
|
||||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
|
|
||||||
TZNAME:NZDT
|
|
||||||
END:DAYLIGHT
|
|
||||||
BEGIN:STANDARD
|
|
||||||
TZOFFSETFROM:+1300
|
|
||||||
TZOFFSETTO:+1200
|
|
||||||
DTSTART:20080406T030000
|
|
||||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
|
|
||||||
TZNAME:NZST
|
|
||||||
END:STANDARD
|
|
||||||
END:VTIMEZONE
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SEQUENCE:7
|
|
||||||
DESCRIPTION:Masses of Lunch will be needed
|
|
||||||
UID:PUT-attendees
|
|
||||||
TRANSP:OPAQUE
|
|
||||||
DTSTART;TZID=Pacific/Auckland:20101123T110000
|
|
||||||
DTEND;TZID=Pacific/Auckland:20101123T160000
|
|
||||||
DTSTAMP:20101124T221900Z
|
|
||||||
SUMMARY:Multiple Beard Meeting
|
|
||||||
CREATED:20071124T221521Z
|
|
||||||
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=4TU
|
|
||||||
ORGANIZER;CN=User 1:MAILTO:user1@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
|
||||||
RSVP=TRUE;CN=User 1;LANGUAGE=en:MAILTO:user1@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
|
||||||
RSVP=TRUE;CN=User 2;LANGUAGE=en:MAILTO:user2@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
|
||||||
RSVP=TRUE;CN=User 3;LANGUAGE=en:MAILTO:user3@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
|
||||||
RSVP=TRUE;CN=User 4;LANGUAGE=en:MAILTO:user4@example.net
|
|
||||||
END:VEVENT
|
|
||||||
END:VCALENDAR
|
|
||||||
<
|
|
||||||
caldav_type: >VEVENT<
|
|
||||||
dav_name: >/user2/home/PUT-attendees.ics<
|
|
||||||
logged_user: >10<
|
|
||||||
summary: >Multiple Beard Meeting<
|
|
||||||
user_no: >11<
|
|
||||||
|
|
||||||
caldav_data: >BEGIN:VCALENDAR
|
|
||||||
VERSION:2.0
|
|
||||||
PRODID:-//Apple Inc.//iCal 3.0//EN
|
|
||||||
CALSCALE:GREGORIAN
|
|
||||||
METHOD:REQUEST
|
|
||||||
BEGIN:VTIMEZONE
|
|
||||||
TZID:Pacific/Auckland
|
|
||||||
BEGIN:STANDARD
|
|
||||||
TZOFFSETFROM:+1300
|
|
||||||
TZOFFSETTO:+1200
|
|
||||||
DTSTART:19900318T030000
|
|
||||||
RRULE:FREQ=YEARLY;UNTIL=20070317T140000Z;BYMONTH=3;BYDAY=3SU
|
|
||||||
TZNAME:NZST
|
|
||||||
END:STANDARD
|
|
||||||
BEGIN:DAYLIGHT
|
|
||||||
TZOFFSETFROM:+1200
|
|
||||||
TZOFFSETTO:+1300
|
|
||||||
DTSTART:20070930T020000
|
|
||||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
|
|
||||||
TZNAME:NZDT
|
|
||||||
END:DAYLIGHT
|
|
||||||
BEGIN:STANDARD
|
|
||||||
TZOFFSETFROM:+1300
|
|
||||||
TZOFFSETTO:+1200
|
|
||||||
DTSTART:20080406T030000
|
|
||||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
|
|
||||||
TZNAME:NZST
|
|
||||||
END:STANDARD
|
|
||||||
END:VTIMEZONE
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SEQUENCE:7
|
|
||||||
DESCRIPTION:Masses of Lunch will be needed
|
|
||||||
UID:PUT-attendees
|
|
||||||
TRANSP:OPAQUE
|
|
||||||
DTSTART;TZID=Pacific/Auckland:20101123T110000
|
|
||||||
DTEND;TZID=Pacific/Auckland:20101123T160000
|
|
||||||
DTSTAMP:20101124T221900Z
|
|
||||||
SUMMARY:Multiple Beard Meeting
|
|
||||||
CREATED:20071124T221521Z
|
|
||||||
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=4TU
|
|
||||||
ORGANIZER;CN=User 1:MAILTO:user1@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS
|
|
||||||
VP=TRUE;CN=User 1;LANGUAGE=en:MAILTO:user1@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS
|
|
||||||
VP=TRUE;CN=User 2;LANGUAGE=en:MAILTO:user2@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS
|
|
||||||
VP=TRUE;CN=User 3;LANGUAGE=en:MAILTO:user3@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS
|
|
||||||
VP=TRUE;CN=User 4;LANGUAGE=en:MAILTO:user4@example.net
|
|
||||||
END:VEVENT
|
|
||||||
END:VCALENDAR
|
|
||||||
<
|
|
||||||
caldav_type: >VEVENT<
|
caldav_type: >VEVENT<
|
||||||
dav_name: >/user2/.in/PUT-attendees.ics<
|
dav_name: >/user2/.in/PUT-attendees.ics<
|
||||||
logged_user: >10<
|
logged_user: >10<
|
||||||
summary: >Multiple Beard Meeting<
|
summary: >Multiple Beard Meeting<
|
||||||
user_no: >11<
|
user_no: >11<
|
||||||
|
vcalendar: >BEGIN:VCALENDAR
|
||||||
caldav_data: >BEGIN:VCALENDAR
|
|
||||||
VERSION:2.0
|
|
||||||
PRODID:-//Apple Inc.//iCal 3.0//EN
|
|
||||||
CALSCALE:GREGORIAN
|
|
||||||
BEGIN:VTIMEZONE
|
|
||||||
TZID:Pacific/Auckland
|
|
||||||
BEGIN:STANDARD
|
|
||||||
TZOFFSETFROM:+1300
|
|
||||||
TZOFFSETTO:+1200
|
|
||||||
DTSTART:19900318T030000
|
|
||||||
RRULE:FREQ=YEARLY;UNTIL=20070317T140000Z;BYMONTH=3;BYDAY=3SU
|
|
||||||
TZNAME:NZST
|
|
||||||
END:STANDARD
|
|
||||||
BEGIN:DAYLIGHT
|
|
||||||
TZOFFSETFROM:+1200
|
|
||||||
TZOFFSETTO:+1300
|
|
||||||
DTSTART:20070930T020000
|
|
||||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
|
|
||||||
TZNAME:NZDT
|
|
||||||
END:DAYLIGHT
|
|
||||||
BEGIN:STANDARD
|
|
||||||
TZOFFSETFROM:+1300
|
|
||||||
TZOFFSETTO:+1200
|
|
||||||
DTSTART:20080406T030000
|
|
||||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
|
|
||||||
TZNAME:NZST
|
|
||||||
END:STANDARD
|
|
||||||
END:VTIMEZONE
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SEQUENCE:7
|
|
||||||
DESCRIPTION:Masses of Lunch will be needed
|
|
||||||
UID:PUT-attendees
|
|
||||||
TRANSP:OPAQUE
|
|
||||||
DTSTART;TZID=Pacific/Auckland:20101123T110000
|
|
||||||
DTEND;TZID=Pacific/Auckland:20101123T160000
|
|
||||||
DTSTAMP:20101124T221900Z
|
|
||||||
SUMMARY:Multiple Beard Meeting
|
|
||||||
CREATED:20071124T221521Z
|
|
||||||
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=4TU
|
|
||||||
ORGANIZER;CN=User 1:MAILTO:user1@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
|
||||||
RSVP=TRUE;CN=User 1;LANGUAGE=en:MAILTO:user1@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
|
||||||
RSVP=TRUE;CN=User 2;LANGUAGE=en:MAILTO:user2@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
|
||||||
RSVP=TRUE;CN=User 3;LANGUAGE=en:MAILTO:user3@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
|
||||||
RSVP=TRUE;CN=User 4;LANGUAGE=en:MAILTO:user4@example.net
|
|
||||||
END:VEVENT
|
|
||||||
END:VCALENDAR
|
|
||||||
<
|
|
||||||
caldav_type: >VEVENT<
|
|
||||||
dav_name: >/user3/home/PUT-attendees.ics<
|
|
||||||
logged_user: >10<
|
|
||||||
summary: >Multiple Beard Meeting<
|
|
||||||
user_no: >12<
|
|
||||||
|
|
||||||
caldav_data: >BEGIN:VCALENDAR
|
|
||||||
VERSION:2.0
|
VERSION:2.0
|
||||||
PRODID:-//Apple Inc.//iCal 3.0//EN
|
PRODID:-//Apple Inc.//iCal 3.0//EN
|
||||||
CALSCALE:GREGORIAN
|
CALSCALE:GREGORIAN
|
||||||
@ -348,70 +125,70 @@ ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS
|
|||||||
END:VEVENT
|
END:VEVENT
|
||||||
END:VCALENDAR
|
END:VCALENDAR
|
||||||
<
|
<
|
||||||
|
|
||||||
|
caldav_type: >VEVENT<
|
||||||
|
dav_name: >/user2/home/PUT-attendees.ics<
|
||||||
|
logged_user: >10<
|
||||||
|
summary: >Multiple Beard Meeting<
|
||||||
|
user_no: >11<
|
||||||
|
vcalendar: >BEGIN:VCALENDAR
|
||||||
|
VERSION:2.0
|
||||||
|
PRODID:-//Apple Inc.//iCal 3.0//EN
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:Pacific/Auckland
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+1300
|
||||||
|
TZOFFSETTO:+1200
|
||||||
|
DTSTART:19900318T030000
|
||||||
|
RRULE:FREQ=YEARLY;UNTIL=20070317T140000Z;BYMONTH=3;BYDAY=3SU
|
||||||
|
TZNAME:NZST
|
||||||
|
END:STANDARD
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
TZOFFSETFROM:+1200
|
||||||
|
TZOFFSETTO:+1300
|
||||||
|
DTSTART:20070930T020000
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
|
||||||
|
TZNAME:NZDT
|
||||||
|
END:DAYLIGHT
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+1300
|
||||||
|
TZOFFSETTO:+1200
|
||||||
|
DTSTART:20080406T030000
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
|
||||||
|
TZNAME:NZST
|
||||||
|
END:STANDARD
|
||||||
|
END:VTIMEZONE
|
||||||
|
BEGIN:VEVENT
|
||||||
|
SEQUENCE:7
|
||||||
|
DESCRIPTION:Masses of Lunch will be needed
|
||||||
|
UID:PUT-attendees
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
DTSTART;TZID=Pacific/Auckland:20101123T110000
|
||||||
|
DTEND;TZID=Pacific/Auckland:20101123T160000
|
||||||
|
DTSTAMP:20101124T221900Z
|
||||||
|
SUMMARY:Multiple Beard Meeting
|
||||||
|
CREATED:20071124T221521Z
|
||||||
|
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=4TU
|
||||||
|
ORGANIZER;CN=User 1:MAILTO:user1@example.net
|
||||||
|
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
||||||
|
RSVP=TRUE;CN=User 1;LANGUAGE=en:MAILTO:user1@example.net
|
||||||
|
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
||||||
|
RSVP=TRUE;CN=User 2;LANGUAGE=en:MAILTO:user2@example.net
|
||||||
|
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
||||||
|
RSVP=TRUE;CN=User 3;LANGUAGE=en:MAILTO:user3@example.net
|
||||||
|
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
||||||
|
RSVP=TRUE;CN=User 4;LANGUAGE=en:MAILTO:user4@example.net
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
||||||
|
<
|
||||||
|
|
||||||
caldav_type: >VEVENT<
|
caldav_type: >VEVENT<
|
||||||
dav_name: >/user3/.in/PUT-attendees.ics<
|
dav_name: >/user3/.in/PUT-attendees.ics<
|
||||||
logged_user: >10<
|
logged_user: >10<
|
||||||
summary: >Multiple Beard Meeting<
|
summary: >Multiple Beard Meeting<
|
||||||
user_no: >12<
|
user_no: >12<
|
||||||
|
vcalendar: >BEGIN:VCALENDAR
|
||||||
caldav_data: >BEGIN:VCALENDAR
|
|
||||||
VERSION:2.0
|
|
||||||
PRODID:-//Apple Inc.//iCal 3.0//EN
|
|
||||||
CALSCALE:GREGORIAN
|
|
||||||
BEGIN:VTIMEZONE
|
|
||||||
TZID:Pacific/Auckland
|
|
||||||
BEGIN:STANDARD
|
|
||||||
TZOFFSETFROM:+1300
|
|
||||||
TZOFFSETTO:+1200
|
|
||||||
DTSTART:19900318T030000
|
|
||||||
RRULE:FREQ=YEARLY;UNTIL=20070317T140000Z;BYMONTH=3;BYDAY=3SU
|
|
||||||
TZNAME:NZST
|
|
||||||
END:STANDARD
|
|
||||||
BEGIN:DAYLIGHT
|
|
||||||
TZOFFSETFROM:+1200
|
|
||||||
TZOFFSETTO:+1300
|
|
||||||
DTSTART:20070930T020000
|
|
||||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
|
|
||||||
TZNAME:NZDT
|
|
||||||
END:DAYLIGHT
|
|
||||||
BEGIN:STANDARD
|
|
||||||
TZOFFSETFROM:+1300
|
|
||||||
TZOFFSETTO:+1200
|
|
||||||
DTSTART:20080406T030000
|
|
||||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
|
|
||||||
TZNAME:NZST
|
|
||||||
END:STANDARD
|
|
||||||
END:VTIMEZONE
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SEQUENCE:7
|
|
||||||
DESCRIPTION:Masses of Lunch will be needed
|
|
||||||
UID:PUT-attendees
|
|
||||||
TRANSP:OPAQUE
|
|
||||||
DTSTART;TZID=Pacific/Auckland:20101123T110000
|
|
||||||
DTEND;TZID=Pacific/Auckland:20101123T160000
|
|
||||||
DTSTAMP:20101124T221900Z
|
|
||||||
SUMMARY:Multiple Beard Meeting
|
|
||||||
CREATED:20071124T221521Z
|
|
||||||
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=4TU
|
|
||||||
ORGANIZER;CN=User 1:MAILTO:user1@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
|
||||||
RSVP=TRUE;CN=User 1;LANGUAGE=en:MAILTO:user1@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
|
||||||
RSVP=TRUE;CN=User 2;LANGUAGE=en:MAILTO:user2@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
|
||||||
RSVP=TRUE;CN=User 3;LANGUAGE=en:MAILTO:user3@example.net
|
|
||||||
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
|
||||||
RSVP=TRUE;CN=User 4;LANGUAGE=en:MAILTO:user4@example.net
|
|
||||||
END:VEVENT
|
|
||||||
END:VCALENDAR
|
|
||||||
<
|
|
||||||
caldav_type: >VEVENT<
|
|
||||||
dav_name: >/user4/home/PUT-attendees.ics<
|
|
||||||
logged_user: >10<
|
|
||||||
summary: >Multiple Beard Meeting<
|
|
||||||
user_no: >13<
|
|
||||||
|
|
||||||
caldav_data: >BEGIN:VCALENDAR
|
|
||||||
VERSION:2.0
|
VERSION:2.0
|
||||||
PRODID:-//Apple Inc.//iCal 3.0//EN
|
PRODID:-//Apple Inc.//iCal 3.0//EN
|
||||||
CALSCALE:GREGORIAN
|
CALSCALE:GREGORIAN
|
||||||
@ -463,13 +240,13 @@ ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS
|
|||||||
END:VEVENT
|
END:VEVENT
|
||||||
END:VCALENDAR
|
END:VCALENDAR
|
||||||
<
|
<
|
||||||
|
|
||||||
caldav_type: >VEVENT<
|
caldav_type: >VEVENT<
|
||||||
dav_name: >/user4/.in/PUT-attendees.ics<
|
dav_name: >/user3/home/PUT-attendees.ics<
|
||||||
logged_user: >10<
|
logged_user: >10<
|
||||||
summary: >Multiple Beard Meeting<
|
summary: >Multiple Beard Meeting<
|
||||||
user_no: >13<
|
user_no: >12<
|
||||||
|
vcalendar: >BEGIN:VCALENDAR
|
||||||
caldav_data: >BEGIN:VCALENDAR
|
|
||||||
VERSION:2.0
|
VERSION:2.0
|
||||||
PRODID:-//Apple Inc.//iCal 3.0//EN
|
PRODID:-//Apple Inc.//iCal 3.0//EN
|
||||||
CALSCALE:GREGORIAN
|
CALSCALE:GREGORIAN
|
||||||
@ -520,9 +297,119 @@ ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
|||||||
END:VEVENT
|
END:VEVENT
|
||||||
END:VCALENDAR
|
END:VCALENDAR
|
||||||
<
|
<
|
||||||
|
|
||||||
caldav_type: >VEVENT<
|
caldav_type: >VEVENT<
|
||||||
dav_name: >/resource2/home/PUT-attendees.ics<
|
dav_name: >/user4/.in/PUT-attendees.ics<
|
||||||
logged_user: >10<
|
logged_user: >10<
|
||||||
summary: >Multiple Beard Meeting<
|
summary: >Multiple Beard Meeting<
|
||||||
user_no: >101<
|
user_no: >13<
|
||||||
|
vcalendar: >BEGIN:VCALENDAR
|
||||||
|
VERSION:2.0
|
||||||
|
PRODID:-//Apple Inc.//iCal 3.0//EN
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
METHOD:REQUEST
|
||||||
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:Pacific/Auckland
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+1300
|
||||||
|
TZOFFSETTO:+1200
|
||||||
|
DTSTART:19900318T030000
|
||||||
|
RRULE:FREQ=YEARLY;UNTIL=20070317T140000Z;BYMONTH=3;BYDAY=3SU
|
||||||
|
TZNAME:NZST
|
||||||
|
END:STANDARD
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
TZOFFSETFROM:+1200
|
||||||
|
TZOFFSETTO:+1300
|
||||||
|
DTSTART:20070930T020000
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
|
||||||
|
TZNAME:NZDT
|
||||||
|
END:DAYLIGHT
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+1300
|
||||||
|
TZOFFSETTO:+1200
|
||||||
|
DTSTART:20080406T030000
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
|
||||||
|
TZNAME:NZST
|
||||||
|
END:STANDARD
|
||||||
|
END:VTIMEZONE
|
||||||
|
BEGIN:VEVENT
|
||||||
|
SEQUENCE:7
|
||||||
|
DESCRIPTION:Masses of Lunch will be needed
|
||||||
|
UID:PUT-attendees
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
DTSTART;TZID=Pacific/Auckland:20101123T110000
|
||||||
|
DTEND;TZID=Pacific/Auckland:20101123T160000
|
||||||
|
DTSTAMP:20101124T221900Z
|
||||||
|
SUMMARY:Multiple Beard Meeting
|
||||||
|
CREATED:20071124T221521Z
|
||||||
|
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=4TU
|
||||||
|
ORGANIZER;CN=User 1:MAILTO:user1@example.net
|
||||||
|
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS
|
||||||
|
VP=TRUE;CN=User 1;LANGUAGE=en:MAILTO:user1@example.net
|
||||||
|
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS
|
||||||
|
VP=TRUE;CN=User 2;LANGUAGE=en:MAILTO:user2@example.net
|
||||||
|
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS
|
||||||
|
VP=TRUE;CN=User 3;LANGUAGE=en:MAILTO:user3@example.net
|
||||||
|
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS
|
||||||
|
VP=TRUE;CN=User 4;LANGUAGE=en:MAILTO:user4@example.net
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
||||||
|
<
|
||||||
|
|
||||||
|
caldav_type: >VEVENT<
|
||||||
|
dav_name: >/user4/home/PUT-attendees.ics<
|
||||||
|
logged_user: >10<
|
||||||
|
summary: >Multiple Beard Meeting<
|
||||||
|
user_no: >13<
|
||||||
|
vcalendar: >BEGIN:VCALENDAR
|
||||||
|
VERSION:2.0
|
||||||
|
PRODID:-//Apple Inc.//iCal 3.0//EN
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:Pacific/Auckland
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+1300
|
||||||
|
TZOFFSETTO:+1200
|
||||||
|
DTSTART:19900318T030000
|
||||||
|
RRULE:FREQ=YEARLY;UNTIL=20070317T140000Z;BYMONTH=3;BYDAY=3SU
|
||||||
|
TZNAME:NZST
|
||||||
|
END:STANDARD
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
TZOFFSETFROM:+1200
|
||||||
|
TZOFFSETTO:+1300
|
||||||
|
DTSTART:20070930T020000
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
|
||||||
|
TZNAME:NZDT
|
||||||
|
END:DAYLIGHT
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+1300
|
||||||
|
TZOFFSETTO:+1200
|
||||||
|
DTSTART:20080406T030000
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
|
||||||
|
TZNAME:NZST
|
||||||
|
END:STANDARD
|
||||||
|
END:VTIMEZONE
|
||||||
|
BEGIN:VEVENT
|
||||||
|
SEQUENCE:7
|
||||||
|
DESCRIPTION:Masses of Lunch will be needed
|
||||||
|
UID:PUT-attendees
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
DTSTART;TZID=Pacific/Auckland:20101123T110000
|
||||||
|
DTEND;TZID=Pacific/Auckland:20101123T160000
|
||||||
|
DTSTAMP:20101124T221900Z
|
||||||
|
SUMMARY:Multiple Beard Meeting
|
||||||
|
CREATED:20071124T221521Z
|
||||||
|
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=4TU
|
||||||
|
ORGANIZER;CN=User 1:MAILTO:user1@example.net
|
||||||
|
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
||||||
|
RSVP=TRUE;CN=User 1;LANGUAGE=en:MAILTO:user1@example.net
|
||||||
|
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
||||||
|
RSVP=TRUE;CN=User 2;LANGUAGE=en:MAILTO:user2@example.net
|
||||||
|
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
||||||
|
RSVP=TRUE;CN=User 3;LANGUAGE=en:MAILTO:user3@example.net
|
||||||
|
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;
|
||||||
|
RSVP=TRUE;CN=User 4;LANGUAGE=en:MAILTO:user4@example.net
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
||||||
|
<
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
# PUT an event with attendees
|
# PUT an event with attendees
|
||||||
#
|
#
|
||||||
TYPE=PUT
|
TYPE=PUT
|
||||||
URL=http://mycaldav/caldav.php/resource2/home/PUT-attendees.ics
|
URL=http://mycaldav/caldav.php/user1/home/PUT-attendees.ics
|
||||||
HEADER=Content-Type: text/calendar
|
HEADER=Content-Type: text/calendar
|
||||||
HEADER=User-Agent: DAVKit/2.0 (10.5.1; wrbt) iCal 3.0.1
|
HEADER=User-Agent: DAVKit/2.0 (10.5.1; wrbt) iCal 3.0.1
|
||||||
HEAD
|
HEAD
|
||||||
@ -64,9 +64,10 @@ ENDDATA
|
|||||||
|
|
||||||
QUERY
|
QUERY
|
||||||
SELECT caldav_data.user_no, caldav_data.dav_name,
|
SELECT caldav_data.user_no, caldav_data.dav_name,
|
||||||
caldav_type, logged_user, caldav_data.caldav_data,
|
caldav_type, logged_user, caldav_data.caldav_data AS "vcalendar",
|
||||||
summary
|
summary
|
||||||
FROM caldav_data JOIN calendar_item USING(dav_name) LEFT JOIN timezones ON (tz_id=tzid)
|
FROM caldav_data JOIN calendar_item USING(dav_name) LEFT JOIN timezones ON (tz_id=tzid)
|
||||||
WHERE calendar_item.uid = 'PUT-attendees';
|
WHERE calendar_item.uid = 'PUT-attendees'
|
||||||
|
ORDER BY caldav_data.dav_id
|
||||||
ENDQUERY
|
ENDQUERY
|
||||||
|
|
||||||
|
|||||||
48
testing/tests/scheduling/3020-PUT-iCal-no-attendees.result
Normal file
48
testing/tests/scheduling/3020-PUT-iCal-no-attendees.result
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
HTTP/1.1 201 Created
|
||||||
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
|
ETag: "f50eb3ddd963c757b4f63aa12a4f4346"
|
||||||
|
Content-Length: 0
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
|
||||||
|
caldav_data: >BEGIN:VCALENDAR
|
||||||
|
VERSION:2.0
|
||||||
|
PRODID:-//Apple Inc.//iCal 4.0.4//EN
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:Pacific/Auckland
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
TZOFFSETFROM:+1200
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
|
||||||
|
DTSTART:20070930T020000
|
||||||
|
TZNAME:GMT+13:00
|
||||||
|
TZOFFSETTO:+1300
|
||||||
|
END:DAYLIGHT
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+1300
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
|
||||||
|
DTSTART:20080406T030000
|
||||||
|
TZNAME:GMT+12:00
|
||||||
|
TZOFFSETTO:+1200
|
||||||
|
END:STANDARD
|
||||||
|
END:VTIMEZONE
|
||||||
|
BEGIN:VEVENT
|
||||||
|
CREATED:20111018T195845Z
|
||||||
|
UID:E1A13F04-iCal-schedule
|
||||||
|
DTEND;TZID=Pacific/Auckland:20111019T110000
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
SUMMARY:Meeting with User1
|
||||||
|
DTSTART;TZID=Pacific/Auckland:20111019T100000
|
||||||
|
DTSTAMP:20111018T195908Z
|
||||||
|
SEQUENCE:3
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
||||||
|
<
|
||||||
|
caldav_type: >VEVENT<
|
||||||
|
dav_name: >/manager1/home/E1A13F04-iCal-schedule.ics<
|
||||||
|
logged_user: >20<
|
||||||
|
summary: >Meeting with User1<
|
||||||
|
user_no: >20<
|
||||||
|
|
||||||
55
testing/tests/scheduling/3020-PUT-iCal-no-attendees.test
Normal file
55
testing/tests/scheduling/3020-PUT-iCal-no-attendees.test
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
#
|
||||||
|
# PUT an event with attendees
|
||||||
|
#
|
||||||
|
TYPE=PUT
|
||||||
|
URL=http://regression.host/caldav.php/manager1/home/E1A13F04-iCal-schedule.ics
|
||||||
|
HEADER=Content-Type: text/calendar
|
||||||
|
HEADER=DAVKit/4.0.3 (732.2); CalendarStore/4.0.4 (997.7); iCal/4.0.4 (1395.7); Mac OS X/10.6.8 (10K549)
|
||||||
|
HEAD
|
||||||
|
|
||||||
|
AUTH=manager1:manager1
|
||||||
|
|
||||||
|
BEGINDATA
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
VERSION:2.0
|
||||||
|
PRODID:-//Apple Inc.//iCal 4.0.4//EN
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:Pacific/Auckland
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
TZOFFSETFROM:+1200
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
|
||||||
|
DTSTART:20070930T020000
|
||||||
|
TZNAME:GMT+13:00
|
||||||
|
TZOFFSETTO:+1300
|
||||||
|
END:DAYLIGHT
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+1300
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
|
||||||
|
DTSTART:20080406T030000
|
||||||
|
TZNAME:GMT+12:00
|
||||||
|
TZOFFSETTO:+1200
|
||||||
|
END:STANDARD
|
||||||
|
END:VTIMEZONE
|
||||||
|
BEGIN:VEVENT
|
||||||
|
CREATED:20111018T195845Z
|
||||||
|
UID:E1A13F04-iCal-schedule
|
||||||
|
DTEND;TZID=Pacific/Auckland:20111019T110000
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
SUMMARY:Meeting with User1
|
||||||
|
DTSTART;TZID=Pacific/Auckland:20111019T100000
|
||||||
|
DTSTAMP:20111018T195908Z
|
||||||
|
SEQUENCE:3
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
||||||
|
ENDDATA
|
||||||
|
|
||||||
|
|
||||||
|
QUERY
|
||||||
|
SELECT caldav_data.user_no, caldav_data.dav_name,
|
||||||
|
caldav_type, logged_user, caldav_data.caldav_data,
|
||||||
|
summary
|
||||||
|
FROM caldav_data JOIN calendar_item USING(dav_name) LEFT JOIN timezones ON (tz_id=tzid)
|
||||||
|
WHERE calendar_item.uid = 'E1A13F04-iCal-schedule';
|
||||||
|
ENDQUERY
|
||||||
|
|
||||||
46
testing/tests/scheduling/3021-POST-availability.result
Normal file
46
testing/tests/scheduling/3021-POST-availability.result
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<C:schedule-response xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
|
||||||
|
<C:response>
|
||||||
|
<C:recipient>
|
||||||
|
<href>mailto:manager1@example.net</href>
|
||||||
|
</C:recipient>
|
||||||
|
<C:request-status>2.0;Success</C:request-status>
|
||||||
|
<C:calendar-data>BEGIN:VCALENDAR
|
||||||
|
PRODID:-//davical.org//NONSGML AWL Calendar//EN
|
||||||
|
VERSION:2.0
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
METHOD:REPLY
|
||||||
|
BEGIN:VFREEBUSY
|
||||||
|
DTSTAMP:yyyymmddThhmmssZ
|
||||||
|
DTSTART:20111018T110000Z
|
||||||
|
DTEND:20111019T110000Z
|
||||||
|
FREEBUSY:20111018T210000Z/20111018T220000Z
|
||||||
|
UID:E9F98477-A9C2-43F9-8371-CBA0CBCB0300
|
||||||
|
ORGANIZER:mailto:manager1@example.net
|
||||||
|
ATTENDEE:mailto:manager1@example.net
|
||||||
|
END:VFREEBUSY
|
||||||
|
END:VCALENDAR
|
||||||
|
</C:calendar-data>
|
||||||
|
</C:response>
|
||||||
|
<C:response>
|
||||||
|
<C:recipient>
|
||||||
|
<href>mailto:user1@example.net</href>
|
||||||
|
</C:recipient>
|
||||||
|
<C:request-status>2.0;Success</C:request-status>
|
||||||
|
<C:calendar-data>BEGIN:VCALENDAR
|
||||||
|
PRODID:-//davical.org//NONSGML AWL Calendar//EN
|
||||||
|
VERSION:2.0
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
METHOD:REPLY
|
||||||
|
BEGIN:VFREEBUSY
|
||||||
|
DTSTAMP:yyyymmddThhmmssZ
|
||||||
|
DTSTART:20111018T110000Z
|
||||||
|
DTEND:20111019T110000Z
|
||||||
|
UID:E9F98477-A9C2-43F9-8371-CBA0CBCB0300
|
||||||
|
ORGANIZER:mailto:manager1@example.net
|
||||||
|
ATTENDEE:mailto:user1@example.net
|
||||||
|
END:VFREEBUSY
|
||||||
|
END:VCALENDAR
|
||||||
|
</C:calendar-data>
|
||||||
|
</C:response>
|
||||||
|
</C:schedule-response>
|
||||||
36
testing/tests/scheduling/3021-POST-availability.test
Normal file
36
testing/tests/scheduling/3021-POST-availability.test
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#
|
||||||
|
# Testing for how iCal does a POST for free/busy
|
||||||
|
#
|
||||||
|
TYPE=POST
|
||||||
|
URL=http://regression.host/caldav.php/manager1/.out/
|
||||||
|
|
||||||
|
HEADER=X-DAViCal-Flush-Cache: true
|
||||||
|
HEADER=DAVKit/4.0.3 (732.2); CalendarStore/4.0.4 (997.7); iCal/4.0.4 (1395.7); Mac OS X/10.6.8 (10K549)
|
||||||
|
HEADER=Originator: mailto:manager1@example.net
|
||||||
|
HEADER=Recipient: mailto:manager1@example.net, mailto:user1@example.net
|
||||||
|
HEADER=Content-Type: text/calendar
|
||||||
|
|
||||||
|
AUTH=manager1:manager1
|
||||||
|
|
||||||
|
BEGINDATA
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
VERSION:2.0
|
||||||
|
METHOD:REQUEST
|
||||||
|
PRODID:-//Apple Inc.//iCal 4.0.4//EN
|
||||||
|
BEGIN:VFREEBUSY
|
||||||
|
UID:E9F98477-A9C2-43F9-8371-CBA0CBCB0300
|
||||||
|
DTEND:20111019T110000Z
|
||||||
|
ATTENDEE:mailto:manager1@example.net
|
||||||
|
ATTENDEE:mailto:user1@example.net
|
||||||
|
DTSTART:20111018T110000Z
|
||||||
|
X-CALENDARSERVER-MASK-UID:E1A13F04-iCal-schedule
|
||||||
|
DTSTAMP:20111019T085957Z
|
||||||
|
ORGANIZER:mailto:manager1@example.net
|
||||||
|
SUMMARY:Availability for mailto:manager1@example.net and mailto:user1@ex
|
||||||
|
ample.net
|
||||||
|
END:VFREEBUSY
|
||||||
|
END:VCALENDAR
|
||||||
|
ENDDATA
|
||||||
|
|
||||||
|
REPLACE=/DTSTAMP:\d{8}T\d{6}Z/DTSTAMP:yyyymmddThhmmssZ/
|
||||||
47
testing/tests/scheduling/3022-POST-availability.result
Normal file
47
testing/tests/scheduling/3022-POST-availability.result
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<C:schedule-response xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
|
||||||
|
<C:response>
|
||||||
|
<C:recipient>
|
||||||
|
<href>mailto:manager1@example.net</href>
|
||||||
|
</C:recipient>
|
||||||
|
<C:request-status>2.0;Success</C:request-status>
|
||||||
|
<C:calendar-data>BEGIN:VCALENDAR
|
||||||
|
PRODID:-//davical.org//NONSGML AWL Calendar//EN
|
||||||
|
VERSION:2.0
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
METHOD:REPLY
|
||||||
|
BEGIN:VFREEBUSY
|
||||||
|
DTSTAMP:yyyymmddThhmmssZ
|
||||||
|
DTSTART:20111024T110000Z
|
||||||
|
DTEND:20111025T110000Z
|
||||||
|
UID:01B40176-4934-46AE-9C0A-19ECC41200E6
|
||||||
|
ORGANIZER:mailto:manager1@example.net
|
||||||
|
ATTENDEE:mailto:manager1@example.net
|
||||||
|
END:VFREEBUSY
|
||||||
|
END:VCALENDAR
|
||||||
|
</C:calendar-data>
|
||||||
|
</C:response>
|
||||||
|
<C:response>
|
||||||
|
<C:recipient>
|
||||||
|
<href>mailto:user1@example.net</href>
|
||||||
|
</C:recipient>
|
||||||
|
<C:request-status>2.0;Success</C:request-status>
|
||||||
|
<C:calendar-data>BEGIN:VCALENDAR
|
||||||
|
PRODID:-//davical.org//NONSGML AWL Calendar//EN
|
||||||
|
VERSION:2.0
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
METHOD:REPLY
|
||||||
|
BEGIN:VFREEBUSY
|
||||||
|
DTSTAMP:yyyymmddThhmmssZ
|
||||||
|
DTSTART:20111024T110000Z
|
||||||
|
DTEND:20111025T110000Z
|
||||||
|
FREEBUSY:20111024T184500Z/20111024T193000Z
|
||||||
|
FREEBUSY:20111024T220000Z/20111025T030000Z
|
||||||
|
UID:01B40176-4934-46AE-9C0A-19ECC41200E6
|
||||||
|
ORGANIZER:mailto:manager1@example.net
|
||||||
|
ATTENDEE:mailto:user1@example.net
|
||||||
|
END:VFREEBUSY
|
||||||
|
END:VCALENDAR
|
||||||
|
</C:calendar-data>
|
||||||
|
</C:response>
|
||||||
|
</C:schedule-response>
|
||||||
36
testing/tests/scheduling/3022-POST-availability.test
Normal file
36
testing/tests/scheduling/3022-POST-availability.test
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#
|
||||||
|
# Testing for how iCal does a POST for free/busy
|
||||||
|
#
|
||||||
|
TYPE=POST
|
||||||
|
URL=http://regression.host/caldav.php/manager1/.out/
|
||||||
|
|
||||||
|
HEADER=X-DAViCal-Flush-Cache: true
|
||||||
|
HEADER=DAVKit/4.0.3 (732.2); CalendarStore/4.0.4 (997.7); iCal/4.0.4 (1395.7); Mac OS X/10.6.8 (10K549)
|
||||||
|
HEADER=Originator: mailto:manager1@example.net
|
||||||
|
HEADER=Recipient: mailto:manager1@example.net, mailto:user1@example.net
|
||||||
|
HEADER=Content-Type: text/calendar
|
||||||
|
|
||||||
|
AUTH=manager1:manager1
|
||||||
|
|
||||||
|
BEGINDATA
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
VERSION:2.0
|
||||||
|
METHOD:REQUEST
|
||||||
|
PRODID:-//Apple Inc.//iCal 4.0.4//EN
|
||||||
|
BEGIN:VFREEBUSY
|
||||||
|
UID:01B40176-4934-46AE-9C0A-19ECC41200E6
|
||||||
|
DTEND:20111025T110000Z
|
||||||
|
ATTENDEE:mailto:manager1@example.net
|
||||||
|
ATTENDEE:mailto:user1@example.net
|
||||||
|
DTSTART:20111024T110000Z
|
||||||
|
X-CALENDARSERVER-MASK-UID:E1A13F04-iCal-schedule
|
||||||
|
DTSTAMP:20111019T090043Z
|
||||||
|
ORGANIZER:mailto:manager1@example.net
|
||||||
|
SUMMARY:Availability for mailto:manager1@example.net and mailto:user1@ex
|
||||||
|
ample.net
|
||||||
|
END:VFREEBUSY
|
||||||
|
END:VCALENDAR
|
||||||
|
ENDDATA
|
||||||
|
|
||||||
|
REPLACE=/DTSTAMP:\d{8}T\d{6}Z/DTSTAMP:yyyymmddThhmmssZ/
|
||||||
54
testing/tests/scheduling/3023-PUT-iCal-with-attendees.result
Normal file
54
testing/tests/scheduling/3023-PUT-iCal-with-attendees.result
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
HTTP/1.1 204 No Content
|
||||||
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
|
Content-Length: 0
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
|
||||||
|
caldav_type: >VEVENT<
|
||||||
|
dav_name: >/manager1/home/E1A13F04-iCal-schedule.ics<
|
||||||
|
logged_user: >20<
|
||||||
|
summary: >Meeting with User1<
|
||||||
|
user_no: >20<
|
||||||
|
vcalendar: >BEGIN:VCALENDAR
|
||||||
|
VERSION:2.0
|
||||||
|
PRODID:-//Apple Inc.//iCal 4.0.4//EN
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:Pacific/Auckland
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
TZOFFSETFROM:+1200
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
|
||||||
|
DTSTART:20070930T020000
|
||||||
|
TZNAME:GMT+13:00
|
||||||
|
TZOFFSETTO:+1300
|
||||||
|
END:DAYLIGHT
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+1300
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
|
||||||
|
DTSTART:20080406T030000
|
||||||
|
TZNAME:GMT+12:00
|
||||||
|
TZOFFSETTO:+1200
|
||||||
|
END:STANDARD
|
||||||
|
END:VTIMEZONE
|
||||||
|
BEGIN:VEVENT
|
||||||
|
CREATED:20111018T195845Z
|
||||||
|
UID:E1A13F04-iCal-schedule
|
||||||
|
DTEND;TZID=Pacific/Auckland:20111019T110000
|
||||||
|
ATTENDEE;CN=Manager 1;CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
|
||||||
|
mailto:manager1@example.net
|
||||||
|
ATTENDEE;CN=user1@example.net;CUTYPE=INDIVIDUAL;EMAIL=user1@example.net;
|
||||||
|
PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS="3.
|
||||||
|
8\;No authority to deliver invitations to user.":mailto:user1@example.ne
|
||||||
|
t
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
SUMMARY:Meeting with User1
|
||||||
|
DTSTART;TZID=Pacific/Auckland:20111019T100000
|
||||||
|
DTSTAMP:20111018T200107Z
|
||||||
|
ORGANIZER;CN="Manager 1":mailto:manager1@example.net
|
||||||
|
SEQUENCE:4
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
||||||
|
<
|
||||||
|
|
||||||
62
testing/tests/scheduling/3023-PUT-iCal-with-attendees.test
Normal file
62
testing/tests/scheduling/3023-PUT-iCal-with-attendees.test
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
#
|
||||||
|
# PUT an event with attendees
|
||||||
|
#
|
||||||
|
TYPE=PUT
|
||||||
|
URL=http://regression.host/caldav.php/manager1/home/E1A13F04-iCal-schedule.ics
|
||||||
|
HEADER=Content-Type: text/calendar
|
||||||
|
HEADER=DAVKit/4.0.3 (732.2); CalendarStore/4.0.4 (997.7); iCal/4.0.4 (1395.7); Mac OS X/10.6.8 (10K549)
|
||||||
|
HEAD
|
||||||
|
|
||||||
|
AUTH=manager1:manager1
|
||||||
|
|
||||||
|
BEGINDATA
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
VERSION:2.0
|
||||||
|
PRODID:-//Apple Inc.//iCal 4.0.4//EN
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:Pacific/Auckland
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
TZOFFSETFROM:+1200
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
|
||||||
|
DTSTART:20070930T020000
|
||||||
|
TZNAME:GMT+13:00
|
||||||
|
TZOFFSETTO:+1300
|
||||||
|
END:DAYLIGHT
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+1300
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
|
||||||
|
DTSTART:20080406T030000
|
||||||
|
TZNAME:GMT+12:00
|
||||||
|
TZOFFSETTO:+1200
|
||||||
|
END:STANDARD
|
||||||
|
END:VTIMEZONE
|
||||||
|
BEGIN:VEVENT
|
||||||
|
CREATED:20111018T195845Z
|
||||||
|
UID:E1A13F04-iCal-schedule
|
||||||
|
DTEND;TZID=Pacific/Auckland:20111019T110000
|
||||||
|
ATTENDEE;CN="Manager 1";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:mailto:manag
|
||||||
|
er1@example.net
|
||||||
|
ATTENDEE;CN="user1@example.net";CUTYPE=INDIVIDUAL;EMAIL="user1@example.n
|
||||||
|
et";PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:user1@ex
|
||||||
|
ample.net
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
SUMMARY:Meeting with User1
|
||||||
|
DTSTART;TZID=Pacific/Auckland:20111019T100000
|
||||||
|
DTSTAMP:20111018T200107Z
|
||||||
|
ORGANIZER;CN="Manager 1":mailto:manager1@example.net
|
||||||
|
SEQUENCE:4
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
||||||
|
ENDDATA
|
||||||
|
|
||||||
|
|
||||||
|
QUERY
|
||||||
|
SELECT caldav_data.user_no, caldav_data.dav_name,
|
||||||
|
caldav_type, logged_user, caldav_data.caldav_data AS "vcalendar",
|
||||||
|
summary
|
||||||
|
FROM caldav_data JOIN calendar_item USING(dav_name) LEFT JOIN timezones ON (tz_id=tzid)
|
||||||
|
WHERE calendar_item.uid = 'E1A13F04-iCal-schedule'
|
||||||
|
ORDER BY caldav_data.dav_id
|
||||||
|
ENDQUERY
|
||||||
|
|
||||||
150
testing/tests/scheduling/3024-PUT-iCal-with-attendees.result
Normal file
150
testing/tests/scheduling/3024-PUT-iCal-with-attendees.result
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
SQL executed successfully.
|
||||||
|
UPDATE dav_principal
|
||||||
|
SET default_privileges = privilege_to_bits(ARRAY['schedule-deliver'])
|
||||||
|
WHERE dav_name = '/user1/'
|
||||||
|
|
||||||
|
HTTP/1.1 204 No Content
|
||||||
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
|
Content-Length: 0
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
|
||||||
|
caldav_type: >VEVENT<
|
||||||
|
dav_name: >/manager1/home/E1A13F04-iCal-schedule.ics<
|
||||||
|
logged_user: >20<
|
||||||
|
summary: >Meeting with User1<
|
||||||
|
user_no: >20<
|
||||||
|
vcalendar: >BEGIN:VCALENDAR
|
||||||
|
VERSION:2.0
|
||||||
|
PRODID:-//Apple Inc.//iCal 4.0.4//EN
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:Pacific/Auckland
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
TZOFFSETFROM:+1200
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
|
||||||
|
DTSTART:20070930T020000
|
||||||
|
TZNAME:GMT+13:00
|
||||||
|
TZOFFSETTO:+1300
|
||||||
|
END:DAYLIGHT
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+1300
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
|
||||||
|
DTSTART:20080406T030000
|
||||||
|
TZNAME:GMT+12:00
|
||||||
|
TZOFFSETTO:+1200
|
||||||
|
END:STANDARD
|
||||||
|
END:VTIMEZONE
|
||||||
|
BEGIN:VEVENT
|
||||||
|
CREATED:20111018T195845Z
|
||||||
|
UID:E1A13F04-iCal-schedule
|
||||||
|
DTEND;TZID=Pacific/Auckland:20111019T110000
|
||||||
|
ATTENDEE;CN=Manager 1;CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
|
||||||
|
mailto:manager1@example.net
|
||||||
|
ATTENDEE;CN=user1@example.net;CUTYPE=INDIVIDUAL;EMAIL=user1@example.net;
|
||||||
|
PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS="2.
|
||||||
|
0\;Scheduling invitation delivered successfully":mailto:user1@example.ne
|
||||||
|
t
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
SUMMARY:Meeting with User1
|
||||||
|
DTSTART;TZID=Pacific/Auckland:20111019T100000
|
||||||
|
DTSTAMP:20111018T200107Z
|
||||||
|
ORGANIZER;CN="Manager 1":mailto:manager1@example.net
|
||||||
|
SEQUENCE:5
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
||||||
|
<
|
||||||
|
|
||||||
|
caldav_type: >VEVENT<
|
||||||
|
dav_name: >/user1/.in/E1A13F04-iCal-schedule.ics<
|
||||||
|
logged_user: >20<
|
||||||
|
summary: >Meeting with User1<
|
||||||
|
user_no: >10<
|
||||||
|
vcalendar: >BEGIN:VCALENDAR
|
||||||
|
VERSION:2.0
|
||||||
|
PRODID:-//Apple Inc.//iCal 4.0.4//EN
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
METHOD:REQUEST
|
||||||
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:Pacific/Auckland
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
TZOFFSETFROM:+1200
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
|
||||||
|
DTSTART:20070930T020000
|
||||||
|
TZNAME:GMT+13:00
|
||||||
|
TZOFFSETTO:+1300
|
||||||
|
END:DAYLIGHT
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+1300
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
|
||||||
|
DTSTART:20080406T030000
|
||||||
|
TZNAME:GMT+12:00
|
||||||
|
TZOFFSETTO:+1200
|
||||||
|
END:STANDARD
|
||||||
|
END:VTIMEZONE
|
||||||
|
BEGIN:VEVENT
|
||||||
|
CREATED:20111018T195845Z
|
||||||
|
UID:E1A13F04-iCal-schedule
|
||||||
|
DTEND;TZID=Pacific/Auckland:20111019T110000
|
||||||
|
ATTENDEE;CN="Manager 1";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:mailto:manag
|
||||||
|
er1@example.net
|
||||||
|
ATTENDEE;CN="user1@example.net";CUTYPE=INDIVIDUAL;EMAIL="user1@example.n
|
||||||
|
et";PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:user1@ex
|
||||||
|
ample.net
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
SUMMARY:Meeting with User1
|
||||||
|
DTSTART;TZID=Pacific/Auckland:20111019T100000
|
||||||
|
DTSTAMP:20111018T200107Z
|
||||||
|
ORGANIZER;CN="Manager 1":mailto:manager1@example.net
|
||||||
|
SEQUENCE:5
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
||||||
|
<
|
||||||
|
|
||||||
|
caldav_type: >VEVENT<
|
||||||
|
dav_name: >/user1/home/E1A13F04-iCal-schedule.ics<
|
||||||
|
logged_user: >20<
|
||||||
|
summary: >Meeting with User1<
|
||||||
|
user_no: >10<
|
||||||
|
vcalendar: >BEGIN:VCALENDAR
|
||||||
|
VERSION:2.0
|
||||||
|
PRODID:-//Apple Inc.//iCal 4.0.4//EN
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:Pacific/Auckland
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
TZOFFSETFROM:+1200
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
|
||||||
|
DTSTART:20070930T020000
|
||||||
|
TZNAME:GMT+13:00
|
||||||
|
TZOFFSETTO:+1300
|
||||||
|
END:DAYLIGHT
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+1300
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
|
||||||
|
DTSTART:20080406T030000
|
||||||
|
TZNAME:GMT+12:00
|
||||||
|
TZOFFSETTO:+1200
|
||||||
|
END:STANDARD
|
||||||
|
END:VTIMEZONE
|
||||||
|
BEGIN:VEVENT
|
||||||
|
CREATED:20111018T195845Z
|
||||||
|
UID:E1A13F04-iCal-schedule
|
||||||
|
DTEND;TZID=Pacific/Auckland:20111019T110000
|
||||||
|
ATTENDEE;CN="Manager 1";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:mailto:manag
|
||||||
|
er1@example.net
|
||||||
|
ATTENDEE;CN="user1@example.net";CUTYPE=INDIVIDUAL;EMAIL="user1@example.n
|
||||||
|
et";PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:user1@ex
|
||||||
|
ample.net
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
SUMMARY:Meeting with User1
|
||||||
|
DTSTART;TZID=Pacific/Auckland:20111019T100000
|
||||||
|
DTSTAMP:20111018T200107Z
|
||||||
|
ORGANIZER;CN="Manager 1":mailto:manager1@example.net
|
||||||
|
SEQUENCE:5
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
||||||
|
<
|
||||||
|
|
||||||
70
testing/tests/scheduling/3024-PUT-iCal-with-attendees.test
Normal file
70
testing/tests/scheduling/3024-PUT-iCal-with-attendees.test
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
#
|
||||||
|
# PUT an event with attendees
|
||||||
|
#
|
||||||
|
TYPE=PUT
|
||||||
|
URL=http://regression.host/caldav.php/manager1/home/E1A13F04-iCal-schedule.ics
|
||||||
|
HEADER=Content-Type: text/calendar
|
||||||
|
HEADER=DAVKit/4.0.3 (732.2); CalendarStore/4.0.4 (997.7); iCal/4.0.4 (1395.7); Mac OS X/10.6.8 (10K549)
|
||||||
|
HEAD
|
||||||
|
|
||||||
|
AUTH=manager1:manager1
|
||||||
|
|
||||||
|
# Before we run, this time we'll set schedule-deliver privileges
|
||||||
|
# on the invitee...
|
||||||
|
DOSQL
|
||||||
|
UPDATE dav_principal
|
||||||
|
SET default_privileges = privilege_to_bits(ARRAY['schedule-deliver'])
|
||||||
|
WHERE dav_name = '/user1/'
|
||||||
|
ENDDOSQL
|
||||||
|
|
||||||
|
BEGINDATA
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
VERSION:2.0
|
||||||
|
PRODID:-//Apple Inc.//iCal 4.0.4//EN
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:Pacific/Auckland
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
TZOFFSETFROM:+1200
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
|
||||||
|
DTSTART:20070930T020000
|
||||||
|
TZNAME:GMT+13:00
|
||||||
|
TZOFFSETTO:+1300
|
||||||
|
END:DAYLIGHT
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+1300
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
|
||||||
|
DTSTART:20080406T030000
|
||||||
|
TZNAME:GMT+12:00
|
||||||
|
TZOFFSETTO:+1200
|
||||||
|
END:STANDARD
|
||||||
|
END:VTIMEZONE
|
||||||
|
BEGIN:VEVENT
|
||||||
|
CREATED:20111018T195845Z
|
||||||
|
UID:E1A13F04-iCal-schedule
|
||||||
|
DTEND;TZID=Pacific/Auckland:20111019T110000
|
||||||
|
ATTENDEE;CN="Manager 1";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:mailto:manag
|
||||||
|
er1@example.net
|
||||||
|
ATTENDEE;CN="user1@example.net";CUTYPE=INDIVIDUAL;EMAIL="user1@example.n
|
||||||
|
et";PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:user1@ex
|
||||||
|
ample.net
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
SUMMARY:Meeting with User1
|
||||||
|
DTSTART;TZID=Pacific/Auckland:20111019T100000
|
||||||
|
DTSTAMP:20111018T200107Z
|
||||||
|
ORGANIZER;CN="Manager 1":mailto:manager1@example.net
|
||||||
|
SEQUENCE:5
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
||||||
|
ENDDATA
|
||||||
|
|
||||||
|
|
||||||
|
QUERY
|
||||||
|
SELECT caldav_data.user_no, caldav_data.dav_name,
|
||||||
|
caldav_type, logged_user, caldav_data.caldav_data AS "vcalendar",
|
||||||
|
summary
|
||||||
|
FROM caldav_data JOIN calendar_item USING(dav_name) LEFT JOIN timezones ON (tz_id=tzid)
|
||||||
|
WHERE calendar_item.uid = 'E1A13F04-iCal-schedule'
|
||||||
|
ORDER BY caldav_data.dav_id
|
||||||
|
ENDQUERY
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user