function editDetails($slug, Request $request, Application $app)
 {
     if (!$this->build($slug, $request, $app)) {
         $app->abort(404, "Venue does not exist.");
     }
     if ($this->parameters['venue']->getIsDeleted()) {
         die("No");
         // TODO
     }
     $form = $app['form.factory']->create(new VenueEditForm($app), $this->parameters['venue']);
     if ('POST' == $request->getMethod()) {
         $form->bind($request);
         if ($form->isValid()) {
             $area = null;
             if (is_array($request->request->get('areas'))) {
                 $areaRepository = new AreaRepository();
                 $countryRepository = new CountryRepository();
                 foreach ($request->request->get('areas') as $areaCode) {
                     if (substr($areaCode, 0, 9) == 'EXISTING:') {
                         $area = $areaRepository->loadBySlug($app['currentSite'], substr($areaCode, 9));
                     } else {
                         if (substr($areaCode, 0, 4) == 'NEW:' && $app['currentUserPermissions']->hasPermission('org.openacalendar', 'AREAS_CHANGE')) {
                             $newArea = new AreaModel();
                             $newArea->setTitle(substr($areaCode, 4));
                             $areaRepository->create($newArea, $area, $app['currentSite'], $this->parameters['country'], $app['currentUser']);
                             $areaRepository->buildCacheAreaHasParent($newArea);
                             $area = $newArea;
                         }
                     }
                 }
             }
             if ($area) {
                 $this->parameters['venue']->setAreaId($area->getId());
             } else {
                 $this->parameters['venue']->setAreaId(null);
             }
             foreach ($app['extensions']->getExtensionsIncludingCore() as $extension) {
                 $extension->addDetailsToVenue($this->parameters['venue']);
             }
             $venueEditMetaData = new VenueEditMetaDataModel();
             $venueEditMetaData->setUserAccount($app['currentUser']);
             if ($form->has('edit_comment')) {
                 $venueEditMetaData->setEditComment($form->get('edit_comment')->getData());
             }
             $venueEditMetaData->setFromRequest($request);
             $venueRepository = new VenueRepository();
             $venueRepository->editWithMetaData($this->parameters['venue'], $venueEditMetaData);
             return $app->redirect("/venue/" . $this->parameters['venue']->getSlugForURL());
         }
     }
     $this->parameters['form'] = $form->createView();
     return $app['twig']->render('site/venue/edit.html.twig', $this->parameters);
 }