Browse Source

Création de RegistrationAttempt lors du premier affichage

Mael ETIENNE 3 years ago
parent
commit
b98f8df046

+ 1
- 1
LearningModels/SCORM2004/SequencingNavigation/NavigationRequest.php View File

@@ -99,7 +99,7 @@ class NavigationRequest extends SeqNavRequest
99 99
 
100 100
             default:
101 101
 //@TODO mettre en place les var de langue
102
-                //$this->exception = '_AGO_SCORM_EXCEPTION_NB_2_1_13';
102
+                $this->exception = '_AGO_SCORM_EXCEPTION_NB_2_1_13';
103 103
                 return;
104 104
         }
105 105
     }

+ 18
- 17
Services/ScormEngine.php View File

@@ -544,13 +544,6 @@ class ScormEngine implements ContainerAwareInterface
544 544
                 $registration->setLearner($learner);
545 545
 
546 546
                 $em->persist($registration);
547
-
548
-                // Création du RegistrationAttempt
549
-                $attempt = new RegistrationAttempt();
550
-                $attempt->setCourseVersion($course->getMaxVersion());
551
-                $attempt->setRegistration($registration);
552
-
553
-                $em->persist($attempt);
554 547
                 $em->flush();
555 548
 
556 549
                 return $registration->getRegistrationKey();
@@ -580,19 +573,23 @@ class ScormEngine implements ContainerAwareInterface
580 573
             return null;
581 574
         }
582 575
 
583
-        // En fonction de l'inscription traitement des données en fonction du standard
584 576
         $em = $this->getDoctrine()->getManager();
585
-
586
-        $attemptRepository = $em->getRepository(RegistrationAttempt::class);
587
-        $currentAttempt = $attemptRepository->findOneBy(array('registration' => $registration), array('registrationAttemptId' => 'desc'));
588 577
         
578
+        // Récupération du cours et des infos de version
589 579
         $course = $registration->getCourse();
590
-        $currentVersion = $currentAttempt->getCourseVersion();
591 580
         $maxVersion = $course->getMaxVersion();
592
-
593
-        // Vérification de la présence d'une nouvelle version si la règle de versionning impose un restart
594 581
         $versionRule = $course->getVersionRule();
595
-        if ($versionRule == Course::VERSIONING_RULE_RESTART && $currentVersion < $maxVersion) {
582
+
583
+        // Récupération du registrationAttempt courant
584
+        $attemptRepository = $em->getRepository(RegistrationAttempt::class);
585
+        $currentAttempt = $attemptRepository->findOneBy(array('registration' => $registration), array('registrationAttemptId' => 'desc'));
586
+
587
+        $needCreation = empty($currentAttempt);
588
+        $currentVersion = $needCreation ? null : $currentAttempt->getCourseVersion();
589
+
590
+        // Vérification de l'existance d'un essai
591
+        // et, si oui, de la présence d'une nouvelle version si la règle de versionning impose un restart
592
+        if ($needCreation || ($versionRule == Course::VERSIONING_RULE_RESTART && $currentVersion < $maxVersion)) {
596 593
             $newAttempt = new RegistrationAttempt();
597 594
             $newAttempt->setCourseVersion($maxVersion);
598 595
             $newAttempt->setRegistration($registration);
@@ -602,8 +599,11 @@ class ScormEngine implements ContainerAwareInterface
602 599
 
603 600
             $currentAttempt = $newAttempt;
604 601
             $currentVersion = $maxVersion;
605
-// TODO Indiquer dans la réponse que l'on a effectué une modification de version pour l'apprenant
606
-            $data = null;
602
+
603
+            if (!$needCreation) {
604
+// TODO Indiquer dans la réponse que l'on a effectué une modification de version pour l'apprenan
605
+                $data = null;
606
+            }
607 607
         }
608 608
         
609 609
         // Récupération du zip correspondant et ainsi de la version du standard utilisée
@@ -612,6 +612,7 @@ class ScormEngine implements ContainerAwareInterface
612 612
         $zipFile = $mapCourseZip->getZipFile();
613 613
         $standard = $zipFile->getStandard();
614 614
 
615
+        // Traitement des données en fonction du standard
615 616
         $variables = null;
616 617
         switch ($standard) {
617 618
             case DOMSCORM2004::SCORM_2004:

Loading…
Cancel
Save