ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
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...
 
 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...
 
 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...
 

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)
 
- Protected Member Functions inherited from ilObjectGUI
 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...
 
 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...
 
 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

 $log
 
- Protected Attributes inherited from ilObjectGUI
 $tmp_import_dir
 
 $tabs_gui = null
 
 $ctrl
 

Additional Inherited Members

- Data Fields inherited from ilObjectGUI
const COPY_WIZARD_NEEDS_PAGE = 1
 
 $ilias
 
 $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 30 of file class.ilObjSurveyGUI.php.

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

31  {
32  global $lng, $ilCtrl;
33 
34  $this->type = "svy";
35  $lng->loadLanguageModule("survey");
36  $this->ctrl = $ilCtrl;
37  $this->ctrl->saveParameter($this, "ref_id");
38 
39  $this->log = ilLoggerFactory::getLogger("svy");
40 
41  parent::__construct("", (int)$_GET["ref_id"], true, false);
42  }
$_GET["client_id"]
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 1958 of file class.ilObjSurveyGUI.php.

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

1959  {
1960  global $ilAccess, $lng;
1961 
1962  // see ilObjSurveyAccess::_checkGoto()
1963  if (strlen($a_access_code))
1964  {
1965  $_SESSION["anonymous_id"][ilObject::_lookupObjId($a_target)] = $a_access_code;
1966  $_GET["baseClass"] = "ilObjSurveyGUI";
1967  $_GET["cmd"] = "infoScreen";
1968  $_GET["ref_id"] = $a_target;
1969  include("ilias.php");
1970  exit;
1971  }
1972 
1973  if ($ilAccess->checkAccess("visible", "", $a_target) ||
1974  $ilAccess->checkAccess("read", "", $a_target))
1975  {
1976  $_GET["baseClass"] = "ilObjSurveyGUI";
1977  $_GET["cmd"] = "infoScreen";
1978  $_GET["ref_id"] = $a_target;
1979  include("ilias.php");
1980  exit;
1981  }
1982  else if ($ilAccess->checkAccess("read", "", ROOT_FOLDER_ID))
1983  {
1984  ilUtil::sendFailure(sprintf($lng->txt("msg_no_perm_read_item"),
1985  ilObject::_lookupTitle(ilObject::_lookupObjId($a_target))), true);
1987  }
1988  }
$_SESSION["AccountId"]
$_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.
+ Here is the call graph for this function:

◆ addDidacticTemplateOptions()

ilObjSurveyGUI::addDidacticTemplateOptions ( array $a_options)
protected

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

References array, and ilSettingsTemplate\getAllSettingsTemplates().

256  {
257  include_once "Services/Administration/classes/class.ilSettingsTemplate.php";
259  if($templates)
260  {
261  foreach($templates as $item)
262  {
263  $a_options["svytpl_".$item["id"]] = array($item["title"],
264  nl2br(trim($item["description"])));
265  }
266  }
267 
268  // JF, 2013-06-10
269  $a_options["svy360_1"] = array($this->lng->txt("survey_360_mode"),
270  $this->lng->txt("survey_360_mode_info"));
271  }
static getAllSettingsTemplates($a_type, $a_include_auto_generated=false)
Get all settings templates of type.
Create styles array
The data for the language used.
+ Here is the call graph for this function:

◆ addLocatorItems()

ilObjSurveyGUI::addLocatorItems ( )

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

References $_GET, SurveyQuestion\_getQuestionType(), SurveyQuestion\_getTitle(), array, and object.

1906  {
1907  global $ilLocator;
1908  switch ($this->ctrl->getCmd())
1909  {
1910  case "next":
1911  case "previous":
1912  case "start":
1913  case "resume":
1914  case "redirectQuestion":
1915  $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, "infoScreen"), "", $_GET["ref_id"]);
1916  break;
1917  case "evaluation":
1918  case "checkEvaluationAccess":
1919  case "evaluationdetails":
1920  case "evaluationuser":
1921  $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTargetByClass("ilsurveyevaluationgui", "evaluation"), "", $_GET["ref_id"]);
1922  break;
1923  case "create":
1924  case "save":
1925  case "cancel":
1926  case "importSurvey":
1927  case "cloneAll":
1928  break;
1929  case "infoScreen":
1930  $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, "infoScreen"), "", $_GET["ref_id"]);
1931  break;
1932  default:
1933  $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, "infoScreen"), "", $_GET["ref_id"]);
1934 
1935  // this has to be done here because ilSurveyEditorGUI is called after finalizing the locator
1936  if ((int)$_GET["q_id"] && !(int)$_REQUEST["new_for_survey"])
1937  {
1938  // not on create
1939  // see ilObjSurveyQuestionPool::addLocatorItems
1940  $q_id = (int)$_GET["q_id"];
1941  include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
1942  $q_type = SurveyQuestion::_getQuestionType($q_id)."GUI";
1943  $this->ctrl->setParameterByClass($q_type, "q_id", $q_id);
1944  $ilLocator->addItem(SurveyQuestion::_getTitle($q_id),
1945  $this->ctrl->getLinkTargetByClass(array("ilSurveyEditorGUI", $q_type), "editQuestion"));
1946  }
1947  break;
1948  }
1949  }
$_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.
Create styles array
The data for the language used.
Create new PHPExcel object
obj_idprivate
+ Here is the call graph for this function:

◆ afterSave()

ilObjSurveyGUI::afterSave ( ilObject  $a_new_object)

save object public

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

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

278  {
279  // #16446
280  $a_new_object->loadFromDb();
281 
282  $tpl = $this->getDidacticTemplateVar("svytpl");
283  if($tpl)
284  {
285  $a_new_object->applySettingsTemplate($tpl);
286  }
287 
288  $a_new_object->set360Mode((bool)$this->getDidacticTemplateVar("svy360"));
289  if($a_new_object->get360Mode())
290  {
291  // this should rather be ilObjSurvey::ANONYMIZE_ON - see ilObjSurvey::getUserDataFromActiveId()
292  $a_new_object->setAnonymize(ilObjSurvey::ANONYMIZE_CODE_ALL);
293  $a_new_object->setEvaluationAccess(ilObjSurvey::EVALUATION_ACCESS_PARTICIPANTS);
294  }
295  $a_new_object->saveToDB();
296 
297  // always send a message
298  ilUtil::sendSuccess($this->lng->txt("object_added"),true);
299  ilUtil::redirect("ilias.php?baseClass=ilObjSurveyGUI&ref_id=".
300  $a_new_object->getRefId()."&cmd=properties");
301  }
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
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)
http redirect to other script
+ Here is the call graph for this function:

◆ confirmResetTemplateObject()

ilObjSurveyGUI::confirmResetTemplateObject ( )

Enable all settings - Confirmation.

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

References ilUtil\sendQuestion().

1358  {
1359  ilUtil::sendQuestion($this->lng->txt("survey_confirm_template_reset"));
1360  $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_svy_svy_confirm_resettemplate.html", "Modules/Survey");
1361  $this->tpl->setCurrentBlock("adm_content");
1362  $this->tpl->setVariable("BTN_CONFIRM_REMOVE", $this->lng->txt("confirm"));
1363  $this->tpl->setVariable("BTN_CANCEL_REMOVE", $this->lng->txt("cancel"));
1364  $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this, "resetTemplateObject"));
1365  $this->tpl->parseCurrentBlock();
1366  }
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 1334 of file class.ilObjSurveyGUI.php.

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

1335  {
1336  $fields = array('login','firstname','lastname','email');
1337 
1338  include_once './Services/User/classes/class.ilUserAutoComplete.php';
1339  $auto = new ilUserAutoComplete();
1340  $auto->setSearchFields($fields);
1341  $auto->setResultField('login');
1342  $auto->enableFieldSearchableCheck(true);
1343  $auto->setMoreLinkAvailable(true);
1344 
1345  if(($_REQUEST['fetchall']))
1346  {
1347  $auto->setLimit(ilUserAutoComplete::MAX_ENTRIES);
1348  }
1349 
1350  echo $auto->getList(ilUtil::stripSlashes($_REQUEST['term']));
1351  exit();
1352  }
Auto completion class for user lists.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
Create styles array
The data for the language used.
+ 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 247 of file class.ilObjSurveyGUI.php.

248  {
249  include_once("./Modules/Survey/classes/class.ilSurveyEvaluationGUI.php");
250  $eval_gui = new ilSurveyEvaluationGUI($this->object);
251  $this->ctrl->setCmdClass(get_class($eval_gui));
252  $this->ctrl->redirect($eval_gui, "evaluation");
253  }
Survey evaluation graphical output.

◆ executeCommand()

ilObjSurveyGUI::executeCommand ( )

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

References $_GET, $_SESSION, $cmd, $info, ilObjectGUI\addHeaderAction(), array, ilObjectGUI\checkPermission(), ilObjectGUI\checkPermissionBool(), ilObjectGUI\getCreationMode(), ilCommonActionDispatcherGUI\getInstanceFromAjaxCall(), ilUtil\getStyleSheetLocation(), infoScreen(), ilLearningProgressBaseGUI\LP_CONTEXT_REPOSITORY, object, ilObjectGUI\prepareOutput(), and ilObjSurvey\validateExternalRaterCode().

