Browse Source

Merge branch 'hotfix' of https://git.logipro.com/raphael/Phoenix into hotfix

raphael 3 years ago
parent
commit
7d82013274
1 changed files with 143 additions and 138 deletions
  1. 143
    138
      src/Phoenix/LMS/LearnerPath/LearnerSequence.php

+ 143
- 138
src/Phoenix/LMS/LearnerPath/LearnerSequence.php View File

@@ -31,7 +31,7 @@ class LearnerSequence
31 31
 	 *
32 32
 	 * @var \SplObjectStorage
33 33
 	 */
34
-    protected $tracks;
34
+	protected $tracks;
35 35
 
36 36
 	/**
37 37
 	 *
@@ -41,7 +41,7 @@ class LearnerSequence
41 41
 	public function __construct(Person $learner, Sequence $sequence)
42 42
 	{
43 43
 		$this->learner = $learner;
44
-        $this->sequence = $sequence;
44
+		$this->sequence = $sequence;
45 45
 
46 46
 		$this->tracks = new \SplObjectStorage();
47 47
 	}
@@ -236,16 +236,16 @@ class LearnerSequence
236 236
 
237 237
 	/**
238 238
 	 * Retourne le score moyen d'un apprenant sur la séquence
239
-     *
240
-     * !! WARNING !!
241
-     * Le service est injecté dans la méthode directement pour une raison de temps
242
-     * Cette solution n'est que temporaire
243
-     * Un refactoring est à prévoir avec principalement
244
-     * le retrait de buildLearnerPath dans l'entity Session
245
-     * !! WARNING !!
246
-     *
247
-     * @param ScormEngine $scormEngine
248
-     * @return float|null
239
+	 *
240
+	 * !! WARNING !!
241
+	 * Le service est injecté dans la méthode directement pour une raison de temps
242
+	 * Cette solution n'est que temporaire
243
+	 * Un refactoring est à prévoir avec principalement
244
+	 * le retrait de buildLearnerPath dans l'entity Session
245
+	 * !! WARNING !!
246
+	 *
247
+	 * @param ScormEngine $scormEngine
248
+	 * @return float|null
249 249
 	 */
250 250
 	public function getAverageScore(ScormEngine $scormEngine)
