function newEventDraftJSON($draftslug, $stepid, Request $request, Application $app) { if (!$this->buildDraft($draftslug, $request, $app)) { return $app->abort(404); } $redirectToStep = $this->buildSteps($stepid, $request, $app); if ($redirectToStep) { return $app->abort(404); } $data = array('duplicates' => array()); if ($this->parameters['currentStep']) { $this->parameters['currentStep']->onThisStepSetUpPage(); $this->parameters['currentStep']->onThisStepProcessPage(); } ///////////////////////////////////////////// Dupes? $event = new EventModel(); $event->setSiteId($app['currentSite']->getId()); foreach ($this->parameters['steps'] as $step) { $step->addDataToEventBeforeCheck($event); } if ($request->query->get('notDuplicateSlugs')) { if ($this->parameters['draft']->addNotDuplicateEvents(explode(",", $request->query->get('notDuplicateSlugs')))) { $repo = new NewEventDraftRepository(); $repo->saveNotDuplicateEvents($this->parameters['draft']); } } $searchForDuplicateEvents = new SearchForDuplicateEvents($event, $app['currentSite'], $app['config']->findDuplicateEventsShow, $app['config']->findDuplicateEventsThreshhold, is_array($app['config']->findDuplicateEventsNoMatchSummary) ? $app['config']->findDuplicateEventsNoMatchSummary : array()); $searchForDuplicateEvents->setNotDuplicateSlugs($this->parameters['draft']->getNotDuplicateEvents()); $timeZone = new \DateTimeZone($event->getTimezone()); $this->parameters['duplicateEvents'] = array(); foreach ($searchForDuplicateEvents->getPossibleDuplicates() as $dupeEvent) { $start = clone $dupeEvent->getStartAt(); $start->setTimezone($timeZone); $data['duplicates'][] = array('slug' => $dupeEvent->getSlug(), 'summary' => $dupeEvent->getSummary(), 'description' => $dupeEvent->getDescription(), 'startDay' => $start->format("D"), 'startDate' => $start->format("jS"), 'startMonthYear' => $start->format("M \\'y"), 'startTime' => $start->format("g:ia")); } ///////////////////////////////////////////// Other Data if ($this->parameters['currentStep']) { $data = array_merge($data, $this->parameters['currentStep']->onThisStepAddAJAXCallData()); } ///////////////////////////////////////////// Response $response = new Response(json_encode($data)); $response->headers->set('Content-Type', 'application/json'); return $response; }