ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
ilObjSurveyGUI Class Reference

Class ilObjSurveyGUI. More...

+ Inheritance diagram for ilObjSurveyGUI:
+ Collaboration diagram for ilObjSurveyGUI:

Public Member Functions

 __construct ()
 
 executeCommand ()
 
 evaluationObject ()
 Redirects the evaluation object call to the ilSurveyEvaluationGUI class. More...
 
 afterSave (ilObject $a_new_object)
 save object public More...
 
 getTabs ()
 adds tabs to tab gui object More...
 
 savePropertiesObject ()
 Save the survey properties. More...
 
 initPropertiesForm ()
 Init survey settings form. More...
 
 addSubTabs ($a_section)
 Add subtabs for tabs. More...
 
 propertiesObject (ilPropertyFormGUI $a_form=null)
 Display and fill the properties form of the test. More...
 
 doAutoCompleteObject ()
 
 confirmResetTemplateObject ()
 Enable all settings - Confirmation. More...
 
 resetTemplateObject ()
 Enable all settings - remove template. More...
 
 importSurveyObject ()
 form for new survey object import More...
 
 infoScreenObject ()
 this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually, if everything works through ilCtrl in the future this may be changed More...
 
 infoScreen ()
 show information screen More...
 
 addLocatorItems ()
 
 getUserResultsTable ($a_active_id)
 
 sendUserResultsMail ($a_active_id, $a_recipient)
 
 mailUserResultsObject ()
 
- Public Member Functions inherited from ilObjectGUI
 executeCommand ()
 execute command More...
 
 withReferences ()
 determines wether objects are referenced or not (got ref ids or not) More...
 
 setCreationMode ($a_mode=true)
 if true, a creation screen is displayed the current $_GET[ref_id] don't belong to the current class! the mode is determined in ilrepositorygui More...
 
 getCreationMode ()
 get creation mode More...
 
 prepareOutput ($a_show_subobjects=true)
 prepare output More...
 
 getAdminTabs ()
 administration tabs show only permissions and trash folder More...
 
 getHTML ()
 
 confirmedDeleteObject ()
 confirmed deletion of object -> objects are moved to trash or deleted immediately, if trash is disabled More...
 
 cancelDeleteObject ()
 cancel deletion of object More...
 
 cancelObject ()
 cancel action and go back to previous page public More...
 
 createObject ()
 create new object form More...
 
 cancelCreation ()
 cancel create action and go back to repository parent More...
 
 saveObject ()
 save object More...
 
 getDidacticTemplateVar ($a_type)
 Get didactic template setting from creation screen. More...
 
 putObjectInTree (ilObject $a_obj, $a_parent_node_id=null)
 Add object to tree at given position. More...
 
 editObject ()
 edit object More...
 
 addExternalEditFormCustom (ilPropertyFormGUI $a_form)
 
 updateObject ()
 updates object entry in object_data More...
 
 getFormAction ($a_cmd, $a_formaction="")
 get form action for command (command is method name without "Object", e.g. More...
 
 isVisible ($a_ref_id, $a_type)
 
 viewObject ()
 list childs of current object More...
 
 deleteObject ($a_error=false)
 Display deletion confirmation screen. More...
 
 cloneAllObject ()
 Clone single (not container object) Method is overwritten in ilContainerGUI. More...
 
 redirectAfterCreation ()
 Redirect after creation, see https://docu.ilias.de/goto_docu_wiki_wpage_5035_1357.html. More...
 

Static Public Member Functions

static _goto ($a_target, $a_access_code="")
 redirect script More...
 
- Static Public Member Functions inherited from ilObjectGUI
static _gotoRepositoryRoot ($a_raise_error=false)
 Goto repository root. More...
 
static _gotoRepositoryNode ($a_ref_id, $a_cmd="frameset")
 Goto repository root. More...
 

Protected Member Functions

 addDidacticTemplateOptions (array &$a_options)
 
 initImportForm ($a_new_type)
 
 viewUserResultsObject ()
 
 getUserResultsPlain ($a_active_id)
 
 checkRbacOrPositionPermission ($a_rbac_permission, $a_position_permission)
 Check rbac or position permission. More...
 
- Protected Member Functions inherited from ilObjectGUI
 getObjectService ()
 Get object service. More...
 
 assignObject ()
 
 setTitleAndDescription ()
 called by prepare output More...
 
 initHeaderAction ($a_sub_type=null, $a_sub_id=null)
 Add header action menu. More...
 
 insertHeaderAction ($a_list_gui)
 Insert header action into main template. More...
 
 addHeaderAction ()
 Add header action menu. More...
 
 redrawHeaderActionObject ()
 Ajax call: redraw action header only. More...
 
 showMountWebfolderIcon ()
 
 setTabs ()
 set admin tabs public More...
 
 setAdminTabs ()
 set admin tabs public More...
 
 setLocator ()
 set Locator More...
 
 addLocatorItems ()
 should be overwritten to add object specific items (repository items are preloaded) More...
 
 omitLocator ($a_omit=true)
 
 addAdminLocatorItems ($a_do_not_add_object=false)
 should be overwritten to add object specific items (repository items are preloaded) More...
 
 initCreationForms ($a_new_type)
 Init creation froms. More...
 
 getCreationFormsHTML (array $a_forms)
 Get HTML for creation forms (accordion) More...
 
 initCreateForm ($a_new_type)
 Init object creation form. More...
 
 initDidacticTemplate (ilPropertyFormGUI $form)
 Show didactic template types. More...
 
 addDidacticTemplateOptions (array &$a_options)
 Add custom templates. More...
 
 afterSave (ilObject $a_new_object)
 Post (successful) object creation hook. More...
 
 initEditForm ()
 Init object edit form. More...
 
 initEditCustomForm (ilPropertyFormGUI $a_form)
 Add custom fields to update form. More...
 
 getEditFormValues ()
 Get values for edit form. More...
 
 getEditFormCustomValues (array &$a_values)
 Add values to custom edit fields. More...
 
 validateCustom (ilPropertyFormGUI $a_form)
 Validate custom values (if not possible with checkInput()) More...
 
 updateCustom (ilPropertyFormGUI $a_form)
 Insert custom update form values into object. More...
 
 afterUpdate ()
 Post (successful) object update hook. More...
 
 initImportForm ($a_new_type)
 Init object import form. More...
 
 importFileObject ($parent_id=null, $a_catch_errors=true)
 Import. More...
 
 afterImport (ilObject $a_new_object)
 Post (successful) object import hook. More...
 
 setFormAction ($a_cmd, $a_formaction)
 set specific form action for command More...
 
 getReturnLocation ($a_cmd, $a_location="")
 get return location for command (command is method name without "Object", e.g. More...
 
 setReturnLocation ($a_cmd, $a_location)
 set specific return location for command More...
 
 getTargetFrame ($a_cmd, $a_target_frame="")
 get target frame for command (command is method name without "Object", e.g. More...
 
 setTargetFrame ($a_cmd, $a_target_frame)
 set specific target frame for command More...
 
 showPossibleSubObjects ()
 show possible subobjects (pulldown menu) More...
 
 getTemplateFile ($a_cmd, $a_type="")
 get a template blockfile format: tpl. More...
 
 getTabs ()
 get tabs abstract method. More...
 
 __showButton ($a_cmd, $a_text, $a_target='')
 
 hitsperpageObject ()
 
__initTableGUI ()
 
 __setTableGUIBasicData (&$tbl, &$result_set, $a_from="")
 standard implementation for tables use 'from' variable use different initial setting of table More...
 
 redirectToRefId ($a_ref_id, $a_cmd="")
 redirects to (repository) view per ref id usually to a container and usually used at the end of a save/import method where the object gui type (of the new object) doesn't match with the type of the current $_GET["ref_id"] value More...
 
 fillCloneTemplate ($a_tpl_varname, $a_type)
 Fill object clone template This method can be called from any object GUI class that wants to offer object cloning. More...
 
 getCenterColumnHTML ()
 Get center column. More...
 
 getRightColumnHTML ()
 Display right column. More...
 
 setColumnSettings (ilColumnGUI $column_gui)
 May be overwritten in subclasses. More...
 
 checkPermission ($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
 Check permission and redirect on error. More...
 
 checkPermissionBool ($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
 Check permission. More...
 
 enableDragDropFileUpload ()
 Enables the file upload into this object by dropping files. More...
 
 handleAutoRating (ilObject $a_new_obj)
 Activate rating automatically if parent container setting. More...
 

Protected Attributes

 $nav_history
 
 $tabs
 
 $help
 
 $rbacsystem
 
 $log
 
- Protected Attributes inherited from ilObjectGUI
 $ilErr
 
 $locator
 
 $user
 
 $access
 
 $settings
 
 $rbacreview
 
 $toolbar
 
 $tmp_import_dir
 
 $tabs_gui = null
 
 $ctrl
 
 $object_service
 

Additional Inherited Members

- Data Fields inherited from ilObjectGUI
const COPY_WIZARD_NEEDS_PAGE = 1
 
 $objDefinition
 
 $tpl
 
 $tree
 
 $lng
 
 $data
 
 $object
 
 $ref_id
 
 $obj_id
 
 $maxcount
 
 $formaction
 
 $return_location
 
 $target_frame
 
 $tab_target_script
 
 $actions
 
 $sub_objects
 
 $omit_locator = false
 
const CFORM_NEW = 1
 
const CFORM_IMPORT = 2
 
const CFORM_CLONE = 3
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilObjSurveyGUI::__construct ( )

Definition at line 51 of file class.ilObjSurveyGUI.php.

References $_GET, $DIC, $ilCtrl, ilObjectGUI\$lng, ilLoggerFactory\getLogger(), and user().

52  {
53  global $DIC;
54 
55  $this->lng = $DIC->language();
56  $this->nav_history = $DIC["ilNavigationHistory"];
57  $this->tabs = $DIC->tabs();
58  $this->user = $DIC->user();
59  $this->help = $DIC["ilHelp"];
60  $this->rbacsystem = $DIC->rbac()->system();
61  $this->tree = $DIC->repositoryTree();
62  $this->tpl = $DIC["tpl"];
63  $this->toolbar = $DIC->toolbar();
64  $this->access = $DIC->access();
65  $this->locator = $DIC["ilLocator"];
66  $lng = $DIC->language();
67  $ilCtrl = $DIC->ctrl();
68 
69  $this->type = "svy";
70  $lng->loadLanguageModule("survey");
71  $lng->loadLanguageModule("svy");
72  $this->ctrl = $ilCtrl;
73  $this->ctrl->saveParameter($this, "ref_id");
74 
75  $this->log = ilLoggerFactory::getLogger("svy");
76 
77  parent::__construct("", (int) $_GET["ref_id"], true, false);
78  }
global $DIC
Definition: saml.php:7
$_GET["client_id"]
user()
Definition: user.php:4
global $ilCtrl
Definition: ilias.php:18
static getLogger($a_component_id)
Get component logger.
+ Here is the call graph for this function:

Member Function Documentation

◆ _goto()

static ilObjSurveyGUI::_goto (   $a_target,
  $a_access_code = "" 
)
static

redirect script

Parameters
string$a_target

Definition at line 2025 of file class.ilObjSurveyGUI.php.

References $_GET, $_SESSION, $DIC, ilObjectGUI\$lng, ilObjectGUI\_gotoRepositoryRoot(), ilObject\_lookupObjId(), ilObject\_lookupTitle(), exit, and ilUtil\sendFailure().

2026  {
2027  global $DIC;
2028 
2029  $ilAccess = $DIC->access();
2030  $lng = $DIC->language();
2031 
2032  // see ilObjSurveyAccess::_checkGoto()
2033  if (strlen($a_access_code)) {
2034  $_SESSION["anonymous_id"][ilObject::_lookupObjId($a_target)] = $a_access_code;
2035  $_GET["baseClass"] = "ilObjSurveyGUI";
2036  $_GET["cmd"] = "infoScreen";
2037  $_GET["ref_id"] = $a_target;
2038  include("ilias.php");
2039  exit;
2040  }
2041 
2042  if ($ilAccess->checkAccess("visible", "", $a_target) ||
2043  $ilAccess->checkAccess("read", "", $a_target)) {
2044  $_GET["baseClass"] = "ilObjSurveyGUI";
2045  $_GET["cmd"] = "infoScreen";
2046  $_GET["ref_id"] = $a_target;
2047  include("ilias.php");
2048  exit;
2049  } elseif ($ilAccess->checkAccess("read", "", ROOT_FOLDER_ID)) {
2050  ilUtil::sendFailure(sprintf(
2051  $lng->txt("msg_no_perm_read_item"),
2053  ), true);
2055  }
2056  }
$_SESSION["AccountId"]
global $DIC
Definition: saml.php:7
$_GET["client_id"]
static _gotoRepositoryRoot($a_raise_error=false)
Goto repository root.
static _lookupTitle($a_id)
lookup object title
static _lookupObjId($a_id)
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
exit
Definition: backend.php:16
+ Here is the call graph for this function:

◆ addDidacticTemplateOptions()

ilObjSurveyGUI::addDidacticTemplateOptions ( array &  $a_options)
protected

Definition at line 296 of file class.ilObjSurveyGUI.php.

References ilSettingsTemplate\getAllSettingsTemplates().

297  {
298  include_once "Services/Administration/classes/class.ilSettingsTemplate.php";
300  if ($templates) {
301  foreach ($templates as $item) {
302  $a_options["svytpl_" . $item["id"]] = array($item["title"],
303  nl2br(trim($item["description"])));
304  }
305  }
306 
307  // JF, 2013-06-10
308  $a_options["svy360_1"] = array($this->lng->txt("survey_360_mode"),
309  $this->lng->txt("survey_360_mode_info"));
310 
311  //Self evaluation only
312  $a_options["svyselfeval_1"] = array($this->lng->txt("svy_self_ev_mode"),
313  $this->lng->txt("svy_self_ev_info"));
314  }
static getAllSettingsTemplates($a_type, $a_include_auto_generated=false)
Get all settings templates of type.
+ Here is the call graph for this function:

◆ addLocatorItems()

ilObjSurveyGUI::addLocatorItems ( )

Definition at line 1972 of file class.ilObjSurveyGUI.php.

References $_GET, ilObjectGUI\$locator, SurveyQuestion\_getQuestionType(), and SurveyQuestion\_getTitle().

1973  {
1974  $ilLocator = $this->locator;
1975  switch ($this->ctrl->getCmd()) {
1976  case "next":
1977  case "previous":
1978  case "start":
1979  case "resume":
1980  case "redirectQuestion":
1981  $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, "infoScreen"), "", $_GET["ref_id"]);
1982  break;
1983  case "evaluation":
1984  case "checkEvaluationAccess":
1985  case "evaluationdetails":
1986  case "evaluationuser":
1987  $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTargetByClass("ilsurveyevaluationgui", "evaluation"), "", $_GET["ref_id"]);
1988  break;
1989  case "create":
1990  case "save":
1991  case "cancel":
1992  case "importSurvey":
1993  case "cloneAll":
1994  break;
1995  case "infoScreen":
1996  $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, "infoScreen"), "", $_GET["ref_id"]);
1997  break;
1998  default:
1999  $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, "infoScreen"), "", $_GET["ref_id"]);
2000 
2001  // this has to be done here because ilSurveyEditorGUI is called after finalizing the locator
2002  if ((int) $_GET["q_id"] && !(int) $_REQUEST["new_for_survey"]) {
2003  // not on create
2004  // see ilObjSurveyQuestionPool::addLocatorItems
2005  $q_id = (int) $_GET["q_id"];
2006  include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
2007  $q_type = SurveyQuestion::_getQuestionType($q_id) . "GUI";
2008  $this->ctrl->setParameterByClass($q_type, "q_id", $q_id);
2009  $ilLocator->addItem(
2011  $this->ctrl->getLinkTargetByClass(array("ilSurveyEditorGUI", $q_type), "editQuestion")
2012  );
2013  }
2014  break;
2015  }
2016  }
$_GET["client_id"]
static _getTitle($question_id)
Returns the question title of a question with a given id.
static _getQuestionType($question_id)
Returns the question type of a question with a given id.
+ Here is the call graph for this function:

◆ addSubTabs()

ilObjSurveyGUI::addSubTabs (   $a_section)

Add subtabs for tabs.

Parameters
type$a_section

Definition at line 1400 of file class.ilObjSurveyGUI.php.

Referenced by executeCommand(), and propertiesObject().

1401  {
1402  if ($a_section == 'settings') {
1403  $this->tabs_gui->addSubTabTarget(
1404  "settings",
1405  $this->ctrl->getLinkTarget($this, 'properties')
1406  );
1407 
1408  $lti_settings = new ilLTIProviderObjectSettingGUI($this->object->getRefId());
1409  if ($lti_settings->hasSettingsAccess()) {
1410  $this->tabs_gui->addSubTabTarget(
1411  'lti_provider',
1412  $this->ctrl->getLinkTargetByClass(ilLTIProviderObjectSettingGUI::class)
1413  );
1414  }
1415  }
1416  }
GUI class for LTI provider object settings.
+ Here is the caller graph for this function:

◆ afterSave()

ilObjSurveyGUI::afterSave ( ilObject  $a_new_object)

save object public

Definition at line 320 of file class.ilObjSurveyGUI.php.

References ilObjectGUI\$tpl, ilObjSurvey\ANONYMIZE_CODE_ALL, ilObjSurvey\EVALUATION_ACCESS_PARTICIPANTS, ilObjectGUI\getDidacticTemplateVar(), ilObject\getRefId(), ilObjSurvey\MODE_360, ilObjSurvey\MODE_SELF_EVAL, and ilUtil\redirect().

321  {
322  // #16446
323  $a_new_object->loadFromDb();
324 
325  $tpl = $this->getDidacticTemplateVar("svytpl");
326  if ($tpl) {
327  $a_new_object->applySettingsTemplate($tpl);
328  } else {
329  //set the mode depending on didactic template
330  if ($this->getDidacticTemplateVar("svy360")) {
331  $a_new_object->setMode(ilObjSurvey::MODE_360);
332  } elseif ($this->getDidacticTemplateVar("svyselfeval")) {
333  $a_new_object->setMode(ilObjSurvey::MODE_SELF_EVAL);
334  }
335  }
336 
337  $svy_mode = $a_new_object->getMode();
338  if ($svy_mode == ilObjSurvey::MODE_360) {
339  // this should rather be ilObjSurvey::ANONYMIZE_ON - see ilObjSurvey::getUserDataFromActiveId()
340  $a_new_object->setAnonymize(ilObjSurvey::ANONYMIZE_CODE_ALL);
341  $a_new_object->setEvaluationAccess(ilObjSurvey::EVALUATION_ACCESS_PARTICIPANTS);
342  } elseif ($svy_mode == ilObjSurvey::MODE_SELF_EVAL) {
343  $a_new_object->setEvaluationAccess(ilObjSurvey::EVALUATION_ACCESS_PARTICIPANTS);
344  }
345  $a_new_object->saveToDB();
346 
347  // always send a message
348  ilUtil::sendSuccess($this->lng->txt("object_added"), true);
349  ilUtil::redirect("ilias.php?baseClass=ilObjSurveyGUI&ref_id=" .
350  $a_new_object->getRefId() . "&cmd=properties");
351  }
const EVALUATION_ACCESS_PARTICIPANTS
getRefId()
get reference id public
getDidacticTemplateVar($a_type)
Get didactic template setting from creation screen.
const ANONYMIZE_CODE_ALL
static redirect($a_script)
+ Here is the call graph for this function:

◆ checkRbacOrPositionPermission()

ilObjSurveyGUI::checkRbacOrPositionPermission (   $a_rbac_permission,
  $a_position_permission 
)
protected

Check rbac or position permission.

Parameters
string$a_rbac_permission
string$a_position_permission
Returns
bool

Definition at line 2296 of file class.ilObjSurveyGUI.php.

References ilObjectGUI\$access, and $GLOBALS.

Referenced by executeCommand(), and getTabs().

2297  {
2298  $access = $GLOBALS['DIC']->access();
2299  return $access->checkRbacOrPositionPermissionAccess(
2300  $a_rbac_permission,
2301  $a_position_permission,
2302  $this->object->getRefId()
2303  );
2304  }
$GLOBALS['JPEG_Segment_Names']
Global Variable: XMP_tag_captions.
+ Here is the caller graph for this function:

◆ confirmResetTemplateObject()

ilObjSurveyGUI::confirmResetTemplateObject ( )

Enable all settings - Confirmation.

Definition at line 1482 of file class.ilObjSurveyGUI.php.

References ilUtil\sendQuestion().

1483  {
1484  ilUtil::sendQuestion($this->lng->txt("survey_confirm_template_reset"));
1485  $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_svy_svy_confirm_resettemplate.html", "Modules/Survey");
1486  $this->tpl->setCurrentBlock("adm_content");
1487  $this->tpl->setVariable("BTN_CONFIRM_REMOVE", $this->lng->txt("confirm"));
1488  $this->tpl->setVariable("BTN_CANCEL_REMOVE", $this->lng->txt("cancel"));
1489  $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this, "resetTemplateObject"));
1490  $this->tpl->parseCurrentBlock();
1491  }
static sendQuestion($a_info="", $a_keep=false)
Send Question to Screen.
+ Here is the call graph for this function:

◆ doAutoCompleteObject()

ilObjSurveyGUI::doAutoCompleteObject ( )

Definition at line 1460 of file class.ilObjSurveyGUI.php.

References exit, ilUserAutoComplete\MAX_ENTRIES, and ilUtil\stripSlashes().

1461  {
1462  $fields = array('login','firstname','lastname','email');
1463 
1464  include_once './Services/User/classes/class.ilUserAutoComplete.php';
1465  $auto = new ilUserAutoComplete();
1466  $auto->setSearchFields($fields);
1467  $auto->setResultField('login');
1468  $auto->enableFieldSearchableCheck(true);
1469  $auto->setMoreLinkAvailable(true);
1470 
1471  if (($_REQUEST['fetchall'])) {
1472  $auto->setLimit(ilUserAutoComplete::MAX_ENTRIES);
1473  }
1474 
1475  echo $auto->getList(ilUtil::stripSlashes($_REQUEST['term']));
1476  exit();
1477  }
Auto completion class for user lists.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
exit
Definition: backend.php:16
+ Here is the call graph for this function:

◆ evaluationObject()

ilObjSurveyGUI::evaluationObject ( )

Redirects the evaluation object call to the ilSurveyEvaluationGUI class.

Coming from ListGUI...

private

Definition at line 288 of file class.ilObjSurveyGUI.php.

289  {
290  include_once("./Modules/Survey/classes/class.ilSurveyEvaluationGUI.php");
291  $eval_gui = new ilSurveyEvaluationGUI($this->object);
292  $this->ctrl->setCmdClass(get_class($eval_gui));
293  $this->ctrl->redirect($eval_gui, "evaluation");
294  }
Survey evaluation graphical output.

◆ executeCommand()

ilObjSurveyGUI::executeCommand ( )

Definition at line 80 of file class.ilObjSurveyGUI.php.

References $_GET, $_SESSION, $GLOBALS, $info, $nav_history, $tabs, ilObjectGUI\addHeaderAction(), addSubTabs(), ilObjectGUI\checkPermission(), ilObjectGUI\checkPermissionBool(), checkRbacOrPositionPermission(), ilObjectGUI\getCreationMode(), ilCommonActionDispatcherGUI\getInstanceFromAjaxCall(), ilUtil\getStyleSheetLocation(), infoScreen(), ilLearningProgressBaseGUI\LP_CONTEXT_REPOSITORY, ilObjSurvey\MODE_SELF_EVAL, ilObjSurvey\MODE_STANDARD, ilObjectGUI\prepareOutput(), ilLTIProviderObjectSettingGUI\setCustomRolesForSelection(), and ilObjSurvey\validateExternalRaterCode().

81  {
82  $ilNavigationHistory = $this->nav_history;
83  $ilTabs = $this->tabs;
84 
85  $this->external_rater_360 = false;
86  if (!$this->creation_mode &&
87  $this->object->get360Mode() &&
88  $_SESSION["anonymous_id"][$this->object->getId()] &&
90  $this->object->getRefId(),
91  $_SESSION["anonymous_id"][$this->object->getId()]
92  )) {
93  $this->external_rater_360 = true;
94  }
95 
96  if (!$this->external_rater_360) {
97  if (!$this->checkPermissionBool("visible") &&
98  !$this->checkPermissionBool("read")) {
99  $this->checkPermission("read");
100  }
101 
102  // add entry to navigation history
103  if (!$this->getCreationMode() &&
104  $this->checkPermissionBool("read")) {
105  $this->ctrl->setParameterByClass("ilobjsurveygui", "ref_id", $this->ref_id);
106  $link = $this->ctrl->getLinkTargetByClass("ilobjsurveygui", "");
107  $ilNavigationHistory->addItem($this->ref_id, $link, "svy");
108  }
109  }
110 
111  $cmd = $this->ctrl->getCmd("properties");
112 
113  // workaround for bug #6288, needs better solution
114  if ($cmd == "saveTags") {
115  $this->ctrl->setCmdClass("ilinfoscreengui");
116  }
117 
118  // deep link from repository - "redirect" to page view
119  if (!$this->ctrl->getCmdClass() && $cmd == "questionsrepo") {
120  $_REQUEST["pgov"] = 1;
121  $this->ctrl->setCmd("questions");
122  $this->ctrl->setCmdClass("ilsurveyeditorgui");
123  }
124 
125  $next_class = $this->ctrl->getNextClass($this);
126  $this->ctrl->setReturn($this, "properties");
127  $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "survey.css", "Modules/Survey"), "screen");
128  $this->prepareOutput();
129 
130  $this->log->debug("next_class= $next_class");
131  switch ($next_class) {
132  case 'illtiproviderobjectsettinggui':
133  $this->addSubTabs('settings');
134  $ilTabs->activateTab("settings");
135  $ilTabs->activateSubTab('lti_provider');
136  $lti_gui = new ilLTIProviderObjectSettingGUI($this->object->getRefId());
137  $lti_gui->setCustomRolesForSelection($GLOBALS['DIC']->rbac()->review()->getLocalRoles($this->object->getRefId()));
138  $lti_gui->offerLTIRolesForSelection(false);
139  $this->ctrl->forwardCommand($lti_gui);
140  break;
141 
142 
143  case "ilinfoscreengui":
144  if (!in_array(
145  $this->ctrl->getCmdClass(),
146  array('ilpublicuserprofilegui', 'ilobjportfoliogui')
147  )) {
148  $this->addHeaderAction();
149  $this->infoScreen(); // forwards command
150  } else {
151  // #16891
152  $ilTabs->clearTargets();
153  include_once("./Services/InfoScreen/classes/class.ilInfoScreenGUI.php");
154  $info = new ilInfoScreenGUI($this);
155  $this->ctrl->forwardCommand($info);
156  }
157  break;
158 
159  case 'ilobjectmetadatagui':
160  $this->checkPermission("write");
161  $ilTabs->activateTab("meta_data");
162  $this->addHeaderAction();
163  include_once 'Services/Object/classes/class.ilObjectMetaDataGUI.php';
164  $md_gui = new ilObjectMetaDataGUI($this->object);
165  $this->ctrl->forwardCommand($md_gui);
166  break;
167 
168  case "ilsurveyevaluationgui":
169  $ilTabs->activateTab("svy_results");
170  $this->addHeaderAction();
171  include_once("./Modules/Survey/classes/class.ilSurveyEvaluationGUI.php");
172  $eval_gui = new ilSurveyEvaluationGUI($this->object);
173  $this->ctrl->forwardCommand($eval_gui);
174  break;
175 
176  case "ilsurveyexecutiongui":
177  $ilTabs->clearTargets();
178  include_once("./Modules/Survey/classes/class.ilSurveyExecutionGUI.php");
179  $exec_gui = new ilSurveyExecutionGUI($this->object);
180  $this->ctrl->forwardCommand($exec_gui);
181  break;
182 
183  case 'ilpermissiongui':
184  $ilTabs->activateTab("perm_settings");
185  $this->addHeaderAction();
186  include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
187  $perm_gui = new ilPermissionGUI($this);
188  $this->ctrl->forwardCommand($perm_gui);
189  break;
190 
191  case 'ilobjectcopygui':
192  include_once './Services/Object/classes/class.ilObjectCopyGUI.php';
193  $cp = new ilObjectCopyGUI($this);
194  $cp->setType('svy');
195  $this->ctrl->forwardCommand($cp);
196  break;
197 
198  case "ilcommonactiondispatchergui":
199  include_once("Services/Object/classes/class.ilCommonActionDispatcherGUI.php");
201  $this->ctrl->forwardCommand($gui);
202  break;
203 
204  // 360, skill service
205  case 'ilsurveyskillgui':
206  $ilTabs->activateTab("survey_competences");
207  include_once("./Modules/Survey/classes/class.ilSurveySkillGUI.php");
208  $gui = new ilSurveySkillGUI($this->object);
209  $this->ctrl->forwardCommand($gui);
210  break;
211 
212  case 'ilsurveyskilldeterminationgui':
213  $ilTabs->activateTab("maintenance");
214  include_once("./Modules/Survey/classes/class.ilSurveySkillDeterminationGUI.php");
215  $gui = new ilSurveySkillDeterminationGUI($this->object);
216  $this->ctrl->forwardCommand($gui);
217  break;
218 
219  case 'ilsurveyeditorgui':
220  $this->checkPermission("write");
221  $ilTabs->activateTab("survey_questions");
222  include_once("./Modules/Survey/classes/class.ilSurveyEditorGUI.php");
223  $gui = new ilSurveyEditorGUI($this);
224  $this->ctrl->forwardCommand($gui);
225  break;
226 
227  case 'ilsurveyconstraintsgui':
228  $this->checkPermission("write");
229  $ilTabs->activateTab("constraints");
230  include_once("./Modules/Survey/classes/class.ilSurveyConstraintsGUI.php");
231  $gui = new ilSurveyConstraintsGUI($this);
232  $this->ctrl->forwardCommand($gui);
233  break;
234 
235  case 'ilsurveyparticipantsgui':
236  if ($this->object->getMode() == ilObjSurvey::MODE_STANDARD || $this->object->getMode() == ilObjSurvey::MODE_SELF_EVAL) {
237  $ilTabs->activateTab("maintenance");
238  } else {
239  $ilTabs->activateTab("survey_360_appraisees");
240  }
241  include_once("./Modules/Survey/classes/class.ilSurveyParticipantsGUI.php");
242  //$gui = new ilSurveyParticipantsGUI($this, $this->checkPermissionBool("write"));
243  $gui = new ilSurveyParticipantsGUI($this, $this->checkRbacOrPositionPermission('read_results', 'access_results'));
244  $this->ctrl->forwardCommand($gui);
245  break;
246 
247  case "illearningprogressgui":
248  $ilTabs->activateTab("learning_progress");
249  include_once("./Services/Tracking/classes/class.ilLearningProgressGUI.php");
250  $new_gui = new ilLearningProgressGUI(
252  $this->object->getRefId()
253  );
254  $this->ctrl->forwardCommand($new_gui);
255  break;
256 
257  case 'ilexportgui':
258  $ilTabs->activateTab("export");
259  include_once("./Services/Export/classes/class.ilExportGUI.php");
260  $exp_gui = new ilExportGUI($this);
261  $exp_gui->addFormat("xml");
262  $this->ctrl->forwardCommand($exp_gui);
263  break;
264 
265  default:
266  $this->addHeaderAction();
267  $cmd .= "Object";
268 
269  $this->log->debug("Default cmd= $cmd");
270 
271  $this->$cmd();
272  break;
273  }
274 
275  if (strtolower($_GET["baseClass"]) != "iladministrationgui" &&
276  $this->getCreationMode() != true) {
277  $this->tpl->show();
278  }
279  }
Class ilSurveyParticipantsGUI.
Class ilObjectMetaDataGUI.
Survey skill service GUI class.
Class ilInfoScreenGUI.
Class ilSurveyEditorGUI.
$_SESSION["AccountId"]
GUI class for the workflow of copying objects.
static validateExternalRaterCode($a_ref_id, $a_code)
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user
$_GET["client_id"]
Class ilSurveyConstraintsGUI.
checkRbacOrPositionPermission($a_rbac_permission, $a_position_permission)
Check rbac or position permission.
Export User Interface Class.
setCustomRolesForSelection($a_roles)
Set custom roles for mapping to LTI roles.
prepareOutput($a_show_subobjects=true)
prepare output
GUI class for LTI provider object settings.
Survey execution graphical output.
infoScreen()
show information screen
getCreationMode()
get creation mode
addSubTabs($a_section)
Add subtabs for tabs.
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission and redirect on error.
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
Survey skill determination GUI class.
Survey evaluation graphical output.
$info
Definition: index.php:5
addHeaderAction()
Add header action menu.
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
Class ilObjUserTrackingGUI.
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
$GLOBALS['JPEG_Segment_Names']
Global Variable: XMP_tag_captions.
+ Here is the call graph for this function:

◆ getTabs()

ilObjSurveyGUI::getTabs ( )

adds tabs to tab gui object

Parameters
object$tabs_guiilTabsGUI object

Definition at line 358 of file class.ilObjSurveyGUI.php.

References $help, $ilUser, $template, ilObjectGUI\$user, ilObjSurveyAccess\_hasEvaluationAccess(), ilLearningProgressAccess\checkAccess(), ilObjectGUI\checkPermissionBool(), checkRbacOrPositionPermission(), ilObjSurvey\MODE_360, ilObjSurvey\MODE_SELF_EVAL, and ilObjSurvey\MODE_STANDARD.

359  {
361  $ilHelp = $this->help;
362 
363  if ($this->object instanceof ilObjSurveyQuestionPool) {
364  return true;
365  }
366 
367  $ilHelp->setScreenIdComponent("svy");
368 
369  $hidden_tabs = array();
370  $template = $this->object->getTemplate();
371  if ($template) {
372  include_once "Services/Administration/classes/class.ilSettingsTemplate.php";
374  $hidden_tabs = $template->getHiddenTabs();
375  }
376 
377  if ($this->checkPermissionBool("write")) {
378  $this->tabs_gui->addTab(
379  "survey_questions",
380  $this->lng->txt("survey_questions"),
381  $this->ctrl->getLinkTargetByClass(array("ilsurveyeditorgui", "ilsurveypagegui"), "renderPage")
382  );
383  }
384 
385  if ($this->checkPermissionBool("read")) {
386  $this->tabs_gui->addTab(
387  "info_short",
388  $this->lng->txt("info_short"),
389  $this->ctrl->getLinkTarget($this, 'infoScreen')
390  );
391  }
392 
393  // properties
394  if ($this->checkPermissionBool("write")) {
395  $this->tabs_gui->addTab(
396  "settings",
397  $this->lng->txt("settings"),
398  $this->ctrl->getLinkTarget($this, 'properties')
399  );
400  } elseif ($this->checkPermissionBool("read")) {
401  if ($this->object->get360Mode() &&
402  $this->object->get360SelfRaters() &&
403  $this->object->isAppraisee($ilUser->getId()) &&
404  !$this->object->isAppraiseeClosed($ilUser->getId())) {
405  $this->tabs_gui->addTab(
406  "survey_360_edit_raters",
407  $this->lng->txt("survey_360_edit_raters"),
408  $this->ctrl->getLinkTargetByClass('ilsurveyparticipantsgui', 'editRaters')
409  );
410 
411  // :TODO: mail to raters
412  }
413  }
414 
415  // questions
416  if ($this->checkPermissionBool("write") &&
417  !in_array("constraints", $hidden_tabs) &&
418  $this->object->getMode() == ilObjSurvey::MODE_STANDARD) {
419  // constraints (tab called routing)
420  $this->tabs_gui->addTab(
421  "constraints",
422  $this->lng->txt("constraints"),
423  $this->ctrl->getLinkTargetByClass("ilsurveyconstraintsgui", "constraints")
424  );
425  }
426 
427  if ($this->checkPermissionBool("write")) {
428  switch ($this->object->getMode()) {
430  // 360 mode + competence service
431  include_once("./Services/Skill/classes/class.ilSkillManagementSettings.php");
432  $skmg_set = new ilSkillManagementSettings();
433  if ($this->object->getSkillService() && $skmg_set->isActivated()) {
434  $this->tabs_gui->addTab(
435  "survey_competences",
436  $this->lng->txt("survey_competences"),
437  $this->ctrl->getLinkTargetByClass("ilsurveyskillgui", "listQuestionAssignment")
438  );
439  }
440  $this->tabs_gui->addTab(
441  "survey_360_appraisees",
442  $this->lng->txt("survey_360_appraisees"),
443  $this->ctrl->getLinkTargetByClass('ilsurveyparticipantsgui', 'listAppraisees')
444  );
445  break;
446 
448  include_once("./Services/Skill/classes/class.ilSkillManagementSettings.php");
449  $skmg_set = new ilSkillManagementSettings();
450  if ($this->object->getSkillService() && $skmg_set->isActivated()) {
451  $this->tabs_gui->addTab(
452  "survey_competences",
453  $this->lng->txt("survey_competences"),
454  $this->ctrl->getLinkTargetByClass("ilsurveyskillgui", "listQuestionAssignment")
455  );
456  }
457  $this->tabs_gui->addTab(
458  "maintenance",
459  $this->lng->txt("maintenance"),
460  $this->ctrl->getLinkTargetByClass('ilsurveyparticipantsgui', 'maintenance')
461  );
462  break;
463 
464  default:
465  // maintenance (tab called participants)
466  $this->tabs_gui->addTab(
467  "maintenance",
468  $this->lng->txt("maintenance"),
469  $this->ctrl->getLinkTargetByClass('ilsurveyparticipantsgui', 'maintenance')
470  );
471  break;
472  }
473  }
474 
475  include_once "./Modules/Survey/classes/class.ilObjSurveyAccess.php";
476  if (
477  $this->checkRbacOrPositionPermission('read_results', 'access_results') ||
478  ilObjSurveyAccess::_hasEvaluationAccess($this->object->getId(), $ilUser->getId())) {
479  // evaluation
480  $this->tabs_gui->addTab(
481  "svy_results",
482  $this->lng->txt("svy_results"),
483  $this->ctrl->getLinkTargetByClass("ilsurveyevaluationgui", "evaluation")
484  );
485  }
486 
487  // learning progress
488  include_once "./Services/Tracking/classes/class.ilLearningProgressAccess.php";
489  if (ilLearningProgressAccess::checkAccess($this->object->getRefId())) {
490  $this->tabs_gui->addTarget(
491  "learning_progress",
492  $this->ctrl->getLinkTargetByClass(array("ilobjsurveygui", "illearningprogressgui"), ""),
493  "",
494  array("illplistofobjectsgui", "illplistofsettingsgui", "illearningprogressgui", "illplistofprogressgui")
495  );
496  }
497 
498  if ($this->checkPermissionBool("write")) {
499  if (!in_array("meta_data", $hidden_tabs)) {
500  // meta data
501  include_once "Services/Object/classes/class.ilObjectMetaDataGUI.php";
502  $mdgui = new ilObjectMetaDataGUI($this->object);
503  $mdtab = $mdgui->getTab();
504  if ($mdtab) {
505  $this->tabs_gui->addTab(
506  "meta_data",
507  $this->lng->txt("meta_data"),
508  $mdtab
509  );
510  }
511  }
512 
513  if (!in_array("export", $hidden_tabs)) {
514  // export
515  $this->tabs_gui->addTab(
516  "export",
517  $this->lng->txt("export"),
518  $this->ctrl->getLinkTargetByClass("ilexportgui", "")
519  );
520  }
521  }
522 
523  if ($this->checkPermissionBool("edit_permission")) {
524  // permissions
525  $this->tabs_gui->addTab(
526  "perm_settings",
527  $this->lng->txt("perm_settings"),
528  $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm")
529  );
530  }
531  }
Class ilObjectMetaDataGUI.
$template
checkRbacOrPositionPermission($a_rbac_permission, $a_position_permission)
Check rbac or position permission.
static checkAccess($a_ref_id, $a_allow_only_read=true)
check access to learning progress
$ilUser
Definition: imgupload.php:18
static _hasEvaluationAccess($a_obj_id, $user_id)
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
Settings template application class.
+ Here is the call graph for this function:

◆ getUserResultsPlain()

ilObjSurveyGUI::getUserResultsPlain (   $a_active_id)
protected

Definition at line 2129 of file class.ilObjSurveyGUI.php.

References $res, $text, and $type.

Referenced by sendUserResultsMail().

2130  {
2131  $res = array();
2132 
2133  $show_titles = (bool) $this->object->getShowQuestionTitles();
2134 
2135  foreach ($this->object->getSurveyPages() as $page) {
2136  if (count($page) > 0) {
2137  $res[] = "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
2138 
2139  // question block
2140  if (count($page) > 1) {
2141  if ((bool) $page[0]["questionblock_show_blocktitle"]) {
2142  $res[$this->lng->txt("questionblock")] = trim($page[0]["questionblock_title"]) . "\n";
2143  }
2144  }
2145 
2146  // questions
2147 
2148  $page_res = array();
2149 
2150  foreach ($page as $question) {
2151  $question_gui = $this->object->getQuestionGUI($question["type_tag"], $question["question_id"]);
2152  if (is_object($question_gui)) {
2153  $question_parts = array();
2154 
2155  // heading
2156  if (strlen($question["heading"])) {
2157  $question_parts[$this->lng->txt("heading")] = trim($question["heading"]);
2158  }
2159 
2160  if ($show_titles) {
2161  $question_parts[$this->lng->txt("title")] = trim($question["title"]);
2162  }
2163 
2164  if ((bool) $question["questionblock_show_questiontext"]) {
2165  $question_parts[$this->lng->txt("question")] = trim(strip_tags($question_gui->object->getQuestionText()));
2166  }
2167 
2168  $answers = $question_gui->getParsedAnswers(
2169  $this->object->loadWorkingData($question["question_id"], $a_active_id),
2170  true
2171  );
2172 
2173  if (sizeof($answers)) {
2174  $multiline = false;
2175  if (sizeof($answers) > 1 ||
2176  get_class($question_gui) == "SurveyTextQuestionGUI") {
2177  $multiline = true;
2178  }
2179 
2180  $parts = array();
2181  foreach ($answers as $answer) {
2182  $text = null;
2183  if ($answer["textanswer"]) {
2184  $text = ' ("' . $answer["textanswer"] . '")';
2185  }
2186  if (!isset($answer["cols"])) {
2187  if (isset($answer["title"])) {
2188  $parts[] = $answer["title"] . $text;
2189  } elseif (isset($answer["value"])) {
2190  $parts[] = $answer["value"];
2191  } elseif ($text) {
2192  $parts[] = substr($text, 2, -1);
2193  }
2194  }
2195  // matrix
2196  else {
2197  $tmp = array();
2198  foreach ($answer["cols"] as $col) {
2199  $tmp[] = $col["title"];
2200  }
2201  $parts[] = $answer["title"] . ": " . implode(", ", $tmp) . $text;
2202  }
2203  }
2204  $question_parts[$this->lng->txt("answer")] =
2205  ($multiline ? "\n" : "") . implode("\n", $parts);
2206  }
2207 
2208  $tmp = array();
2209  foreach ($question_parts as $type => $value) {
2210  $tmp[] = $type . ": " . $value;
2211  }
2212  $page_res[] = implode("\n", $tmp);
2213  }
2214  }
2215 
2216  $res[] = implode("\n\n-------------------------------\n\n", $page_res);
2217  }
2218  }
2219 
2220  $res[] = "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
2221 
2222  return implode("\n", $res);
2223  }
$type
foreach($_POST as $key=> $value) $res
$text
Definition: errorreport.php:18
+ Here is the caller graph for this function:

◆ getUserResultsTable()

ilObjSurveyGUI::getUserResultsTable (   $a_active_id)

Definition at line 2058 of file class.ilObjSurveyGUI.php.

Referenced by viewUserResultsObject().

2059  {
2060  $rtpl = new ilTemplate("tpl.svy_view_user_results.html", true, true, "Modules/Survey");
2061 
2062  $show_titles = (bool) $this->object->getShowQuestionTitles();
2063 
2064  foreach ($this->object->getSurveyPages() as $page) {
2065  if (count($page) > 0) {
2066  // question block
2067  if (count($page) > 1) {
2068  if ((bool) $page[0]["questionblock_show_blocktitle"]) {
2069  $rtpl->setVariable("BLOCK_TITLE", trim($page[0]["questionblock_title"]));
2070  }
2071  }
2072 
2073  // questions
2074  foreach ($page as $question) {
2075  $question_gui = $this->object->getQuestionGUI($question["type_tag"], $question["question_id"]);
2076  if (is_object($question_gui)) {
2077  $rtpl->setCurrentBlock("question_bl");
2078 
2079  // heading
2080  if (strlen($question["heading"])) {
2081  $rtpl->setVariable("HEADING", trim($question["heading"]));
2082  }
2083 
2084  $rtpl->setVariable(
2085  "QUESTION_DATA",
2086  $question_gui->getPrintView(
2087  $show_titles,
2088  (bool) $question["questionblock_show_questiontext"],
2089  $this->object->getId(),
2090  $this->object->loadWorkingData($question["question_id"], $a_active_id)
2091  )
2092  );
2093 
2094  $rtpl->parseCurrentBlock();
2095  }
2096  }
2097 
2098  $rtpl->setCurrentBlock("block_bl");
2099  $rtpl->parseCurrentBlock();
2100  }
2101  }
2102 
2103  return $rtpl->get();
2104  }
special template class to simplify handling of ITX/PEAR
+ Here is the caller graph for this function:

◆ importSurveyObject()

ilObjSurveyGUI::importSurveyObject ( )

form for new survey object import

Definition at line 1543 of file class.ilObjSurveyGUI.php.

References $_GET, $form, ilObjectGUI\$tpl, ilObjectGUI\checkPermission(), ilSettingsTemplate\getAllSettingsTemplates(), initImportForm(), ilObjectGUI\putObjectInTree(), ilUtil\redirect(), and ilUtil\sendFailure().

1544  {
1545  $tpl = $this->tpl;
1546 
1547  $parent_id = $_GET["ref_id"];
1548  $new_type = $_REQUEST["new_type"];
1549 
1550  // create permission is already checked in createObject. This check here is done to prevent hacking attempts
1551  $this->checkPermission("create", "", $new_type);
1552 
1553  $this->lng->loadLanguageModule($new_type);
1554  $this->ctrl->setParameter($this, "new_type", $new_type);
1555 
1556  $form = $this->initImportForm($new_type);
1557  if ($form->checkInput()) {
1558  include_once("./Modules/Survey/classes/class.ilObjSurvey.php");
1559  $newObj = new ilObjSurvey();
1560  $newObj->setType($new_type);
1561  $newObj->setTitle("dummy");
1562  $newObj->create(true);
1563  $this->putObjectInTree($newObj);
1564 
1565  // copy uploaded file to import directory
1566 
1567  $this->log->debug("form->getInput(spl) = " . $form->getInput("spl"));
1568 
1569  $error = $newObj->importObject($_FILES["importfile"], $form->getInput("spl"));
1570  if (strlen($error)) {
1571  $newObj->delete();
1572  ilUtil::sendFailure($error);
1573  return;
1574  }
1575 
1576  ilUtil::sendSuccess($this->lng->txt("object_imported"), true);
1577  ilUtil::redirect("ilias.php?ref_id=" . $newObj->getRefId() .
1578  "&baseClass=ilObjSurveyGUI");
1579 
1580  // using template?
1581  include_once "Services/Administration/classes/class.ilSettingsTemplate.php";
1582  $templates = ilSettingsTemplate::getAllSettingsTemplates("svy");
1583  if ($templates) {
1584  $tpl = $this->tpl;
1585  $tpl->addJavaScript("./Modules/Scorm2004/scripts/questions/jquery.js");
1586  // $tpl->addJavaScript("./Modules/Scorm2004/scripts/questions/jquery-ui-min.js");
1587 
1588  $this->tpl->setCurrentBlock("template_option");
1589  $this->tpl->setVariable("VAL_TEMPLATE_OPTION", "");
1590  $this->tpl->setVariable("TXT_TEMPLATE_OPTION", $this->lng->txt("none"));
1591  $this->tpl->parseCurrentBlock();
1592 
1593  foreach ($templates as $item) {
1594  $this->tpl->setCurrentBlock("template_option");
1595  $this->tpl->setVariable("VAL_TEMPLATE_OPTION", $item["id"]);
1596  $this->tpl->setVariable("TXT_TEMPLATE_OPTION", $item["title"]);
1597  $this->tpl->parseCurrentBlock();
1598 
1599  $desc = str_replace("\n", "", nl2br($item["description"]));
1600  $desc = str_replace("\r", "", $desc);
1601 
1602  $this->tpl->setCurrentBlock("js_data");
1603  $this->tpl->setVariable("JS_DATA_ID", $item["id"]);
1604  $this->tpl->setVariable("JS_DATA_TEXT", $desc);
1605  $this->tpl->parseCurrentBlock();
1606  }
1607 
1608  $this->tpl->setCurrentBlock("templates");
1609  $this->tpl->setVariable("TXT_TEMPLATE", $this->lng->txt("svy_settings_template"));
1610  $this->tpl->parseCurrentBlock();
1611  }
1612  }
1613 
1614  // display form to correct errors
1615  $form->setValuesByPost();
1616  $tpl->setContent($form->getHtml());
1617  }
static getAllSettingsTemplates($a_type, $a_include_auto_generated=false)
Get all settings templates of type.
$_GET["client_id"]
initImportForm($a_new_type)
if(isset($_POST['submit'])) $form
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
putObjectInTree(ilObject $a_obj, $a_parent_node_id=null)
Add object to tree at given position.
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission and redirect on error.
static redirect($a_script)
+ Here is the call graph for this function:

◆ infoScreen()

ilObjSurveyGUI::infoScreen ( )

show information screen

Definition at line 1639 of file class.ilObjSurveyGUI.php.

References $_POST, $_SESSION, ilObjectGUI\$access, $ilUser, $info, $list, $tabs, ilObjectGUI\$toolbar, $txt, ilObjectGUI\$user, ilObjSurveyAccess\_hasEvaluationAccess(), ilObjectGUI\checkPermission(), ilObjectGUI\checkPermissionBool(), ilDatePresentation\formatDate(), ilSubmitButton\getInstance(), ilLinkButton\getInstance(), ilUserUtil\getNamePresentation(), IL_CAL_UNIX, ilUtil\sendFailure(), ilUtil\sendInfo(), ilTextInputGUI\setSize(), and ilDatePresentation\setUseRelativeDates().

Referenced by executeCommand(), and infoScreenObject().

1640  {
1641  $ilTabs = $this->tabs;
1642  $ilUser = $this->user;
1643  $ilToolbar = $this->toolbar;
1644  $ilAccess = $this->access;
1645 
1646  if (!$this->external_rater_360) {
1647  if (!$this->checkPermissionBool("read")) {
1648  $this->checkPermission("visible");
1649  }
1650  }
1651 
1652  $ilTabs->activateTab("info_short");
1653 
1654  include_once "./Modules/Survey/classes/class.ilSurveyExecutionGUI.php";
1655  $output_gui = new ilSurveyExecutionGUI($this->object);
1656 
1657  include_once("./Services/InfoScreen/classes/class.ilInfoScreenGUI.php");
1658  $info = new ilInfoScreenGUI($this);
1659  $info->enablePrivateNotes();
1660 
1661 
1662  $is_appraisee = false;
1663 
1664  // 360° - appraisee infos
1665  if ($this->object->get360Mode() &&
1666  $this->object->isAppraisee($ilUser->getId())) {
1667  $is_appraisee = true;
1668 
1669  $info->addSection($this->lng->txt("survey_360_appraisee_info"));
1670 
1671  $appr_data = $this->object->getAppraiseesData();
1672  $appr_data = $appr_data[$ilUser->getId()];
1673  $info->addProperty($this->lng->txt("survey_360_raters_status_info"), $appr_data["finished"]);
1674 
1675  if (!$appr_data["closed"]) {
1676  include_once "Services/UIComponent/Button/classes/class.ilLinkButton.php";
1677  $button = ilLinkButton::getInstance();
1678  $button->setCaption("survey_360_appraisee_close_action");
1679  $button->setUrl($this->ctrl->getLinkTargetByClass("ilsurveyparticipantsgui", "confirmappraiseeclose"));
1680  $close_button_360 = '<div>' . $button->render() . '</div>';
1681 
1682  $txt = "survey_360_appraisee_close_action_info";
1683  if ($this->object->getSkillService()) {
1684  $txt .= "_skill";
1685  }
1686  $info->addProperty(
1687  $this->lng->txt("status"),
1688  $close_button_360 . $this->lng->txt($txt)
1689  );
1690  } else {
1692 
1693  $dt = new ilDateTime($appr_data["closed"], IL_CAL_UNIX);
1694  $info->addProperty(
1695  $this->lng->txt("status"),
1696  sprintf(
1697  $this->lng->txt("survey_360_appraisee_close_action_status"),
1699  )
1700  );
1701  }
1702  }
1703 
1704 
1705  // handle (anonymous) code
1706 
1707  // validate incoming
1708  $code_input = false;
1709  $anonymous_code = $_POST["anonymous_id"];
1710  if ($anonymous_code) {
1711  $code_input = true;
1712  // if(!$this->object->isUnusedCode($anonymous_code, $ilUser->getId()))
1713  if (!$this->object->checkSurveyCode($anonymous_code)) { // #15031 - valid as long survey is not finished
1714  $anonymous_code = null;
1715  } else {
1716  // #15860
1717  $this->object->bindSurveyCodeToUser($ilUser->getId(), $anonymous_code);
1718  }
1719  }
1720  if ($anonymous_code) {
1721  $_SESSION["anonymous_id"][$this->object->getId()] = $anonymous_code;
1722  } else {
1723  $anonymous_code = $_SESSION["anonymous_id"][$this->object->getId()];
1724  if ($anonymous_code) {
1725  $code_input = true;
1726  }
1727  }
1728 
1729  // try to find code for current (registered) user from existing run
1730  if ($this->object->getAnonymize() && !$anonymous_code) {
1731  $anonymous_code = $this->object->findCodeForUser($ilUser->getId());
1732  }
1733 
1734  // get existing runs for current user, might generate code
1735  $participant_status = $this->object->getUserSurveyExecutionStatus($anonymous_code);
1736  if ($participant_status) {
1737  $anonymous_code = $participant_status["code"];
1738  $participant_status = $participant_status["runs"];
1739  }
1740 
1741  // (final) check for proper anonymous code
1742  if (!$this->object->isAccessibleWithoutCode() &&
1743  !$is_appraisee &&
1744  $code_input && // #11346
1745  (!$anonymous_code || !$this->object->isAnonymousKey($anonymous_code))) {
1746  $anonymous_code = null;
1747  ilUtil::sendInfo($this->lng->txt("wrong_survey_code_used"));
1748  }
1749 
1750  // :TODO: really save in session?
1751  $_SESSION["anonymous_id"][$this->object->getId()] = $anonymous_code;
1752 
1753  $survey_started = $this->object->isSurveyStarted($ilUser->getId(), $anonymous_code);
1754 
1755  $showButtons = $big_button = false;
1756 
1757  // already finished?
1758  if (!$this->object->get360Mode() &&
1759  ($survey_started === 1 && // survey finished
1760  !(!$this->object->isAccessibleWithoutCode() && !$anonymous_code && $ilUser->getId() == ANONYMOUS_USER_ID))) { // not code accessible an no anonymous code and anonymous user (see #0020333)
1761  ilUtil::sendInfo($this->lng->txt("already_completed_survey"));
1762 
1763  if ($ilUser->getId() != ANONYMOUS_USER_ID) {
1764  if ($this->object->hasViewOwnResults()) {
1765  include_once "Services/UIComponent/Button/classes/class.ilLinkButton.php";
1766  $button = ilLinkButton::getInstance();
1767  $button->setCaption("svy_view_own_results");
1768  $button->setUrl($this->ctrl->getLinkTarget($this, "viewUserResults"));
1769  $ilToolbar->addButtonInstance($button);
1770  }
1771 
1772  // see ilSurveyExecutionGUI
1773  if ($this->object->hasMailConfirmation()) {
1774  if ($this->object->hasViewOwnResults()) {
1775  $ilToolbar->addSeparator();
1776  }
1777 
1778  if ($ilUser->getId() == ANONYMOUS_USER_ID ||
1779  !$ilUser->getEmail()) {
1780  require_once "Services/Form/classes/class.ilTextInputGUI.php";
1781  $mail = new ilTextInputGUI($this->lng->txt("email"), "mail");
1782  $mail->setSize(25);
1783  $mail->setValue($ilUser->getEmail());
1784  $ilToolbar->addInputItem($mail, true);
1785  }
1786 
1787  $ilToolbar->setFormAction($this->ctrl->getFormAction($this, "mailUserResults"));
1788 
1789  include_once "Services/UIComponent/Button/classes/class.ilSubmitButton.php";
1790  $button = ilSubmitButton::getInstance();
1791  $button->setCaption("svy_mail_send_confirmation");
1792  $button->setCommand("mailUserResults");
1793  $ilToolbar->addButtonInstance($button);
1794  }
1795  }
1796  } else {
1797  // "active" survey?
1798  $canStart = $this->object->canStartSurvey(null, $this->external_rater_360);
1799 
1800  $showButtons = $canStart["result"];
1801  if (!$showButtons) {
1802  if ($canStart["edit_settings"] &&
1803  $ilAccess->checkAccess("write", "", $this->ref_id)) {
1804  $canStart["messages"][] = "<a href=\"" . $this->ctrl->getLinkTarget($this, "properties") . "\">&raquo; " .
1805  $this->lng->txt("survey_edit_settings") . "</a>";
1806  }
1807  ilUtil::sendInfo(implode("<br />", $canStart["messages"]));
1808  }
1809  }
1810 
1811  if ($showButtons) {
1812  // code is mandatory and not given yet
1813  if (!$is_appraisee &&
1814  !$anonymous_code &&
1815  !$this->object->isAccessibleWithoutCode()) {
1816  $info->setFormAction($this->ctrl->getFormAction($this, "infoScreen"));
1817  $info->addSection($this->lng->txt("anonymization"));
1818  $info->addProperty("", $this->lng->txt("anonymize_anonymous_introduction"));
1819  $info->addPropertyTextinput($this->lng->txt("enter_anonymous_id"), "anonymous_id", "", 8, "infoScreen", $this->lng->txt("submit"), true);
1820  } else {
1821  // trunk/default
1822  if (!$this->object->get360Mode()) {
1823  if ($anonymous_code) {
1824  $info->addHiddenElement("anonymous_id", $anonymous_code);
1825  }
1826  if ($survey_started === 0) {
1827  $big_button = array("resume", $this->lng->txt("resume_survey"));
1828  } elseif ($survey_started === false) {
1829  $big_button = array("start", $this->lng->txt("start_survey"));
1830  }
1831  }
1832  // 360°
1833  else {
1834  $appr_ids = array();
1835 
1836  // use given code (if proper external one)
1837  if ($anonymous_code) {
1838  $anonymous_id = $this->object->getAnonymousIdByCode($anonymous_code);
1839  if ($anonymous_id) {
1840  $appr_ids = $this->object->getAppraiseesToRate(0, $anonymous_id);
1841  }
1842  }
1843 
1844  // registered user
1845  // if an auto-code was generated, we still have to check for the original user id
1846  if (!$appr_ids && $ilUser->getId() != ANONYMOUS_USER_ID) {
1847  $appr_ids = $this->object->getAppraiseesToRate($ilUser->getId());
1848  }
1849 
1850  if (sizeof($appr_ids)) {
1851  // map existing runs to appraisees
1852  $active_appraisees = array();
1853  if ($participant_status) {
1854  foreach ($participant_status as $item) {
1855  $active_appraisees[$item["appr_id"]] = $item["finished"];
1856  }
1857  }
1858 
1859  $list = array();
1860 
1861  foreach ($appr_ids as $appr_id) {
1862  if ($this->object->isAppraiseeClosed($appr_id)) {
1863  // closed
1864  $list[$appr_id] = $this->lng->txt("survey_360_appraisee_is_closed");
1865  } elseif (array_key_exists($appr_id, $active_appraisees)) {
1866  // already done
1867  if ($active_appraisees[$appr_id]) {
1868  $list[$appr_id] = $this->lng->txt("already_completed_survey");
1869  }
1870  // resume
1871  else {
1872  $list[$appr_id] = array("resume", $this->lng->txt("resume_survey"));
1873  }
1874  } else {
1875  // start
1876  $list[$appr_id] = array("start", $this->lng->txt("start_survey"));
1877  }
1878  }
1879 
1880  $info->addSection($this->lng->txt("survey_360_rate_other_appraisees"));
1881 
1882  include_once "Services/User/classes/class.ilUserUtil.php";
1883  foreach ($list as $appr_id => $item) {
1884  $appr_name = ilUserUtil::getNamePresentation($appr_id, false, false, "", true);
1885 
1886  if (!is_array($item)) {
1887  $info->addProperty($appr_name, $item);
1888  } else {
1889  $this->ctrl->setParameter($output_gui, "appr_id", $appr_id);
1890  $href = $this->ctrl->getLinkTarget($output_gui, $item[0]);
1891  $this->ctrl->setParameter($output_gui, "appr_id", "");
1892 
1893  include_once "Services/UIComponent/Button/classes/class.ilLinkButton.php";
1894  $button = ilLinkButton::getInstance();
1895  $button->setCaption($item[1], false);
1896  $button->setUrl($href);
1897  $big_button_360 = '<div>' . $button->render() . '</div>';
1898 
1899  $info->addProperty($appr_name, $big_button_360);
1900  }
1901  }
1902  } elseif (!$is_appraisee) {
1903  ilUtil::sendFailure($this->lng->txt("survey_360_no_appraisees"));
1904  }
1905  }
1906  }
1907 
1908  if ($this->object->get360Mode() &&
1909  $this->object->get360SelfAppraisee() &&
1910  !$this->object->isAppraisee($ilUser->getId()) &&
1911  $ilUser->getId() != ANONYMOUS_USER_ID) { // #14968
1912  $link = $this->ctrl->getLinkTargetByClass("ilsurveyparticipantsgui", "addSelfAppraisee");
1913  $link = '<a href="' . $link . '">' . $this->lng->txt("survey_360_add_self_appraisee") . '</a>';
1914  $info->addProperty("&nbsp;", $link);
1915  }
1916  }
1917 
1918  if ($big_button) {
1919  $ilToolbar->setFormAction($this->ctrl->getFormAction($output_gui, "infoScreen"));
1920 
1921  include_once "Services/UIComponent/Button/classes/class.ilSubmitButton.php";
1922  $button = ilSubmitButton::getInstance();
1923  $button->setCaption($big_button[1], false);
1924  $button->setCommand($big_button[0]);
1925  $button->setPrimary(true);
1926  $ilToolbar->addButtonInstance($button);
1927 
1928  $ilToolbar->setCloseFormTag(false);
1929  $info->setOpenFormTag(false);
1930  }
1931  /* #12016
1932  else
1933  {
1934  $info->setFormAction($this->ctrl->getFormAction($output_gui, "infoScreen"));
1935  }
1936  */
1937 
1938  if (strlen($this->object->getIntroduction())) {
1939  $introduction = $this->object->getIntroduction();
1940  $info->addSection($this->lng->txt("introduction"));
1941  $info->addProperty("", $this->object->prepareTextareaOutput($introduction) .
1942  "<br />" . $info->getHiddenToggleButton());
1943  } else {
1944  $info->addSection("");
1945  $info->addProperty("", $info->getHiddenToggleButton());
1946  }
1947 
1948  $info->hideFurtherSections(false);
1949 
1950  if (!$this->object->get360Mode()) {
1951  $info->addSection($this->lng->txt("svy_general_properties"));
1952 
1953  $info->addProperty(
1954  $this->lng->txt("survey_results_anonymization"),
1955  !$this->object->hasAnonymizedResults()
1956  ? $this->lng->txt("survey_results_personalized_info")
1957  : $this->lng->txt("survey_results_anonymized_info")
1958  );
1959 
1960  include_once "./Modules/Survey/classes/class.ilObjSurveyAccess.php";
1961  if ($this->checkPermissionBool("write") ||
1962  ilObjSurveyAccess::_hasEvaluationAccess($this->object->getId(), $ilUser->getId())) {
1963  $info->addProperty($this->lng->txt("evaluation_access"), $this->lng->txt("evaluation_access_info"));
1964  }
1965  }
1966 
1967  $info->addMetaDataSections($this->object->getId(), 0, $this->object->getType());
1968 
1969  $this->ctrl->forwardCommand($info);
1970  }
if(isset($_REQUEST['delete'])) $list
Definition: registry.php:41
Class ilInfoScreenGUI.
$_SESSION["AccountId"]
static setUseRelativeDates($a_status)
set use relative dates
const IL_CAL_UNIX
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date public.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
Survey execution graphical output.
setSize($a_size)
Set Size.
This class represents a text property in a property form.
Date and time handling
$ilUser
Definition: imgupload.php:18
static getNamePresentation( $a_user_id, $a_user_image=false, $a_profile_link=false, $a_profile_back_link="", $a_force_first_lastname=false, $a_omit_login=false, $a_sortable=true, $a_return_data_array=false, $a_ctrl_path="ilpublicuserprofilegui")
Default behaviour is:
$txt
Definition: error.php:11
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static _hasEvaluationAccess($a_obj_id, $user_id)
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission and redirect on error.
$info
Definition: index.php:5
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
$_POST["username"]
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ infoScreenObject()

