]> git.mjollnir.org Git - moodle.git/commitdiff
Fixed PHP_SELF and patched some other playing problems
authorbobopinna <bobopinna>
Mon, 7 Jun 2004 12:16:41 +0000 (12:16 +0000)
committerbobopinna <bobopinna>
Mon, 7 Jun 2004 12:16:41 +0000 (12:16 +0000)
mod/scorm/cmi.php
mod/scorm/coursefiles.php
mod/scorm/lib.php
mod/scorm/mod.html
mod/scorm/scormAPI.php
mod/scorm/view.php

index 32f08dedd88f1799443eab4f57ccde5630da00ce..2ce1476713113b9eaa8c5d290cf46641a49ac9c4 100755 (executable)
@@ -49,7 +49,7 @@
    <title>cmi</title>
 </head>
 <body>
-   <form name="theform" method="POST" action="<?php echo $_SERVER["PHP_SELF"] ?>?id=<?php echo $cm->id ?>"> 
+   <form name="theform" method="POST" action="<?php echo $ME ?>?id=<?php echo $cm->id ?>"> 
        <input type="hidden" name="scoid" />
        <input type="hidden" name="cmi_core_lesson_location" />
        <input type="hidden" name="cmi_core_lesson_status" />
index 0414315835779fd5c224092609fddea33e79613f..b514910f0536bb4692b1ea96fca4e6441fc985d6 100755 (executable)
@@ -35,7 +35,7 @@
     
     function html_header($course, $wdir, $formfield=""){
 
-        global $CFG,$THEME;
+        global $CFG,$THEME,$ME;
 
         if (! $site = get_site()) {
             error("Invalid site!");
@@ -57,9 +57,9 @@
             for ($i=1; $i<$numdirs; $i++) {
                $navigation .= " -> ";
                $link .= "/".urlencode($dirs[$i]);
-               $navigation .= "<a href=\"".$_SERVER['PHP_SELF']."?id=$course->id&wdir=$link\">".$dirs[$i]."</a>";
+               $navigation .= "<a href=\"".$ME."?id=$course->id&wdir=$link\">".$dirs[$i]."</a>";
             }
-            $fullnav = "<a href=\"".$_SERVER['PHP_SELF']."?id=$course->id&wdir=/\">$strfiles</a> $navigation";
+            $fullnav = "<a href=\"".$ME."?id=$course->id&wdir=/\">$strfiles</a> $navigation";
         }
 
         print_header();
 
                 echo "<P>$struploadafile ($strmaxsize) --> <B>$wdir</B>";
                 echo "<TABLE><TR><TD COLSPAN=2>";
-                echo "<FORM ENCTYPE=\"multipart/form-data\" METHOD=\"post\" ACTION=\"".$_SERVER['PHP_SELF']."\">";
+                echo "<FORM ENCTYPE=\"multipart/form-data\" METHOD=\"post\" ACTION=\"".$ME."\">";
                 echo " <INPUT TYPE=hidden NAME=MAX_FILE_SIZE value=\"$upload_max_filesize\">";
                 echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
                 echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
                 echo " <INPUT TYPE=submit NAME=save VALUE=\"$struploadthisfile\">";
                 echo "</FORM>";
                 echo "</TD><TD WIDTH=100%>";
-                echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=\"get\">";
+                echo "<FORM ACTION=\"".$ME."\" METHOD=\"get\">";
                 echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
                 echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
                 echo " <INPUT TYPE=hidden NAME=action VALUE=cancel>";
                     print_simple_box_end();
                     echo "<br />";
                     notice_yesno (get_string("deletecheckfiles"), 
-                                "".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&action=delete&confirm=1",
-                                "".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&action=cancel");
+                                "".basename($ME)."?id=$id&wdir=$wdir&action=delete&confirm=1",
+                                "".basename($ME)."?id=$id&wdir=$wdir&action=cancel");
                 } else {
                     displaydir($wdir);
                 }
                 html_header($course, $wdir, "form.name");
                 echo "<P>$strrenamefileto:";
                 echo "<TABLE><TR><TD>";
