34 include_once 
"./classes/class.ilObject.php";
 
   35 include_once 
"./Modules/Survey/classes/inc.SurveyConstants.php";
 
   55                 $this->
ilObject($a_id,$a_call_by_reference);
 
   79                 if (!parent::update())
 
   94         function read($a_force_db = 
false)
 
  113                         foreach ($questions as $question_id)
 
  115                                 $newObj->copyQuestion($question_id, $newObj->getId());
 
  119                         include_once 
"./Services/MetaData/classes/class.ilMD.php";
 
  121                         $new_md =& $md->cloneMD($newObj->getId(),0,$newObj->getType());
 
  124                         $newObj->updateMetaData();
 
  130                         if ((!$question_type) and ($question_id > 0))
 
  135                         include_once 
"./Modules/SurveyQuestionPool/classes/class.".$question_type.
"GUI.php";
 
  136                         $question_type_gui = $question_type . 
"GUI";
 
  137                         $question =& 
new $question_type_gui();
 
  139                         if ($question_id > 0)
 
  141                                 $question->object->loadFromDb($question_id);
 
  157                         if ($question_gui->object->getObjId() == $questionpool_to)
 
  165                                 $newtitle = $question_gui->object->getTitle(); 
 
  166                                 if ($question_gui->object->questionTitleExists($question_gui->object->getTitle(), $questionpool_to))
 
  169                                         while ($question_gui->object->questionTitleExists($question_gui->object->getTitle() . 
" ($counter)", $questionpool_to))
 
  173                                         $newtitle = $question_gui->object->getTitle() . 
