ILIAS  release_7 Revision v7.30-3-g800a261c036
ilSurveyExecutionGUI Class Reference

Survey execution graphical output. More...

+ Collaboration diagram for ilSurveyExecutionGUI:

Public Member Functions

 __construct ($a_object)
 ilSurveyExecutionGUI constructor More...
 
 executeCommand ()
 execute command More...
 
 getCommand ($cmd)
 Retrieves the ilCtrl command. More...
 
 resume ()
 Resumes the survey. More...
 
 start ($resume=false)
 Starts the survey. More...
 
 redirectQuestion ()
 Called when a user answered a page to perform a redirect after POST. More...
 
 previousNoSave ()
 
 previous ($a_save_input=true)
 Navigates to the previous pages. More...
 
 next ()
 Navigates to the next pages. More...
 
 gotoPage ()
 Go to a specific page without saving. More...
 
 outSurveyPage ($activepage=null, $direction=null)
 Output of the active survey question to the screen. More...
 
 saveUserInput ($navigationDirection="next")
 Save the user's input. More...
 
 saveActiveQuestionData (&$data)
 Survey navigation. More...
 
 cancel ()
 Called on cancel. More...
 
 runShowFinishedPage ()
 Creates the finished page for a running survey. More...
 
 backToRepository ()
 
 exitSurvey ()
 Exits the survey after finishing it. More...
 
 outNavigationButtons ($navigationblock="top", $page, $stpl)
 Creates the navigation buttons for a survey. More...
 
 preview ()
 
 viewUserResults ()
 
 mailUserResults ()
 
 showFinishConfirmation ()
 
 confirmedFinish ()
 

Data Fields

 $object
 
 $lng
 
 $tpl
 
 $ctrl
 
 $tree
 
 $preview
 

Protected Member Functions

 checkAuth ($a_may_start=false, $a_ignore_status=false)
 
 compressQuestion ($previous_page, $page)
 

Protected Attributes

 $rbacsystem
 
 $user
 
 $help
 
 $toolbar
 
 $log
 

Detailed Description

Survey execution graphical output.

The ilSurveyExecutionGUI class creates the execution output for the ilObjSurveyGUI class. This saves some heap space because the ilObjSurveyGUI class will be smaller.

Author
Helmut Schottmüller helmu.nosp@m.t.sc.nosp@m.hottm.nosp@m.uell.nosp@m.er@ma.nosp@m.c.co.nosp@m.m
Version
$Id$

Definition at line 35 of file class.ilSurveyExecutionGUI.php.

Constructor & Destructor Documentation

◆ __construct()

ilSurveyExecutionGUI::__construct (   $a_object)

ilSurveyExecutionGUI constructor

The constructor takes possible arguments an creates an instance of the ilSurveyExecutionGUI object.

Parameters
object$a_objectAssociated ilObjSurvey class @access public

Definition at line 77 of file class.ilSurveyExecutionGUI.php.

78 {
79 global $DIC;
80
81 $this->rbacsystem = $DIC->rbac()->system();
82 $this->user = $DIC->user();
83 $this->help = $DIC["ilHelp"];
84 $this->toolbar = $DIC->toolbar();
85 $lng = $DIC->language();
86 $tpl = $DIC["tpl"];
87 $ilCtrl = $DIC->ctrl();
88 $tree = $DIC->repositoryTree();
89
90 $this->lng = $lng;
91 $this->tpl = $tpl;
92 $this->ctrl = $ilCtrl;
93 $this->object = $a_object;
94 $this->tree = $tree;
95
96 $this->external_rater_360 = false;
97 if ($this->object->get360Mode() &&
98 $_SESSION["anonymous_id"][$this->object->getId()] &&
100 $this->object->getRefId(),
101 $_SESSION["anonymous_id"][$this->object->getId()]
102 )) {
103 $this->external_rater_360 = true;
104 }
105
106 // stay in preview mode
107 $this->preview = (bool) $_REQUEST["prvw"];
108 $this->ctrl->saveParameter($this, "prvw");
109 $this->ctrl->saveParameter($this, "pgov");
110
111 $this->log = ilLoggerFactory::getLogger("svy");
112 }
user()
Definition: user.php:4
$_SESSION["AccountId"]
static getLogger($a_component_id)
Get component logger.
static validateExternalRaterCode($a_ref_id, $a_code)
global $DIC
Definition: goto.php:24
help()
Definition: help.php:2

References $_SESSION, $DIC, $lng, $tpl, $tree, ilLoggerFactory\getLogger(), help(), preview(), user(), and ilObjSurvey\validateExternalRaterCode().

+ Here is the call graph for this function:

Member Function Documentation

◆ backToRepository()

ilSurveyExecutionGUI::backToRepository ( )

Definition at line 806 of file class.ilSurveyExecutionGUI.php.

807 {
809
810 // #14971
811 if ($this->object->get360Mode()) {
812 $target_ref_id = $this->object->getRefId();
813 } else {
814 // #11534
815 $target_ref_id = $tree->getParentId($this->object->getRefId());
816 }
817
818 ilUtil::redirect(ilLink::_getLink($target_ref_id));
819 }
static redirect($a_script)

References $tree, ilLink\_getLink(), and ilUtil\redirect().

