Differential D16280 Diff 39167 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 99 Lines • ▼ Show 20 Lines | if ($this->isCreate()) { | ||||
$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( | ||||
$event->getPHID()); | $event->getPHID()); | ||||
$invitees = array(); | $invitees = $event->getInviteePHIDsForEdit(); | ||||
foreach ($event->getInvitees() as $invitee) { | |||||
if ($invitee->isUninvited()) { | |||||
continue; | |||||
} else { | |||||
$invitees[] = $invitee->getInviteePHID(); | |||||
} | |||||
} | |||||
$cancel_uri = $event->getURI(); | $cancel_uri = $event->getURI(); | ||||
} | } | ||||
if ($this->isCreate()) { | if ($this->isCreate()) { | ||||
$projects = array(); | $projects = array(); | ||||
} else { | } else { | ||||
$projects = PhabricatorEdgeQuery::loadDestinationPHIDs( | $projects = PhabricatorEdgeQuery::loadDestinationPHIDs( | ||||
$event->getPHID(), | $event->getPHID(), | ||||
▲ Show 20 Lines • Show All 42 Lines • ▼ Show 20 Lines | if ($request->isFormPost()) { | ||||
$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'); | ||||
$icon = $request->getStr('icon'); | $icon = $request->getStr('icon'); | ||||
$invitees = $request->getArr('invitees'); | $invitees = $request->getArr('invitees'); | ||||
$new_invitees = $this->getNewInviteeList($invitees, $event); | |||||
$status_attending = PhabricatorCalendarEventInvitee::STATUS_ATTENDING; | |||||
if ($this->isCreate()) { | |||||
$status = idx($new_invitees, $viewer->getPHID()); | |||||
if ($status) { | |||||
$new_invitees[$viewer->getPHID()] = $status_attending; | |||||
} | |||||
} | |||||
$xactions[] = id(new PhabricatorCalendarEventTransaction()) | $xactions[] = id(new PhabricatorCalendarEventTransaction()) | ||||
->setTransactionType( | ->setTransactionType( | ||||
PhabricatorCalendarEventTransaction::TYPE_NAME) | PhabricatorCalendarEventTransaction::TYPE_NAME) | ||||
->setNewValue($name); | ->setNewValue($name); | ||||
if ($is_recurring && $this->isCreate()) { | if ($is_recurring && $this->isCreate()) { | ||||
$xactions[] = id(new PhabricatorCalendarEventTransaction()) | $xactions[] = id(new PhabricatorCalendarEventTransaction()) | ||||
Show All 40 Lines | if ($request->isFormPost()) { | ||||
$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))); | ||||
$xactions[] = id(new PhabricatorCalendarEventTransaction()) | $xactions[] = id(new PhabricatorCalendarEventTransaction()) | ||||
->setTransactionType( | ->setTransactionType( | ||||
PhabricatorCalendarEventTransaction::TYPE_INVITE) | PhabricatorCalendarEventTransaction::TYPE_INVITE) | ||||
->setNewValue($new_invitees); | ->setNewValue($invitees); | ||||
$xactions[] = id(new PhabricatorCalendarEventTransaction()) | $xactions[] = id(new PhabricatorCalendarEventTransaction()) | ||||
->setTransactionType( | ->setTransactionType( | ||||
PhabricatorCalendarEventTransaction::TYPE_DESCRIPTION) | PhabricatorCalendarEventTransaction::TYPE_DESCRIPTION) | ||||
->setNewValue($description); | ->setNewValue($description); | ||||
$xactions[] = id(new PhabricatorCalendarEventTransaction()) | $xactions[] = id(new PhabricatorCalendarEventTransaction()) | ||||
->setTransactionType(PhabricatorTransactions::TYPE_VIEW_POLICY) | ->setTransactionType(PhabricatorTransactions::TYPE_VIEW_POLICY) | ||||
▲ Show 20 Lines • Show All 234 Lines • ▼ Show 20 Lines | public function handleRequest(AphrontRequest $request) { | ||||
$invitees = id(new AphrontFormTokenizerControl()) | $invitees = id(new AphrontFormTokenizerControl()) | ||||
->setLabel(pht('Invitees')) | ->setLabel(pht('Invitees')) | ||||
->setName('invitees') | ->setName('invitees') | ||||
->setValue($invitees) | ->setValue($invitees) | ||||
->setUser($viewer) | ->setUser($viewer) | ||||
->setDatasource(new PhabricatorMetaMTAMailableDatasource()); | ->setDatasource(new PhabricatorMetaMTAMailableDatasource()); | ||||
$icon = id(new PHUIFormIconSetControl()) | $icon = id(new PHUIFormIconSetControl()) | ||||
->setLabel(pht('Icon')) | ->setLabel(pht('Icon')) | ||||
->setName('icon') | ->setName('icon') | ||||
->setIconSet(new PhabricatorCalendarIconSet()) | ->setIconSet(new PhabricatorCalendarIconSet()) | ||||
->setValue($icon); | ->setValue($icon); | ||||
$form = id(new AphrontFormView()) | $form = id(new AphrontFormView()) | ||||
->addHiddenInput('next', $next_workflow) | ->addHiddenInput('next', $next_workflow) | ||||
▲ Show 20 Lines • Show All 70 Lines • ▼ Show 20 Lines | public function handleRequest(AphrontRequest $request) { | ||||
return $this->newPage() | return $this->newPage() | ||||
->setTitle($title) | ->setTitle($title) | ||||
->setCrumbs($crumbs) | ->setCrumbs($crumbs) | ||||
->appendChild($view); | ->appendChild($view); | ||||
} | } | ||||
public function getNewInviteeList(array $phids, $event) { | |||||
$invitees = $event->getInvitees(); | |||||
$invitees = mpull($invitees, null, 'getInviteePHID'); | |||||
$invited_status = PhabricatorCalendarEventInvitee::STATUS_INVITED; | |||||
$uninvited_status = PhabricatorCalendarEventInvitee::STATUS_UNINVITED; | |||||
$phids = array_fuse($phids); | |||||
$new = array(); | |||||
foreach ($phids as $phid) { | |||||
$old_status = $event->getUserInviteStatus($phid); | |||||
if ($old_status != $uninvited_status) { | |||||
continue; | |||||
} | |||||
$new[$phid] = $invited_status; | |||||
} | |||||
foreach ($invitees as $invitee) { | |||||
$deleted_invitee = !idx($phids, $invitee->getInviteePHID()); | |||||
if ($deleted_invitee) { | |||||
$new[$invitee->getInviteePHID()] = $uninvited_status; | |||||
} | |||||
} | |||||
return $new; | |||||
} | |||||
private function getDefaultTimeValues($viewer) { | private function getDefaultTimeValues($viewer) { | ||||
$start = new DateTime('@'.time()); | $start = new DateTime('@'.time()); | ||||
$start->setTimeZone($viewer->getTimeZone()); | $start->setTimeZone($viewer->getTimeZone()); | ||||
$start->setTime($start->format('H'), 0, 0); | $start->setTime($start->format('H'), 0, 0); | ||||
$start->modify('+1 hour'); | $start->modify('+1 hour'); | ||||
$end = id(clone $start)->modify('+1 hour'); | $end = id(clone $start)->modify('+1 hour'); | ||||
Show All 11 Lines |