diff --git a/mod/scorm/datamodels/aicc.js b/mod/scorm/datamodels/aicc.js index 2dfa72beaec..cc103bbabab 100644 --- a/mod/scorm/datamodels/aicc.js +++ b/mod/scorm/datamodels/aicc.js @@ -155,7 +155,7 @@ function AICCapi(def, cmiobj, scormauto, cfgwwwroot, scormid, scoid, attempt, vi for (element in datamodel[scoid]) { if (element.match(/\.n\./) == null) { - if ((typeof eval('datamodel["' + scoid + '"]["' + element + '"].defaultvalue')) != 'undefined') { + if (typeof datamodel[scoid][element].defaultvalue != 'undefined') { eval(element + ' = datamodel["' + scoid + '"]["' + element + '"].defaultvalue;'); } else { eval(element + ' = "";'); @@ -233,8 +233,8 @@ function AICCapi(def, cmiobj, scormauto, cfgwwwroot, scormid, scoid, attempt, vi if (element != "") { expression = new RegExp(CMIIndex,'g'); elementmodel = String(element).replace(expression,'.n.'); - if ((typeof eval('datamodel["' + scoid + '"]["' + elementmodel + '"]')) != "undefined") { - if (eval('datamodel["' + scoid + '"]["' + elementmodel + '"].mod') != 'w') { + if (typeof datamodel[scoid][elementmodel] != "undefined") { + if (datamodel[scoid][elementmodel].mod != 'w') { element = String(element).replace(expression, "_$1."); elementIndexes = element.split('.'); subelement = 'cmi'; @@ -249,21 +249,21 @@ function AICCapi(def, cmiobj, scormauto, cfgwwwroot, scormid, scoid, attempt, vi errorCode = "0"; // Need to check if it is the right errorCode } } else { - errorCode = eval('datamodel["' + scoid + '"]["' + elementmodel + '"].readerror'); + errorCode = datamodel[scoid][elementmodel].readerror; } } else { childrenstr = '._children'; countstr = '._count'; if (elementmodel.substr(elementmodel.length - childrenstr.length,elementmodel.length) == childrenstr) { parentmodel = elementmodel.substr(0,elementmodel.length - childrenstr.length); - if ((typeof eval('datamodel["' + scoid + '"]["' + parentmodel + '"]')) != "undefined") { + if (typeof datamodel[scoid][parentmodel] != "undefined") { errorCode = "202"; } else { errorCode = "201"; } } else if (elementmodel.substr(elementmodel.length - countstr.length,elementmodel.length) == countstr) { parentmodel = elementmodel.substr(0,elementmodel.length - countstr.length); - if ((typeof eval('datamodel["' + scoid + '"]["' + parentmodel + '"]')) != "undefined") { + if (typeof datamodel[scoid][parentmodel] != "undefined") { errorCode = "203"; } else { errorCode = "201"; @@ -287,9 +287,9 @@ function AICCapi(def, cmiobj, scormauto, cfgwwwroot, scormid, scoid, attempt, vi if (element != "") { expression = new RegExp(CMIIndex,'g'); elementmodel = String(element).replace(expression,'.n.'); - if ((typeof eval('datamodel["' + scoid + '"]["' + elementmodel + '"]')) != "undefined") { - if (eval('datamodel["' + scoid + '"]["' + elementmodel + '"].mod') != 'r') { - expression = new RegExp(eval('datamodel["' + scoid + '"]["' + elementmodel + '"].format')); + if (typeof datamodel[scoid][elementmodel] != "undefined") { + if (datamodel[scoid][elementmodel].mod != 'r') { + expression = new RegExp(datamodel[scoid][elementmodel].format); value = value + ''; matches = value.match(expression); if (matches != null) { @@ -339,8 +339,8 @@ function AICCapi(def, cmiobj, scormauto, cfgwwwroot, scormid, scoid, attempt, vi if (autocommit && !(AICCapi.timeout)) { AICCapi.timeout = Y.later(60000, API, 'LMSCommit', [""], false); } - if ((typeof eval('datamodel["' + scoid + '"]["' + elementmodel + '"].range')) != "undefined") { - range = eval('datamodel["' + scoid + '"]["' + elementmodel + '"].range'); + if (typeof datamodel[scoid][elementmodel].range != "undefined") { + range = datamodel[scoid][elementmodel].range; ranges = range.split('#'); value = value * 1.0; if ((value >= ranges[0]) && (value <= ranges[1])) { @@ -348,7 +348,7 @@ function AICCapi(def, cmiobj, scormauto, cfgwwwroot, scormid, scoid, attempt, vi errorCode = "0"; return "true"; } else { - errorCode = eval('datamodel["' + scoid + '"]["' + elementmodel + '"].writeerror'); + errorCode = datamodel[scoid][elementmodel].writeerror; } } else { if (element == 'cmi.comments') { @@ -361,10 +361,10 @@ function AICCapi(def, cmiobj, scormauto, cfgwwwroot, scormid, scoid, attempt, vi } } } else { - errorCode = eval('datamodel["' + scoid + '"]["' + elementmodel + '"].writeerror'); + errorCode = datamodel[scoid][elementmodel].writeerror; } } else { - errorCode = eval('datamodel["' + scoid + '"]["' + elementmodel + '"].writeerror'); + errorCode = datamodel[scoid][elementmodel].writeerror; } } else { errorCode = "201" @@ -490,11 +490,11 @@ function AICCapi(def, cmiobj, scormauto, cfgwwwroot, scormid, scoid, attempt, vi element = parent + '.' + property; expression = new RegExp(CMIIndex,'g'); elementmodel = String(element).replace(expression,'.n.'); - if ((typeof eval('datamodel["' + scoid + '"]["' + elementmodel + '"]')) != "undefined") { - if (eval('datamodel["' + scoid + '"]["' + elementmodel + '"].mod') != 'r') { + if (typeof datamodel[scoid][elementmodel] != "undefined") { + if (datamodel[scoid][elementmodel].mod != 'r') { elementstring = '&' + underscore(element) + '=' + escape(data[property]); - if ((typeof eval('datamodel["' + scoid + '"]["' + elementmodel + '"].defaultvalue')) != "undefined") { - if (eval('datamodel["' + scoid + '"]["' + elementmodel + '"].defaultvalue') != data[property]) { + if (typeof datamodel[scoid][elementmodel].defaultvalue != "undefined") { + if (datamodel[scoid][elementmodel].defaultvalue != data[property]) { datastring += elementstring; } } else { diff --git a/mod/scorm/datamodels/scorm_12.js b/mod/scorm/datamodels/scorm_12.js index 2adb0837c83..5576a90bb7c 100644 --- a/mod/scorm/datamodels/scorm_12.js +++ b/mod/scorm/datamodels/scorm_12.js @@ -147,7 +147,7 @@ function SCORMapi1_2(def, cmiobj, cmiint, cmistring256, cmistring4096, scormdebu for (element in datamodel[scoid]) { if (element.match(/\.n\./) == null) { - if ((typeof eval('datamodel["' + scoid + '"]["' + element + '"].defaultvalue')) != 'undefined') { + if (typeof datamodel[scoid][element].defaultvalue != 'undefined') { eval(element + ' = datamodel["' + scoid + '"]["' + element + '"].defaultvalue;'); } else { eval(element + ' = "";'); @@ -244,8 +244,8 @@ function SCORMapi1_2(def, cmiobj, cmiint, cmistring256, cmistring4096, scormdebu if (element != "") { expression = new RegExp(CMIIndex,'g'); elementmodel = String(element).replace(expression,'.n.'); - if ((typeof eval('datamodel["' + scoid + '"]["' + elementmodel + '"]')) != "undefined") { - if (eval('datamodel["' + scoid + '"]["' + elementmodel + '"].mod') != 'w') { + if (typeof datamodel[scoid][elementmodel] != "undefined") { + if (datamodel[scoid][elementmodel].mod != 'w') { element = String(element).replace(expression, "_$1."); elementIndexes = element.split('.'); subelement = 'cmi'; @@ -263,21 +263,21 @@ function SCORMapi1_2(def, cmiobj, cmiint, cmistring256, cmistring4096, scormdebu errorCode = "0"; // Need to check if it is the right errorCode } } else { - errorCode = eval('datamodel["' + scoid + '"]["' + elementmodel + '"].readerror'); + errorCode = datamodel[scoid][elementmodel].readerror; } } else { childrenstr = '._children'; countstr = '._count'; if (elementmodel.substr(elementmodel.length - childrenstr.length,elementmodel.length) == childrenstr) { parentmodel = elementmodel.substr(0,elementmodel.length - childrenstr.length); - if ((typeof eval('datamodel["' + scoid + '"]["' + parentmodel + '"]')) != "undefined") { + if (typeof datamodel[scoid][parentmodel] != "undefined") { errorCode = "202"; } else { errorCode = "201"; } } else if (elementmodel.substr(elementmodel.length - countstr.length,elementmodel.length) == countstr) { parentmodel = elementmodel.substr(0,elementmodel.length - countstr.length); - if ((typeof eval('datamodel["' + scoid + '"]["' + parentmodel + '"]')) != "undefined") { + if (typeof datamodel[scoid][parentmodel] != "undefined") { errorCode = "203"; } else { errorCode = "201"; @@ -304,9 +304,9 @@ function SCORMapi1_2(def, cmiobj, cmiint, cmistring256, cmistring4096, scormdebu if (element != "") { expression = new RegExp(CMIIndex,'g'); elementmodel = String(element).replace(expression,'.n.'); - if ((typeof eval('datamodel["' + scoid + '"]["' + elementmodel + '"]')) != "undefined") { - if (eval('datamodel["' + scoid + '"]["' + elementmodel + '"].mod') != 'r') { - expression = new RegExp(eval('datamodel["' + scoid + '"]["' + elementmodel + '"].format')); + if (typeof datamodel[scoid][elementmodel] != "undefined") { + if (datamodel[scoid][elementmodel].mod != 'r') { + expression = new RegExp(datamodel[scoid][elementmodel].format); value = value + ''; matches = value.match(expression); if (matches != null) { @@ -356,8 +356,8 @@ function SCORMapi1_2(def, cmiobj, cmiint, cmistring256, cmistring4096, scormdebu if (autocommit && !(SCORMapi1_2.timeout)) { SCORMapi1_2.timeout = Y.later(60000, API, 'LMSCommit', [""], false); } - if ((typeof eval('datamodel["' + scoid + '"]["' + elementmodel + '"].range')) != "undefined") { - range = eval('datamodel["' + scoid + '"]["' + elementmodel + '"].range'); + if (typeof datamodel[scoid][elementmodel].range != "undefined") { + range = datamodel[scoid][elementmodel].range; ranges = range.split('#'); value = value * 1.0; if ((value >= ranges[0]) && (value <= ranges[1])) { @@ -368,7 +368,7 @@ function SCORMapi1_2(def, cmiobj, cmiint, cmistring256, cmistring4096, scormdebu } return "true"; } else { - errorCode = eval('datamodel["' + scoid + '"]["' + elementmodel + '"].writeerror'); + errorCode = datamodel[scoid][elementmodel].writeerror; } } else { if (element == 'cmi.comments') { @@ -384,10 +384,10 @@ function SCORMapi1_2(def, cmiobj, cmiint, cmistring256, cmistring4096, scormdebu } } } else { - errorCode = eval('datamodel["' + scoid + '"]["' + elementmodel + '"].writeerror'); + errorCode = datamodel[scoid][elementmodel].writeerror; } } else { - errorCode = eval('datamodel["' + scoid + '"]["' + elementmodel + '"].writeerror'); + errorCode = datamodel[scoid][elementmodel].writeerror; } } else { errorCode = "201" @@ -557,40 +557,39 @@ function SCORMapi1_2(def, cmiobj, cmiint, cmistring256, cmistring4096, scormdebu // check if this specific element is not defined in the datamodel, // but the generic element name is - if ((eval('typeof datamodel["' + scoid + '"]["' + element + '"]')) == "undefined" - && (eval('typeof datamodel["' + scoid + '"]["' + elementmodel + '"]')) != "undefined") { + if (typeof datamodel[scoid][element] == "undefined" && typeof datamodel[scoid][elementmodel] != "undefined") { // add this specific element to the data model (by cloning // the generic element) so we can track changes to it - eval('datamodel["' + scoid + '"]["' + element + '"]=CloneObj(datamodel["' + scoid + '"]["' + elementmodel + '"]);'); + datamodel[scoid][element] = CloneObj(datamodel[scoid][elementmodel]); } // check if the current element exists in the datamodel - if ((typeof eval('datamodel["' + scoid + '"]["' + element + '"]')) != "undefined") { + if (typeof datamodel[scoid][element] != "undefined") { // make sure this is not a read only element - if (eval('datamodel["' + scoid + '"]["' + element + '"].mod') != 'r') { + if (datamodel[scoid][element].mod != 'r') { elementstring = '&' + underscore(element) + '=' + encodeURIComponent(data[property]); // check if the element has a default value - if ((typeof eval('datamodel["' + scoid + '"]["' + element + '"].defaultvalue')) != "undefined") { + if (typeof datamodel[scoid][element].defaultvalue != "undefined") { // check if the default value is different from the current value - if (eval('datamodel["' + scoid + '"]["' + element + '"].defaultvalue') != data[property] - || eval('typeof(datamodel["' + scoid + '"]["' + element + '"].defaultvalue)') != typeof(data[property])) { + if (datamodel[scoid][element].defaultvalue != data[property] || + typeof datamodel[scoid][element].defaultvalue != typeof data[property]) { // append the URI fragment to the string we plan to commit datastring += elementstring; // update the element default to reflect the current committed value - eval('datamodel["' + scoid + '"]["' + element + '"].defaultvalue=data[property];'); + datamodel[scoid][element].defaultvalue = data[property]; } } else { // append the URI fragment to the string we plan to commit datastring += elementstring; // no default value for the element, so set it now - eval('datamodel["' + scoid + '"]["' + element + '"].defaultvalue=data[property];'); + datamodel[scoid][element].defaultvalue = data[property]; } } } diff --git a/mod/scorm/datamodels/scorm_13.js b/mod/scorm/datamodels/scorm_13.js index d7351724341..e3b02a4c106 100644 --- a/mod/scorm/datamodels/scorm_13.js +++ b/mod/scorm/datamodels/scorm_13.js @@ -252,7 +252,7 @@ function SCORMapi1_3(def, cmiobj, cmiint, cmicommentsuser, cmicommentslms, scorm for (element in datamodel[scoid]) { if (element.match(/\.n\./) == null) { - if ((typeof eval('datamodel["' + scoid + '"]["' + element + '"].defaultvalue')) != 'undefined') { + if (typeof datamodel[scoid][element].defaultvalue != 'undefined') { eval(element + ' = datamodel["' + scoid + '"]["' + element + '"].defaultvalue;'); } else { eval(element + ' = "";'); @@ -380,8 +380,8 @@ function SCORMapi1_3(def, cmiobj, cmiint, cmicommentsuser, cmicommentslms, scorm if (element != "") { var expression = new RegExp(CMIIndex,'g'); var elementmodel = String(element).replace(expression,'.n.'); - if ((typeof eval('datamodel["' + scoid + '"]["' + elementmodel + '"]')) != "undefined") { - if (eval('datamodel["' + scoid + '"]["' + elementmodel + '"].mod') != 'w') { + if (typeof datamodel[scoid][elementmodel] != "undefined") { + if (datamodel[scoid][elementmodel].mod != 'w') { element = String(element).replace(/\.(\d+)\./, ".N$1."); element = element.replace(/\.(\d+)\./, ".N$1."); @@ -417,7 +417,7 @@ function SCORMapi1_3(def, cmiobj, cmiint, cmicommentsuser, cmicommentslms, scorm var parentmodel = ''; if (elementmodel.substr(elementmodel.length - childrenstr.length,elementmodel.length) == childrenstr) { parentmodel = elementmodel.substr(0,elementmodel.length - childrenstr.length); - if ((typeof eval('datamodel["' + scoid + '"]["' + parentmodel + '"]')) != "undefined") { + if (datamodel[scoid][parentmodel] != "undefined") { errorCode = "301"; diagnostic = "Data Model Element Does Not Have Children"; } else { @@ -425,7 +425,7 @@ function SCORMapi1_3(def, cmiobj, cmiint, cmicommentsuser, cmicommentslms, scorm } } else if (elementmodel.substr(elementmodel.length - countstr.length,elementmodel.length) == countstr) { parentmodel = elementmodel.substr(0,elementmodel.length - countstr.length); - if ((typeof eval('datamodel["' + scoid + '"]["' + parentmodel + '"]')) != "undefined") { + if (typeof datamodel[scoid][parentmodel] != "undefined") { errorCode = "301"; diagnostic = "Data Model Element Cannot Have Count"; } else { @@ -473,10 +473,10 @@ function SCORMapi1_3(def, cmiobj, cmiint, cmicommentsuser, cmicommentslms, scorm if (element != "") { var expression = new RegExp(CMIIndex,'g'); var elementmodel = String(element).replace(expression,'.n.'); - if ((typeof eval('datamodel["' + scoid + '"]["' + elementmodel + '"]')) != "undefined") { - if (eval('datamodel["' + scoid + '"]["' + elementmodel + '"].mod') != 'r') { - if (eval('datamodel["' + scoid + '"]["' + elementmodel + '"].format') != 'CMIFeedback') { - expression = new RegExp(eval('datamodel["' + scoid + '"]["' + elementmodel + '"].format')); + if (typeof datamodel[scoid][elementmodel] != "undefined") { + if (datamodel[scoid][elementmodel].mod != 'r') { + if (datamodel[scoid][elementmodel].format != 'CMIFeedback') { + expression = new RegExp(datamodel[scoid][elementmodel].format); } else { // cmi.interactions.n.type depending format accept everything at this stage expression = new RegExp(CMIFeedback); @@ -749,8 +749,8 @@ function SCORMapi1_3(def, cmiobj, cmiint, cmicommentsuser, cmicommentslms, scorm SCORMapi1_3.timeout = Y.later(60000, API_1484_11, 'Commit', [""], false); } - if ((typeof eval('datamodel["' + scoid + '"]["' + elementmodel + '"].range')) != "undefined") { - range = eval('datamodel["' + scoid + '"]["' + elementmodel + '"].range'); + if (typeof datamodel[scoid][elementmodel].range != "undefined") { + range = datamodel[scoid][elementmodel].range; ranges = range.split('#'); value = value * 1.0; if (value >= ranges[0]) { @@ -1180,11 +1180,12 @@ function SCORMapi1_3(def, cmiobj, cmiint, cmicommentsuser, cmicommentslms, scorm var element = parent + '.' + property; var expression = new RegExp(CMIIndexStore,'g'); var elementmodel = String(element).replace(expression,'.n.'); - if ((typeof eval('datamodel["' + scoid + '"]["' + elementmodel + '"]')) != "undefined") { - if (eval('datamodel["' + scoid + '"]["' + elementmodel + '"].mod') != 'r') { + if (typeof datamodel[scoid][elementmodel] != "undefined") { + if (datamodel[scoid][elementmodel].mod != 'r') { var elementstring = '&' + underscore(element) + '=' + encodeURIComponent(data[property]); - if ((typeof eval('datamodel["' + scoid + '"]["' + elementmodel + '"].defaultvalue')) != "undefined") { - if (eval('datamodel["' + scoid + '"]["' + elementmodel + '"].defaultvalue') != data[property] || eval('typeof(datamodel["' + scoid + '"]["' + elementmodel + '"].defaultvalue)') != typeof(data[property])) { + if (typeof datamodel[scoid][elementmodel].defaultvalue != "undefined") { + if (datamodel[scoid][elementmodel].defaultvalue != data[property] || + typeof datamodel[scoid][elementmodel].defaultvalue != typeof data[property]) { datastring += elementstring; } } else {