Referenced by exitSurvey(), mailUserResults(), and viewUserResults().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cancel()

ilSurveyExecutionGUI::cancel ( )

Called on cancel.

Called on cancel

@access private

Definition at line 721 of file class.ilSurveyExecutionGUI.php.

722 {
723 $this->ctrl->redirectByClass("ilobjsurveygui", "infoScreen");
724 }

◆ checkAuth()

ilSurveyExecutionGUI::checkAuth (   $a_may_start = false,
  $a_ignore_status = false 
)
protected

Definition at line 146 of file class.ilSurveyExecutionGUI.php.

147 {
150
151 if ($this->preview) {
152 if (!$rbacsystem->checkAccess("write", $this->object->ref_id)) {
153 // only with write access it is possible to preview the survey
154 throw new ilSurveyException($this->lng->txt("survey_cannot_preview_survey"));
155 }
156
157 return true;
158 }
159
160 if (!$this->external_rater_360 &&
161 !$rbacsystem->checkAccess("read", $this->object->ref_id)) {
162 // only with read access it is possible to run the test
163 throw new ilSurveyException($this->lng->txt("cannot_read_survey"));
164 }
165
166 $user_id = $ilUser->getId();
167
168 // check existing code
169 // see ilObjSurveyGUI::infoScreen()
170 $anonymous_id = $anonymous_code = null;
171 if ($this->object->getAnonymize() || !$this->object->isAccessibleWithoutCode()) {
172 $anonymous_code = $_SESSION["anonymous_id"][$this->object->getId()];
173 $anonymous_id = $this->object->getAnonymousIdByCode($anonymous_code);
174 if (!$anonymous_id) {
175 ilUtil::sendFailure(sprintf($this->lng->txt("error_retrieving_anonymous_survey"), $anonymous_code, true));
176 $this->ctrl->redirectByClass("ilobjsurveygui", "infoScreen");
177 }
178 }
179
180 // appraisee validation
181 $appr_id = 0;
182 if ($this->object->get360Mode()) {
183 $appr_id = $_REQUEST["appr_id"];
184 if (!$appr_id) {
185 $appr_id = $_SESSION["appr_id"][$this->object->getId()];
186 }
187 // check if appraisee is valid
188 if ($anonymous_id) {
189 $appraisees = $this->object->getAppraiseesToRate(0, $anonymous_id);
190 }
191 if (!$appraisees && $user_id != ANONYMOUS_USER_ID) {
192 $appraisees = $this->object->getAppraiseesToRate($user_id);
193 }
194 if (!in_array($appr_id, $appraisees)) {
195 ilUtil::sendFailure($this->lng->txt("survey_360_execution_invalid_appraisee"), true);
196 $this->ctrl->redirectByClass("ilobjsurveygui", "infoScreen");
197 }
198 }
199 //Self evaluation mode
200 #23575 in self eval the appraisee is the current user.
201 if ($this->object->getMode() == ilObjSurvey::MODE_SELF_EVAL) {
202 $appr_id = $ilUser->getId();
203 }
204
205 $_SESSION["appr_id"][$this->object->getId()] = $appr_id;
206
207 if (!$a_ignore_status) {
208 $status = $this->object->isSurveyStarted($user_id, $anonymous_code, $appr_id);
209 // completed
210 if ($status === 1) {
211 ilUtil::sendFailure($this->lng->txt("already_completed_survey"), true);
212 $this->ctrl->redirectByClass("ilobjsurveygui", "infoScreen");
213 }
214 // starting
215 elseif ($status === false) {
216 if ($a_may_start) {
217 $_SESSION["finished_id"][$this->object->getId()] =
218 $this->object->startSurvey($user_id, $anonymous_code, $appr_id);
219 } else {
220 ilUtil::sendFailure($this->lng->txt("survey_use_start_button"), true);
221 $this->ctrl->redirectByClass("ilobjsurveygui", "infoScreen");
222 }
223 }
224 // resuming
225 else {
226 // nothing todo
227 }
228 }
229
230 // validate finished id
231 if ($this->object->getActiveID($user_id, $anonymous_code, $appr_id) !=
232 $_SESSION["finished_id"][$this->object->getId()]) {
233 ilUtil::sendFailure($this->lng->txt("cannot_read_survey"), true);
234 $this->ctrl->redirectByClass("ilobjsurveygui", "infoScreen");
235 }
236 }
Survey exception class.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
const ANONYMOUS_USER_ID
Definition: constants.php:25
$ilUser
Definition: imgupload.php:18

References $_SESSION, $ilUser, $rbacsystem, $user, ANONYMOUS_USER_ID, ilObjSurvey\MODE_SELF_EVAL, preview(), and ilUtil\sendFailure().

Referenced by mailUserResults(), outSurveyPage(), start(), and viewUserResults().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ compressQuestion()

ilSurveyExecutionGUI::compressQuestion (   $previous_page,
  $page 
)
protected
Parameters
array$previous_page
array$page
Returns
bool

Definition at line 578 of file class.ilSurveyExecutionGUI.php.

