Splitted scoes optional data in a new table

This commit is contained in:
bobopinna 2006-11-21 16:12:19 +00:00
parent 9c03bbaa04
commit b3659259fd
19 changed files with 633 additions and 378 deletions

View file

@ -63,7 +63,6 @@ $mod_scorm_capabilities = array(
'teacher' => CAP_ALLOW,
'editingteacher' => CAP_ALLOW,
'coursecreator' => CAP_ALLOW,
'admin' => CAP_ALLOW
)
),

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<XMLDB PATH="mod/scorm/db" VERSION="20060926" COMMENT="XMLDB file for Moodle mod/scorm"
<XMLDB PATH="mod/scorm/db" VERSION="20061121" COMMENT="XMLDB file for Moodle mod/scorm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd"
>
@ -34,7 +34,7 @@
<INDEX NAME="course" UNIQUE="false" FIELDS="course"/>
</INDEXES>
</TABLE>
<TABLE NAME="scorm_scoes" COMMENT="each SCO part of the SCORM module" PREVIOUS="scorm" NEXT="scorm_scoes_track">
<TABLE NAME="scorm_scoes" COMMENT="each SCO part of the SCORM module" PREVIOUS="scorm" NEXT="scorm_scoes_data">
<FIELDS>
<FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" ENUM="false" NEXT="scorm"/>
<FIELD NAME="scorm" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="id" NEXT="manifest"/>
@ -42,24 +42,30 @@
<FIELD NAME="organization" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="manifest" NEXT="parent"/>
<FIELD NAME="parent" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="organization" NEXT="identifier"/>
<FIELD NAME="identifier" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="parent" NEXT="launch"/>
<FIELD NAME="launch" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="identifier" NEXT="parameters"/>
<FIELD NAME="parameters" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="launch" NEXT="scormtype"/>
<FIELD NAME="scormtype" TYPE="char" LENGTH="5" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="parameters" NEXT="title"/>
<FIELD NAME="title" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="scormtype" NEXT="prerequisites"/>
<FIELD NAME="prerequisites" TYPE="char" LENGTH="200" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="title" NEXT="maxtimeallowed"/>
<FIELD NAME="maxtimeallowed" TYPE="char" LENGTH="19" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="prerequisites" NEXT="timelimitaction"/>
<FIELD NAME="timelimitaction" TYPE="char" LENGTH="19" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="maxtimeallowed" NEXT="datafromlms"/>
<FIELD NAME="datafromlms" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="timelimitaction" NEXT="masteryscore"/>
<FIELD NAME="masteryscore" TYPE="char" LENGTH="200" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="datafromlms" NEXT="next"/>
<FIELD NAME="next" TYPE="int" LENGTH="1" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="masteryscore" NEXT="previous"/>
<FIELD NAME="previous" TYPE="int" LENGTH="1" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="next"/>
<FIELD NAME="launch" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="identifier" NEXT="scormtype"/>
<FIELD NAME="scormtype" TYPE="char" LENGTH="5" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="launch" NEXT="title"/>
<FIELD NAME="title" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="scormtype"/>
</FIELDS>
<KEYS>
<KEY NAME="primary" TYPE="primary" FIELDS="id" COMMENT="Primary key for scorm_scoes" NEXT="scorm"/>
<KEY NAME="scorm" TYPE="foreign" FIELDS="scorm" REFTABLE="scorm" REFFIELDS="id" PREVIOUS="primary"/>
</KEYS>
</TABLE>
<TABLE NAME="scorm_scoes_track" COMMENT="to track SCOes" PREVIOUS="scorm_scoes">
<TABLE NAME="scorm_scoes_data" COMMENT="Contains variable data get from packages" PREVIOUS="scorm_scoes" NEXT="scorm_scoes_track">
<FIELDS>
<FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" ENUM="false" NEXT="scoid"/>
<FIELD NAME="scoid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="id" NEXT="name"/>
<FIELD NAME="name" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="scoid" NEXT="value"/>
<FIELD NAME="value" TYPE="text" LENGTH="small" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="name"/>
</FIELDS>
<KEYS>
<KEY NAME="primary" TYPE="primary" FIELDS="id" COMMENT="Primary key for scorm_scoes_data"/>
</KEYS>
<INDEXES>
<INDEX NAME="dev_scorscoedata_sco_ix" UNIQUE="false" FIELDS="scoid"/>
</INDEXES>
</TABLE>
<TABLE NAME="scorm_scoes_track" COMMENT="to track SCOes" PREVIOUS="scorm_scoes_data">
<FIELDS>
<FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" ENUM="false" NEXT="userid"/>
<FIELD NAME="userid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="id" NEXT="scormid"/>

View file

