ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
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)
 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)
 

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 $ilCtrl
Definition: ilias.php:18
global $DIC
Definition: saml.php:7

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

+ Here is the call graph for this function:

Member Function Documentation

◆ backToRepository()

ilSurveyExecutionGUI::backToRepository ( )

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

760 {
762
763 // #14971
764 if ($this->object->get360Mode()) {
765 $target_ref_id = $this->object->getRefId();
766 } else {
767 // #11534
768 $target_ref_id = $tree->getParentId($this->object->getRefId());
769 }
770
771 include_once "Services/Link/classes/class.ilLink.php";
772 ilUtil::redirect(ilLink::_getLink($target_ref_id));
773 }
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 670 of file class.ilSurveyExecutionGUI.php.

671 {
672 $this->ctrl->redirectByClass("ilobjsurveygui", "infoScreen");
673 }

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

References $_SESSION, $ilUser, $rbacsystem, $user, preview(), ilUtil\sendFailure(), and sprintf.

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

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

◆ confirmedFinish()

ilSurveyExecutionGUI::confirmedFinish ( )

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

892 {
894
895 if (!$this->preview) {
896 $this->object->finishSurvey($_SESSION["finished_id"][$this->object->getId()]);
897
898 if ($ilUser->getId() != ANONYMOUS_USER_ID) {
899 include_once "Services/Tracking/classes/class.ilLPStatusWrapper.php";
900 ilLPStatusWrapper::_updateStatus($this->object->getId(), $ilUser->getId());
901 }
902
903 if ($this->object->getMailNotification()) {
904 $this->object->sendNotificationMail(
905 $ilUser->getId(),
906 $_SESSION["anonymous_id"][$this->object->getId()],
907 $_SESSION["appr_id"][$this->object->getId()]
908 );
909 }
910 }
911
912 /*
913 unset($_SESSION["anonymous_id"][$this->object->getId()]);
914 unset($_SESSION["appr_id"][$this->object->getId()]);
915 unset($_SESSION["finished_id"][$this->object->getId()]);
916 */
917
918 $this->ctrl->redirect($this, "runShowFinishedPage");
919 }
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(), 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 }
$_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.
$GLOBALS['loaded']
Global hash that tracks already loaded includes.
$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 782 of file class.ilSurveyExecutionGUI.php.

783 {
784 if (!$this->preview) {
785 $this->backToRepository();
786 } else {
787 // #12841
788 $this->ctrl->setParameterByClass("ilsurveyeditorgui", "pgov", $_REQUEST["pgov"]);
789 $this->ctrl->redirectByClass(array("ilobjsurveygui", "ilsurveyeditorgui"), "questions");
790 }
791 }

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 241 of file class.ilSurveyExecutionGUI.php.

242 {
243 return $cmd;
244 }

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 365 of file class.ilSurveyExecutionGUI.php.

366 {
367 $this->ctrl->setParameter($this, "activecommand", "gotoPage");
368 $this->ctrl->setParameter($this, "qid", $_GET["qid"]);
369 $this->ctrl->setParameter($this, "direction", "0");
370 $this->ctrl->redirect($this, "redirectQuestion");
371 }

References $_GET.

◆ mailUserResults()

ilSurveyExecutionGUI::mailUserResults ( )

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

849 {
851
852 if (!$this->object->hasMailConfirmation()) {
853 $this->backToRepository();
854 }
855
856 $this->checkAuth(false, true);
857
858 $recipient = $_POST["mail"];
859 if (!$recipient) {
860 $recipient = $ilUser->getEmail();
861 }
862 if (!ilUtil::is_email($recipient)) {
863 $this->ctrl->redirect($this, "runShowFinishedPage");
864 }
865
866 $survey_gui = new ilObjSurveyGUI();
867 $survey_gui->sendUserResultsMail(
868 $_SESSION["finished_id"][$this->object->getId()],
869 $recipient
870 );
871
872 ilUtil::sendSuccess($this->lng->txt("mail_sent"), true);
873 $this->ctrl->redirect($this, "runShowFinishedPage");
874 }
$_POST["username"]
Class ilObjSurveyGUI.
checkAuth($a_may_start=false, $a_ignore_status=false)
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
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(), ilUtil\is_email(), and ilUtil\sendSuccess().