-                echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=\"post\" NAME=\"form\">";
+                echo "<FORM ACTION=\"".$ME."\" METHOD=\"post\" NAME=\"form\">";
                 echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
                 echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
                 echo " <INPUT TYPE=hidden NAME=action VALUE=rename>";
                 echo " <INPUT TYPE=submit VALUE=\"$strrename\">";
                 echo "</FORM>";
                 echo "</TD><TD>";
-                echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=get>";
+                echo "<FORM ACTION=\"".$ME."\" METHOD=get>";
                 echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
                 echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
                 echo " <INPUT TYPE=hidden NAME=action VALUE=cancel>";
                 html_header($course, $wdir, "form.name");
                 echo "<P>$strcreatefolder:";
                 echo "<TABLE><TR><TD>";
-                echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=post NAME=form>";
+                echo "<FORM ACTION=\"".$ME."\" METHOD=post NAME=form>";
                 echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
                 echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
                 echo " <INPUT TYPE=hidden NAME=action VALUE=mkdir>";
                 echo " <INPUT TYPE=submit VALUE=\"$strcreate\">";
                 echo "</FORM>";
                 echo "</TD><TD>";
-                echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=get>";
+                echo "<FORM ACTION=\"".$ME."\" METHOD=get>";
                 echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
                 echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
                 echo " <INPUT TYPE=hidden NAME=action VALUE=cancel>";
                 print_heading("$streditfile");
 
                 echo "<TABLE><TR><TD COLSPAN=2>";
-                echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=\"post\" NAME=\"form\" $onsubmit>";
+                echo "<FORM ACTION=\"".$ME."\" METHOD=\"post\" NAME=\"form\" $onsubmit>";
                 echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
                 echo " <INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\">";
                 echo " <INPUT TYPE=hidden NAME=file VALUE=\"$file\">";
                 echo " <INPUT TYPE=submit VALUE=\"".get_string("savechanges")."\">";
                 echo "</FORM>";
                 echo "</TD><TD>";
-                echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=get>";
+                echo "<FORM ACTION=\"".$ME."\" METHOD=get>";
                 echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
                 echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
                 echo " <INPUT TYPE=hidden NAME=action VALUE=cancel>";
                     echo "<BR>";
                     echo "<P ALIGN=CENTER>".get_string("whattocallzip");
                     echo "<TABLE><TR><TD>";
-                    echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=post NAME=form>";
+                    echo "<FORM ACTION=\"".$ME."\" METHOD=post NAME=form>";
                     echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
                     echo " <INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\">";
                     echo " <INPUT TYPE=hidden NAME=action VALUE=zip>";
                     echo " <INPUT TYPE=submit VALUE=\"".get_string("createziparchive")."\">";
                     echo "</FORM>";
                     echo "</TD><TD>";
-                    echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=get>";
+                    echo "<FORM ACTION=\"".$ME."\" METHOD=get>";
                     echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
                     echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
                     echo " <INPUT TYPE=hidden NAME=action VALUE=cancel>";
                     print_simple_box_end();
                 }
 
-                echo "<CENTER><FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=get>";
+                echo "<CENTER><FORM ACTION=\"".$ME."\" METHOD=get>";
                 echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
                 echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
                 echo " <INPUT TYPE=hidden NAME=action VALUE=cancel>";
                     }
                     echo "</table>";
                 }
-                echo "<br><center><form action=\"".$_SERVER['PHP_SELF']."\" method=get>";
+                echo "<br><center><form action=\"".$ME."\" method=get>";
                 echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
                 echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
                 echo " <INPUT TYPE=hidden NAME=action VALUE=cancel>";