579 {
580 if (!$previous_page) {
581 return false;
582 }
583
584 if ($previous_page["type_tag"] === $page["type_tag"] &&
585 $page["type_tag"] === "SurveySingleChoiceQuestion") {
586 if (SurveySingleChoiceQuestion::compressable($previous_page["question_id"], $page["question_id"])) {
587 return true;
588 }
589 }
590
591 return false;
592 }

References SurveySingleChoiceQuestion\compressable().

Referenced by outSurveyPage().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ confirmedFinish()

ilSurveyExecutionGUI::confirmedFinish ( )

Definition at line 935 of file class.ilSurveyExecutionGUI.php.

936 {
938
939 if (!$this->preview) {
940 $this->object->finishSurvey($_SESSION["finished_id"][$this->object->getId()]);
941
942 if ($ilUser->getId() != ANONYMOUS_USER_ID) {
943 ilLPStatusWrapper::_updateStatus($this->object->getId(), $ilUser->getId());
944 }
945
946 if ($this->object->getMailNotification()) {
947 $this->object->sendNotificationMail(
948 $ilUser->getId(),
949 $_SESSION["anonymous_id"][$this->object->getId()],
950 $_SESSION["appr_id"][$this->object->getId()]
951 );
952 }
953 }
954
955 $this->ctrl->redirect($this, "runShowFinishedPage");
956 }
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_force_raise=false)
Update status.

References $_SESSION, $ilUser, $user, ilLPStatusWrapper\_updateStatus(), ANONYMOUS_USER_ID, and preview().

+ Here is the call graph for this function:

◆ executeCommand()

ilSurveyExecutionGUI::executeCommand ( )

execute command

Definition at line 117 of file class.ilSurveyExecutionGUI.php.

118 {
119 // record read event for lp
121 'svy',
122 $this->object->getRefId(),
123 $this->object->getId(),
124 $GLOBALS['DIC']->user()->getId()
125 );
126
127 $cmd = $this->ctrl->getCmd();
128 $next_class = $this->ctrl->getNextClass($this);
129
130 $cmd = $this->getCommand($cmd);
131
132 $this->log->debug("- cmd= " . $cmd);
133
134 if (strlen($cmd) == 0) {
135 $this->ctrl->setParameter($this, "qid", $_GET["qid"]);
136 $this->ctrl->redirect($this, "gotoPage");
137 }
138 switch ($next_class) {
139 default:
140 $ret = &$this->$cmd();
141 break;
142 }
143 return $ret;
144 }
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
Definition: PEAR.php:64
$_GET["client_id"]
static _recordReadEvent( $a_type, $a_ref_id, $obj_id, $usr_id, $isCatchupWriteEvents=true, $a_ext_rc=false, $a_ext_time=false)
Records a read event and catches up with write events.
getCommand($cmd)
Retrieves the ilCtrl command.
$ret
Definition: parser.php:6

References $_GET, $GLOBALS, $ret, ilChangeEvent\_recordReadEvent(), and getCommand().

+ Here is the call graph for this function:

◆ exitSurvey()

ilSurveyExecutionGUI::exitSurvey ( )

Exits the survey after finishing it.

Exits the survey after finishing it

@access public

Definition at line 828 of file class.ilSurveyExecutionGUI.php.

829 {
830 if (!$this->preview) {
831 $this->backToRepository();
832 } else {
833 // #12841
834 $this->ctrl->setParameterByClass("ilsurveyeditorgui", "pgov", $_REQUEST["pgov"]);
835 $this->ctrl->redirectByClass(array("ilobjsurveygui", "ilsurveyeditorgui"), "questions");
836 }
837 }

References backToRepository(), and preview().

Referenced by runShowFinishedPage().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getCommand()

ilSurveyExecutionGUI::getCommand (   $cmd)

Retrieves the ilCtrl command.

Retrieves the ilCtrl command

@access public

Definition at line 245 of file class.ilSurveyExecutionGUI.php.

246 {
247 return $cmd;
248 }

Referenced by executeCommand().

+ Here is the caller graph for this function:

◆ gotoPage()

ilSurveyExecutionGUI::gotoPage ( )

Go to a specific page without saving.

@access private

Definition at line 369 of file class.ilSurveyExecutionGUI.php.

370 {
371 $this->ctrl->setParameter($this, "activecommand", "gotoPage");
372 $this->ctrl->setParameter($this, "qid", $_GET["qid"]);
373 $this->ctrl->setParameter($this, "direction", "0");
374 $this->ctrl->redirect($this, "redirectQuestion");
375 }

References $_GET.

◆ mailUserResults()

ilSurveyExecutionGUI::mailUserResults ( )

Definition at line 893 of file class.ilSurveyExecutionGUI.php.

894 {
896
897 if (!$this->object->hasMailConfirmation()) {
898 $this->backToRepository();
899 }
900
901 $this->checkAuth(false, true);
902
903 $recipient = $_POST["mail"];
904 if (!$recipient) {
905 $recipient = $ilUser->getEmail();
906 }
907 if (!ilUtil::is_email($recipient)) {
908 $this->ctrl->redirect($this, "runShowFinishedPage");
909 }
910
911 $survey_gui = new ilObjSurveyGUI();
912 $survey_gui->sendUserResultsMail(
913 $_SESSION["finished_id"][$this->object->getId()],
914 $recipient
915 );
916
917 ilUtil::sendSuccess($this->lng->txt("mail_sent"), true);
918 $this->ctrl->redirect($this, "runShowFinishedPage");
919 }
$_POST["username"]
Class ilObjSurveyGUI.
checkAuth($a_may_start=false, $a_ignore_status=false)
static is_email($a_email, ilMailRfc822AddressParserFactory $mailAddressParserFactory=null)
This preg-based function checks whether an e-mail address is formally valid.

References $_POST, $_SESSION, $ilUser, $user, backToRepository(), checkAuth(), and ilUtil\is_email().

+ Here is the call graph for this function:

◆ next()

ilSurveyExecutionGUI::next ( )

Navigates to the next pages.

@access private

Definition at line 351 of file class.ilSurveyExecutionGUI.php.

352 {
353 $result = $this->saveUserInput("next");
354 $this->ctrl->setParameter($this, "activecommand", "next");
355 $this->ctrl->setParameter($this, "qid", $_GET["qid"]);
356 if (strlen($result)) {
357 $this->ctrl->setParameter($this, "direction", "0");
358 } else {
359 $this->ctrl->setParameter($this, "direction", "1");
360 }
361 $this->ctrl->redirect($this, "redirectQuestion");
362 }
$result
saveUserInput($navigationDirection="next")
Save the user's input.

References $_GET, $result, and saveUserInput().

+ Here is the call graph for this function:

◆ outNavigationButtons()

ilSurveyExecutionGUI::outNavigationButtons (   $navigationblock = "top",
  $page,
  $stpl 
)

Creates the navigation buttons for a survey.

Creates the navigation buttons for a survey. Runs twice to generate a top and a bottom navigation to ease the use of long forms.

@access public

Definition at line 848 of file class.ilSurveyExecutionGUI.php.

849 {
850 $prevpage = $this->object->getNextPage($page[0]["question_id"], -1);
851 $stpl->setCurrentBlock($navigationblock . "_prev");
852 if ($prevpage === 0) {
853 $stpl->setVariable("BTN_PREV", $this->lng->txt("survey_start"));
854 } else {
855 $stpl->setVariable("BTN_PREV", $this->lng->txt("survey_previous"));
856 }
857 $stpl->parseCurrentBlock();
858 $nextpage = $this->object->getNextPage($page[0]["question_id"], 1);
859 $stpl->setCurrentBlock($navigationblock . "_next");
860 if ($nextpage === 1) {
861 $stpl->setVariable("BTN_NEXT", $this->lng->txt("survey_finish"));
862 } else {
863 $stpl->setVariable("BTN_NEXT", $this->lng->txt("survey_next"));
864 }
865 $stpl->parseCurrentBlock();
866 }

Referenced by outSurveyPage().

+ Here is the caller graph for this function:

◆ outSurveyPage()

ilSurveyExecutionGUI::outSurveyPage (   $activepage = null,
  $direction = null 
)

Output of the active survey question to the screen.

Output of the active survey question to the screen

@access private

Definition at line 384 of file class.ilSurveyExecutionGUI.php.

