コード例 #1
0
 public function __construct(CourseSession $session, User $user)
 {
     $course = $session->getCourse();
     $details = array();
     $details['username'] = $user->getUsername();
     $details['firsName'] = $user->getFirstName();
     $details['lastName'] = $user->getLastName();
     $details['sessionId'] = $session->getId();
     $details['sessionName'] = $session->getName();
     $details['sessionCreationDate'] = $session->getCreationDate()->format('d/m/Y H:i:s');
     $details['courseId'] = $course->getId();
     $details['courseTitle'] = $course->getTitle();
     $details['courseCode'] = $course->getCode();
     parent::__construct(self::ACTION, $details, $user);
 }
コード例 #2
0
 public function __construct(CourseRegistrationQueue $queue, CourseSession $session)
 {
     $course = $queue->getCourse();
     $user = $queue->getUser();
     $details = [];
     $details['userId'] = $user->getId();
     $details['username'] = $user->getUsername();
     $details['firsName'] = $user->getFirstName();
     $details['lastName'] = $user->getLastName();
     $details['courseId'] = $course->getId();
     $details['courseTitle'] = $course->getTitle();
     $details['courseCode'] = $course->getCode();
     $details['sessionId'] = $session->getId();
     $details['sessionName'] = $session->getName();
     $details['sessionStatus'] = $session->getSessionStatus();
     $details['sessionType'] = $session->getType();
     parent::__construct(self::ACTION, $details, $user);
 }
コード例 #3
0
 /**
  * @EXT\Route(
  *     "cursus/course/session/{session}/default/switch",
  *     name="claro_cursus_course_session_default_switch",
  *     options={"expose"=true}
  * )
  * @EXT\ParamConverter("authenticatedUser", options={"authenticatedUser" = true})
  */
 public function courseSessionDefaultSwitchAction(CourseSession $session)
 {
     $isDefault = !$session->isDefaultSession();
     $session->setDefaultSession($isDefault);
     $this->cursusManager->persistCourseSession($session);
     return new JsonResponse(['id' => $session->getId(), 'default' => $isDefault], 200);
 }
コード例 #4
0
 public function __construct(CourseSession $session)
 {
     $course = $session->getCourse();
     $workspace = $session->getWorkspace();
     $learnerRole = $session->getLearnerRole();
     $tutorRole = $session->getTutorRole();
     $details = [];
     $details['id'] = $session->getId();
     $details['name'] = $session->getName();
     $details['defaultSession'] = $session->isDefaultSession();
     $details['creationDate'] = $session->getCreationDate();
     $details['publicRegistration'] = $session->getPublicRegistration();
     $details['publicUnregistration'] = $session->getPublicUnregistration();
     $details['registrationValidation'] = $session->getRegistrationValidation();
     $details['startDate'] = $session->getStartDate();
     $details['endDate'] = $session->getEndDate();
     $details['extra'] = $session->getExtra();
     $details['userValidation'] = $session->getUserValidation();
     $details['organizationValidation'] = $session->getOrganizationValidation();
     $details['maxUsers'] = $session->getMaxUsers();
     $details['type'] = $session->getType();
     $details['courseId'] = $course->getId();
     $details['courseTitle'] = $course->getTitle();
     $details['courseCode'] = $course->getCode();
     if (!is_null($workspace)) {
         $details['workspaceId'] = $workspace->getId();
         $details['workspaceName'] = $workspace->getName();
         $details['workspaceCode'] = $workspace->getCode();
         $details['workspaceGuid'] = $workspace->getGuid();
     }
     if (!is_null($learnerRole)) {
         $details['learnerRoleId'] = $learnerRole->getId();
         $details['learnerRoleName'] = $learnerRole->getName();
         $details['learnerRoleKey'] = $learnerRole->getTranslationKey();
     }
     if (!is_null($tutorRole)) {
         $details['tutorRoleId'] = $tutorRole->getId();
         $details['tutorRoleName'] = $tutorRole->getName();
         $details['tutorRoleKey'] = $tutorRole->getTranslationKey();
     }
     parent::__construct(self::ACTION, $details);
 }
コード例 #5
0
 public function generateWorkspace(Course $course, CourseSession $session, User $user)
 {
     $model = $course->getWorkspaceModel();
     $description = $course->getDescription();
     $displayable = false;
     $selfRegistration = false;
     $selfUnregistration = false;
     $registrationValidation = false;
     $name = $course->getTitle() . ' [' . $session->getName() . ']';
     $code = $this->generateWorkspaceCode($course->getCode());
     if (is_null($model)) {
         $ds = DIRECTORY_SEPARATOR;
         $config = Configuration::fromTemplate($this->templateDir . $ds . 'default.zip');
         $config->setWorkspaceName($name);
         $config->setWorkspaceCode($code);
         $config->setDisplayable($displayable);
         $config->setSelfRegistration($selfRegistration);
         $config->setSelfUnregistration($selfUnregistration);
         $config->setRegistrationValidation($registrationValidation);
         $config->setWorkspaceDescription($description);
         $workspace = $this->workspaceManager->create($config, $user);
     } else {
         $workspace = $this->workspaceManager->createWorkspaceFromModel($model, $user, $name, $code, $description, $displayable, $selfRegistration, $selfUnregistration);
     }
     $workspace->setWorkspaceType(0);
     $startDate = $session->getStartDate();
     $endDate = $session->getEndDate();
     if (!is_null($startDate)) {
         $workspace->setStartDate($startDate);
     }
     if (!is_null($endDate)) {
         $workspace->setEndDate($endDate);
     }
     $this->workspaceManager->editWorkspace($workspace);
     return $workspace;
 }
