Differential D16274 Diff 39146 src/applications/calendar/controller/PhabricatorCalendarEventEditController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/calendar/controller/PhabricatorCalendarEventEditController.php
Show First 20 Lines • Show All 85 Lines • ▼ Show 20 Lines | if ($this->isCreate()) { | ||||
)) | )) | ||||
->executeOne(); | ->executeOne(); | ||||
if (!$event) { | if (!$event) { | ||||
return new Aphront404Response(); | return new Aphront404Response(); | ||||
} | } | ||||
$end_value = AphrontFormDateControlValue::newFromEpoch( | $end_value = AphrontFormDateControlValue::newFromEpoch( | ||||
$viewer, | $viewer, | ||||
$event->getDateTo()); | $event->getViewerDateTo()); | ||||
$start_value = AphrontFormDateControlValue::newFromEpoch( | $start_value = AphrontFormDateControlValue::newFromEpoch( | ||||
$viewer, | $viewer, | ||||
$event->getDateFrom()); | $event->getViewerDateFrom()); | ||||
$recurrence_end_date_value = id(clone $end_value) | $recurrence_end_date_value = id(clone $end_value) | ||||
->setOptional(true); | ->setOptional(true); | ||||
$submit_label = pht('Update'); | $submit_label = pht('Update'); | ||||
$title = pht('Edit Event: %s', $event->getName()); | $title = pht('Edit Event: %s', $event->getName()); | ||||
$header_icon = 'fa-pencil'; | $header_icon = 'fa-pencil'; | ||||
$subscribers = PhabricatorSubscribersQuery::loadSubscribersForPHID( | $subscribers = PhabricatorSubscribersQuery::loadSubscribersForPHID( | ||||
Show All 26 Lines | public function handleRequest(AphrontRequest $request) { | ||||
$is_recurring = $event->getIsRecurring(); | $is_recurring = $event->getIsRecurring(); | ||||
$is_parent = $event->isParentEvent(); | $is_parent = $event->isParentEvent(); | ||||
$frequency = idx($event->getRecurrenceFrequency(), 'rule'); | $frequency = idx($event->getRecurrenceFrequency(), 'rule'); | ||||
$icon = $event->getIcon(); | $icon = $event->getIcon(); | ||||
$edit_policy = $event->getEditPolicy(); | $edit_policy = $event->getEditPolicy(); | ||||
$view_policy = $event->getViewPolicy(); | $view_policy = $event->getViewPolicy(); | ||||
$space = $event->getSpacePHID(); | $space = $event->getSpacePHID(); | ||||
if ($request->isFormPost()) { | if ($request->isFormPost()) { | ||||
$is_all_day = $request->getStr('isAllDay'); | |||||
if ($is_all_day) { | |||||
// TODO: This is a very gross temporary hack to get this working | |||||
Lint: TODO Comment: This comment has a TODO. | |||||
// reasonably: if this is an all day event, force the viewer's | |||||
// timezone to UTC so the date controls get interpreted as UTC. | |||||
$viewer->overrideTimezoneIdentifier('UTC'); | |||||
} | |||||
$xactions = array(); | $xactions = array(); | ||||
$name = $request->getStr('name'); | $name = $request->getStr('name'); | ||||
$start_value = AphrontFormDateControlValue::newFromRequest( | $start_value = AphrontFormDateControlValue::newFromRequest( | ||||
$request, | $request, | ||||
'start'); | 'start'); | ||||
$end_value = AphrontFormDateControlValue::newFromRequest( | $end_value = AphrontFormDateControlValue::newFromRequest( | ||||
$request, | $request, | ||||
'end'); | 'end'); | ||||
$recurrence_end_date_value = AphrontFormDateControlValue::newFromRequest( | $recurrence_end_date_value = AphrontFormDateControlValue::newFromRequest( | ||||
$request, | $request, | ||||
'recurrenceEndDate'); | 'recurrenceEndDate'); | ||||
$recurrence_end_date_value->setOptional(true); | $recurrence_end_date_value->setOptional(true); | ||||
$projects = $request->getArr('projects'); | $projects = $request->getArr('projects'); | ||||
$description = $request->getStr('description'); | $description = $request->getStr('description'); | ||||
$subscribers = $request->getArr('subscribers'); | $subscribers = $request->getArr('subscribers'); | ||||
$edit_policy = $request->getStr('editPolicy'); | $edit_policy = $request->getStr('editPolicy'); | ||||
$view_policy = $request->getStr('viewPolicy'); | $view_policy = $request->getStr('viewPolicy'); | ||||
$space = $request->getStr('spacePHID'); | $space = $request->getStr('spacePHID'); | ||||
$is_recurring = $request->getStr('isRecurring') ? 1 : 0; | $is_recurring = $request->getStr('isRecurring') ? 1 : 0; | ||||
$frequency = $request->getStr('frequency'); | $frequency = $request->getStr('frequency'); | ||||
$is_all_day = $request->getStr('isAllDay'); | |||||
$icon = $request->getStr('icon'); | $icon = $request->getStr('icon'); | ||||
$invitees = $request->getArr('invitees'); | $invitees = $request->getArr('invitees'); | ||||
$new_invitees = $this->getNewInviteeList($invitees, $event); | $new_invitees = $this->getNewInviteeList($invitees, $event); | ||||
$status_attending = PhabricatorCalendarEventInvitee::STATUS_ATTENDING; | $status_attending = PhabricatorCalendarEventInvitee::STATUS_ATTENDING; | ||||
if ($this->isCreate()) { | if ($this->isCreate()) { | ||||
$status = idx($new_invitees, $viewer->getPHID()); | $status = idx($new_invitees, $viewer->getPHID()); | ||||
if ($status) { | if ($status) { | ||||
Show All 16 Lines | if ($request->isFormPost()) { | ||||
->setTransactionType( | ->setTransactionType( | ||||
PhabricatorCalendarEventTransaction::TYPE_FREQUENCY) | PhabricatorCalendarEventTransaction::TYPE_FREQUENCY) | ||||
->setNewValue(array('rule' => $frequency)); | ->setNewValue(array('rule' => $frequency)); | ||||
if (!$recurrence_end_date_value->isDisabled()) { | if (!$recurrence_end_date_value->isDisabled()) { | ||||
$xactions[] = id(new PhabricatorCalendarEventTransaction()) | $xactions[] = id(new PhabricatorCalendarEventTransaction()) | ||||
->setTransactionType( | ->setTransactionType( | ||||
PhabricatorCalendarEventTransaction::TYPE_RECURRENCE_END_DATE) | PhabricatorCalendarEventTransaction::TYPE_RECURRENCE_END_DATE) | ||||
->setNewValue($recurrence_end_date_value); | ->setNewValue($recurrence_end_date_value->getEpoch()); | ||||
} | } | ||||
} | } | ||||
if (($is_recurring && $this->isCreate()) || !$is_parent) { | if (($is_recurring && $this->isCreate()) || !$is_parent) { | ||||
$xactions[] = id(new PhabricatorCalendarEventTransaction()) | $xactions[] = id(new PhabricatorCalendarEventTransaction()) | ||||
->setTransactionType( | ->setTransactionType( | ||||
PhabricatorCalendarEventTransaction::TYPE_ALL_DAY) | PhabricatorCalendarEventTransaction::TYPE_ALL_DAY) | ||||
->setNewValue($is_all_day); | ->setNewValue($is_all_day); | ||||
$xactions[] = id(new PhabricatorCalendarEventTransaction()) | $xactions[] = id(new PhabricatorCalendarEventTransaction()) | ||||
->setTransactionType( | ->setTransactionType( | ||||
PhabricatorCalendarEventTransaction::TYPE_ICON) | PhabricatorCalendarEventTransaction::TYPE_ICON) | ||||
->setNewValue($icon); | ->setNewValue($icon); | ||||
$xactions[] = id(new PhabricatorCalendarEventTransaction()) | $xactions[] = id(new PhabricatorCalendarEventTransaction()) | ||||
->setTransactionType( | ->setTransactionType( | ||||
PhabricatorCalendarEventTransaction::TYPE_START_DATE) | PhabricatorCalendarEventTransaction::TYPE_START_DATE) | ||||
->setNewValue($start_value); | ->setNewValue($start_value->getEpoch()); | ||||
$xactions[] = id(new PhabricatorCalendarEventTransaction()) | $xactions[] = id(new PhabricatorCalendarEventTransaction()) | ||||
->setTransactionType( | ->setTransactionType( | ||||
PhabricatorCalendarEventTransaction::TYPE_END_DATE) | PhabricatorCalendarEventTransaction::TYPE_END_DATE) | ||||
->setNewValue($end_value); | ->setNewValue($end_value->getEpoch()); | ||||
} | } | ||||
$xactions[] = id(new PhabricatorCalendarEventTransaction()) | $xactions[] = id(new PhabricatorCalendarEventTransaction()) | ||||
->setTransactionType( | ->setTransactionType( | ||||
PhabricatorTransactions::TYPE_SUBSCRIBERS) | PhabricatorTransactions::TYPE_SUBSCRIBERS) | ||||
->setNewValue(array('=' => array_fuse($subscribers))); | ->setNewValue(array('=' => array_fuse($subscribers))); | ||||
▲ Show 20 Lines • Show All 386 Lines • Show Last 20 Lines |
This comment has a TODO.