Differential D16248 Diff 39124 src/applications/calendar/controller/PhabricatorCalendarController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/calendar/controller/PhabricatorCalendarController.php
Show All 24 Lines | $crumbs->addAction( | ||||
->setName(pht('Create Event')) | ->setName(pht('Create Event')) | ||||
->setHref($this->getApplicationURI().'event/create/') | ->setHref($this->getApplicationURI().'event/create/') | ||||
->setIcon('fa-plus-square') | ->setIcon('fa-plus-square') | ||||
->setDropdownMenu($actions)); | ->setDropdownMenu($actions)); | ||||
return $crumbs; | return $crumbs; | ||||
} | } | ||||
protected function getEventAtIndexForGhostPHID($viewer, $phid, $index) { | |||||
$result = id(new PhabricatorCalendarEventQuery()) | |||||
->setViewer($viewer) | |||||
->withInstanceSequencePairs( | |||||
array( | |||||
array( | |||||
$phid, | |||||
$index, | |||||
), | |||||
)) | |||||
->requireCapabilities( | |||||
array( | |||||
PhabricatorPolicyCapability::CAN_VIEW, | |||||
PhabricatorPolicyCapability::CAN_EDIT, | |||||
)) | |||||
->executeOne(); | |||||
return $result; | |||||
} | |||||
protected function createEventFromGhost($viewer, $event, $index) { | |||||
$invitees = $event->getInvitees(); | |||||
$new_ghost = $event->generateNthGhost($index, $viewer); | |||||
$new_ghost->attachParentEvent($event); | |||||
$unguarded = AphrontWriteGuard::beginScopedUnguardedWrites(); | |||||
$new_ghost | |||||
->setID(null) | |||||
->setPHID(null) | |||||
->removeViewerTimezone($viewer) | |||||
->setViewPolicy($event->getViewPolicy()) | |||||
->setEditPolicy($event->getEditPolicy()) | |||||
->save(); | |||||
$ghost_invitees = array(); | |||||
foreach ($invitees as $invitee) { | |||||
$ghost_invitee = clone $invitee; | |||||
$ghost_invitee | |||||
->setID(null) | |||||
->setEventPHID($new_ghost->getPHID()) | |||||
->save(); | |||||
} | |||||
unset($unguarded); | |||||
return $new_ghost; | |||||
} | |||||
} | } |