+ Here is the call graph for this function:

◆ next()

ilSurveyExecutionGUI::next ( )

Navigates to the next pages.

@access private

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

348 {
349 $result = $this->saveUserInput("next");
350 $this->ctrl->setParameter($this, "activecommand", "next");
351 $this->ctrl->setParameter($this, "qid", $_GET["qid"]);
352 if (strlen($result)) {
353 $this->ctrl->setParameter($this, "direction", "0");
354 } else {
355 $this->ctrl->setParameter($this, "direction", "1");
356 }
357 $this->ctrl->redirect($this, "redirectQuestion");
358 }
$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 
)

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 802 of file class.ilSurveyExecutionGUI.php.

803 {
804 $prevpage = $this->object->getNextPage($page[0]["question_id"], -1);
805 $this->tpl->setCurrentBlock($navigationblock . "_prev");
806 if ($prevpage === 0) {
807 $this->tpl->setVariable("BTN_PREV", $this->lng->txt("survey_start"));
808 } else {
809 $this->tpl->setVariable("BTN_PREV", $this->lng->txt("survey_previous"));
810 }
811 $this->tpl->parseCurrentBlock();
812 $nextpage = $this->object->getNextPage($page[0]["question_id"], 1);
813 $this->tpl->setCurrentBlock($navigationblock . "_next");
814 if ($nextpage === 1) {
815 $this->tpl->setVariable("BTN_NEXT", $this->lng->txt("survey_finish"));
816 } else {
817 $this->tpl->setVariable("BTN_NEXT", $this->lng->txt("survey_next"));
818 }
819 $this->tpl->parseCurrentBlock();
820 }

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 380 of file class.ilSurveyExecutionGUI.php.

