frederic 3 years ago
parent
commit
574188b9e9

+ 3
- 3
LearningModels/SCORM2004/SequencingNavigation/DeliveryRequest.php View File

@@ -37,7 +37,7 @@ class DeliveryRequest extends SeqNavRequest
37 37
      *
38 38
      * Ref ADL: Delivery Request Process [DB.1.1]
39 39
      */
40
-    protected function checkDeliveryItem()
40
+    protected function checkDeliveryItem(): void
41 41
     {
42 42
         // si l'item a des enfants, ce n'est pas un grain (un noeud terminale dans l'arbre)
43 43
         // seules les noeuds terminaux peuvent être livrés
@@ -70,7 +70,7 @@ class DeliveryRequest extends SeqNavRequest
70 70
      *
71 71
      * Ref ADL: Content Delivery Environment Process [DB.2]
72 72
      */
73
-    public function processDelivery()
73
+    public function processDelivery(): void
74 74
     {
75 75
         $em = $this->getDoctrine()->getManager();
76 76
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -176,7 +176,7 @@ class DeliveryRequest extends SeqNavRequest
176 176
      * en fonction de l'état de l'item testé
177 177
      * Ref ADL : Clear Suspended Item Subprocess [DB.2.1]
178 178
      *
179
-     * @param AGOItemBean $identifiedItem
179
+     * @param AGOItemBean $identifiedItem: void
180 180
      */
181 181
     protected function clearSuspendedItem($identifiedItem)
182 182
     {

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

@@ -109,7 +109,7 @@ class NavigationRequest extends SeqNavRequest
109 109
      *
110 110
      * Ref ADL: Navigation Request Process [NB.2.1]
111 111
      */
112
-    protected function processStart()
112
+    protected function processStart(): void
113 113
     {
114 114
         // Vérifier que la session d'activité n'aie pas déjà été initiée (cad qu'il n'existe pas un plannode courant)
115 115
         if (!$this->currentItem) {
@@ -126,7 +126,7 @@ class NavigationRequest extends SeqNavRequest
126 126
      *
127 127
      * Ref ADL: Navigation Request Process [NB.2.1]
128 128
      */
129
-    protected function processResumeAll()
129
+    protected function processResumeAll(): void
130 130
     {
131 131
         // Vérifier que la session d'activité n'aie pas déjà été initiée (cad qu'il n'existe pas un plannode courant)
132 132
         if (!$this->currentItem) {
@@ -150,7 +150,7 @@ class NavigationRequest extends SeqNavRequest
150 150
      *
151 151
      * Ref ADL: Navigation Request Process [NB.2.1]
152 152
      */
153
-    protected function processContinue()
153
+    protected function processContinue(): void
154 154
     {
155 155
         $em = $this->getDoctrine()->getManager();
156 156
 
@@ -191,7 +191,7 @@ class NavigationRequest extends SeqNavRequest
191 191
      *
192 192
      * Ref ADL: Navigation Request Process [NB.2.1]
193 193
      */
194
-    protected function processPrevious()
194
+    protected function processPrevious(): void
195 195
     {
196 196
         $em = $this->getDoctrine()->getManager();
197 197
 
@@ -236,7 +236,7 @@ class NavigationRequest extends SeqNavRequest
236 236
      *
237 237
      * Ref ADL: Navigation Request Process [NB.2.1]
238 238
      */
239
-    protected function processDepracated()
239
+    protected function processDepracated(): void
240 240
     {
241 241
         // les requetes 'forward' et 'backward' ne sont pas supportées par SCORM 2004
242 242
 //@TODO mettre en place les var de langue
@@ -249,7 +249,7 @@ class NavigationRequest extends SeqNavRequest
249 249
      *
250 250
      * Ref ADL: Navigation Request Process [NB.2.1]
251 251
      */
252
-    protected function processChoice()
252
+    protected function processChoice(): void
253 253
     {
254 254
         $em = $this->getDoctrine()->getManager();
255 255
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -336,7 +336,7 @@ class NavigationRequest extends SeqNavRequest
336 336
      *
337 337
      * Ref ADL: Navigation Request Process [NB.2.1]
338 338
      */
339
-    protected function processJump()
339
+    protected function processJump(): void
340 340
     {
341 341
         if ($this->targetItem) {
342 342
             // On récupère les plannodes disponibles à partir du parent de la cible
@@ -361,7 +361,7 @@ class NavigationRequest extends SeqNavRequest
361 361
      *
362 362
      * Ref ADL: Navigation Request Process [NB.2.1]
363 363
      */
364
-    protected function processQuit()
364
+    protected function processQuit(): void
365 365
     {
366 366
         $em = $this->getDoctrine()->getManager();
367 367
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -392,7 +392,7 @@ class NavigationRequest extends SeqNavRequest
392 392
      *
393 393
      * Ref ADL: Navigation Request Process [NB.2.1]
394 394
      */
395
-    protected function processQuitAll()
395
+    protected function processQuitAll(): void
396 396
     {
397 397
         // Vérifier que la session aie bien été initiée
398 398
         if ($this->currentItem) {
@@ -425,7 +425,7 @@ class NavigationRequest extends SeqNavRequest
425 425
      *
426 426
      * @return string
427 427
      */
428
-    public function getTerminationRequest()
428
+    public function getTerminationRequest(): ?string
429 429
     {
430 430
         return $this->terminationRequest;
431 431
     }
@@ -435,7 +435,7 @@ class NavigationRequest extends SeqNavRequest
435 435
      *
436 436
      * @return string
437 437
      */
438
-    public function getSequencingRequest()
438
+    public function getSequencingRequest(): ?string
439 439
     {
440 440
         return $this->sequencingRequest;
441 441
     }
@@ -443,9 +443,9 @@ class NavigationRequest extends SeqNavRequest
443 443
     /**
444 444
      * Retourne l'activité ciblée par la requete
445 445
      *
446
-     * @return AGOPlanNodeBean
446
+     * @return string
447 447
      */
448
-    public function getTargetPlanNode()
448
+    public function getTargetPlanNode(): ?string
449 449
     {
450 450
         return $this->targetItem;
451 451
     }

+ 27
- 22
LearningModels/SCORM2004/SequencingNavigation/NavigationRequestValidator.php View File

@@ -53,7 +53,7 @@ class NavigationRequestValidator extends SeqNavRequest
53 53
      *
54 54
      * @return bool
55 55
      */
56
-    public function checkStartValidity()
56
+    public function checkStartValidity(): bool
57 57
     {
58 58
         $root = $this->scorm2004Track->getOrganizationId();
59 59
         // @todo Executer la méthode qui retourne le premier enfant si existant avant de retourner le premier noeud livrable
@@ -69,7 +69,7 @@ class NavigationRequestValidator extends SeqNavRequest
69 69
      * @param string $currentItem
70 70
      * @return bool
71 71
      */
72
-    public function checkContinueValidity($currentItem)
72
+    public function checkContinueValidity($currentItem): bool
73 73
     {
74 74
         $currentParent = $this->domScorm2004->getParent($currentItem);
75 75
 
@@ -96,7 +96,7 @@ class NavigationRequestValidator extends SeqNavRequest
96 96
      * @param string $currentItem
97 97
      * @return bool
98 98
      */
99
-    public function checkPreviousValidity($currentItem)
99
+    public function checkPreviousValidity($currentItem): bool
100 100
     {
101 101
         $currentParent = $this->domScorm2004->getParent($currentItem);
102 102
 
@@ -138,7 +138,7 @@ class NavigationRequestValidator extends SeqNavRequest
138 138
      *
139 139
      * @return bool
140 140
      */
141
-    public function checkChoiceValidity($currentItem, $targetItem)
141
+    public function checkChoiceValidity($currentItem, $targetItem): bool
142 142
     {
143 143
         return $this->testChoiceValidity($currentItem, $targetItem);
144 144
     }
@@ -149,7 +149,7 @@ class NavigationRequestValidator extends SeqNavRequest
149 149
      *
150 150
      * @return string[]
151 151
      */
152
-    public function defineTableOfContent($currentItem)
152
+    public function defineTableOfContent($currentItem): array
153 153
     {
154 154
         $em = $this->getDoctrine()->getManager();
155 155
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -308,7 +308,7 @@ class NavigationRequestValidator extends SeqNavRequest
308 308
      *
309 309
      * @return bool
310 310
      */
311
-    protected function testChoiceValidity($currentItem, $targetItem)
311
+    protected function testChoiceValidity($currentItem, $targetItem): bool
312 312
     {
313 313
         // Si le noeud cible n'existe pas
314 314
         if (!$targetItem) {
@@ -385,7 +385,8 @@ class NavigationRequestValidator extends SeqNavRequest
385 385
      * @param string $traversalDirection sens de circulation dans l'arbre
386 386
      * @param string $previousDirection précédent sens de circulation
387 387
      * @param bool $considerChildren
388
-     * @return bool
388
+     * @return array retourne le prochain item valide dans le sens de traversée de l'arbre défini,
389
+     * ainsi que les informations necessaires à son traitement
389 390
      */
390 391
     protected function getNextItemFromTreeTraversalFlow($identifiedItem, $traversalDirection, $previousDirection, $considerChildren)
391 392
     {
@@ -415,6 +416,10 @@ class NavigationRequestValidator extends SeqNavRequest
415 416
             array_unshift($availableSiblings, array_pop($availableSiblings));
416 417
         }
417 418
 
419
+        $response = array(
420
+            'item' => null,
421
+            'traversalDirection' => null);
422
+
418 423
         if ($traversalDirection == SCORM2004_TRAVERSE_FORWARD) {
419 424
             // Sortir de l'arbre entraine la fin de la session
420 425
             if ($identifiedItem == $this->flatTree[count($this->flatTree) - 1] || (!$parent && !$considerChildren)) {
@@ -428,16 +433,16 @@ class NavigationRequestValidator extends SeqNavRequest
428 433
                 if ($identifiedIndex === count($availableSiblings) - 1) {
429 434
                     return $this->getNextItemFromTreeTraversalFlow($parent, SCORM2004_TRAVERSE_FORWARD, SCORM2004_TRAVERSE_UNKNOWN, false);
430 435
                 } else {
431
-                    return array(
432
-                            'item' => $availableSiblings[$identifiedIndex + 1],
433
-                            'traversalDirection' => $traversalDirection);
436
+                    $response['item'] = $availableSiblings[$identifiedIndex + 1];
437
+                    $response['traversalDirection'] = $traversalDirection;
438
+                    return $response;
434 439
                 }
435 440
             } else {
436 441
                 // Si l'item a des enfants disponibles, on propose la livraison du premier
437 442
                 if (!empty($availableChildren)) {
438
-                    return array(
439
-                            'item' => $availableChildren[0],
440
-                            'traversalDirection' => $traversalDirection);
443
+                    $response['item'] = $availableChildren[0];
444
+                    $response['traversalDirection'] = $traversalDirection;
445
+                    return $response;
441 446
                 } else {
442 447
                     return false;
443 448
                 }
@@ -463,9 +468,9 @@ class NavigationRequestValidator extends SeqNavRequest
463 468
                 } elseif ($identifiedIndex === false) {
464 469
                     return false;
465 470
                 } else {
466
-                    return array(
467
-                            'item' => $availableSiblings[$identifiedIndex - 1],
468
-                            'traversalDirection' => $traversalDirection);
471
+                    $response['item'] = $availableSiblings[$identifiedIndex - 1];
472
+                    $response['traversalDirection'] = $traversalDirection;
473
+                    return $response;
469 474
                 }
470 475
             } else {
471 476
                 // dans le cas d'un cluster, vérifier qu'il y aie au moins un enfant disponible
@@ -476,13 +481,13 @@ class NavigationRequestValidator extends SeqNavRequest
476 481
                     // on propose le premier enfant disponible
477 482
                     // sinon le dernier
478 483
                     if ($this->getSequencingControl($identifiedItem, 'forwardOnly')) {
479
-                        return array(
480
-                                'item' => $availableChildren[0],
481
-                                'traversalDirection' => true);
484
+                        $response['item'] = $availableChildren[0];
485
+                        $response['traversalDirection'] = SCORM2004_TRAVERSE_FORWARD;
486
+                        return $response;
482 487
                     } else {
483
-                        return array(
484
-                                'item' => $availableChildren[count($availableChildren) - 1],
485
-                                'traversalDirection' => false);
488
+                        $response['item'] = $availableChildren[count($availableChildren) - 1];
489
+                        $response['traversalDirection'] = SCORM2004_TRAVERSE_BACKWARD;
490
+                        return $response;
486 491
                     }
487 492
                 } else {
488 493
                     return false;

+ 51
- 51
LearningModels/SCORM2004/SequencingNavigation/SeqNavRequest.php View File

@@ -145,7 +145,7 @@ class SeqNavRequest implements ContainerAwareInterface
145 145
     * Met à jour l'objet Scorm2004Track
146 146
     * avec les items courant et suspendu
147 147
     */
148
-    protected function updateTrack2004()
148
+    protected function updateTrack2004(): void
149 149
     {
150 150
         $em = $this->getDoctrine()->getManager();
151 151
 
@@ -162,7 +162,7 @@ class SeqNavRequest implements ContainerAwareInterface
162 162
      *
163 163
      * @param int $idIdentified
164 164
      */
165
-    protected function terminateDescendentAttempts($idIdentified)
165
+    protected function terminateDescendentAttempts($idIdentified): void
166 166
     {
167 167
         if ($this->currentItem) {
168 168
             $commonAncestor = $this->domScorm2004->findCommonAncestor($idIdentified, $this->currentItem);
@@ -183,7 +183,7 @@ class SeqNavRequest implements ContainerAwareInterface
183 183
      *
184 184
      * @param string $identifiedItemId
185 185
      */
186
-    protected function endAttempt($identifiedItemId)
186
+    protected function endAttempt($identifiedItemId): void
187 187
     {
188 188
         $em = $this->getDoctrine()->getManager();
189 189
 
@@ -272,14 +272,14 @@ class SeqNavRequest implements ContainerAwareInterface
272 272
     }
273 273
 
274 274
     /**
275
-     * Évalutation du processus de rollup en remontant du item jusqu'à la racine
276
-     * Peut modifier les informations statistiques du item et de ses ancêtres
275
+     * Évalutation du processus de rollup en remontant de l'item jusqu'à la racine
276
+     * Peut modifier les informations statistiques de l'item et de ses ancêtres
277 277
      *
278 278
      * Ref ADL: Overall Rollup Process [RB.1.5]
279 279
      *
280 280
      * @param string $identifiedItemId
281 281
      */
282
-    protected function evaluateOverallRollup($identifiedItemId)
282
+    protected function evaluateOverallRollup($identifiedItemId): void
283 283
     {
284 284
         $root = $this->scorm2004Track->getOrganizationId();
285 285
         $items = $this->domScorm2004->getDirectPath($identifiedItemId, $root);
@@ -303,7 +303,7 @@ class SeqNavRequest implements ContainerAwareInterface
303 303
                 $this->evaluateObjectiveRollupUsingRules($item);
304 304
             }
305 305
 
306
-            // On évalue le processus de rollup sur la progression du item par la mesure
306
+            // On évalue le processus de rollup sur la progression de l'item par la mesure
307 307
             $itemMethodByMeasureApplied = $this->evaluateItemProgressRollupUsingMeasure($item);
308 308
 
309 309
             // Si la méthode ne s'applique pas, on applique la méthode se basant sur les règles
@@ -314,13 +314,13 @@ class SeqNavRequest implements ContainerAwareInterface
314 314
     }
315 315
 
316 316
     /**
317
-     * Evalue le poid moyen de tout les enfants contribuant au rollup du item
318
-     * Peut modifier les informations des objectifs du item
317
+     * Evalue le poid moyen de tout les enfants contribuant au rollup de l'item
318
+     * Peut modifier les informations des objectifs de l'item
319 319
      * Ref ADL: Measure Rollup Process [RB.1.1 a]
320 320
      *
321 321
      * @param string $identifiedItemId
322 322
      */
323
-    protected function evaluateMeasureRollup($identifiedItemId)
323
+    protected function evaluateMeasureRollup($identifiedItemId): void
324 324
     {
325 325
         $em = $this->getDoctrine()->getManager();
326 326
         
@@ -398,12 +398,12 @@ class SeqNavRequest implements ContainerAwareInterface
398 398
 
399 399
     /**
400 400
      * Evalue le poid moyen de tout les enfants tracés et participant au rollup de complétion
401
-     * Peut modifier les informations de l'essais du item
401
+     * Peut modifier les informations de l'essais de l'item
402 402
      * Ref ADL: Completion Measure Rollup Process [RB.1.1 b]
403 403
      *
404 404
      * @param string $identifiedItemId
405 405
      */
406
-    protected function evaluateCompletionMeasureRollup($identifiedItemId)
406
+    protected function evaluateCompletionMeasureRollup($identifiedItemId): void
407 407
     {
408 408
         $em = $this->getDoctrine()->getManager();
409 409
         $scorm2004AttemptProgressInformationRepository = $em->getRepository(Scorm2004AttemptProgressInformation::class);
@@ -460,13 +460,13 @@ class SeqNavRequest implements ContainerAwareInterface
460 460
 
461 461
     /**
462 462
      * Evalue, en utilisant les mesures, l'impact du processus de rollup lié au objectifs satisfaits
463
-     * Peut modifier les informations des objectifs du item
463
+     * Peut modifier les informations des objectifs de l'item
464 464
      * Ref ADL: Objective Rollup Using Measure Process [RB.1.2 a]
465 465
      *
466 466
      * @param string $identifiedItemId
467 467
      * @return bool
468 468
      */
469
-    protected function evaluateObjectiveRollupUsingMeasure($identifiedItemId)
469
+    protected function evaluateObjectiveRollupUsingMeasure($identifiedItemId): ?bool
470 470
     {
471 471
         $em = $this->getDoctrine()->getManager();
472 472
         $scorm2004AttemptProgressInformationRepository = $em->getRepository(Scorm2004AttemptProgressInformation::class);
@@ -477,7 +477,7 @@ class SeqNavRequest implements ContainerAwareInterface
477 477
 
478 478
         if (!$itemLastAttempt) {
479 479
             //Pas d'essai identifié
480
-            return;
480
+            return null;
481 481
         }
482 482
 
483 483
         // recherche de l'objectif qui contribue au rollup
@@ -528,13 +528,13 @@ class SeqNavRequest implements ContainerAwareInterface
528 528
 
529 529
     /**
530 530
      * Evalue, en utilisant les règles, l'impact du processus de rollup lié au objectifs satisfaits
531
-     * Peut modifier les informations des objectifs du item
531
+     * Peut modifier les informations des objectifs de l'item
532 532
      * en fonction des règles de rollup
533 533
      * Ref ADL: Objective Rollup Using Rules Process [RB.1.2 b]
534 534
      *
535 535
      * @param string $identifiedItemId
536 536
      */
537
-    protected function evaluateObjectiveRollupUsingRules($identifiedItemId)
537
+    protected function evaluateObjectiveRollupUsingRules($identifiedItemId): void
538 538
     {
539 539
         $em = $this->getDoctrine()->getManager();
540 540
 
@@ -611,14 +611,14 @@ class SeqNavRequest implements ContainerAwareInterface
611 611
     }
612 612
 
613 613
     /**
614
-     * Evalue, en utilisant les mesures, l'impact du processus de rollup lié à la progression du item
615
-     * Peut modifier les informations de l'essai du item
614
+     * Evalue, en utilisant les mesures, l'impact du processus de rollup lié à la progression de l'item
615
+     * Peut modifier les informations de l'essai de l'item
616 616
      * Ref ADL: Activity Progress Rollup Using Measure Process [RB.1.3 a]
617 617
      *
618 618
      * @param string $identifiedItemId
619 619
      * @return bool
620 620
      */
621
-    public function evaluateItemProgressRollupUsingMeasure($identifiedItemId)
621
+    public function evaluateItemProgressRollupUsingMeasure($identifiedItemId): bool
622 622
     {
623 623
         $em = $this->getDoctrine()->getManager();
624 624
         
@@ -653,13 +653,13 @@ class SeqNavRequest implements ContainerAwareInterface
653 653
     }
654 654
 
655 655
     /**
656
-     * Evalue, en utilisant les règles, l'impact du processus de rollup lié à la progression du item
657
-     * Peut modifier les informations de l'essai du item
656
+     * Evalue, en utilisant les règles, l'impact du processus de rollup lié à la progression de l'item
657
+     * Peut modifier les informations de l'essai de l'item
658 658
      * Ref ADL: Activity Progress Rollup Using Rules Process [RB.1.3 b]
659 659
      *
660 660
      * @param string $identifiedItemId
661 661
      */
662
-    protected function evaluateItemProgressRollupUsingRules($identifiedItemId)
662
+    protected function evaluateItemProgressRollupUsingRules($identifiedItemId): void
663 663
     {
664 664
         $em = $this->getDoctrine()->getManager();
665 665
 
@@ -728,7 +728,7 @@ class SeqNavRequest implements ContainerAwareInterface
728 728
      * @param array $rollupRules
729 729
      * @return bool
730 730
      */
731
-    protected function checkRollupRule($identifiedItemId, $rollupRules)
731
+    protected function checkRollupRule($identifiedItemId, $rollupRules): bool
732 732
     {
733 733
 
734 734
         // Vérifier que l'activité possède des règles à évalauer
@@ -797,7 +797,7 @@ class SeqNavRequest implements ContainerAwareInterface
797 797
      * @param string $attribut
798 798
      * @return bool
799 799
      */
800
-    protected function getSequencingControl($identifiedItemId, $attribut)
800
+    protected function getSequencingControl($identifiedItemId, $attribut): bool
801 801
     {
802 802
         $value = $this->domScorm2004->getSequencingAttribute('imsss:controlMode', $attribut, $identifiedItemId);
803 803
 
@@ -811,7 +811,7 @@ class SeqNavRequest implements ContainerAwareInterface
811 811
      * @param string $item
812 812
      * @return bool
813 813
      */
814
-    protected function checkItem($item)
814
+    protected function checkItem($item): bool
815 815
     {
816 816
         if ($this->checkSequencingRules($item, array(SCORM2004_SEQUENCING_PRE_DISABLED))) {
817 817
             return true;
@@ -828,7 +828,7 @@ class SeqNavRequest implements ContainerAwareInterface
828 828
      * @param string $action
829 829
      * @return bool
830 830
      */
831
-    public function checkItemForRollup($item, $action)
831
+    public function checkItemForRollup($item, $action): bool
832 832
     {
833 833
         $em = $this->getDoctrine()->getManager();
834 834
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -914,7 +914,7 @@ class SeqNavRequest implements ContainerAwareInterface
914 914
      * @param string[] $ruleActions
915 915
      * @return string
916 916
      */
917
-    public function checkSequencingRules($item, $ruleActions)
917
+    public function checkSequencingRules($item, $ruleActions): ?string
918 918
     {
919 919
         // Récupération des règles relative à l'action pour cet item
920 920
         $rules = $this->domScorm2004->getSequencingRules($item);
@@ -939,13 +939,13 @@ class SeqNavRequest implements ContainerAwareInterface
939 939
      *
940 940
      * @param string $item
941 941
      * @param array $rule règle de séquencage
942
-     * @return bool
942
+     * @return string
943 943
      */
944
-    protected function checkUniqueSequencingRule($item, $rule)
944
+    protected function checkUniqueSequencingRule($item, $rule): string
945 945
     {
946 946
         $ruleConditionsEvalutaions = [];
947 947
 
948
-        // On évalue chaque condition en se basant sur les informations de suivi du item
948
+        // On évalue chaque condition en se basant sur les informations de suivi de l'item
949 949
         foreach ($rule['conditions'] as $ruleCondition) {
950 950
             $ruleEvaluation = $this->evaluateSequencingCondition($item, $ruleCondition);
951 951
 
@@ -989,7 +989,7 @@ class SeqNavRequest implements ContainerAwareInterface
989 989
      * @param array $ruleCondition
990 990
      * @return string evaluation
991 991
      */
992
-    protected function evaluateSequencingCondition($item, $ruleCondition)
992
+    protected function evaluateSequencingCondition($item, $ruleCondition): string
993 993
     {
994 994
         $em = $this->getDoctrine()->getManager();
995 995
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -1130,7 +1130,7 @@ class SeqNavRequest implements ContainerAwareInterface
1130 1130
      * @param string[] $rollupConditions
1131 1131
      * @return string
1132 1132
      */
1133
-    public function evaluateRollupConditions($item, $conditionCombination, $rollupConditions)
1133
+    public function evaluateRollupConditions($item, $conditionCombination, $rollupConditions): string
1134 1134
     {
1135 1135
         $evaluatedConditions = [];
1136 1136
 
@@ -1175,7 +1175,7 @@ class SeqNavRequest implements ContainerAwareInterface
1175 1175
      *
1176 1176
      * @return string
1177 1177
      */
1178
-    protected function evaluateUniqueRollupCondition($item, $rollupCondition)
1178
+    protected function evaluateUniqueRollupCondition($item, $rollupCondition): string
1179 1179
     {
1180 1180
         $em = $this->getDoctrine()->getManager();
1181 1181
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -1288,7 +1288,7 @@ class SeqNavRequest implements ContainerAwareInterface
1288 1288
      * @param string $evaluation evaluation
1289 1289
      * @return string
1290 1290
      */
1291
-    protected function combineEvaluations($globalEvaluation, $conditionCombination, $evaluation)
1291
+    protected function combineEvaluations($globalEvaluation, $conditionCombination, $evaluation): string
1292 1292
     {
1293 1293
         if ($conditionCombination == SCORM2004_CONDITION_COMBINATION_ALL) {
1294 1294
             if ($globalEvaluation == SCORM2004_EVALUATION_FALSE || $evaluation == SCORM2004_EVALUATION_FALSE) {
@@ -1316,7 +1316,7 @@ class SeqNavRequest implements ContainerAwareInterface
1316 1316
      * @param string $item
1317 1317
      * @return bool
1318 1318
      */
1319
-    protected function checkLimitConditions($item)
1319
+    protected function checkLimitConditions($item): bool
1320 1320
     {
1321 1321
         $em = $this->getDoctrine()->getManager();
1322 1322
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -1419,7 +1419,7 @@ class SeqNavRequest implements ContainerAwareInterface
1419 1419
      * @param string $item
1420 1420
      * @return string[]
1421 1421
      */
1422
-    public function getAvailableChildren($item)
1422
+    public function getAvailableChildren($item): array
1423 1423
     {
1424 1424
         $em = $this->getDoctrine()->getManager();
1425 1425
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -1446,7 +1446,7 @@ class SeqNavRequest implements ContainerAwareInterface
1446 1446
      *
1447 1447
      * @return string[]
1448 1448
      */
1449
-    protected function getFlatAvailable()
1449
+    protected function getFlatAvailable(): array
1450 1450
     {
1451 1451
         $root = $this->scorm2004Track->getOrganizationId();
1452 1452
         
@@ -1464,7 +1464,7 @@ class SeqNavRequest implements ContainerAwareInterface
1464 1464
      * @param string $item
1465 1465
      * @return string[]
1466 1466
      */
1467
-    private function walkRecursive2004($item)
1467
+    private function walkRecursive2004($item): array
1468 1468
     {
1469 1469
         $children = $this->getAvailableChildren($item);
1470 1470
         $flatTree2004 = array(
@@ -1485,7 +1485,7 @@ class SeqNavRequest implements ContainerAwareInterface
1485 1485
      *
1486 1486
      * @param string $identifiedItem
1487 1487
      */
1488
-    public function defineAvailableChildren($identifiedItem, $isInit = false)
1488
+    public function defineAvailableChildren($identifiedItem, $isInit = false): void
1489 1489
     {
1490 1490
         // Sélection des enfants
1491 1491
         $selectionTiming = $this->domScorm2004->getSequencingAttribute('imsss:randomizationControls', 'selectionTiming', $identifiedItem);
@@ -1513,7 +1513,7 @@ class SeqNavRequest implements ContainerAwareInterface
1513 1513
      * @param string $identifiedItem
1514 1514
      * @param int $selectionCount
1515 1515
      */
1516
-    protected function randomlySelectChildren($identifiedItem, $selectionCount)
1516
+    protected function randomlySelectChildren($identifiedItem, $selectionCount): void
1517 1517
     {
1518 1518
         $em = $this->getDoctrine()->getManager();
1519 1519
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -1571,7 +1571,7 @@ class SeqNavRequest implements ContainerAwareInterface
1571 1571
      *
1572 1572
      * @param string $identifiedItem
1573 1573
      */
1574
-    protected function randomlyOrderChildren($identifiedItem)
1574
+    protected function randomlyOrderChildren($identifiedItem): void
1575 1575
     {
1576 1576
         $em = $this->getDoctrine()->getManager();
1577 1577
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -1600,7 +1600,7 @@ class SeqNavRequest implements ContainerAwareInterface
1600 1600
      * Retourne la branche partant d'un item
1601 1601
      * cad lui et ses enfants directs
1602 1602
      */
1603
-    protected function getBranch(string $item)
1603
+    protected function getBranch(string $item): array
1604 1604
     {
1605 1605
         $branch = array($item => $item);
1606 1606
         
@@ -1621,7 +1621,7 @@ class SeqNavRequest implements ContainerAwareInterface
1621 1621
      * @param string $value
1622 1622
      * @return bool|null
1623 1623
      */
1624
-    protected function convertStringToBoolean(string $value)
1624
+    protected function convertStringToBoolean(string $value): ?bool
1625 1625
     {
1626 1626
         if ($value === 'true') {
1627 1627
             return true;
@@ -1639,7 +1639,7 @@ class SeqNavRequest implements ContainerAwareInterface
1639 1639
      *
1640 1640
      * @return bool
1641 1641
      */
1642
-    public function getValidationState()
1642
+    public function getValidationState(): bool
1643 1643
     {
1644 1644
         return $this->validationState;
1645 1645
     }
@@ -1649,7 +1649,7 @@ class SeqNavRequest implements ContainerAwareInterface
1649 1649
      *
1650 1650
      * @return string
1651 1651
      */
1652
-    public function getException()
1652
+    public function getException(): string
1653 1653
     {
1654 1654
         return $this->exception;
1655 1655
     }
@@ -1657,9 +1657,9 @@ class SeqNavRequest implements ContainerAwareInterface
1657 1657
     /**
1658 1658
      * Retourne l'activité ciblée par la requete
1659 1659
      *
1660
-     * @return int
1660
+     * @return string
1661 1661
      */
1662
-    public function getTargetItem()
1662
+    public function getTargetItem(): string
1663 1663
     {
1664 1664
         return $this->targetItem;
1665 1665
     }
@@ -1667,9 +1667,9 @@ class SeqNavRequest implements ContainerAwareInterface
1667 1667
     /**
1668 1668
      * Retourne l'identifiant du track2004
1669 1669
      *
1670
-     * @return int
1670
+     * @return string
1671 1671
      */
1672
-    public function getIdTrack2004()
1672
+    public function getIdTrack2004(): string
1673 1673
     {
1674 1674
         return $this->scorm2004Track;
1675 1675
     }
@@ -1696,7 +1696,7 @@ class SeqNavRequest implements ContainerAwareInterface
1696 1696
      * @param string $registrationKey
1697 1697
      * @return Registration
1698 1698
      */
1699
-    protected function requireRegistration(string $registrationKey)
1699
+    protected function requireRegistration(string $registrationKey): ?Registration
1700 1700
     {
1701 1701
         $em = $this->getDoctrine()->getManager();
1702 1702
         $repository = $em->getRepository(Registration::class);

+ 84
- 98
LearningModels/SCORM2004/SequencingNavigation/SequencingRequest.php View File

@@ -105,7 +105,7 @@ class SequencingRequest extends SeqNavRequest
105 105
      *
106 106
      * Ref ADL: Start Sequencing Request Process [SB.2.5]
107 107
      */
108
-    protected function processStart()
108
+    protected function processStart(): void
109 109
     {
110 110
         // Vérifier que la session d'activité n'aie pas déjà été initiée
111 111
         if ($this->currentItem) {
@@ -139,7 +139,7 @@ class SequencingRequest extends SeqNavRequest
139 139
      *
140 140
      * Ref ADL:Resume All Sequencing Request Process [SB.2.6]
141 141
      */
142
-    protected function processResumeAll()
142
+    protected function processResumeAll(): void
143 143
     {
144 144
         // Vérifier que la session d'activité n'aie pas déjà été initiée
145 145
         if ($this->currentItem) {
@@ -163,7 +163,7 @@ class SequencingRequest extends SeqNavRequest
163 163
      *
164 164
      * Ref ADL: Continue Sequencing Request Process [SB.2.7]
165 165
      */
166
-    protected function processContinue()
166
+    protected function processContinue(): void
167 167
     {
168 168
         // Vérifier que la session d'activité est déjà initiée
169 169
         if (!$this->currentItem) {
@@ -210,7 +210,7 @@ class SequencingRequest extends SeqNavRequest
210 210
      *
211 211
      * Ref ADL: Previous Sequencing Request Process [SB.2.8]
212 212
      */
213
-    protected function processPrevious()
213
+    protected function processPrevious(): void
214 214
     {
215 215
         // Vérifier que la session d'activité a déjà été initiée
216 216
         if (!$this->currentItem) {
@@ -246,7 +246,7 @@ class SequencingRequest extends SeqNavRequest
246 246
      * @param bool $isForValidation
247 247
      *          défini si la méthode est utilisée pour validation ou pour le processus de séquencage
248 248
      */
249
-    protected function processChoice()
249
+    protected function processChoice(): void
250 250
     {
251 251
         $em = $this->getDoctrine()->getManager();
252 252
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -524,7 +524,7 @@ class SequencingRequest extends SeqNavRequest
524 524
      *
525 525
      * Ref ADL: Retry Sequencing Request Process [SB.2.10]
526 526
      */
527
-    protected function processRetry()
527
+    protected function processRetry(): void
528 528
     {
529 529
         $em = $this->getDoctrine()->getManager();
530 530
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -584,7 +584,7 @@ class SequencingRequest extends SeqNavRequest
584 584
      *
585 585
      * Ref ADL:Exit Sequencing Request Process [SB.2.11]
586 586
      */
587
-    protected function processExit()
587
+    protected function processExit(): void
588 588
     {
589 589
         $em = $this->getDoctrine()->getManager();
590 590
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -620,7 +620,7 @@ class SequencingRequest extends SeqNavRequest
620 620
      *
621 621
      * Ref ADL: Jump Sequencing Request Process [SB.2.13]
622 622
      */
623
-    protected function processJump()
623
+    protected function processJump(): void
624 624
     {
625 625
         // Vérifier que la session d'activité aie bien été initiée
626 626
         if (!$this->currentItem) {
@@ -640,10 +640,11 @@ class SequencingRequest extends SeqNavRequest
640 640
      * @param string $traversalDirection sens de circulation dans l'arbre
641 641
      * @param string $previousDirection précédent sens de circulation
642 642
      * @param bool $considerChildren
643
-     * @return array
643
+     * @return array retourne le prochain item valide dans le sens de traversée de l'arbre défini,
644
+     * ainsi que les informations necessaires à son traitement
644 645
      *
645 646
      */
646
-    protected function getNextItemFromTreeTraversalFlow($identifiedItem, $traversalDirection, $previousDirection, $considerChildren)
647
+    protected function getNextItemFromTreeTraversalFlow($identifiedItem, $traversalDirection, $previousDirection, $considerChildren): array
647 648
     {
648 649
         $em = $this->getDoctrine()->getManager();
649 650
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -679,16 +680,21 @@ class SequencingRequest extends SeqNavRequest
679 680
             $em->flush();
680 681
         }
681 682
 
683
+        $response = array(
684
+            'item' => null,
685
+            'traversalDirection' => null,
686
+            'endSequencingSession' => null,
687
+            'exception' => null);
688
+
682 689
         if ($traversalDirection == SCORM2004_TRAVERSE_FORWARD) {
683 690
             // Sortir de l'arbre entraine la fin de la session
684 691
             if ($identifiedItem == $this->flatTree[count($this->flatTree) - 1] || (!$parent && !$considerChildren)) {
685 692
                 $root = $this->scorm2004Track->getOrganizationId();
686 693
                 $this->terminateDescendentAttempts($root);
687
-                return array(
688
-                        'item' => null,
689
-                        'traversalDirection' => $traversalDirection,
690
-                        'endSequencingSession' => true,
691
-                        'exception' => null);
694
+                        
695
+                $response['traversalDirection'] = $traversalDirection;
696
+                $response['endSequencingSession'] = true;
697
+                return $response;
692 698
             }
693 699
 
694 700
             // Si l'item n'a pas d'enfant, on passe au prochain item dans une direction avant
@@ -699,27 +705,20 @@ class SequencingRequest extends SeqNavRequest
699 705
                 if ($identifiedIndex === count($availableSiblings) - 1) {
700 706
                     return $this->getNextItemFromTreeTraversalFlow($parent, SCORM2004_TRAVERSE_FORWARD, SCORM2004_TRAVERSE_UNKNOWN, false);
701 707
                 } else {
702
-                    return array(
703
-                            'item' => $availableSiblings[$identifiedIndex + 1],
704
-                            'traversalDirection' => $traversalDirection,
705
-                            'endSequencingSession' => null,
706
-                            'exception' => null);
708
+                    $response['item'] = $availableSiblings[$identifiedIndex + 1];
709
+                    $response['traversalDirection'] = $traversalDirection;
710
+                    return $response;
707 711
                 }
708 712
             } else {
709 713
                 // Si l'item a des enfants disponibles, on propose la livraison du premier
710 714
                 if (!empty($availableChildren)) {
711 715
                     $availableChildren = array_values($availableChildren);
712
-                    return array(
713
-                            'item' => $availableChildren[0],
714
-                            'traversalDirection' => $traversalDirection,
715
-                            'endSequencingSession' => null,
716
-                            'exception' => null);
716
+                    $response['item'] = $availableChildren[0];
717
+                    $response['traversalDirection'] = $traversalDirection;
718
+                    return $response;
717 719
                 } else {
718
-                    return array(
719
-                            'item' => null,
720
-                            'traversalDirection' => null,
721
-                            'endSequencingSession' => null,
722
-                            'exception' => _AGO_SCORM_EXCEPTION_SB_2_1_2);
720
+                    $response['exception'] = _AGO_SCORM_EXCEPTION_SB_2_1_2;
721
+                    return $response;
723 722
                 }
724 723
             }
725 724
         }
@@ -727,21 +726,17 @@ class SequencingRequest extends SeqNavRequest
727 726
         if ($traversalDirection == SCORM2004_TRAVERSE_BACKWARD) {
728 727
             // On ne peut pas remonter plus loin que la racine
729 728
             if (!$parent) {
730
-                return array(
731
-                        'item' => null,
732
-                        'traversalDirection' => null,
733
-                        'endSequencingSession' => true,
734
-                        'exception' => _AGO_SCORM_EXCEPTION_SB_2_1_3);
729
+                $response['endSequencingSession'] = true;
730
+                $response['exception'] = _AGO_SCORM_EXCEPTION_SB_2_1_3;
731
+                return $response;
735 732
             }
736 733
 
737 734
             if (empty($children) || !$considerChildren) {
738 735
                 // Arret de la procédure de séquencage si la direction n'est pas inversée et que l'on se trouve sur un item qui doit aller vers l'avant
739 736
                 if (!$reversedDirection && $parent && $this->getSequencingControl($parent, 'forwardOnly')) {
740
-                    return array(
741
-                            'item' => null,
742
-                            'traversalDirection' => null,
743
-                            'endSequencingSession' => true,
744
-                            'exception' => _AGO_SCORM_EXCEPTION_SB_2_1_4);
737
+                    $response['endSequencingSession'] = true;
738
+                    $response['exception'] = _AGO_SCORM_EXCEPTION_SB_2_1_4;
739
+                    return $response;
745 740
                 }
746 741
 
747 742
                 // Si l'item est le premier enfant des items disponibles, on remonte à son parent et on recherche recursivement un item
@@ -749,17 +744,13 @@ class SequencingRequest extends SeqNavRequest
749 744
                 if ($identifiedIndex === 0) {
750 745
                     return $this->getNextItemFromTreeTraversalFlow($parent, SCORM2004_TRAVERSE_BACKWARD, SCORM2004_TRAVERSE_UNKNOWN, false);
751 746
                 } elseif ($identifiedIndex === false) {
752
-                    return array(
753
-                            'item' => null,
754
-                            'traversalDirection' => null,
755
-                            'endSequencingSession' => true,
756
-                            'exception' => _AGO_SCORM_EXCEPTION_SB_2_1_4);
747
+                    $response['endSequencingSession'] = true;
748
+                    $response['exception'] = _AGO_SCORM_EXCEPTION_SB_2_1_4;
749
+                    return $response;
757 750
                 } else {
758
-                    return array(
759
-                            'item' => $availableSiblings[$identifiedIndex - 1],
760
-                            'traversalDirection' => $traversalDirection,
761
-                            'endSequencingSession' => null,
762
-                            'exception' => null);
751
+                    $response['item'] = $availableSiblings[$identifiedIndex - 1];
752
+                    $response['traversalDirection'] = $traversalDirection;
753
+                    return $response;
763 754
                 }
764 755
             } else {
765 756
                 // dans le cas d'un cluster, vérifier qu'il y aie au moins un enfant disponible
@@ -770,24 +761,17 @@ class SequencingRequest extends SeqNavRequest
770 761
                     // on prpopose le premier enfant disponible
771 762
                     // sinon le dernier
772 763
                     if ($this->getSequencingControl($identifiedItem, 'forwardOnly')) {
773
-                        return array(
774
-                                'item' => $availableChildren[0],
775
-                                'traversalDirection' => true,
776
-                                'endSequencingSession' => null,
777
-                                'exception' => null);
764
+                        $response['item'] = $availableChildren[0];
765
+                        $response['traversalDirection'] = SCORM2004_TRAVERSE_FORWARD;
766
+                        return $response;
778 767
                     } else {
779
-                        return array(
780
-                                'item' => $availableChildren[count($availableChildren) - 1],
781
-                                'traversalDirection' => false,
782
-                                'endSequencingSession' => null,
783
-                                'exception' => null);
768
+                        $response['item'] = $availableChildren[count($availableChildren) - 1];
769
+                        $response['traversalDirection'] = SCORM2004_TRAVERSE_BACKWARD;
770
+                        return $response;
784 771
                     }
785 772
                 } else {
786
-                    return array(
787
-                            'item' => null,
788
-                            'traversalDirection' => null,
789
-                            'endSequencingSession' => null,
790
-                            'exception' => _AGO_SCORM_EXCEPTION_SB_2_1_2);
773
+                    $response['exception'] = _AGO_SCORM_EXCEPTION_SB_2_1_2;
774
+                    return $response;
791 775
                 }
792 776
             }
793 777
         }
@@ -802,17 +786,22 @@ class SequencingRequest extends SeqNavRequest
802 786
      * @param string $previousDirection précédent sens de circulation
803 787
      * @return mixed[]
804 788
      */
805
-    protected function getNextDeliverableItemFromFlow($identifiedItem, $traversalDirection, $previousDirection)
789
+    protected function getNextDeliverableItemFromFlow($identifiedItem, $traversalDirection, $previousDirection): array
806 790
     {
807 791
         $parent = $this->domScorm2004->getParent($identifiedItem);
808 792
 
793
+        $response = array(
794
+            'item' => null,
795
+            'deliverable' => null,
796
+            'endSequencingSession' => null,
797
+            'exception' => null);
798
+
809 799
         // Si on ne peut pas circuler dans l'arbre, on lève une exception
810 800
         if ($parent && !$this->getSequencingControl($parent, 'flow')) {
811
-            return array(
812
-                    'item' => $identifiedItem,
813
-                    'deliverable' => false,
814
-                    'endSequencingSession' => null,
815
-                    'exception' => _AGO_SCORM_EXCEPTION_SB_2_2_1);
801
+            $response['item'] = $identifiedItem;
802
+            $response['deliverable'] = false;
803
+            $response['exception'] = _AGO_SCORM_EXCEPTION_SB_2_2_1;
804
+            return $response;
816 805
         }
817 806
 
818 807
         // Si les règle de séquencage du 'skip' sont validées pour l'item, on essaye d'atteindre le prochain item
@@ -821,11 +810,11 @@ class SequencingRequest extends SeqNavRequest
821 810
 
822 811
             // Si le traversé de l'arbre n'identifie pas de item, on retourne une exception et on stop le séquencage
823 812
             if (empty($treeAnswer['item'])) {
824
-                return array(
825
-                        'item' => $identifiedItem,
826
-                        'deliverable' => false,
827
-                        'endSequencingSession' => $treeAnswer['endSequencingSession'],
828
-                        'exception' => $treeAnswer['exception']);
813
+                $response['item'] = $identifiedItem;
814
+                $response['deliverable'] = false;
815
+                $response['endSequencingSession'] = $treeAnswer['endSequencingSession'];
816
+                $response['exception'] = $treeAnswer['exception'];
817
+                return $response;
829 818
             } else {
830 819
                 // On établit le prochain item en fonction des directions identifiée et passée.
831 820
                 if ($previousDirection == SCORM2004_TRAVERSE_BACKWARD && $treeAnswer['traversalDirection'] == SCORM2004_TRAVERSE_BACKWARD) {
@@ -838,11 +827,10 @@ class SequencingRequest extends SeqNavRequest
838 827
 
839 828
         // Controle de validité du item
840 829
         if ($this->checkItem($identifiedItem)) {
841
-            return array(
842
-                    'item' => $identifiedItem,
843
-                    'deliverable' => false,
844
-                    'endSequencingSession' => null,
845
-                    'exception' => _AGO_SCORM_EXCEPTION_SB_2_2_2);
830
+            $response['item'] = $identifiedItem;
831
+            $response['deliverable'] = false;
832
+            $response['exception'] = _AGO_SCORM_EXCEPTION_SB_2_2_2;
833
+            return $response;
846 834
         }
847 835
 
848 836
         // On ne peut proposer à la livraison qu'un item terminal (sans enfants)
@@ -852,11 +840,11 @@ class SequencingRequest extends SeqNavRequest
852 840
             $answer = $this->getNextItemFromTreeTraversalFlow($identifiedItem, $traversalDirection, SCORM2004_TRAVERSE_UNKNOWN, true);
853 841
 
854 842
             if (!$answer['item']) {
855
-                return array(
856
-                        'item' => $identifiedItem,
857
-                        'deliverable' => false,
858
-                        'endSequencingSession' => $answer['endSequencingSession'],
859
-                        'exception' => $answer['exception']);
843
+                $response['item'] = $identifiedItem;
844
+                $response['deliverable'] = false;
845
+                $response['endSequencingSession'] = $answer['endSequencingSession'];
846
+                $response['exception'] = $answer['exception'];
847
+                return $response;
860 848
             } else {
861 849
                 if ($traversalDirection == SCORM2004_TRAVERSE_BACKWARD && $answer['traversalDirection'] == SCORM2004_TRAVERSE_FORWARD) {
862 850
                     return $this->getNextDeliverableItemFromFlow($answer['item'], SCORM2004_TRAVERSE_FORWARD, SCORM2004_TRAVERSE_BACKWARD);
@@ -866,11 +854,9 @@ class SequencingRequest extends SeqNavRequest
866 854
             }
867 855
         }
868 856
 
869
-        return array(
870
-                'item' => $identifiedItem,
871
-                'deliverable' => true,
872
-                'endSequencingSession' => null,
873
-                'exception' => null);
857
+        $response['item'] = $identifiedItem;
858
+        $response['deliverable'] = true;
859
+        return $response;
874 860
     }
875 861
 
876 862
     /**
@@ -882,7 +868,7 @@ class SequencingRequest extends SeqNavRequest
882 868
      * @param bool $considerChildren
883 869
      * @return mixed
884 870
      */
885
-    protected function getItemFromTreeflow($identifiedItem, $traversalDirection, $considerChildren)
871
+    protected function getItemFromTreeflow($identifiedItem, $traversalDirection, $considerChildren): array
886 872
     {
887 873
         // Progression au prochain item dans l'arbre dans le sens défini
888 874
         $answer = $this->getNextItemFromTreeTraversalFlow($identifiedItem, $traversalDirection, SCORM2004_TRAVERSE_UNKNOWN, $considerChildren);
@@ -903,7 +889,7 @@ class SequencingRequest extends SeqNavRequest
903 889
      * @param string $traversalDirection sens de circulation dans l'arbre
904 890
      * @return string
905 891
      */
906
-    protected function getChoiceItemException($identifiedItem, $traversalDirection)
892
+    protected function getChoiceItemException($identifiedItem, $traversalDirection): mixed
907 893
     {
908 894
         // Dans le cas d'un déplacement vers l'avant
909 895
         // On vérifie que les règle de séquencage du item ne valide pas l'action 'stop'
@@ -941,7 +927,7 @@ class SequencingRequest extends SeqNavRequest
941 927
      * @param string $identifiedItem
942 928
      * @param string $traversalDirection sens de circulation dans l'arbre
943 929
      */
944
-    protected function getItemFromChoiceFlow($identifiedItem, $traversalDirection)
930
+    protected function getItemFromChoiceFlow($identifiedItem, $traversalDirection): ?string
945 931
     {
946 932
         // recherche du prochain item disponible dans la direction définie
947 933
         $resultItem = $this->getNextItemFromChoiceFlow($identifiedItem, $traversalDirection);
@@ -961,7 +947,7 @@ class SequencingRequest extends SeqNavRequest
961 947
      * @param string $traversalDirection sens de circulation dans l'arbre
962 948
      * @return string
963 949
      */
964
-    protected function getNextItemFromChoiceFlow($identifiedItem, $traversalDirection)
950
+    protected function getNextItemFromChoiceFlow($identifiedItem, $traversalDirection): ?string
965 951
     {
966 952
         $parent = $this->domScorm2004->getParent($identifiedItem);
967 953
 
@@ -1009,7 +995,7 @@ class SequencingRequest extends SeqNavRequest
1009 995
      *
1010 996
      * @return bool
1011 997
      */
1012
-    protected function testChoiceValidity($currentItem, $targetItem)
998
+    protected function testChoiceValidity($currentItem, $targetItem): bool
1013 999
     {
1014 1000
         // Si le noeud cible n'existe pas
1015 1001
         if (!$targetItem) {
@@ -1058,7 +1044,7 @@ class SequencingRequest extends SeqNavRequest
1058 1044
      *
1059 1045
      * @return string
1060 1046
      */
1061
-    public function getDeliveryItem()
1047
+    public function getDeliveryItem(): ?string
1062 1048
     {
1063 1049
         return $this->deliveryRequest;
1064 1050
     }
@@ -1068,7 +1054,7 @@ class SequencingRequest extends SeqNavRequest
1068 1054
      *
1069 1055
      * @return bool
1070 1056
      */
1071
-    public function getEndSequencingSession()
1057
+    public function getEndSequencingSession(): ?string
1072 1058
     {
1073 1059
         return $this->endSequencingSession;
1074 1060
     }

+ 10
- 10
LearningModels/SCORM2004/SequencingNavigation/TerminationRequest.php View File

@@ -48,7 +48,7 @@ class TerminationRequest extends SeqNavRequest
48 48
      *
49 49
      * Ref ADL: Termination Request Process [TB.2.3]
50 50
      */
51
-    protected function globalProcess()
51
+    protected function globalProcess(): void
52 52
     {
53 53
         $em = $this->getDoctrine()->getManager();
54 54
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -100,7 +100,7 @@ class TerminationRequest extends SeqNavRequest
100 100
      *
101 101
      * Ref ADL: Termination Request Process [TB.2.3]
102 102
      */
103
-    protected function processExit()
103
+    protected function processExit(): void
104 104
     {
105 105
         // Terminer l'essai en cours de l'item courant
106 106
         $this->endAttempt($this->currentItem);
@@ -161,7 +161,7 @@ class TerminationRequest extends SeqNavRequest
161 161
      *
162 162
      * Ref ADL: Termination Request Process [TB.2.3]
163 163
      */
164
-    protected function processExitAll()
164
+    protected function processExitAll(): void
165 165
     {
166 166
         $em = $this->getDoctrine()->getManager();
167 167
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -191,7 +191,7 @@ class TerminationRequest extends SeqNavRequest
191 191
      *
192 192
      * Ref ADL: Termination Request Process [TB.2.3]
193 193
      */
194
-    protected function processSuspendAll()
194
+    protected function processSuspendAll(): void
195 195
     {
196 196
         $em = $this->getDoctrine()->getManager();
197 197
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -246,7 +246,7 @@ class TerminationRequest extends SeqNavRequest
246 246
      *
247 247
      * Ref ADL: Termination Request Process [TB.2.3]
248 248
      */
249
-    protected function processAbandon()
249
+    protected function processAbandon(): void
250 250
     {
251 251
         $em = $this->getDoctrine()->getManager();
252 252
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -265,7 +265,7 @@ class TerminationRequest extends SeqNavRequest
265 265
      *
266 266
      * Ref ADL: Termination Request Process [TB.2.3]
267 267
      */
268
-    protected function processAbandonAll()
268
+    protected function processAbandonAll(): void
269 269
     {
270 270
         $em = $this->getDoctrine()->getManager();
271 271
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -300,7 +300,7 @@ class TerminationRequest extends SeqNavRequest
300 300
      *
301 301
      * Ref ADL: Sequencing Exit Action Rules Subprocess [TB.2.1]
302 302
      */
303
-    protected function evaluateExitActionRules()
303
+    protected function evaluateExitActionRules(): void
304 304
     {
305 305
         // On forme la liste des items allant de la racine au parent du item courant
306 306
         $treeRoot = $this->scorm2004Track->getOrganizationId();
@@ -340,7 +340,7 @@ class TerminationRequest extends SeqNavRequest
340 340
      *
341 341
      * @return array tableau associatif comprenant des informations sur TerminationRequest et sur SequencingRequest
342 342
      */
343
-    protected function evaluatePostConditionRules()
343
+    protected function evaluatePostConditionRules(): ?array
344 344
     {
345 345
         $em = $this->getDoctrine()->getManager();
346 346
         $scorm2004MapTrackItemRepository = $em->getRepository(Scorm2004MapTrackItem::class);
@@ -348,7 +348,7 @@ class TerminationRequest extends SeqNavRequest
348 348
         // on ne peut pas appliquer de règle de post condition sur un item suspendu
349 349
         $mapTrackCurrentItem = $scorm2004MapTrackItemRepository->findOneBy(array('item_identifier' => $this->currentItem, 'scorm2004Track' => $this->scorm2004Track));
350 350
         if ($mapTrackCurrentItem->getIsSuspended()) {
351
-            return;
351
+            return null;
352 352
         }
353 353
 
354 354
         // on vérifie les règles du item courrant pour l'ensemble des actions de sequencage post
@@ -413,7 +413,7 @@ class TerminationRequest extends SeqNavRequest
413 413
      *
414 414
      * @return string
415 415
      */
416
-    public function getSequencingRequest()
416
+    public function getSequencingRequest(): ?string
417 417
     {
418 418
         return $this->sequencingRequest;
419 419
     }

Loading…
Cancel
Save