public function importCourses(array $datas) { $courses = array(); $i = 0; $usedCodes = $this->getAllCoursesCodes(); $this->om->startFlushSuite(); foreach ($datas as $data) { $course = new Course(); $code = $this->generateValidCode($data['code'], $usedCodes); $course->setCode($code); $course->setTitle($data['title']); $course->setDescription($data['description']); $course->setPublicRegistration($data['publicRegistration']); $course->setPublicUnregistration($data['publicUnregistration']); $course->setRegistrationValidation($data['registrationValidation']); if (isset($data['icon'])) { $course->setIcon($data['icon']); } $this->om->persist($course); $courses[$data['id']] = $course; $i++; if ($i % 50 === 0) { $this->om->forceFlush(); } } $this->om->endFlushSuite(); return $courses; }
/** * @EXT\Route( * "/api/course/{course}/edit", * name="api_put_course_edition", * options = {"expose"=true} * ) * @EXT\ParamConverter("user", converter="current_user") * * Edits a course * * @return \Symfony\Component\HttpFoundation\JsonResponse */ public function putCourseEditionAction(Course $course) { $courseDatas = $this->request->request->get('courseDatas', false); $course->setTitle($courseDatas['title']); $course->setCode($courseDatas['code']); $description = $courseDatas['description'] ? $courseDatas['description'] : null; $course->setDescription($description); $course->setPublicRegistration((bool) $courseDatas['publicRegistration']); $course->setPublicUnregistration((bool) $courseDatas['publicUnregistration']); $course->setRegistrationValidation((bool) $courseDatas['registrationValidation']); $tutorRoleName = $courseDatas['tutorRoleName'] ? $courseDatas['tutorRoleName'] : null; $course->setTutorRoleName($tutorRoleName); $learnerRoleName = $courseDatas['learnerRoleName'] ? $courseDatas['learnerRoleName'] : null; $course->setLearnerRoleName($learnerRoleName); if ($courseDatas['workspace']) { $worskpace = $this->workspaceManager->getWorkspaceById($courseDatas['workspace']); $course->setWorkspace($worskpace); } else { $course->setWorkspace(null); } if ($courseDatas['workspaceModel']) { $worskpaceModel = $this->workspaceModelManager->getModelById($courseDatas['workspaceModel']); $course->setWorkspaceModel($worskpaceModel); } else { $course->setWorkspaceModel(null); } if ($this->request->files->get('courseDatas')['icon']) { $icon = $this->cursusManager->saveIcon($this->request->files->get('courseDatas')['icon']); $course->setIcon($icon); } $course->setUserValidation((bool) $courseDatas['userValidation']); $course->setOrganizationValidation((bool) $courseDatas['organizationValidation']); $maxUsers = $courseDatas['maxUsers'] ? $courseDatas['maxUsers'] : null; $course->setMaxUsers($maxUsers); $course->setDefaultSessionDuration($courseDatas['defaultSessionDuration']); $course->setWithSessionEvent((bool) $courseDatas['withSessionEvent']); $course->setDisplayOrder($courseDatas['displayOrder']); $course->emptyValidators(); $validators = isset($courseDatas['validators']) && count($courseDatas['validators']) > 0 ? $this->userManager->getUsersByIds($courseDatas['validators']) : []; foreach ($validators as $validator) { $course->addValidator($validator); } $this->cursusManager->persistCourse($course); $event = new LogCourseEditEvent($course); $this->eventDispatcher->dispatch('log', $event); $serializedCourse = $this->serializer->serialize($course, 'json', SerializationContext::create()->setGroups(['api_user_min'])); return new JsonResponse($serializedCourse, 200); }