381 {
383
384 $this->checkAuth();
385
386 $page = $this->object->getNextPage($activepage, $direction);
387 $constraint_true = 0;
388
389 // check for constraints
390 if (is_array($page[0]["constraints"]) && count($page[0]["constraints"])) {
391 $this->log->debug("Page constraints= ", $page[0]["constraints"]);
392
393 while (is_array($page) and ($constraint_true == 0) and (count($page[0]["constraints"]))) {
394 $constraint_true = ($page[0]['constraints'][0]['conjunction'] == 0) ? true : false;
395 foreach ($page[0]["constraints"] as $constraint) {
396 if (!$this->preview) {
397 $working_data = $this->object->loadWorkingData($constraint["question"], $_SESSION["finished_id"][$this->object->getId()]);
398 } else {
399 $working_data = $_SESSION["preview_data"][$this->object->getId()][$constraint["question"]];
400 }
401 if ($constraint['conjunction'] == 0) {
402 // and
403 $constraint_true = $constraint_true & $this->object->checkConstraint($constraint, $working_data);
404 } else {
405 // or
406 $constraint_true = $constraint_true | $this->object->checkConstraint($constraint, $working_data);
407 }
408 }
409 if ($constraint_true == 0) {
410 // #11047 - we are skipping the page, so we have to get rid of existing answers for that question(s)
411 foreach ($page as $page_question) {
412 $qid = $page_question["question_id"];
413
414 // see saveActiveQuestionData()
415 if (!$this->preview) {
416 $this->object->deleteWorkingData($qid, $_SESSION["finished_id"][$this->object->getId()]);
417 } else {
418 $_SESSION["preview_data"][$this->object->getId()][$qid] = null;
419 }
420 }
421
422 $page = $this->object->getNextPage($page[0]["question_id"], $direction);
423 }
424 }
425 }
426
427 $first_question = -1;
428 if ($page === 0) {
429 $this->ctrl->redirectByClass("ilobjsurveygui", "infoScreen");
430 } elseif ($page === 1) {
431 $state = $this->object->getUserSurveyExecutionStatus();
432 if ($this->preview ||
433 !$state["runs"][$_SESSION["finished_id"][$this->object->getId()]]["finished"]) {
434 $this->showFinishConfirmation();
435 } else {
436 $this->runShowFinishedPage();
437 }
438 return;
439 } else {
440 $ilHelp = $this->help;
441 $ilHelp->setScreenIdComponent("svy");
442 $ilHelp->setScreenId("quest_presentation");
443
444 if ($ilUser->getId() != ANONYMOUS_USER_ID) {
445 include_once "Services/Tracking/classes/class.ilLearningProgress.php";
446 ilLearningProgress::_tracProgress($ilUser->getId(), $this->object->getId(), $this->object->ref_id, "svy");
447 }
448
449 $required = false;
450 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_svy_svy_content.html", "Modules/Survey");
451
452 if ($this->object->get360Mode()) {
453 $appr_id = $_SESSION["appr_id"][$this->object->getId()];
454
455 include_once "Services/User/classes/class.ilUserUtil.php";
456 $this->tpl->setTitle($this->object->getTitle() . " (" .
457 $this->lng->txt("survey_360_appraisee") . ": " .
458 ilUserUtil::getNamePresentation($appr_id) . ")");
459 }
460
461 if (!($this->object->getAnonymize() && $this->object->isAccessibleWithoutCode() && ($ilUser->getId() == ANONYMOUS_USER_ID))) {
462 $this->tpl->setCurrentBlock("suspend_survey");
463
464 if (!$this->preview) {
465 $this->tpl->setVariable("TEXT_SUSPEND", $this->lng->txt("cancel_survey"));
466 $this->tpl->setVariable("HREF_SUSPEND", $this->ctrl->getLinkTargetByClass("ilObjSurveyGUI", "infoScreen"));
467 } else {
468 $this->ctrl->setParameterByClass("ilObjSurveyGUI", "pgov", $_REQUEST["pgov"]);
469 $this->tpl->setVariable("TEXT_SUSPEND", $this->lng->txt("survey_cancel_preview"));
470 $this->tpl->setVariable("HREF_SUSPEND", $this->ctrl->getLinkTargetByClass(array("ilObjSurveyGUI", "ilSurveyEditorGUI"), "questions"));
471 }
472
473 $this->tpl->setVariable("ALT_IMG_SUSPEND", $this->lng->txt("cancel_survey"));
474 $this->tpl->setVariable("TITLE_IMG_SUSPEND", $this->lng->txt("cancel_survey"));
475 $this->tpl->parseCurrentBlock();
476 }
477 $this->outNavigationButtons("top", $page);
478
479
480 $this->tpl->setCurrentBlock("percentage");
481
482 $percentage = (int) (($page[0]["position"])*100);
483
484 include_once "Services/UIComponent/ProgressBar/classes/class.ilProgressBar.php";
486 $pbar->setCurrent($percentage);
487 $this->tpl->setVariable("NEW_PBAR", $pbar->render());
488
489 $this->tpl->parseCurrentBlock();
490
491
492 if (count($page) > 1 && $page[0]["questionblock_show_blocktitle"]) {
493 $this->tpl->setCurrentBlock("questionblock_title");
494 $this->tpl->setVariable("TEXT_QUESTIONBLOCK_TITLE", $page[0]["questionblock_title"]);
495 $this->tpl->parseCurrentBlock();
496 }
497 foreach ($page as $data) {
498 $this->tpl->setCurrentBlock("survey_content");
499 if ($data["heading"]) {
500 $this->tpl->setVariable("QUESTION_HEADING", $data["heading"]);
501 }
502 if ($first_question == -1) {
503 $first_question = $data["question_id"];
504 }
505 $question_gui = $this->object->getQuestionGUI($data["type_tag"], $data["question_id"]);
506 if (is_array($_SESSION["svy_errors"])) {
507 $working_data =&$question_gui->object->getWorkingDataFromUserInput($_SESSION["postdata"]);
508 } else {
509 $working_data = $this->object->loadWorkingData($data["question_id"], $_SESSION["finished_id"][$this->object->getId()]);
510 }
511 $question_gui->object->setObligatory($data["obligatory"]);
512 $error_messages = array();
513 if (is_array($_SESSION["svy_errors"])) {
514 $error_messages = $_SESSION["svy_errors"];
515 }
516 $show_questiontext = ($data["questionblock_show_questiontext"]) ? 1 : 0;
517 $question_output = $question_gui->getWorkingForm($working_data, $this->object->getShowQuestionTitles(), $show_questiontext, $error_messages[$data["question_id"]], $this->object->getSurveyId());
518 $this->tpl->setVariable("QUESTION_OUTPUT", $question_output);
519 $this->ctrl->setParameter($this, "qid", $data["question_id"]);
520 $this->tpl->parse("survey_content");
521 if ($data["obligatory"]) {
522 $required = true;
523 }
524 }
525 if ($required) {
526 $this->tpl->setCurrentBlock("required");
527 $this->tpl->setVariable("TEXT_REQUIRED", $this->lng->txt("required_field"));
528 $this->tpl->parseCurrentBlock();
529 }
530
531 $this->outNavigationButtons("bottom", $page);
532
533 $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this, "redirectQuestion"));
534 }
535
536 if (!$this->preview) {
537 $this->object->setPage($_SESSION["finished_id"][$this->object->getId()], $page[0]['question_id']);
538 $this->object->setStartTime($_SESSION["finished_id"][$this->object->getId()], $first_question);
539 }
540 }
if(!array_key_exists('stateid', $_REQUEST)) $state
Handle linkback() response from LinkedIn.
Definition: linkback.php:10
static _tracProgress($a_user_id, $a_obj_id, $a_ref_id, $a_obj_type='')
static getInstance()
Factory.
outNavigationButtons($navigationblock="top", $page)
Creates the navigation buttons for a survey.
runShowFinishedPage()
Creates the finished page for a running survey.
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:
$error_messages