コード例 #6
0
 /**
  * @EXT\Route(
  *     "/courses/widget/{widgetInstance}/session/{session}/informations/workspace/{withWorkspace}/mail/{withMail}/type/{type}",
  *     name="claro_courses_widget_session_informations",
  *     defaults={"withWorkspace"=1, "withMail"=1, "type"=0},
  *     options={"expose"=true}
  * )
  * @EXT\Template("ClarolineCursusBundle:Cursus:sessionInformationsModal.html.twig")
  */
 public function coursesWidgetSessionInformationsAction(WidgetInstance $widgetInstance, CourseSession $session, $withWorkspace = 1, $withMail = 1, $type = 0)
 {
     $user = $this->tokenStorage->getToken()->getUser();
     $isAnon = $user === 'anon.';
     $config = $this->cursusManager->getCoursesWidgetConfiguration($widgetInstance);
     $extra = $config->getExtra();
     $disableWs = intval($withWorkspace) === 0;
     $allInfos = intval($type) === 0;
     if (intval($withWorkspace) === 1) {
         $disableClosedSessionsWs = isset($extra['disableClosedSessionsWs']) ? $extra['disableClosedSessionsWs'] : false;
         $disableUnstartedSessionsWs = isset($extra['disableUnstartedSessionsWs']) ? $extra['disableUnstartedSessionsWs'] : false;
         $now = new \DateTime();
         $startDate = $session->getStartDate();
         $endDate = $session->getEndDate();
         $disableWs = $endDate < $now && $disableClosedSessionsWs || $startDate > $now && $disableUnstartedSessionsWs;
     }
     $sessionEvents = $this->cursusManager->getEventsBySession($session);
     $tutors = $this->cursusManager->getUsersBySessionAndType($session, CourseSessionUser::TEACHER);
     $sessionEventUsersStatus = [];
     $sessionEventUsers = $isAnon ? [] : $this->cursusManager->getSessionEventUsersByUserAndSessionAndStatus($user, $session, SessionEventUser::REGISTERED);
     foreach ($sessionEventUsers as $seu) {
         $sessionEvent = $seu->getSessionEvent();
         $seId = $sessionEvent->getId();
         $status = $seu->getRegistrationStatus();
         $sessionEventUsersStatus[$seId] = $status;
     }
     return ['session' => $session, 'course' => $session->getCourse(), 'events' => $sessionEvents, 'tutors' => $tutors, 'workspace' => $session->getWorkspace(), 'disableWs' => $disableWs, 'withMail' => intval($withMail) === 1, 'sessionEventUsersStatus' => $sessionEventUsersStatus, 'allInfos' => $allInfos];
 }
コード例 #7
0
 /**
  * @EXT\Route(
  *     "/course/session/{session}/self/register",
  *     name="claro_cursus_course_session_self_register",
  *     options={"expose"=true}
  * )
  * @EXT\ParamConverter("authenticatedUser", options={"authenticatedUser" = true})
  * @EXT\Template("ClarolineCursusBundle:Widget:coursesListForRegistrationWidget.html.twig")
  */
 public function courseSessionSelfRegisterAction(CourseSession $session, User $authenticatedUser)
 {
     if ($session->getPublicRegistration()) {
         if ($session->getRegistrationValidation()) {
             $this->cursusManager->addUserToSessionQueue($authenticatedUser, $session);
         } else {
             $this->cursusManager->registerUsersToSession($session, array($authenticatedUser), 0);
         }
     }
     return new JsonResponse('success', 200);
 }
