24 include_once 
"./Modules/Survey/classes/inc.SurveyConstants.php";
 
   63                 $this->
object =& $a_object;
 
   68                 $this->ctrl->saveParameter($this, 
"prvw");
 
   69                 $this->ctrl->saveParameter($this, 
"pgov");
 
   77                 $cmd = $this->ctrl->getCmd();
 
   78                 $next_class = $this->ctrl->getNextClass($this);
 
   81                 if (strlen(
$cmd) == 0)
 
   83                         $this->ctrl->setParameter($this, 
"qid", 
$_GET[
"qid"]);
 
   84                         $this->ctrl->redirect($this, 
"gotoPage");
 
  136                 if (!$rbacsystem->checkAccess(
"read", $this->object->ref_id)) 
 
  139                         $this->ilias->raiseError($this->lng->txt(
"cannot_read_survey"),$this->ilias->error_obj->MESSAGE);
 
  142                 if ($this->object->getAnonymize() && !$this->
object->isAccessibleWithoutCode())
 
  146                                 $anonymize_key = $this->
object->getAnonymousId(
$_POST[
"anonymous_id"]);
 
  149                                         $_SESSION[
"anonymous_id"][$this->
object->getId()] = $anonymize_key;
 
  153                                         unset(
$_POST[
"cmd"][
"resume"]);
 
  161                 if ($this->object->getAnonymize() && !$this->
object->isAccessibleWithoutCode())
 
  163                         if ($this->object->checkSurveyCode(
$_POST[
"anonymous_id"]))
 
  165                                 $_SESSION[
"anonymous_id"][$this->
object->getId()] = 
$_POST[
"anonymous_id"];
 
  170                                 $this->ctrl->redirectByClass(
"ilobjsurveygui", 
"infoScreen");
 
  173                 if ($this->object->isAccessibleWithoutCode())
 
  175                         $anonymous_id = $this->
object->getUserSurveyCode($ilUser->getId());
 
  176                         if (strlen($anonymous_id))
 
  178                                 $_SESSION[
"anonymous_id"][$this->
object->getId()] = $anonymous_id;
 
  182                                 $_SESSION[
"anonymous_id"][$this->
object->getId()] = $this->
object->createNewAccessCode();
 
  189                         $activepage = $this->
object->getLastActivePage(
$_SESSION[
"finished_id"][$this->object->getId()]);
 
  193                 if ($this->object->isSurveyStarted($ilUser->getId(), 
$_SESSION[
"anonymous_id"][$this->
object->getId()]) === FALSE)
 
  195                         $_SESSION[
"finished_id"][$this->
object->getId()] = $this->
object->startSurvey($ilUser->getId(), 
$_SESSION[
"anonymous_id"][$this->
object->getId()]);
 
  197                 if (strlen($activepage)) $this->ctrl->setParameter($this, 
"qid", $activepage);
 
  198                 $this->ctrl->setParameter($this, 
"activecommand", 
"default");
 
  199                 $this->ctrl->redirect($this, 
"redirectQuestion");
 
  210                 switch (
$_GET[
"activecommand"])
 
  242                 $this->ctrl->setParameter($this, 
"activecommand", 
"previous");
 
  243                 $this->ctrl->setParameter($this, 
"qid", 
$_GET[
"qid"]);
 
  246                         $this->ctrl->setParameter($this, 
"direction", 
"0");
 
  250                         $this->ctrl->setParameter($this, 
"direction", 
"-1");
 
  252                 $this->ctrl->redirect($this, 
"redirectQuestion");
 
  263                 $this->ctrl->setParameter($this, 
"activecommand", 
"next");
 
  264                 $this->ctrl->setParameter($this, 
"qid", 
$_GET[
"qid"]);
 
  267                         $this->ctrl->setParameter($this, 
"direction", 
"0");
 
  271                         $this->ctrl->setParameter($this, 
"direction", 
"1");
 
  273                 $this->ctrl->redirect($this, 
"redirectQuestion");
 
  283                 $this->ctrl->setParameter($this, 
"activecommand", 
"gotoPage");
 
  284                 $this->ctrl->setParameter($this, 
"qid", 
$_GET[
"qid"]);
 
  285                 $this->ctrl->setParameter($this, 
"direction", 
"0");
 
  286                 $this->ctrl->redirect($this, 
"redirectQuestion");
 
  303                         $canStart = $this->
