ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilAssSelfAssessmentQuestionFormatter.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2017 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4require_once 'Modules/TestQuestionPool/interfaces/interface.ilAssSelfAssessmentMigrator.php';
5
10{
16 public function format($string)
17 {
18 $string = $this->handleLineBreaks($string);
19
20 require_once 'Services/RTE/classes/class.ilRTE.php';
21 $string = (string) ilRTE::_replaceMediaObjectImageSrc($string, 1);
22
23 $string = str_replace("</li><br />", "</li>", $string);
24 $string = str_replace("</li><br>", "</li>", $string);
25
26 require_once 'Services/MathJax/classes/class.ilMathJax.php';
27 $string = ilMathJax::getInstance()->insertLatexImages($string, "\[tex\]", "\[\/tex\]");
28 $string = ilMathJax::getInstance()->insertLatexImages($string, "<span class\=\"latex\">", "<\/span>");
29
30 $string = str_replace('{', '&#123;', $string);
31 $string = str_replace('}', '&#125;', $string);
32
33 return $string;
34 }
35
40 protected function handleLineBreaks($string)
41 {
42 if (!ilUtil::isHTML($string)) {
43 $string = nl2br($string);
44 }
45
46 return $string;
47 }
48
53 protected function convertLatexSpanToTex($string)
54 {
55 // we try to save all latex tags
56 $try = true;
57 $ls = '<span class="latex">';
58 $le = '</span>';
59 while ($try) {
60 // search position of start tag
61 $pos1 = strpos($string, $ls);
62 if (is_int($pos1)) {
63 $pos2 = strpos($string, $le, $pos1);
64 if (is_int($pos2)) {
65 // both found: replace end tag
66 $string = substr($string, 0, $pos2) . "[/tex]" . substr($string, $pos2 + 7);
67 $string = substr($string, 0, $pos1) . "[tex]" . substr($string, $pos1 + 20);
68 } else {
69 $try = false;
70 }
71 } else {
72 $try = false;
73 }
74 }
75
76 return $string;
77 }
78
83 protected function stripHtmlExceptSelfAssessmentTags($string)
84 {
86
87 $tstr = "";
88
89 foreach ($tags as $t) {
90 $tstr .= "<" . $t . ">";
91 }
92
93 $string = ilUtil::secureString($string, true, $tstr);
94
95 return $string;
96 }
97
102 public function migrateToLmContent($string)
103 {
104 $string = $this->convertLatexSpanToTex($string);
105 $string = $this->stripHtmlExceptSelfAssessmentTags($string);
106 return $string;
107 }
108
112 public static function prepareQuestionForLearningModule(assQuestion $question)
113 {
114 $question->migrateContentForLearningModule(new self());
115 }
116
121 public static function getSelfAssessmentTags()
122 {
123 // set tags we allow in self assessment mode
124 $st = ilUtil::getSecureTags();
125
126 // we allow these tags, since they are typically used in the Tiny Assessment editor
127 // and should not be deleted, if questions are copied from pools to learning modules
128 $not_supported = ['img'];
129 $tags = ['br', 'table', 'td', 'tr', 'th'];
130
131 foreach ($st as $s) {
132 if (!in_array($s, $not_supported)) {
133 $tags[] = $s;
134 }
135 }
136
137 return $tags;
138 }
139}
An exception for terminatinating execution or to throw for unit testing.
Abstract basic class which is to be extended by the concrete assessment question type classes.
migrateContentForLearningModule(ilAssSelfAssessmentMigrator $migrator)
format($string)
Original code copied from \assQuestion::formatSAQuestion (author: akill)
static getSelfAssessmentTags()
Get tags allowed in question tags in self assessment mode.
static getInstance()
Singleton: get instance.
static _replaceMediaObjectImageSrc($a_text, $a_direction=0, $nic=IL_INST_ID)
Replaces image source from mob image urls with the mob id or replaces mob id with the correct image s...
static secureString($a_str, $a_strip_html=true, $a_allow="")
Remove unsecure tags.
static isHTML($a_text)
Checks if a given string contains HTML or not.
static getSecureTags()