ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
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/Utilities/classes/class.ilUtil.php';
27 $string = ilUtil::insertLatexImages($string, "\[tex\]", "\[\/tex\]");
28 $string = ilUtil::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 {
44 $string = nl2br($string);
45 }
46
47 return $string;
48 }
49
54 protected function convertLatexSpanToTex($string)
55 {
56 // we try to save all latex tags
57 $try = true;
58 $ls = '<span class="latex">';
59 $le = '</span>';
60 while ($try)
61 {
62 // search position of start tag
63 $pos1 = strpos($string, $ls);
64 if (is_int($pos1))
65 {
66 $pos2 = strpos($string, $le, $pos1);
67 if (is_int($pos2))
68 {
69 // both found: replace end tag
70 $string = substr($string, 0, $pos2)."[/tex]".substr($string, $pos2+7);
71 $string = substr($string, 0, $pos1)."[tex]".substr($string, $pos1+20);
72 }
73 else
74 {
75 $try = false;
76 }
77 }
78 else
79 {
80 $try = false;
81 }
82 }
83
84 return $string;
85 }
86
91 protected function stripHtmlExceptSelfAssessmentTags($string)
92 {
94
95 $tstr = "";
96
97 foreach ($tags as $t)
98 {
99 $tstr.="<".$t.">";
100 }
101
102 $string = ilUtil::secureString($string, true, $tstr);
103
104 return $string;
105 }
106
111 public function migrateToLmContent($string)
112 {
113 $string = $this->convertLatexSpanToTex($string);
114 $string = $this->stripHtmlExceptSelfAssessmentTags($string);
115 return $string;
116 }
117
121 public static function prepareQuestionForLearningModule(assQuestion $question)
122 {
123 $question->migrateContentForLearningModule(new self());
124 }
125
130 static function getSelfAssessmentTags()
131 {
132 // set tags we allow in self assessment mode
133 $st = ilUtil::getSecureTags();
134
135 // we allow these tags, since they are typically used in the Tiny Assessment editor
136 // and should not be deleted, if questions are copied from pools to learning modules
137 $not_supported = array("img", "p");
138 $tags = array();
139
141 $tags[] = 'p';
143
144 foreach ($st as $s)
145 {
146 if (!in_array($s, $not_supported))
147 {
148 $tags[] = $s;
149 }
150 }
151
152 return $tags;
153 }
154}
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 _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()
static insertLatexImages($a_text, $a_start="\[tex\]", $a_end="\[\/tex\]")
replace [text]...[/tex] tags with formula image code