References $_SESSION, $data, $error_messages, $help, $ilUser, $state, $user, ilLearningProgress\_tracProgress(), checkAuth(), 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 822 of file class.ilSurveyExecutionGUI.php.

823 {
824 $this->outSurveyPage();
825 }
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 326 of file class.ilSurveyExecutionGUI.php.

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

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 314 of file class.ilSurveyExecutionGUI.php.

315 {
316 $this->previous(false);
317 }
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 292 of file class.ilSurveyExecutionGUI.php.

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

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 253 of file class.ilSurveyExecutionGUI.php.

254 {
255 $this->start(true);
256 }
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 682 of file class.ilSurveyExecutionGUI.php.

683 {
684 $ilToolbar = $this->toolbar;
686
687 $has_button = false;
688
689 include_once "Services/UIComponent/Button/classes/class.ilLinkButton.php";
690
691 if (!$this->preview) {
692 if ($this->object->hasViewOwnResults()) {
693 $button = ilLinkButton::getInstance();
694 $button->setCaption("svy_view_own_results");
695 $button->setUrl($this->ctrl->getLinkTarget($this, "viewUserResults"));
696 $ilToolbar->addButtonInstance($button);
697
698 $has_button = true;
699 }
700
701 if ($this->object->hasMailConfirmation()) {
702 if ($has_button) {
703 $ilToolbar->addSeparator();
704 }
705
706 if ($ilUser->getId() == ANONYMOUS_USER_ID ||
707 !$ilUser->getEmail()) {
708 require_once "Services/Form/classes/class.ilTextInputGUI.php";
709 $mail = new ilTextInputGUI($this->lng->txt("email"), "mail");
710 $mail->setSize(25);
711 $ilToolbar->addInputItem($mail, true);
712 }
713
714 $ilToolbar->setFormAction($this->ctrl->getFormAction($this, "mailUserResults"));
715
716 include_once "Services/UIComponent/Button/classes/class.ilSubmitButton.php";
717 $button = ilSubmitButton::getInstance();
718 $button->setCaption("svy_mail_send_confirmation");
719 $button->setCommand("mailUserResults");
720 $ilToolbar->addButtonInstance($button);
721
722 $has_button = true;
723 }
724
725 // #6307
726 include_once "Modules/Survey/classes/class.ilObjSurveyAccess.php";
727 if (ilObjSurveyAccess::_hasEvaluationAccess($this->object->getId(), $ilUser->getId())) {
728 $button = ilLinkButton::getInstance();
729 $button->setCaption("svy_results");
730 $button->setUrl($this->ctrl->getLinkTargetByClass("ilObjSurveyGUI", "evaluation"));
731 $ilToolbar->addButtonInstance($button);
732
733 $has_button = true;
734 }
735 }
736
737 if (!$has_button &&
738 strlen($this->object->getOutro()) == 0) {
739 $this->exitSurvey();
740 } else {
741 if ($has_button) {
742 $ilToolbar->addSeparator();
743 }
744
745 $button = ilLinkButton::getInstance();
746 $button->setCaption("survey_execution_exit");
747 $button->setUrl($this->ctrl->getLinkTarget($this, "exitSurvey"));
748 $ilToolbar->addButtonInstance($button);
749
750 if (strlen($this->object->getOutro())) {
751 include_once "Services/UIComponent/Panel/classes/class.ilPanelGUI.php";
752 $panel = ilPanelGUI::getInstance();
753 $panel->setBody($this->object->prepareTextareaOutput($this->object->getOutro()));
754 $this->tpl->setContent($panel->getHTML());
755 }
756 }
757 }
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.

