Survey execution graphical output. More...
Public Member Functions | |
ilSurveyExecutionGUI ($a_object) | |
ilSurveyExecutionGUI constructor | |
& | executeCommand () |
execute command | |
getCommand ($cmd) | |
Retrieves the ilCtrl command. | |
resume () | |
Resumes the survey. | |
start ($resume=false) | |
Starts the survey. | |
previous () | |
Navigates to the previous pages. | |
next () | |
Navigates to the next pages. | |
outSurveyPage ($activepage, $direction) | |
Output of the active survey question to the screen. | |
navigate ($navigationDirection="next") | |
Survey navigation. | |
saveActiveQuestionData (&$data) | |
Saves the users input of the active page. | |
cancel () | |
Called on cancel. | |
runShowFinishedPage () | |
Creates the finished page for a running survey. | |
exitSurvey () | |
Exits the survey after finishing it. | |
outNavigationButtons ($navigationblock="top", $page) | |
Creates the navigation buttons for a survey. | |
Data Fields | |
$object | |
$lng | |
$tpl | |
$ctrl | |
$ilias | |
$tree |
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.
class.ilSurveyExecutionGUI.php Survey
Definition at line 38 of file class.ilSurveyExecutionGUI.php.
ilSurveyExecutionGUI::cancel | ( | ) |
Called on cancel.
Called on cancel
private
Definition at line 438 of file class.ilSurveyExecutionGUI.php.
{ $this->ctrl->redirectByClass("ilobjsurveygui", "infoScreen"); }
& ilSurveyExecutionGUI::executeCommand | ( | ) |
execute command
Definition at line 70 of file class.ilSurveyExecutionGUI.php.
References $cmd, and getCommand().
{ $cmd = $this->ctrl->getCmd(); $next_class = $this->ctrl->getNextClass($this); $cmd = $this->getCommand($cmd); switch($next_class) { default: $ret =& $this->$cmd(); break; } return $ret; }
ilSurveyExecutionGUI::exitSurvey | ( | ) |
Exits the survey after finishing it.
Exits the survey after finishing it
public
Definition at line 474 of file class.ilSurveyExecutionGUI.php.
{ $this->ctrl->redirectByClass("ilobjsurveygui", "backToRepository"); }
ilSurveyExecutionGUI::getCommand | ( | $ | cmd | ) |
Retrieves the ilCtrl command.
Retrieves the ilCtrl command
public
Definition at line 92 of file class.ilSurveyExecutionGUI.php.
References $cmd.
Referenced by executeCommand().
{ return $cmd; }
ilSurveyExecutionGUI::ilSurveyExecutionGUI | ( | $ | a_object | ) |
ilSurveyExecutionGUI constructor
The constructor takes possible arguments an creates an instance of the ilSurveyExecutionGUI object.
object | $a_object Associated ilObjSurvey class public |
Definition at line 55 of file class.ilSurveyExecutionGUI.php.
ilSurveyExecutionGUI::navigate | ( | $ | navigationDirection = "next" |
) |
Survey navigation.
Survey navigation
private
Definition at line 336 of file class.ilSurveyExecutionGUI.php.
References $_GET, $_SESSION, $data, $rbacsystem, outSurveyPage(), saveActiveQuestionData(), and sendInfo().
Referenced by next(), and previous().
{ global $ilUser; global $rbacsystem; if (!$rbacsystem->checkAccess("read", $this->object->ref_id)) { // only with read access it is possible to run the test $this->ilias->raiseError($this->lng->txt("cannot_read_survey"),$this->ilias->error_obj->MESSAGE); } // check users input when it is a metric question unset($_SESSION["svy_errors"]); $page_error = 0; $page = $this->object->getNextPage($_GET["qid"], 0); foreach ($page as $data) { $page_error += $this->saveActiveQuestionData($data); } if ($page_error && (strcmp($navigationDirection, "previous") != 0)) { if ($page_error == 1) { sendInfo($this->lng->txt("svy_page_error")); } else { sendInfo($this->lng->txt("svy_page_errors")); } } else { $page_error = ""; } $direction = 0; switch ($navigationDirection) { case "next": default: $activepage = $_GET["qid"]; if (!$page_error) { $direction = 1; } break; case "previous": $activepage = $_GET["qid"]; if (!$page_error) { $direction = -1; } break; } $this->outSurveyPage($activepage, $direction); }
ilSurveyExecutionGUI::next | ( | ) |
Navigates to the next pages.
Navigates to the next pages
private
Definition at line 205 of file class.ilSurveyExecutionGUI.php.
References navigate().
{ $this->navigate("next"); }
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.
public
Definition at line 488 of file class.ilSurveyExecutionGUI.php.
Referenced by outSurveyPage().
{ $prevpage = $this->object->getNextPage($page[0]["question_id"], -1); $this->tpl->setCurrentBlock($navigationblock . "_prev"); if ($prevpage === 0) { $this->tpl->setVariable("BTN_PREV", $this->lng->txt("survey_start")); } else { $this->tpl->setVariable("BTN_PREV", $this->lng->txt("survey_previous")); } $this->tpl->parseCurrentBlock(); $nextpage = $this->object->getNextPage($page[0]["question_id"], 1); $this->tpl->setCurrentBlock($navigationblock . "_next"); if ($nextpage === 1) { $this->tpl->setVariable("BTN_NEXT", $this->lng->txt("survey_finish")); } else { $this->tpl->setVariable("BTN_NEXT", $this->lng->txt("survey_next")); } $this->tpl->parseCurrentBlock(); }
ilSurveyExecutionGUI::outSurveyPage | ( | $ | activepage, | |
$ | direction | |||
) |
Output of the active survey question to the screen.
Output of the active survey question to the screen
private
Definition at line 217 of file class.ilSurveyExecutionGUI.php.
References $_SESSION, $data, $error_messages, ilUtil::getImagePath(), outNavigationButtons(), runShowFinishedPage(), and sendInfo().
Referenced by navigate(), and start().
{ global $ilUser; // security check if someone tries to go into a survey using an URL to one of the questions $canStart = $this->object->canStartSurvey($_SESSION["anonymous_id"]); if (!$canStart["result"]) { sendInfo(implode("<br />", $canStart["messages"]), TRUE); $this->ctrl->redirectByClass("ilobjsurveygui", "infoScreen"); } $survey_started = $this->object->isSurveyStarted($ilUser->getId(), $_SESSION["anonymous_id"]); if ($survey_started === FALSE) { sendInfo($this->lng->txt("survey_use_start_button"), TRUE); $this->ctrl->redirectByClass("ilobjsurveygui", "infoScreen"); } $page = $this->object->getNextPage($activepage, $direction); $constraint_true = 0; // check for constraints if (count($page[0]["constraints"])) { while (is_array($page) and ($constraint_true == 0) and (count($page[0]["constraints"]))) { $constraint_true = 1; foreach ($page[0]["constraints"] as $constraint) { $working_data = $this->object->loadWorkingData($constraint["question"], $ilUser->id); $constraint_true = $constraint_true & $this->object->checkConstraint($constraint, $working_data); } if ($constraint_true == 0) { $page = $this->object->getNextPage($page[0]["question_id"], $direction); } } } $qid = ""; if ($page === 0) { $this->ctrl->redirectByClass("ilobjsurveygui", "infoScreen"); } else if ($page === 1) { $this->object->finishSurvey($ilUser->id, $_SESSION["anonymous_id"]); if (array_key_exists("anonymous_id", $_SESSION)) unset($_SESSION["anonymous_id"]); if (array_key_exists("accesscode", $_SESSION)) unset($_SESSION["accesscode"]); $this->runShowFinishedPage(); return; } else { $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_svy_svy_content.html", true); if (!($this->object->getAnonymize() && $this->object->isAccessibleWithoutCode() && ($_SESSION["AccountId"] == ANONYMOUS_USER_ID))) { $this->tpl->setCurrentBlock("suspend_survey"); $this->tpl->setVariable("TEXT_SUSPEND", $this->lng->txt("cancel_survey")); $this->tpl->setVariable("HREF_SUSPEND", $this->ctrl->getLinkTargetByClass("ilObjSurveyGUI", "infoScreen")); $this->tpl->setVariable("HREF_IMG_SUSPEND", $this->ctrl->getLinkTargetByClass("ilObjSurveyGUI", "infoScreen")); $this->tpl->setVariable("ALT_IMG_SUSPEND", $this->lng->txt("cancel_survey")); $this->tpl->setVariable("TITLE_IMG_SUSPEND", $this->lng->txt("cancel_survey")); $this->tpl->setVariable("IMG_SUSPEND", ilUtil::getImagePath("cancel.gif")); $this->tpl->parseCurrentBlock(); } $this->outNavigationButtons("top", $page); $this->tpl->addBlockFile("NOMINAL_QUESTION", "nominal_question", "tpl.il_svy_out_nominal.html", true); $this->tpl->addBlockFile("ORDINAL_QUESTION", "ordinal_question", "tpl.il_svy_out_ordinal.html", true); $this->tpl->addBlockFile("METRIC_QUESTION", "metric_question", "tpl.il_svy_out_metric.html", true); $this->tpl->addBlockFile("TEXT_QUESTION", "text_question", "tpl.il_svy_out_text.html", true); $this->tpl->setCurrentBlock("percentage"); $percentage = (int)(($page[0]["position"])*100); $this->tpl->setVariable("PERCENT_BAR_START", ilUtil::getImagePath("bar_start.gif")); $this->tpl->setVariable("PERCENT_BAR_FILLED", ilUtil::getImagePath("bar_filled.gif")); $this->tpl->setVariable("PERCENT_BAR_EMPTY", ilUtil::getImagePath("bar_empty.gif")); $this->tpl->setVariable("PERCENT_BAR_END", ilUtil::getImagePath("bar_end.gif")); $this->tpl->setVariable("PERCENTAGE_ALT", $this->lng->txt("percentage")); $this->tpl->setVariable("PERCENTAGE_VALUE", $percentage); $this->tpl->setVariable("PERCENTAGE_UNFINISHED", 100-$percentage); $this->tpl->parseCurrentBlock(); if (count($page) > 1) { $this->tpl->setCurrentBlock("questionblock_title"); $this->tpl->setVariable("TEXT_QUESTIONBLOCK_TITLE", $page[0]["questionblock_title"]); $this->tpl->parseCurrentBlock(); } foreach ($page as $data) { $this->tpl->setCurrentBlock("survey_content"); if ($data["heading"]) { $this->tpl->setVariable("QUESTION_HEADING", $data["heading"]); } $question_gui = $this->object->getQuestionGUI($data["type_tag"], $data["question_id"]); $working_data = $this->object->loadWorkingData($data["question_id"], $ilUser->id); $question_gui->object->setObligatory($data["obligatory"]); $error_messages = array(); if (is_array($_SESSION["svy_errors"])) { $error_messages = $_SESSION["svy_errors"]; } $question_gui->outWorkingForm($working_data, $this->object->getShowQuestionTitles(), $error_messages[$data["question_id"]]); $qid = "&qid=" . $data["question_id"]; $this->tpl->parse("survey_content"); } $this->outNavigationButtons("bottom", $page); $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this) . $qid); } }
ilSurveyExecutionGUI::previous | ( | ) |
Navigates to the previous pages.
Navigates to the previous pages
private
Definition at line 193 of file class.ilSurveyExecutionGUI.php.
References navigate().
{ $this->navigate("previous"); }
ilSurveyExecutionGUI::resume | ( | ) |
Resumes the survey.
Resumes the survey
private
Definition at line 104 of file class.ilSurveyExecutionGUI.php.
References start().
{ $this->start(true); }
ilSurveyExecutionGUI::runShowFinishedPage | ( | ) |
Creates the finished page for a running survey.
Creates the finished page for a running survey
public
Definition at line 450 of file class.ilSurveyExecutionGUI.php.
References $_SESSION.
Referenced by outSurveyPage().
{ unset($_SESSION["anonymous_id"]); if (strlen($this->object->getOutro()) == 0) { $this->ctrl->redirectByClass("ilobjsurveygui", "backToRepository"); } else { $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_svy_svy_finished.html", true); $this->tpl->setVariable("TEXT_FINISHED", $this->object->prepareTextareaOutput($this->object->getOutro())); $this->tpl->setVariable("BTN_EXIT", $this->lng->txt("exit")); $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this)); $this->tpl->parseCurrentBlock(); } }
ilSurveyExecutionGUI::saveActiveQuestionData | ( | &$ | data | ) |
Saves the users input of the active page.
Saves the users input of the active page
private
Definition at line 400 of file class.ilSurveyExecutionGUI.php.
References $_POST, $_SESSION, $data, $user_id, and SurveyQuestion::_instanciateQuestion().
Referenced by navigate().
{ global $ilUser; include_once "./survey/classes/class.SurveyQuestion.php"; $question =& SurveyQuestion::_instanciateQuestion($data["question_id"]); $error = $question->checkUserInput($_POST); if (strlen($error) == 0) { $user_id = $ilUser->getId(); // delete old answers $this->object->deleteWorkingData($data["question_id"], $user_id); if ($this->object->isSurveyStarted($user_id, $_SESSION["anonymous_id"]) === FALSE) { $this->object->startSurvey($user_id, $_SESSION["anonymous_id"]); } if ($this->object->getAnonymize()) { $user_id = 0; } $question->saveUserInput($_POST, $this->object->getSurveyId(), $user_id, $_SESSION["anonymous_id"]); return 0; } else { $_SESSION["svy_errors"][$question->getId()] = $error; return 1; } }
ilSurveyExecutionGUI::start | ( | $ | resume = false |
) |
Starts the survey.
Starts the survey
private
Definition at line 116 of file class.ilSurveyExecutionGUI.php.
References $_POST, $_SESSION, $rbacsystem, outSurveyPage(), and sendInfo().
Referenced by resume().
{ global $ilUser; global $rbacsystem; unset($_SESSION["svy_errors"]); if (!$rbacsystem->checkAccess("read", $this->object->ref_id)) { // only with read access it is possible to run the test $this->ilias->raiseError($this->lng->txt("cannot_read_survey"),$this->ilias->error_obj->MESSAGE); } if ($this->object->getAnonymize() && !$this->object->isAccessibleWithoutCode()) { if ($resume) { $anonymize_key = $this->object->getAnonymousId($_POST["anonymous_id"]); if ($anonymize_key) { $_SESSION["anonymous_id"] = $anonymize_key; } else { unset($_POST["cmd"]["resume"]); sendInfo(sprintf($this->lng->txt("error_retrieving_anonymous_survey"), $_POST["anonymous_id"])); } } } $direction = 0; if ($this->object->getAnonymize() && !$this->object->isAccessibleWithoutCode()) { if ($this->object->checkSurveyCode($_POST["anonymous_id"])) { $_SESSION["anonymous_id"] = $_POST["anonymous_id"]; } else { sendInfo(sprintf($this->lng->txt("error_retrieving_anonymous_survey"), $_POST["anonymous_id"]), true); $this->ctrl->redirectByClass("ilobjsurveygui", "infoScreen"); } } if ($this->object->isAccessibleWithoutCode()) { $anonymous_id = $this->object->getUserSurveyCode($ilUser->getId()); if (strlen($anonymous_id)) { $_SESSION["anonymous_id"] = $anonymous_id; } else { $_SESSION["anonymous_id"] = $this->object->createNewAccessCode(); } } $activepage = ""; if ($resume) { $activepage = $this->object->getLastActivePage($ilUser->id); $direction = 0; } // explicitly set the survey started! if ($this->object->isSurveyStarted($ilUser->getId(), $_SESSION["anonymous_id"]) === FALSE) { $this->object->startSurvey($ilUser->getId(), $_SESSION["anonymous_id"]); } $this->outSurveyPage($activepage, $direction); }
ilSurveyExecutionGUI::$ctrl |
Definition at line 43 of file class.ilSurveyExecutionGUI.php.
ilSurveyExecutionGUI::$ilias |
Definition at line 44 of file class.ilSurveyExecutionGUI.php.
Referenced by ilSurveyExecutionGUI().
ilSurveyExecutionGUI::$lng |
Definition at line 41 of file class.ilSurveyExecutionGUI.php.
Referenced by ilSurveyExecutionGUI().
ilSurveyExecutionGUI::$object |
Definition at line 40 of file class.ilSurveyExecutionGUI.php.
ilSurveyExecutionGUI::$tpl |
Definition at line 42 of file class.ilSurveyExecutionGUI.php.
Referenced by ilSurveyExecutionGUI().
ilSurveyExecutionGUI::$tree |
Definition at line 45 of file class.ilSurveyExecutionGUI.php.
Referenced by ilSurveyExecutionGUI().