385 {
387
388 $this->checkAuth();
389
390 $page = $this->object->getNextPage($activepage, $direction);
391 $constraint_true = 0;
392
393 // check for constraints
394 if (is_array($page[0]["constraints"]) && count($page[0]["constraints"])) {
395 $this->log->debug("Page constraints= ", $page[0]["constraints"]);
396
397 while (is_array($page) and ($constraint_true == 0) and (count($page[0]["constraints"]))) {
398 $constraint_true = ($page[0]['constraints'][0]['conjunction'] == 0) ? true : false;
399 foreach ($page[0]["constraints"] as $constraint) {
400 if (!$this->preview) {
401 $working_data = $this->object->loadWorkingData($constraint["question"], $_SESSION["finished_id"][$this->object->getId()]);
402 } else {
403 $working_data = $_SESSION["preview_data"][$this->object->getId()][$constraint["question"]];
404 }
405 if ($constraint['conjunction'] == 0) {
406 // and
407 $constraint_true = $constraint_true & $this->object->checkConstraint($constraint, $working_data);
408 } else {
409 // or
410 $constraint_true = $constraint_true | $this->object->checkConstraint($constraint, $working_data);
411 }
412 }
413 if ($constraint_true == 0) {
414 // #11047 - we are skipping the page, so we have to get rid of existing answers for that question(s)
415 foreach ($page as $page_question) {
416 $qid = $page_question["question_id"];
417
418 // see saveActiveQuestionData()
419 if (!$this->preview) {
420 $this->object->deleteWorkingData($qid, $_SESSION["finished_id"][$this->object->getId()]);
421 } else {
422 $_SESSION["preview_data"][$this->object->getId()][$qid] = null;
423 }
424 }
425
426 $page = $this->object->getNextPage($page[0]["question_id"], $direction);
427 }
428 }
429 }
430
431 $first_question = -1;
432 if ($page === 0) {
433 $this->ctrl->redirectByClass("ilobjsurveygui", "infoScreen");
434 } elseif ($page === 1) {
435 $state = $this->object->getUserSurveyExecutionStatus();
436 if ($this->preview ||
437 !$state["runs"][$_SESSION["finished_id"][$this->object->getId()]]["finished"]) {
438 $this->showFinishConfirmation();
439 } else {
440 $this->runShowFinishedPage();
441 }
442 return;
443 } else {
444 $ilHelp = $this->help;
445 $ilHelp->setScreenIdComponent("svy");
446 $ilHelp->setScreenId("quest_presentation");
447
448 if ($ilUser->getId() != ANONYMOUS_USER_ID) {
449 ilLearningProgress::_tracProgress($ilUser->getId(), $this->object->getId(), $this->object->ref_id, "svy");
450 }
451
452 $required = false;
453 //$this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_svy_svy_content.html", "Modules/Survey");
454 $stpl = new ilTemplate("tpl.il_svy_svy_content.html", true, true, "Modules/Survey");
455
456 if ($this->object->get360Mode()) {
457 $appr_id = $_SESSION["appr_id"][$this->object->getId()];
458
459 $this->tpl->setTitle($this->object->getTitle() . " (" .
460 $this->lng->txt("survey_360_appraisee") . ": " .
461 ilUserUtil::getNamePresentation($appr_id) . ")");
462 }
463
464 if (!($this->object->getAnonymize() && $this->object->isAccessibleWithoutCode() && ($ilUser->getId() == ANONYMOUS_USER_ID))) {
465 $stpl->setCurrentBlock("suspend_survey");
466
467 if (!$this->preview) {
468 $stpl->setVariable("TEXT_SUSPEND", $this->lng->txt("cancel_survey"));
469 $stpl->setVariable("HREF_SUSPEND", $this->ctrl->getLinkTargetByClass("ilObjSurveyGUI", "infoScreen"));
470 } else {
471 $this->ctrl->setParameterByClass("ilObjSurveyGUI", "pgov", $_REQUEST["pgov"]);
472 $stpl->setVariable("TEXT_SUSPEND", $this->lng->txt("survey_cancel_preview"));
473 $stpl->setVariable("HREF_SUSPEND", $this->ctrl->getLinkTargetByClass(array("ilObjSurveyGUI", "ilSurveyEditorGUI"), "questions"));
474 }
475
476 $stpl->setVariable("ALT_IMG_SUSPEND", $this->lng->txt("cancel_survey"));
477 $stpl->setVariable("TITLE_IMG_SUSPEND", $this->lng->txt("cancel_survey"));
478 $stpl->parseCurrentBlock();
479 }
480 $this->outNavigationButtons("top", $page, $stpl);
481
482
483 $stpl->setCurrentBlock("percentage");
484
485 $percentage = (int) (($page[0]["position"]) * 100);
486
488 $pbar->setCurrent($percentage);
489 $stpl->setVariable("NEW_PBAR", $pbar->render());
490
491 $stpl->parseCurrentBlock();
492
493
494 if (count($page) > 1 && $page[0]["questionblock_show_blocktitle"]) {
495 $stpl->setCurrentBlock("questionblock_title");
496 $stpl->setVariable("TEXT_QUESTIONBLOCK_TITLE", $page[0]["questionblock_title"]);
497 $stpl->parseCurrentBlock();
498 }
499 $compress_view = false;
500 if (count($page) > 1) {
501 $compress_view = $page[0]["questionblock_compress_view"];
502 }
503 $previous_page = null;
504
505 // set compress view flags
506 $previous_key = null;
507 foreach ($page as $k => $data) {
508 $page[$k]["compressed"] = false;
509 $page[$k]["compressed_first"] = false;
510 if ($compress_view && $this->compressQuestion($previous_page, $data)) {
511 $page[$k]["compressed"] = true;
512 if ($previous_key !== null && $page[$previous_key]["compressed"] == false) {
513 $page[$previous_key]["compressed_first"] = true;
514 }
515 }
516 $previous_key = $k;
517 $previous_page = $data;
518 }
519 foreach ($page as $data) {
520 if ($data["heading"]) {
521 $stpl->setCurrentBlock("heading");
522 $stpl->setVariable("QUESTION_HEADING", $data["heading"]);
523 $stpl->parseCurrentBlock();
524 }
525 $stpl->setCurrentBlock("survey_content");
526 if ($first_question == -1) {
527 $first_question = $data["question_id"];
528 }
529 $question_gui = $this->object->getQuestionGUI($data["type_tag"], $data["question_id"]);
530 if (is_array($_SESSION["svy_errors"])) {
531 $working_data = &$question_gui->object->getWorkingDataFromUserInput($_SESSION["postdata"]);
532 } else {
533 $working_data = $this->object->loadWorkingData($data["question_id"], $_SESSION["finished_id"][$this->object->getId()]);
534 }
535 $question_gui->object->setObligatory($data["obligatory"]);
536 $error_messages = array();
537 if (is_array($_SESSION["svy_errors"])) {
538 $error_messages = $_SESSION["svy_errors"];
539 }
540 $show_questiontext = ($data["questionblock_show_questiontext"]) ? 1 : 0;
541 $show_title = ($this->object->getShowQuestionTitles() && !$data["compressed_first"]);
542 $question_output = $question_gui->getWorkingForm($working_data, $show_title, $show_questiontext, $error_messages[$data["question_id"]], $this->object->getSurveyId(), $compress_view);
543 if ($data["compressed"]) {
544 $question_output = '<div class="il-svy-qst-compressed">' . $question_output . '</div>';
545 }
546 $stpl->setVariable("QUESTION_OUTPUT", $question_output);
547 $this->ctrl->setParameter($this, "qid", $data["question_id"]);
548 //$this->tpl->parse("survey_content");
549 if ($data["obligatory"]) {
550 $required = true;
551 }
552 $stpl->parseCurrentBlock();
553 }
554 if ($required) {
555 $stpl->setCurrentBlock("required");
556 $stpl->setVariable("TEXT_REQUIRED", $this->lng->txt("required_field"));
557 $stpl->parseCurrentBlock();
558 }
559
560 $this->outNavigationButtons("bottom", $page, $stpl);
561
562 $stpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this, "redirectQuestion"));
563 }
564 $this->tpl->setContent($stpl->get());
565
566 if (!$this->preview) {
567 $this->object->setPage($_SESSION["finished_id"][$this->object->getId()], $page[0]['question_id']);
568 $this->object->setStartTime($_SESSION["finished_id"][$this->object->getId()], $first_question);
569 }
570 }
static _tracProgress($a_user_id, $a_obj_id, $a_ref_id, $a_obj_type='')
static getInstance()
Factory.
outNavigationButtons($navigationblock="top", $page, $stpl)
Creates the navigation buttons for a survey.
compressQuestion($previous_page, $page)
runShowFinishedPage()
Creates the finished page for a running survey.
special template class to simplify handling of ITX/PEAR
static getNamePresentation( $a_user_id, $a_user_image=false, $a_profile_link=false, $a_profile_back_link="", $a_force_first_lastname=false, $a_omit_login=false, $a_sortable=true, $a_return_data_array=false, $a_ctrl_path="ilpublicuserprofilegui")
Default behaviour is:
$data
Definition: storeScorm.php:23