References $ilUser, $toolbar, $user, ilObjSurveyAccess\_hasEvaluationAccess(), 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 639 of file class.ilSurveyExecutionGUI.php.

640 {
642
643 include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
644 $question =&SurveyQuestion::_instanciateQuestion($data["question_id"]);
645 $error = $question->checkUserInput($_POST, $this->object->getSurveyId());
646 if (strlen($error) == 0) {
647 if (!$this->preview) {
648 // delete old answers
649 $this->object->deleteWorkingData($data["question_id"], $_SESSION["finished_id"][$this->object->getId()]);
650
651 $question->saveUserInput($_POST, $_SESSION["finished_id"][$this->object->getId()]);
652 } else {
653 $_SESSION["preview_data"][$this->object->getId()][$data["question_id"]] =
654 $question->saveUserInput($_POST, $_SESSION["finished_id"][$this->object->getId()], true);
655 }
656 return 0;
657 } else {
658 $_SESSION["svy_errors"][$question->getId()] = $error;
659 return 1;
660 }
661 }
static _instanciateQuestion($question_id)
Creates an instance of a question with a given question id.
$error
Definition: Error.php:17

References $_POST, $_SESSION, $data, $error, $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 547 of file class.ilSurveyExecutionGUI.php.

548 {
549 if (!$this->preview) {
550 $this->object->setEndTime($_SESSION["finished_id"][$this->object->getId()]);
551 }
552
553 // check users input when it is a metric question
554 unset($_SESSION["svy_errors"]);
555 $_SESSION["postdata"] = $_POST;
556 $page_error = 0;
557 $page = $this->object->getNextPage($_GET["qid"], 0);
558 foreach ($page as $data) {
559 $page_error += $this->saveActiveQuestionData($data);
560 }
561 if ($page_error && (strcmp($navigationDirection, "previous") != 0)) {
562 if ($page_error == 1) {
563 ilUtil::sendFailure($this->lng->txt("svy_page_error"), true);
564 } else {
565 ilUtil::sendFailure($this->lng->txt("svy_page_errors"), true);
566 }
567 } else {
568 $page_error = "";
569 unset($_SESSION["svy_errors"]);
570 }
571 return $page_error;
572 }
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 876 of file class.ilSurveyExecutionGUI.php.

877 {
879
880 include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
881 $cgui = new ilConfirmationGUI();
882 $cgui->setHeaderText($this->lng->txt("survey_execution_sure_finish"));
883
884 $cgui->setFormAction($this->ctrl->getFormAction($this, "confirmedFinish"));
885 $cgui->setCancel($this->lng->txt("cancel"), "previousNoSave");
886 $cgui->setConfirm($this->lng->txt("confirm"), "confirmedFinish");
887
888 $tpl->setContent($cgui->getHTML());
889 }
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 265 of file class.ilSurveyExecutionGUI.php.

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

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 827 of file class.ilSurveyExecutionGUI.php.

828 {
829 $ilToolbar = $this->toolbar;
830
831 if (!$this->object->hasViewOwnResults()) {
832 $this->backToRepository();
833 }
834
835 $this->checkAuth(false, true);
836
837 include_once "Services/UIComponent/Button/classes/class.ilLinkButton.php";
838 $button = ilLinkButton::getInstance();
839 $button->setCaption("btn_back");
840 $button->setUrl($this->ctrl->getLinkTarget($this, "runShowFinishedPage"));
841 $ilToolbar->addButtonInstance($button);
842
843 $survey_gui = new ilObjSurveyGUI();
844 $html = $survey_gui->getUserResultsTable($_SESSION["finished_id"][$this->object->getId()]);
845 $this->tpl->setContent($html);
846 }
$html
Definition: example_001.php:87

References $_SESSION, $html, $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: