ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
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  {
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  {
93  $tags = self::getSelfAssessmentTags();
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 }
static getSelfAssessmentTags()
Get tags allowed in question tags in self assessment mode.
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...
Add rich text string
The name of the decorator.
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...
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.