mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-13 10:22:42 +01:00
4819446fe5
Summary: Ref T10747. This: - Exports recurring events properly, with RRULE + RECURRENCE-ID. - When exporting a part of an event series, export the whole series to ICS so it is represented faithfully. - Make the subscribable URL for "Export" objects work. Test Plan: - Downloaded the ".ics" for a normal event, imported it into Calendar.app and Google Calendar. - Downloaded the ".ics" for a recurring event, imported it into Calendar.app and Google Calendar. - Defined an ".ics" Export of my events, subscribed to them in Calendar.app. - Edited an event in Phabricator. - Hit {key Command R} in Calendar.app, saw changes. (MAGIC!) - This export included recurring events, which appeared the same way in Calendar.app and Phabricator. - Can't import into Google Calendar from my local install easily since Google's servers can't hit my laptop, but I'll test once we deploy. Reviewers: chad Reviewed By: chad Maniphest Tasks: T10747 Differential Revision: https://secure.phabricator.com/D16679
34 lines
724 B
PHP
34 lines
724 B
PHP
<?php
|
|
|
|
final class PhabricatorCalendarEventExportController
|
|
extends PhabricatorCalendarController {
|
|
|
|
public function shouldAllowPublic() {
|
|
return true;
|
|
}
|
|
|
|
public function handleRequest(AphrontRequest $request) {
|
|
$viewer = $this->getViewer();
|
|
$id = $request->getURIData('id');
|
|
|
|
$event = id(new PhabricatorCalendarEventQuery())
|
|
->setViewer($viewer)
|
|
->withIDs(array($id))
|
|
->executeOne();
|
|
if (!$event) {
|
|
return new Aphront404Response();
|
|
}
|
|
|
|
if ($event->isChildEvent()) {
|
|
$target = $event->getParentEvent();
|
|
} else {
|
|
$target = $event;
|
|
}
|
|
|
|
return $this->newICSResponse(
|
|
$viewer,
|
|
$target->getICSFileName(),
|
|
array($target));
|
|
}
|
|
|
|
}
|