ilObjSurveyGUI::infoScreenObject ( )

this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually, if everything works through ilCtrl in the future this may be changed

Definition at line 1629 of file class.ilObjSurveyGUI.php.

References infoScreen().

1630  {
1631  $this->ctrl->setCmd("showSummary");
1632  $this->ctrl->setCmdClass("ilinfoscreengui");
1633  $this->infoScreen();
1634  }
infoScreen()
show information screen
+ Here is the call graph for this function:

◆ initImportForm()

ilObjSurveyGUI::initImportForm (   $a_new_type)
protected

Definition at line 1511 of file class.ilObjSurveyGUI.php.

References $form, ilSelectInputGUI\setOptions(), and ilFileInputGUI\setSuffixes().

Referenced by importSurveyObject().

1512  {
1513  include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
1514  $form = new ilPropertyFormGUI();
1515  $form->setTarget("_top");
1516  $form->setFormAction($this->ctrl->getFormAction($this));
1517  $form->setTitle($this->lng->txt("import_svy"));
1518 
1519  include_once("./Services/Form/classes/class.ilFileInputGUI.php");
1520  $fi = new ilFileInputGUI($this->lng->txt("import_file"), "importfile");
1521  $fi->setSuffixes(array("zip"));
1522  $fi->setRequired(true);
1523  $form->addItem($fi);
1524 
1525  include_once("./Modules/Survey/classes/class.ilObjSurvey.php");
1526  $svy = new ilObjSurvey();
1527  $questionspools = $svy->getAvailableQuestionpools(true, true, true);
1528 
1529  $pools = new ilSelectInputGUI($this->lng->txt("select_questionpool_short"), "spl");
1530  $pools->setOptions(array("" => $this->lng->txt("dont_use_questionpool")) + $questionspools);
1531  $pools->setRequired(false);
1532  $form->addItem($pools);
1533 
1534  $form->addCommandButton("importSurvey", $this->lng->txt("import"));
1535  $form->addCommandButton("cancel", $this->lng->txt("cancel"));
1536 
1537  return $form;
1538  }
This class represents a selection list property in a property form.
This class represents a property form user interface.
This class represents a file property in a property form.
if(isset($_POST['submit'])) $form
setOptions($a_options)
Set Options.
setSuffixes($a_suffixes)
Set Accepted Suffixes.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initPropertiesForm()

ilObjSurveyGUI::initPropertiesForm ( )

Init survey settings form.

Returns
ilPropertyFormGUI

Definition at line 805 of file class.ilObjSurveyGUI.php.

References $end, $form, $header, $id, $info, ilObjectGUI\$object_service, $results, $section, $start, $template, $title, ilObjectGUI\$tree, $txt, ilObject\_getAllReferences(), ilObjAdvancedEditing\_getUsedHTMLTags(), ilObjSurvey\_hasDatasets(), ilObjUser\_lookupName(), ilSubEnabledFormPropertyGUI\addSubItem(), ilObjSurvey\EVALUATION_ACCESS_ALL, ilObjSurvey\EVALUATION_ACCESS_OFF, ilObjSurvey\EVALUATION_ACCESS_PARTICIPANTS, ilMD\getGeneral(), ilOrgUnitGlobalSettings\getInstance(), IL_CAL_TIMESTAMP, IL_CAL_UNIX, ilObjectServiceSettingsGUI\initServiceSettingsForm(), ilObjSurvey\MODE_360, ilObjSurvey\MODE_SELF_EVAL, ilObjSurvey\NOTIFICATION_APPRAISEES, ilObjSurvey\NOTIFICATION_APPRAISEES_AND_RATERS, ilObjSurvey\NOTIFICATION_INVITED_USERS, ilObjSurvey\NOTIFICATION_PARENT_COURSE, ilObjSurvey\NOTIFICATION_RATERS, ilObjectServiceSettingsGUI\ORGU_POSITION_ACCESS, ilObjSurvey\RESULTS_360_ALL, ilObjSurvey\RESULTS_360_NONE, ilObjSurvey\RESULTS_360_OWN, ilObjSurvey\RESULTS_SELF_EVAL_ALL, ilObjSurvey\RESULTS_SELF_EVAL_NONE, ilObjSurvey\RESULTS_SELF_EVAL_OWN, ilCheckboxInputGUI\setChecked(), ilTextAreaInputGUI\setCols(), ilTextInputGUI\setDataSource(), ilDateTimeInputGUI\setDate(), ilRadioOption\setInfo(), ilFormPropertyGUI\setInfo(), ilCheckboxInputGUI\setOptionTitle(), ilFormPropertyGUI\setRequired(), ilDateTimeInputGUI\setShowTime(), ilDateDurationInputGUI\setShowTime(), ilTextInputGUI\setValue(), ilCheckboxInputGUI\setValue(), ilRadioGroupInputGUI\setValue(), ilNonEditableValueGUI\setValue(), and ilTextAreaInputGUI\setValue().

Referenced by propertiesObject(), and savePropertiesObject().