" ($counter)";
 
  175                                 $question_gui->object->copyObject($this->
getId(), $newtitle);
 
  188                 $result = $ilDB->queryF(
"SELECT * FROM svy_qpl WHERE obj_fi = %s",
 
  190                         array($this->
getId())
 
  208                 $result = $ilDB->queryF(
"SELECT * FROM svy_qpl WHERE obj_fi = %s",
 
  210                         array($this->
getId())
 
  214                         $affectedRows = $ilDB->manipulateF(
"UPDATE svy_qpl SET isonline = %s, tstamp = %s WHERE obj_fi = %s",
 
  215                                 array(
'text',
'integer',
'integer'),
 
  221                         $next_id = $ilDB->nextId(
'svy_qpl');
 
  222                         $query = $ilDB->manipulateF(
"INSERT INTO svy_qpl (id_questionpool, isonline, obj_fi, tstamp) VALUES (%s, %s, %s, %s)",
 
  223                                 array(
'integer', 
'text', 
'integer', 
'integer'),
 
  256                 $result = $ilDB->queryF(
"SELECT question_id FROM svy_question WHERE obj_fi = %s AND original_id IS NULL",
 
  258                         array($this->
getId())
 
  260                 $found_questions = array();
 
  267                 include_once 
"./Services/Utilities/classes/class.ilUtil.php";
 
  269                 $directory = $spl_data_dir.
"/spl_".$this->
getId();
 
  270                 if (is_dir($directory))
 
  272                         include_once 
"./Services/Utilities/classes/class.ilUtil.php";
 
  290         function notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params = 0)
 
  330                 if ($a_node_id==
$_GET[
"ref_id"])
 
  332                         $parent_obj =& $this->ilias->obj_factory->getInstanceByRefId($a_node_id);
 
  333                         $parent_type = $parent_obj->getType();
 
  334                         if($parent_type == $this->
getType())
 
  336                                 $a_node_id = (int) $tree->getParentId($a_node_id);
 
  340                 parent::notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params);
 
  370                 if ($question_id < 1) 
return;
 
  371                 include_once 
"./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
 
  373                 $question->delete($question_id);
 
  386                 if ($question_id < 1) 
return;
 
  387                 $result = $ilDB->queryF(
"SELECT svy_qtype.type_tag FROM svy_question, svy_qtype WHERE svy_question.questiontype_fi = svy_qtype.questiontype_id AND svy_question.question_id = %s",
 
  394                         return $data[
"type_tag"];
 
  413                 $result = $ilDB->queryF(
"SELECT answer_id FROM svy_answer WHERE question_fi = %s",
 
  417                 $answered = 
$result->numRows();
 
  420                 $result = $ilDB->queryF(
"SELECT svy_svy.* FROM svy_svy, svy_svy_qst WHERE svy_svy_qst.survey_fi = svy_svy.survey_id AND svy_svy_qst.question_fi = %s",
 
  424                 $inserted = 
$result->numRows();
 
  425                 if (($inserted + $answered) == 0)
 
  429                 $result_array = array();
 
  432                         array_push($result_array, 
$row);
 
  434                 return $result_array;
 
  458                 $result_array = array();
 
  459                 $result = $ilDB->query(
"SELECT svy_question.*, svy_qtype.type_tag, svy_qtype.plugin FROM svy_question, svy_qtype WHERE svy_question.questiontype_fi = svy_qtype.questiontype_id AND svy_question.tstamp > 0 AND " . $ilDB->in(
'svy_question.question_id', $question_array, 
false, 
'integer'));
 
  466                                         array_push($result_array, 
$row);
 
  471                                 array_push($result_array, 
$row);
 
  474                 return $result_array;
 
  486                 include_once 
"./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
 
  490                 while ($question->questionTitleExists($question->getTitle().$suffix, $obj_id)) 
 
  493                         if ($counter > 1) $suffix = 
" ($counter)";
 
  497                         $question->setObjId($obj_id);
 
  499                 $question->duplicate(
false, $question->getTitle() . $suffix, $ilUser->fullname, $ilUser->id);
 
  512                 if (is_array($arrFilter))
 
  514                         foreach ($arrFilter as $key => $value)
 
  516                                 $arrFilter[$key] = str_replace(
'%', 
'', $arrFilter[$key]);
 
  518                         if (array_key_exists(
'title', $arrFilter) && strlen($arrFilter[
'title']))
 
  520                                 $where .= 
" AND " . $ilDB->like(
'svy_question.title', 
'text', 
"%%" . $arrFilter[
'title'] . 
"%%");
 
  522                         if (array_key_exists(
'description', $arrFilter) && strlen($arrFilter[
'description']))
 
  524                                 $where .= 
" AND " . $ilDB->like(
'svy_question.description', 
'text', 
"%%" . $arrFilter[
'description'] . 
"%%");
 
  526                         if (array_key_exists(
'author', $arrFilter) && strlen($arrFilter[
'author']))
 
  528                                 $where .= 
" AND " . $ilDB->like(
'svy_question.author', 
'text', 
"%%" . $arrFilter[
'author'] . 
"%%");
 
  530                         if (array_key_exists(
'type', $arrFilter) && strlen($arrFilter[
'type']))
 
  532                                 $where .= 
" AND svy_qtype.type_tag = " . $ilDB->quote($arrFilter[
'type'], 
'text');
 
  535                 $query_result = $ilDB->queryF(
"SELECT svy_question.*, svy_qtype.type_tag, svy_qtype.plugin FROM svy_question, svy_qtype WHERE svy_question.original_id IS NULL AND svy_question.tstamp > 0 AND svy_question.questiontype_fi = svy_qtype.questiontype_id AND svy_question.obj_fi = %s" . $where,
 
  537                         array($this->
getId())
 
  540                 if ($query_result->numRows())
 
  542                         while (
$row = $ilDB->fetchAssoc($query_result))
 
  548                                                 array_push($rows, 
$row);
 
  553                                         array_push($rows, 
$row);
 
  567                 include_once 
"./Services/Utilities/classes/class.ilUtil.php";
 
  570                 if(!is_writable($spl_data_dir))
 
  572                         $this->ilias->raiseError(
"Survey Questionpool Data Directory (".$spl_data_dir
 
  573                                 .
") not writeable.",$this->ilias->error_obj->FATAL);
 
  577                 $spl_dir = $spl_data_dir.
"/spl_".$this->
getId();
 
  579                 if(!@is_dir($spl_dir))
 
  581                         $this->ilias->raiseError(
"Creation of Survey Questionpool Directory failed.",$this->ilias->error_obj->FATAL);
 
  584                 $export_dir = $spl_dir.
"/export";
 
  586                 if(!@is_dir($export_dir))
 
  588                         $this->ilias->raiseError(
"Creation of Export Directory failed.",$this->ilias->error_obj->FATAL);
 
  597                 include_once 
"./Services/Utilities/classes/class.ilUtil.php";
 
  608                 if (!@is_dir(
$dir) or
 
  621                 while ($entry = 
$dir->read())
 
  623                         if ($entry != 
"." and
 
  625                                 substr($entry, -4) == 
".xml" and
 
  626                                 ereg(
"^[0-9]{10}_{2}[0-9]+_{2}(spl__)*[0-9]+\.xml\$", $entry))
 
  648                 include_once 
"./Services/Utilities/classes/class.ilUtil.php";
 
  652                 if(!is_writable($spl_data_dir))
 
  654                         $this->ilias->raiseError(
"Survey Questionpool Data Directory (".$spl_data_dir
 
  655                                 .
") not writeable.",$this->ilias->error_obj->FATAL);
 
  659                 $spl_dir = $spl_data_dir.
"/spl_".$this->
getId();
 
  661                 if(!@is_dir($spl_dir))
 
  663                         $this->ilias->raiseError(
"Creation of Survey Questionpool Directory failed.",$this->ilias->error_obj->FATAL);
 
  667                 $import_dir = $spl_dir.
"/import";
 
  669                 if(!@is_dir($import_dir))
 
  671                         $this->ilias->raiseError(
"Creation of Import Directory failed.",$this->ilias->error_obj->FATAL);
 
  680                 include_once 
"./Services/Utilities/classes/class.ilUtil.php";
 
  682                         "/spl_".$this->getId().
"/import";
 
  683                 if(@is_dir($import_dir))
 
  698                 if (!is_array($questions))
 
  702                 if (count($questions) == 0)
 
  708                 include_once(
"./Services/Xml/classes/class.ilXmlWriter.php");
 
  713                         "xmlns:xsi" => 
"http://www.w3.org/2001/XMLSchema-instance",
 
  714                         "xsi:noNamespaceSchemaLocation" => 
"http://www.ilias.de/download/xsd/ilias_survey_3_8.xsd" 
  716                 $a_xml_writer->xmlStartTag(
"surveyobject", $attrs);
 
  718                         "id" => 
"qpl_" . $this->
getId(),
 
  721                 $a_xml_writer->xmlStartTag(
"surveyquestions", $attrs);
 
  722                 $a_xml_writer->xmlElement(
"dummy", NULL, 
"dummy");
 
  724                 $a_xml_writer->xmlStartTag(
"metadata");
 
  725                 $a_xml_writer->xmlStartTag(
"metadatafield");
 
  726                 $a_xml_writer->xmlElement(
"fieldlabel", NULL, 
"SCORM");
 
  727                 include_once 
"./Services/MetaData/classes/class.ilMD.php";
 
  731                 $metadata = $writer->xmlDumpMem();
 
  732                 $a_xml_writer->xmlElement(
"fieldentry", NULL, $metadata);
 
  733                 $a_xml_writer->xmlEndTag(
"metadatafield");
 
  734                 $a_xml_writer->xmlEndTag(
"metadata");
 
  736                 $a_xml_writer->xmlEndTag(
"surveyquestions");
 
  737                 $a_xml_writer->xmlEndTag(
"surveyobject");
 
  739                 $xml = $a_xml_writer->xmlDumpMem(FALSE);
 
  742                 foreach ($questions as $key => $value)
 
  745                         include_once 
"./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
 
  747                         $question = 
new $questiontype();
 
  748                         $question->loadFromDb($value);
 
  749                         $questionxml .= $question->toXML(
false);
 
  752                 $xml = str_replace(
"<dummy>dummy</dummy>", $questionxml, $xml);
 
  759                 $questions = array();
 
  760                 $result = $ilDB->queryF(
"SELECT question_id FROM svy_question WHERE obj_fi = %s AND svy_question.tstamp > 0 AND original_id IS NULL",
 
  762                         array($this->
getId())
 
  768                                 array_push($questions, 
$row[
"question_id"]);
 
  782                 if (is_file($source))
 
  784                         $fh = fopen($source, 
"r") or die(
"");
 
  785                         $xml = fread($fh, filesize($source));
 
  786                         fclose($fh) or die(
"");
 
  787                         if (strpos($xml, 
"questestinterop") > 0)
 
  790                                 include_once 
"./Services/Survey/classes/class.SurveyImportParserPre38.php";
 
  792                                 $import->setXMLContent($xml);
 
  793                                 $import->startParsing();
 
  798                                 include_once 
"./Services/Survey/classes/class.SurveyImportParser.php";
 
  800                                 $import->setXMLContent($xml);
 
  801                                 $import->startParsing();
 
  815                 switch ($a_online_status)
 
  819                                 $this->online = $a_online_status;
 
  829                 if (strcmp($this->online, 
"") == 0) $this->online = 
"0";
 
  837                 $result = $ilDB->queryF(
"SELECT isonline FROM svy_qpl WHERE obj_fi = %s",
 
  844                         return $row[
"isonline"];
 
  863                 foreach ($refs as $ref)
 
  884                 $lng->loadLanguageModule(
"survey");
 
  886                 $query_result = $ilDB->query(
"SELECT * FROM svy_qtype ORDER BY type_tag");
 
  887                 while (
$row = $ilDB->fetchAssoc($query_result))
 
  890                         if (
$row[
"plugin"] == 0)
 
  892                                 $types[$lng->txt(
$row[
"type_tag"])] = 
$row;
 
  896                                 global $ilPluginAdmin;
 
  897                                 $pl_names = $ilPluginAdmin->getActivePluginsForSlot(
IL_COMP_MODULE, 
"SurveyQuestionPool", 
"svyq");
 
  898                                 foreach ($pl_names as $pl_name)
 
  901                                         if (strcmp($pl->getQuestionType(), 
$row[
"type_tag"]) == 0)
 
  903                                                 $types[$pl->getQuestionTypeTranslation()] = 
$row;
 
  917                 global $ilPluginAdmin;
 
  919                 $lng->loadLanguageModule(
"survey");
 
  920                 $result = $ilDB->query(
"SELECT * FROM svy_qtype");
 
  924                         if (
$row[
"plugin"] == 0)
 
  926                                 $types[
$row[
'type_tag']] = $lng->txt($row[
"type_tag"]);
 
  930                                 $pl_names = $ilPluginAdmin->getActivePluginsForSlot(
IL_COMP_MODULE, 
"SurveyQuestionPool", 
"svyq");
 
  931                                 foreach ($pl_names as $pl_name)
 
  934                                         if (strcmp($pl->getQuestionType(), 
$row[
"type_tag"]) == 0)
 
  936                                                 $types[
$row[
'type_tag']] = $pl->getQuestionTypeTranslation();
 
  956                 $result_array = array();
 
  960                 $result = $ilDB->query(
"SELECT obj_fi, isonline FROM svy_qpl");
 
  963                         $allqpls[
$row[
'obj_fi']] = $row[
'isonline'];
 
  968                         if (($could_be_offline) || ($allqpls[$obj_id][
'isonline'] == 1))
 
  972                                         $result_array[$obj_id] = $titles[
$ref_id];
 
  980                 return $result_array;
 
  991                 global $ilPluginAdmin;
 
  992                 if ($ilPluginAdmin->isActive(
IL_COMP_MODULE, 
"SurveyQuestionPool", 
"svyq", $a_pname))
 
 1013                 $query_result = $ilDB->query(
"SELECT svy_question.*, svy_qtype.type_tag FROM svy_question, svy_qtype " .
 
 1014                         "WHERE svy_question.questiontype_fi = svy_qtype.questiontype_id " .
 
 1015                         "AND svy_question.tstamp > 0 AND " . $ilDB->in(
'svy_question.question_id', $question_ids, 
false, 
'integer') . 
" " .
 
 1016                         "ORDER BY svy_question.title");
 
 1017                 if ($query_result->numRows() > 0)
 
 1019                         while (
$data = $ilDB->fetchAssoc($query_result))
 
 1021                                 if (in_array(
$data[
"question_id"], $question_ids))
 
 1023                                         array_push($found, array(
'title' => 
$data[
"title"], 
'description' => 
$data[
"description"], 
'type_tag' => 
$data[
"type_tag"]));
 
 1035                 global 
$ilDB, $ilUser;
 
 1037                 $result = $ilDB->queryF(
"SELECT question_id FROM svy_question WHERE owner_fi = %s AND tstamp = %s", 
 
 1038                         array(
"integer", 
"integer"),
 
 1039                         array($ilUser->getId(), 0)
 
 1054                 if (!array_key_exists(
"spl_clipboard", 
$_SESSION))
 
 1058                 $_SESSION[
"spl_clipboard"][$question_id] = array(
"question_id" => $question_id, 
"action" => 
"copy");
 
 1068                 if (!array_key_exists(
"spl_clipboard", 
$_SESSION))
 
 1072                 $_SESSION[
"spl_clipboard"][$question_id] = array(
"question_id" => $question_id, 
"action" => 
"move");
 
 1082                 if (array_key_exists(
"spl_clipboard", 
$_SESSION))
 
 1084                         foreach (
$_SESSION[
"spl_clipboard"] as $question_object)
 
 1086                                 if (strcmp($question_object[
"action"], 
"move") == 0)
 
 1088                                         $result = $ilDB->queryF(
"SELECT obj_fi FROM svy_question WHERE question_id = %s",
 
 1090                                                 array($question_object[
"question_id"])
 
 1095                                                 $source_questionpool = 
$row[
"obj_fi"];
 
 1096                                                 if ($this->
getId() != $source_questionpool)
 
 1099                                                         $affectedRows = $ilDB->manipulateF(
"UPDATE svy_question SET obj_fi = %s WHERE question_id = %s",
 
 1100                                                                 array(
'integer',
'integer'),
 
 1101                                                                 array($this->
getId(), $question_object[
"question_id"])
 
 1105                                                         $source_path = CLIENT_WEB_DIR . 
"/survey/" . $source_questionpool . 
"/" . $question_object[
"question_id"] . 
"/";
 
 1106                                                         if (@is_dir($source_path))
 
 1108                                                                 $target_path = CLIENT_WEB_DIR . 
"/survey/" . $this->
getId() . 
"/";
 
 1109                                                                 if (!@is_dir($target_path))
 
 1111                                                                         include_once 
"./Services/Utilities/classes/class.ilUtil.php";
 
 1114                                                                 @rename($source_path, $target_path . $question_object[
"question_id"]);