References $_SESSION, $data, $help, $ilUser, $user, ilLearningProgress\_tracProgress(), ANONYMOUS_USER_ID, checkAuth(), compressQuestion(), ilProgressBar\getInstance(), ilUserUtil\getNamePresentation(), outNavigationButtons(), preview(), runShowFinishedPage(), and showFinishConfirmation().

Referenced by preview(), and redirectQuestion().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ preview()

ilSurveyExecutionGUI::preview ( )

Definition at line 868 of file class.ilSurveyExecutionGUI.php.

869 {
870 $this->outSurveyPage();
871 }
outSurveyPage($activepage=null, $direction=null)
Output of the active survey question to the screen.

References outSurveyPage().

Referenced by __construct(), checkAuth(), confirmedFinish(), exitSurvey(), outSurveyPage(), runShowFinishedPage(), saveActiveQuestionData(), saveUserInput(), and start().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ previous()

ilSurveyExecutionGUI::previous (   $a_save_input = true)

Navigates to the previous pages.

Navigates to the previous pages

@access private

Definition at line 330 of file class.ilSurveyExecutionGUI.php.

331 {
332 if ($a_save_input) {
333 // #16209
334 $has_error = $this->saveUserInput("previous");
335 }
336 $this->ctrl->setParameter($this, "activecommand", "previous");
337 $this->ctrl->setParameter($this, "qid", $_GET["qid"]);
338 if (strlen($has_error)) {
339 $this->ctrl->setParameter($this, "direction", "0");
340 } else {
341 $this->ctrl->setParameter($this, "direction", "-1");
342 }
343 $this->ctrl->redirect($this, "redirectQuestion");
344 }

References $_GET, and saveUserInput().

Referenced by previousNoSave().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ previousNoSave()

ilSurveyExecutionGUI::previousNoSave ( )

Definition at line 318 of file class.ilSurveyExecutionGUI.php.

319 {
320 $this->previous(false);
321 }
previous($a_save_input=true)
Navigates to the previous pages.

References previous().

+ Here is the call graph for this function:

◆ redirectQuestion()

ilSurveyExecutionGUI::redirectQuestion ( )

Called when a user answered a page to perform a redirect after POST.

This is called for security reasons to prevent users sending a form twice.

@access public

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

297 {
298 switch ($_GET["activecommand"]) {
299 case "next":
300 $this->outSurveyPage($_GET["qid"], $_GET["direction"]);
301 break;
302 case "previous":
303 $this->outSurveyPage($_GET["qid"], $_GET["direction"]);
304 break;
305 case "gotoPage":
306 $this->outSurveyPage($_GET["qid"], $_GET["direction"]);
307 break;
308 case "default":
309 $this->outSurveyPage($_GET["qid"]);
310 break;
311 default:
312 // don't save input, go to the first page
313 $this->outSurveyPage();
314 break;
315 }
316 }

References $_GET, and outSurveyPage().

+ Here is the call graph for this function:

◆ resume()

ilSurveyExecutionGUI::resume ( )

Resumes the survey.

Resumes the survey

@access private

Definition at line 257 of file class.ilSurveyExecutionGUI.php.

258 {
259 $this->start(true);
260 }
start($resume=false)
Starts the survey.

References start().

+ Here is the call graph for this function:

◆ runShowFinishedPage()

ilSurveyExecutionGUI::runShowFinishedPage ( )

Creates the finished page for a running survey.

Creates the finished page for a running survey