806  {
807  $obj_service = $this->object_service;
808 
809  $template_settings = $hide_rte_switch = null;
810  $template = $this->object->getTemplate();
811  if ($template) {
812  include_once "Services/Administration/classes/class.ilSettingsTemplate.php";
814 
815  $template_settings = $template->getSettings();
816  $hide_rte_switch = $template_settings["rte_switch"]["hide"];
817  }
818 
819  include_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
820  $form = new ilPropertyFormGUI();
821  $form->setFormAction($this->ctrl->getFormAction($this));
822  $form->setTableWidth("100%");
823  $form->setId("survey_properties");
824 
825  // general properties
827  $header->setTitle($this->lng->txt("settings"));
828  $form->addItem($header);
829 
830 
831  // title & description (meta data)
832 
833  include_once 'Services/MetaData/classes/class.ilMD.php';
834  $md_obj = new ilMD($this->object->getId(), 0, "svy");
835  $md_section = $md_obj->getGeneral();
836 
837  $title = new ilTextInputGUI($this->lng->txt("title"), "title");
838  $title->setRequired(true);
839  $title->setValue($md_section->getTitle());
840  $form->addItem($title);
841 
842  $ids = $md_section->getDescriptionIds();
843  if ($ids) {
844  $desc_obj = $md_section->getDescription(array_pop($ids));
845 
846  $desc = new ilTextAreaInputGUI($this->lng->txt("description"), "description");
847  $desc->setCols(50);
848  $desc->setRows(4);
849  $desc->setValue($desc_obj->getDescription());
850  $form->addItem($desc);
851  }
852 
853  // pool usage
854  $pool_usage = new ilRadioGroupInputGUI($this->lng->txt("survey_question_pool_usage"), "use_pool");
855  $opt = new ilRadioOption($this->lng->txt("survey_question_pool_usage_active"), 1);
856  $opt->setInfo($this->lng->txt("survey_question_pool_usage_active_info"));
857  $pool_usage->addOption($opt);
858  $opt = new ilRadioOption($this->lng->txt("survey_question_pool_usage_inactive"), 0);
859  $opt->setInfo($this->lng->txt("survey_question_pool_usage_inactive_info"));
860  $pool_usage->addOption($opt);
861  $pool_usage->setValue($this->object->getPoolUsage());
862  $form->addItem($pool_usage);
863 
864  // 360°: appraisees
865  if ($this->object->get360Mode()) {
866  $self_eval = new ilCheckboxInputGUI($this->lng->txt("survey_360_self_evaluation"), "self_eval");
867  $self_eval->setInfo($this->lng->txt("survey_360_self_evaluation_info"));
868  $self_eval->setChecked($this->object->get360SelfEvaluation());
869  $form->addItem($self_eval);
870 
871  $self_rate = new ilCheckboxInputGUI($this->lng->txt("survey_360_self_raters"), "self_rate");
872  $self_rate->setInfo($this->lng->txt("survey_360_self_raters_info"));
873  $self_rate->setChecked($this->object->get360SelfRaters());
874  $form->addItem($self_rate);
875 
876  $self_appr = new ilCheckboxInputGUI($this->lng->txt("survey_360_self_appraisee"), "self_appr");
877  $self_appr->setInfo($this->lng->txt("survey_360_self_appraisee_info"));
878  $self_appr->setChecked($this->object->get360SelfAppraisee());
879  $form->addItem($self_appr);
880  }
881 
882 
883  // activation
884 
885  include_once "Services/Object/classes/class.ilObjectActivation.php";
886  $this->lng->loadLanguageModule('rep');
887 
889  $section->setTitle($this->lng->txt('rep_activation_availability'));
890  $form->addItem($section);
891 
892  // additional info only with multiple references
893  $act_obj_info = $act_ref_info = "";
894  if (sizeof(ilObject::_getAllReferences($this->object->getId())) > 1) {
895  $act_obj_info = ' ' . $this->lng->txt('rep_activation_online_object_info');
896  $act_ref_info = $this->lng->txt('rep_activation_access_ref_info');
897  }
898 
899  $online = new ilCheckboxInputGUI($this->lng->txt('rep_activation_online'), 'online');
900  $online->setInfo($this->lng->txt('svy_activation_online_info') . $act_obj_info);
901  $online->setChecked(!$this->object->getOfflineStatus());
902  $form->addItem($online);
903 
904  include_once "Services/Form/classes/class.ilDateDurationInputGUI.php";
905  $dur = new ilDateDurationInputGUI($this->lng->txt('rep_visibility_until'), "access_period");
906  $dur->setShowTime(true);
907  $date = $this->object->getActivationStartDate();
908  $dur->setStart($date
909  ? new ilDateTime($date, IL_CAL_UNIX)
910  : null);
911  $date = $this->object->getActivationEndDate();
912  $dur->setEnd($date
913  ? new ilDateTime($date, IL_CAL_UNIX)
914  : null);
915  $form->addItem($dur);
916 
917  $visible = new ilCheckboxInputGUI($this->lng->txt('rep_activation_limited_visibility'), 'access_visiblity');
918  $visible->setInfo($this->lng->txt('svy_activation_limited_visibility_info'));
919  $visible->setChecked($this->object->getActivationVisibility());
920  $dur->addSubItem($visible);
921 
922  // presentation
924  $section->setTitle($this->lng->txt('obj_presentation'));
925  $form->addItem($section);
926 
927  // tile image
928  $obj_service->commonSettings()->legacyForm($form, $this->object)->addTileImage();
929 
930  // before start
931 
933  $section->setTitle($this->lng->txt('svy_settings_section_before_start'));
934  $form->addItem($section);
935 
936  // introduction
937  $intro = new ilTextAreaInputGUI($this->lng->txt("introduction"), "introduction");
938  $intro->setValue($this->object->prepareTextareaOutput($this->object->getIntroduction()));
939  $intro->setRows(10);
940  $intro->setCols(80);
941  $intro->setUseRte(true);
942  $intro->setInfo($this->lng->txt("survey_introduction_info"));
943  include_once "./Services/AdvancedEditing/classes/class.ilObjAdvancedEditing.php";
944  $intro->setRteTags(ilObjAdvancedEditing::_getUsedHTMLTags("survey"));
945  $intro->addPlugin("latex");
946  $intro->addButton("latex");
947  $intro->addButton("pastelatex");
948  $intro->setRTESupport($this->object->getId(), "svy", "survey", null, $hide_rte_switch);
949  $form->addItem($intro);
950 
951 
952  // access
953 
955  $section->setTitle($this->lng->txt('svy_settings_section_access'));
956  $form->addItem($section);
957 
958  // enable start date
959  $start = $this->object->getStartDate();
960  // start date
961  $startingtime = new ilDateTimeInputGUI($this->lng->txt("start_date"), 'start_date');
962  $startingtime->setShowTime(true);
963  if ($start) {
964  $startingtime->setDate(new ilDate($start, IL_CAL_TIMESTAMP));
965  }
966  $form->addItem($startingtime);
967 
968  // enable end date
969  $end = $this->object->getEndDate();
970  // end date
971  $endingtime = new ilDateTimeInputGUI($this->lng->txt("end_date"), 'end_date');
972  $endingtime->setShowTime(true);
973  if ($end) {
974  $endingtime->setDate(new ilDate($end, IL_CAL_TIMESTAMP));
975  }
976  $form->addItem($endingtime);
977 
978  // anonymization
979  if (!$this->object->get360Mode()) {
980  $codes = new ilCheckboxInputGUI($this->lng->txt("survey_access_codes"), "acc_codes");
981  $codes->setInfo($this->lng->txt("survey_access_codes_info"));
982  $codes->setChecked(!$this->object->isAccessibleWithoutCode());
983  $form->addItem($codes);
984 
985  if (ilObjSurvey::_hasDatasets($this->object->getSurveyId())) {
986  $codes->setDisabled(true);
987  }
988  }
989 
990 
991  // question behaviour
992 
994  $section->setTitle($this->lng->txt('svy_settings_section_question_behaviour'));
995  $form->addItem($section);
996 
997  // show question titles
998  $show_question_titles = new ilCheckboxInputGUI($this->lng->txt("svy_show_questiontitles"), "show_question_titles");
999  $show_question_titles->setValue(1);
1000  $show_question_titles->setChecked($this->object->getShowQuestionTitles());
1001  $form->addItem($show_question_titles);
1002 
1003 
1004  // finishing
1005 
1006  $info = new ilFormSectionHeaderGUI();
1007  $info->setTitle($this->lng->txt("svy_settings_section_finishing"));
1008  $form->addItem($info);
1009 
1010  $view_own = new ilCheckboxInputGUI($this->lng->txt("svy_results_view_own"), "view_own");
1011  $view_own->setInfo($this->lng->txt("svy_results_view_own_info"));
1012  $view_own->setChecked($this->object->hasViewOwnResults());
1013  $form->addItem($view_own);
1014 
1015  $mail_confirm = new ilCheckboxInputGUI($this->lng->txt("svy_results_mail_confirm"), "mail_confirm");
1016  $mail_confirm->setInfo($this->lng->txt("svy_results_mail_confirm_info"));
1017  $mail_confirm->setChecked($this->object->hasMailConfirmation());
1018  $form->addItem($mail_confirm);
1019 
1020  $mail_own = new ilCheckboxInputGUI($this->lng->txt("svy_results_mail_own"), "mail_own");
1021  $mail_own->setInfo($this->lng->txt("svy_results_mail_own_info"));
1022  $mail_own->setChecked($this->object->hasMailOwnResults());
1023  $mail_confirm->addSubItem($mail_own);
1024 
1025  // final statement
1026  $finalstatement = new ilTextAreaInputGUI($this->lng->txt("outro"), "outro");
1027  $finalstatement->setValue($this->object->prepareTextareaOutput($this->object->getOutro()));
1028  $finalstatement->setRows(10);
1029  $finalstatement->setCols(80);
1030  $finalstatement->setUseRte(true);
1031  $finalstatement->setRteTags(ilObjAdvancedEditing::_getUsedHTMLTags("survey"));
1032  $finalstatement->addPlugin("latex");
1033  $finalstatement->addButton("latex");
1034  $finalstatement->addButton("pastelatex");
1035  $finalstatement->setRTESupport($this->object->getId(), "svy", "survey", null, $hide_rte_switch);
1036  $form->addItem($finalstatement);
1037 
1038  // mail notification
1039  $mailnotification = new ilCheckboxInputGUI($this->lng->txt("mailnotification"), "mailnotification");
1040  // $mailnotification->setOptionTitle($this->lng->txt("activate"));
1041  $mailnotification->setInfo($this->lng->txt("svy_result_mail_notification_info")); // #11762
1042  $mailnotification->setValue(1);
1043  $mailnotification->setChecked($this->object->getMailNotification());
1044 
1045  // addresses
1046  $mailaddresses = new ilTextInputGUI($this->lng->txt("mailaddresses"), "mailaddresses");
1047  $mailaddresses->setValue($this->object->getMailAddresses());
1048  $mailaddresses->setSize(80);
1049  $mailaddresses->setInfo($this->lng->txt('mailaddresses_info'));
1050  $mailaddresses->setRequired(true);
1051 
1052  // participant data
1053  $participantdata = new ilTextAreaInputGUI($this->lng->txt("mailparticipantdata"), "mailparticipantdata");
1054  $participantdata->setValue($this->object->getMailParticipantData());
1055  $participantdata->setRows(6);
1056  $participantdata->setCols(80);
1057  $participantdata->setUseRte(false);
1058  $participantdata->setInfo($this->lng->txt("mailparticipantdata_info"));
1059 
1060  // #12755 - because of privacy concerns we restrict user data to a minimum
1061  $placeholders = array(
1062  "FIRST_NAME" => "firstname",
1063  "LAST_NAME" => "lastname",
1064  "LOGIN" => "login"
1065  );
1066  $txt = array();
1067  foreach ($placeholders as $placeholder => $caption) {
1068  $txt[] = "[" . strtoupper($placeholder) . "]: " . $this->lng->txt($caption);
1069  }
1070  $txt = implode("<br />", $txt);
1071  $participantdatainfo = new ilNonEditableValueGUI($this->lng->txt("mailparticipantdata_placeholder"), "", true);
1072  $participantdatainfo->setValue($txt);
1073 
1074  $mailnotification->addSubItem($mailaddresses);
1075  $mailnotification->addSubItem($participantdata);
1076  $mailnotification->addSubItem($participantdatainfo);
1077  $form->addItem($mailnotification);
1078 
1079  // tutor notification - currently not available for 360°
1080  if (!$this->object->get360Mode()) {
1081  // parent course?
1082  $tree = $this->tree;
1083  $has_parent = $tree->checkForParentType($this->object->getRefId(), "grp");
1084  if (!$has_parent) {
1085  $has_parent = $tree->checkForParentType($this->object->getRefId(), "crs");
1086  }
1087  $num_inv = sizeof($this->object->getInvitedUsers());
1088 
1089  // notification
1090  $tut = new ilCheckboxInputGUI($this->lng->txt("survey_notification_tutor_setting"), "tut");
1091  $tut->setChecked($this->object->getTutorNotificationStatus());
1092  $form->addItem($tut);
1093 
1094  $tut_logins = array();
1095  $tuts = $this->object->getTutorNotificationRecipients();
1096  if ($tuts) {
1097  foreach ($tuts as $tut_id) {
1098  $tmp = ilObjUser::_lookupName($tut_id);
1099  if ($tmp["login"]) {
1100  $tut_logins[] = $tmp["login"];
1101  }
1102  }
1103  }
1104  $tut_ids = new ilTextInputGUI($this->lng->txt("survey_notification_tutor_recipients"), "tut_ids");
1105  $tut_ids->setDataSource($this->ctrl->getLinkTarget($this, "doAutoComplete", "", true));
1106  $tut_ids->setRequired(true);
1107  $tut_ids->setMulti(true);
1108  $tut_ids->setMultiValues($tut_logins);
1109  $tut_ids->setValue(array_shift($tut_logins));
1110  $tut->addSubItem($tut_ids);
1111 
1112  $tut_grp = new ilRadioGroupInputGUI($this->lng->txt("survey_notification_target_group"), "tut_grp");
1113  $tut_grp->setRequired(true);
1114  $tut_grp->setValue($this->object->getTutorNotificationTarget());
1115  $tut->addSubItem($tut_grp);
1116 
1117  $tut_grp_crs = new ilRadioOption(
1118  $this->lng->txt("survey_notification_target_group_parent_course"),
1120  );
1121  if (!$has_parent) {
1122  $tut_grp_crs->setInfo($this->lng->txt("survey_notification_target_group_parent_course_inactive"));
1123  } else {
1124  $tut_grp_crs->setInfo(sprintf(
1125  $this->lng->txt("survey_notification_target_group_invited_info"),
1126  count($this->object->getNotificationTargetUserIds(false))
1127  ));
1128  }
1129  $tut_grp->addOption($tut_grp_crs);
1130 
1131  $tut_grp_inv = new ilRadioOption(
1132  $this->lng->txt("survey_notification_target_group_invited"),
1134  );
1135  $tut_grp_inv->setInfo(sprintf($this->lng->txt("survey_notification_target_group_invited_info"), $num_inv));
1136  $tut_grp->addOption($tut_grp_inv);
1137  }
1138 
1139 
1140  // reminders
1141 
1142  $info = new ilFormSectionHeaderGUI();
1143  $info->setTitle($this->lng->txt("svy_settings_section_reminders"));
1144  $form->addItem($info);
1145 
1146  $rmd = new ilCheckboxInputGUI($this->lng->txt("survey_reminder_setting"), "rmd");
1147  $rmd->setChecked($this->object->getReminderStatus());
1148  $form->addItem($rmd);
1149 
1150  $rmd_start = new ilDateTimeInputGUI($this->lng->txt("survey_reminder_start"), "rmd_start");
1151  $rmd_start->setRequired(true);
1152  $start = $this->object->getReminderStart();
1153  if ($start) {
1154  $rmd_start->setDate($start);
1155  }
1156  $rmd->addSubItem($rmd_start);
1157 
1158  $end = $this->object->getReminderEnd();
1159  $rmd_end = new ilDateTimeInputGUI($this->lng->txt("survey_reminder_end"), "rmd_end");
1160  if ($end) {
1161  $rmd_end->setDate($end);
1162  }
1163  $rmd->addSubItem($rmd_end);
1164 
1165  $rmd_freq = new ilNumberInputGUI($this->lng->txt("survey_reminder_frequency"), "rmd_freq");
1166  $rmd_freq->setRequired(true);
1167  $rmd_freq->setSize(3);
1168  $rmd_freq->setSuffix($this->lng->txt("survey_reminder_frequency_days"));
1169  $rmd_freq->setValue($this->object->getReminderFrequency());
1170  $rmd_freq->setMinValue(1);
1171  $rmd->addSubItem($rmd_freq);
1172 
1173 
1174  if (!$this->object->get360Mode()) {
1175  $rmd_grp = new ilRadioGroupInputGUI($this->lng->txt("survey_notification_target_group"), "rmd_grp");
1176  $rmd_grp->setRequired(true);
1177  $rmd_grp->setValue($this->object->getReminderTarget());
1178  $rmd->addSubItem($rmd_grp);
1179 
1180  $rmd_grp_crs = new ilRadioOption(
1181  $this->lng->txt("survey_notification_target_group_parent_course"),
1183  );
1184  if (!$has_parent) {
1185  $rmd_grp_crs->setInfo($this->lng->txt("survey_notification_target_group_parent_course_inactive"));
1186  } else {
1187  $rmd_grp_crs->setInfo(sprintf(
1188  $this->lng->txt("survey_notification_target_group_invited_info"),
1189  count($this->object->getNotificationTargetUserIds(false))
1190  ));
1191  }
1192  $rmd_grp->addOption($rmd_grp_crs);
1193 
1194  $rmd_grp_inv = new ilRadioOption(
1195  $this->lng->txt("survey_notification_target_group_invited"),
1197  );
1198  $rmd_grp_inv->setInfo(sprintf($this->lng->txt("survey_notification_target_group_invited_info"), $num_inv));
1199  $rmd_grp->addOption($rmd_grp_inv);
1200 
1201  $mtmpl = $this->object->getReminderMailTemplates();
1202  if ($mtmpl) {
1203  $rmdt = new ilRadioGroupInputGUI($this->lng->txt("svy_reminder_mail_template"), "rmdt");
1204  $rmdt->setRequired(true);
1205  $rmdt->addOption(new ilRadioOption($this->lng->txt("svy_reminder_mail_template_none"), -1));
1206  foreach ($mtmpl as $mtmpl_id => $mtmpl_caption) {
1207  $option = new ilRadioOption($mtmpl_caption, $mtmpl_id);
1208  $rmdt->addOption($option);
1209  }
1210 
1211  $reminderTemplateValue = -1;
1212  if ($this->object->getReminderTemplate()) {
1213  $reminderTemplateValue = $this->object->getReminderTemplate();
1214  }
1215  $rmdt->setValue($reminderTemplateValue);
1216  $rmd->addSubItem($rmdt);
1217  }
1218  } else {
1219  // remind appraisees
1220  $cb = new ilCheckboxInputGUI($this->lng->txt("survey_notification_target_group"), "remind_appraisees");
1221  $cb->setOptionTitle($this->lng->txt("survey_360_appraisees"));
1222  $cb->setInfo($this->lng->txt("survey_360_appraisees_remind_info"));
1223  $cb->setValue("1");
1224  $cb->setChecked(in_array(
1225  $this->object->getReminderTarget(),
1227  ));
1228  $rmd->addSubItem($cb);
1229 
1230  // remind raters
1231  $cb = new ilCheckboxInputGUI("", "remind_raters");
1232  $cb->setOptionTitle($this->lng->txt("survey_360_raters"));
1233  $cb->setInfo($this->lng->txt("survey_360_raters_remind_info"));
1234  $cb->setValue("1");
1235  $cb->setChecked(in_array(
1236  $this->object->getReminderTarget(),
1238  ));
1239  $rmd->addSubItem($cb);
1240  }
1241 
1242 
1243  // results
1244 
1246  $results->setTitle($this->lng->txt("results"));
1247  $form->addItem($results);
1248 
1249  // evaluation access
1250  switch ($this->object->getMode()) {
1251  case ilObjSurvey::MODE_360:
1252  $ts_results = new ilRadioGroupInputGUI($this->lng->txt("survey_360_results"), "ts_res");
1253  $ts_results->setValue($this->object->get360Results());
1254 
1255  $option = new ilRadioOption($this->lng->txt("survey_360_results_none"), ilObjSurvey::RESULTS_360_NONE);
1256  $option->setInfo($this->lng->txt("survey_360_results_none_info"));
1257  $ts_results->addOption($option);
1258 
1259  $option = new ilRadioOption($this->lng->txt("survey_360_results_own"), ilObjSurvey::RESULTS_360_OWN);
1260  $option->setInfo($this->lng->txt("survey_360_results_own_info"));
1261  $ts_results->addOption($option);
1262 
1263  $option = new ilRadioOption($this->lng->txt("survey_360_results_all"), ilObjSurvey::RESULTS_360_ALL);
1264  $option->setInfo($this->lng->txt("survey_360_results_all_info"));
1265  $ts_results->addOption($option);
1266 
1267  $form->addItem($ts_results);
1268  break;
1269 
1271  //check the names of these vars
1272  $evaluation_access = new ilRadioGroupInputGUI($this->lng->txt('evaluation_access'), "self_eval_res");
1273  $evaluation_access->setValue($this->object->getSelfEvaluationResults());
1274 
1275  $option = new ilRadioOption($this->lng->txt("svy_self_ev_access_results_none"), ilObjSurvey::RESULTS_SELF_EVAL_NONE);
1276  $evaluation_access->addOption($option);
1277 
1278  $option = new ilRadioOption($this->lng->txt("svy_self_ev_access_results_own"), ilObjSurvey::RESULTS_SELF_EVAL_OWN);
1279  $evaluation_access->addOption($option);
1280 
1281  $option = new ilRadioOption($this->lng->txt("svy_self_ev_access_results_all"), ilObjSurvey::RESULTS_SELF_EVAL_ALL);
1282  $evaluation_access->addOption($option);
1283 
1284  $form->addItem($evaluation_access);
1285  break;
1286 
1287  default:
1288  $evaluation_access = new ilRadioGroupInputGUI($this->lng->txt('evaluation_access'), "evaluation_access");
1289 
1290  $option = new ilCheckboxOption($this->lng->txt("evaluation_access_off"), ilObjSurvey::EVALUATION_ACCESS_OFF, '');
1291  $option->setInfo($this->lng->txt("svy_evaluation_access_off_info"));
1292  $evaluation_access->addOption($option);
1293 
1294  $option = new ilCheckboxOption($this->lng->txt("evaluation_access_all"), ilObjSurvey::EVALUATION_ACCESS_ALL, '');
1295  $option->setInfo($this->lng->txt("svy_evaluation_access_all_info"));
1296  $evaluation_access->addOption($option);
1297 
1298  $option = new ilCheckboxOption($this->lng->txt("evaluation_access_participants"), ilObjSurvey::EVALUATION_ACCESS_PARTICIPANTS, '');
1299  $option->setInfo($this->lng->txt("svy_evaluation_access_participants_info"));
1300  $evaluation_access->addOption($option);
1301 
1302  $evaluation_access->setValue($this->object->getEvaluationAccess());
1303  $form->addItem($evaluation_access);
1304 
1305  $anonymization_options = new ilRadioGroupInputGUI($this->lng->txt("survey_results_anonymization"), "anonymization_options");
1306 
1307  $option = new ilCheckboxOption($this->lng->txt("survey_results_personalized"), "statpers");
1308  $option->setInfo($this->lng->txt("survey_results_personalized_info"));
1309  $anonymization_options->addOption($option);
1310 
1311  $option = new ilCheckboxOption($this->lng->txt("survey_results_anonymized"), "statanon");
1312  $option->setInfo($this->lng->txt("survey_results_anonymized_info"));
1313  $anonymization_options->addOption($option);
1314  $anonymization_options->setValue($this->object->hasAnonymizedResults()
1315  ? "statanon"
1316  : "statpers");
1317  $form->addItem($anonymization_options);
1318 
1319  $surveySetting = new ilSetting("survey");
1320  if ($surveySetting->get("anonymous_participants", false)) {
1321  $min = "";
1322  if ($surveySetting->get("anonymous_participants_min", 0)) {
1323  $min = " (" . $this->lng->txt("svy_anonymous_participants_min") . ": " .
1324  $surveySetting->get("anonymous_participants_min") . ")";
1325  }
1326 
1327  $anon_list = new ilCheckboxInputGUI($this->lng->txt("svy_anonymous_participants_svy"), "anon_list");
1328  $anon_list->setInfo($this->lng->txt("svy_anonymous_participants_svy_info") . $min);
1329  $anon_list->setChecked($this->object->hasAnonymousUserList());
1330  $option->addSubItem($anon_list);
1331  }
1332 
1333  if ($this->object->_hasDatasets($this->object->getSurveyId())) {
1334  $anonymization_options->setDisabled(true);
1335  if ($anon_list) {
1336  $anon_list->setDisabled(true);
1337  }
1338  }
1339  break;
1340  }
1341 
1342  // competence service activation for 360 mode
1343 
1344  include_once("./Services/Skill/classes/class.ilSkillManagementSettings.php");
1345  $skmg_set = new ilSkillManagementSettings();
1346  $svy_mode = $this->object->getMode();
1347  if (($svy_mode == ilObjSurvey::MODE_360 || $svy_mode == ilObjSurvey::MODE_SELF_EVAL) && $skmg_set->isActivated()) {
1348  $other = new ilFormSectionHeaderGUI();
1349  $other->setTitle($this->lng->txt("other"));
1350  $form->addItem($other);
1351 
1352  $skill_service = new ilCheckboxInputGUI($this->lng->txt("survey_activate_skill_service"), "skill_service");
1353  $skill_service->setInfo($this->lng->txt("survey_activate_skill_service_info"));
1354  $skill_service->setChecked($this->object->getSkillService());
1355  $form->addItem($skill_service);
1356  }
1357 
1358  $position_settings = ilOrgUnitGlobalSettings::getInstance()
1359  ->getObjectPositionSettingsByType($this->object->getType());
1360 
1361  if ($position_settings->isActive()) {
1362  // add additional feature section
1363  $feat = new ilFormSectionHeaderGUI();
1364  $feat->setTitle($this->lng->txt('obj_features'));
1365  $form->addItem($feat);
1366 
1367  // add orgunit settings
1369  $this->object->getId(),
1370  $form,
1371  array(
1373  )
1374  );
1375  }
1376 
1377  $form->addCommandButton("saveProperties", $this->lng->txt("save"));
1378 
1379  // remove items when using template
1380  if ($template_settings) {
1381  foreach ($template_settings as $id => $item) {
1382  if ($item["hide"]) {
1383  if ($id == "enabled_end_date") {
1384  $id = "end_date";
1385  }
1386  if ($id == "enabled_start_date") {
1387  $id = "start_date";
1388  }
1389  $form->removeItemByPostVar($id, true);
1390  }
1391  }
1392  }
1393  return $form;
1394  }
static _lookupName($a_user_id)
lookup user name
This class represents an option in a radio group.
setDataSource($href, $a_delimiter=null)
set datasource link for js autocomplete
This class represents an option in a checkbox group.
const EVALUATION_ACCESS_OFF
$template
This class represents a property form user interface.
const EVALUATION_ACCESS_PARTICIPANTS
This class represents a section header in a property form.
static _hasDatasets($survey_id)
static _getUsedHTMLTags($a_module="")
Returns an array of all allowed HTML tags for text editing.
const NOTIFICATION_APPRAISEES
if(!array_key_exists('StateId', $_REQUEST)) $id
setValue($a_value)
Set Value.
This class represents a checkbox property in a property form.
const IL_CAL_UNIX
setInfo($a_info)
Set Info.
static _getAllReferences($a_id)
get all reference ids of object
This class represents a date/time property in a property form.
$start
Definition: bench.php:8
setInfo($a_info)
Set Information Text.
$section
Definition: Utf8Test.php:83
setChecked($a_checked)
Set Checked.
input GUI for a time span (start and end date)
This class represents a property in a property form.
Class for single dates.
if(isset($_POST['submit'])) $form
const NOTIFICATION_PARENT_COURSE
const RESULTS_SELF_EVAL_OWN
This class represents a number property in a property form.
const NOTIFICATION_APPRAISEES_AND_RATERS
setValue($a_value)
Set Value.
This class represents a text property in a property form.
setDate(ilDateTime $a_date=null)
set date E.g $dt_form->setDate(new ilDateTime(time(),IL_CAL_UTC)); or $dt_form->setDate(new ilDateTim...
& getGeneral()
Definition: class.ilMD.php:40
Date and time handling
setShowTime($a_showtime)
Set Show Time Information.
const NOTIFICATION_INVITED_USERS
$txt
Definition: error.php:11
const EVALUATION_ACCESS_ALL
This class represents a non editable value in a property form.
$results
Definition: svg-scanner.php:47
This class represents a text area property in a property form.
static initServiceSettingsForm($a_obj_id, ilPropertyFormGUI $form, $services)
Init service settings form.
const RESULTS_SELF_EVAL_NONE
const IL_CAL_TIMESTAMP
setOptionTitle($a_optiontitle)
Set Option Title (optional).
$info
Definition: index.php:5
setValue($a_value)
Set Value.
const RESULTS_SELF_EVAL_ALL
Settings template application class.
setRequired($a_required)
Set Required.
setShowTime($a_showtime)
Set Show Time Information.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mailUserResultsObject()

ilObjSurveyGUI::mailUserResultsObject ( )

Definition at line 2265 of file class.ilObjSurveyGUI.php.

References $_POST, $_SESSION, $ilUser, ilObjectGUI\$user, ilUtil\is_email(), and sendUserResultsMail().

2266  {
2267  $ilUser = $this->user;
2268 
2269  $anonymous_code = $_SESSION["anonymous_id"][$this->object->getId()];
2270  $active_id = $this->object->getActiveID($ilUser->getId(), $anonymous_code, 0);
2271  if ($this->object->isSurveyStarted($ilUser->getId(), $anonymous_code) !== 1 ||
2272  !$active_id) {
2273  $this->ctrl->redirect($this, "infoScreen");
2274  }
2275 
2276  $recipient = $_POST["mail"];
2277  if (!$recipient) {
2278  $recipient = $ilUser->getEmail();
2279  }
2280  if (!ilUtil::is_email($recipient)) {
2281  $this->ctrl->redirect($this, "infoScreen");
2282  }
2283 
2284  $this->sendUserResultsMail($active_id, $recipient);
2285 
2286  ilUtil::sendSuccess($this->lng->txt("mail_sent"), true);
2287  $this->ctrl->redirect($this, "infoScreen");
2288  }
$_SESSION["AccountId"]
static is_email($a_email, ilMailRfc822AddressParserFactory $mailAddressParserFactory=null)
This preg-based function checks whether an e-mail address is formally valid.
$ilUser
Definition: imgupload.php:18
sendUserResultsMail($a_active_id, $a_recipient)
$_POST["username"]
+ Here is the call graph for this function:

◆ propertiesObject()

ilObjSurveyGUI::propertiesObject ( ilPropertyFormGUI  $a_form = null)

Display and fill the properties form of the test.

public

Definition at line 1424 of file class.ilObjSurveyGUI.php.

References $help, $message, $tabs, addSubTabs(), ilObjectGUI\checkPermission(), initPropertiesForm(), and ilSettingsTemplate\lookupTitle().

Referenced by savePropertiesObject().

1425  {
1426  $ilTabs = $this->tabs;
1427  $ilHelp = $this->help;
1428 
1429  $this->checkPermission("write");
1430 
1431  $this->addSubTabs('settings');
1432  $ilTabs->activateTab("settings");
1433  $ilTabs->activateSubTab('settings');
1434 
1435  if ($this->object->get360Mode()) {
1436  $ilHelp->setScreenId("settings_360");
1437  }
1438 
1439  if (!$a_form) {
1440  $a_form = $this->initPropertiesForm();
1441  }
1442 
1443  // using template?
1444  $message = "";
1445  if ($this->object->getTemplate()) {
1446  $link = $this->ctrl->getLinkTarget($this, "confirmResetTemplate");
1447  $link = "<a href=\"" . $link . "\">" . $this->lng->txt("survey_using_template_link") . "</a>";
1448  $message = "<div style=\"margin-top:10px\">" .
1449  $this->tpl->getMessageHTML(sprintf(
1450  $this->lng->txt("survey_using_template"),
1451  ilSettingsTemplate::lookupTitle($this->object->getTemplate()),
1452  $link
1453  ), "info") . // #10651
1454  "</div>";
1455  }
1456 
1457  $this->tpl->setContent($a_form->getHTML() . $message);
1458  }
catch(Exception $e) $message
static lookupTitle($a_id)
Lookup title.
addSubTabs($a_section)
Add subtabs for tabs.
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission and redirect on error.
initPropertiesForm()
Init survey settings form.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ resetTemplateObject()

ilObjSurveyGUI::resetTemplateObject ( )

Enable all settings - remove template.

Definition at line 1496 of file class.ilObjSurveyGUI.php.

1497  {
1498  $this->object->setTemplate(null);
1499  $this->object->saveToDB();
1500 
1501  ilUtil::sendSuccess($this->lng->txt("survey_template_reset"), true);
1502  $this->ctrl->redirect($this, "properties");
1503  }

◆ savePropertiesObject()

ilObjSurveyGUI::savePropertiesObject ( )

Save the survey properties.

Save the survey properties

private

Definition at line 545 of file class.ilObjSurveyGUI.php.

References $_POST, $_SESSION, $current, $end, $form, ilObjectGUI\$object_service, $rbacsystem, $start, $template, $valid, ilObjSurvey\_hasDatasets(), ilObjUser\_lookupId(), ilObjSurvey\ANONYMIZE_CODE_ALL, ilObjSurvey\ANONYMIZE_FREEACCESS, ilObjSurvey\ANONYMIZE_OFF, ilObjSurvey\ANONYMIZE_ON, ilMD\getGeneral(), IL_CAL_DATETIME, IL_CAL_UNIX, initPropertiesForm(), ilObjSurvey\MODE_360, ilObjSurvey\MODE_SELF_EVAL, ilObjSurvey\NOTIFICATION_APPRAISEES, ilObjSurvey\NOTIFICATION_APPRAISEES_AND_RATERS, ilObjSurvey\NOTIFICATION_RATERS, ilObjectServiceSettingsGUI\ORGU_POSITION_ACCESS, propertiesObject(), ilUtil\sendFailure(), ilUtil\stripSlashes(), ilMDBase\update(), and ilObjectServiceSettingsGUI\updateServiceSettingsForm().

546  {
548  $obj_service = $this->object_service;
549 
550  $form = $this->initPropertiesForm();
551  if ($form->checkInput()) {
552  $valid = true;
553 
554  if (!$this->object->get360Mode()) {
555  if ($form->getInput("tut")) {
556  // check if given "tutors" have write permission
557  $tut_ids = array();
558  $tut_logins = $form->getInput("tut_ids");
559  foreach ($tut_logins as $tut_login) {
560  $tut_id = ilObjUser::_lookupId($tut_login);
561  if ($tut_id && $rbacsystem->checkAccessOfUser($tut_id, "write", $this->object->getRefId())) {
562  $tut_ids[] = $tut_id;
563  }
564  }
565  if (!$tut_ids) {
566  $tut_ids = $form->getItemByPostVar("tut_ids");
567  $tut_ids->setAlert($this->lng->txt("survey_notification_tutor_recipients_invalid"));
568  $valid = false;
569  }
570  }
571  }
572 
573  if ($valid) {
574  if ($form->getInput("rmd")) {
575  $rmd_start = $form->getItemByPostVar("rmd_start")->getDate();
576  $rmd_end = $form->getItemByPostVar("rmd_end")->getDate();
577  if ($rmd_end) {
578  if ($rmd_start->get(IL_CAL_UNIX) > $rmd_end->get(IL_CAL_UNIX)) {
579  $tmp = $rmd_start;
580  $rmd_start = $rmd_end;
581  $rmd_end = $tmp;
582  }
583  }
584  $this->object->setReminderStatus(true);
585  $this->object->setReminderStart($rmd_start);
586  $this->object->setReminderEnd($rmd_end);
587  $this->object->setReminderFrequency($form->getInput("rmd_freq"));
588  if (!$this->object->get360Mode()) {
589  $this->object->setReminderTarget($form->getInput("rmd_grp"));
590  $this->object->setReminderTemplate(($form->getInput("rmdt") > 0)
591  ? $form->getInput("rmdt")
592  : null);
593  } else {
594  if ($form->getInput("remind_appraisees") && $form->getInput("remind_raters")) {
595  $this->object->setReminderTarget(ilObjSurvey::NOTIFICATION_APPRAISEES_AND_RATERS);
596  } elseif ($form->getInput("remind_appraisees")) {
597  $this->object->setReminderTarget(ilObjSurvey::NOTIFICATION_APPRAISEES);
598  } elseif ($form->getInput("remind_raters")) {
599  $this->object->setReminderTarget(ilObjSurvey::NOTIFICATION_RATERS);
600  } else {
601  $this->object->setReminderTarget(0);
602  }
603  }
604  } else {
605  $this->object->setReminderStatus(false);
606  }
607 
608  if (!$this->object->get360Mode()) {
609  if ($form->getInput("tut")) {
610  $this->object->setTutorNotificationStatus(true);
611  $this->object->setTutorNotificationRecipients($tut_ids); // see above
612  $this->object->setTutorNotificationTarget($form->getInput("tut_grp"));
613  } else {
614  $this->object->setTutorNotificationStatus(false);
615  }
616  }
617 
618  // #10055
619  if ($_POST['online'] && count($this->object->questions) == 0) {
620  $_POST['online'] = null;
621  ilUtil::sendFailure($this->lng->txt("cannot_switch_to_online_no_questions"), true);
622  }
623 
624  $template_settings = null;
625  $template = $this->object->getTemplate();
626  if ($template) {
627  include_once "Services/Administration/classes/class.ilSettingsTemplate.php";
629  $template_settings = $template->getSettings();
630  }
631 
632  include_once 'Services/MetaData/classes/class.ilMD.php';
633  $md_obj = new ilMD($this->object->getId(), 0, "svy");
634  $md_section = $md_obj->getGeneral();
635 
636  // title
637  $md_section->setTitle(ilUtil::stripSlashes($_POST['title']));
638  $md_section->update();
639 
640  // Description
641  $md_desc_ids = $md_section->getDescriptionIds();
642  if ($md_desc_ids) {
643  $md_desc = $md_section->getDescription(array_pop($md_desc_ids));
644  $md_desc->setDescription(ilUtil::stripSlashes($_POST['description']));
645  $md_desc->update();
646  }
647 
648  $this->object->setViewOwnResults($_POST["view_own"]);
649  $this->object->setMailOwnResults($_POST["mail_own"]);
650  $this->object->setMailConfirmation($_POST["mail_confirm"]);
651 
652  // both are saved in object, too
653  $this->object->setTitle(ilUtil::stripSlashes($_POST['title']));
654  $this->object->setDescription(ilUtil::stripSlashes($_POST['description']));
655  $this->object->setOfflineStatus((bool) !$_POST['online']);
656  $this->object->update();
657 
658  // activation
659  $period = $form->getItemByPostVar("access_period");
660  if ($period->getStart() && $period->getEnd()) {
661  $this->object->setActivationLimited(true);
662  $this->object->setActivationVisibility($_POST["access_visiblity"]);
663  $this->object->setActivationStartDate($period->getStart()->get(IL_CAL_UNIX));
664  $this->object->setActivationEndDate($period->getEnd()->get(IL_CAL_UNIX));
665  } else {
666  $this->object->setActivationLimited(false);
667  }
668 
669  // tile image
670  $obj_service->commonSettings()->legacyForm($form, $this->object)->saveTileImage();
671 
672 
673  if (!$template_settings["enabled_start_date"]["hide"]) {
674  $start = $form->getItemByPostVar("start_date");
675  if ($start->getDate()) {
676  $datetime = explode(" ", $start->getDate()->get(IL_CAL_DATETIME));
677  $this->object->setStartDateAndTime($datetime[0], $datetime[1]);
678  } else {
679  $this->object->setStartDate(null);
680  }
681  }
682 
683  if (!$template_settings["enabled_end_date"]["hide"]) {
684  $end = $form->getItemByPostVar("end_date");
685  if ($end->getDate()) {
686  $datetime = explode(" ", $end->getDate()->get(IL_CAL_DATETIME));
687  $this->object->setEndDateAndTime($datetime[0], $datetime[1]);
688  } else {
689  $this->object->setEndDate(null);
690  }
691  }
692 
693 
694  include_once "./Services/AdvancedEditing/classes/class.ilObjAdvancedEditing.php";
695  $introduction = $_POST["introduction"];
696  $this->object->setIntroduction($introduction);
697  $outro = $_POST["outro"];
698  $this->object->setOutro($outro);
699 
700  if (!$template_settings["show_question_titles"]["hide"]) {
701  $this->object->setShowQuestionTitles($_POST["show_question_titles"]);
702  }
703 
704  if (!$template_settings["use_pool"]["hide"]) {
705  $this->object->setPoolUsage($_POST["use_pool"]);
706  }
707 
708  $this->object->setMailNotification($_POST['mailnotification']);
709  $this->object->setMailAddresses($_POST['mailaddresses']);
710  $this->object->setMailParticipantData($_POST['mailparticipantdata']);
711 
712  switch ($this->object->getMode()) {
714  $this->object->set360SelfEvaluation((bool) $_POST["self_eval"]);
715  $this->object->set360SelfAppraisee((bool) $_POST["self_appr"]);
716  $this->object->set360SelfRaters((bool) $_POST["self_rate"]);
717  $this->object->set360Results((int) $_POST["ts_res"]);;
718  $this->object->setSkillService((int) $_POST["skill_service"]);
719  break;
721  $this->object->setSelfEvaluationResults($_POST["self_eval_res"]);
722  $this->object->setSkillService((int) $_POST["skill_service"]);
723  break;
724  default:
725  if (!$template_settings["evaluation_access"]["hide"]) {
726  $this->object->setEvaluationAccess($_POST["evaluation_access"]);
727  }
728 
729  $hasDatasets = ilObjSurvey::_hasDatasets($this->object->getSurveyId());
730  if (!$hasDatasets) {
731  $hide_codes = $template_settings["acc_codes"]["hide"];
732  $hide_anon = $template_settings["anonymization_options"]["hide"];
733  if (!$hide_codes || !$hide_anon) {
734  $current = $this->object->getAnonymize();
735 
736  // get current setting if property is hidden
737  if (!$hide_codes) {
738  $codes = (bool) $_POST["acc_codes"];
739  } else {
742  }
743  if (!$hide_anon) {
744  $anon = ((string) $_POST["anonymization_options"] == "statanon");
745  } else {
748  }
749 
750  // parse incoming values
751  if (!$anon) {
752  if (!$codes) {
753  $this->object->setAnonymize(ilObjSurvey::ANONYMIZE_OFF);
754  } else {
755  $this->object->setAnonymize(ilObjSurvey::ANONYMIZE_CODE_ALL);
756  }
757  } else {
758  if ($codes) {
759  $this->object->setAnonymize(ilObjSurvey::ANONYMIZE_ON);
760  } else {
761  $this->object->setAnonymize(ilObjSurvey::ANONYMIZE_FREEACCESS);
762  }
763 
764  $this->object->setAnonymousUserList($_POST["anon_list"]);
765  }
766 
767  // if settings were changed get rid of existing code
768  unset($_SESSION["anonymous_id"][$this->object->getId()]);
769  }
770  }
771  break;
772  }
773 
774  $this->object->saveToDb();
775 
777  $this->object->getId(),
778  $form,
779  array(
781  )
782  );
783 
784  if (strcmp($_SESSION["info"], "") != 0) {
785  ilUtil::sendSuccess($_SESSION["info"] . "<br />" . $this->lng->txt("settings_saved"), true);
786  } else {
787  ilUtil::sendSuccess($this->lng->txt("settings_saved"), true);
788  }
789  $this->ctrl->redirect($this, "properties");
790  } else {
791  // #16714
792  ilUtil::sendFailure($this->lng->txt("form_input_not_valid"));
793  }
794  }
795 
796  $form->setValuesByPost();
797  $this->propertiesObject($form);
798  }
const IL_CAL_DATETIME
$_SESSION["AccountId"]
$template
static _hasDatasets($survey_id)
$valid
const NOTIFICATION_APPRAISEES
static _lookupId($a_user_str)
Lookup id by login.
const IL_CAL_UNIX
$start
Definition: bench.php:8
if(isset($_POST['submit'])) $form
const ANONYMIZE_FREEACCESS
const NOTIFICATION_APPRAISEES_AND_RATERS
& getGeneral()
Definition: class.ilMD.php:40
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
static updateServiceSettingsForm($a_obj_id, ilPropertyFormGUI $form, $services)
Update service settings.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
propertiesObject(ilPropertyFormGUI $a_form=null)
Display and fill the properties form of the test.
const ANONYMIZE_CODE_ALL
$_POST["username"]
Settings template application class.
initPropertiesForm()
Init survey settings form.
+ Here is the call graph for this function:

