First step for SCORM2004, new communication subsystem
[moodle.git] / mod / scorm / validate.php
1 <?php // $Id$
3     require_once("../../config.php");
4     require_once("lib.php");
6     require_login();
7     
8     //
9     // Create a temporary directory to unzip package and validate imsmanifest
10     //
12     $reference = clean_param($_GET["reference"], PARAM_PATH);
13     $courseid = $_GET["id"];
14     $datadir = '';
15     $launch = 0;
16     if (isset($_GET["datadir"])) {
17         $datadir = $_GET["datadir"];
18     }
19     $result = '';
20     if ($scormdir = make_upload_directory("$courseid/$CFG->moddata/scorm")) {
21         if ($tempdir = scorm_datadir($scormdir, $datadir)) {
22             copy ("$CFG->dataroot/$courseid/$reference", $tempdir."/".basename($reference));
23             unzip_file($tempdir."/".basename($reference), $tempdir, false);
24             $result = scorm_validate($tempdir."/imsmanifest.xml");
25         } else {
26             $result = "packagedir";
27         }
28     } else {
29         $result = "datadir";
30     }
31     $errorlogs = '';
32     if (($result != "regular") && ($result != "found")) {
33         if ($CFG->scorm_validate == 'domxml') {
34             foreach ($errors as $error) {
35                 $errorlogs .= get_string($error->type,"scorm",$error->data) . ".\n";
36             }
37         }
38         //
39         // Delete files and temporary directory
40         //
41         if (is_dir($tempdir))
42             scorm_delete_files($tempdir);
43         } else {
44         //
45         // Delete package file
46         //
47         unlink ($tempdir."/".basename($reference));
48         if (isset($_GET["instance"])) {
49             $fp = fopen($CFG->dataroot.'/'.$reference,"r");
50             $fstat = fstat($fp);
51             fclose($fp);
52             if ($scorm = get_record("scorm","id",$_GET["instance"])) {
53                 $launch = $scorm->launch;
54                 if ($scorm->timemodified < $fstat["mtime"]) {
55                     $launch = 0;
56                 }
57             }
58         }
59     }
60     //
61     // Print validation result
62     //
63     echo $result . "\n";
64     echo $launch . "\n";
65     $datadir = substr($tempdir,strlen($scormdir));
66     echo $datadir . "\n";
67     if ($errorlogs != '') {
68         echo $errorlogs;
69     }
70 ?>
71