/** * @Route("/adm/event_/{eventId}", name = "admin_event_edit") * @Template("LearningMainBundle:Admin:event_.html.twig") */ public function editAction($eventId) { $request = $this->getRequest(); $event = $this->getDoctrine()->getManager()->getRepository('LearningMainBundle:Event')->findOneById($eventId); if (!($event->getAuthor() == $this->getUser() or $event->getCathedra() == $this->getUser()->getCathedra() or $event->getOrganization() == $this->getUser()->getOrganization())) { $event = null; } /** * @todo Можно оставить так, но вылетать с критической ошибкой не есть хорошо */ $country = $this->getDoctrine()->getRepository('LearningMainBundle:Country')->findOneById(1); $regions = $this->getDoctrine()->getRepository('LearningMainBundle:Region')->findByCountry($country); $cities = $this->getDoctrine()->getRepository('LearningMainBundle:City')->findByRegion($regions); $cathedra = $this->getDoctrine()->getRepository('LearningMainBundle:Cathedra')->findAll(); $university = $this->getDoctrine()->getRepository('LearningMainBundle:University')->findAll(); $organizations = $this->getDoctrine()->getRepository('LearningMainBundle:Organization')->findAll(); $specializations = $this->getDoctrine()->getRepository('LearningMainBundle:Specialization')->findAll(); if ($request->isMethod('POST')) { $em = $this->getDoctrine()->getManager(); $event->setTitle($request->request->get('title')); $event->setCode($request->request->get('code')); $event->setPrice($request->request->get('price')); $event->setRegion($this->getDoctrine()->getRepository('LearningMainBundle:Region')->findOneById($request->request->get('region'))); $event->setCity($this->getDoctrine()->getRepository('LearningMainBundle:City')->findOneById($request->request->get('city'))); $event->setIsState($request->request->get('isState')); /* Для гос учреждений */ $event->setUniversity($this->getDoctrine()->getRepository('LearningMainBundle:University')->findOneById($request->request->get('university'))); $event->setCathedra($this->getDoctrine()->getRepository('LearningMainBundle:Cathedra')->findOneById($request->request->get('cathedra'))); $event->setCountHour($request->request->get('countHour')); /* Для организаций */ $event->setOrganization($this->getDoctrine()->getRepository('LearningMainBundle:Organization')->findOneById($request->request->get('organization'))); /* -- */ $event->setForm($request->request->get('form')); $event->setAuthor($this->getUser()); $event->setTimes($request->request->get('times')); $event->setPlace($request->request->get('place')); $event->setBalls($request->request->get('balls')); $event->setEnabled($request->request->get('enabled')); $event->setKeywords($request->request->get('keywords')); $event->setDescription($request->request->get('description')); $event->setBody($request->request->get('text')); $event->setContacts($request->request->get('contacts')); $event->setContactsBid($request->request->get('contactsBid')); if ($request->request->get('diplom1')) { $diplom = '1'; } else { $diplom = '0'; } if ($request->request->get('diplom2')) { $diplom .= '1'; } else { $diplom .= '0'; } if ($request->request->get('diplom3')) { $diplom .= '1'; } else { $diplom .= '0'; } $event->setDiplom($diplom); $em->flush($event); $em->refresh($event); $this->setSpecialization($event, $request->request->get('specializations')); $starts = $request->request->get('starts'); $ends = $request->request->get('ends'); for ($i = 1; $i <= count($starts); $i++) { if ($starts[$i] != '' and $ends[$i] != '') { $date = new EventDate(); $tmpStarts = new \DateTime($starts[$i]); $tmpEnds = new \DateTime($ends[$i]); $date->setEvent($event); $date->setStarts($tmpStarts); $date->setEnds($tmpEnds); $em->persist($date); $em->flush(); } } $files = $request->files->get('filedoc'); if (!is_dir('upload/events')) { mkdir('upload/events', 0775); } $j = 1; foreach ($files as $file) { if ($file != NULL) { $origName = $file->getClientOriginalName(); $format = substr($origName, strrpos($origName, '.')); $name = substr($origName, 0, strlen($origName) - 4); $name .= '_' . time() . $format; if ($format != '.rar' && $format != '.pdf' && $format != '.doc' && $format != '.docx' && $format != '.zip' && $format != '.jpg' && $format != '.png' && $format != '.xls' && $format != '.xlsx' && $format != '.jpeg') { $error = 'Ошибка сохранения: недопустимое расширение файла (разрешены rar, zip, pdf, doc, docx, jpg, jpeg, png)'; return $this->redirect($this->generateUrl('admin_event_edit', array('eventId' => $event->getId(), 'error' => $error))); } $file->move('upload/events/', $name); $EventFile = new File(); $EventFile->setEvent($event); $EventFile->setFiledoc($name); $EventFile->setTitle($request->request->get('filename')[$j]); $em->persist($EventFile); $em->flush(); } $j++; } $em->refresh($event); } $specialtyTmp = $event->getSpecializations(); $spec_act = array(); if ($specialtyTmp) { foreach ($specialtyTmp as $v) { $index = '' . $v->getId() . ''; $spec_act[$index] = true; } } return array('event' => $event, 'regions' => $regions, 'cathedra' => $cathedra, 'university' => $university, 'organizations' => $organizations, 'specializations' => $specializations, 'spec_act' => $spec_act, 'cities' => $cities); }