@access public

Definition at line 733 of file class.ilSurveyExecutionGUI.php.

734 {
735 $ilToolbar = $this->toolbar;
737
738 $has_button = false;
739
740
741 if (!$this->preview) {
742 if ($this->object->hasViewOwnResults()) {
743 $button = ilLinkButton::getInstance();
744 $button->setCaption("svy_view_own_results");
745 $button->setUrl($this->ctrl->getLinkTarget($this, "viewUserResults"));
746 $ilToolbar->addButtonInstance($button);
747
748 $has_button = true;
749 }
750
751 if ($this->object->hasMailConfirmation()) {
752 if ($has_button) {
753 $ilToolbar->addSeparator();
754 }
755
756 if ($ilUser->getId() == ANONYMOUS_USER_ID ||
757 !$ilUser->getEmail()) {
758 require_once "Services/Form/classes/class.ilTextInputGUI.php";
759 $mail = new ilTextInputGUI($this->lng->txt("email"), "mail");
760 $mail->setSize(25);
761 $ilToolbar->addInputItem($mail, true);
762 }
763
764 $ilToolbar->setFormAction($this->ctrl->getFormAction($this, "mailUserResults"));
765
766 $button = ilSubmitButton::getInstance();
767 $button->setCaption("svy_mail_send_confirmation");
768 $button->setCommand("mailUserResults");
769 $ilToolbar->addButtonInstance($button);
770
771 $has_button = true;
772 }
773
774 // #6307
775 if (ilObjSurveyAccess::_hasEvaluationAccess($this->object->getId(), $ilUser->getId())) {
776 $button = ilLinkButton::getInstance();
777 $button->setCaption("svy_results");
778 $button->setUrl($this->ctrl->getLinkTargetByClass("ilObjSurveyGUI", "evaluation"));
779 $ilToolbar->addButtonInstance($button);
780
781 $has_button = true;
782 }
783 }
784
785 if (!$has_button &&
786 strlen($this->object->getOutro()) == 0) {
787 $this->exitSurvey();
788 } else {
789 if ($has_button) {
790 $ilToolbar->addSeparator();
791 }
792
793 $button = ilLinkButton::getInstance();
794 $button->setCaption("survey_execution_exit");
795 $button->setUrl($this->ctrl->getLinkTarget($this, "exitSurvey"));
796 $ilToolbar->addButtonInstance($button);
797
798 if (strlen($this->object->getOutro())) {
800 $panel->setBody($this->object->prepareTextareaOutput($this->object->getOutro()));
801 $this->tpl->setContent($panel->getHTML());
802 }
803 }
804 }
static getInstance()
Factory.
static _hasEvaluationAccess($a_obj_id, $user_id)
static getInstance()
Get instance.
static getInstance()
Factory.
exitSurvey()
Exits the survey after finishing it.
This class represents a text property in a property form.
if(isset($_FILES['img_file']) &&is_array($_FILES['img_file'])) $panel
Definition: imgupload.php:138

References $ilUser, $panel, $toolbar, $user, ilObjSurveyAccess\_hasEvaluationAccess(), ANONYMOUS_USER_ID, exitSurvey(), ilLinkButton\getInstance(), ilSubmitButton\getInstance(), ilPanelGUI\getInstance(), and preview().

Referenced by outSurveyPage().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ saveActiveQuestionData()

ilSurveyExecutionGUI::saveActiveQuestionData ( $data)

Survey navigation.

Survey navigation

@access private Saves the users input of the active page

Saves the users input of the active page

@access private

Definition at line 691 of file class.ilSurveyExecutionGUI.php.

692 {
694
695 $question = &SurveyQuestion::_instanciateQuestion($data["question_id"]);
696 $error = $question->checkUserInput($_POST, $this->object->getSurveyId());
697 if (strlen($error) == 0) {
698 if (!$this->preview) {
699 // delete old answers
700 $this->object->deleteWorkingData($data["question_id"], $_SESSION["finished_id"][$this->object->getId()]);
701
702 $question->saveUserInput($_POST, $_SESSION["finished_id"][$this->object->getId()]);
703 } else {
704 $_SESSION["preview_data"][$this->object->getId()][$data["question_id"]] =
705 $question->saveUserInput($_POST, $_SESSION["finished_id"][$this->object->getId()], true);
706 }
707 return 0;
708 } else {
709 $_SESSION["svy_errors"][$question->getId()] = $error;
710 return 1;
711 }
712 }
static _instanciateQuestion($question_id)
Creates an instance of a question with a given question id.

References $_POST, $_SESSION, $data, $ilUser, $user, SurveyQuestion\_instanciateQuestion(), and preview().

Referenced by saveUserInput().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ saveUserInput()

ilSurveyExecutionGUI::saveUserInput (   $navigationDirection = "next")

Save the user's input.

@access private

Definition at line 599 of file class.ilSurveyExecutionGUI.php.

