Added ITEM parameters support.

This commit is contained in:
bobopinna
2005-04-04 09:30:51 +00:00
parent 5e0c182a2c
commit d0dd5c4b3d
7 changed files with 99 additions and 57 deletions
+4
View File
@@ -93,6 +93,10 @@ function scorm_upgrade($oldversion) {
execute_sql('ALTER TABLE `'.$CFG->prefix.'scorm` DROP `popup`'); // Old field
}
if ($oldversion < 2005040400) {
table_column("scorm_scoes", "", "parameters", "VARCHAR", "255", "", "", "NOT NULL", "launch");
}
return true;
}
+3 -1
View File
@@ -27,6 +27,7 @@ CREATE TABLE prefix_scorm_scoes (
parent varchar(255) NOT NULL default '',
identifier varchar(255) NOT NULL default '',
launch varchar(255) NOT NULL default '',
parameters varchar(255) NOT NULL default '',
scormtype set('sco','asset') NOT NULL default '',
title varchar(255) NOT NULL default '',
prerequisites varchar(200) NOT NULL default '',
@@ -50,7 +51,8 @@ CREATE TABLE prefix_scorm_scoes_track (
value longtext NOT NULL default '',
PRIMARY KEY (id),
UNIQUE (userid, scormid, scoid, element),
KEY userdata (userid, scormid, scoid)
KEY userdata (userid, scormid, scoid),
KEY id (id)
) TYPE=MyISAM;
#
+4
View File
@@ -92,6 +92,10 @@ function scorm_upgrade($oldversion) {
if ($oldversion < 2005040200) {
execute_sql('ALTER TABLE `'.$CFG->prefix.'scorm` DROP `popup`'); // Old field
}
if ($oldversion < 2005040400) {
table_column("scorm_scoes", "", "parameters", "VARCHAR", "255", "", "", "NOT NULL", "launch");
}
return true;
}
+4 -2
View File
@@ -26,6 +26,7 @@ CREATE TABLE prefix_scorm_scoes (
parent varchar(255) NOT NULL default '',
identifier varchar(255) NOT NULL default '',
launch varchar(255) NOT NULL default '',
parameters varchar(255) NOT NULL default '',
scormtype varchar(5) NOT NULL default '',
title varchar(255) NOT NULL default '',
datafromlms text NOT NULL default '',
@@ -35,7 +36,7 @@ CREATE TABLE prefix_scorm_scoes (
CREATE INDEX prefix_scorm_scoes_scorm_idx ON prefix_scorm_scoes (scorm);
CREATE TABLE prefix_scorm_sco_users (
CREATE TABLE prefix_scorm_scoes_track (
id SERIAL KEY,
userid integer NOT NULL default '0',
scormid integer NOT NULL default '0',
@@ -44,7 +45,8 @@ CREATE TABLE prefix_scorm_sco_users (
value text NOT NULL default '',
PRIMARY KEY (userid, scormid, scoid, element),
UNIQUE (userid, scormid, scoid, element),
INDEX userdata (userid, scormid, scoid)
INDEX userdata (userid, scormid, scoid),
INDEX id (id)
);
+23 -14
View File
@@ -370,8 +370,9 @@ function scorm_scandir($directory) {
function scorm_startElement($parser, $name, $attrs) {
global $scoes,$i,$resources,$parent,$level,$organization,$manifest,$defaultorg;
if ($name == 'ITEM') {
switch ($name) {
case 'ITEM':
$i++;
$scoes[$i]['manifest'] = $manifest;
$scoes[$i]['organization'] = $organization;
@@ -382,11 +383,14 @@ function scorm_startElement($parser, $name, $attrs) {
if (empty($attrs['ISVISIBLE']))
$attrs['ISVISIBLE'] = '';
$scoes[$i]['isvisible'] = $attrs['ISVISIBLE'];
if (empty($attrs['PARAMETERS']))
$attrs['PARAMETERS'] = '';
$scoes[$i]['parameters'] = $attrs['PARAMETERS'];
$scoes[$i]['parent'] = $parent[$level];
$level++;
$parent[$level] = $attrs['IDENTIFIER'];
}
if ($name == 'RESOURCE') {
break;
case 'RESOURCE':
if (!isset($attrs['HREF'])) {
$attrs['HREF'] = '';
}
@@ -395,8 +399,8 @@ function scorm_startElement($parser, $name, $attrs) {
$attrs['ADLCP:SCORMTYPE'] = '';
}
$resources[$attrs['IDENTIFIER']]['scormtype']=$attrs['ADLCP:SCORMTYPE'];
}
if ($name == 'ORGANIZATION') {
break;
case 'ORGANIZATION':
$i++;
$scoes[$i]['manifest'] = $manifest;
$scoes[$i]['organization'] = '';
@@ -408,15 +412,15 @@ function scorm_startElement($parser, $name, $attrs) {
$parent[$level] = $attrs['IDENTIFIER'];
$organization = $attrs['IDENTIFIER'];
}
if ($name == 'MANIFEST') {
case 'MANIFEST':
$manifest = $attrs['IDENTIFIER'];
}
if ($name == 'ORGANIZATIONS') {
break;
case 'ORGANIZATIONS':
if (!isset($attrs['DEFAULT'])) {
$attrs['DEFAULT'] = '';
}
$defaultorg = $attrs['DEFAULT'];
}
break;
}
function scorm_endElement($parser, $name) {
@@ -507,24 +511,29 @@ function scorm_parse($basedir,$file,$scorm_id) {
if (!isset($scoes[$j]['prerequisites'])) {
$scoes[$j]['prerequisites'] = '';
}
$sco->datafromlms = $scoes[$j]['prerequisites'];
$sco->prerequisites = $scoes[$j]['prerequisites'];
if (!isset($scoes[$j]['maxtimeallowed'])) {
$scoes[$j]['maxtimeallowed'] = '';
}
$sco->datafromlms = $scoes[$j]['maxtimeallowed'];
$sco->maxtimeallowed = $scoes[$j]['maxtimeallowed'];
if (!isset($scoes[$j]['timelimitaction'])) {
$scoes[$j]['timelimitaction'] = '';
}
$sco->datafromlms = $scoes[$j]['timelimitaction'];
$sco->timelimitaction = $scoes[$j]['timelimitaction'];
if (!isset($scoes[$j]['masteryscore'])) {
$scoes[$j]['masteryscore'] = '';
}
$sco->datafromlms = $scoes[$j]['masteryscore'];
$sco->masteryscore = $scoes[$j]['masteryscore'];
if (!isset($resources[($scoes[$j]['identifierref'])]['href'])) {
$resources[($scoes[$j]['identifierref'])]['href'] = '';
}
$sco->launch = $resources[($scoes[$j]['identifierref'])]['href'];
if (!isset($scoes[$j]['parameters'])) {
$scoes[$j]['paramenters'] = '';
}
$sco->paramenters = $scoes[$j]['parameters'];
if (!isset($resources[($scoes[$j]['identifierref'])]['type'])) {
$resources[($scoes[$j]['identifierref'])]['type'] = '';
+10 -2
View File
@@ -70,13 +70,21 @@
//
// Forge SCO URL
//
$connector = '';
if (!empty($sco->parameters)) {
if (stripos($sco->launch,'?') !== false) {
$connector = '&';
} else {
$connector = '?';
}
}
if (scorm_external_link($sco->launch)) {
$result = $sco->launch;
} else {
if ($CFG->slasharguments) {
$result = "$CFG->wwwroot/file.php/$scorm->course/moddata/scorm$scorm->datadir/$sco->launch";
$result = $CFG->wwwroot.'/file.php/'.$scorm->course.'/moddata/scorm'.$scorm->datadir.'/'.$sco->launch.$connector.$sco->parameters;
} else {
$result = "$CFG->wwwroot/file.php?file=/$scorm->course/moddata/scorm$scorm->datadir/$sco->launch";
$result = $CFG->wwwroot.'/file.php?file=/'.$scorm->course.'/moddata/scorm'.$scorm->datadir.'/'.$sco->launch.$connector.$sco->parameters;
}
}
?>
+51 -38
View File
@@ -189,48 +189,61 @@
if ($sco->launch) {
$startbold = '';
$endbold = '';
if ($sco->id == $scoid) {
$startbold = '-> <b>';
$endbold = '</b> <-';
if ($nextsco !== false) {
$nextid = $nextsco->id;
$score = '';
if ($scoid != '') {
if ($sco->id == $scoid) {
$startbold = '-> <b>';
$endbold = '</b> <-';
if ($nextsco !== false) {
$nextid = $nextsco->id;
} else {
$nextid = 0;
}
}
} else {
if ($user_tracks=scorm_get_tracks($sco->id,$USER->id)) {
if ( $user_tracks->status == '') {
$user_tracks->status = 'notattempted';
}
$strstatus = get_string($user_tracks->status,'scorm');
echo "<img src='pix/".$user_tracks->status.".gif' alt='$strstatus' title='$strstatus' />";
if (($user_tracks->status == 'notattempted') || ($user_tracks->status == 'incomplete')) {
$incomplete = true;
$scoid = $sco->id;
$startbold = '-> <b>';
$endbold = '</b> <-';
if ($nextsco !== false) {
$nextid = $nextsco->id;
} else {
$nextid = 0;
}
}
if ($user_tracks->score_raw != "") {
$score = '('.get_string('score','scorm').':&nbsp;'.$user_tracks->score_raw.')';
}
} else {
$nextid = 0;
if (mode != 'normal') {
$scoid = $sco->id;
$startbold = '-> <b>';
$endbold = '</b> <-';
if ($nextsco !== false) {
$nextid = $nextsco->id;
} else {
$nextid = 0;
}
}
if ($sco->scormtype == 'sco') {
echo "<img src='pix/notattempted.gif' alt='".get_string('notattempted','scorm')."' />";
$incomplete = true;
} else {
echo "<img src='pix/asset.gif' alt='".get_string('asset','scorm')."' />";
}
}
} else if ($nextid == 0) {
}
if ($nextid == 0) {
$previd = $sco->id;
}
if (($scoid == "") && ($mode != "normal")) {
$scoid = $sco->id;
$startbold = '-> <b>';
$endbold = '</b> <-';
}
$score = "";
if ($user_tracks=scorm_get_tracks($sco->id,$USER->id)) {
if ( $user_tracks->status == '') {
$user_tracks->status = 'notattempted';
}
$strstatus = get_string($user_tracks->status,'scorm');
echo "<img src='pix/".$user_tracks->status.".gif' alt='$strstatus' title='$strstatus' />";
if (($user_tracks->status == 'notattempted') || ($user_tracks->status == 'incomplete')) {
if ($scoid == '') {
$incomplete = true;
$scoid = $sco->id;
$startbold = '-> <b>';
$endbold = '</b> <-';
}
}
if ($user_tracks->score_raw != "") {
$score = '('.get_string('score','scorm').':&nbsp;'.$user_tracks->score_raw.')';
}
} else {
if ($sco->scormtype == 'sco') {
echo "<img src='pix/notattempted.gif' alt='".get_string('notattempted','scorm')."' />";
$incomplete = true;
} else {
echo "<img src='pix/asset.gif' alt='".get_string('asset','scorm')."' />";
}
}
echo "&nbsp;$startbold<a href='javascript:playSCO(".$sco->id.");'>$sco->title</a> $score$endbold</li>\n";
} else {
echo "&nbsp;$sco->title</li>\n";