[svn r13608] Added limit on SetValue() of interactions (cannot set higher than current length of interactions array) - Fixes FS#2037

skala
Yannick Warnier 18 years ago
parent 00d85a4332
commit 570d745395
  1. 108
      main/newscorm/scorm_api.php

@ -446,57 +446,65 @@ function LMSSetValue(param, val) {
if(myres = param.match(/cmi.interactions.(\d+).(id|time|type|correct_responses|weighting|student_response|result|latency)(.*)/)) if(myres = param.match(/cmi.interactions.(\d+).(id|time|type|correct_responses|weighting|student_response|result|latency)(.*)/))
{ {
elem_id = myres[1]; elem_id = myres[1];
if(interactions[elem_id] == null){ if(elem_id > interactions.length)
interactions[elem_id] = ['','','','','','','','']; {
//id(0), type(1), time(2), weighting(3),correct_responses(4),student_response(5),result(6),latency(7) G_LastError = G_InvalidArgumentError;
interactions[elem_id][4] = new Array(); return_value = false;
} }
elem_attrib = myres[2]; else
switch(elem_attrib) { {
case "id": if(interactions[elem_id] == null){
interactions[elem_id][0] = val; interactions[elem_id] = ['','','','','','','',''];
logit_scorm("Interaction "+elem_id+"'s id updated",2); //id(0), type(1), time(2), weighting(3),correct_responses(4),student_response(5),result(6),latency(7)
return_value='true'; interactions[elem_id][4] = new Array();
break; }
case "time": elem_attrib = myres[2];
interactions[elem_id][2] = val; switch(elem_attrib) {
logit_scorm("Interaction "+elem_id+"'s time updated",2); case "id":
return_value='true'; interactions[elem_id][0] = val;
break; logit_scorm("Interaction "+elem_id+"'s id updated",2);
case "type": return_value='true';
interactions[elem_id][1] = val; break;
logit_scorm("Interaction "+elem_id+"'s type updated",2); case "time":
return_value='true'; interactions[elem_id][2] = val;
break; logit_scorm("Interaction "+elem_id+"'s time updated",2);
case "correct_responses": return_value='true';
//do nothing yet break;
interactions[elem_id][4].push(val); case "type":
logit_scorm("Interaction "+elem_id+"'s correct_responses not updated",2); interactions[elem_id][1] = val;
return_value='true'; logit_scorm("Interaction "+elem_id+"'s type updated",2);
break; return_value='true';
case "weighting": break;
interactions[elem_id][3] = val; case "correct_responses":
logit_scorm("Interaction "+elem_id+"'s weighting updated",2); //do nothing yet
return_value='true'; interactions[elem_id][4].push(val);
break; logit_scorm("Interaction "+elem_id+"'s correct_responses not updated",2);
case "student_response": return_value='true';
interactions[elem_id][5] = val; break;
logit_scorm("Interaction "+elem_id+"'s student_response updated",2); case "weighting":
return_value='true'; interactions[elem_id][3] = val;
break; logit_scorm("Interaction "+elem_id+"'s weighting updated",2);
case "result": return_value='true';
interactions[elem_id][6] = val; break;
logit_scorm("Interaction "+elem_id+"'s result updated",2); case "student_response":
return_value='true'; interactions[elem_id][5] = val;
break; logit_scorm("Interaction "+elem_id+"'s student_response updated",2);
case "latency": return_value='true';
interactions[elem_id][7] = val; break;
logit_scorm("Interaction "+elem_id+"'s latency updated",2); case "result":
return_value='true'; interactions[elem_id][6] = val;
break; logit_scorm("Interaction "+elem_id+"'s result updated",2);
default: return_value='true';
G_lastError = G_NotImplementedError; break;
G_lastErrorString = 'Not implemented yet'; case "latency":
interactions[elem_id][7] = val;
logit_scorm("Interaction "+elem_id+"'s latency updated",2);
return_value='true';
break;
default:
G_lastError = G_NotImplementedError;
G_lastErrorString = 'Not implemented yet';
}
} }
}else if(param.substring(0,15)== 'cmi.objectives.'){ }else if(param.substring(0,15)== 'cmi.objectives.'){
var myres = ''; var myres = '';

Loading…
Cancel
Save