ILIAS  Release_4_4_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilObjSurveyQuestionPoolGUI.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 include_once "./Services/Object/classes/class.ilObjectGUI.php";
25 
43 {
45 
50  public function ilObjSurveyQuestionPoolGUI()
51  {
52  global $lng, $ilCtrl;
53 
54  $this->type = "spl";
55  $lng->loadLanguageModule("survey");
56  $this->ctrl =& $ilCtrl;
57  $this->ctrl->saveParameter($this, array("ref_id"));
58 
59  $this->ilObjectGUI("",$_GET["ref_id"], true, false);
60  }
61 
65  public function executeCommand()
66  {
67  global $ilAccess, $ilNavigationHistory, $ilErr;
68 
69  if (!$ilAccess->checkAccess("read", "", $this->ref_id) &&
70  !$ilAccess->checkAccess("visible", "", $this->ref_id))
71  {
72  global $ilias;
73  $ilias->raiseError($this->lng->txt("permission_denied"), $ilias->error_obj->MESSAGE);
74  }
75 
76  // add entry to navigation history
77  if (!$this->getCreationMode() &&
78  $ilAccess->checkAccess("read", "", $this->ref_id))
79  {
80  $ilNavigationHistory->addItem($this->ref_id,
81  "ilias.php?baseClass=ilObjSurveyQuestionPoolGUI&cmd=questions&ref_id=".$this->ref_id, "spl");
82  }
83 
84  $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "survey.css", "Modules/Survey"), "screen");
85  $this->prepareOutput();
86 
87  $cmd = $this->ctrl->getCmd("questions");
88  $next_class = $this->ctrl->getNextClass($this);
89  $this->ctrl->setReturn($this, "questions");
90  if ($_GET["q_id"] < 1)
91  {
92  $q_type = ($_POST["sel_question_types"] != "")
93  ? $_POST["sel_question_types"]
94  : $_GET["sel_question_types"];
95  }
96  switch($next_class)
97  {
98  case 'ilmdeditorgui':
99  if(!$ilAccess->checkAccess('write','',$this->object->getRefId()))
100  {
101  $ilErr->raiseError($this->lng->txt('permission_denied'),$ilErr->WARNING);
102  }
103 
104  include_once "./Services/MetaData/classes/class.ilMDEditorGUI.php";
105  $md_gui =& new ilMDEditorGUI($this->object->getId(), 0, $this->object->getType());
106  $md_gui->addObserver($this->object,'MDUpdateListener','General');
107 
108  $this->ctrl->forwardCommand($md_gui);
109  break;
110 
111  case 'ilpermissiongui':
112  include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
113  $perm_gui =& new ilPermissionGUI($this);
114  $ret =& $this->ctrl->forwardCommand($perm_gui);
115  break;
116 
117  case "ilsurveyphrasesgui":
118  include_once("./Modules/SurveyQuestionPool/classes/class.ilSurveyPhrasesGUI.php");
119  $phrases_gui =& new ilSurveyPhrasesGUI($this);
120  $ret =& $this->ctrl->forwardCommand($phrases_gui);
121  break;
122 
123  case 'ilobjectcopygui':
124  include_once './Services/Object/classes/class.ilObjectCopyGUI.php';
125  $cp = new ilObjectCopyGUI($this);
126  $cp->setType('spl');
127  $this->ctrl->forwardCommand($cp);
128  break;
129 
130  case 'ilinfoscreengui':
131  $this->infoScreenForward();
132  break;
133 
134  case "ilcommonactiondispatchergui":
135  include_once("Services/Object/classes/class.ilCommonActionDispatcherGUI.php");
137  $this->ctrl->forwardCommand($gui);
138  break;
139 
140  case "":
141  $cmd.= "Object";
142  $ret =& $this->$cmd();
143  break;
144 
145  default:
146  include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestionGUI.php";
147  $q_gui = SurveyQuestionGUI::_getQuestionGUI($q_type, $_GET["q_id"]);
148  // $q_gui->object->setObjId($this->object->getId());
149  $q_gui->setQuestionTabs();
150  $ret =& $this->ctrl->forwardCommand($q_gui);
151 
152  // not on create
153  if($q_gui->object->isComplete())
154  {
155  $this->tpl->setTitle($this->lng->txt("question").": ".$q_gui->object->getTitle());
156  }
157  break;
158  }
159  if (strtolower($_GET["baseClass"]) != "iladministrationgui" &&
160  $this->getCreationMode() != true)
161  {
162  $this->tpl->show();
163  }
164  }
165 
169  public function propertiesObject()
170  {
171  $save = ((strcmp($this->ctrl->getCmd(), "save") == 0)) ? true : false;
172 
173  include_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
174  $form = new ilPropertyFormGUI();
175  $form->setFormAction($this->ctrl->getFormAction($this, 'properties'));
176  $form->setTitle($this->lng->txt("properties"));
177  $form->setMultipart(false);
178  $form->setId("properties");
179 
180  // online
181  $online = new ilCheckboxInputGUI($this->lng->txt("spl_online_property"), "online");
182  $online->setInfo($this->lng->txt("spl_online_property_description"));
183  $online->setChecked($this->object->getOnline());
184  $form->addItem($online);
185 
186  $form->addCommandButton("saveProperties", $this->lng->txt("save"));
187 
188  if ($save)
189  {
190  $form->checkInput();
191  }
192  $this->tpl->setVariable("ADM_CONTENT", $form->getHTML());
193  }
194 
198  public function savePropertiesObject()
199  {
200  $qpl_online = $_POST["online"];
201  if (strlen($qpl_online) == 0) $qpl_online = "0";
202  $this->object->setOnline($qpl_online);
203  $this->object->saveToDb();
204  ilUtil::sendSuccess($this->lng->txt("saved_successfully"), true);
205  $this->ctrl->redirect($this, "properties");
206  }
207 
208 
212  public function copyObject()
213  {
214  if (count($_POST["q_id"]) > 0)
215  {
216  foreach ($_POST["q_id"] as $key => $value)
217  {
218  $this->object->copyToClipboard($value);
219  }
220  ilUtil::sendInfo($this->lng->txt("spl_copy_insert_clipboard"), true);
221  }
222  else
223  {
224  ilUtil::sendInfo($this->lng->txt("spl_copy_select_none"), true);
225  }
226  $this->ctrl->redirect($this, "questions");
227  }
228 
232  public function moveObject()
233  {
234  if (count($_POST["q_id"]) > 0)
235  {
236  foreach ($_POST["q_id"] as $key => $value)
237  {
238  $this->object->moveToClipboard($value);
239  }
240  ilUtil::sendInfo($this->lng->txt("spl_move_insert_clipboard"), true);
241  }
242  else
243  {
244  ilUtil::sendInfo($this->lng->txt("spl_move_select_none"), true);
245  }
246  $this->ctrl->redirect($this, "questions");
247  }
248 
252  public function exportQuestionObject()
253  {
254  if (is_array($_POST['q_id']) && count($_POST['q_id']) > 0)
255  {
256  $this->createExportFileObject($_POST['q_id']);
257  }
258  else
259  {
260  ilUtil::sendInfo($this->lng->txt("qpl_export_select_none"));
261  $this->questionsObject();
262  }
263  }
264 
268  public function deleteQuestionsObject()
269  {
270  global $rbacsystem;
271 
272  // create an array of all checked checkboxes
273  $checked_questions = $_POST['q_id'];
274  if (count($checked_questions) > 0)
275  {
276  if (!$rbacsystem->checkAccess('write', $this->ref_id))
277  {
278  ilUtil::sendFailure($this->lng->txt("qpl_delete_rbac_error"));
279  $this->questionsObject();
280  return;
281  }
282  }
283  elseif (count($checked_questions) == 0)
284  {
285  ilUtil::sendInfo($this->lng->txt("qpl_delete_select_none"));
286  $this->questionsObject();
287  return;
288  }
289 
290  include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
291  $cgui = new ilConfirmationGUI();
292  $cgui->setHeaderText($this->lng->txt("qpl_confirm_delete_questions"));
293 
294  $cgui->setFormAction($this->ctrl->getFormAction($this));
295  $cgui->setCancel($this->lng->txt("cancel"), "cancelDeleteQuestions");
296  $cgui->setConfirm($this->lng->txt("confirm"), "confirmDeleteQuestions");
297 
298  include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
299  $infos = $this->object->getQuestionInfos($checked_questions);
300  foreach ($infos as $data)
301  {
302  $txt = $data["title"]." (".
303  SurveyQuestion::_getQuestionTypeName($data["type_tag"]).")";
304  if($data["description"])
305  {
306  $txt .= "<div class=\"small\">".$data["description"]."</div>";
307  }
308 
309  $cgui->addItem("q_id[]", $data["id"], $txt);
310  }
311 
312  $this->tpl->setContent($cgui->getHTML());
313  }
314 
319  {
320  // delete questions after confirmation
321  ilUtil::sendSuccess($this->lng->txt("qpl_questions_deleted"), true);
322  foreach ($_POST['q_id'] as $q_id)
323  {
324  $this->object->removeQuestion($q_id);
325  }
326  $this->ctrl->redirect($this, "questions");
327  }
328 
332  public function cancelDeleteQuestionsObject()
333  {
334  // delete questions after confirmation
335  $this->ctrl->redirect($this, "questions");
336  }
337 
341  public function pasteObject()
342  {
343  if (array_key_exists("spl_clipboard", $_SESSION))
344  {
345  $this->object->pasteFromClipboard();
346  }
347  else
348  {
349  ilUtil::sendInfo($this->lng->txt("spl_paste_no_objects"), true);
350  }
351  $this->ctrl->redirect($this, "questions");
352  }
353 
357  public function importQuestionsObject()
358  {
359  $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_svy_import_question.html", "Modules/SurveyQuestionPool");
360  $this->tpl->setCurrentBlock("adm_content");
361  $this->tpl->setVariable("TEXT_IMPORT_QUESTION", $this->lng->txt("import_question"));
362  $this->tpl->setVariable("TEXT_SELECT_FILE", $this->lng->txt("select_file"));
363  $this->tpl->setVariable("TEXT_UPLOAD", $this->lng->txt("upload"));
364  $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
365  $this->tpl->parseCurrentBlock();
366  }
367 
371  public function uploadQuestionsObject()
372  {
373  // check if file was uploaded
374  $source = $_FILES["qtidoc"]["tmp_name"];
375  $error = 0;
376  if (($source == 'none') || (!$source) || $_FILES["qtidoc"]["error"] > UPLOAD_ERR_OK)
377  {
378  $error = 1;
379  }
380  // check correct file type
381  if (strpos("xml", $_FILES["qtidoc"]["type"]) !== FALSE)
382  {
383  $error = 1;
384  }
385  if (!$error)
386  {
387  // import file into questionpool
388  // create import directory
389  $this->object->createImportDirectory();
390 
391  // copy uploaded file to import directory
392  $full_path = $this->object->getImportDirectory()."/".$_FILES["qtidoc"]["name"];
393 
394  include_once "./Services/Utilities/classes/class.ilUtil.php";
395  ilUtil::moveUploadedFile($_FILES["qtidoc"]["tmp_name"],
396  $_FILES["qtidoc"]["name"], $full_path);
397  $source = $full_path;
398  $this->object->importObject($source, TRUE);
399  unlink($source);
400  }
401  $this->ctrl->redirect($this, "questions");
402  }
403 
404  public function filterQuestionBrowserObject()
405  {
406  include_once "./Modules/SurveyQuestionPool/classes/tables/class.ilSurveyQuestionsTableGUI.php";
407  $table_gui = new ilSurveyQuestionsTableGUI($this, 'questions');
408  $table_gui->writeFilterToSession();
409  $this->ctrl->redirect($this, 'questions');
410  }
411 
413  {
414  include_once "./Modules/SurveyQuestionPool/classes/tables/class.ilSurveyQuestionsTableGUI.php";
415  $table_gui = new ilSurveyQuestionsTableGUI($this, 'questions');
416  $table_gui->resetFilter();
417  $this->ctrl->redirect($this, 'questions');
418  }
419 
423  public function questionsObject($arrFilter = null)
424  {
425  global $rbacsystem;
426  global $ilUser;
427  global $ilToolbar;
428 
429  $this->object->purgeQuestions();
430 
431  $_SESSION['q_id_table_nav'] = $_GET['q_id_table_nav'];
432 
433  if ($rbacsystem->checkAccess('write', $_GET['ref_id']))
434  {
435  include_once "Services/Form/classes/class.ilSelectInputGUI.php";
436  $qtypes = new ilSelectInputGUI("", "sel_question_types");
437  $qtypes->setValue($ilUser->getPref("svy_lastquestiontype"));
438  $ilToolbar->addInputItem($qtypes);
439 
440  $options = array();
441  foreach (ilObjSurveyQuestionPool::_getQuestionTypes() as $translation => $data)
442  {
443  $options[$data["type_tag"]] = $translation;
444  }
445  $qtypes->setOptions($options);
446 
447  $ilToolbar->setFormAction($this->ctrl->getFormAction($this));
448  $ilToolbar->addFormButton($this->lng->txt("svy_create_question"), "createQuestion");
449 
450  $ilToolbar->addSeparator();
451 
452  $ilToolbar->addFormButton($this->lng->txt('import'), 'importQuestions');
453  }
454 
455  include_once "./Modules/SurveyQuestionPool/classes/tables/class.ilSurveyQuestionsTableGUI.php";
456  $table_gui = new ilSurveyQuestionsTableGUI($this, 'questions', (($rbacsystem->checkAccess('write', $_GET['ref_id']) ? true : false)));
457  $table_gui->setEditable($rbacsystem->checkAccess('write', $_GET['ref_id']));
458  $arrFilter = array();
459  foreach ($table_gui->getFilterItems() as $item)
460  {
461  if ($item->getValue() !== false)
462  {
463  $arrFilter[$item->getPostVar()] = $item->getValue();
464  }
465  }
466  $table_gui->setData($this->object->getQuestionsData($arrFilter));
467  $this->tpl->setContent($table_gui->getHTML());
468  }
469 
470  public function updateObject()
471  {
472  $this->update = $this->object->update();
473  ilUtil::sendSuccess($this->lng->txt("msg_obj_modified"), true);
474  }
475 
476  public function afterSave(ilObject $a_new_object)
477  {
478  // always send a message
479  ilUtil::sendSuccess($this->lng->txt("object_added"),true);
480 
481  ilUtil::redirect("ilias.php?ref_id=".$a_new_object->getRefId().
482  "&baseClass=ilObjSurveyQuestionPoolGUI");
483  }
484 
485  /*
486  * list all export files
487  */
488  public function exportObject()
489  {
490  global $ilToolbar;
491 
492  $ilToolbar->addButton($this->lng->txt('create_export_file'),
493  $this->ctrl->getLinkTarget($this, 'createExportFile'));
494 
495  include_once "./Modules/SurveyQuestionPool/classes/tables/class.ilSurveyQuestionPoolExportTableGUI.php";
496  $table_gui = new ilSurveyQuestionPoolExportTableGUI($this, 'export');
497  $export_dir = $this->object->getExportDirectory();
498  $export_files = $this->object->getExportFiles($export_dir);
499  $data = array();
500  foreach ($export_files as $exp_file)
501  {
502  $file_arr = explode("__", $exp_file);
503  array_push($data, array('file' => $exp_file, 'date' => ilDatePresentation::formatDate(new ilDateTime($file_arr[0], IL_CAL_UNIX)), 'size' => filesize($export_dir."/".$exp_file)));
504  }
505  $table_gui->setData($data);
506  $this->tpl->setContent($table_gui->getHTML());
507  }
508 
512  public function createExportFileObject($questions = null)
513  {
514  global $rbacsystem;
515 
516  if ($rbacsystem->checkAccess("write", $this->ref_id))
517  {
518  include_once("./Modules/SurveyQuestionPool/classes/class.ilSurveyQuestionpoolExport.php");
519  $survey_exp = new ilSurveyQuestionpoolExport($this->object);
520  $survey_exp->buildExportFile($questions);
521  $this->ctrl->redirect($this, "export");
522  }
523  else
524  {
525  ilUtil::sendInfo("cannot_export_questionpool");
526  }
527  }
528 
532  public function downloadExportFileObject()
533  {
534  if(!isset($_POST["file"]))
535  {
536  ilUtil::sendInfo($this->lng->txt("no_checkbox"), true);
537  $this->ctrl->redirect($this, "export");
538  }
539 
540  if (count($_POST["file"]) > 1)
541  {
542  ilUtil::sendInfo($this->lng->txt("select_max_one_item"),true);
543  $this->ctrl->redirect($this, "export");
544  }
545 
546 
547  $export_dir = $this->object->getExportDirectory();
548  include_once "./Services/Utilities/classes/class.ilUtil.php";
549 
550  $file = basename($_POST["file"][0]);
551 
552  ilUtil::deliverFile($export_dir."/".$file, $file);
553  }
554 
559  {
560  if(!isset($_POST["file"]))
561  {
562  ilUtil::sendInfo($this->lng->txt("no_checkbox"),true);
563  $this->ctrl->redirect($this, "export");
564  }
565 
566  ilUtil::sendQuestion($this->lng->txt("info_delete_sure"));
567  include_once "./Modules/SurveyQuestionPool/classes/tables/class.ilSurveyQuestionPoolExportTableGUI.php";
568  $table_gui = new ilSurveyQuestionPoolExportTableGUI($this, 'export', true);
569  $export_dir = $this->object->getExportDirectory();
570  $data = array();
571  foreach ($_POST['file'] as $exp_file)
572  {
573  $file_arr = explode("__", $exp_file);
574  array_push($data, array('file' => $exp_file, 'date' => ilDatePresentation::formatDate(new ilDateTime($file_arr[0], IL_CAL_UNIX)), 'size' => filesize($export_dir."/".$exp_file)));
575  }
576  $table_gui->setData($data);
577  $this->tpl->setVariable('ADM_CONTENT', $table_gui->getHTML());
578  }
579 
580 
585  {
586  ilSession::clear("ilExportFiles");
587  $this->ctrl->redirect($this, "export");
588  }
589 
593  public function deleteExportFileObject()
594  {
595  $export_dir = $this->object->getExportDirectory();
596  foreach($_POST['file'] as $file)
597  {
598  $file = basename($file);
599 
600  $exp_file = $export_dir."/".$file;
601  $exp_dir = $export_dir."/".substr($file, 0, strlen($file) - 4);
602  if (@is_file($exp_file))
603  {
604  unlink($exp_file);
605  }
606  if (@is_dir($exp_dir))
607  {
608  include_once "./Services/Utilities/classes/class.ilUtil.php";
609  ilUtil::delDir($exp_dir);
610  }
611  }
612  $this->ctrl->redirect($this, "export");
613  }
614 
615  protected function initImportForm($a_new_type)
616  {
617  $form = parent::initImportForm($a_new_type);
618  $form->getItemByPostVar('importfile')->setSuffixes(array("zip", "xml"));
619 
620  return $form;
621  }
622 
623  protected function initCreationForms($a_new_type)
624  {
625  $form = $this->initImportForm($a_new_type);
626 
627  $forms = array(self::CFORM_NEW => $this->initCreateForm($a_new_type),
628  self::CFORM_IMPORT => $form);
629 
630  return $forms;
631  }
632 
636  public function importFileObject()
637  {
638  global $tpl, $ilErr;
639 
640  $parent_id = $_GET["ref_id"];
641  $new_type = $_REQUEST["new_type"];
642 
643  // create permission is already checked in createObject. This check here is done to prevent hacking attempts
644  if (!$this->checkPermissionBool("create", "", $new_type))
645  {
646  $ilErr->raiseError($this->lng->txt("no_create_permission"));
647  }
648 
649  $this->lng->loadLanguageModule($new_type);
650  $this->ctrl->setParameter($this, "new_type", $new_type);
651 
652  $form = $this->initImportForm($new_type);
653  if ($form->checkInput())
654  {
655  include_once "./Modules/SurveyQuestionPool/classes/class.ilObjSurveyQuestionPool.php";
656  $newObj = new ilObjSurveyQuestionPool();
657  $newObj->setType($new_type);
658  $newObj->setTitle("dummy");
659  $newObj->create(true);
660  $this->putObjectInTree($newObj);
661 
662  $newObj->createImportDirectory();
663 
664  // copy uploaded file to import directory
665  $upload = $_FILES["importfile"];
666  $file = pathinfo($upload["name"]);
667  $full_path = $newObj->getImportDirectory()."/".$upload["name"];
668  include_once "./Services/Utilities/classes/class.ilUtil.php";
669  ilUtil::moveUploadedFile($upload["tmp_name"], $upload["name"],
670  $full_path);
671 
672  // import qti data
673  $qtiresult = $newObj->importObject($full_path);
674 
675  ilUtil::sendSuccess($this->lng->txt("object_imported"),true);
676  ilUtil::redirect("ilias.php?ref_id=".$newObj->getRefId().
677  "&baseClass=ilObjSurveyQuestionPoolGUI");
678  }
679 
680  // display form to correct errors
681  $form->setValuesByPost();
682  $tpl->setContent($form->getHtml());
683  }
684 
688  public function &createQuestionObject()
689  {
690  global $ilUser;
691 
692  $ilUser->writePref("svy_lastquestiontype", $_POST["sel_question_types"]);
693 
694  include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestionGUI.php";
695  $q_gui =& SurveyQuestionGUI::_getQuestionGUI($_POST["sel_question_types"]);
696  $q_gui->object->setObjId($this->object->getId());
697  $q_gui->object->createNewQuestion();
698 
699  $this->ctrl->setParameterByClass(get_class($q_gui), "q_id", $q_gui->object->getId());
700  $this->ctrl->setParameterByClass(get_class($q_gui), "sel_question_types", $_POST["sel_question_types"]);
701  $this->ctrl->redirectByClass(get_class($q_gui), "editQuestion");
702  }
703 
707  public function &previewObject()
708  {
709  include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestionGUI.php";
710  $q_gui =& SurveyQuestionGUI::_getQuestionGUI("", $_GET["preview"]);
711  $this->ctrl->setParameterByClass(get_class($q_gui), "sel_question_types", $q_gui->getQuestionType());
712  $this->ctrl->setParameterByClass(get_class($q_gui), "q_id", $_GET["preview"]);
713  $this->ctrl->redirectByClass(get_class($q_gui), "preview");
714  }
715 
721  function infoScreenObject()
722  {
723  $this->ctrl->setCmd("showSummary");
724  $this->ctrl->setCmdClass("ilinfoscreengui");
725  $this->infoScreenForward();
726  }
727 
731  function infoScreenForward()
732  {
733  global $ilErr, $ilAccess;
734 
735  if(!$ilAccess->checkAccess("visible", "", $this->ref_id))
736  {
737  $ilErr->raiseError($this->lng->txt("msg_no_perm_read"));
738  }
739 
740  include_once("./Services/InfoScreen/classes/class.ilInfoScreenGUI.php");
741  $info = new ilInfoScreenGUI($this);
742  $info->enablePrivateNotes();
743 
744  // standard meta data
745  $info->addMetaDataSections($this->object->getId(), 0, $this->object->getType());
746 
747  $this->ctrl->forwardCommand($info);
748  }
749 
750  public function addLocatorItems()
751  {
752  global $ilLocator;
753  switch ($this->ctrl->getCmd())
754  {
755  case "create":
756  case "importFile":
757  case "cancel":
758  break;
759  default:
760  $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, ""), "", $_GET["ref_id"]);
761  break;
762  }
763  if ((int)$_GET["q_id"])
764  {
765  $q_id = (int)$_GET["q_id"];
766  include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
767  $q_type = SurveyQuestion::_getQuestionType($q_id) . "GUI";
768  $q_title = SurveyQuestion::_getTitle($q_id);
769  if($q_title)
770  {
771  // not on create
772  $this->ctrl->setParameterByClass($q_type, "q_id", $q_id);
773  $ilLocator->addItem($q_title,
774  $this->ctrl->getLinkTargetByClass($q_type, "editQuestion"));
775  }
776  }
777  }
778 
784  public function getTabs(&$tabs_gui)
785  {
786  global $ilAccess, $ilHelp;
787 
788  $ilHelp->setScreenIdComponent("spl");
789 
790  $next_class = $this->ctrl->getNextClass($this);
791  switch ($next_class)
792  {
793  case "":
794  case "ilpermissiongui":
795  case "ilmdeditorgui":
796  case "ilsurveyphrasesgui":
797  break;
798  default:
799  return;
800  break;
801  }
802 
803  // questions
804  $force_active = (($this->ctrl->getCmdClass() == "" &&
805  $this->ctrl->getCmd() != "properties") ||
806  $this->ctrl->getCmd() == "")
807  ? true
808  : false;
809  if (!$force_active)
810  {
811  if (is_array($_GET["sort"]))
812  {
813  $force_active = true;
814  }
815  }
816  $tabs_gui->addTarget("survey_questions",
817  $this->ctrl->getLinkTarget($this,'questions'),
818  array("questions", "filterQuestionBrowser", "filter", "reset", "createQuestion",
819  "importQuestions", "deleteQuestions", "copy", "paste",
820  "exportQuestions", "confirmDeleteQuestions", "cancelDeleteQuestions",
821  "confirmPasteQuestions", "cancelPasteQuestions", "uploadQuestions",
822  "editQuestion", "addMaterial", "removeMaterial", "save", "cancel",
823  "cancelExplorer", "linkChilds", "addGIT", "addST", "addPG", "preview",
824  "moveCategory", "deleteCategory", "addPhrase", "addCategory", "savePhrase",
825  "addSelectedPhrase", "cancelViewPhrase", "confirmSavePhrase", "cancelSavePhrase",
826  "insertBeforeCategory", "insertAfterCategory", "confirmDeleteCategory",
827  "cancelDeleteCategory", "categories", "saveCategories",
828  "savePhrase", "addPhrase"
829  ),
830  array("ilobjsurveyquestionpoolgui", "ilsurveyphrasesgui"), "", $force_active);
831 
832  if ($ilAccess->checkAccess("visible", "", $this->ref_id))
833  {
834  $tabs_gui->addTarget("info_short",
835  $this->ctrl->getLinkTarget($this, "infoScreen"),
836  array("infoScreen", "showSummary"));
837  }
838 
839  if ($ilAccess->checkAccess('write', '', $this->ref_id))
840  {
841  // properties
842  $tabs_gui->addTarget("settings",
843  $this->ctrl->getLinkTarget($this,'properties'),
844  "properties",
845  "", "");
846 
847  // manage phrases
848  $tabs_gui->addTarget("manage_phrases",
849  $this->ctrl->getLinkTargetByClass("ilsurveyphrasesgui", "phrases"),
850  array("phrases", "deletePhrase", "confirmDeletePhrase", "cancelDeletePhrase", "editPhrase", "newPhrase", "saveEditPhrase", "phraseEditor"),
851  "ilsurveyphrasesgui", "");
852 
853  // meta data
854  $tabs_gui->addTarget("meta_data",
855  $this->ctrl->getLinkTargetByClass('ilmdeditorgui','listSection'),
856  "", "ilmdeditorgui");
857 
858  // export
859  $tabs_gui->addTarget("export",
860  $this->ctrl->getLinkTarget($this,'export'),
861  array("export", "createExportFile", "confirmDeleteExportFile",
862  "downloadExportFile", "cancelDeleteExportFile", "deleteExportFile"),
863  "", "");
864  }
865 
866  if ($ilAccess->checkAccess("edit_permission", "", $this->ref_id))
867  {
868  $tabs_gui->addTarget("perm_settings",
869  $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"), array("perm","info","owner"), 'ilpermissiongui');
870  }
871  }
872 
876  public function saveObligatoryObject()
877  {
878  $obligatory = array();
879  foreach ($_POST as $key => $value)
880  {
881  if (preg_match("/obligatory_(\d+)/", $key, $matches))
882  {
883  $obligatory[]= $matches[1];
884  }
885  }
886  $this->object->setObligatoryStates($obligatory);
887 
888  ilUtil::sendSuccess($this->lng->txt('msg_obj_modified'), true);
889  $this->ctrl->redirect($this, "questions");
890  }
891 
898  public static function _goto($a_target)
899  {
900  global $ilAccess, $ilErr, $lng;
901  if ($ilAccess->checkAccess("write", "", $a_target))
902  {
903  $_GET["baseClass"] = "ilObjSurveyQuestionPoolGUI";
904  $_GET["cmd"] = "questions";
905  $_GET["ref_id"] = $a_target;
906  include_once("ilias.php");
907  exit;
908  }
909  else if ($ilAccess->checkAccess("read", "", ROOT_FOLDER_ID))
910  {
911  ilUtil::sendFailure(sprintf($lng->txt("msg_no_perm_read_item"),
914  }
915  $ilErr->raiseError($lng->txt("msg_no_perm_read_lm"), $ilErr->FATAL);
916  }
917 } // END class.ilObjSurveyQuestionPoolGUI
918 ?>