From ba0e91a2814fb7e2482685f210a9a6a46f8eddc5 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Sat, 5 Nov 2011 15:21:19 +1300 Subject: [PATCH 1/2] SCORM MDL-27036 enable AICC HACP --- mod/scorm/aicc.php | 94 ++++++++++++++++++++------------ mod/scorm/datamodels/aicclib.php | 48 ++++++++++++++++ mod/scorm/db/install.xml | 26 ++++++++- mod/scorm/db/upgrade.php | 33 +++++++++++ mod/scorm/lang/en/scorm.php | 8 ++- mod/scorm/lib.php | 7 +++ mod/scorm/loadSCO.php | 7 ++- mod/scorm/player.php | 8 +-- mod/scorm/settings.php | 10 ++++ mod/scorm/version.php | 2 +- mod/scorm/view.php | 4 +- 11 files changed, 200 insertions(+), 47 deletions(-) diff --git a/mod/scorm/aicc.php b/mod/scorm/aicc.php index 40ce4a8d5f4..ea61f3947de 100644 --- a/mod/scorm/aicc.php +++ b/mod/scorm/aicc.php @@ -33,32 +33,47 @@ $command = required_param('command', PARAM_ALPHA); $sessionid = required_param('session_id', PARAM_ALPHANUM); $aiccdata = optional_param('aicc_data', '', PARAM_RAW); +$cfg_scorm = get_config('scorm'); + $url = new moodle_url('/mod/scorm/aicc.php', array('command'=>$command, 'session_id'=>$sessionid)); if ($aiccdata !== 0) { $url->param('aicc_data', $aiccdata); } $PAGE->set_url($url); -require_login(); +if (empty($cfg_scorm->allowaicchacp)) { + require_login(); + if (!confirm_sesskey($sessionid)) { + print_error('invalidsesskey'); + } + $aiccuser = $USER; + $scormsession = $SESSION->scorm; +} else { + $scormsession = scorm_aicc_confirm_hacp_session($sessionid); + if (empty($scormsession)) { + print_error('invalidhacpsession', 'scorm'); + } + $aiccuser = $DB->get_record('user', array('id'=>$scormsession->userid), 'id,username,lastname,firstname', MUST_EXIST); +} -if (!empty($command) && confirm_sesskey($sessionid)) { +if (!empty($command)) { $command = strtolower($command); - if (isset($SESSION->scorm_scoid)) { - $scoid = $SESSION->scorm_scoid; + if (isset($scormsession->scoid)) { + $scoid = $scormsession->scoid; } else { print_error('cannotcallscript'); } $mode = 'normal'; - if (isset($SESSION->scorm_mode)) { - $mode = $SESSION->scorm_mode; + if (isset($scormsession->scormmode)) { + $mode = $scormsession->scormmode; } $status = 'Not Initialized'; - if (isset($SESSION->scorm_status)) { - $status = $SESSION->scorm_status; + if (isset($scormsession->scormstatus)) { + $status = $scormsession->scormstatus; } - if (isset($SESSION->scorm_attempt)) { - $attempt = $SESSION->scorm_attempt; + if (isset($scormsession->attempt)) { + $attempt = $scormsession->attempt; } else { $attempt = 1; } @@ -84,20 +99,20 @@ if (!empty($command) && confirm_sesskey($sessionid)) { switch ($command) { case 'getparam': if ($status == 'Not Initialized') { - $SESSION->scorm_status = 'Running'; + $scormsession->scormstatus = 'Running'; $status = 'Running'; } if ($status != 'Running') { echo "error=101\r\nerror_text=Terminated\r\n"; } else { - if ($usertrack=scorm_get_tracks($scoid, $USER->id, $attempt)) { + if ($usertrack=scorm_get_tracks($scoid, $aiccuser->id, $attempt)) { $userdata = $usertrack; } else { $userdata->status = ''; $userdata->score_raw = ''; } - $userdata->student_id = $USER->username; - $userdata->student_name = $USER->lastname .', '. $USER->firstname; + $userdata->student_id = $aiccuser->username; + $userdata->student_name = $aiccuser->lastname .', '. $aiccuser->firstname; $userdata->mode = $mode; if ($userdata->mode == 'normal') { $userdata->credit = 'credit'; @@ -135,10 +150,10 @@ if (!empty($command) && confirm_sesskey($sessionid)) { } if (isset($userdata->{'cmi.core.lesson_status'})) { echo 'Lesson_Status='.$userdata->{'cmi.core.lesson_status'}.$userdata->entry."\r\n"; - $SESSION->scorm_lessonstatus = $userdata->{'cmi.core.lesson_status'}; + $scormsession->scorm_lessonstatus = $userdata->{'cmi.core.lesson_status'}; } else { echo 'Lesson_Status=not attempted'.$userdata->entry."\r\n"; - $SESSION->scorm_lessonstatus = 'not attempted'; + $scormsession->scorm_lessonstatus = 'not attempted'; } if (isset($userdata->{'cmi.core.score.raw'})) { $max = ''; @@ -183,8 +198,8 @@ if (!empty($command) && confirm_sesskey($sessionid)) { if (!empty($aiccdata) && has_capability('mod/scorm:savetrack', get_context_instance(CONTEXT_MODULE, $cm->id))) { $initlessonstatus = 'not attempted'; $lessonstatus = 'not attempted'; - if (isset($SESSION->scorm_lessonstatus)) { - $initlessonstatus = $SESSION->scorm_lessonstatus; + if (isset($scormsession->scorm_lessonstatus)) { + $initlessonstatus = $scormsession->scorm_lessonstatus; } $score = ''; $datamodel['lesson_location'] = 'cmi.core.lesson_location'; @@ -203,7 +218,7 @@ if (!empty($command) && confirm_sesskey($sessionid)) { $element = $datamodel[$element]; switch ($element) { case 'cmi.core.lesson_location': - $id = scorm_insert_track($USER->id, $scorm->id, $sco->id, $attempt, $element, $value); + $id = scorm_insert_track($aiccuser->id, $scorm->id, $sco->id, $attempt, $element, $value); break; case 'cmi.core.lesson_status': $statuses = array( @@ -239,13 +254,13 @@ if (!empty($command) && confirm_sesskey($sessionid)) { } if (empty($value) || isset($exites[$value])) { $subelement = 'cmi.core.exit'; - $id = scorm_insert_track($USER->id, $scorm->id, $sco->id, $attempt, $subelement, $value); + $id = scorm_insert_track($aiccuser->id, $scorm->id, $sco->id, $attempt, $subelement, $value); } $value = trim(strtolower($values[0])); $value = $value[0]; if (isset($statuses[$value]) && ($mode == 'normal')) { $value = $statuses[$value]; - $id = scorm_insert_track($USER->id, $scorm->id, $sco->id, $attempt, $element, $value); + $id = scorm_insert_track($aiccuser->id, $scorm->id, $sco->id, $attempt, $element, $value); } $lessonstatus = $value; break; @@ -254,23 +269,23 @@ if (!empty($command) && confirm_sesskey($sessionid)) { if ((count($values) > 1) && ($values[1] >= $values[0]) && is_numeric($values[1])) { $subelement = 'cmi.core.score.max'; $value = trim($values[1]); - $id = scorm_insert_track($USER->id, $scorm->id, $sco->id, $attempt, $subelement, $value); + $id = scorm_insert_track($aiccuser->id, $scorm->id, $sco->id, $attempt, $subelement, $value); if ((count($values) == 3) && ($values[2] <= $values[0]) && is_numeric($values[2])) { $subelement = 'cmi.core.score.min'; $value = trim($values[2]); - $id = scorm_insert_track($USER->id, $scorm->id, $sco->id, $attempt, $subelement, $value); + $id = scorm_insert_track($aiccuser->id, $scorm->id, $sco->id, $attempt, $subelement, $value); } } $value = ''; if (is_numeric($values[0])) { $value = trim($values[0]); - $id = scorm_insert_track($USER->id, $scorm->id, $sco->id, $attempt, $element, $value); + $id = scorm_insert_track($aiccuser->id, $scorm->id, $sco->id, $attempt, $element, $value); } $score = $value; break; case 'cmi.core.session_time': - $SESSION->scorm_session_time = $value; + $scormsession->sessiontime = $value; break; } } @@ -283,13 +298,13 @@ if (!empty($command) && confirm_sesskey($sessionid)) { next($datarows); } $value = rawurlencode($value); - $id = scorm_insert_track($USER->id, $scorm->id, $sco->id, $attempt, $element, $value); + $id = scorm_insert_track($aiccuser->id, $scorm->id, $sco->id, $attempt, $element, $value); } } } if (($mode == 'browse') && ($initlessonstatus == 'not attempted')) { $lessonstatus = 'browsed'; - $id = scorm_insert_track($USER->id, $scorm->id, $sco->id, $attempt, 'cmi.core.lesson_status', 'browsed'); + $id = scorm_insert_track($aiccuser->id, $scorm->id, $sco->id, $attempt, 'cmi.core.lesson_status', 'browsed'); } if ($mode == 'normal') { if ($sco = scorm_get_sco($scoid)) { @@ -302,7 +317,7 @@ if (!empty($command) && confirm_sesskey($sessionid)) { } } } - $id = scorm_insert_track($USER->id, $scorm->id, $sco->id, $attempt, 'cmi.core.lesson_status', $lessonstatus); + $id = scorm_insert_track($aiccuser->id, $scorm->id, $sco->id, $attempt, 'cmi.core.lesson_status', $lessonstatus); } } } @@ -360,32 +375,32 @@ if (!empty($command) && confirm_sesskey($sessionid)) { break; case 'exitau': if ($status == 'Running') { - if (isset($SESSION->scorm_session_time) && ($SESSION->scorm_session_time != '')) { - if ($track = $DB->get_record('scorm_scoes_track', array("userid"=>$USER->id, + if (isset($scormsession->sessiontime) && ($scormsession->sessiontime != '')) { + if ($track = $DB->get_record('scorm_scoes_track', array("userid"=>$aiccuser->id, "scormid"=>$scorm->id, "scoid"=>$sco->id, "attempt"=>$attempt, "element"=>'cmi.core.total_time'))) { // Add session_time to total_time - $value = scorm_add_time($track->value, $SESSION->scorm_session_time); + $value = scorm_add_time($track->value, $scormsession->sessiontime); $track->value = $value; $track->timemodified = time(); $DB->update_record('scorm_scoes_track', $track); } else { $track = new stdClass(); - $track->userid = $USER->id; + $track->userid = $aiccuser->id; $track->scormid = $scorm->id; $track->scoid = $sco->id; $track->element = 'cmi.core.total_time'; - $track->value = $SESSION->scorm_session_time; + $track->value = $scormsession->sessiontime; $track->attempt = $attempt; $track->timemodified = time(); $id = $DB->insert_record('scorm_scoes_track', $track); } - scorm_update_grades($scorm, $USER->id); + scorm_update_grades($scorm, $aiccuser->id); } - $SESSION->scorm_status = 'Terminated'; - $SESSION->scorm_session_time = ''; + $scormsession->scormstatus = 'Terminated'; + $scormsession->session_time = ''; echo "error=0\r\nerror_text=Successful\r\n"; } else if ($status == 'Terminated') { echo "error=1\r\nerror_text=Terminated\r\n"; @@ -405,6 +420,13 @@ if (!empty($command) && confirm_sesskey($sessionid)) { echo "error=3\r\nerror_text=Invalid Session ID\r\n"; } } +if (empty($cfg_scorm->allowaicchacp)) { + $SESSION->scorm = $scormsession; +} else { + $scormsession->timemodified = time(); + $DB->update_record('scorm_aicc_session', $scormsession); +} + $aiccresponse = ob_get_contents(); scorm_debug_log_write("aicc", "HACP Response:\r\n$aiccresponse", $scoid); ob_end_flush(); \ No newline at end of file diff --git a/mod/scorm/datamodels/aicclib.php b/mod/scorm/datamodels/aicclib.php index 016a55a3d4d..1340181f366 100644 --- a/mod/scorm/datamodels/aicclib.php +++ b/mod/scorm/datamodels/aicclib.php @@ -341,3 +341,51 @@ function scorm_parse_aicc($scorm) { return true; } + +/** + * Given a scormid creates an AICC Session record to allow HACP + * + * @param int $scormid - id from scorm table + * @return string hacpsession + */ +function scorm_aicc_get_hacp_session($scormid) { + global $USER, $DB, $SESSION; + $cfg_scorm = get_config('scorm'); + if (empty($cfg_scorm->allowaicchacp)) { + return false; + } + $now = time(); + + $hacpsession = $SESSION->scorm; + $hacpsession->scormid = $scormid; + $hacpsession->hacpsession = random_string(10); + $hacpsession->userid = $USER->id; + $hacpsession->timecreated = $now; + $hacpsession->timemodified = $now; + $DB->insert_record('scorm_aicc_session', $hacpsession); + + return $hacpsession->hacpsession; +} + +/** + * Check the hacp_session for whether it is valid. + * + * @param string $hacpsession The hacpsession value to check (optional). Normally leave this blank + * and this function will do required_param('sesskey', ...). + * @return mixed - false if invalid, otherwise returns record from scorm_aicc_session table. + */ +function scorm_aicc_confirm_hacp_session($hacpsession) { + global $DB; + $cfg_scorm = get_config('scorm'); + if (empty($cfg_scorm->allowaicchacp)) { + return false; + } + $time = time()-($cfg_scorm->aicchacptimeout * 60); + $sql = "hacpsession = ? AND timemodified > ?"; + $hacpsession = $DB->get_record_select('scorm_aicc_session', $sql, array($hacpsession, $time)); + if (!empty($hacpsession)) { //update timemodified as this is still an active session - resets the timeout. + $hacpsession->timemodified = time(); + $DB->update_record('scorm_aicc_session', $hacpsession); + } + return $hacpsession; +} \ No newline at end of file diff --git a/mod/scorm/db/install.xml b/mod/scorm/db/install.xml index ca356ba28d9..fefbb5fc786 100644 --- a/mod/scorm/db/install.xml +++ b/mod/scorm/db/install.xml @@ -1,5 +1,5 @@ - @@ -179,7 +179,7 @@ - +
@@ -194,5 +194,27 @@
+ + + + + + + + + + + + + + + + + + + + +
+
\ No newline at end of file diff --git a/mod/scorm/db/upgrade.php b/mod/scorm/db/upgrade.php index 2335654b46d..32396c9a462 100644 --- a/mod/scorm/db/upgrade.php +++ b/mod/scorm/db/upgrade.php @@ -571,6 +571,39 @@ function xmldb_scorm_upgrade($oldversion) { upgrade_mod_savepoint(true, 2011080100, 'scorm'); } + if ($oldversion < 2011110502) { + + // Define table scorm_aicc_session to be created + $table = new xmldb_table('scorm_aicc_session'); + + // Adding fields to table scorm_aicc_session + $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null); + $table->add_field('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0'); + $table->add_field('scormid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0'); + $table->add_field('hacpsession', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null); + $table->add_field('scoid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, '0'); + $table->add_field('scormmode', XMLDB_TYPE_CHAR, '50', null, null, null, null); + $table->add_field('scormstatus', XMLDB_TYPE_CHAR, '255', null, null, null, null); + $table->add_field('attempt', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null); + $table->add_field('lessonstatus', XMLDB_TYPE_CHAR, '255', null, null, null, null); + $table->add_field('sessiontime', XMLDB_TYPE_CHAR, '255', null, null, null, null); + $table->add_field('timecreated', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0'); + $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0'); + + // Adding keys to table scorm_aicc_session + $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id')); + $table->add_key('scormid', XMLDB_KEY_FOREIGN, array('scormid'), 'scorm', array('id')); + $table->add_key('userid', XMLDB_KEY_FOREIGN, array('userid'), 'user', array('id')); + + // Conditionally launch create table for scorm_aicc_session + if (!$dbman->table_exists($table)) { + $dbman->create_table($table); + } + + // scorm savepoint reached + upgrade_mod_savepoint(true, 2011110502, 'scorm'); + } + return true; } diff --git a/mod/scorm/lang/en/scorm.php b/mod/scorm/lang/en/scorm.php index b0a55f053cf..119f1a0f9bd 100644 --- a/mod/scorm/lang/en/scorm.php +++ b/mod/scorm/lang/en/scorm.php @@ -23,7 +23,10 @@ */ $string['toc'] = 'TOC'; $string['navigation'] = 'Navigation'; - +$string['aicchacptimeout'] = 'AICC HACP Timeout'; +$string['aicchacptimeout_desc'] = 'Length of time in minutes that an AICC HACP session can remain open'; +$string['aicchacpkeepsessiondata'] = 'AICC HACP session data'; +$string['aicchacpkeepsessiondata_desc'] = 'Length of time in days to keep the AICC HACP session data (a high setting will fill up the table with old data but may be useful when debugging)'; $string['activation'] = 'Activation'; $string['activityloading'] = 'You will be automatically redirected to the activity in'; $string['activitypleasewait'] = 'Activity loading, please wait ...'; @@ -33,6 +36,8 @@ $string['allowapidebug'] = 'Activate API debug and tracing (set the capture mask $string['allowtypeexternal'] = 'Enable external package type'; $string['allowtypeimsrepository'] = 'Enable IMS package type'; $string['allowtypelocalsync'] = 'Enable downloaded package type'; +$string['allowtypeaicchacp'] = 'Enable AICC HACP'; +$string['allowtypeaicchacp_desc'] = 'If enabled this allows AICC HACP external communication without requiring user login for post requests from the external AICC package'; $string['apidebugmask'] = 'API debug capture mask - use a simple regex on <username>:<activityname> e.g. admin:.* will debug for admin user only'; $string['areacontent'] = 'Content files'; $string['areapackage'] = 'Package file'; @@ -161,6 +166,7 @@ $string['interactionstype'] = 'Type of question'; $string['interactionsweight'] = 'Weight assigned to the element'; $string['interactionslearnerresponse'] = 'Learner\'s Response'; $string['invalidactivity'] = 'Scorm activity is incorrect'; +$string['invalidhacpsession'] = 'Invalid HACP Session'; $string['invalidmanifestresource'] = 'WARNING: The following resources were referenced in your manifest but couldn\'t be found:'; $string['last'] = 'Last accessed on'; $string['lastaccess'] = 'Last access'; diff --git a/mod/scorm/lib.php b/mod/scorm/lib.php index 16fcb32f95f..27288897669 100644 --- a/mod/scorm/lib.php +++ b/mod/scorm/lib.php @@ -504,6 +504,13 @@ function scorm_cron () { foreach ($scormsupdate as $scormupdate) { scorm_parse($scormupdate, true); } + + //now clear out AICC session table with old session data + $cfg_scorm = get_config('scorm'); + if (!empty($cfg_scorm->allowaicchacp)) { + $expiretime = time() - ($cfg_scorm->aicchacpkeepsessiondata*24*60*60); + $DB->delete_records_select('scorm_aicc_session', 'WHERE timemodified < ?', array($expiretime)); + } } return true; diff --git a/mod/scorm/loadSCO.php b/mod/scorm/loadSCO.php index 057ea84c721..d7988f576e8 100644 --- a/mod/scorm/loadSCO.php +++ b/mod/scorm/loadSCO.php @@ -108,11 +108,16 @@ if ((isset($sco->parameters) && (!empty($sco->parameters))) || ($version == 'AIC } if ($version == 'AICC') { + require_once("$CFG->dirroot/mod/scorm/datamodels/aicclib.php"); + $aicc_sid = scorm_aicc_get_hacp_session($scorm->id); + if (empty($aicc_sid)) { + $aicc_sid = sesskey(); + } $sco_params = ''; if (isset($sco->parameters) && (!empty($sco->parameters))) { $sco_params = '&'. $sco->parameters; } - $launcher = $sco->launch.$connector.'aicc_sid='.sesskey().'&aicc_url='.$CFG->wwwroot.'/mod/scorm/aicc.php'.$sco_params; + $launcher = $sco->launch.$connector.'aicc_sid='.$aicc_sid.'&aicc_url='.$CFG->wwwroot.'/mod/scorm/aicc.php'.$sco_params; } else { if (isset($sco->parameters) && (!empty($sco->parameters))) { $launcher = $sco->launch.$connector.$sco->parameters; diff --git a/mod/scorm/player.php b/mod/scorm/player.php index 4399d234eae..0b9a806d1e0 100644 --- a/mod/scorm/player.php +++ b/mod/scorm/player.php @@ -170,10 +170,10 @@ if ($mode == 'browse') { } $orgstr = '¤torg='.$currentorg; -$SESSION->scorm_scoid = $sco->id; -$SESSION->scorm_status = 'Not Initialized'; -$SESSION->scorm_mode = $mode; -$SESSION->scorm_attempt = $attempt; +$SESSION->scorm->scoid = $sco->id; +$SESSION->scorm->scormstatus = 'Not Initialized'; +$SESSION->scorm->scormmode = $mode; +$SESSION->scorm->attempt = $attempt; // Mark module viewed $completion = new completion_info($course); diff --git a/mod/scorm/settings.php b/mod/scorm/settings.php index 90463b142cd..06de0aaadbf 100644 --- a/mod/scorm/settings.php +++ b/mod/scorm/settings.php @@ -123,6 +123,16 @@ if ($ADMIN->fulltree) { $settings->add(new admin_setting_configcheckbox('scorm/allowtypeimsrepository', get_string('allowtypeimsrepository', 'scorm'), '', 0)); + $settings->add(new admin_setting_configcheckbox('scorm/allowaicchacp', get_string('allowtypeaicchacp', 'scorm'), get_string('allowtypeaicchacp_desc', 'scorm'), 0)); + + $settings->add(new admin_setting_configtext('scorm/aicchacptimeout', + get_string('aicchacptimeout', 'scorm'), get_string('aicchacptimeout_desc', 'scorm'), + 30, PARAM_INT)); + + $settings->add(new admin_setting_configtext('scorm/aicchacpkeepsessiondata', + get_string('aicchacpkeepsessiondata', 'scorm'), get_string('aicchacpkeepsessiondata_desc', 'scorm'), + 1, PARAM_INT)); + $settings->add(new admin_setting_configcheckbox('scorm/forcejavascript', get_string('forcejavascript', 'scorm'), get_string('forcejavascript_desc', 'scorm'), 1)); $settings->add(new admin_setting_configcheckbox('scorm/allowapidebug', get_string('allowapidebug', 'scorm'), '', 0)); diff --git a/mod/scorm/version.php b/mod/scorm/version.php index 59dfec015ed..52a0c192a2e 100644 --- a/mod/scorm/version.php +++ b/mod/scorm/version.php @@ -23,6 +23,6 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -$module->version = 2011080100; // The (date) version of this module +$module->version = 2011110502; // The (date) version of this module $module->requires = 2010080300; // The version of Moodle that is required $module->cron = 300; // How often should cron check this module (seconds)? diff --git a/mod/scorm/view.php b/mod/scorm/view.php index 43b80f00fa5..2b7775dea51 100644 --- a/mod/scorm/view.php +++ b/mod/scorm/view.php @@ -60,8 +60,8 @@ require_login($course->id, false, $cm); $context = get_context_instance(CONTEXT_COURSE, $course->id); $contextmodule = get_context_instance(CONTEXT_MODULE, $cm->id); -if (isset($SESSION->scorm_scoid)) { - unset($SESSION->scorm_scoid); +if (isset($SESSION->scorm)) { + unset($SESSION->scorm); } $strscorms = get_string("modulenameplural", "scorm"); From 3cfffd8c3eb330b426e984e0faa2a86e3f113212 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Mon, 7 Nov 2011 14:34:13 +1300 Subject: [PATCH 2/2] SCORM MDL-27036 increase sessid, improve lang strings --- mod/scorm/datamodels/aicclib.php | 2 +- mod/scorm/lang/en/scorm.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mod/scorm/datamodels/aicclib.php b/mod/scorm/datamodels/aicclib.php index 1340181f366..b902a67c846 100644 --- a/mod/scorm/datamodels/aicclib.php +++ b/mod/scorm/datamodels/aicclib.php @@ -358,7 +358,7 @@ function scorm_aicc_get_hacp_session($scormid) { $hacpsession = $SESSION->scorm; $hacpsession->scormid = $scormid; - $hacpsession->hacpsession = random_string(10); + $hacpsession->hacpsession = random_string(20); $hacpsession->userid = $USER->id; $hacpsession->timecreated = $now; $hacpsession->timemodified = $now; diff --git a/mod/scorm/lang/en/scorm.php b/mod/scorm/lang/en/scorm.php index 119f1a0f9bd..cce47083ad1 100644 --- a/mod/scorm/lang/en/scorm.php +++ b/mod/scorm/lang/en/scorm.php @@ -24,9 +24,9 @@ $string['toc'] = 'TOC'; $string['navigation'] = 'Navigation'; $string['aicchacptimeout'] = 'AICC HACP Timeout'; -$string['aicchacptimeout_desc'] = 'Length of time in minutes that an AICC HACP session can remain open'; +$string['aicchacptimeout_desc'] = 'Length of time in minutes that an external AICC HACP session can remain open'; $string['aicchacpkeepsessiondata'] = 'AICC HACP session data'; -$string['aicchacpkeepsessiondata_desc'] = 'Length of time in days to keep the AICC HACP session data (a high setting will fill up the table with old data but may be useful when debugging)'; +$string['aicchacpkeepsessiondata_desc'] = 'Length of time in days to keep the external AICC HACP session data (a high setting will fill up the table with old data but may be useful when debugging)'; $string['activation'] = 'Activation'; $string['activityloading'] = 'You will be automatically redirected to the activity in'; $string['activitypleasewait'] = 'Activity loading, please wait ...'; @@ -36,7 +36,7 @@ $string['allowapidebug'] = 'Activate API debug and tracing (set the capture mask $string['allowtypeexternal'] = 'Enable external package type'; $string['allowtypeimsrepository'] = 'Enable IMS package type'; $string['allowtypelocalsync'] = 'Enable downloaded package type'; -$string['allowtypeaicchacp'] = 'Enable AICC HACP'; +$string['allowtypeaicchacp'] = 'Enable external AICC HACP'; $string['allowtypeaicchacp_desc'] = 'If enabled this allows AICC HACP external communication without requiring user login for post requests from the external AICC package'; $string['apidebugmask'] = 'API debug capture mask - use a simple regex on <username>:<activityname> e.g. admin:.* will debug for admin user only'; $string['areacontent'] = 'Content files';