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 
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/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  {
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...
static insertLatexImages($a_text, $a_start="\ex\, $a_end="\\tex\")
replace [text]...[/tex] tags with formula image code
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...
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.