45  {
46  global $ilNavigationHistory, $ilTabs;
47 
48  $this->external_rater_360 = false;
49  if(!$this->creation_mode &&
50  $this->object->get360Mode() &&
51  $_SESSION["anonymous_id"][$this->object->getId()] &&
53  $_SESSION["anonymous_id"][$this->object->getId()]))
54  {
55  $this->external_rater_360 = true;
56  }
57 
58  if(!$this->external_rater_360)
59  {
60  if (!$this->checkPermissionBool("visible") &&
61  !$this->checkPermissionBool("read"))
62  {
63  $this->checkPermission("read");
64  }
65 
66  // add entry to navigation history
67  if (!$this->getCreationMode() &&
68  $this->checkPermissionBool("read"))
69  {
70  $this->ctrl->setParameterByClass("ilobjsurveygui", "ref_id", $this->ref_id);
71  $link = $this->ctrl->getLinkTargetByClass("ilobjsurveygui", "");
72  $ilNavigationHistory->addItem($this->ref_id, $link, "svy");
73  }
74  }
75 
76  $cmd = $this->ctrl->getCmd("properties");
77 
78  // workaround for bug #6288, needs better solution
79  if ($cmd == "saveTags")
80  {
81  $this->ctrl->setCmdClass("ilinfoscreengui");
82  }
83 
84  // deep link from repository - "redirect" to page view
85  if(!$this->ctrl->getCmdClass() && $cmd == "questionsrepo")
86  {
87  $_REQUEST["pgov"] = 1;
88  $this->ctrl->setCmd("questions");
89  $this->ctrl->setCmdClass("ilsurveyeditorgui");
90  }
91 
92  $next_class = $this->ctrl->getNextClass($this);
93  $this->ctrl->setReturn($this, "properties");
94  $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "survey.css", "Modules/Survey"), "screen");
95  $this->prepareOutput();
96 
97  $this->log->debug("next_class= $next_class");
98  switch($next_class)
99  {
100  case "ilinfoscreengui":
101  if(!in_array($this->ctrl->getCmdClass(),
102  array('ilpublicuserprofilegui', 'ilobjportfoliogui')))
103  {
104  $this->addHeaderAction();
105  $this->infoScreen(); // forwards command
106  }
107  else
108  {
109  // #16891
110  $ilTabs->clearTargets();
111  include_once("./Services/InfoScreen/classes/class.ilInfoScreenGUI.php");
112  $info = new ilInfoScreenGUI($this);
113  $this->ctrl->forwardCommand($info);
114  }
115  break;
116 
117  case 'ilobjectmetadatagui':
118  $this->checkPermission("write");
119  $ilTabs->activateTab("meta_data");
120  $this->addHeaderAction();
121  include_once 'Services/Object/classes/class.ilObjectMetaDataGUI.php';
122  $md_gui = new ilObjectMetaDataGUI($this->object);
123  $this->ctrl->forwardCommand($md_gui);
124  break;
125 
126  case "ilsurveyevaluationgui":
127  $ilTabs->activateTab("svy_results");
128  $this->addHeaderAction();
129  include_once("./Modules/Survey/classes/class.ilSurveyEvaluationGUI.php");
130  $eval_gui = new ilSurveyEvaluationGUI($this->object);
131  $this->ctrl->forwardCommand($eval_gui);
132  break;
133 
134  case "ilsurveyexecutiongui":
135  $ilTabs->clearTargets();
136  include_once("./Modules/Survey/classes/class.ilSurveyExecutionGUI.php");
137  $exec_gui = new ilSurveyExecutionGUI($this->object);
138  $this->ctrl->forwardCommand($exec_gui);
139  break;
140 
141  case 'ilpermissiongui':
142  $ilTabs->activateTab("perm_settings");
143  $this->addHeaderAction();
144  include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
145  $perm_gui = new ilPermissionGUI($this);
146  $this->ctrl->forwardCommand($perm_gui);
147  break;
148 
149  case 'ilobjectcopygui':
150  include_once './Services/Object/classes/class.ilObjectCopyGUI.php';
151  $cp = new ilObjectCopyGUI($this);
152  $cp->setType('svy');
153  $this->ctrl->forwardCommand($cp);
154  break;
155 
156  case "ilcommonactiondispatchergui":
157  include_once("Services/Object/classes/class.ilCommonActionDispatcherGUI.php");
159  $this->ctrl->forwardCommand($gui);
160  break;
161 
162  // 360, skill service
163  case 'ilsurveyskillgui':
164  $ilTabs->activateTab("survey_competences");
165  include_once("./Modules/Survey/classes/class.ilSurveySkillGUI.php");
166  $gui = new ilSurveySkillGUI($this->object);
167  $this->ctrl->forwardCommand($gui);
168  break;
169 
170  case 'ilsurveyskilldeterminationgui':
171  $ilTabs->activateTab("maintenance");
172  include_once("./Modules/Survey/classes/class.ilSurveySkillDeterminationGUI.php");
173  $gui = new ilSurveySkillDeterminationGUI($this->object);
174  $this->ctrl->forwardCommand($gui);
175  break;
176 
177  case 'ilsurveyeditorgui':
178  $this->checkPermission("write");
179  $ilTabs->activateTab("survey_questions");
180  include_once("./Modules/Survey/classes/class.ilSurveyEditorGUI.php");
181  $gui = new ilSurveyEditorGUI($this);
182  $this->ctrl->forwardCommand($gui);
183  break;
184 
185  case 'ilsurveyconstraintsgui':
186  $this->checkPermission("write");
187  $ilTabs->activateTab("constraints");
188  include_once("./Modules/Survey/classes/class.ilSurveyConstraintsGUI.php");
189  $gui = new ilSurveyConstraintsGUI($this);
190  $this->ctrl->forwardCommand($gui);
191  break;
192 
193  case 'ilsurveyparticipantsgui':
194  if(!$this->object->get360Mode())
195  {
196  $ilTabs->activateTab("maintenance");
197  }
198  else
199  {
200  $ilTabs->activateTab("survey_360_appraisees");
201  }
202  include_once("./Modules/Survey/classes/class.ilSurveyParticipantsGUI.php");
203  $gui = new ilSurveyParticipantsGUI($this, $this->checkPermissionBool("write"));
204  $this->ctrl->forwardCommand($gui);
205  break;
206 
207  case "illearningprogressgui":
208  $ilTabs->activateTab("learning_progress");
209  include_once("./Services/Tracking/classes/class.ilLearningProgressGUI.php");
211  $this->object->getRefId());
212  $this->ctrl->forwardCommand($new_gui);
213  break;
214 
215  case 'ilexportgui':
216  $ilTabs->activateTab("export");
217  include_once("./Services/Export/classes/class.ilExportGUI.php");
218  $exp_gui = new ilExportGUI($this);
219  $exp_gui->addFormat("xml");
220  $this->ctrl->forwardCommand($exp_gui);
221  break;
222 
223  default:
224  $this->addHeaderAction();
225  $cmd.= "Object";
226 
227  $this->log->debug("Default cmd= $cmd");
228 
229  $this->$cmd();
230  break;
231  }
232 
233  if (strtolower($_GET["baseClass"]) != "iladministrationgui" &&
234  $this->getCreationMode() != true)
235  {
236  $this->tpl->show();
237  }
238  }
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.
$cmd
Definition: sahs_server.php:35
Export User Interface Class.
$info
Definition: example_052.php:80
prepareOutput($a_show_subobjects=true)
prepare output
Survey execution graphical output.
infoScreen()
show information screen
Create styles array
The data for the language used.
Create new PHPExcel object
obj_idprivate
getCreationMode()
get creation mode
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.
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
+ 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 308 of file class.ilObjSurveyGUI.php.

References $ilUser, ilObjSurveyAccess\_hasEvaluationAccess(), array, ilLearningProgressAccess\checkAccess(), ilObjectGUI\checkPermissionBool(), and object.