@@ -670,7 +670,7 @@ function displaydir ($wdir) {
 
     global $basedir;
     global $id;
-    global $USER, $CFG;
+    global $USER, $CFG, $ME;
 
     $fullpath = $basedir.$wdir;
 
@@ -707,7 +707,7 @@ function displaydir ($wdir) {
     $strchoose   = get_string("choose");
 
 
-    echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=post NAME=dirform>";
+    echo "<FORM ACTION=\"".$ME."\" METHOD=post NAME=dirform>";
     echo "<TABLE BORDER=0 cellspacing=2 cellpadding=2 width=640>";    
     echo "<TR>";
     echo "<TH WIDTH=5></TH>";
@@ -737,10 +737,10 @@ function displaydir ($wdir) {
             echo "<TR>";
 
             print_cell("center", "<INPUT TYPE=checkbox NAME=\"file$count\" VALUE=\"$fileurl\">");
-            print_cell("left", "<A HREF=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$fileurl\"><IMG SRC=\"$CFG->pixpath/f/folder.gif\" HEIGHT=16 WIDTH=16 BORDER=0 ALT=\"Folder\"></A> <A HREF=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$fileurl\">".htmlspecialchars($dir)."</A>");
+            print_cell("left", "<A HREF=\"".basename($ME)."?id=$id&wdir=$fileurl\"><IMG SRC=\"$CFG->pixpath/f/folder.gif\" HEIGHT=16 WIDTH=16 BORDER=0 ALT=\"Folder\"></A> <A HREF=\"".basename($ME)."?id=$id&wdir=$fileurl\">".htmlspecialchars($dir)."</A>");
             print_cell("right", "-");
             print_cell("right", $filedate);
-            print_cell("right", "<A HREF=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&file=$filesafe&action=rename\">$strrename</A>");
+            print_cell("right", "<A HREF=\"".basename($ME)."?id=$id&wdir=$wdir&file=$filesafe&action=rename\">$strrename</A>");
     
             echo "</TR>";
         }
@@ -790,13 +790,13 @@ function displaydir ($wdir) {
             $edittext = "<b><a onMouseDown=\"return set_value('$selectfile')\" href=\"\">$strchoose</a></b>&nbsp;";
 
             if ($icon == "text.gif" || $icon == "html.gif") {
-                $edittext .= "<a href=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&file=$fileurl&action=edit\">$stredit</a>";
+                $edittext .= "<a href=\"".basename($ME)."?id=$id&wdir=$wdir&file=$fileurl&action=edit\">$stredit</a>";
             } else if ($icon == "zip.gif") {
-                $edittext .= "<a href=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&file=$fileurl&action=unzip\">$strunzip</a>&nbsp;";
-                $edittext .= "<a href=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&file=$fileurl&action=listzip\">$strlist</a> ";
+                $edittext .= "<a href=\"".basename($ME)."?id=$id&wdir=$wdir&file=$fileurl&action=unzip\">$strunzip</a>&nbsp;";
+                $edittext .= "<a href=\"".basename($ME)."?id=$id&wdir=$wdir&file=$fileurl&action=listzip\">$strlist</a> ";
             }
 
-            print_cell("right", "$edittext <A HREF=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&file=$filesafe&action=rename\">$strrename</A>");
+            print_cell("right", "$edittext <A HREF=\"".basename($ME)."?id=$id&wdir=$wdir&file=$filesafe&action=rename\">$strrename</A>");
     
             echo "</tr>";
         }
@@ -824,7 +824,7 @@ function displaydir ($wdir) {
     echo "</FORM>";
     echo "<TD ALIGN=center>";
     if (!empty($USER->fileop) and ($USER->fileop == "move") and ($USER->filesource <> $wdir)) {
-        echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=get>";
+        echo "<FORM ACTION=\"".$ME."\" METHOD=get>";
         echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
         echo " <INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\">";
         echo " <INPUT TYPE=hidden NAME=action VALUE=paste>";
@@ -832,7 +832,7 @@ function displaydir ($wdir) {
         echo "</FORM>";
     }
     echo "<TD ALIGN=right>";
-        echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=get>";
+        echo "<FORM ACTION=\"".$ME."\" METHOD=get>";
         echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
         echo " <INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\">";
         echo " <INPUT TYPE=hidden NAME=action VALUE=mkdir>";
@@ -840,7 +840,7 @@ function displaydir ($wdir) {
         echo "</FORM>";
     echo "</TD>";
     echo "<TD ALIGN=right>";
-        echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=get>";
+        echo "<FORM ACTION=\"".$ME."\" METHOD=get>";
         echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
         echo " <INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\">";
         echo " <INPUT TYPE=hidden NAME=action VALUE=upload>";
index f54bda276835d48b5114cf6b34aaf081d41c1e2d..db85635099a58a7c86b498b4fbe2349a2b9d173d 100755 (executable)
@@ -227,7 +227,11 @@ function scorm_startElement($parser, $name, $attrs) {
     if ($name == "ITEM") {
                $i++;
                $manifest[$i]["identifier"] = $attrs["IDENTIFIER"];
+               if (empty($attrs["IDENTIFIERREF"]))
+                   $attrs["IDENTIFIERREF"] = "";
                $manifest[$i]["identifierref"] = $attrs["IDENTIFIERREF"];
+               if (empty($attrs["ISVISIBLE"]))
+                   $attrs["ISVISIBLE"] = "";
                $manifest[$i]["isvisible"] = $attrs["ISVISIBLE"];
                $manifest[$i]["parent"] = $parent[$level];
                $level++;
@@ -245,9 +249,9 @@ function scorm_endElement($parser, $name) {
         $level--;
     }
     if ($name == "TITLE" && $level>0)
-               $manifest[$i]["title"] = $datacontent;
-       if ($name == "ADLCP:HIDERTSUI")
-               $manifest[$i][$datacontent] = 1;
+       $manifest[$i]["title"] = $datacontent;
+    if ($name == "ADLCP:HIDERTSUI")
+       $manifest[$i][$datacontent] = 1;
 }
 
 function scorm_characterData($parser, $data) {
@@ -290,14 +294,22 @@ function scorm_parse($basedir,$file,$scorm_id) {
         $sco->identifier = $manifest[$j]["identifier"];
         $sco->parent = $manifest[$j]["parent"];
         $sco->title = $manifest[$j]["title"];
-        $sco->launch = $resources[$manifest[$j]["identifierref"]]["href"];
-               $sco->type = $resources[$manifest[$j]["identifierref"]]["type"];
-               $sco->previous = $manifest[$j]["previous"];
-               $sco->next = $manifest[$j]["continue"];
-               if (scorm_remove_spaces($manifest[$j]["isvisible"]) != "false")
-                       $id = insert_record("scorm_scoes",$sco);
-               if ($launch==0 && $sco->launch)
-                       $launch = $id;  
+        if (empty($resources[($manifest[$j]["identifierref"])]["href"]))
+            $resources[($manifest[$j]["identifierref"])]["href"] = "";
+        $sco->launch = $resources[($manifest[$j]["identifierref"])]["href"];
+        if (empty($resources[($manifest[$j]["identifierref"])]["type"]))
+            $resources[($manifest[$j]["identifierref"])]["type"] = "";
+       $sco->type = $resources[($manifest[$j]["identifierref"])]["type"];
+       if (empty($manifest[$j]["previous"]))
+           $manifest[$j]["previous"] = 0;
+       $sco->previous = $manifest[$j]["previous"];
+       if (empty($manifest[$j]["continue"]))
+           $manifest[$j]["continue"] = 0;
+       $sco->next = $manifest[$j]["continue"];
+       if (scorm_remove_spaces($manifest[$j]["isvisible"]) != "false")
+           $id = insert_record("scorm_scoes",$sco);
+       if ($launch==0 && $sco->launch)
+           $launch = $id;      
     }
     return $launch;
 }
@@ -345,14 +357,14 @@ function scorm_external_link($link) {
        $result = true;
     else if (substr($link,0,4) == "www.")
        $result = true;
-    else if (substr($link,0,7) == "rstp://")
+    /*else if (substr($link,0,7) == "rstp://")
        $result = true;
     else if (substr($link,0,6) == "rtp://")
        $result = true;
     else if (substr($link,0,6) == "ftp://")
        $result = true;
     else if (substr($link,0,9) == "gopher://")
-       $result = true;
+       $result = true; */
     return $result;
 }    
 ?>
index ad7db3c9308aab310deb51dd848b141e11a396de..efd858e0ddbae92632a2bd465e347a66e1d4d125 100755 (executable)
@@ -8,6 +8,9 @@
     if (empty($form->summary)) {
        $form->summary = "";
     }
+    if (empty($form->launch)) {
+       $form->launch = "";
+    }
     if (empty($form->auto)) {
        $form->auto = "";
     }
index d4faf10cf695359ab5d5e46cd42ac3ecaab270f0..e61621b8b56c3804c984cb395fb5df4fc38506f4 100755 (executable)
     require_login($course->id);
 
     if ( $scoes_user = get_records_select("scorm_sco_users","userid = ".$USER->id." AND scormid = ".$scorm->id,"scoid ASC") ) {
-       if ($scoid) {
+        //
+        // Already user
+        //
+       if (!empty($scoid)) {   
+           // Direct sco request
            $sco = get_record("scorm_scoes","id",$scoid);
        } else {
+           // Search for first incomplete sco
            foreach ( $scoes_user as $sco_user ) {
                if (($sco_user->cmi_core_lesson_status != "completed") && ($sco_user->cmi_core_lesson_status != "passed") && ($sco_user->cmi_core_lesson_status != "failed")) {
                    $sco = get_record("scorm_scoes","id",$sco_user->scoid);
                    break;
                } else {
+                   // If review mode get the first
                    if ($mode == "review") {
                        $sco = get_record("scorm_scoes","id",$sco_user->scoid);
                        break;
                }
            }
        }
-       if (!$sco)
-           $sco = get_record_select("scorm_scoes","scorm=".$scorm->id." AND launch<>'' order by id ASC");
-    } else {   
+       if (!isset($sco)) {  // If no sco was found get the first of SCORM package
+           $scoes = get_records_select("scorm_scoes","scorm=".$scorm->id." AND launch<>'' order by id ASC");
+           $sco = each($scoes);
+       }
+    } else {
+        //
+        // A new user
+        //
        if ($scoes = get_records("scorm_scoes","scorm",$scorm->id,"id ASC")) {
+           //
+           // Create user scoes records
+           //
            foreach ($scoes as $sco) {
                if ($sco->launch != "") {
-                   if (!$first)
+                   if (!isset($first))
                        $first = $sco;
                    $sco_user->userid = $USER->id;
                    $sco_user->scoid = $sco->id;
                    $element = "cmi_core_lesson_status";
                    if ($sco->type == "sco") 
                        $sco_user->$element = "not attempted";
-                   else if ($sco->type == "sca")
+                   else if (($sco->type == "sca") || ($sco->type == "asset"))
                        $sco_user->$element = "completed";
                    $ident = insert_record("scorm_sco_users",$sco_user);
                }
            }
-           $sco = $first;
-           if ($scoid) {
+           if (isset($first))
+               $sco = $first;
+           if (!empty($scoid)) {
                if ($sco = get_record("scorm_scoes","id",$scoid))
                    unset($first);
            }
     include("api1_2.php");
 
 ?>
+function hilightcurrent(popupmenu) {
+    for (i=0;i < popupmenu.options.length;i++) {
+        if ( popupmenu.options[i].value == <?php echo $sco->id; ?> )
+               popupmenu.options[i].selected = true;
+    }
+}
 
 function SCOInitialize() { 
 <?php
@@ -133,10 +154,8 @@ function SCOInitialize() {
     }
 ?>
        top.main.location="<?php echo $result; ?>";
-       for (i=0;i<top.nav.document.navform.courseStructure.options.length;i++) {
-           if ( top.nav.document.navform.courseStructure.options[i].value == <?php echo $sco->id; ?> )
-               top.nav.document.navform.courseStructure.options[i].selected = true;
-       }
+       hilightcurrent(top.nav.document.navform.courseStructure);
+       
 } 
 
 function changeSco(direction) {
index 9e24551d598cb134043b409aef659dd4241342cc..f89a5627b4cfca2339d33ec6a9ca633022912f35 100755 (executable)
                        if ( $sco_user->cmi_core_lesson_status == "")
                            $sco_user->cmi_core_lesson_status = "not attempted";
                        echo "      <img src=\"pix/".scorm_remove_spaces($sco_user->cmi_core_lesson_status).".gif\" alt=\"".get_string(scorm_remove_spaces($sco_user->cmi_core_lesson_status),"scorm")."\" title=\"".get_string(scorm_remove_spaces($sco_user->cmi_core_lesson_status),"scorm")."\" />\n";
+                       if (($sco_user->cmi_core_lesson_status == "not attempted") || ($sco_user->cmi_core_lesson_status == "incomplete"))
+                           $incomplete = true;
                    } else {
                        echo "      <img src=\"pix/notattempted.gif\" alt=\"".get_string("notattempted","scorm")."\" />";
                        $incomplete = true;