ILIAS  release_4-3 Revision
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilPCQuestion.php
Go to the documentation of this file.
1 <?php
2 /*
3  +-----------------------------------------------------------------------------+
4  | ILIAS open source |
5  +-----------------------------------------------------------------------------+
6  | Copyright (c) 1998-2001 ILIAS open source, University of Cologne |
7  | |
8  | This program is free software; you can redistribute it and/or |
9  | modify it under the terms of the GNU General Public License |
10  | as published by the Free Software Foundation; either version 2 |
11  | of the License, or (at your option) any later version. |
12  | |
13  | This program is distributed in the hope that it will be useful, |
14  | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16  | GNU General Public License for more details. |
17  | |
18  | You should have received a copy of the GNU General Public License |
19  | along with this program; if not, write to the Free Software |
20  | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21  +-----------------------------------------------------------------------------+
22 */
23 
24 require_once("./Services/COPage/classes/class.ilPageContent.php");
25 
37 {
38  var $dom;
39  var $q_node; // node of Paragraph element
40 
44  function init()
45  {
46  $this->setType("pcqst");
47  }
48 
52  function setNode(&$a_node)
53  {
54  parent::setNode($a_node); // this is the PageContent node
55  $this->q_node =& $a_node->first_child(); //... and this the Question
56  }
57 
63  function setQuestionReference($a_questionreference)
64  {
65  if (is_object($this->q_node))
66  {
67  $this->q_node->set_attribute("QRef", $a_questionreference);
68  }
69  }
70 
77  {
78  if (is_object($this->q_node))
79  {
80  return $this->q_node->get_attribute("QRef", $a_questionreference);
81  }
82  return false;
83  }
84 
88  function create(&$a_pg_obj, $a_hier_id)
89  {
90  $this->createPageContentNode();
91  $a_pg_obj->insertContent($this, $a_hier_id, IL_INSERT_AFTER);
92  $this->q_node = $this->dom->create_element("Question");
93  $this->q_node = $this->node->append_child($this->q_node);
94  $this->q_node->set_attribute("QRef", "");
95  }
96 
103  function copyPoolQuestionIntoPage($a_q_id, $a_hier_id)
104  {
105  include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
106  include_once "./Modules/TestQuestionPool/classes/class.assQuestionGUI.php";
107  $question = assQuestion::_instanciateQuestion($a_q_id);
108  $duplicate_id = $question->copyObject(0, $question->getTitle());
109  $duplicate = assQuestion::_instanciateQuestion($duplicate_id);
110  $duplicate->setObjId(0);
111 
112  // we remove everything not supported by the non-tiny self
113  // assessment question editor
114  $q = $duplicate->getQuestion();
115 
116  // we try to save all latex tags
117  $try = true;
118  $ls = '<span class="latex">';
119  $le = '</span>';
120  while ($try)
121  {
122  // search position of start tag
123  $pos1 = strpos($q, $ls);
124  if (is_int($pos1))
125  {
126  $pos2 = strpos($q, $le, $pos1);
127  if (is_int($pos2))
128  {
129  // both found: replace end tag
130  $q = substr($q, 0, $pos2)."[/tex]".substr($q, $pos2+7);
131  $q = substr($q, 0, $pos1)."[tex]".substr($q, $pos1+20);
132  }
133  else
134  {
135  $try = false;
136  }
137  }
138  else
139  {
140  $try = false;
141  }
142  }
143 
145  $tstr = "";
146  foreach ($tags as $t)
147  {
148  $tstr.="<".$t.">";
149  }
150  $q = ilUtil::secureString($q, true, $tstr);
151  // self assessment uses nl2br, not p
152  $duplicate->setQuestion($q);
153 
154  $duplicate->saveQuestionDataToDb();
155 
156  $this->q_node->set_attribute("QRef", "il__qst_".$duplicate_id);
157  }
158 
159 }
160 ?>