309  {
310  global $ilUser, $ilHelp;
311 
312  if($this->object instanceof ilObjSurveyQuestionPool)
313  {
314  return true;
315  }
316 
317  $ilHelp->setScreenIdComponent("svy");
318 
319  $hidden_tabs = array();
320  $template = $this->object->getTemplate();
321  if($template)
322  {
323  include_once "Services/Administration/classes/class.ilSettingsTemplate.php";
324  $template = new ilSettingsTemplate($template);
325  $hidden_tabs = $template->getHiddenTabs();
326  }
327 
328  if ($this->checkPermissionBool("write"))
329  {
330  $this->tabs_gui->addTab("survey_questions",
331  $this->lng->txt("survey_questions"),
332  $this->ctrl->getLinkTargetByClass(array("ilsurveyeditorgui", "ilsurveypagegui"), "renderPage"));
333  }
334 
335  if ($this->checkPermissionBool("read"))
336  {
337  $this->tabs_gui->addTab("info_short",
338  $this->lng->txt("info_short"),
339  $this->ctrl->getLinkTarget($this,'infoScreen'));
340  }
341 
342  // properties
343  if ($this->checkPermissionBool("write"))
344  {
345  $this->tabs_gui->addTab("settings",
346  $this->lng->txt("settings"),
347  $this->ctrl->getLinkTarget($this,'properties'));
348  }
349  else if ($this->checkPermissionBool("read"))
350  {
351  if($this->object->get360Mode() &&
352  $this->object->get360SelfRaters() &&
353  $this->object->isAppraisee($ilUser->getId()) &&
354  !$this->object->isAppraiseeClosed($ilUser->getId()))
355  {
356  $this->tabs_gui->addTab("survey_360_edit_raters",
357  $this->lng->txt("survey_360_edit_raters"),
358  $this->ctrl->getLinkTargetByClass('ilsurveyparticipantsgui','editRaters'));
359 
360  // :TODO: mail to raters
361  }
362  }
363 
364  // questions
365  if ($this->checkPermissionBool("write") &&
366  !in_array("constraints", $hidden_tabs) &&
367  !$this->object->get360Mode())
368  {
369  // constraints
370  $this->tabs_gui->addTab("constraints",
371  $this->lng->txt("constraints"),
372  $this->ctrl->getLinkTargetByClass("ilsurveyconstraintsgui", "constraints"));
373  }
374 
375  if ($this->checkPermissionBool("write"))
376  {
377  // 360°
378  if($this->object->get360Mode())
379  {
380  // 360 mode + competence service
381  include_once("./Services/Skill/classes/class.ilSkillManagementSettings.php");
382  $skmg_set = new ilSkillManagementSettings();
383  if ($this->object->get360SkillService() && $skmg_set->isActivated())
384  {
385  $this->tabs_gui->addTab("survey_competences",
386  $this->lng->txt("survey_competences"),
387  $this->ctrl->getLinkTargetByClass("ilsurveyskillgui", "listQuestionAssignment"));
388  }
389 
390  $this->tabs_gui->addTab("survey_360_appraisees",
391  $this->lng->txt("survey_360_appraisees"),
392  $this->ctrl->getLinkTargetByClass('ilsurveyparticipantsgui', 'listAppraisees'));
393  }
394  else
395  {
396  // maintenance
397  $this->tabs_gui->addTab("maintenance",
398  $this->lng->txt("maintenance"),
399  $this->ctrl->getLinkTargetByClass('ilsurveyparticipantsgui', 'maintenance'));
400  }
401  }
402 
403  include_once "./Modules/Survey/classes/class.ilObjSurveyAccess.php";
404  if ($this->checkPermissionBool("write") ||
405  ilObjSurveyAccess::_hasEvaluationAccess($this->object->getId(), $ilUser->getId()))
406  {
407  // evaluation
408  $this->tabs_gui->addTab("svy_results",
409  $this->lng->txt("svy_results"),
410  $this->ctrl->getLinkTargetByClass("ilsurveyevaluationgui", "evaluation"));
411  }
412 
413  // learning progress
414  include_once "./Services/Tracking/classes/class.ilLearningProgressAccess.php";
415  if(ilLearningProgressAccess::checkAccess($this->object->getRefId()))
416  {
417  $this->tabs_gui->addTarget("learning_progress",
418  $this->ctrl->getLinkTargetByClass(array("ilobjsurveygui", "illearningprogressgui"), ""),
419  "",
420  array("illplistofobjectsgui", "illplistofsettingsgui", "illearningprogressgui", "illplistofprogressgui"));
421  }
422 
423  if ($this->checkPermissionBool("write"))
424  {
425  if(!in_array("meta_data", $hidden_tabs))
426  {
427  // meta data
428  include_once "Services/Object/classes/class.ilObjectMetaDataGUI.php";
429  $mdgui = new ilObjectMetaDataGUI($this->object);
430  $mdtab = $mdgui->getTab();
431  if($mdtab)
432  {
433  $this->tabs_gui->addTab("meta_data",
434  $this->lng->txt("meta_data"),
435  $mdtab);
436  }
437  }
438 
439  if(!in_array("export", $hidden_tabs))
440  {
441  // export
442  $this->tabs_gui->addTab("export",
443  $this->lng->txt("export"),
444  $this->ctrl->getLinkTargetByClass("ilexportgui", ""));
445  }
446  }
447 
448  if ($this->checkPermissionBool("edit_permission"))
449  {
450  // permissions
451  $this->tabs_gui->addTab("perm_settings",
452  $this->lng->txt("perm_settings"),
453  $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"));
454  }
455  }
Class ilObjectMetaDataGUI.
static checkAccess($a_ref_id, $a_allow_only_read=true)
check access to learning progress
$ilUser
Definition: imgupload.php:18
Create styles array
The data for the language used.
static _hasEvaluationAccess($a_obj_id, $user_id)
Create new PHPExcel object
obj_idprivate
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 2064 of file class.ilObjSurveyGUI.php.

References $res, $text, array, and object.

Referenced by sendUserResultsMail().

2065  {
2066  $res = array();
2067 
2068  $show_titles = (bool)$this->object->getShowQuestionTitles();
2069 
2070  foreach($this->object->getSurveyPages() as $page)
2071  {
2072  if(count($page) > 0)
2073  {
2074  $res[] = "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
2075 
2076  // question block
2077  if(count($page) > 1)
2078  {
2079  if((bool)$page[0]["questionblock_show_blocktitle"])
2080  {
2081  $res[$this->lng->txt("questionblock")] = trim($page[0]["questionblock_title"])."\n";
2082  }
2083  }
2084 
2085  // questions
2086 
2087  $page_res = array();
2088 
2089  foreach($page as $question)
2090  {
2091  $question_gui = $this->object->getQuestionGUI($question["type_tag"], $question["question_id"]);
2092  if(is_object($question_gui))
2093  {
2094  $question_parts = array();
2095 
2096  // heading
2097  if(strlen($question["heading"]))
2098  {
2099  $question_parts[$this->lng->txt("heading")] = trim($question["heading"]);
2100  }
2101 
2102  if($show_titles)
2103  {
2104  $question_parts[$this->lng->txt("title")] = trim($question["title"]);
2105  }
2106 
2107  if((bool)$question["questionblock_show_questiontext"])
2108  {
2109  $question_parts[$this->lng->txt("question")] = trim(strip_tags($question_gui->object->getQuestionText()));
2110  }
2111 
2112  $answers = $question_gui->getParsedAnswers(
2113  $this->object->loadWorkingData($question["question_id"], $a_active_id),
2114  true
2115  );
2116 
2117  if(sizeof($answers))
2118  {
2119  $multiline = false;
2120  if(sizeof($answers) > 1 ||
2121  get_class($question_gui) == "SurveyTextQuestionGUI")
2122  {
2123  $multiline = true;
2124  }
2125 
2126  $parts = array();
2127  foreach($answers as $answer)
2128  {
2129  $text = null;
2130  if($answer["textanswer"])
2131  {
2132  $text = ' ("'.$answer["textanswer"].'")';
2133  }
2134  if(!isset($answer["cols"]))
2135  {
2136  if(isset($answer["title"]))
2137  {
2138  $parts[] = $answer["title"].$text;
2139  }
2140  else if(isset($answer["value"]))
2141  {
2142  $parts[] = $answer["value"];
2143  }
2144  else if($text)
2145  {
2146  $parts[] = substr($text, 2, -1);
2147  }
2148  }
2149  // matrix
2150  else
2151  {
2152  $tmp = array();
2153  foreach($answer["cols"] as $col)
2154  {
2155  $tmp[] = $col["title"];
2156  }
2157  $parts[] = $answer["title"].": ".implode(", ", $tmp).$text;
2158  }
2159 
2160  }
2161  $question_parts[$this->lng->txt("answer")] =
2162  ($multiline ? "\n" : "").implode("\n", $parts);
2163  }
2164 
2165  $tmp = array();
2166  foreach($question_parts as $type => $value)
2167  {
2168  $tmp[] = $type.": ".$value;
2169  }
2170  $page_res[] = implode("\n", $tmp);
2171  }
2172  }
2173 
2174  $res[] = implode("\n\n-------------------------------\n\n", $page_res);
2175  }
2176  }
2177 
2178  $res[] = "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
2179 
2180  return implode("\n", $res);
2181  }
Create styles array
The data for the language used.
Create new PHPExcel object
obj_idprivate
$text
+ Here is the caller graph for this function:

◆ getUserResultsTable()

ilObjSurveyGUI::getUserResultsTable (   $a_active_id)

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

References object.

Referenced by viewUserResultsObject().

1991  {
1992  $rtpl = new ilTemplate("tpl.svy_view_user_results.html", true, true, "Modules/Survey");
1993 
1994  $show_titles = (bool)$this->object->getShowQuestionTitles();
1995 
1996  foreach($this->object->getSurveyPages() as $page)
1997  {
1998  if(count($page) > 0)
1999  {
2000  // question block
2001  if(count($page) > 1)
2002  {
2003  if((bool)$page[0]["questionblock_show_blocktitle"])
2004  {
2005  $rtpl->setVariable("BLOCK_TITLE", trim($page[0]["questionblock_title"]));
2006  }
2007  }
2008 
2009  // questions
2010  foreach($page as $question)
2011  {
2012  $question_gui = $this->object->getQuestionGUI($question["type_tag"], $question["question_id"]);
2013  if(is_object($question_gui))
2014  {
2015  $rtpl->setCurrentBlock("question_bl");
2016 
2017  // heading
2018  if(strlen($question["heading"]))
2019  {
2020  $rtpl->setVariable("HEADING", trim($question["heading"]));
2021  }
2022 
2023  $rtpl->setVariable("QUESTION_DATA",
2024  $question_gui->getPrintView(
2025  $show_titles,
2026  (bool)$question["questionblock_show_questiontext"],
2027  $this->object->getId(),
2028  $this->object->loadWorkingData($question["question_id"], $a_active_id)
2029  )
2030  );
2031 
2032  $rtpl->parseCurrentBlock();
2033  }
2034  }
2035 
2036  $rtpl->setCurrentBlock("block_bl");
2037  $rtpl->parseCurrentBlock();
2038  }
2039  }
2040 
2041  return $rtpl->get();
2042  }
special template class to simplify handling of ITX/PEAR
Create new PHPExcel object
obj_idprivate
+ Here is the caller graph for this function:

◆ importSurveyObject()

ilObjSurveyGUI::importSurveyObject ( )

form for new survey object import

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

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

1419  {
1420  global $tpl;
1421 
1422  $parent_id = $_GET["ref_id"];
1423  $new_type = $_REQUEST["new_type"];
1424 
1425  // create permission is already checked in createObject. This check here is done to prevent hacking attempts
1426  $this->checkPermission("create", "", $new_type);
1427 
1428  $this->lng->loadLanguageModule($new_type);
1429  $this->ctrl->setParameter($this, "new_type", $new_type);
1430 
1431  $form = $this->initImportForm($new_type);
1432  if ($form->checkInput())
1433  {
1434  include_once("./Modules/Survey/classes/class.ilObjSurvey.php");
1435  $newObj = new ilObjSurvey();
1436  $newObj->setType($new_type);
1437  $newObj->setTitle("dummy");
1438  $newObj->setDescription("dummy");
1439  $newObj->create(true);
1440  $this->putObjectInTree($newObj);
1441 
1442  // copy uploaded file to import directory
1443 
1444  $this->log->debug("form->getInput(spl) = ".$form->getInput("spl"));
1445 
1446  $error = $newObj->importObject($_FILES["importfile"], $form->getInput("spl"));
1447  if (strlen($error))
1448  {
1449  $newObj->delete();
1451  return;
1452  }
1453 
1454  ilUtil::sendSuccess($this->lng->txt("object_imported"),true);
1455  ilUtil::redirect("ilias.php?ref_id=".$newObj->getRefId().
1456  "&baseClass=ilObjSurveyGUI");
1457 
1458  // using template?
1459  include_once "Services/Administration/classes/class.ilSettingsTemplate.php";
1460  $templates = ilSettingsTemplate::getAllSettingsTemplates("svy");
1461  if($templates)
1462  {
1463  global $tpl;
1464  $tpl->addJavaScript("./Modules/Scorm2004/scripts/questions/jquery.js");
1465  // $tpl->addJavaScript("./Modules/Scorm2004/scripts/questions/jquery-ui-min.js");
1466 
1467  $this->tpl->setCurrentBlock("template_option");
1468  $this->tpl->setVariable("VAL_TEMPLATE_OPTION", "");
1469  $this->tpl->setVariable("TXT_TEMPLATE_OPTION", $this->lng->txt("none"));
1470  $this->tpl->parseCurrentBlock();
1471 
1472  foreach($templates as $item)
1473  {
1474  $this->tpl->setCurrentBlock("template_option");
1475  $this->tpl->setVariable("VAL_TEMPLATE_OPTION", $item["id"]);
1476  $this->tpl->setVariable("TXT_TEMPLATE_OPTION", $item["title"]);
1477  $this->tpl->parseCurrentBlock();
1478 
1479  $desc = str_replace("\n", "", nl2br($item["description"]));
1480  $desc = str_replace("\r", "", $desc);
1481 
1482  $this->tpl->setCurrentBlock("js_data");
1483  $this->tpl->setVariable("JS_DATA_ID", $item["id"]);
1484  $this->tpl->setVariable("JS_DATA_TEXT", $desc);
1485  $this->tpl->parseCurrentBlock();
1486  }
1487 
1488  $this->tpl->setCurrentBlock("templates");
1489  $this->tpl->setVariable("TXT_TEMPLATE", $this->lng->txt("svy_settings_template"));
1490  $this->tpl->parseCurrentBlock();
1491  }
1492  }
1493 
1494  // display form to correct errors
1495  $form->setValuesByPost();
1496  $tpl->setContent($form->getHtml());
1497  }
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
$error
Definition: Error.php:17
static getAllSettingsTemplates($a_type, $a_include_auto_generated=false)
Get all settings templates of type.
$_GET["client_id"]
initImportForm($a_new_type)
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)
http redirect to other script
+ Here is the call graph for this function:

◆ infoScreen()

ilObjSurveyGUI::infoScreen ( )

show information screen

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

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

Referenced by executeCommand(), and infoScreenObject().

