/** * @Route("/admin/module/add/module/{courseId}", name = "admin_course_module_add_module") * @Template("LearningMainBundle:Admin:course_module_.html.twig") */ public function AdminModuleAddAction($courseId) { ini_set('memory_limit', -1); $request = $this->getRequest(); $courseModule = new CourseModule(); $course = $this->getDoctrine()->getRepository('LearningMainBundle:Course')->findOneById($courseId); if ($request->isMethod('POST')) { $em = $this->getDoctrine()->getManager(); $maxPosition = $em->createQuery(' SELECT MAX(m.position) FROM LearningMainBundle:CourseModule m WHERE m.course = :courseId ')->setParameter('courseId', $courseId)->getSingleScalarResult(); $type = $request->request->get('type'); $file = $request->files->get('file_up'); # проверка, что файл загружен при выборе видео/файла if (empty($type) || ($type == 'video' || $type == 'file') && empty($file)) { $post_max_size = ini_get('post_max_size'); $error = 'Не удалось загрузить файл. Сервер принимает файлы размером до ' . $post_max_size; return array('course' => $course, 'error' => $error, 'module' => $courseModule); } $position = $maxPosition == null ? 1 : $maxPosition + 1; $courseModule->setPosition($position); $courseModule->setTitle($request->request->get('title')); $courseModule->setEnabled($request->request->get('enabled')); $courseModule->setType($request->request->get('type')); $courseModule->setText($request->request->get('text')); $courseModule->setTimeToLearn($request->request->get('timeToLearn')); /********************************************/ if ($file != NULL) { $name = $this->rus2translit($file->getClientOriginalName()); $pathinfo = pathinfo($name); if (false == in_array($pathinfo['extension'], array('flv', 'pdf'))) { return array('course' => $course, 'module' => $courseModule); } $name = substr($pathinfo['filename'], 0, 50) . '_' . uniqid() . '.' . $pathinfo['extension']; $file->move('upload/files', $name); $courseModule->setFile($name); # у видео надо сохранить размеры и длительность if ($request->request->get('type') == 'video') { $this->setVideoMeta($courseModule, $name); } } /********************************************/ $courseModule->setCourse($course); if ($type == 'text' || $file != NULL) { $em->persist($courseModule); $em->flush(); # надо установить родительский ид. для версионности модуля $em->refresh($courseModule); $courseModule->setParentId($courseModule->getId()); $em->flush($courseModule); } else { $error = 'Ошибка сохранения: необходимо загрузить pdf-файл или flv-видео'; return array('course' => $course, 'error' => $error, 'module' => $courseModule); } $this->get('session')->getFlashBag()->add('popup', 'Добавлен'); return $this->redirect($this->generateUrl('admin_course_edit', array('courseId' => $courseId))); } return array('course' => $course); }