diff --git a/main/inc/lib/security.lib.php b/main/inc/lib/security.lib.php index 0059e35a5d..7d867f5922 100755 --- a/main/inc/lib/security.lib.php +++ b/main/inc/lib/security.lib.php @@ -230,12 +230,14 @@ class Security { * @return mixed Filtered string or array */ public static function remove_XSS ($var,$user_status=ANONYMOUS) { - $purifier = new HTMLPurifier(null,$user_status); - if (is_array($var)) { - return $purifier->purifyArray($var); - } else { - return $purifier->purify($var); - } - + static $purifier = array(); + if (!isset($purifier[$user_status])) { + $purifier[$user_status] = new HTMLPurifier(null, $user_status); + } + if (is_array($var)) { + return $purifier[$user_status]->purifyArray($var); + } else { + return $purifier[$user_status]->purify($var); + } } -} +} \ No newline at end of file diff --git a/main/newscorm/learnpath.class.php b/main/newscorm/learnpath.class.php index beaf85eade..bb7b4adf83 100755 --- a/main/newscorm/learnpath.class.php +++ b/main/newscorm/learnpath.class.php @@ -4512,7 +4512,8 @@ class learnpath { $return .= "\tm.add(" . $menu . ", -1, '" . addslashes(Security::remove_XSS(($this->name))) . "');\n"; $tbl_lp_item = Database :: get_course_table(TABLE_LP_ITEM); - $sql = " SELECT * FROM " . $tbl_lp_item . " + $sql = " SELECT id, title, description, item_type, path, parent_item_id, previous_item_id, next_item_id, max_score, min_score, mastery_score, display_order + FROM " . $tbl_lp_item . " WHERE lp_id = " . Database :: escape_string($this->lp_id); $result = Database::query($sql); $arrLP = array (); @@ -4520,20 +4521,20 @@ class learnpath { while ($row = Database :: fetch_array($result)) { $row['title'] = Security :: remove_XSS(api_convert_encoding($row['title'], $platform_charset, $this->encoding)); $row['description'] = Security :: remove_XSS(api_convert_encoding($row['description'], $platform_charset, $this->encoding)); - //$row['title'] = Security :: remove_XSS($row['title']); + $arrLP[] = array ( - 'id' => $row['id'], - 'item_type' => $row['item_type'], - 'title' => $row['title'], - 'path' => $row['path'], - 'description' => $row['description'], - 'parent_item_id' => $row['parent_item_id'], - 'previous_item_id' => $row['previous_item_id'], - 'next_item_id' => $row['next_item_id'], - 'max_score' => $row['max_score'], - 'min_score' => $row['min_score'], - 'mastery_score' => $row['mastery_score'], - 'display_order' => $row['display_order'] + 'id' => $row['id'], + 'item_type' => $row['item_type'], + 'title' => $row['title'], + 'path' => $row['path'], + 'description' => $row['description'], + 'parent_item_id' => $row['parent_item_id'], + 'previous_item_id' => $row['previous_item_id'], + 'next_item_id' => $row['next_item_id'], + 'max_score' => $row['max_score'], + 'min_score' => $row['min_score'], + 'mastery_score' => $row['mastery_score'], + 'display_order' => $row['display_order'] ); } @@ -6973,12 +6974,14 @@ class learnpath { $return .= $this->display_manipulate($item_id, $row['item_type']); $return .= $this->display_student_publication_form('move', $item_id, $row); break; - case TOOL_FORUM : + case TOOL_FORUM : $return .= $this->display_manipulate($item_id, $row['item_type']); $return .= $this->display_forum_form('move', $item_id, $row); + break; case TOOL_THREAD : $return .= $this->display_manipulate($item_id, $row['item_type']); $return .= $this->display_forum_form('move', $item_id, $row); + break; } } @@ -7578,7 +7581,7 @@ class learnpath { foreach($this->items as $index => $item){ if(!in_array($item->type , array(TOOL_QUIZ, TOOL_FORUM, TOOL_THREAD, TOOL_LINK, TOOL_STUDENTPUBLICATION))) { - //get included documents from this item + //get included documents from this item if($item->type=='sco') $inc_docs = $item->get_resources_from_source(null,api_get_path(SYS_COURSE_PATH).api_get_course_path().'/'.'scorm/'.$this->path.'/'.$item->get_path()); else @@ -7592,7 +7595,7 @@ class learnpath { //give a child element