object->canStartSurvey(
$_SESSION[
"anonymous_id"][$this->object->getId()]);
 
  304                         if (!$canStart[
"result"])
 
  307                                 $this->ctrl->redirectByClass(
"ilobjsurveygui", 
"infoScreen");
 
  309                         $survey_started = $this->
object->isSurveyStarted($ilUser->getId(), 
$_SESSION[
"anonymous_id"][$this->
object->getId()]);
 
  310                         if ($survey_started === FALSE)
 
  313                                 $this->ctrl->redirectByClass(
"ilobjsurveygui", 
"infoScreen");
 
  316                 else if (!$rbacsystem->checkAccess(
"write", $this->object->ref_id))
 
  319                         $this->ilias->raiseError($this->lng->txt(
"survey_cannot_preview_survey"),$this->ilias->error_obj->MESSAGE);
 
  322                 $page = $this->
object->getNextPage($activepage, $direction);
 
  323                 $constraint_true = 0;
 
  326                 if (count($page[0][
"constraints"]))
 
  328                         while (is_array($page) and ($constraint_true == 0) and (count($page[0][
"constraints"])))
 
  330                                 $constraint_true = ($page[0][
'constraints'][0][
'conjunction'] == 0) ? 
true : 
false;
 
  331                                 foreach ($page[0][
"constraints"] as $constraint)
 
  335                                                 $working_data = $this->
object->loadWorkingData($constraint[
"question"], 
$_SESSION[
"finished_id"][$this->object->getId()]);
 
  339                                                 $working_data = 
$_SESSION[
"preview_data"][$this->
object->getId()][$constraint[
"question"]];
 
  341                                         if ($constraint[
'conjunction'] == 0)
 
  344                                                 $constraint_true = $constraint_true & $this->
object->checkConstraint($constraint, $working_data);
 
  349                                                 $constraint_true = $constraint_true | $this->
object->checkConstraint($constraint, $working_data);
 
  352                                 if ($constraint_true == 0)
 
  355                                         foreach($page as $page_question)
 
  357                                                 $qid = $page_question[
"question_id"];                                   
 
  362                                                         $this->
object->deleteWorkingData($qid, 
$_SESSION[
"finished_id"][$this->object->getId()]);
 
  366                                                         $_SESSION[
"preview_data"][$this->
object->getId()][$qid] = null;
 
  370                                         $page = $this->
object->getNextPage($page[0][
"question_id"], $direction);
 
  375                 $first_question = -1;
 
  378                         $this->ctrl->redirectByClass(
"ilobjsurveygui", 
"infoScreen");
 
  380                 else if ($page === 1)
 
  382                         $this->
