Index: lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20190721.sql =================================================================== diff -u -rcd25fd46424cbe1430b34ce394ee2cd35c92cc04 -r881a5b96d6e82cd465e71a1041dc4de99b52e3e8 --- lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20190721.sql (.../patch20190721.sql) (revision cd25fd46424cbe1430b34ce394ee2cd35c92cc04) +++ lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20190721.sql (.../patch20190721.sql) (revision 881a5b96d6e82cd465e71a1041dc4de99b52e3e8) @@ -1,4 +1,4 @@ -CREATE FUNCTION `strip_tags`($str MEDIUMTEXT) RETURNS MEDIUMTEXT +CREATE FUNCTION `strip_tags`($str MEDIUMTEXT, $leaveMeaningfulTags BOOLEAN) RETURNS MEDIUMTEXT BEGIN DECLARE $start, $end INT DEFAULT 1; DECLARE $tag CHAR(3); @@ -7,8 +7,10 @@ IF (NOT $start) THEN RETURN $str; END IF; SET $end = LOCATE(">", $str, $start); IF (NOT $end) THEN SET $end = $start; END IF; - SET $tag = SUBSTRING($str, $start + 1, 3); - IF $tag = 'img' OR $tag = 'IMG' THEN SET $start = $end; ITERATE main; END IF; + IF ($leaveMeaningfulTags = FALSE) THEN + SET $tag = SUBSTRING($str, $start + 1, 3); + IF $tag = 'img' OR $tag = 'IMG' THEN SET $start = $end; ITERATE main; END IF; + END IF; SET $str = INSERT($str, $start, $end - $start + 1, ""); END LOOP; END; Index: lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20190722.sql =================================================================== diff -u -r8e97adb8dda2f984a9b43f71eacd9a5033244bff -r881a5b96d6e82cd465e71a1041dc4de99b52e3e8 --- lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20190722.sql (.../patch20190722.sql) (revision 8e97adb8dda2f984a9b43f71eacd9a5033244bff) +++ lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20190722.sql (.../patch20190722.sql) (revision 881a5b96d6e82cd465e71a1041dc4de99b52e3e8) @@ -104,7 +104,7 @@ CREATE TABLE tmp_question (question_uid BIGINT PRIMARY KEY, content MEDIUMTEXT) AS SELECT q.uid AS question_uid, - REPLACE(REPLACE(REPLACE(strip_tags(GROUP_CONCAT(question, mc_que_option_text ORDER BY displayOrder)) + REPLACE(REPLACE(REPLACE(strip_tags(GROUP_CONCAT(question, mc_que_option_text ORDER BY displayOrder), true) COLLATE utf8mb4_0900_ai_ci, ' ', ''), '\t', ''), @@ -129,7 +129,7 @@ INSERT INTO lams_qb_question (uid, `type`, question_id, version, create_date, name, description, max_mark, feedback, tmp_question_id) SELECT NULL, 1, @question_id:=@question_id + 1, 1, IFNULL(c.creation_date, NOW()), - SUBSTRING(TRIM(REPLACE(REPLACE(strip_tags(mcq.question) COLLATE utf8mb4_0900_ai_ci, ' ', ' '), '\t', '')), 1, 80), + SUBSTRING(TRIM(REPLACE(REPLACE(strip_tags(mcq.question, false) COLLATE utf8mb4_0900_ai_ci, ' ', ' '), '\t', '')), 1, 80), mcq.question, IFNULL(mcq.max_mark, 1), mcq.feedback, q.target_uid FROM (SELECT uid, question AS question, @@ -219,7 +219,7 @@ -- if this column is not *exactly* as in an other row, it means it should be a separate question in QB INSERT INTO tmp_question SELECT q.uid, - REPLACE(REPLACE(REPLACE(strip_tags(GROUP_CONCAT(q.description, o.description ORDER BY o.order_id)) + REPLACE(REPLACE(REPLACE(strip_tags(GROUP_CONCAT(q.description, o.description ORDER BY o.order_id), true) COLLATE utf8mb4_0900_ai_ci, ' ', ''), '\t', ''), @@ -233,7 +233,7 @@ CREATE TABLE tmp_qb_question (question_uid BIGINT PRIMARY KEY, content MEDIUMTEXT) AS SELECT q.uid AS question_uid, - REPLACE(REPLACE(REPLACE(strip_tags(GROUP_CONCAT(q.description, o.name ORDER BY o.display_order)) + REPLACE(REPLACE(REPLACE(strip_tags(GROUP_CONCAT(q.description, o.name ORDER BY o.display_order), true) COLLATE utf8mb4_0900_ai_ci, ' ', ''), '\t', ''), @@ -270,7 +270,7 @@ -- fill Question Bank question table with unique questions, with manually incremented question ID INSERT INTO lams_qb_question (uid, `type`, question_id, version, create_date, name, description, max_mark, feedback, tmp_question_id) SELECT NULL, 1, @question_id:=@question_id + 1, 1, sq.create_date, - TRIM(REPLACE(REPLACE(strip_tags(sq.question) COLLATE utf8mb4_0900_ai_ci, ' ', ' '), '\t', '')), + TRIM(REPLACE(REPLACE(strip_tags(sq.question, false) COLLATE utf8mb4_0900_ai_ci, ' ', ' '), '\t', '')), TRIM(sq.description), NULL, NULL, q.target_uid FROM (SELECT uid, title AS question, @@ -423,7 +423,7 @@ INSERT INTO tmp_question SELECT q.uid, - REPLACE(REPLACE(REPLACE(strip_tags(GROUP_CONCAT(q.question, o.option_string ORDER BY o.sequence_id)) + REPLACE(REPLACE(REPLACE(strip_tags(GROUP_CONCAT(q.question, o.option_string ORDER BY o.sequence_id), true) COLLATE utf8mb4_0900_ai_ci, ' ', ''), '\t', ''), @@ -437,7 +437,7 @@ -- create a similar mapping for existing questions in QB INSERT INTO tmp_qb_question SELECT q.uid AS question_uid, - REPLACE(REPLACE(REPLACE(strip_tags(GROUP_CONCAT(q.description, o.name ORDER BY o.display_order)) + REPLACE(REPLACE(REPLACE(strip_tags(GROUP_CONCAT(q.description, o.name ORDER BY o.display_order), true) COLLATE utf8mb4_0900_ai_ci, ' ', ''), '\t', ''), @@ -501,7 +501,7 @@ o.option_float, o.correct), '') - ORDER BY o.sequence_id)) + ORDER BY o.sequence_id), true) COLLATE utf8mb4_0900_ai_ci, ' ', ''), '\t', ''), @@ -525,7 +525,7 @@ -- fill Question Bank question table with unique questions, with manually incremented question ID INSERT INTO lams_qb_question SELECT NULL, NULL, aq.question_type, @question_id:=@question_id + 1, 1, IFNULL(assessment.create_date, NOW()), NULL, - TRIM(REPLACE(REPLACE(strip_tags(aq.question) COLLATE utf8mb4_0900_ai_ci, ' ', ' '), '\t', ' ')), + TRIM(REPLACE(REPLACE(strip_tags(aq.question, false) COLLATE utf8mb4_0900_ai_ci, ' ', ' '), '\t', ' ')), TRIM(aq.description), IFNULL(aq.max_mark, 1), aq.feedback, aq.penalty_factor, aq.answer_required, aq.multiple_answers_allowed, aq.incorrect_answer_nullifies_mark, aq.feedback_on_correct, aq.feedback_on_partially_correct, aq.feedback_on_incorrect, aq.shuffle, aq.prefix_answers_with_letters, aq.case_sensitive, aq.correct_answer, @@ -719,7 +719,7 @@ INSERT INTO tmp_question SELECT q.uid AS question_uid, - REPLACE(REPLACE(REPLACE(strip_tags(question) COLLATE utf8mb4_0900_ai_ci, + REPLACE(REPLACE(REPLACE(strip_tags(question, true) COLLATE utf8mb4_0900_ai_ci, ' ', ''), '\t', ''), ' ', '') AS content @@ -740,7 +740,7 @@ name, description, max_mark, feedback, answer_required, min_words_limit, tmp_question_id) SELECT NULL, 6, @question_id:=@question_id + 1, 1, IFNULL(c.creation_date, NOW()), - SUBSTRING(TRIM(REPLACE(REPLACE(strip_tags(qa.question) COLLATE utf8mb4_0900_ai_ci, ' ', ' '), '\t', '')), 1, 80), + SUBSTRING(TRIM(REPLACE(REPLACE(strip_tags(qa.question, false) COLLATE utf8mb4_0900_ai_ci, ' ', ' '), '\t', '')), 1, 80), qa.question, 1, qa.feedback, qa.answer_required, qa.min_words_limit, q.target_uid FROM (SELECT uid, question AS question,