1520  {
1521  global $ilTabs, $ilUser, $ilToolbar, $ilAccess;
1522 
1523  if (!$this->external_rater_360)
1524  {
1525  if (!$this->checkPermissionBool("read"))
1526  {
1527  $this->checkPermission("visible");
1528  }
1529  }
1530 
1531  $ilTabs->activateTab("info_short");
1532 
1533  include_once "./Modules/Survey/classes/class.ilSurveyExecutionGUI.php";
1534  $output_gui = new ilSurveyExecutionGUI($this->object);
1535 
1536  include_once("./Services/InfoScreen/classes/class.ilInfoScreenGUI.php");
1537  $info = new ilInfoScreenGUI($this);
1538  $info->enablePrivateNotes();
1539 
1540 
1541  $is_appraisee = false;
1542 
1543  // 360° - appraisee infos
1544  if($this->object->get360Mode() &&
1545  $this->object->isAppraisee($ilUser->getId()))
1546  {
1547  $is_appraisee = true;
1548 
1549  $info->addSection($this->lng->txt("survey_360_appraisee_info"));
1550 
1551  $appr_data = $this->object->getAppraiseesData();
1552  $appr_data = $appr_data[$ilUser->getId()];
1553  $info->addProperty($this->lng->txt("survey_360_raters_status_info"), $appr_data["finished"]);
1554 
1555  if(!$appr_data["closed"])
1556  {
1557  include_once "Services/UIComponent/Button/classes/class.ilLinkButton.php";
1558  $button = ilLinkButton::getInstance();
1559  $button->setCaption("survey_360_appraisee_close_action");
1560  $button->setUrl($this->ctrl->getLinkTargetByClass("ilsurveyparticipantsgui", "confirmappraiseeclose"));
1561  $close_button_360 = '<div>'.$button->render().'</div>';
1562 
1563  $txt = "survey_360_appraisee_close_action_info";
1564  if($this->object->get360SkillService())
1565  {
1566  $txt .= "_skill";
1567  }
1568  $info->addProperty($this->lng->txt("status"),
1569  $close_button_360.$this->lng->txt($txt));
1570  }
1571  else
1572  {
1574 
1575  $dt = new ilDateTime($appr_data["closed"], IL_CAL_UNIX);
1576  $info->addProperty($this->lng->txt("status"),
1577  sprintf($this->lng->txt("survey_360_appraisee_close_action_status"),
1579  }
1580  }
1581 
1582 
1583  // handle (anonymous) code
1584 
1585  // validate incoming
1586  $code_input = false;
1587  $anonymous_code = $_POST["anonymous_id"];
1588  if ($anonymous_code)
1589  {
1590  $code_input = true;
1591  // if(!$this->object->isUnusedCode($anonymous_code, $ilUser->getId()))
1592  if(!$this->object->checkSurveyCode($anonymous_code)) // #15031 - valid as long survey is not finished
1593  {
1594  $anonymous_code = null;
1595  }
1596  else
1597  {
1598  // #15860
1599  $this->object->bindSurveyCodeToUser($ilUser->getId(), $anonymous_code);
1600  }
1601  }
1602  if ($anonymous_code)
1603  {
1604  $_SESSION["anonymous_id"][$this->object->getId()] = $anonymous_code;
1605  }
1606  else
1607  {
1608  $anonymous_code = $_SESSION["anonymous_id"][$this->object->getId()];
1609  if($anonymous_code)
1610  {
1611  $code_input = true;
1612  }
1613  }
1614 
1615  // try to find code for current (registered) user from existing run
1616  if($this->object->getAnonymize() && !$anonymous_code)
1617  {
1618  $anonymous_code = $this->object->findCodeForUser($ilUser->getId());
1619  }
1620 
1621  // get existing runs for current user, might generate code
1622  $participant_status = $this->object->getUserSurveyExecutionStatus($anonymous_code);
1623  if($participant_status)
1624  {
1625  $anonymous_code = $participant_status["code"];
1626  $participant_status = $participant_status["runs"];
1627  }
1628 
1629  // (final) check for proper anonymous code
1630  if(!$this->object->isAccessibleWithoutCode() &&
1631  !$is_appraisee &&
1632  $code_input && // #11346
1633  (!$anonymous_code || !$this->object->isAnonymousKey($anonymous_code)))
1634  {
1635  $anonymous_code = null;
1636  ilUtil::sendInfo($this->lng->txt("wrong_survey_code_used"));
1637  }
1638 
1639  // :TODO: really save in session?
1640  $_SESSION["anonymous_id"][$this->object->getId()] = $anonymous_code;
1641  $survey_started = $this->object->isSurveyStarted($ilUser->getId(), $anonymous_code);
1642 
1643  $showButtons = $big_button = false;
1644 
1645  // already finished?
1646  if(!$this->object->get360Mode() &&
1647  ($survey_started === 1 && // survey finished
1648  !(!$this->object->isAccessibleWithoutCode() && !$anonymous_code && $ilUser->getId() == ANONYMOUS_USER_ID))) // not code accessible an no anonymous code and anonymous user (see #0020333)
1649  {
1650  ilUtil::sendInfo($this->lng->txt("already_completed_survey"));
1651 
1652  if($ilUser->getId() != ANONYMOUS_USER_ID)
1653  {
1654  if($this->object->hasViewOwnResults())
1655  {
1656  include_once "Services/UIComponent/Button/classes/class.ilLinkButton.php";
1657  $button = ilLinkButton::getInstance();
1658  $button->setCaption("svy_view_own_results");
1659  $button->setUrl($this->ctrl->getLinkTarget($this, "viewUserResults"));
1660  $ilToolbar->addButtonInstance($button);
1661  }
1662 
1663  // see ilSurveyExecutionGUI
1664  if($this->object->hasMailConfirmation())
1665  {
1666  if($this->object->hasViewOwnResults())
1667  {
1668  $ilToolbar->addSeparator();
1669  }
1670 
1671  if($ilUser->getId() == ANONYMOUS_USER_ID ||
1672  !$ilUser->getEmail())
1673  {
1674  require_once "Services/Form/classes/class.ilTextInputGUI.php";
1675  $mail = new ilTextInputGUI($this->lng->txt("email"), "mail");
1676  $mail->setSize(25);
1677  $mail->setValue($ilUser->getEmail());
1678  $ilToolbar->addInputItem($mail, true);
1679  }
1680 
1681  $ilToolbar->setFormAction($this->ctrl->getFormAction($this, "mailUserResults"));
1682 
1683  include_once "Services/UIComponent/Button/classes/class.ilSubmitButton.php";
1684  $button = ilSubmitButton::getInstance();
1685  $button->setCaption("svy_mail_send_confirmation");
1686  $button->setCommand("mailUserResults");
1687  $ilToolbar->addButtonInstance($button);
1688  }
1689  }
1690  }
1691  else
1692  {
1693  // "active" survey?
1694  $canStart = $this->object->canStartSurvey(null, $this->external_rater_360);
1695 
1696  $showButtons = $canStart["result"];
1697  if (!$showButtons)
1698  {
1699  if($canStart["edit_settings"] &&
1700  $ilAccess->checkAccess("write", "", $this->ref_id))
1701  {
1702  $canStart["messages"][] = "<a href=\"".$this->ctrl->getLinkTarget($this, "properties")."\">&raquo; ".
1703  $this->lng->txt("survey_edit_settings")."</a>";
1704  }
1705  ilUtil::sendInfo(implode("<br />", $canStart["messages"]));
1706  }
1707  }
1708 
1709  if ($showButtons)
1710  {
1711  // code is mandatory and not given yet
1712  if(!$is_appraisee &&
1713  !$anonymous_code &&
1714  !$this->object->isAccessibleWithoutCode())
1715  {
1716  $info->setFormAction($this->ctrl->getFormAction($this, "infoScreen"));
1717  $info->addSection($this->lng->txt("anonymization"));
1718  $info->addProperty("", $this->lng->txt("anonymize_anonymous_introduction"));
1719  $info->addPropertyTextinput($this->lng->txt("enter_anonymous_id"), "anonymous_id", "", 8, "infoScreen", $this->lng->txt("submit"), true);
1720  }
1721  else
1722  {
1723  // trunk/default
1724  if(!$this->object->get360Mode())
1725  {
1726  if($anonymous_code)
1727  {
1728  $info->addHiddenElement("anonymous_id", $anonymous_code);
1729  }
1730  if ($survey_started === 0)
1731  {
1732  $big_button = array("resume", $this->lng->txt("resume_survey"));
1733  }
1734  elseif ($survey_started === FALSE)
1735  {
1736  $big_button = array("start", $this->lng->txt("start_survey"));
1737  }
1738  }
1739  // 360°
1740  else
1741  {
1742  $appr_ids = array();
1743 
1744  // use given code (if proper external one)
1745  if($anonymous_code)
1746  {
1747  $anonymous_id = $this->object->getAnonymousIdByCode($anonymous_code);
1748  if($anonymous_id)
1749  {
1750  $appr_ids = $this->object->getAppraiseesToRate(0, $anonymous_id);
1751  }
1752  }
1753 
1754  // registered user
1755  // if an auto-code was generated, we still have to check for the original user id
1756  if(!$appr_ids && $ilUser->getId() != ANONYMOUS_USER_ID)
1757  {
1758  $appr_ids = $this->object->getAppraiseesToRate($ilUser->getId());
1759  }
1760 
1761  if(sizeof($appr_ids))
1762  {
1763  // map existing runs to appraisees
1764  $active_appraisees = array();
1765  if($participant_status)
1766  {
1767  foreach($participant_status as $item)
1768  {
1769  $active_appraisees[$item["appr_id"]] = $item["finished"];
1770  }
1771  }
1772 
1773  $list = array();
1774 
1775  foreach($appr_ids as $appr_id)
1776  {
1777  if($this->object->isAppraiseeClosed($appr_id))
1778  {
1779  // closed
1780  $list[$appr_id] = $this->lng->txt("survey_360_appraisee_is_closed");
1781  }
1782  else if(array_key_exists($appr_id, $active_appraisees))
1783  {
1784  // already done
1785  if($active_appraisees[$appr_id])
1786  {
1787  $list[$appr_id] = $this->lng->txt("already_completed_survey");
1788  }
1789  // resume
1790  else
1791  {
1792  $list[$appr_id] = array("resume", $this->lng->txt("resume_survey"));
1793  }
1794  }
1795  else
1796  {
1797  // start
1798  $list[$appr_id] = array("start", $this->lng->txt("start_survey"));
1799  }
1800  }
1801 
1802  $info->addSection($this->lng->txt("survey_360_rate_other_appraisees"));
1803 
1804  include_once "Services/User/classes/class.ilUserUtil.php";
1805  foreach($list as $appr_id => $item)
1806  {
1807  $appr_name = ilUserUtil::getNamePresentation($appr_id, false, false, "", true);
1808 
1809  if(!is_array($item))
1810  {
1811  $info->addProperty($appr_name, $item);
1812  }
1813  else
1814  {
1815  $this->ctrl->setParameter($output_gui, "appr_id", $appr_id);
1816  $href = $this->ctrl->getLinkTarget($output_gui, $item[0]);
1817  $this->ctrl->setParameter($output_gui, "appr_id", "");
1818 
1819  include_once "Services/UIComponent/Button/classes/class.ilLinkButton.php";
1820  $button = ilLinkButton::getInstance();
1821  $button->setCaption($item[1], false);
1822  $button->setUrl($href);
1823  $big_button_360 = '<div>'.$button->render().'</div>';
1824 
1825  $info->addProperty($appr_name, $big_button_360);
1826  }
1827  }
1828  }
1829  else if(!$is_appraisee)
1830  {
1831  ilUtil::sendFailure($this->lng->txt("survey_360_no_appraisees"));
1832  }
1833  }
1834  }
1835 
1836  if($this->object->get360Mode() &&
1837  $this->object->get360SelfAppraisee() &&
1838  !$this->object->isAppraisee($ilUser->getId()) &&
1839  $ilUser->getId() != ANONYMOUS_USER_ID) // #14968
1840  {
1841  $link = $this->ctrl->getLinkTargetByClass("ilsurveyparticipantsgui", "addSelfAppraisee");
1842  $link = '<a href="'.$link.'">'.$this->lng->txt("survey_360_add_self_appraisee").'</a>';
1843  $info->addProperty("&nbsp;", $link);
1844  }
1845  }
1846 
1847  if($big_button)
1848  {
1849  $ilToolbar->setFormAction($this->ctrl->getFormAction($output_gui, "infoScreen"));
1850 
1851  include_once "Services/UIComponent/Button/classes/class.ilSubmitButton.php";
1852  $button = ilSubmitButton::getInstance();
1853  $button->setCaption($big_button[1], false);
1854  $button->setCommand($big_button[0]);
1855  $button->setPrimary(true);
1856  $ilToolbar->addButtonInstance($button);
1857 
1858  $ilToolbar->setCloseFormTag(false);
1859  $info->setOpenFormTag(false);
1860  }
1861  /* #12016
1862  else
1863  {
1864  $info->setFormAction($this->ctrl->getFormAction($output_gui, "infoScreen"));
1865  }
1866  */
1867 
1868  if (strlen($this->object->getIntroduction()))
1869  {
1870  $introduction = $this->object->getIntroduction();
1871  $info->addSection($this->lng->txt("introduction"));
1872  $info->addProperty("", $this->object->prepareTextareaOutput($introduction).
1873  "<br />".$info->getHiddenToggleButton());
1874  }
1875  else
1876  {
1877  $info->addSection("");
1878  $info->addProperty("", $info->getHiddenToggleButton());
1879  }
1880 
1881  $info->hideFurtherSections(false);
1882 
1883  if(!$this->object->get360Mode())
1884  {
1885  $info->addSection($this->lng->txt("svy_general_properties"));
1886 
1887  $info->addProperty($this->lng->txt("survey_results_anonymization"),
1888  !$this->object->hasAnonymizedResults()
1889  ? $this->lng->txt("survey_results_personalized_info")
1890  : $this->lng->txt("survey_results_anonymized_info"));
1891 
1892  include_once "./Modules/Survey/classes/class.ilObjSurveyAccess.php";
1893  if ($this->checkPermissionBool("write") ||
1894  ilObjSurveyAccess::_hasEvaluationAccess($this->object->getId(), $ilUser->getId()))
1895  {
1896  $info->addProperty($this->lng->txt("evaluation_access"), $this->lng->txt("evaluation_access_info"));
1897  }
1898  }
1899 
1900  $info->addMetaDataSections($this->object->getId(),0, $this->object->getType());
1901 
1902  $this->ctrl->forwardCommand($info);
1903  }
Class ilInfoScreenGUI.
$_SESSION["AccountId"]
static setUseRelativeDates($a_status)
set use relative dates
const IL_CAL_UNIX
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
$info
Definition: example_052.php:80
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)
Default behaviour is:
Survey execution graphical output.
setSize($a_size)
Set Size.
This class represents a text property in a property form.
static formatDate(ilDateTime $date)
Format a date public.
Date and time handling
$ilUser
Definition: imgupload.php:18
$txt
Definition: error.php:12
Create styles array
The data for the language used.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static _hasEvaluationAccess($a_obj_id, $user_id)
Create new PHPExcel object
obj_idprivate
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission and redirect on error.
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 1509 of file class.ilObjSurveyGUI.php.

References infoScreen().

1510  {
1511  $this->ctrl->setCmd("showSummary");
1512  $this->ctrl->setCmdClass("ilinfoscreengui");
1513  $this->infoScreen();
1514  }
infoScreen()
show information screen
+ Here is the call graph for this function:

◆ initImportForm()

ilObjSurveyGUI::initImportForm (   $a_new_type)
protected

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

References array, ilSelectInputGUI\setOptions(), and ilFileInputGUI\setSuffixes().

Referenced by importSurveyObject().

1387  {
1388  include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
1389  $form = new ilPropertyFormGUI();
1390  $form->setTarget("_top");
1391  $form->setFormAction($this->ctrl->getFormAction($this));
1392  $form->setTitle($this->lng->txt("import_svy"));
1393 
1394  include_once("./Services/Form/classes/class.ilFileInputGUI.php");
1395  $fi = new ilFileInputGUI($this->lng->txt("import_file"), "importfile");
1396  $fi->setSuffixes(array("zip"));
1397  $fi->setRequired(true);
1398  $form->addItem($fi);
1399 
1400  include_once("./Modules/Survey/classes/class.ilObjSurvey.php");
1401  $svy = new ilObjSurvey();
1402  $questionspools = $svy->getAvailableQuestionpools(true, true, true);
1403 
1404  $pools = new ilSelectInputGUI($this->lng->txt("select_questionpool_short"), "spl");
1405  $pools->setOptions(array(""=>$this->lng->txt("dont_use_questionpool")) + $questionspools);
1406  $pools->setRequired(false);
1407  $form->addItem($pools);
1408 
1409  $form->addCommandButton("importSurvey", $this->lng->txt("import"));
1410  $form->addCommandButton("cancel", $this->lng->txt("cancel"));
1411 
1412  return $form;
1413  }
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.
setOptions($a_options)
Set Options.
Create styles array
The data for the language used.
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 757 of file class.ilObjSurveyGUI.php.

References $header, $info, $results, $section, $start, $title, ilObjectGUI\$tree, $txt, ilObject\_getAllReferences(), ilObjAdvancedEditing\_getUsedHTMLTags(), ilObjSurvey\_hasDatasets(), ilObjUser\_lookupName(), ilSubEnabledFormPropertyGUI\addSubItem(), array, ilObjSurvey\EVALUATION_ACCESS_ALL, ilObjSurvey\EVALUATION_ACCESS_OFF, ilObjSurvey\EVALUATION_ACCESS_PARTICIPANTS, ilMD\getGeneral(), IL_CAL_TIMESTAMP, IL_CAL_UNIX, ilObjSurvey\NOTIFICATION_INVITED_USERS, ilObjSurvey\NOTIFICATION_PARENT_COURSE, object, ilObjSurvey\RESULTS_360_ALL, ilObjSurvey\RESULTS_360_NONE, ilObjSurvey\RESULTS_360_OWN, ilCheckboxInputGUI\setChecked(), ilTextAreaInputGUI\setCols(), ilTextInputGUI\setDataSource(), ilDateTimeInputGUI\setDate(), ilRadioOption\setInfo(), ilFormPropertyGUI\setInfo(), ilFormPropertyGUI\setRequired(), ilDateTimeInputGUI\setShowTime(), ilDateDurationInputGUI\setShowTime(), ilTextInputGUI\setValue(), ilCheckboxInputGUI\setValue(), ilRadioGroupInputGUI\setValue(), ilNonEditableValueGUI\setValue(), and ilTextAreaInputGUI\setValue().

Referenced by propertiesObject(), and savePropertiesObject().

758  {
759  $template_settings = $hide_rte_switch = null;
760  $template = $this->object->getTemplate();
761  if($template)
762  {
763  include_once "Services/Administration/classes/class.ilSettingsTemplate.php";
764  $template = new ilSettingsTemplate($template);
765 
766  $template_settings = $template->getSettings();
767  $hide_rte_switch = $template_settings["rte_switch"]["hide"];
768  }
769 
770  include_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
771  $form = new ilPropertyFormGUI();
772  $form->setFormAction($this->ctrl->getFormAction($this));
773  $form->setTableWidth("100%");
774  $form->setId("survey_properties");
775 
776  // general properties
778  $header->setTitle($this->lng->txt("settings"));
779  $form->addItem($header);
780 
781 
782  // title & description (meta data)
783 
784  include_once 'Services/MetaData/classes/class.ilMD.php';
785  $md_obj = new ilMD($this->object->getId(), 0, "svy");
786  $md_section = $md_obj->getGeneral();
787 
788  $title = new ilTextInputGUI($this->lng->txt("title"), "title");
789  $title->setRequired(true);
790  $title->setValue($md_section->getTitle());
791  $form->addItem($title);
792 
793  $ids = $md_section->getDescriptionIds();
794  if($ids)
795  {
796  $desc_obj = $md_section->getDescription(array_pop($ids));
797 
798  $desc = new ilTextAreaInputGUI($this->lng->txt("description"), "description");
799  $desc->setCols(50);
800  $desc->setRows(4);
801  $desc->setValue($desc_obj->getDescription());
802  $form->addItem($desc);
803  }
804 
805  // pool usage
806  $pool_usage = new ilRadioGroupInputGUI($this->lng->txt("survey_question_pool_usage"), "use_pool");
807  $opt = new ilRadioOption($this->lng->txt("survey_question_pool_usage_active"), 1);
808  $opt->setInfo($this->lng->txt("survey_question_pool_usage_active_info"));
809  $pool_usage->addOption($opt);
810  $opt = new ilRadioOption($this->lng->txt("survey_question_pool_usage_inactive"), 0);
811  $opt->setInfo($this->lng->txt("survey_question_pool_usage_inactive_info"));
812  $pool_usage->addOption($opt);
813  $pool_usage->setValue($this->object->getPoolUsage());
814  $form->addItem($pool_usage);
815 
816  // 360°: appraisees
817  if($this->object->get360Mode())
818  {
819  $self_eval = new ilCheckboxInputGUI($this->lng->txt("survey_360_self_evaluation"), "self_eval");
820  $self_eval->setInfo($this->lng->txt("survey_360_self_evaluation_info"));
821  $self_eval->setChecked($this->object->get360SelfEvaluation());
822  $form->addItem($self_eval);
823 
824  $self_rate = new ilCheckboxInputGUI($this->lng->txt("survey_360_self_raters"), "self_rate");
825  $self_rate->setInfo($this->lng->txt("survey_360_self_raters_info"));
826  $self_rate->setChecked($this->object->get360SelfRaters());
827  $form->addItem($self_rate);
828 
829  $self_appr = new ilCheckboxInputGUI($this->lng->txt("survey_360_self_appraisee"), "self_appr");
830  $self_appr->setInfo($this->lng->txt("survey_360_self_appraisee_info"));
831  $self_appr->setChecked($this->object->get360SelfAppraisee());
832  $form->addItem($self_appr);
833  }
834 
835 
836  // activation
837 
838  include_once "Services/Object/classes/class.ilObjectActivation.php";
839  $this->lng->loadLanguageModule('rep');
840 
842  $section->setTitle($this->lng->txt('rep_activation_availability'));
843  $form->addItem($section);
844 
845  // additional info only with multiple references
846  $act_obj_info = $act_ref_info = "";
847  if(sizeof(ilObject::_getAllReferences($this->object->getId())) > 1)
848  {
849  $act_obj_info = ' '.$this->lng->txt('rep_activation_online_object_info');
850  $act_ref_info = $this->lng->txt('rep_activation_access_ref_info');
851  }
852 
853  $online = new ilCheckboxInputGUI($this->lng->txt('rep_activation_online'),'online');
854  $online->setInfo($this->lng->txt('svy_activation_online_info').$act_obj_info);
855  $online->setChecked($this->object->isOnline());
856  $form->addItem($online);
857 
858  include_once "Services/Form/classes/class.ilDateDurationInputGUI.php";
859  $dur = new ilDateDurationInputGUI($this->lng->txt('rep_visibility_until'), "access_period");
860  $dur->setShowTime(true);
861  $date = $this->object->getActivationStartDate();
862  $dur->setStart($date
863  ? new ilDateTime($date, IL_CAL_UNIX)
864  : null);
865  $date = $this->object->getActivationEndDate();
866  $dur->setEnd($date
867  ? new ilDateTime($date, IL_CAL_UNIX)
868  : null);
869  $form->addItem($dur);
870 
871  $visible = new ilCheckboxInputGUI($this->lng->txt('rep_activation_limited_visibility'), 'access_visiblity');
872  $visible->setInfo($this->lng->txt('svy_activation_limited_visibility_info'));
873  $visible->setChecked($this->object->getActivationVisibility());
874  $dur->addSubItem($visible);
875 
876 
877  // before start
878 
880  $section->setTitle($this->lng->txt('svy_settings_section_before_start'));
881  $form->addItem($section);
882 
883  // introduction
884  $intro = new ilTextAreaInputGUI($this->lng->txt("introduction"), "introduction");
885  $intro->setValue($this->object->prepareTextareaOutput($this->object->getIntroduction()));
886  $intro->setRows(10);
887  $intro->setCols(80);
888  $intro->setUseRte(TRUE);
889  $intro->setInfo($this->lng->txt("survey_introduction_info"));
890  include_once "./Services/AdvancedEditing/classes/class.ilObjAdvancedEditing.php";
891  $intro->setRteTags(ilObjAdvancedEditing::_getUsedHTMLTags("survey"));
892  $intro->addPlugin("latex");
893  $intro->addButton("latex");
894  $intro->addButton("pastelatex");
895  $intro->setRTESupport($this->object->getId(), "svy", "survey", null, $hide_rte_switch);
896  $form->addItem($intro);
897 
898 
899  // access
900 
902  $section->setTitle($this->lng->txt('svy_settings_section_access'));
903  $form->addItem($section);
904 
905  // enable start date
906  $start = $this->object->getStartDate();
907  // start date
908  $startingtime = new ilDateTimeInputGUI($this->lng->txt("start_date"), 'start_date');
909  $startingtime->setShowTime(true);
910  if ($start)
911  {
912  $startingtime->setDate(new ilDate($start, IL_CAL_TIMESTAMP));
913  }
914  $form->addItem($startingtime);
915 
916  // enable end date
917  $end = $this->object->getEndDate();
918  // end date
919  $endingtime = new ilDateTimeInputGUI($this->lng->txt("end_date"), 'end_date');
920  $endingtime->setShowTime(true);
921  if ($end)
922  {
923  $endingtime->setDate(new ilDate($end, IL_CAL_TIMESTAMP));
924  }
925  $form->addItem($endingtime);
926 
927  // anonymization
928  if(!$this->object->get360Mode())
929  {
930  $codes = new ilCheckboxInputGUI($this->lng->txt("survey_access_codes"), "acc_codes");
931  $codes->setInfo($this->lng->txt("survey_access_codes_info"));
932  $codes->setChecked(!$this->object->isAccessibleWithoutCode());
933  $form->addItem($codes);
934 
935  if (ilObjSurvey::_hasDatasets($this->object->getSurveyId()))
936  {
937  $codes->setDisabled(true);
938  }
939  }
940 
941 
942  // question behaviour
943 
945  $section->setTitle($this->lng->txt('svy_settings_section_question_behaviour'));
946  $form->addItem($section);
947 
948  // show question titles
949  $show_question_titles = new ilCheckboxInputGUI($this->lng->txt("svy_show_questiontitles"), "show_question_titles");
950  $show_question_titles->setValue(1);
951  $show_question_titles->setChecked($this->object->getShowQuestionTitles());
952  $form->addItem($show_question_titles);
953 
954 
955  // finishing
956 
958  $info->setTitle($this->lng->txt("svy_settings_section_finishing"));
959  $form->addItem($info);
960 
961  $view_own = new ilCheckboxInputGUI($this->lng->txt("svy_results_view_own"), "view_own");
962  $view_own->setInfo($this->lng->txt("svy_results_view_own_info"));
963  $view_own->setChecked($this->object->hasViewOwnResults());
964  $form->addItem($view_own);
965 
966  $mail_confirm = new ilCheckboxInputGUI($this->lng->txt("svy_results_mail_confirm"), "mail_confirm");
967  $mail_confirm->setInfo($this->lng->txt("svy_results_mail_confirm_info"));
968  $mail_confirm->setChecked($this->object->hasMailConfirmation());
969  $form->addItem($mail_confirm);
970 
971  $mail_own = new ilCheckboxInputGUI($this->lng->txt("svy_results_mail_own"), "mail_own");
972  $mail_own->setInfo($this->lng->txt("svy_results_mail_own_info"));
973  $mail_own->setChecked($this->object->hasMailOwnResults());
974  $mail_confirm->addSubItem($mail_own);
975 
976  // final statement
977  $finalstatement = new ilTextAreaInputGUI($this->lng->txt("outro"), "outro");
978  $finalstatement->setValue($this->object->prepareTextareaOutput($this->object->getOutro()));
979  $finalstatement->setRows(10);
980  $finalstatement->setCols(80);
981  $finalstatement->setUseRte(TRUE);
982  $finalstatement->setRteTags(ilObjAdvancedEditing::_getUsedHTMLTags("survey"));
983  $finalstatement->addPlugin("latex");
984  $finalstatement->addButton("latex");
985  $finalstatement->addButton("pastelatex");
986  $finalstatement->setRTESupport($this->object->getId(), "svy", "survey", null, $hide_rte_switch);
987  $form->addItem($finalstatement);
988 
989  // mail notification
990  $mailnotification = new ilCheckboxInputGUI($this->lng->txt("mailnotification"), "mailnotification");
991  // $mailnotification->setOptionTitle($this->lng->txt("activate"));
992  $mailnotification->setInfo($this->lng->txt("svy_result_mail_notification_info")); // #11762
993  $mailnotification->setValue(1);
994  $mailnotification->setChecked($this->object->getMailNotification());
995 
996  // addresses
997  $mailaddresses = new ilTextInputGUI($this->lng->txt("mailaddresses"), "mailaddresses");
998  $mailaddresses->setValue($this->object->getMailAddresses());
999  $mailaddresses->setSize(80);
1000  $mailaddresses->setInfo($this->lng->txt('mailaddresses_info'));
1001  $mailaddresses->setRequired(true);
1002 
1003  // participant data
1004  $participantdata = new ilTextAreaInputGUI($this->lng->txt("mailparticipantdata"), "mailparticipantdata");
1005  $participantdata->setValue($this->object->getMailParticipantData());
1006  $participantdata->setRows(6);
1007  $participantdata->setCols(80);
1008  $participantdata->setUseRte(false);
1009  $participantdata->setInfo($this->lng->txt("mailparticipantdata_info"));
1010 
1011  // #12755 - because of privacy concerns we restrict user data to a minimum
1012  $placeholders = array(
1013  "FIRST_NAME" => "firstname",
1014  "LAST_NAME" => "lastname",
1015  "LOGIN" => "login"
1016  );
1017  $txt = array();
1018  foreach($placeholders as $placeholder => $caption)
1019  {
1020  $txt[] = "[".strtoupper($placeholder)."]: ".$this->lng->txt($caption);
1021  }
1022  $txt = implode("<br />", $txt);
1023  $participantdatainfo = new ilNonEditableValueGUI($this->lng->txt("mailparticipantdata_placeholder"), "", true);
1024  $participantdatainfo->setValue($txt);
1025 
1026  $mailnotification->addSubItem($mailaddresses);
1027  $mailnotification->addSubItem($participantdata);
1028  $mailnotification->addSubItem($participantdatainfo);
1029  $form->addItem($mailnotification);
1030 
1031  // tutor notification - currently not available for 360°
1032  if(!$this->object->get360Mode())
1033  {
1034  // parent course?
1035  global $tree;
1036  $has_parent = $tree->checkForParentType($this->object->getRefId(), "grp");
1037  if(!$has_parent)
1038  {
1039  $has_parent = $tree->checkForParentType($this->object->getRefId(), "crs");
1040  }
1041  $num_inv = sizeof($this->object->getInvitedUsers());
1042 
1043  // notification
1044  $tut = new ilCheckboxInputGUI($this->lng->txt("survey_notification_tutor_setting"), "tut");
1045  $tut->setChecked($this->object->getTutorNotificationStatus());
1046  $form->addItem($tut);
1047 
1048  $tut_logins = array();
1049  $tuts = $this->object->getTutorNotificationRecipients();
1050  if($tuts)
1051  {
1052  foreach($tuts as $tut_id)
1053  {
1054  $tmp = ilObjUser::_lookupName($tut_id);
1055  if($tmp["login"])
1056  {
1057  $tut_logins[] = $tmp["login"];
1058  }
1059  }
1060  }
1061  $tut_ids = new ilTextInputGUI($this->lng->txt("survey_notification_tutor_recipients"), "tut_ids");
1062  $tut_ids->setDataSource($this->ctrl->getLinkTarget($this, "doAutoComplete", "", true));
1063  $tut_ids->setRequired(true);
1064  $tut_ids->setMulti(true);
1065  $tut_ids->setMultiValues($tut_logins);
1066  $tut_ids->setValue(array_shift($tut_logins));
1067  $tut->addSubItem($tut_ids);
1068 
1069  $tut_grp = new ilRadioGroupInputGUI($this->lng->txt("survey_notification_target_group"), "tut_grp");
1070  $tut_grp->setRequired(true);
1071  $tut_grp->setValue($this->object->getTutorNotificationTarget());
1072  $tut->addSubItem($tut_grp);
1073 
1074  $tut_grp_crs = new ilRadioOption($this->lng->txt("survey_notification_target_group_parent_course"),
1076  if(!$has_parent)
1077  {
1078  $tut_grp_crs->setInfo($this->lng->txt("survey_notification_target_group_parent_course_inactive"));
1079  }
1080  else
1081  {
1082  $tut_grp_crs->setInfo(sprintf($this->lng->txt("survey_notification_target_group_invited_info"),
1083  count($this->object->getNotificationTargetUserIds(false))));
1084  }
1085  $tut_grp->addOption($tut_grp_crs);
1086 
1087  $tut_grp_inv = new ilRadioOption($this->lng->txt("survey_notification_target_group_invited"),
1089  $tut_grp_inv->setInfo(sprintf($this->lng->txt("survey_notification_target_group_invited_info"), $num_inv));
1090  $tut_grp->addOption($tut_grp_inv);
1091  }
1092 
1093 
1094  // reminders
1095 
1096  // reminder - currently not available for 360°
1097  if(!$this->object->get360Mode())
1098  {
1099  $info = new ilFormSectionHeaderGUI();
1100  $info->setTitle($this->lng->txt("svy_settings_section_reminders"));
1101  $form->addItem($info);
1102 
1103  $rmd = new ilCheckboxInputGUI($this->lng->txt("survey_reminder_setting"), "rmd");
1104  $rmd->setChecked($this->object->getReminderStatus());
1105  $form->addItem($rmd);
1106 
1107  $rmd_start = new ilDateTimeInputGUI($this->lng->txt("survey_reminder_start"), "rmd_start");
1108  $rmd_start->setRequired(true);
1109  $start = $this->object->getReminderStart();
1110  if($start)
1111  {
1112  $rmd_start->setDate($start);
1113  }
1114  $rmd->addSubItem($rmd_start);
1115 
1116  $end = $this->object->getReminderEnd();
1117  $rmd_end = new ilDateTimeInputGUI($this->lng->txt("survey_reminder_end"), "rmd_end");
1118  if($end)
1119  {
1120  $rmd_end->setDate($end);
1121  }
1122  $rmd->addSubItem($rmd_end);
1123 
1124  $rmd_freq = new ilNumberInputGUI($this->lng->txt("survey_reminder_frequency"), "rmd_freq");
1125  $rmd_freq->setRequired(true);
1126  $rmd_freq->setSize(3);
1127  $rmd_freq->setSuffix($this->lng->txt("survey_reminder_frequency_days"));
1128  $rmd_freq->setValue($this->object->getReminderFrequency());
1129  $rmd_freq->setMinValue(1);
1130  $rmd->addSubItem($rmd_freq);
1131 
1132  $rmd_grp = new ilRadioGroupInputGUI($this->lng->txt("survey_notification_target_group"), "rmd_grp");
1133  $rmd_grp->setRequired(true);
1134  $rmd_grp->setValue($this->object->getReminderTarget());
1135  $rmd->addSubItem($rmd_grp);
1136 
1137  $rmd_grp_crs = new ilRadioOption($this->lng->txt("survey_notification_target_group_parent_course"),
1139  if(!$has_parent)
1140  {
1141  $rmd_grp_crs->setInfo($this->lng->txt("survey_notification_target_group_parent_course_inactive"));
1142  }
1143  else
1144  {
1145  $rmd_grp_crs->setInfo(sprintf($this->lng->txt("survey_notification_target_group_invited_info"),
1146  count($this->object->getNotificationTargetUserIds(false))));
1147  }
1148  $rmd_grp->addOption($rmd_grp_crs);
1149 
1150  $rmd_grp_inv = new ilRadioOption($this->lng->txt("survey_notification_target_group_invited"),
1152  $rmd_grp_inv->setInfo(sprintf($this->lng->txt("survey_notification_target_group_invited_info"), $num_inv));
1153  $rmd_grp->addOption($rmd_grp_inv);
1154 
1155  $mtmpl = $this->object->getReminderMailTemplates();
1156  if($mtmpl)
1157  {
1158  $rmdt = new ilRadioGroupInputGUI($this->lng->txt("svy_reminder_mail_template"), "rmdt");
1159  $rmdt->setRequired(true);
1160  $rmdt->addOption(new ilRadioOption($this->lng->txt("svy_reminder_mail_template_none"), -1));
1161  foreach($mtmpl as $mtmpl_id => $mtmpl_caption)
1162  {
1163  $option = new ilRadioOption($mtmpl_caption, $mtmpl_id);
1164  $rmdt->addOption($option);
1165  }
1166  $rmdt->setValue($this->object->getReminderTemplate()
1167  ? $this->object->getReminderTemplate()
1168  : -1);
1169  $rmd->addSubItem($rmdt);
1170  }
1171  }
1172 
1173 
1174  // results
1175 
1177  $results->setTitle($this->lng->txt("results"));
1178  $form->addItem($results);
1179 
1180  // evaluation access
1181  if(!$this->object->get360Mode())
1182  {
1183  $evaluation_access = new ilRadioGroupInputGUI($this->lng->txt('evaluation_access'), "evaluation_access");
1184 
1185  $option = new ilCheckboxOption($this->lng->txt("evaluation_access_off"), ilObjSurvey::EVALUATION_ACCESS_OFF, '');
1186  $option->setInfo($this->lng->txt("svy_evaluation_access_off_info"));
1187  $evaluation_access->addOption($option);
1188 
1189  $option = new ilCheckboxOption($this->lng->txt("evaluation_access_all"), ilObjSurvey::EVALUATION_ACCESS_ALL, '');
1190  $option->setInfo($this->lng->txt("svy_evaluation_access_all_info"));
1191  $evaluation_access->addOption($option);
1192 
1193  $option = new ilCheckboxOption($this->lng->txt("evaluation_access_participants"), ilObjSurvey::EVALUATION_ACCESS_PARTICIPANTS, '');
1194  $option->setInfo($this->lng->txt("svy_evaluation_access_participants_info"));
1195  $evaluation_access->addOption($option);
1196 
1197  $evaluation_access->setValue($this->object->getEvaluationAccess());
1198  $form->addItem($evaluation_access);
1199 
1200 
1201  $anonymization_options = new ilRadioGroupInputGUI($this->lng->txt("survey_results_anonymization"), "anonymization_options");
1202 
1203  $option = new ilCheckboxOption($this->lng->txt("survey_results_personalized"), "statpers");
1204  $option->setInfo($this->lng->txt("survey_results_personalized_info"));
1205  $anonymization_options->addOption($option);
1206 
1207  $option = new ilCheckboxOption($this->lng->txt("survey_results_anonymized"), "statanon");
1208  $option->setInfo($this->lng->txt("survey_results_anonymized_info"));
1209  $anonymization_options->addOption($option);
1210  $anonymization_options->setValue($this->object->hasAnonymizedResults()
1211  ? "statanon"
1212  : "statpers");
1213  $form->addItem($anonymization_options);
1214 
1215  $surveySetting = new ilSetting("survey");
1216  if($surveySetting->get("anonymous_participants", false))
1217  {
1218  $min = "";
1219  if($surveySetting->get("anonymous_participants_min", 0))
1220  {
1221  $min = " (".$this->lng->txt("svy_anonymous_participants_min").": ".
1222  $surveySetting->get("anonymous_participants_min").")";
1223  }
1224 
1225  $anon_list = new ilCheckboxInputGUI($this->lng->txt("svy_anonymous_participants_svy"), "anon_list");
1226  $anon_list->setInfo($this->lng->txt("svy_anonymous_participants_svy_info").$min);
1227  $anon_list->setChecked($this->object->hasAnonymousUserList());
1228  $option->addSubItem($anon_list);
1229  }
1230 
1231  if ($this->object->_hasDatasets($this->object->getSurveyId()))
1232  {
1233  $anonymization_options->setDisabled(true);
1234  if($anon_list)
1235  {
1236  $anon_list->setDisabled(true);
1237  }
1238  }
1239  }
1240  // 360°
1241  else
1242  {
1243  $ts_results = new ilRadioGroupInputGUI($this->lng->txt("survey_360_results"), "ts_res");
1244  $ts_results->setValue($this->object->get360Results());
1245 
1246  $option = new ilRadioOption($this->lng->txt("survey_360_results_none"), ilObjSurvey::RESULTS_360_NONE);
1247  $option->setInfo($this->lng->txt("survey_360_results_none_info"));
1248  $ts_results->addOption($option);
1249 
1250  $option = new ilRadioOption($this->lng->txt("survey_360_results_own"), ilObjSurvey::RESULTS_360_OWN);
1251  $option->setInfo($this->lng->txt("survey_360_results_own_info"));
1252  $ts_results->addOption($option);
1253 
1254  $option = new ilRadioOption($this->lng->txt("survey_360_results_all"), ilObjSurvey::RESULTS_360_ALL);
1255  $option->setInfo($this->lng->txt("survey_360_results_all_info"));
1256  $ts_results->addOption($option);
1257  $form->addItem($ts_results);
1258  }
1259 
1260 
1261  // competence service activation for 360 mode
1262 
1263  include_once("./Services/Skill/classes/class.ilSkillManagementSettings.php");
1264  $skmg_set = new ilSkillManagementSettings();
1265  if($this->object->get360Mode() && $skmg_set->isActivated())
1266  {
1267  $other = new ilFormSectionHeaderGUI();
1268  $other->setTitle($this->lng->txt("other"));
1269  $form->addItem($other);
1270 
1271  $skill_service = new ilCheckboxInputGUI($this->lng->txt("survey_activate_skill_service"), "skill_service");
1272  $skill_service->setInfo($this->lng->txt("survey_activate_skill_service_info"));
1273  $skill_service->setChecked($this->object->get360SkillService());
1274  $form->addItem($skill_service);
1275  }
1276 
1277 
1278  $form->addCommandButton("saveProperties", $this->lng->txt("save"));
1279 
1280  // remove items when using template
1281  if($template_settings)
1282  {
1283  foreach($template_settings as $id => $item)
1284  {
1285  if($item["hide"])
1286  {
1287  $form->removeItemByPostVar($id);
1288  }
1289  }
1290  }
1291 
1292  return $form;
1293  }
static _lookupName($a_user_id)
lookup user name
This class represents an option in a radio group.
ILIAS Setting Class.
setDataSource($href, $a_delimiter=null)
set datasource link for js autocomplete
This class represents an option in a checkbox group.
const EVALUATION_ACCESS_OFF
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.
setValue($a_value)
Set Value.
This class represents a checkbox property in a property form.
const IL_CAL_UNIX
setDate(ilDateTime $a_date=NULL)
set date E.g $dt_form->setDate(new ilDateTime(time(),IL_CAL_UTC)); or $dt_form->setDate(new ilDateTim...
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.
setInfo($a_info)
Set Information Text.
$section
Definition: Utf8Test.php:83
setChecked($a_checked)
Set Checked.
$info
Definition: example_052.php:80
input GUI for a time span (start and end date)
This class represents a property in a property form.
Class for single dates.
const NOTIFICATION_PARENT_COURSE
$header
This class represents a number property in a property form.
setValue($a_value)
Set Value.
This class represents a text property in a property form.
& getGeneral()
Definition: class.ilMD.php:40
Date and time handling
$results
setShowTime($a_showtime)
Set Show Time Information.
const NOTIFICATION_INVITED_USERS
$txt
Definition: error.php:12
Create styles array
The data for the language used.
const EVALUATION_ACCESS_ALL
This class represents a non editable value in a property form.
Create new PHPExcel object
obj_idprivate
This class represents a text area property in a property form.
const IL_CAL_TIMESTAMP
setValue($a_value)
Set Value.
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 2226 of file class.ilObjSurveyGUI.php.

References $_POST, $_SESSION, $ilUser, ilUtil\is_email(), object, ilUtil\sendSuccess(), and sendUserResultsMail().

2227  {
2228  global $ilUser;
2229 
2230  $anonymous_code = $_SESSION["anonymous_id"][$this->object->getId()];
2231  $active_id = $this->object->getActiveID($ilUser->getId(), $anonymous_code, 0);
2232  if($this->object->isSurveyStarted($ilUser->getId(), $anonymous_code) !== 1 ||
2233  !$active_id)
2234  {
2235  $this->ctrl->redirect($this, "infoScreen");
2236  }
2237 
2238  $recipient = $_POST["mail"];
2239  if(!$recipient)
2240  {
2241  $recipient = $ilUser->getEmail();
2242  }
2243  if(!ilUtil::is_email($recipient))
2244  {
2245  $this->ctrl->redirect($this, "infoScreen");
2246  }
2247 
2248  $this->sendUserResultsMail($active_id, $recipient);
2249 
2250  ilUtil::sendSuccess($this->lng->txt("mail_sent"), true);
2251  $this->ctrl->redirect($this, "infoScreen");
2252  }
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
$_SESSION["AccountId"]
static is_email($a_email)
This preg-based function checks whether an e-mail address is formally valid.
$ilUser
Definition: imgupload.php:18
sendUserResultsMail($a_active_id, $a_recipient)
Create new PHPExcel object
obj_idprivate
$_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 1300 of file class.ilObjSurveyGUI.php.

References ilObjectGUI\checkPermission(), initPropertiesForm(), ilSettingsTemplate\lookupTitle(), and object.

Referenced by savePropertiesObject().

1301  {
1302  global $ilTabs, $ilHelp;
1303 
1304  $this->checkPermission("write");
1305 
1306  $ilTabs->activateTab("settings");
1307 
1308 
1309  if ($this->object->get360Mode())
1310  {
1311  $ilHelp->setScreenId("settings_360");
1312  }
1313 
1314  if(!$a_form)
1315  {
1316  $a_form = $this->initPropertiesForm();
1317  }
1318 
1319  // using template?
1320  $message = "";
1321  if($this->object->getTemplate())
1322  {
1323  $link = $this->ctrl->getLinkTarget($this, "confirmResetTemplate");
1324  $link = "<a href=\"".$link."\">".$this->lng->txt("survey_using_template_link")."</a>";
1325  $message = "<div style=\"margin-top:10px\">".
1326  $this->tpl->getMessageHTML(sprintf($this->lng->txt("survey_using_template"),
1327  ilSettingsTemplate::lookupTitle($this->object->getTemplate()), $link), "info"). // #10651
1328  "</div>";
1329  }
1330 
1331  $this->tpl->setContent($a_form->getHTML().$message);
1332  }
static lookupTitle($a_id)
Lookup title.
Create new PHPExcel object
obj_idprivate
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 1371 of file class.ilObjSurveyGUI.php.

References ilUtil\sendSuccess().

1372  {
1373  $this->object->setTemplate(null);
1374  $this->object->saveToDB();
1375 
1376  ilUtil::sendSuccess($this->lng->txt("survey_template_reset"), true);
1377  $this->ctrl->redirect($this, "properties");
1378  }
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
+ Here is the call graph for this function:

◆ savePropertiesObject()

ilObjSurveyGUI::savePropertiesObject ( )

Save the survey properties.

Save the survey properties

private

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

References $_POST, $_SESSION, $start, $valid, ilObjSurvey\_hasDatasets(), ilObjUser\_lookupId(), ilObjSurvey\ANONYMIZE_CODE_ALL, ilObjSurvey\ANONYMIZE_FREEACCESS, ilObjSurvey\ANONYMIZE_OFF, ilObjSurvey\ANONYMIZE_ON, array, ilMD\getGeneral(), IL_CAL_DATETIME, IL_CAL_UNIX, initPropertiesForm(), object, propertiesObject(), ilUtil\sendFailure(), ilUtil\sendSuccess(), string, ilUtil\stripSlashes(), and ilMDBase\update().

470  {
471  global $rbacsystem;
472 
473  $form = $this->initPropertiesForm();
474  if ($form->checkInput())
475  {
476  $valid = true;
477 
478  if(!$this->object->get360Mode())
479  {
480  if($form->getInput("tut"))
481  {
482  // check if given "tutors" have write permission
483  $tut_ids =array();
484  $tut_logins = $form->getInput("tut_ids");
485  foreach($tut_logins as $tut_login)
486  {
487  $tut_id = ilObjUser::_lookupId($tut_login);
488  if($tut_id && $rbacsystem->checkAccessOfUser($tut_id, "write", $this->object->getRefId()))
489  {
490  $tut_ids[] = $tut_id;
491  }
492  }
493  if(!$tut_ids)
494  {
495  $tut_ids = $form->getItemByPostVar("tut_ids");
496  $tut_ids->setAlert($this->lng->txt("survey_notification_tutor_recipients_invalid"));
497  $valid = false;
498  }
499  }
500  }
501 
502  if($valid)
503  {
504  if(!$this->object->get360Mode())
505  {
506  if($form->getInput("rmd"))
507  {
508  $rmd_start = $form->getItemByPostVar("rmd_start")->getDate();
509  $rmd_end = $form->getItemByPostVar("rmd_end")->getDate();
510  if($rmd_end)
511  {
512  if($rmd_start->get(IL_CAL_UNIX) > $rmd_end->get(IL_CAL_UNIX))
513  {
514  $tmp = $rmd_start;
515  $rmd_start = $rmd_end;
516  $rmd_end = $tmp;
517  }
518  }
519  $this->object->setReminderStatus(true);
520  $this->object->setReminderStart($rmd_start);
521  $this->object->setReminderEnd($rmd_end);
522  $this->object->setReminderFrequency($form->getInput("rmd_freq"));
523  $this->object->setReminderTarget($form->getInput("rmd_grp"));
524  $this->object->setReminderTemplate(($form->getInput("rmdt") > 0)
525  ? $form->getInput("rmdt")
526  : null);
527  }
528  else
529  {
530  $this->object->setReminderStatus(false);
531  }
532 
533  if($form->getInput("tut"))
534  {
535  $this->object->setTutorNotificationStatus(true);
536  $this->object->setTutorNotificationRecipients($tut_ids); // see above
537  $this->object->setTutorNotificationTarget($form->getInput("tut_grp"));
538  }
539  else
540  {
541  $this->object->setTutorNotificationStatus(false);
542  }
543  }
544 
545  // #10055
546  if ($_POST['online'] && count($this->object->questions) == 0)
547  {
548  $_POST['online'] = null;
549  ilUtil::sendFailure($this->lng->txt("cannot_switch_to_online_no_questions"), true);
550  }
551 
552  $template_settings = null;
553  $template = $this->object->getTemplate();
554  if($template)
555  {
556  include_once "Services/Administration/classes/class.ilSettingsTemplate.php";
557  $template = new ilSettingsTemplate($template);
558  $template_settings = $template->getSettings();
559  }
560 
561  include_once 'Services/MetaData/classes/class.ilMD.php';
562  $md_obj = new ilMD($this->object->getId(), 0, "svy");
563  $md_section = $md_obj->getGeneral();
564 
565  // title
566  $md_section->setTitle(ilUtil::stripSlashes($_POST['title']));
567  $md_section->update();
568 
569  // Description
570  $md_desc_ids = $md_section->getDescriptionIds();
571  if($md_desc_ids)
572  {
573  $md_desc = $md_section->getDescription(array_pop($md_desc_ids));
574  $md_desc->setDescription(ilUtil::stripSlashes($_POST['description']));
575  $md_desc->update();
576  }
577 
578  $this->object->setViewOwnResults($_POST["view_own"]);
579  $this->object->setMailOwnResults($_POST["mail_own"]);
580  $this->object->setMailConfirmation($_POST["mail_confirm"]);
581 
582  // both are saved in object, too
583  $this->object->setTitle(ilUtil::stripSlashes($_POST['title']));
584  $this->object->setDescription(ilUtil::stripSlashes($_POST['description']));
585  $this->object->update();
586 
587  $this->object->setStatus($_POST['online']);
588 
589  // activation
590  $period = $form->getItemByPostVar("access_period");
591  if($period->getStart() && $period->getEnd())
592  {
593  $this->object->setActivationLimited(true);
594  $this->object->setActivationVisibility($_POST["access_visiblity"]);
595  $this->object->setActivationStartDate($period->getStart()->get(IL_CAL_UNIX));
596  $this->object->setActivationEndDate($period->getEnd()->get(IL_CAL_UNIX));
597  }
598  else
599  {
600  $this->object->setActivationLimited(false);
601  }
602 
603  if(!$template_settings["enabled_start_date"]["hide"])
604  {
605  $start = $form->getItemByPostVar("start_date");
606  if($start->getDate())
607  {
608  $datetime = explode(" ", $start->getDate()->get(IL_CAL_DATETIME));
609  $this->object->setStartDateAndTime($datetime[0], $datetime[1]);
610  }
611  else
612  {
613  $this->object->setStartDate(null);
614  }
615  }
616 
617  if(!$template_settings["enabled_end_date"]["hide"])
618  {
619  $end = $form->getItemByPostVar("end_date");
620  if($end->getDate())
621  {
622  $datetime = explode(" ", $end->getDate()->get(IL_CAL_DATETIME));
623  $this->object->setEndDateAndTime($datetime[0], $datetime[1]);
624  }
625  else
626  {
627  $this->object->setEndDate(null);
628  }
629  }
630 
631 
632  include_once "./Services/AdvancedEditing/classes/class.ilObjAdvancedEditing.php";
633  $introduction = $_POST["introduction"];
634  $this->object->setIntroduction($introduction);
635  $outro = $_POST["outro"];
636  $this->object->setOutro($outro);
637 
638  if(!$template_settings["show_question_titles"]["hide"])
639  {
640  $this->object->setShowQuestionTitles($_POST["show_question_titles"]);
641  }
642 
643  if(!$template_settings["use_pool"]["hide"])
644  {
645  $this->object->setPoolUsage($_POST["use_pool"]);
646  }
647 
648  $this->object->setMailNotification($_POST['mailnotification']);
649  $this->object->setMailAddresses($_POST['mailaddresses']);
650  $this->object->setMailParticipantData($_POST['mailparticipantdata']);
651 
652  // 360°
653  if($this->object->get360Mode())
654  {
655  $this->object->set360SelfEvaluation((bool)$_POST["self_eval"]);
656  $this->object->set360SelfAppraisee((bool)$_POST["self_appr"]);
657  $this->object->set360SelfRaters((bool)$_POST["self_rate"]);
658  $this->object->set360Results((int)$_POST["ts_res"]);;
659  $this->object->set360SkillService((int)$_POST["skill_service"]);
660  }
661  else
662  {
663  if(!$template_settings["evaluation_access"]["hide"])
664  {
665  $this->object->setEvaluationAccess($_POST["evaluation_access"]);
666  }
667 
668  $hasDatasets = ilObjSurvey::_hasDatasets($this->object->getSurveyId());
669  if (!$hasDatasets)
670  {
671  $hide_codes = $template_settings["acc_codes"]["hide"];
672  $hide_anon = $template_settings["anonymization_options"]["hide"];
673  if(!$hide_codes || !$hide_anon)
674  {
675  $current = $this->object->getAnonymize();
676 
677  // get current setting if property is hidden
678  if(!$hide_codes)
679  {
680  $codes = (bool)$_POST["acc_codes"];
681  }
682  else
683  {
684  $codes = ($current == ilObjSurvey::ANONYMIZE_CODE_ALL ||
685  $current == ilObjSurvey::ANONYMIZE_ON);
686  }
687  if(!$hide_anon)
688  {
689  $anon = ((string)$_POST["anonymization_options"] == "statanon");
690  }
691  else
692  {
693  $anon = ($current == ilObjSurvey::ANONYMIZE_FREEACCESS ||
694  $current == ilObjSurvey::ANONYMIZE_ON);
695  }
696 
697  // parse incoming values
698  if (!$anon)
699  {
700  if (!$codes)
701  {
702  $this->object->setAnonymize(ilObjSurvey::ANONYMIZE_OFF);
703  }
704  else
705  {
706  $this->object->setAnonymize(ilObjSurvey::ANONYMIZE_CODE_ALL);
707  }
708  }
709  else
710  {
711  if ($codes)
712  {
713  $this->object->setAnonymize(ilObjSurvey::ANONYMIZE_ON);
714  }
715  else
716  {
717  $this->object->setAnonymize(ilObjSurvey::ANONYMIZE_FREEACCESS);
718  }
719 
720  $this->object->setAnonymousUserList($_POST["anon_list"]);
721  }
722 
723  // if settings were changed get rid of existing code
724  unset($_SESSION["anonymous_id"][$this->object->getId()]);
725  }
726  }
727  }
728 
729  $this->object->saveToDb();
730 
731  if (strcmp($_SESSION["info"], "") != 0)
732  {
733  ilUtil::sendSuccess($_SESSION["info"] . "<br />" . $this->lng->txt("settings_saved"), true);
734  }
735  else
736  {
737  ilUtil::sendSuccess($this->lng->txt("settings_saved"), true);
738  }
739  $this->ctrl->redirect($this, "properties");
740  }
741  else
742  {
743  // #16714
744  ilUtil::sendFailure($this->lng->txt("form_input_not_valid"));
745  }
746  }
747 
748  $form->setValuesByPost();
749  $this->propertiesObject($form);
750  }
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
const IL_CAL_DATETIME
$_SESSION["AccountId"]
static _hasDatasets($survey_id)
$valid
static _lookupId($a_user_str)
Lookup id by login.
Add rich text string
The name of the decorator.
const IL_CAL_UNIX
const ANONYMIZE_FREEACCESS
& getGeneral()
Definition: class.ilMD.php:40
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
Create styles array
The data for the language used.
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.
Create new PHPExcel object
obj_idprivate
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 2183 of file class.ilObjSurveyGUI.php.

References $ilUser, ilLink\_getLink(), array, ilDatePresentation\formatDate(), getUserResultsPlain(), IL_CAL_UNIX, and object.

Referenced by mailUserResultsObject().

2184  {
2185  global $ilUser;
2186 
2187  $finished = $this->object->getSurveyParticipants(array($a_active_id));
2188  $finished = array_pop($finished);
2189  $finished = ilDatePresentation::formatDate(new ilDateTime($finished["finished_tstamp"], IL_CAL_UNIX));
2190 
2191  require_once "Services/Mail/classes/class.ilMail.php";
2192  require_once "Services/Link/classes/class.ilLink.php";
2193 
2194  $body = ilMail::getSalutation($ilUser->getId())."\n\n";
2195  $body .= $this->lng->txt("svy_mail_own_results_body")."\n";
2196  $body .= "\n".$this->lng->txt("obj_svy").": ".$this->object->getTitle()."\n";
2197  $body .= ilLink::_getLink($this->object->getRefId(), "svy")."\n";
2198  $body .= "\n".$this->lng->txt("survey_results_finished").": ".$finished."\n\n";
2199 
2200  if($this->object->hasMailOwnResults())
2201  {
2202  $subject = "svy_mail_own_results_subject";
2203  $body .= $this->getUserResultsPlain($a_active_id);
2204  }
2205  else
2206  {
2207  $subject = "svy_mail_confirmation_subject";
2208  }
2209 
2210  // $body .= ilMail::_getAutoGeneratedMessageString($this->lng);
2211  $body .= ilMail::_getInstallationSignature();
2212 
2213  require_once "Services/Mail/classes/class.ilMail.php";
2214  $mail = new ilMail(ANONYMOUS_USER_ID);
2215  $mail->sendMimeMail(
2216  $a_recipient,
2217  null,
2218  null,
2219  sprintf($this->lng->txt($subject), $this->object->getTitle()),
2220  $body,
2221  null,
2222  true
2223  );
2224  }
getUserResultsPlain($a_active_id)
const IL_CAL_UNIX
This class handles base functions for mail handling.
static formatDate(ilDateTime $date)
Format a date public.
Date and time handling
$ilUser
Definition: imgupload.php:18
Create styles array
The data for the language used.
Create new PHPExcel object
obj_idprivate
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ viewUserResultsObject()

ilObjSurveyGUI::viewUserResultsObject ( )
protected

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

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

2045  {
2046  global $ilUser, $tpl, $ilTabs;
2047 
2048  $anonymous_code = $_SESSION["anonymous_id"][$this->object->getId()];
2049  $active_id = $this->object->getActiveID($ilUser->getId(), $anonymous_code, 0);
2050  if($this->object->isSurveyStarted($ilUser->getId(), $anonymous_code) !== 1 ||
2051  !$active_id)
2052  {
2053  $this->ctrl->redirect($this, "infoScreen");
2054  }
2055 
2056  $ilTabs->clearTargets();
2057  $ilTabs->setBackTarget($this->lng->txt("btn_back"),
2058  $this->ctrl->getLinkTarget($this, "infoScreen"));
2059 
2060  $html = $this->getUserResultsTable($active_id);
2061  $tpl->setContent($html);
2062  }
$_SESSION["AccountId"]
$ilUser
Definition: imgupload.php:18
Create new PHPExcel object
obj_idprivate
getUserResultsTable($a_active_id)
$html
Definition: example_001.php:87
+ Here is the call graph for this function:

Field Documentation

◆ $log

ilObjSurveyGUI::$log
protected

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


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