Merge branch 'master_MDL-37393' of github.com:danmarsden/moodle

This commit is contained in:
Dan Poltawski 2013-08-19 12:57:34 +08:00
commit a945d48127
3 changed files with 37 additions and 10 deletions

View File

@ -134,11 +134,17 @@ function scorm_parse_aicc($scorm) {
$extension = strtolower(substr($ext, 1));
if (in_array($extension, $extaiccfiles)) {
$id = strtolower(basename($filename, $ext));
if (!isset($ids[$id])) {
$ids[$id] = new stdClass();
}
$ids[$id]->$extension = $file;
}
}
foreach ($ids as $courseid => $id) {
if (!isset($courses[$courseid])) {
$courses[$courseid] = new stdClass();
}
if (isset($id->crs)) {
$contents = $id->crs->get_content();
$rows = explode("\r\n", $contents);
@ -169,6 +175,9 @@ function scorm_parse_aicc($scorm) {
if (preg_match($regexp, $rows[$i], $matches)) {
for ($j=0; $j<count($columns->columns); $j++) {
$column = $columns->columns[$j];
if (!isset($courses[$courseid]->elements[substr(trim($matches[$columns->mastercol+1]), 1 , -1)])) {
$courses[$courseid]->elements[substr(trim($matches[$columns->mastercol+1]), 1 , -1)] = new stdClass();
}
$courses[$courseid]->elements[substr(trim($matches[$columns->mastercol+1]), 1 , -1)]->$column = substr(trim($matches[$j+1]), 1, -1);
}
}
@ -268,13 +277,16 @@ function scorm_parse_aicc($scorm) {
if (isset($course->elements)) {
foreach ($course->elements as $element) {
unset($sco);
$sco = new stdClass();
$sco->identifier = $element->system_id;
$sco->scorm = $scorm->id;
$sco->organization = $course->id;
$sco->title = $element->title;
if (!isset($element->parent) || strtolower($element->parent) == 'root') {
if (!isset($element->parent)) {
$sco->parent = '/';
} else if (strtolower($element->parent) == 'root') {
$sco->parent = $course->id;
} else {
$sco->parent = $element->parent;
}

View File

@ -77,12 +77,15 @@ function xmldb_scorm_upgrade($oldversion) {
// Moodle v2.4.0 release upgrade line
// Put any upgrade step following this
// Put any upgrade step following this.
// Moodle v2.5.0 release upgrade line.
// Put any upgrade step following this.
// Remove old imsrepository type - convert any existing records to external type to help prevent major errors.
if ($oldversion < 2013050101) {
if ($oldversion < 2013081301) {
$scorms = $DB->get_recordset('scorm', array('scormtype' => 'imsrepository'));
foreach($scorms as $scorm) {
foreach ($scorms as $scorm) {
$scorm->scormtype = SCORM_TYPE_EXTERNAL;
if (!empty($CFG->repository)) { // Fix path to imsmanifest if $CFG->repository is set.
$scorm->reference = $CFG->repository.substr($scorm->reference, 1).'/imsmanifest.xml';
@ -91,13 +94,25 @@ function xmldb_scorm_upgrade($oldversion) {
$scorm->revision++;
$DB->update_record('scorm', $scorm);
}
upgrade_mod_savepoint(true, 2013050101, 'scorm');
upgrade_mod_savepoint(true, 2013081301, 'scorm');
}
// Moodle v2.5.0 release upgrade line.
// Put any upgrade step following this.
// Fix AICC parent/child relationships (MDL-37394).
if ($oldversion < 2013081302) {
// Get all AICC packages.
$aiccpackages = $DB->get_recordset('scorm', array('version' => 'AICC'), '', 'id');
foreach ($aiccpackages as $aicc) {
$sql = "UPDATE {scorm_scoes}
SET parent = organization
WHERE scorm = ?
AND " . $DB->sql_isempty('scorm_scoes', 'manifest', false, false) . "
AND " . $DB->sql_isnotempty('scorm_scoes', 'organization', false, false) . "
AND parent = '/'";
$DB->execute($sql, array($aicc->id));
}
$aiccpackages->close();
upgrade_mod_savepoint(true, 2013081302, 'scorm');
}
return true;
}

View File

@ -25,7 +25,7 @@
defined('MOODLE_INTERNAL') || die();
$module->version = 2013050101; // The current module version (Date: YYYYMMDDXX)
$module->version = 2013081302; // The current module version (Date: YYYYMMDDXX)
$module->requires = 2013050100; // Requires this Moodle version
$module->component = 'mod_scorm'; // Full name of the plugin (used for diagnostics)
$module->cron = 300;