コード例 #8
0
 /**
  * @EXT\Route(
  *     "/api/session/{session}/edit",
  *     name="api_put_session_edition",
  *     options = {"expose"=true}
  * )
  * @EXT\ParamConverter("user", converter="current_user")
  *
  * Edits a session
  *
  * @return \Symfony\Component\HttpFoundation\JsonResponse
  */
 public function putSessionEditionAction(CourseSession $session)
 {
     $sessionDatas = $this->request->request->get('sessionDatas', false);
     $trimmedStartDate = trim($sessionDatas['startDate'], 'Zz');
     $trimmedEndDate = trim($sessionDatas['endDate'], 'Zz');
     $startDate = new \DateTime($trimmedStartDate);
     $endDate = new \DateTime($trimmedEndDate);
     $session->setName($sessionDatas['name']);
     $session->setStartDate($startDate);
     $session->setEndDate($endDate);
     $session->setDescription($sessionDatas['description']);
     $session->setDefaultSession((bool) $sessionDatas['defaultSession']);
     $session->setPublicRegistration((bool) $sessionDatas['publicRegistration']);
     $session->setPublicUnregistration((bool) $sessionDatas['publicUnregistration']);
     $session->setUserValidation((bool) $sessionDatas['userValidation']);
     $session->setMaxUsers($sessionDatas['maxUsers']);
     $session->setOrganizationValidation((bool) $sessionDatas['organizationValidation']);
     $session->setRegistrationValidation((bool) $sessionDatas['registrationValidation']);
     $session->setEventRegistrationType($sessionDatas['eventRegistrationType']);
     $session->setDisplayOrder($sessionDatas['displayOrder']);
     $details = $session->getDetails();
     if (is_null($details)) {
         $details = [];
     }
     $details['color'] = $sessionDatas['color'];
     $session->setDetails($details);
     $cursusIds = $sessionDatas['cursus'] ? $sessionDatas['cursus'] : [];
     $validatorsIds = $sessionDatas['validators'] ? $sessionDatas['validators'] : [];
     $cursus = $this->cursusManager->getCursusByIds($cursusIds);
     $validators = $this->userManager->getUsersByIds($validatorsIds);
     $session->emptyCursus();
     $session->emptyValidators();
     foreach ($cursus as $c) {
         $session->addCursus($c);
     }
     foreach ($validators as $validator) {
         $session->addValidator($validator);
     }
     $this->cursusManager->persistCourseSession($session);
     $event = new LogCourseSessionEditEvent($session);
     $this->eventDispatcher->dispatch('log', $event);
     $serializedSession = $this->serializer->serialize($session, 'json', SerializationContext::create()->setGroups(['api_user_min']));
     return new JsonResponse($serializedSession, 200);
 }
コード例 #9
0
 public function sendSessionRegistrationConfirmationMessage(User $user, CourseSession $session, $sessionStatus)
 {
     $content = '';
     $object = '';
     $sessionName = $session->getName();
     $startDate = $session->getStartDate()->format('d/m/Y');
     $endDate = $session->getEndDate()->format('d/m/Y');
     switch ($sessionStatus) {
         case 'registered':
             $object = $this->translator->trans('session_registration_object', ['%session_name%' => $sessionName, '%start_date%' => $startDate, '%end_date%' => $endDate, '%status%' => $this->translator->trans('registered', [], 'platform')], 'cursus');
             $content = $this->translator->trans('session_registration_registered_msg', ['%session_name%' => $sessionName, '%start_date%' => $startDate, '%end_date%' => $endDate], 'cursus');
             break;
         case 'pending':
             $object = $this->translator->trans('session_registration_object', ['%session_name%' => $sessionName, '%start_date%' => $startDate, '%end_date%' => $endDate, '%status%' => $this->translator->trans('pending', [], 'platform')], 'cursus');
             $content = $this->translator->trans('session_registration_pending_msg', ['%session_name%' => $sessionName, '%start_date%' => $startDate, '%end_date%' => $endDate], 'cursus');
             break;
         case 'validated':
             $object = $this->translator->trans('session_registration_object', ['%session_name%' => $sessionName, '%start_date%' => $startDate, '%end_date%' => $endDate, '%status%' => $this->translator->trans('validated', [], 'cursus')], 'cursus');
             $content = $this->translator->trans('session_registration_validated_msg', ['%session_name%' => $sessionName, '%start_date%' => $startDate, '%end_date%' => $endDate], 'cursus');
             break;
     }
     $message = $this->messageManager->create($content, $object, [$user]);
     $this->messageManager->send($message, true, false);
 }
コード例 #10
0
 /**
  * @View(serializerGroups={"api_cursus"})
  * @ApiDoc(
  *     description="Returns workspace id of session",
  *     views = {"cursus"}
  * )
  * @Get("/session/{session}/workspace/id")
  */
 public function getWorkspaceIdFromSessionAction(CourseSession $session)
 {
     $workspace = $session->getWorkspace();
     return is_null($workspace) ? null : $workspace->getId();
 }
コード例 #11
0
 public function sessionQueue(CourseSession $session, User $user)
 {
     $now = new \DateTime();
     $status = 0;
     $validators = $session->getValidators();
     if ($session->getUserValidation()) {
         $status += CourseRegistrationQueue::WAITING_USER;
     }
     if ($session->getOrganizationValidation()) {
         $status += CourseRegistrationQueue::WAITING_ORGANIZATION;
     }
     if (count($validators) > 0) {
         $status += CourseRegistrationQueue::WAITING_VALIDATOR;
     } elseif ($session->getRegistrationValidation()) {
         $status += CourseRegistrationQueue::WAITING;
     }
     $sessionQueue = new CourseSessionRegistrationQueue();
     $sessionQueue->setUser($user);
     $sessionQueue->setSession($session);
     $sessionQueue->setApplicationDate($now);
     $sessionQueue->setStatus($status);
     $this->om->persist($sessionQueue);
     return $sessionQueue;
 }