function rollback($slug, $timestamp, Request $request, Application $app) { if (!$this->build($slug, $request, $app)) { $app->abort(404, "Event does not exist."); } if ($this->parameters['event']->getIsImported()) { die("No"); // TODO } $ehr = new EventHistoryRepository(); $this->parameters['eventHistory'] = $ehr->loadByEventAndtimeStamp($this->parameters['event'], $timestamp); if (!$this->parameters['eventHistory']) { $app->abort(404, "Event History does not exist."); } $newEventState = clone $this->parameters['event']; $newEventState->setFromHistory($this->parameters['eventHistory']); $form = $app['form.factory']->create(new EventEditForm($app['currentSite'], $app['currentTimeZone'], $app), $newEventState); if ('POST' == $request->getMethod()) { $form->bind($request); if ($form->isValid()) { // Because to undelete or uncancel something, you rollback to a valid state, when you rollback you must set these. $newEventState->setIsCancelled(false); $newEventState->setIsDeleted(false); $eventEditMetaData = new EventEditMetaDataModel(); $eventEditMetaData->setUserAccount($app['currentUser']); if ($form->has('edit_comment')) { $eventEditMetaData->setEditComment($form->get('edit_comment')->getData()); } $eventEditMetaData->setRevertedFromHistoryCreatedAt($this->parameters['eventHistory']->getCreatedAt()); $eventEditMetaData->setFromRequest($request); $eventRepository = new EventRepository(); $eventRepository->editWithMetaData($newEventState, $eventEditMetaData); return $app->redirect("/event/" . $this->parameters['event']->getSlugForURL()); } } $this->parameters['form'] = $form->createView(); return $app['twig']->render('site/event/rollback.html.twig', $this->parameters); }
/** * Note you can only edit undeleted events. * @global type $DB * @param EventModel $event * @param UserAccountModel $creator * @param EventHistoryModel $fromHistory * @deprecated */ public function edit(EventModel $event, UserAccountModel $user = null, EventHistoryModel $fromHistory = null) { $eventEditMetaDataModel = new EventEditMetaDataModel(); $eventEditMetaDataModel->setUserAccount($user); if ($fromHistory) { $eventEditMetaDataModel->setRevertedFromHistoryCreatedAt($fromHistory->getCreatedAt()); } $this->editWithMetaData($event, $eventEditMetaDataModel); }