object->finishSurvey($ilUser->id, 
$_SESSION[
"anonymous_id"][$this->object->getId()]);
 
  383                         if (array_key_exists(
"anonymous_id", 
$_SESSION)) unset(
$_SESSION[
"anonymous_id"][$this->object->getId()]);
 
  390                         $this->tpl->addBlockFile(
"ADM_CONTENT", 
"adm_content", 
"tpl.il_svy_svy_content.html", 
"Modules/Survey");
 
  392                         if (!($this->object->getAnonymize() && $this->
object->isAccessibleWithoutCode() && (
$_SESSION[
"AccountId"] == ANONYMOUS_USER_ID)))
 
  394                                 $this->tpl->setCurrentBlock(
"suspend_survey");
 
  398                                         $this->tpl->setVariable(
"TEXT_SUSPEND", $this->lng->txt(
"cancel_survey"));
 
  399                                         $this->tpl->setVariable(
"HREF_SUSPEND", $this->ctrl->getLinkTargetByClass(
"ilObjSurveyGUI", 
"infoScreen"));
 
  400                                         $this->tpl->setVariable(
"HREF_IMG_SUSPEND", $this->ctrl->getLinkTargetByClass(
"ilObjSurveyGUI", 
"infoScreen"));
 
  404                                         $this->ctrl->setParameterByClass(
"ilObjSurveyGUI", 
"pgov", 
$_REQUEST[
"pgov"]);
 
  405                                         $this->tpl->setVariable(
"TEXT_SUSPEND", $this->lng->txt(
"survey_cancel_preview"));
 
  406                                         $this->tpl->setVariable(
"HREF_SUSPEND", $this->ctrl->getLinkTargetByClass(
"ilObjSurveyGUI", 
"questions"));
 
  407                                         $this->tpl->setVariable(
"HREF_IMG_SUSPEND", $this->ctrl->getLinkTargetByClass(
"ilObjSurveyGUI", 
"questions"));
 
  410                                 $this->tpl->setVariable(
"ALT_IMG_SUSPEND", $this->lng->txt(
"cancel_survey"));
 
  411                                 $this->tpl->setVariable(
"TITLE_IMG_SUSPEND", $this->lng->txt(
"cancel_survey"));
 
  413                                 $this->tpl->parseCurrentBlock();
 
  416                         $this->tpl->setCurrentBlock(
"percentage");
 
  417                         $percentage = (int)(($page[0][
"position"])*100);
 
  422                         $this->tpl->setVariable(
"PERCENTAGE_ALT", $this->lng->txt(
"percentage"));
 
  423                         $this->tpl->setVariable(
"PERCENTAGE_VALUE", $percentage);
 
  424                         $this->tpl->setVariable(
"PERCENTAGE_UNFINISHED", 100-$percentage);
 
  425                         $this->tpl->parseCurrentBlock();
 
  426                         if (count($page) > 1 && $page[0][
"questionblock_show_blocktitle"])
 
  428                                 $this->tpl->setCurrentBlock(
"questionblock_title");
 
  429                                 $this->tpl->setVariable(
"TEXT_QUESTIONBLOCK_TITLE", $page[0][
"questionblock_title"]);
 
  430                                 $this->tpl->parseCurrentBlock();
 
  432                         foreach ($page as 
$data)
 
  434                                 $this->tpl->setCurrentBlock(
"survey_content");
 
  435                                 if ($data[
"heading"])
 
  437                                         $this->tpl->setVariable(
"QUESTION_HEADING", $data[
"heading"]);
 
  439                                 if ($first_question == -1) $first_question = $data[
"question_id"];
 
  440                                 $question_gui = $this->
object->getQuestionGUI($data[
"type_tag"], $data[
"question_id"]);
 
  443                                         $working_data =& $question_gui->object->getWorkingDataFromUserInput(
$_SESSION[
"postdata"]);
 
  447                                         $working_data = $this->
object->loadWorkingData($data[
"question_id"], 
$_SESSION[
"finished_id"][$this->object->getId()]);
 
  449                                 $question_gui->object->setObligatory($data[
"obligatory"]);
 
  455                                 $show_questiontext = ($data[
"questionblock_show_questiontext"]) ? 1 : 0;
 
  456                                 $question_output = $question_gui->getWorkingForm($working_data, $this->object->getShowQuestionTitles(), $show_questiontext, 
$error_messages[$data[
"question_id"]], $this->
object->getSurveyId());
 
  457                                 $this->tpl->setVariable(
"QUESTION_OUTPUT", $question_output);
 
  458                                 $this->ctrl->setParameter($this, 
"qid", $data[
"question_id"]);
 
  459                                 $this->tpl->parse(
"survey_content");
 
  460                                 if ($data[
"obligatory"]) $required = 
true;
 
  464                                 $this->tpl->setCurrentBlock(
"required");
 
  465                                 $this->tpl->setVariable(
"TEXT_REQUIRED", $this->lng->txt(
"required_field"));
 
  466                                 $this->tpl->parseCurrentBlock();
 
  471                         $this->tpl->setVariable(
"FORM_ACTION", $this->ctrl->getFormAction($this, 
"redirectQuestion"));
 
  476                         $this->
object->setPage(
$_SESSION[
"finished_id"][$this->object->getId()], $page[0][
'question_id']);
 
  477                         $this->
object->setStartTime(
$_SESSION[
"finished_id"][$this->object->getId()], $first_question);
 
  491                 if (!$rbacsystem->checkAccess(
"read", $this->object->ref_id)) 
 
  494                         $this->ilias->raiseError($this->lng->txt(
"cannot_read_survey"),$this->ilias->error_obj->MESSAGE);
 
  499                         $this->
object->setEndTime(
$_SESSION[
"finished_id"][$this->object->getId()]);
 
  506                 $page = $this->
