From e23cc5d2e558183655e5dac8242b2c973af50346 Mon Sep 17 00:00:00 2001
From: piers <piers>
Date: Thu, 26 Feb 2009 18:19:05 +0000
Subject: [PATCH] MDL-18148 - AICC compliance fixes.  Fixing general new file
 API problems, and stripslashes_safe().

---
 mod/scorm/datamodels/aicclib.php | 50 +++++++++++++++++++-------------
 mod/scorm/locallib.php           |  2 +-
 2 files changed, 31 insertions(+), 21 deletions(-)

diff --git a/mod/scorm/datamodels/aicclib.php b/mod/scorm/datamodels/aicclib.php
index 94fce520fb..1075973044 100644
--- a/mod/scorm/datamodels/aicclib.php
+++ b/mod/scorm/datamodels/aicclib.php
@@ -1,4 +1,5 @@
 <?php // $Id$
+
 function scorm_add_time($a, $b) {
     $aes = explode(':',$a);
     $bes = explode(':',$b);
@@ -98,7 +99,7 @@ function scorm_parse_aicc($scorm) {
         $cm = get_coursemodule_from_instance('scorm', $scorm->id);
         $scorm->cmid = $cm->id;
     }
-    $context = get_context_instance(COURSE_MODULE, $scorm->cmid);
+    $context = get_context_instance(CONTEXT_MODULE, $scorm->cmid);
 
     $fs = get_file_storage();
 
@@ -122,25 +123,29 @@ function scorm_parse_aicc($scorm) {
 
     foreach ($ids as $courseid => $id) {
         if (isset($id->crs)) {
-            $rows = $id->crs->get_content();
-            foreach ($rows as $row) {
-                if (preg_match("/^(.+)=(.+)$/",$row,$matches)) {
-                    switch (strtolower(trim($matches[1]))) {
-                        case 'course_id':
-                            $courses[$courseid]->id = trim($matches[2]);
-                        break;
-                        case 'course_title':
-                            $courses[$courseid]->title = trim($matches[2]);
-                        break;
-                        case 'version':
-                            $courses[$courseid]->version = 'AICC_'.trim($matches[2]);
-                        break;
+            $contents = $id->crs->get_content();
+            $rows = explode("\r\n", $contents);
+            if (is_array($rows)) {
+                foreach ($rows as $row) {
+                    if (preg_match("/^(.+)=(.+)$/",$row,$matches)) {
+                        switch (strtolower(trim($matches[1]))) {
+                            case 'course_id':
+                                $courses[$courseid]->id = trim($matches[2]);
+                            break;
+                            case 'course_title':
+                                $courses[$courseid]->title = trim($matches[2]);
+                            break;
+                            case 'version':
+                                $courses[$courseid]->version = 'AICC_'.trim($matches[2]);
+                            break;
+                        }
                     }
                 }
             }
         }
         if (isset($id->des)) {
-            $rows = $id->des->get_content();
+            $contents = $id->des->get_content();
+            $rows = explode("\r\n", $contents);
             $columns = scorm_get_aicc_columns($rows[0]);
             $regexp = scorm_forge_cols_regexp($columns->columns);
             for ($i=1;$i<count($rows);$i++) {
@@ -153,7 +158,8 @@ function scorm_parse_aicc($scorm) {
             }
         }
         if (isset($id->au)) {
-            $rows = $id->au->get_content();
+            $contents = $id->au->get_content();
+            $rows = explode("\r\n", $contents);
             $columns = scorm_get_aicc_columns($rows[0]);
             $regexp = scorm_forge_cols_regexp($columns->columns);
             for ($i=1;$i<count($rows);$i++) {
@@ -166,7 +172,8 @@ function scorm_parse_aicc($scorm) {
             }
         }
         if (isset($id->cst)) {
-            $rows = $id->cst->get_content();
+            $contents = $id->cst->get_content();
+            $rows = explode("\r\n", $contents);
             $columns = scorm_get_aicc_columns($rows[0],'block');
             $regexp = scorm_forge_cols_regexp($columns->columns,'(.+)?,');
             for ($i=1;$i<count($rows);$i++) {
@@ -180,7 +187,8 @@ function scorm_parse_aicc($scorm) {
             }
         }
         if (isset($id->ort)) {
-            $rows = $id->ort->get_content();
+            $contents = $id->ort->get_content();
+            $rows = explode("\r\n", $contents);
             $columns = scorm_get_aicc_columns($rows[0],'course_element');
             $regexp = scorm_forge_cols_regexp($columns->columns,'(.+)?,');
             for ($i=1;$i<count($rows);$i++) {
@@ -194,7 +202,8 @@ function scorm_parse_aicc($scorm) {
             }
         }
         if (isset($id->pre)) {
-            $rows = $id->pre->get_content();
+            $contents = $id->pre->get_content();
+            $rows = explode("\r\n", $contents);
             $columns = scorm_get_aicc_columns($rows[0],'structure_element');
             $regexp = scorm_forge_cols_regexp($columns->columns,'(.+),');
             for ($i=1;$i<count($rows);$i++) {
@@ -204,7 +213,8 @@ function scorm_parse_aicc($scorm) {
             }
         }
         if (isset($id->cmp)) {
-            $rows = $id->cmp->get_content();
+            $contents = $id->cmp->get_content();
+            $rows = explode("\r\n", $contents);
         }
     }
     //print_r($courses);
diff --git a/mod/scorm/locallib.php b/mod/scorm/locallib.php
index 23239655ad..0ea34b0752 100755
--- a/mod/scorm/locallib.php
+++ b/mod/scorm/locallib.php
@@ -409,7 +409,7 @@ function scorm_get_tracks($scoid,$userid,$attempt='') {
         $usertrack->timemodified = 0;
         foreach ($tracks as $track) {
             $element = $track->element;
-            $track->value = stripslashes_safe($track->value);
+            $track->value = stripslashes($track->value);
             $usertrack->{$element} = $track->value;
             switch ($element) {
                 case 'x.start.time':
-- 
2.39.5