◆ sendUserResultsMail()

ilObjSurveyGUI::sendUserResultsMail (   $a_active_id,
  $a_recipient 
)

Definition at line 2225 of file class.ilObjSurveyGUI.php.

References $ilUser, ilObjectGUI\$user, ilMail\_getInstallationSignature(), ilLink\_getLink(), ilDatePresentation\formatDate(), ilMail\getSalutation(), getUserResultsPlain(), and IL_CAL_UNIX.

Referenced by mailUserResultsObject().

2226  {
2227  $ilUser = $this->user;
2228 
2229  $finished = $this->object->getSurveyParticipants(array($a_active_id));
2230  $finished = array_pop($finished);
2231  $finished = ilDatePresentation::formatDate(new ilDateTime($finished["finished_tstamp"], IL_CAL_UNIX));
2232 
2233  require_once "Services/Mail/classes/class.ilMail.php";
2234  require_once "Services/Link/classes/class.ilLink.php";
2235 
2236  $body = ilMail::getSalutation($ilUser->getId()) . "\n\n";
2237  $body .= $this->lng->txt("svy_mail_own_results_body") . "\n";
2238  $body .= "\n" . $this->lng->txt("obj_svy") . ": " . $this->object->getTitle() . "\n";
2239  $body .= ilLink::_getLink($this->object->getRefId(), "svy") . "\n";
2240  $body .= "\n" . $this->lng->txt("survey_results_finished") . ": " . $finished . "\n\n";
2241 
2242  if ($this->object->hasMailOwnResults()) {
2243  $subject = "svy_mail_own_results_subject";
2244  $body .= $this->getUserResultsPlain($a_active_id);
2245  } else {
2246  $subject = "svy_mail_confirmation_subject";
2247  }
2248 
2249  // $body .= ilMail::_getAutoGeneratedMessageString($this->lng);
2251 
2252  require_once "Services/Mail/classes/class.ilMail.php";
2253  $mail = new ilMail(ANONYMOUS_USER_ID);
2254  $mail->sendMimeMail(
2255  $a_recipient,
2256  null,
2257  null,
2258  sprintf($this->lng->txt($subject), $this->object->getTitle()),
2259  $body,
2260  null,
2261  true
2262  );
2263  }
getUserResultsPlain($a_active_id)
const IL_CAL_UNIX
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date public.
Date and time handling
$ilUser
Definition: imgupload.php:18
static _getInstallationSignature()
static getSalutation($a_usr_id, ilLanguage $a_language=null)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ viewUserResultsObject()

