]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-10425 and MDL-12872 Firefox bugs String() handling on replace. enhanced rege...
authorpiers <piers>
Mon, 4 Aug 2008 20:21:46 +0000 (20:21 +0000)
committerpiers <piers>
Mon, 4 Aug 2008 20:21:46 +0000 (20:21 +0000)
mod/scorm/api.php
mod/scorm/datamodels/aicc.js.php
mod/scorm/datamodels/scorm_12.js.php
mod/scorm/datamodels/scorm_13.js.php

index d517b8bf59852b8827c42c6c2c076255fc71e2de..0f59a67825bfa149bc5ffc726706f4a00f7107b7 100644 (file)
@@ -74,6 +74,6 @@
 
 var errorCode = "0";
 function underscore(str) {
-    str = str.replace(/.N/g,".");
+    str = String(str).replace(/.N/g,".");
     return str.replace(/\./g,"__");
 }
index dfebd349e27b46cef6f16319505f11a43d40bdd5..7e122d6eb2ec500864d83446cf4c4fb403c7a9bc 100644 (file)
@@ -231,10 +231,10 @@ function AICCapi() {
         if (Initialized) {
             if (element !="") {
                 expression = new RegExp(CMIIndex,'g');
-                elementmodel = element.replace(expression,'.n.');
+                elementmodel = String(element).replace(expression,'.n.');
                 if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
                     if (eval('datamodel["'+elementmodel+'"].mod') != 'w') {
-                            element = element.replace(expression, "_$1.");
+                            element = String(element).replace(expression, "_$1.");
                             elementIndexes = element.split('.');
                         subelement = 'cmi';
                         i = 1;
@@ -285,7 +285,7 @@ function AICCapi() {
         if (Initialized) {
             if (element != "") {
                 expression = new RegExp(CMIIndex,'g');
-                elementmodel = element.replace(expression,'.n.');
+                elementmodel = String(element).replace(expression,'.n.');
                 if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
                     if (eval('datamodel["'+elementmodel+'"].mod') != 'r') {
                         expression = new RegExp(eval('datamodel["'+elementmodel+'"].format'));
@@ -481,7 +481,7 @@ function AICCapi() {
             } else {
                 element = parent+'.'+property;
                 expression = new RegExp(CMIIndex,'g');
-                elementmodel = element.replace(expression,'.n.');
+                elementmodel = String(element).replace(expression,'.n.');
                 if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
                     if (eval('datamodel["'+elementmodel+'"].mod') != 'r') {
                         elementstring = '&'+underscore(element)+'='+escape(data[property]);
index 3ee58a6e31a855a7a2fb9edebdc448f403adaac9..fe0daf76539b2c6a98d5e821899719c71dc9f609 100644 (file)
 //
 function SCORMapi1_2() {
     // Standard Data Type Definition
-    CMIString256 = '^.{0,255}$';
-    CMIString4096 = '^.{0,4096}$';
-    //CMIString256 = '^[\.|\\n|\\r]{0,255}$';
-    //CMIString4096 = '^[\.|\\n|\\r]{0,4095}$';
+    CMIString256 = '^[\\u0000-\\uffff]{0,255}$';
+    CMIString4096 = '^[\\u0000-\\uffff]{0,4096}$';
     CMITime = '^([0-2]{1}[0-9]{1}):([0-5]{1}[0-9]{1}):([0-5]{1}[0-9]{1})(\.[0-9]{1,2})?$';
     CMITimespan = '^([0-9]{2,4}):([0-9]{2}):([0-9]{2})(\.[0-9]{1,2})?$';
     CMIInteger = '^\\d+$';
@@ -223,10 +221,10 @@ function SCORMapi1_2() {
         if (Initialized) {
             if (element !="") {
                 expression = new RegExp(CMIIndex,'g');
-                elementmodel = element.replace(expression,'.n.');
+                elementmodel = String(element).replace(expression,'.n.');
                 if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
                     if (eval('datamodel["'+elementmodel+'"].mod') != 'w') {
-                            element = element.replace(expression, "_$1.");
+                            element = String(element).replace(expression, "_$1.");
                             elementIndexes = element.split('.');
                         subelement = 'cmi';
                         i = 1;
@@ -282,7 +280,7 @@ function SCORMapi1_2() {
         if (Initialized) {
             if (element != "") {
                 expression = new RegExp(CMIIndex,'g');
-                elementmodel = element.replace(expression,'.n.');
+                elementmodel = String(element).replace(expression,'.n.');
                 if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
                     if (eval('datamodel["'+elementmodel+'"].mod') != 'r') {
                         expression = new RegExp(eval('datamodel["'+elementmodel+'"].format'));
@@ -493,7 +491,7 @@ function SCORMapi1_2() {
             } else {
                 element = parent+'.'+property;
                 expression = new RegExp(CMIIndex,'g');
-                elementmodel = element.replace(expression,'.n.');
+                elementmodel = String(element).replace(expression,'.n.');
                 if (elementmodel != "cmi.core.session_time") {
                     if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
                         if (eval('datamodel["'+elementmodel+'"].mod') != 'r') {
index c1f0e77e825489169d18b6ebdcbe8f54630bf5cf..957a8864a9baa85624f7b8c6e52fd9ac31061377 100644 (file)
@@ -330,12 +330,12 @@ function SCORMapi1_3() {
         if ((Initialized) && (!Terminated)) {
             if (element !="") {
                 var expression = new RegExp(CMIIndex,'g');
-                var elementmodel = element.replace(expression,'.n.');
+                var elementmodel = String(element).replace(expression,'.n.');
 
                 if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
                     if (eval('datamodel["'+elementmodel+'"].mod') != 'w') {
 
-                        element = element.replace(/\.(\d+)\./, ".N$1.");
+                        element = String(element).replace(/\.(\d+)\./, ".N$1.");
                         element = element.replace(/\.(\d+)\./, ".N$1.");
 
                         var elementIndexes = element.split('.');
@@ -429,7 +429,7 @@ function SCORMapi1_3() {
         if ((Initialized) && (!Terminated)) {
             if (element != "") {
                 var expression = new RegExp(CMIIndex,'g');
-                var elementmodel = element.replace(expression,'.n.');
+                var elementmodel = String(element).replace(expression,'.n.');
                 if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
                     if (eval('datamodel["'+elementmodel+'"].mod') != 'r') {
                         if (eval('datamodel["'+elementmodel+'"].format') != 'CMIFeedback') {
@@ -533,7 +533,7 @@ function SCORMapi1_3() {
 
                                                     // Use cmi.interactions.n.type value to check the right dataelement format
                                                     if (elementIndexes[elementIndexes.length-2] == eval(parentelement+'._count')) {
-                                                        var interactiontype = eval(parentelement.replace('correct_responses','type'));
+                                                        var interactiontype = eval(String(parentelement).replace('correct_responses','type'));
                                                         if ((typeof correct_responses[interactiontype].limit == 'undefined') ||
                                                             (eval(parentelement+'._count') < correct_responses[interactiontype].limit)) {
                                                             if (correct_responses[interactiontype].pre != '') {
@@ -992,7 +992,7 @@ function SCORMapi1_3() {
             return element;
         } else {
             var expression = new RegExp(CMIIndex,'g');
-            var elementmodel = element.replace(expression,'.n.');
+            var elementmodel = String(element).replace(expression,'.n.');
             if (typeof datamodel[elementmodel] != "undefined") {
                 return elementmodel;
             }
@@ -1061,7 +1061,7 @@ function SCORMapi1_3() {
             } else {
                 var element = parent+'.'+property;
                 var expression = new RegExp(CMIIndexStore,'g');
-                var elementmodel = element.replace(expression,'.n.');
+                var elementmodel = String(element).replace(expression,'.n.');
                 if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
                     if (eval('datamodel["'+elementmodel+'"].mod') != 'r') {
                         var elementstring = '&'+underscore(element)+'='+encodeURIComponent(data[property]);