@ -6,6 +6,7 @@ CREATE TABLE prefix_scorm (
id int(10) unsigned NOT NULL auto_increment,
course int(10) unsigned NOT NULL default '0',
name varchar(255) NOT NULL default '',
summary text NOT NULL default '',
reference varchar(255) NOT NULL default '',
version varchar(9) NOT NULL default '',
maxgrade float(3) NOT NULL default '0',
@ -13,8 +14,9 @@ CREATE TABLE prefix_scorm (
maxattempt int(10) NOT NULL default '1',
launch int(10) unsigned NOT NULL default '0',
skipview tinyint(1) unsigned NOT NULL default '1',
summary text NOT NULL default '',
hidebrowse tinyint(1) NOT NULL default '0',
hideexit tinyint(1) NOT NULL default '0',
hideabandon tinyint(1) NOT NULL default '0',
hidetoc tinyint(1) NOT NULL default '0',
hidenav tinyint(1) NOT NULL default '0',
auto tinyint(1) unsigned NOT NULL default '0',
@ -24,7 +26,6 @@ CREATE TABLE prefix_scorm (
height int(10) unsigned NOT NULL default '600',
timemodified int(10) unsigned NOT NULL default '0',
PRIMARY KEY (id),
UNIQUE KEY id (id),
KEY course (course)
) TYPE=MyISAM;
@ -35,22 +36,31 @@ CREATE TABLE prefix_scorm_scoes (
organization varchar(255) NOT NULL default '',
parent varchar(255) NOT NULL default '',
identifier varchar(255) NOT NULL default '',
launch varchar(255) NOT NULL default '',
parameters varchar(255) NOT NULL default '',
/* launch varchar(255) NOT NULL default '', */
launch int(10) NOT NULL default '0',
scormtype varchar(5) NOT NULL default '',
title varchar(255) NOT NULL default '',
/* parameters varchar(255) NOT NULL default '',
prerequisites varchar(200) NOT NULL default '',
maxtimeallowed varchar(19) NOT NULL default '',
timelimitaction varchar(19) NOT NULL default '',
datafromlms varchar(255) NOT NULL default '',
masteryscore varchar(200) NOT NULL default '',
next tinyint(1) unsigned NOT NULL default '0',
previous tinyint(1) unsigned NOT NULL default '0',
previous tinyint(1) unsigned NOT NULL default '0', */
PRIMARY KEY (id),
UNIQUE KEY id (id),
KEY scorm (scorm)
) TYPE=MyISAM;
CREATE TABLE prefix_scorm_scoes_data (
id int(10) unsigned NOT NULL auto_increment,
scoid int(10) unsigned NOT NULL default '0',
name varchar(255) NOT NULL default '',
value text NOT NULL default '',
PRIMARY KEY (id),
KEY scoid (scoid)
) TYPE=MyISAM;
CREATE TABLE prefix_scorm_scoes_track (
id int(10) unsigned NOT NULL auto_increment,
userid int(10) unsigned NOT NULL default '0',
@ -60,7 +70,7 @@ CREATE TABLE prefix_scorm_scoes_track (
element varchar(255) NOT NULL default '',
value longtext NOT NULL default '',
timemodified int(10) unsigned NOT NULL default '0',
PRIMARY KEY (id),
PRIMARY KEY (id),
KEY userid (userid),
KEY scormid (scormid),
KEY scoid (scoid),
@ -68,6 +78,106 @@ CREATE TABLE prefix_scorm_scoes_track (
UNIQUE track (userid, scormid, scoid, attempt, element)
) TYPE=MyISAM;
CREATE TABLE prefix_scorm_sequencing_ruleconditions (
id int(10) unsigned NOT NULL auto_increment,
scormid int(10) unsigned NOT NULL default '0',
scoid int(10) unsigned NOT NULL default '0',
conditioncombination varchar(3) NOT NULL default 'all',
ruletype tinyint(2) unsigned NOT NULL default '0',
action varchar(25) NOT NULL default '',
PRIMARY KEY (id),
UNIQUE (scormid, scoid,id),
KEY scormid (scormid),
KEY scoid (scoid)
) TYPE=MyISAM;
CREATE TABLE prefix_scorm_sequencing_rulecondition (
id int(10) unsigned NOT NULL auto_increment,
scormid int(10) unsigned NOT NULL default '0',
scoid int(10) unsigned NOT NULL default '0',
ruleconditionsid int(10) unsigned NOT NULL default '0',
refrencedobjective varchar(255) NOT NULL default '',
measurethreshold float(11,4) NOT NULL default '0.0000',
operator varchar(5) NOT NULL default 'noOp',
condition varchar(30) NOT NULL default 'always',
PRIMARY KEY (id),
UNIQUE (scormid, scoid,id,ruleconditionsid),
KEY ruleconditionsid (ruleconditionsid),
KEY scormid (scormid),
KEY scoid (scoid)
) TYPE=MyISAM;
CREATE TABLE prefix_scorm_sequencing_rolluprules (
id int(10) unsigned NOT NULL auto_increment,
scormid int(10) unsigned NOT NULL default '0',
scoid int(10) unsigned NOT NULL default '0',
rollupobjectivesatisfied TINYINT(1) unsigned NOT NULL default '1',
rollupprogresscompletion TINYINT(1) unsigned NOT NULL default '1',
objectivemeasureweight float(11,4) NOT NULL default '1.0000',
PRIMARY KEY (id),
KEY scormid (scormid),
KEY scoid (scoid)
) TYPE=MyISAM;
CREATE TABLE prefix_scorm_sequencing_rolluprule (
id int(10) unsigned NOT NULL auto_increment,
scormid int(10) unsigned NOT NULL default '0',
scoid int(10) unsigned NOT NULL default '0',
rolluprulesid int(10) unsigned NOT NULL default '0',
childactivityset varchar(15) NOT NULL default '',
minimumcount int(10) unsigned NOT NULL default '0',
minimumpercent float(11,4) unsigned NOT NULL default '0.0000',
conditioncombination varchar(3) NOT NULL default 'all',
action varchar(15) NOT NULL default '',
PRIMARY KEY (id),
UNIQUE (scormid, scoid, rolluprulesid, id),
KEY scormid (scormid),
KEY scoid (scoid)
) TYPE=MyISAM;
CREATE TABLE prefix_scorm_sequencing_rolluprulecondition (
id int(10) unsigned NOT NULL auto_increment,
scormid int(10) unsigned NOT NULL default '0',
scoid int(10) unsigned NOT NULL default '0',
rollupruleid int(10) unsigned NOT NULL default '0',
operator varchar(5) NOT NULL default 'noOp',
condition varchar(25) NOT NULL default '',
PRIMARY KEY (id),
UNIQUE (scormid, scoid, rollupruleid, id),
KEY scormid (scormid),
KEY scoid (scoid)
) TYPE=MyISAM;
CREATE TABLE prefix_scorm_sequencing_objectives (
id int(10) unsigned NOT NULL auto_increment,
scormid int(10) unsigned NOT NULL default '0',
scoid int(10) unsigned NOT NULL default '0',
primary tinyint(1) NOT NULL default '0',
objectiveid int(10) unsigned NOT NULL default '0',
satisfiedbymeasure tinyint(1) NOT NULL default '1',
minnormalizedmeasure float(11,4) unsigned NOT NULL default '1.0',
PRIMARY KEY (id),
UNIQUE (scormid, scoid, id),
KEY scormid (scormid),
KEY scoid (scoid)
) TYPE=MyISAM;
CREATE TABLE prefix_scorm_sequencing_objective (
id int(10) unsigned NOT NULL auto_increment,
scormid int(10) unsigned NOT NULL default '0',
scoid int(10) unsigned NOT NULL default '0',
objectiveid int(10) unsigned NOT NULL default '0',
targetobjectiveid int(10) unsigned NOT NULL default '0',
readsatisfiedstatus tinyint(1) NOT NULL default '1',
readnormalizedmeasure tinyint(1) NOT NULL default '1',
writesatisfiedstatus tinyint(1) NOT NULL default '0',
writenormalizedmeasure tinyint(1) NOT NULL default '0',
PRIMARY KEY (id),
UNIQUE (scormid, scoid, id, objectiveid),
KEY scormid (scormid),
KEY scoid (scoid)
) TYPE=MyISAM;
#
# Dumping data for table log_display
#

View file

@ -23,14 +23,61 @@ function xmldb_scorm_upgrade($oldversion=0) {
$result = true;
/// And upgrade begins here. For each one, you'll need one
/// block of code similar to the next one. Please, delete
/// this comment lines once this file start handling proper
/// upgrade code.
if ($result && $oldversion < 2006103100) {
/// Create the new sco optionals data table
/// if ($result && $oldversion < YYYYMMDD00) { //New version in version.php
/// $result = result of "/lib/ddllib.php" function calls
/// }
/// Define table scorm_scoes_data to be created
$table = new XMLDBTable('scorm_scoes_data');
/// Adding fields to table scorm_scoes_data
$table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
$table->addFieldInfo('scoid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
$table->addFieldInfo('name', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
$table->addFieldInfo('value', XMLDB_TYPE_TEXT, 'small', null, XMLDB_NOTNULL, null, null, null, null);
/// Adding keys to table scorm_scoes_data
$table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id'));
/// Adding indexes to table scorm_scoes_data
$table->addIndexInfo('scoid', XMLDB_INDEX_NOTUNIQUE, array('scoid'));
/// Launch create table for scorm_scoes_data
$result = $result && create_table($table);
/// The old fields used in scorm_scoes
$fields = array('parameters' => '',
'prerequisites' => '',
'maxtimeallowed' => '',
'timelimitaction' => '',
'datafromlms' => '',
'masteryscore' => '',
'next' => '0',
'previous' => '0');
/// Retrieve old datas
if ($olddatas = get_records('scorm_scoes')) {
foreach ($olddatas as $olddata) {
$newdata = new stdClass();
$newdata->scoid = $olddata->id;
foreach ($fields as $field => $value) {
if ($olddata->$field != $value) {
$newdata->name = addslashes($field);
$newdata->value = addslashes($olddata->$field);
$id = insert_record('scorm_scoes_data', $newdata);
$result = $result && ($id != 0);
}
}
}
}
/// Remove no more used fields
$table = new XMLDBTable('scorm_scoes');
foreach ($fields as $field => $value) {
$field = new XMLDBField($field);
$result = $result && drop_field($table, $field);
}
}
return $result;
}