Path: blob/master/src/applications/calendar/controller/PhabricatorCalendarEventDragController.php
12256 views
<?php12final class PhabricatorCalendarEventDragController3extends PhabricatorCalendarController {45public function handleRequest(AphrontRequest $request) {6$viewer = $request->getViewer();78$event = id(new PhabricatorCalendarEventQuery())9->setViewer($viewer)10->withIDs(array($request->getURIData('id')))11->requireCapabilities(12array(13PhabricatorPolicyCapability::CAN_VIEW,14PhabricatorPolicyCapability::CAN_EDIT,15))16->executeOne();17if (!$event) {18return new Aphront404Response();19}2021if (!$request->validateCSRF()) {22return new Aphront400Response();23}2425if ($event->getIsAllDay()) {26return new Aphront400Response();27}2829$xactions = array();3031$duration = $event->getDuration();3233$start = $request->getInt('start');34$start_value = id(AphrontFormDateControlValue::newFromEpoch(35$viewer,36$start));3738$end = $start + $duration;39$end_value = id(AphrontFormDateControlValue::newFromEpoch(40$viewer,41$end));4243$xactions[] = id(new PhabricatorCalendarEventTransaction())44->setTransactionType(45PhabricatorCalendarEventStartDateTransaction::TRANSACTIONTYPE)46->setNewValue($start_value);4748$xactions[] = id(new PhabricatorCalendarEventTransaction())49->setTransactionType(50PhabricatorCalendarEventEndDateTransaction::TRANSACTIONTYPE)51->setNewValue($end_value);5253$editor = id(new PhabricatorCalendarEventEditor())54->setActor($viewer)55->setContinueOnMissingFields(true)56->setContentSourceFromRequest($request)57->setContinueOnNoEffect(true);5859$xactions = $editor->applyTransactions($event, $xactions);6061return id(new AphrontReloadResponse());62}63}646566