23 include_once
"./Modules/TestQuestionPool/classes/class.assQuestion.php";
24 include_once
"./Modules/Test/classes/inc.AssessmentConstants.php";
126 $this->parameters = array();
139 $params_array = split(
"<separator>", $params);
140 foreach ($params_array as $pair)
142 if (preg_match(
"/(.*?)\=(.*)/", $pair, $matches))
147 $this->java_code = $matches[2];
149 case "java_codebase" :
150 $this->java_codebase = $matches[2];
152 case "java_archive" :
153 $this->java_archive = $matches[2];
156 $this->java_width = $matches[2];
159 $this->java_height = $matches[2];
162 if (preg_match(
"/param_name_(\d+)/", $matches[1], $found_key))
164 $this->parameters[$found_key[1]][
"name"] = $matches[2];
166 if (preg_match(
"/param_value_(\d+)/", $matches[1], $found_key))
168 $this->parameters[$found_key[1]][
"value"] = $matches[2];
184 $params_array = array();
185 if ($this->java_code)
187 array_push($params_array,
"java_code=$this->java_code");
189 if ($this->java_codebase)
191 array_push($params_array,
"java_codebase=$this->java_codebase");
193 if ($this->java_archive)
195 array_push($params_array,
"java_archive=$this->java_archive");
197 if ($this->java_width)
199 array_push($params_array,
"java_width=$this->java_width");
201 if ($this->java_height)
203 array_push($params_array,
"java_height=$this->java_height");
205 foreach ($this->parameters as $key => $value)
207 array_push($params_array,
"param_name_$key=" . $value[
"name"]);
208 array_push($params_array,
"param_value_$key=" . $value[
"value"]);
210 return join($params_array,
"<separator>");
223 $params_array = array();
224 if ($this->java_code)
226 array_push($params_array,
"java_code=$this->java_code");
227 array_push($params_array,
"java_codebase=$this->java_codebase");
228 array_push($params_array,
"java_archive=$this->java_archive");
230 foreach ($this->parameters as $key => $value)
232 array_push($params_array,
"param_name_$key=" . $value[
"name"]);
233 array_push($params_array,
"param_value_$key=" . $value[
"value"]);
235 return join($params_array,
"<separator>");
246 if (($this->title) and ($this->author) and ($this->question) and ($this->javaapplet_filename) and ($this->java_width) and ($this->java_height) and ($this->
getPoints() > 0))
250 else if (($this->title) and ($this->author) and ($this->question) and ($this->
getJavaArchive()) and ($this->
getJavaCodebase()) and ($this->java_width) and ($this->java_height) and ($this->
getPoints() > 0))
277 $affectedRows = $ilDB->manipulateF(
"DELETE FROM " . $this->
getAdditionalTableName() .
" WHERE question_fi = %s",
279 array($this->
getId())
281 $affectedRows = $ilDB->manipulateF(
"INSERT INTO " . $this->
getAdditionalTableName() .
" (question_fi, image_file, params) VALUES (%s, %s, %s)",
282 array(
"integer",
"text",
"text"),
285 $this->javaapplet_filename,
310 if ($result->numRows() == 1)
312 $data = $ilDB->fetchAssoc($result);
313 $this->
setId($question_id);
322 include_once(
"./Services/RTE/classes/class.ilRTE.php");
344 $this_id = $this->
getId();
346 include_once (
"./Modules/TestQuestionPool/classes/class.assQuestion.php");
371 $clone->copyPageOfQuestion($this_id);
373 $clone->copyXHTMLMediaObjectsOfQuestion($this_id);
375 $clone->duplicateFeedbackGeneric($this_id);
378 $clone->duplicateApplet($this_id);
379 $clone->onDuplicate($this_id);
399 include_once (
"./Modules/TestQuestionPool/classes/class.assQuestion.php");
402 $source_questionpool = $this->
getObjId();
403 $clone->setObjId($target_questionpool);
426 $javapath_original = preg_replace(
"/([^\d])$this->id([^\d])/",
"\${1}$question_id\${2}", $javapath);
427 if (!file_exists($javapath))
432 if (!copy($javapath_original .
$filename, $javapath . $filename)) {
433 print
"java applet could not be duplicated!!!! ";
440 $javapath_original = preg_replace(
"/([^\d])$this->id([^\d])/",
"\${1}$question_id\${2}", $javapath);
441 $javapath_original = str_replace(
"/$this->obj_id/",
"/$source_questionpool/", $javapath_original);
442 if (!file_exists($javapath))
447 if (!copy($javapath_original .
$filename, $javapath . $filename)) {
448 print
"java applet could not be copied!!!! ";
597 $found_values = array();
602 $result = $ilDB->queryF(
"SELECT points FROM tst_solutions WHERE active_fi = %s AND question_fi = %s AND pass = %s",
603 array(
'integer',
'integer',
'integer'),
607 while (
$data = $ilDB->fetchAssoc($result))
629 $found_values = array();
634 $result = $ilDB->queryF(
"SELECT * FROM tst_solutions WHERE active_fi = %s AND question_fi = %s AND pass = %s",
635 array(
'integer',
'integer',
'integer'),
639 $user_result = array();
640 while (
$data = $ilDB->fetchAssoc($result))
643 if (
$data[
"points"] > 0)
649 "points" =>
$data[
"points"],
651 "value1" =>
$data[
"value1"],
652 "value2" =>
$data[
"value2"],
655 array_push($user_result, $solution);
673 $this->parameters[$index] = array(
"name" =>
$name,
"value" => $value);
677 array_push($this->parameters, array(
"name" =>
$name,
"value" => $value));
683 if (array_key_exists($index, $this->parameters))
686 $newparams = array();
687 for ($i = 0; $i < $index; $i++)
689 array_push($newparams, $this->parameters[$i]);
691 array_push($newparams, array(
$name, $value));
692 for ($i = $index; $i < count($this->parameters); $i++)
694 array_push($newparams, $this->parameters[$i]);
696 $this->parameters = $newparams;
700 array_push($this->parameters, array(
$name, $value));
713 if ($index < 0)
return;
714 if (count($this->parameters) < 1)
return;
715 if ($index >= count($this->parameters))
return;
716 unset($this->parameters[$index]);
717 $this->parameters = array_values($this->parameters);
730 if (($index < 0) or ($index >= count($this->parameters)))
734 return $this->parameters[$index];
747 foreach ($this->parameters as $key => $value)
749 if (array_key_exists(
$name, $value))
766 return count($this->parameters);
777 $this->parameters = array();
819 if (!empty($javaapplet_tempfilename))
822 if (!file_exists($javapath))
829 $ilLog->write(
"ERROR: java applet question: java applet not uploaded: $javaapplet_filename");
842 $this->javaapplet_filename =
"";
853 return "assJavaApplet";
864 return "qpl_qst_javaapplet";
888 $adapter->setCellValue($startrow, 0, $this->lng->txt($this->getQuestionType()),
CELL_FORMAT_TITLE);
891 foreach ($solutions as $solution)
893 $adapter->setCellValue($startrow + $i, 0, $this->lng->txt(
"result") .
" $i");
894 if (strlen($solution[
"value1"])) $adapter->setCellValue($startrow + $i, 1, $solution[
"value1"]);
895 if (strlen($solution[
"value2"])) $adapter->setCellValue($startrow + $i, 2, $solution[
"value2"]);
898 return $startrow + $i + 1;