Browse Source

Ajout de la méthode DuplicateCourse

Mael ETIENNE 3 years ago
parent
commit
16c315671d

+ 6
- 6
ClientAPI/ApiScorm2004.php View File

@@ -760,12 +760,12 @@ EOT;
760 760
             $index++;
761 761
         }
762 762
 
763
-        $apiString .=<<<EOT
764
-        window.setInterval(periodical, 20000);
765
-        function periodical() {
766
-            API_1484_11.Commit("");
767
-        }
768
-EOT;
763
+//         $apiString .=<<<EOT
764
+//         window.setInterval(periodical, 20000);
765
+//         function periodical() {
766
+//             API_1484_11.Commit("");
767
+//         }
768
+// EOT;
769 769
 
770 770
 /*         // 4.3 Gestion de la fermeture de la page
771 771
         $apiString .=<<<EOT

+ 0
- 1
LearningModels/SCORM2004/SequencingNavigation/SeqNavRequest.php View File

@@ -306,7 +306,6 @@ class SeqNavRequest implements ContainerAwareInterface
306 306
 
307 307
             // On évalue le processus de rollup sur la progression de l'item par la mesure
308 308
             $itemMethodByMeasureApplied = $this->evaluateItemProgressRollupUsingMeasure($item);
309
-
310 309
             // Si la méthode ne s'applique pas, on applique la méthode se basant sur les règles
311 310
             if (!$itemMethodByMeasureApplied) {
312 311
                 $this->evaluateItemProgressRollupUsingRules($item);

+ 87
- 1
Services/ScormEngine.php View File

@@ -101,7 +101,7 @@ class ScormEngine implements ContainerAwareInterface
101 101
 
102 102
             if ($course) {
103 103
                 $response['code'] = 400;
104
-                $response['error'] = 'La clef de cours existe déjà. Utilser \'updateCourse\' pour mettre à jours un cours existant';
104
+                $response['error'] = 'La clef de cours existe déjà. Utilser \'updateCourse\' pour mettre à jour un cours existant';
105 105
                 return $response;
106 106
             }
107 107
 
@@ -330,6 +330,92 @@ class ScormEngine implements ContainerAwareInterface
330 330
         return $response;
331 331
     }
332 332
 
333
+    /**
334
+     * Copie un cours à partir d'un cours existant
335
+     *
336
+     * @param string $orginalCourseKey
337
+     * @param string $newCourseKey
338
+     * @param bool $analyse
339
+     * @param string $versioningRule
340
+     *
341
+     * @return array
342
+     */
343
+    public function duplicateCourse(string $orginalCourseKey, string $newCourseKey)
344
+    {
345
+        // Création de la structure de la réponse
346
+        $response = array(
347
+            'code' => 200,
348
+            'isSuccessfullyCreated' => false,
349
+            'error' => '',
350
+            'course' => array(
351
+                'courseKey' => '',
352
+                'maxVersion' => 0,
353
+                'versioningRule' => ''
354
+            )
355
+        );
356
+
357
+        // Contrôle que la clef du cours existant est fournie
358
+        if (empty($orginalCourseKey)) {
359
+            $response['code'] = 400;
360
+            $response['error'] = 'La clef d\'un cours existant à dupliquer est requise.';
361
+            return $response;
362
+        }
363
+
364
+        // Contrôle que la clef du nouveau cours est fournie
365
+        if (empty($newCourseKey)) {
366
+            $response['code'] = 400;
367
+            $response['error'] = 'La clef du nouveau cours dupliqué est requise.';
368
+            return $response;
369
+        }
370
+        
371
+        // Contrôle de l'existence du cours à dupliquer
372
+        $originalCourse = $this->requireCourse($orginalCourseKey);
373
+
374
+        if (empty($originalCourse)) {
375
+            $response['code'] = 400;
376
+            $response['error'] = 'Le cours que vous souhaitez dupliquer est inexistant.';
377
+            return $response;
378
+        }
379
+
380
+        // Contrôle de la disponibilité de la clef pour le nouveau cours
381
+        $newCourse = $this->requireCourse($newCourseKey);
382
+
383
+        if ($newCourse) {
384
+            $response['code'] = 400;
385
+            $response['error'] = 'La clef du nouveau cours existe déjà. Utilser \'updateCourse\' pour mettre à jour un cours existant.';
386
+            return $response;
387
+        }
388
+
389
+        // Récupération de l'entity manager
390
+        $em = $this->getDoctrine()->getManager();
391
+        
392
+        // COURS
393
+        $newCourse = clone $originalCourse;
394
+        $newCourse->setCourseKey($newCourseKey);
395
+        $em->persist($newCourse);
396
+
397
+        // Récupération de l'objet Zip
398
+        $originalMapping = $originalCourse->getMapCourseZipfiles();
399
+        $zipFile = $originalMapping->getZipFile();
400
+
401
+        // Mapping Zip/Cours
402
+        $mapping = new MapCourseZipfile();
403
+        $mapping->setCourse($newCourse);
404
+        $mapping->setZipFile($zipFile);
405
+        $mapping->setVersion($newCourse->getMaxVersion());
406
+             
407
+        $em->persist($mapping);
408
+        $em->flush();
409
+
410
+        // Réponse
411
+        $response['course']['courseKey'] = $newCourse->getCourseKey();
412
+        $response['course']['maxVersion'] = $newCourse->getMaxVersion();
413
+        $response['course']['versioningRule'] = $newCourse->getVersionRule();
414
+        $response['isSuccessfullyCreated'] = true;
415
+
416
+        return $response;
417
+    }
418
+
333 419
     /**
334 420
      * Remplace la règle de versionning d'un cours
335 421
      *

Loading…
Cancel
Save