object->getNextPage(
$_GET[
"qid"], 0);
 
  507                 foreach ($page as 
$data)
 
  511                 if ($page_error && (strcmp($navigationDirection, 
"previous") != 0))
 
  513                         if ($page_error == 1)
 
  542                 if (!$rbacsystem->checkAccess(
"read", $this->object->ref_id)) 
 
  545                         $this->ilias->raiseError($this->lng->txt(
"cannot_read_survey"),$this->ilias->error_obj->MESSAGE);
 
  551                 $page = $this->
object->getNextPage(
$_GET[
"qid"], 0);
 
  552                 foreach ($page as 
$data)
 
  556                 if ($page_error && (strcmp($navigationDirection, 
"previous") != 0))
 
  558                         if ($page_error == 1)
 
  574                 switch ($navigationDirection)
 
  578                                 $activepage = 
$_GET[
"qid"];
 
  585                                 $activepage = 
$_GET[
"qid"];
 
  606                 include_once 
"./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
 
  608                 $error = $question->checkUserInput(
$_POST, $this->object->getSurveyId());
 
  609                 if (strlen($error) == 0)
 
  613                                 $user_id = $ilUser->getId();
 
  616                                 $this->
object->deleteWorkingData(
$data[
"question_id"], 
$_SESSION[
"finished_id"][$this->object->getId()]);
 
  618                                 if ($this->object->isSurveyStarted($user_id, 
$_SESSION[
"anonymous_id"][$this->object->getId()]) === 
false)
 
  620                                         $_SESSION[
"finished_id"][$this->
object->getId()] = $this->
object->startSurvey($user_id, 
$_SESSION[
"anonymous_id"][$this->object->getId()]);
 
  622                                 if ($this->object->getAnonymize())
 
  626                                 $question->saveUserInput(
$_POST, 
$_SESSION[
"finished_id"][$this->object->getId()]);
 
  630                                 $_SESSION[
"preview_data"][$this->
object->getId()][
$data[
"question_id"]] = 
 
  631                                         $question->saveUserInput(
$_POST, 
$_SESSION[
"finished_id"][$this->object->getId()], 
true);
 
  637                         $_SESSION[
"svy_errors"][$question->getId()] = $error;
 
  651                 $this->ctrl->redirectByClass(
"ilobjsurveygui", 
"infoScreen");
 
  663                 unset(
$_SESSION[
"anonymous_id"][$this->object->getId()]);
 
  664                 if (strlen($this->object->getOutro()) == 0)
 
  666                         $this->ctrl->redirectByClass(
"ilobjsurveygui", 
"backToRepository");
 
  670                         $this->tpl->addBlockFile(
"ADM_CONTENT", 
"adm_content", 
"tpl.il_svy_svy_finished.html", 
"Modules/Survey");
 
  671                         $this->tpl->setVariable(
"TEXT_FINISHED", $this->object->prepareTextareaOutput($this->object->getOutro()));
 
  672                         $this->tpl->setVariable(
"BTN_EXIT", $this->lng->txt(
"exit"));
 
  673                         $this->tpl->setVariable(
"FORM_ACTION", $this->ctrl->getFormAction($this, 
"runShowFinishedPage"));
 
  688                         $this->ctrl->redirectByClass(
"ilobjsurveygui", 
"backToRepository");
 
  692                         $this->ctrl->setParameterByClass(
"ilobjsurveygui", 
"pgov", 
$_REQUEST[
"pgov"]);
 
  693                         $this->ctrl->redirectByClass(
"ilobjsurveygui", 
"questions");
 
  708                 $prevpage = $this->
object->getNextPage($page[0][
"question_id"], -1);
 
  709                 $this->tpl->setCurrentBlock($navigationblock . 
"_prev");
 
  712                         $this->tpl->setVariable(
"BTN_PREV", $this->lng->txt(
"survey_start"));
 
  716                         $this->tpl->setVariable(
"BTN_PREV", $this->lng->txt(
"survey_previous"));
 
  718                 $this->tpl->parseCurrentBlock();
 
  719                 $nextpage = $this->
object->getNextPage($page[0][
"question_id"], 1);
 
  720                 $this->tpl->setCurrentBlock($navigationblock . 
"_next");
 
  723                         $this->tpl->setVariable(
"BTN_NEXT", $this->lng->txt(
"survey_finish"));
 
  727                         $this->tpl->setVariable(
"BTN_NEXT", $this->lng->txt(
"survey_next"));
 
  729                 $this->tpl->parseCurrentBlock();