251 251
 	{
@@ -254,9 +254,8 @@ class LearnerSequence
254 254
 		$scoreNum = 0;
255 255
 
256 256
 		$sequenceItems = $this->sequence->getSequenceItems();
257
-		
258
-		foreach ($sequenceItems as $item)
259
-		{
257
+
258
+		foreach ($sequenceItems as $item) {
260 259
 			$itemScore = $this->getItemAverageScore($item, $scormEngine);
261 260
 
262 261
 			if (!is_null($itemScore)) {
@@ -276,17 +275,17 @@ class LearnerSequence
276 275
 	/**
277 276
 	 * Retourne le score moyen d'un séquenceItem de type SCORM 12 si il est complété
278 277
 	 *
279
-     * !! WARNING !!
280
-     * Le service est injecté dans la méthode directement pour une raison de temps
281
-     * Cette solution n'est que temporaire
282
-     * Un refactoring est à prévoir avec principalement
283
-     * le retrait de buildLearnerPath dans l'entity Session
284
-     * !! WARNING !!
285
-     *
286
-     * @param SequenceItem $item
287
-     * @param ScormEngine $scormEngine
288
-     *
289
-     * @return float|null
278
+	 * !! WARNING !!
279
+	 * Le service est injecté dans la méthode directement pour une raison de temps
280
+	 * Cette solution n'est que temporaire
281
+	 * Un refactoring est à prévoir avec principalement
282
+	 * le retrait de buildLearnerPath dans l'entity Session
283
+	 * !! WARNING !!
284
+	 *
285
+	 * @param SequenceItem $item
286
+	 * @param ScormEngine $scormEngine
287
+	 *
288
+	 * @return float|null
290 289
 	 */
291 290
 	public function getItemAverageScore(SequenceItem $item, ScormEngine $scormEngine)
292 291
 	{
@@ -294,53 +293,67 @@ class LearnerSequence
294 293
 
295 294
 		$sequenceItems = $this->sequence->getSequenceItems();
296 295
 
297
-		if ($sequenceItems->contains($item))
298
-		{
299
-			if ($item instanceof ActivityPackage)
300
-			{		
301
-                $track = $this->retrieveTrack($item);
302
-                
303
-                if ($track) {
304
-                    // On ne retourne le score moyen que si l'item est complété
305
-                    if ($track->getCompletion() == 100) {
306
-                        if (AbstractPackageFile::TYPE_SCORM1_2 == $item->getPackageType()) {
307
-                            $scoreSum = 0;
308
-                            $scoreNum = 0;
309
-                        
310
-                            $scorm12Tracks = $track->getScorm12Tracks();
311
-
312
-                            foreach ($scorm12Tracks as $scorm12Track) {
313
-                                $scoreMax = $scorm12Track->getScoreMax();
314
-                                // Si pas de score max, pas de score valide
315
-                                if ($scoreMax > 0) {
316
-                                    $score = $scorm12Track->getScore();
317
-                                    $score = $score * 100 / $scoreMax;
318
-                                    $score = max(min($score, 100), 0);
319
-
320
-                                    $scoreNum ++;
321
-                                    $scoreSum += $score;
322
-                                }
323
-                            }
324
-
325
-                            if ($scoreNum > 0) {
326
-                                $averageScore = $scoreSum / $scoreNum;
327
-                                $averageScore = round($averageScore, 2);
328
-                            }
329
-                        }
330
-
331
-                        if (AbstractPackageFile::TYPE_SCORM2004 == $item->getPackageType()) {
332
-                            // Récupération de la clef de l'inscription
333
-                            $phoenixLearner = $track->getLearner();
334
-                            $learnerKey = $phoenixLearner->getPersonId();
335
-                            $sequenceItem = $track->getSequenceItem();
336
-                            $courseKey = $sequenceItem->getSequenceItemId();
337
-                            $registrationKey = $courseKey . '|' . $learnerKey;
338
-        
339
-                            // Récupération de la complétion
340
-                            $averageScore = $scormEngine->getAverageScore($registrationKey);
341
-                        }
342
-                    }
343
-                }
296
+
297
+		if ($sequenceItems->contains($item)) {
298
+			if ($item instanceof ActivityPackage) {
299
+				$track = $this->retrieveTrack($item);
300
+
301
+				if ($track) {
302
+					// On ne retourne le score moyen que si l'item est complété
303
+					if ($track->getCompletion() == 100) {
304
+						if (AbstractPackageFile::TYPE_SCORM1_2 == $item->getPackageType()) {
305
+							$scoreSum = 0;
306
+							$scoreNum = 0;
307
+
308
+							$scorm12Tracks = $track->getScorm12Tracks();
309
+
310
+							foreach ($scorm12Tracks as $scorm12Track) {
311
+								$itemInteractions = $scorm12Track->getInteractions();
312
+
313
+								if (!$itemInteractions->isEmpty()) {
314
+									// Test pour savoir si le questionnaire est composé seulement de question neutre ou non
315
+									$trackIsNeutral = true;
316
+									foreach ($itemInteractions as $interaction) {
317
+										if ($interaction->getResult() != "neutral") {
318
+											$trackIsNeutral = false;
319
+											break;
320
+										}
321
+									}
322
+								}
323
+
324
+								if ($trackIsNeutral == false) {
325
+									$scoreMax = $scorm12Track->getScoreMax();
326
+									// Si pas de score max, pas de score valide
327
+									if ($scoreMax > 0) {
328
+										$score = $scorm12Track->getScore();
329
+										$score = $score * 100 / $scoreMax;
330
+										$score = max(min($score, 100), 0);
331
+
332
+										$scoreNum++;
333
+										$scoreSum += $score;
334
+									}
335
+								}
336
+							}
337
+
338
+							if ($scoreNum > 0) {
339
+								$averageScore = $scoreSum / $scoreNum;
340
+								$averageScore = round($averageScore, 2);
341
+							}
342
+						}
343
+
344
+						if (AbstractPackageFile::TYPE_SCORM2004 == $item->getPackageType()) {
345
+							// Récupération de la clef de l'inscription
346
+							$phoenixLearner = $track->getLearner();
347
+							$learnerKey = $phoenixLearner->getPersonId();
348
+							$sequenceItem = $track->getSequenceItem();
349
+							$courseKey = $sequenceItem->getSequenceItemId();
350
+							$registrationKey = $courseKey . '|' . $learnerKey;
351
+
352
+							// Récupération de la complétion
353
+							$averageScore = $scormEngine->getAverageScore($registrationKey);
354
+						}
355
+					}
356
+				}
344 357
 			}
345 358
 		}
346 359
 
@@ -349,18 +362,18 @@ class LearnerSequence
349 362
 
350 363
 	/**
351 364
 	 * Retourne un tableau contenant les quiz et leurs interactions pour une activité
352
-     *
353
-     * !! WARNING !!
354
-     * Le service est injecté dans la méthode directement pour une raison de temps
355
-     * Cette solution n'est que temporaire
356
-     * Un refactoring est à prévoir avec principalement
357
-     * le retrait de buildLearnerPath dans l'entity Session
358
-     * !! WARNING !!
359
-     * 
360
-     * @param SequenceItem $item
361
-     * @param ScormEngine $scormEngine
362
-     * 
363
-     * @return array|null
365
+	 *
366
+	 * !! WARNING !!
367
+	 * Le service est injecté dans la méthode directement pour une raison de temps
368
+	 * Cette solution n'est que temporaire
369
+	 * Un refactoring est à prévoir avec principalement
370
+	 * le retrait de buildLearnerPath dans l'entity Session
371
+	 * !! WARNING !!
372
+	 * 
373
+	 * @param SequenceItem $item
374
+	 * @param ScormEngine $scormEngine
375
+	 * 
376
+	 * @return array|null
364 377
 	 */
365 378
 	public function getItemInteractions(SequenceItem $item, ScormEngine $scormEngine)
366 379
 	{
@@ -368,85 +381,77 @@ class LearnerSequence
368 381
 
369 382
 		$sequenceItems = $this->sequence->getSequenceItems();
370 383
 
371
-		if ($sequenceItems->contains($item))
372
-		{
373
-            if ($item instanceof ActivityPackage) {
374
-                $track = $this->retrieveTrack($item);
375
-                    
376
-                if ($track) {
377
-                    // CAS SCORM 1.2
378
-                    if (AbstractPackageFile::TYPE_SCORM1_2 == $item->getPackageType()) {
379
-                        $scorm12Tracks = $track->getScorm12Tracks();
380
-
381
-                        foreach ($scorm12Tracks as $scorm12Track) {
382
-                            $itemInteractions = $scorm12Track->getInteractions();
383
-
384
-                            if (!$itemInteractions->isEmpty())
385
-                            {
386
-                                $result = array();
384
+		if ($sequenceItems->contains($item)) {
385
+			if ($item instanceof ActivityPackage) {
386
+				$track = $this->retrieveTrack($item);
387
+
388
+				if ($track) {
389
+					// CAS SCORM 1.2
390
+					if (AbstractPackageFile::TYPE_SCORM1_2 == $item->getPackageType()) {
391
+						$scorm12Tracks = $track->getScorm12Tracks();
392
+
393
+						foreach ($scorm12Tracks as $scorm12Track) {
394
+							$itemInteractions = $scorm12Track->getInteractions();
395
+
396
+							if (!$itemInteractions->isEmpty()) {
397
+								$result = array();
387 398
 								$scormItem = $scorm12Track->getItem();
388 399
 								$result['title'] = $scormItem->getTitle();
389 400
 
390 401
 								// Test pour savoir si le questionnaire est composé seulement de question neutre ou non
391 402
 								$trackIsNeutral = true;
392
-								foreach($itemInteractions as $interaction)
393
-								{
394
-									if ($interaction->getResult() != "neutral")
395
-									{
403
+								foreach ($itemInteractions as $interaction) {
404
+									if ($interaction->getResult() != "neutral") {
396 405
 										$trackIsNeutral = false;
397 406
 										break;
398 407
 									}
399 408
 								}
400 409
 
401
-								if ($trackIsNeutral)
402
-								{
410
+								if ($trackIsNeutral) {
403 411
 									$result['score'] = null;
404 412
 									$result['lessonStatus'] = null;
405
-								}
406
-								else
407
-								{
413
+								} else {
408 414
 									$score = null;
409 415
 									$scoreMax = $scorm12Track->getScoreMax();
410 416
 									// Si pas de score max, pas de score valide
411
-									if ($scoreMax > 0)
412
-									{
417
+									if ($scoreMax > 0) {
413 418
 										$score = $scorm12Track->getScore();
414 419
 										$score = $score * 100 / $scoreMax;
415 420
 										$score = max(min($score, 100), 0);
416 421
 									}
417 422
 									$result['score'] = $score;
418
-									
423
+
419 424
 									$status = $scorm12Track->getLessonStatus();
420 425
 									$result['lessonStatus'] = $status;
421 426
 								}
422
-								
427
+
423 428
 								$result['interactions'] = $itemInteractions;
424 429
 
425 430
 								$interactions[] = $result;
426
-                            }
427
-                        }
428
-
429
-                        if (count($interactions) > 0) {
430
-                            return $interactions;
431
-                        }
432
-                    }
433
-
434
-                    // CAS SCORM2004 (engine)
435
-                    if ($item->getPackageType() == AbstractPackageFile::TYPE_SCORM2004) {
436
-                        // Récupération de la clef de l'inscription
437
-                        $phoenixLearner = $track->getLearner();
438
-                        $learnerKey = $phoenixLearner->getPersonId();
439
-                        $sequenceItem = $track->getSequenceItem();
440
-                        $courseKey = $sequenceItem->getSequenceItemId();
441
-                        $registrationKey = $courseKey . '|' . $learnerKey;
442
-    
443
-                        // Récupération de la complétion
444
-                        $interactions = $scormEngine->getInteractions($registrationKey);
445
-
446
-                        return $interactions;
447
-                    }
448
-                }
449
-            }
431
+							}
432
+						}
433
+
434
+						if (count($interactions) > 0) {
435
+							return $interactions;
436
+						}
437
+					}
438
+
439
+					// CAS SCORM2004 (engine)
440
+					if ($item->getPackageType() == AbstractPackageFile::TYPE_SCORM2004) {
441
+						// Récupération de la clef de l'inscription
442
+						$phoenixLearner = $track->getLearner();
443
+						$learnerKey = $phoenixLearner->getPersonId();
444
+						$sequenceItem = $track->getSequenceItem();
445
+						$courseKey = $sequenceItem->getSequenceItemId();
446
+						$registrationKey = $courseKey . '|' . $learnerKey;
447
+
448
+						// Récupération de la complétion
449
+						$interactions = $scormEngine->getInteractions($registrationKey);
450
+
451
+						return $interactions;
452
+					}
453
+				}
454
+			}
450 455
 		}
451 456
 
452 457
 		return null;

Loading…
Cancel
Save