ilObjSurveyGUI::viewUserResultsObject ( )
protected

Definition at line 2106 of file class.ilObjSurveyGUI.php.

References $_SESSION, $html, $ilUser, $tabs, ilObjectGUI\$tpl, ilObjectGUI\$user, and getUserResultsTable().

2107  {
2108  $ilUser = $this->user;
2109  $tpl = $this->tpl;
2110  $ilTabs = $this->tabs;
2111 
2112  $anonymous_code = $_SESSION["anonymous_id"][$this->object->getId()];
2113  $active_id = $this->object->getActiveID($ilUser->getId(), $anonymous_code, 0);
2114  if ($this->object->isSurveyStarted($ilUser->getId(), $anonymous_code) !== 1 ||
2115  !$active_id) {
2116  $this->ctrl->redirect($this, "infoScreen");
2117  }
2118 
2119  $ilTabs->clearTargets();
2120  $ilTabs->setBackTarget(
2121  $this->lng->txt("btn_back"),
2122  $this->ctrl->getLinkTarget($this, "infoScreen")
2123  );
2124 
2125  $html = $this->getUserResultsTable($active_id);
2126  $tpl->setContent($html);
2127  }
$_SESSION["AccountId"]
$ilUser
Definition: imgupload.php:18
getUserResultsTable($a_active_id)
$html
Definition: example_001.php:87
+ Here is the call graph for this function:

Field Documentation

◆ $help

ilObjSurveyGUI::$help
protected

Definition at line 39 of file class.ilObjSurveyGUI.php.

Referenced by getTabs(), and propertiesObject().

◆ $log

ilObjSurveyGUI::$log
protected

Definition at line 49 of file class.ilObjSurveyGUI.php.

◆ $nav_history

ilObjSurveyGUI::$nav_history
protected

Definition at line 29 of file class.ilObjSurveyGUI.php.

Referenced by executeCommand().

◆ $rbacsystem

ilObjSurveyGUI::$rbacsystem
protected

Definition at line 44 of file class.ilObjSurveyGUI.php.

Referenced by savePropertiesObject().

◆ $tabs

ilObjSurveyGUI::$tabs
protected

The documentation for this class was generated from the following file: