No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

PackageValidator.php 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace Logipro\Bundle\SCORMBundle\Package;
  3. class PackageValidator
  4. {
  5. /**
  6. * Méthode outil premettant de valider un paquet e-learning
  7. * le standard est défini et la validation adéquat appliquée
  8. *
  9. * @param string $zipPath
  10. *
  11. * @return array
  12. */
  13. public static function validatePackage($zipPath)
  14. {
  15. $response = array(
  16. 'standard' => null,
  17. 'title' => null,
  18. 'validation' => null
  19. );
  20. // Identification du standard
  21. // Accès au contenu du zip
  22. $zip = new \ZipArchive();
  23. $result = $zip->open($zipPath);
  24. if ($result !== true) {
  25. return sprintf("L'ouverture du ZIP a échoué avec le code : %d", $result);
  26. }
  27. // Dans un premier temps on ne considère que SCORM
  28. // On recherche donc un fichier 'imsmanifest.xml'
  29. // Récupération du manifest
  30. $manifest = $zip->getFromName('imsmanifest.xml');
  31. $zip->close();
  32. $zipName = pathinfo($zipPath)['filename'];
  33. if ($manifest !== false) {
  34. // SCORM
  35. $dom = DOMLearningModel::getInstance($zipName, $manifest);
  36. } else {
  37. // Si pas de imsmanifest.xml --> possible autre standard
  38. return null;
  39. }
  40. // Si standard identifié, on peut passé à la validation du xml
  41. if ($dom) {
  42. $response['standard'] = $dom->getStandard();
  43. $response['title'] = $dom->getTitle();
  44. // @TODO Validation XML reportée
  45. // $response['validation'] = $dom->validate();
  46. $response['validation'] = array(
  47. 'status' => true
  48. );
  49. } else {
  50. return null;
  51. }
  52. return $response;
  53. }
  54. }