ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
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 
4 require_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  {
85  $tags = self::getSelfAssessmentTags();
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 = array("img", "p");
129  $tags = array();
130 
132  $tags[] = 'p';
134 
135  foreach ($st as $s) {
136  if (!in_array($s, $not_supported)) {
137  $tags[] = $s;
138  }
139  }
140 
141  return $tags;
142  }
143 }
static getSelfAssessmentTags()
Get tags allowed in question tags in self assessment mode.
Add rich text string
migrateContentForLearningModule(ilAssSelfAssessmentMigrator $migrator)
format($string)
Original code copied from ::formatSAQuestion (author: akill)
Abstract basic class which is to be extended by the concrete assessment question type classes...
$s
Definition: pwgen.php:45
static getSecureTags()
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...
$tags
Definition: croninfo.php:19
Create styles array
The data for the language used.
static getInstance()
Singleton: get instance.
Class ilAssSelfAssessmentQuestionFormatter.
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.