600 {
601 if (!$this->preview) {
602 $this->object->setEndTime($_SESSION["finished_id"][$this->object->getId()]);
603 }
604
605 // check users input when it is a metric question
606 unset($_SESSION["svy_errors"]);
607 $_SESSION["postdata"] = $_POST;
608 $page_error = 0;
609 $page = $this->object->getNextPage($_GET["qid"], 0);
610 foreach ($page as $data) {
611 $page_error += $this->saveActiveQuestionData($data);
612 }
613 if ($page_error && (strcmp($navigationDirection, "previous") != 0)) {
614 if ($page_error == 1) {
615 ilUtil::sendFailure($this->lng->txt("svy_page_error"), true);
616 } else {
617 ilUtil::sendFailure($this->lng->txt("svy_page_errors"), true);
618 }
619 } else {
620 $page_error = "";
621 unset($_SESSION["svy_errors"]);
622 }
623 return $page_error;
624 }
saveActiveQuestionData(&$data)
Survey navigation.

References $_GET, $_POST, $_SESSION, $data, preview(), saveActiveQuestionData(), and ilUtil\sendFailure().

Referenced by next(), and previous().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ showFinishConfirmation()

ilSurveyExecutionGUI::showFinishConfirmation ( )

Definition at line 921 of file class.ilSurveyExecutionGUI.php.

922 {
924
925 $cgui = new ilConfirmationGUI();
926 $cgui->setHeaderText($this->lng->txt("survey_execution_sure_finish"));
927
928 $cgui->setFormAction($this->ctrl->getFormAction($this, "confirmedFinish"));
929 $cgui->setCancel($this->lng->txt("cancel"), "previousNoSave");
930 $cgui->setConfirm($this->lng->txt("confirm"), "confirmedFinish");
931
932 $tpl->setContent($cgui->getHTML());
933 }
Confirmation screen class.

References $tpl.

Referenced by outSurveyPage().

+ Here is the caller graph for this function:

◆ start()

ilSurveyExecutionGUI::start (   $resume = false)

Starts the survey.

Starts the survey

@access private

Definition at line 269 of file class.ilSurveyExecutionGUI.php.

270 {
271 if ($this->preview) {
272 unset($_SESSION["preview_data"]);
273 }
274 unset($_SESSION["svy_errors"]);
275
276 $this->checkAuth(!$resume);
277
278 $activepage = "";
279 if ($resume) {
280 $activepage = $this->object->getLastActivePage($_SESSION["finished_id"][$this->object->getId()]);
281 }
282
283 if (strlen($activepage)) {
284 $this->ctrl->setParameter($this, "qid", $activepage);
285 }
286 $this->ctrl->setParameter($this, "activecommand", "default");
287 $this->ctrl->redirect($this, "redirectQuestion");
288 }

References $_SESSION, checkAuth(), and preview().

Referenced by resume().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ viewUserResults()

ilSurveyExecutionGUI::viewUserResults ( )

Definition at line 873 of file class.ilSurveyExecutionGUI.php.

874 {
875 $ilToolbar = $this->toolbar;
876
877 if (!$this->object->hasViewOwnResults()) {
878 $this->backToRepository();
879 }
880
881 $this->checkAuth(false, true);
882
883 $button = ilLinkButton::getInstance();
884 $button->setCaption("btn_back");
885 $button->setUrl($this->ctrl->getLinkTarget($this, "runShowFinishedPage"));
886 $ilToolbar->addButtonInstance($button);
887
888 $survey_gui = new ilObjSurveyGUI();
889 $html = $survey_gui->getUserResultsTable($_SESSION["finished_id"][$this->object->getId()]);
890 $this->tpl->setContent($html);
891 }

References $_SESSION, $toolbar, backToRepository(), checkAuth(), and ilLinkButton\getInstance().

+ Here is the call graph for this function:

Field Documentation

◆ $ctrl

ilSurveyExecutionGUI::$ctrl

Definition at line 60 of file class.ilSurveyExecutionGUI.php.

◆ $help

ilSurveyExecutionGUI::$help
protected

Definition at line 50 of file class.ilSurveyExecutionGUI.php.

Referenced by outSurveyPage().

◆ $lng

ilSurveyExecutionGUI::$lng

Definition at line 58 of file class.ilSurveyExecutionGUI.php.

Referenced by __construct().

◆ $log

ilSurveyExecutionGUI::$log
protected

Definition at line 67 of file class.ilSurveyExecutionGUI.php.

◆ $object

ilSurveyExecutionGUI::$object

Definition at line 57 of file class.ilSurveyExecutionGUI.php.

◆ $preview

ilSurveyExecutionGUI::$preview

Definition at line 62 of file class.ilSurveyExecutionGUI.php.

◆ $rbacsystem

ilSurveyExecutionGUI::$rbacsystem
protected

Definition at line 40 of file class.ilSurveyExecutionGUI.php.

Referenced by checkAuth().

◆ $toolbar

ilSurveyExecutionGUI::$toolbar
protected

Definition at line 55 of file class.ilSurveyExecutionGUI.php.

Referenced by runShowFinishedPage(), and viewUserResults().

◆ $tpl

ilSurveyExecutionGUI::$tpl

Definition at line 59 of file class.ilSurveyExecutionGUI.php.

Referenced by __construct(), and showFinishConfirmation().

◆ $tree

ilSurveyExecutionGUI::$tree

Definition at line 61 of file class.ilSurveyExecutionGUI.php.

Referenced by __construct(), and backToRepository().

◆ $user

ilSurveyExecutionGUI::$user
protected

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