4require_once 
'./Modules/Test/classes/class.ilTestServiceGUI.php';
 
    5require_once 
'Modules/TestQuestionPool/classes/class.ilAssQuestionHintTracking.php';
 
    6require_once 
'Modules/Test/classes/class.ilTestPassFinishTasks.php';
 
   50        parent::__construct($a_object);
 
   54        require_once 
'Modules/Test/classes/class.ilTestProcessLockerFactory.php';
 
   82        $cmd = $this->ctrl->getCmd();
 
   83        $next_class = $this->ctrl->getNextClass($this);
 
   84        $this->ctrl->saveParameter($this, 
"sequence");
 
   85        $this->ctrl->saveParameter($this, 
"active_id");
 
   87        switch ($next_class) {
 
   88            case 'iltestpassdetailsoverviewtablegui':
 
   89                require_once 
'Modules/Test/classes/tables/class.ilTestPassDetailsOverviewTableGUI.php';
 
   92                $tableGUI->initFilter();
 
   93                $this->ctrl->forwardCommand($tableGUI);
 
   97                $ret = &$this->$cmd();
 
  105        $headernames = array();
 
  106        if ($this->object->getAnonymity()) {
 
  107            array_push($headernames, $this->lng->txt(
"counter"));
 
  109            array_push($headernames, $this->lng->txt(
"name"));
 
  110            array_push($headernames, $this->lng->txt(
"login"));
 
  112        $additionalFields = $this->
object->getEvaluationAdditionalFields();
 
  113        if (count($additionalFields)) {
 
  114            foreach ($additionalFields as $fieldname) {
 
  115                array_push($headernames, $this->lng->txt($fieldname));
 
  118        array_push($headernames, $this->lng->txt(
"tst_reached_points"));
 
  119        array_push($headernames, $this->lng->txt(
"tst_mark"));
 
  120        if ($this->object->getECTSOutput()) {
 
  121            array_push($headernames, $this->lng->txt(
"ects_grade"));
 
  123        array_push($headernames, $this->lng->txt(
"tst_answered_questions"));
 
  124        array_push($headernames, $this->lng->txt(
"working_time"));
 
  125        array_push($headernames, $this->lng->txt(
"detailed_evaluation"));
 
  131        $headervars = array();
 
  132        if ($this->object->getAnonymity()) {
 
  133            array_push($headervars, 
"counter");
 
  135            array_push($headervars, 
"name");
 
  136            array_push($headervars, 
"login");
 
  138        array_push($headervars, 
"resultspoints");
 
  139        array_push($headervars, 
"resultsmarks");
 
  140        if ($this->object->getECTSOutput()) {
 
  141            array_push($headervars, 
"ects_grade");
 
  143        array_push($headervars, 
"qworkedthrough");
 
  144        array_push($headervars, 
"timeofwork");
 
  145        array_push($headervars, 
"");
 
  158        include_once 
"./Modules/Test/classes/tables/class.ilEvaluationAllTableGUI.php";
 
  160        $table_gui->writeFilterToSession();
 
  161        $this->ctrl->redirect($this, 
"outEvaluation");
 
  173        include_once 
"./Modules/Test/classes/tables/class.ilEvaluationAllTableGUI.php";
 
  175        $table_gui->resetFilter();
 
  176        $this->ctrl->redirect($this, 
"outEvaluation");
 
  187        $ilToolbar = 
$DIC->toolbar();
 
  195        include_once 
"./Modules/Test/classes/tables/class.ilEvaluationAllTableGUI.php";
 
  200            $this->object->getAnonymity(),
 
  201            $this->object->isOfferingQuestionHintsEnabled()
 
  205        $arrFilter = array();
 
  207        foreach ($table_gui->getFilterItems() as $item) {
 
  208            if ($item->getValue() !== 
false) {
 
  209                switch ($item->getPostVar()) {
 
  213                        $arrFilter[$item->getPostVar()] = $item->getValue();
 
  216                        $passedonly = $item->getChecked();
 
  221        include_once 
"./Modules/Test/classes/class.ilTestEvaluationData.php";
 
  223        $eval->setFilterArray($arrFilter);
 
  224        $foundParticipants = $eval->getParticipants();
 
  226        require_once 
'Modules/Test/classes/class.ilTestParticipantData.php';
 
  227        require_once 
'Modules/Test/classes/class.ilTestParticipantAccessFilter.php';
 
  240            if ($this->object->getECTSOutput()) {
 
  241                $passed_array = &$this->
object->getTotalPointsPassedArray();
 
  244                if (!isset($foundParticipants[$active_id]) || !($foundParticipants[$active_id] instanceof 
ilTestEvaluationUserData)) {
 
  249                $userdata = $foundParticipants[$active_id];
 
  253                    $mark_obj = $this->
object->getMarkSchema()->getMatchingMark($userdata->getReachedPointsInPercent());
 
  255                    if ($mark_obj->getPassed() == 
false || !$userdata->areObligationsAnswered()) {
 
  261                    $evaluationrow = array();
 
  262                    if ($this->object->getAnonymity()) {
 
  263                        $evaluationrow[
'name'] = $counter;
 
  264                        $evaluationrow[
'login'] = 
'';
 
  266                        $evaluationrow[
'name'] = $userdata->getName();
 
  267                        if (strlen($userdata->getLogin())) {
 
  268                            $evaluationrow[
'login'] = 
"[" . $userdata->getLogin() . 
"]";
 
  270                            $evaluationrow[
'login'] = 
'';
 
  274                    $evaluationrow[
'reached'] = $userdata->getReached();
 
  275                    $evaluationrow[
'max'] = $userdata->getMaxpoints();
 
  276                    $evaluationrow[
'hint_count'] = $userdata->getRequestedHintsCountFromScoredPass();
 
  277                    $evaluationrow[
'exam_id'] = $userdata->getExamIdFromScoredPass();
 
  278                    $percentage = $userdata->getReachedPointsInPercent();
 
  279                    $mark = $this->
object->getMarkSchema()->getMatchingMark($percentage);
 
  280                    if (is_object($mark)) {
 
  281                        $evaluationrow[
'mark'] = $mark->getShortName();
 
  283                    if ($this->object->getECTSOutput()) {
 
  284                        $ects_mark = $this->
object->getECTSGrade($passed_array, $userdata->getReached(), $userdata->getMaxPoints());
 
  285                        $evaluationrow[
'ects_grade'] = $ects_mark;
 
  287                    $evaluationrow[
'answered'] = $userdata->getQuestionsWorkedThroughInPercent();
 
  288                    $evaluationrow[
'questions_worked_through'] = $userdata->getQuestionsWorkedThrough();
 
  289                    $evaluationrow[
'number_of_questions'] = $userdata->getNumberOfQuestions();
 
  290                    $time_seconds = $userdata->getTimeOfWork();
 
  291                    $time_hours = floor($time_seconds / 3600);
 
  292                    $time_seconds -= $time_hours * 3600;
 
  293                    $time_minutes = floor($time_seconds / 60);
 
  294                    $time_seconds -= $time_minutes * 60;
 
  295                    $evaluationrow[
'working_time'] = sprintf(
"%02d:%02d:%02d", $time_hours, $time_minutes, $time_seconds);
 
  296                    $this->ctrl->setParameter($this, 
"active_id", $active_id);
 
  297                    $href = $this->ctrl->getLinkTarget($this, 
"detailedEvaluation");
 
  298                    $detailed_evaluation = $this->lng->txt(
"detailed_evaluation_show");
 
  299                    $evaluationrow[
'details'] = 
"<a class=\"il_ContainerItemCommand\" href=\"$href\">$detailed_evaluation</a>";
 
  301                    $evaluationrow[
'gender'] = $userfields[
'gender'];
 
  302                    $evaluationrow[
'email'] = $userfields[
'email'];
 
  303                    $evaluationrow[
'institution'] = $userfields[
'institution'];
 
  304                    $evaluationrow[
'street'] = $userfields[
'street'];
 
  305                    $evaluationrow[
'city'] = $userfields[
'city'];
 
  306                    $evaluationrow[
'zipcode'] = $userfields[
'zipcode'];
 
  307                    $evaluationrow[
'country'] = $userfields[
'country'];
 
  308                    $evaluationrow[
'sel_country'] = $userfields[
'sel_country'];
 
  309                    $evaluationrow[
'department'] = $userfields[
'department'];
 
  310                    $evaluationrow[
'matriculation'] = $userfields[
'matriculation'];
 
  312                    $data[] = $evaluationrow;
 
  317        $table_gui->setData(
$data);
 
  319            $ilToolbar->setFormName(
'form_output_eval');
 
  320            $ilToolbar->setFormAction($this->ctrl->getFormAction($this, 
'exportEvaluation'));
 
  321            require_once 
'Services/Form/classes/class.ilSelectInputGUI.php';
 
  322            $export_type = 
new ilSelectInputGUI($this->lng->txt(
'exp_eval_data'), 
'export_type');
 
  324                'excel' => $this->lng->txt(
'exp_type_excel'),
 
  325                'csv' => $this->lng->txt(
'exp_type_spss')
 
  328            if (!$this->object->getAnonymity()) {
 
  330                if ($globalCertificatePrerequisites->validate()) {
 
  331                    $options[
'certificate'] = $this->lng->txt(
'exp_type_certificate');
 
  337            $ilToolbar->addInputItem($export_type, 
true);
 
  338            require_once 
'Services/UIComponent/Button/classes/class.ilSubmitButton.php';
 
  340            $button->setCommand(
'exportEvaluation');
 
  341            $button->setCaption(
'export');
 
  342            $button->getOmitPreventDoubleSubmission();
 
  343            $ilToolbar->addButtonInstance($button);
 
  347        if ($this->object->getShowSolutionAnswersOnly()) {
 
  351        $this->tpl->setContent($table_gui->getHTML());
 
  371        $active_id = 
$_GET[
'active_id'];
 
  373        if (!$this->
getTestAccess()->checkResultsAccessForActiveId($active_id)) {
 
  377        if (strlen($active_id) == 0) {
 
  378            ilUtil::sendInfo($this->lng->txt(
'detailed_evaluation_missing_active_id'), 
true);
 
  379            $this->ctrl->redirect($this, 
'outEvaluation');
 
  384        $toolbar = 
$DIC[
'ilToolbar'];
 
  386        require_once 
'Services/UIComponent/Button/classes/class.ilLinkButton.php';
 
  388        $backBtn->setCaption(
'back');
 
  389        $backBtn->setUrl($this->ctrl->getLinkTarget($this, 
'outEvaluation'));
 
  390        $toolbar->addInputItem($backBtn);
 
  392        $this->
object->setAccessFilteredParticipantList(
 
  393            $this->object->buildStatisticsAccessFilteredParticipantList()
 
  396        $data = &$this->
object->getCompleteEvaluationData();
 
  398        require_once 
'Services/Form/classes/class.ilPropertyFormGUI.php';
 
  400        $form->setTitle(sprintf(
 
  401            $this->lng->txt(
'detailed_evaluation_for'),
 
  402            $data->getParticipant($active_id)->getName()
 
  406        $resultPoints->setValue(
$data->getParticipant($active_id)->getReached() . 
" " . strtolower($this->lng->txt(
"of")) . 
" " . 
$data->getParticipant($active_id)->getMaxpoints() . 
" (" . sprintf(
"%2.2f", 
$data->getParticipant($active_id)->getReachedPointsInPercent()) . 
" %" . 
")");
 
  407        $form->addItem($resultPoints);
 
  409        if (strlen(
$data->getParticipant($active_id)->getMark())) {
 
  411            $resultMarks->setValue(
$data->getParticipant($active_id)->getMark());
 
  412            $form->addItem($resultMarks);
 
  413            if (strlen(
$data->getParticipant($active_id)->getECTSMark())) {
 
  415                $ectsGrade->setValue(
$data->getParticipant($active_id)->getECTSMark());
 
  416                $form->addItem($ectsGrade);
 
  420        if ($this->object->isOfferingQuestionHintsEnabled()) {
 
  421            $requestHints = 
new ilNonEditableValueGUI($this->lng->txt(
'tst_question_hints_requested_hint_count_header'));
 
  422            $requestHints->setValue(
$data->getParticipant($active_id)->getRequestedHintsCountFromScoredPass());
 
  423            $form->addItem($requestHints);
 
  426        $time_seconds = 
$data->getParticipant($active_id)->getTimeOfWork();
 
  427        $atime_seconds = 
$data->getParticipant($active_id)->getNumberOfQuestions() ? $time_seconds / 
$data->getParticipant($active_id)->getNumberOfQuestions() : 0;
 
  428        $time_hours = floor($time_seconds / 3600);
 
  429        $time_seconds -= $time_hours * 3600;
 
  430        $time_minutes = floor($time_seconds / 60);
 
  431        $time_seconds -= $time_minutes * 60;
 
  433        $timeOfWork->setValue(sprintf(
"%02d:%02d:%02d", $time_hours, $time_minutes, $time_seconds));
 
  434        $form->addItem($timeOfWork);
 
  436        $this->tpl->setVariable(
"TXT_ATIMEOFWORK", $this->lng->txt(
""));
 
  437        $time_hours = floor($atime_seconds / 3600);
 
  438        $atime_seconds -= $time_hours * 3600;
 
  439        $time_minutes = floor($atime_seconds / 60);
 
  440        $atime_seconds -= $time_minutes * 60;
 
  442        $avgTimeOfWork->setValue(sprintf(
"%02d:%02d:%02d", $time_hours, $time_minutes, $atime_seconds));
 
  443        $form->addItem($avgTimeOfWork);
 
  447        $form->addItem($firstVisit);
 
  451        $form->addItem($lastVisit);
 
  454        $nrPasses->setValue(
$data->getParticipant($active_id)->getLastPass() + 1);
 
  455        $form->addItem($nrPasses);
 
  459            $scoredPass->setValue(
$data->getParticipant($active_id)->getBestPass() + 1);
 
  461            $scoredPass->setValue(
$data->getParticipant($active_id)->getLastPass() + 1);
 
  463        $form->addItem($scoredPass);
 
  465        $median = 
$data->getStatistics()->getStatistics()->median();
 
  466        $pct = 
$data->getParticipant($active_id)->getMaxpoints() ? ($median / 
$data->getParticipant($active_id)->getMaxpoints()) * 100.0 : 0;
 
  467        $mark = $this->
object->mark_schema->getMatchingMark($pct);
 
  468        if (is_object($mark)) {
 
  470            $markMedian->setValue($mark->getShortName());
 
  471            $form->addItem($markMedian);
 
  475        $rankParticipant->setValue(
$data->getStatistics()->getStatistics()->rank(
$data->getParticipant($active_id)->getReached()));
 
  476        $form->addItem($rankParticipant);
 
  479        $rankMedian->setValue(
$data->getStatistics()->getStatistics()->rank_median());
 
  480        $form->addItem($rankMedian);
 
  482        $totalParticipants = 
new ilNonEditableValueGUI($this->lng->txt(
'tst_stat_result_total_participants'));
 
  483        $totalParticipants->setValue(
$data->getStatistics()->getStatistics()->count());
 
  484        $form->addItem($totalParticipants);
 
  487        $medianField->setValue($median);
 
  488        $form->addItem($medianField);
 
  490        $this->tpl->setContent(
$form->getHTML());
 
  496            if ($finishdate > 0) {
 
  497                if ((
$DIC->access()->checkAccess(
'write', 
'', (
int) 
$_GET[
'ref_id']))) {
 
  498                    $this->ctrl->setParameter($this, 
'statistics', 
'1');
 
  499                    $this->ctrl->setParameter($this, 
'active_id', $active_id);
 
  500                    $this->ctrl->setParameter($this, 
'pass', 
$pass);
 
  502                    $this->ctrl->setParameter($this, 
'statistics', 
'');
 
  503                    $this->ctrl->setParameter($this, 
'active_id', 
'');
 
  504                    $this->ctrl->setParameter($this, 
'pass', 
'');
 
  507                require_once 
'Modules/Test/classes/tables/class.ilTestDetailedEvaluationStatisticsTableGUI.php';
 
  509                $table->setTitle(sprintf($this->lng->txt(
"tst_eval_question_points"), 
$pass + 1));
 
  510                if ((
$DIC->access()->checkAccess(
'write', 
'', (
int) 
$_GET[
'ref_id']))) {
 
  511                    $table->addCommandButton(
'outParticipantsPassDetails', $this->lng->txt(
'tst_show_answer_sheet'));
 
  514                $questions = 
$data->getParticipant($active_id)->getQuestions(
$pass);
 
  515                if (!is_array($questions)) {
 
  516                    $questions = 
$data->getParticipant($active_id)->getQuestions(0);
 
  519                $tableData = array();
 
  522                foreach ((array) $questions as $question) {
 
  523                    $userDataData = array(
 
  524                        'counter' => ++$counter,
 
  525                        'id' => $question[
'id'],
 
  526                        'id_txt' => $this->lng->txt(
'question_id_short'),
 
  527                        'title' => 
$data->getQuestionTitle($question[
'id'])
 
  530                    $answeredquestion = 
$data->getParticipant($active_id)->getPass(
$pass)->getAnsweredQuestionByQuestionId($question[
"id"]);
 
  531                    if (is_array($answeredquestion)) {
 
  532                        $percent = $answeredquestion[
'points'] ? $answeredquestion[
'reached'] / $answeredquestion[
'points'] * 100.0 : 0;
 
  533                        $userDataData[
'points'] = $answeredquestion[
'reached'] . 
' ' . strtolower($this->lng->txt(
'of')) . 
" " . $answeredquestion[
'points'] . 
' (' . sprintf(
"%.2f", $percent) . 
' %)';
 
  535                        $userDataData[
'points'] = 
'0 ' . strtolower($this->lng->txt(
'of')) . 
' ' . $question[
'points'] . 
' (' . sprintf(
"%.2f", 0) . 
' %) - ' . $this->lng->txt(
'question_not_answered');
 
  538                    $tableData[] = $userDataData;
 
  540                $table->setData($tableData);
 
  542                $tables[] = 
$table->getHTML();
 
  547        $DIC[
'tpl']->setContent(
$form->getHTML() . implode(
'', $tables));
 
  565        require_once 
'./Modules/TestQuestionPool/classes/class.assQuestion.php';
 
  568            $question_object->deliverFileUploadZIPFile(
 
  570                $this->object->getTestId(),
 
  571                $this->object->getTitle()
 
  574            $this->ctrl->redirect($this, 
"singleResults");
 
  588        $ilToolbar = 
$DIC->toolbar();
 
  596        $this->tpl->addBlockFile(
"ADM_CONTENT", 
"adm_content", 
"tpl.il_as_tst_eval_anonymous_aggregation.html", 
"Modules/Test");
 
  598        $this->
object->setAccessFilteredParticipantList(
 
  599            $this->object->buildStatisticsAccessFilteredParticipantList()
 
  602        $eval = &$this->
object->getCompleteEvaluationData();
 
  604        $foundParticipants = &$eval->getParticipants();
 
  605        if (count($foundParticipants)) {
 
  606            $ilToolbar->setFormName(
'form_output_eval');
 
  607            $ilToolbar->setFormAction($this->ctrl->getFormAction($this, 
'exportAggregatedResults'));
 
  608            require_once 
'Services/Form/classes/class.ilSelectInputGUI.php';
 
  609            $export_type = 
new ilSelectInputGUI($this->lng->txt(
'exp_eval_data'), 
'export_type');
 
  610            $export_type->setOptions(array(
 
  611                'excel' => $this->lng->txt(
'exp_type_excel'),
 
  612                'csv' => $this->lng->txt(
'exp_type_spss')
 
  614            $ilToolbar->addInputItem($export_type, 
true);
 
  615            require_once 
'Services/UIComponent/Button/classes/class.ilSubmitButton.php';
 
  617            $button->setCommand(
'exportAggregatedResults');
 
  618            $button->setCaption(
'export');
 
  619            $button->getOmitPreventDoubleSubmission();
 
  620            $ilToolbar->addButtonInstance($button);
 
  622            array_push(
$data, array(
 
  623                'result' => $this->lng->txt(
"tst_eval_total_persons"),
 
  624                'value' => count($foundParticipants)
 
  626            $total_finished = $eval->getTotalFinishedParticipants();
 
  627            array_push(
$data, array(
 
  628                'result' => $this->lng->txt(
"tst_eval_total_finished"),
 
  629                'value' => $total_finished
 
  631            $average_time = $this->
object->evalTotalStartedAverageTime(
 
  632                $eval->getParticipantIds()
 
  634            $diff_seconds = $average_time;
 
  635            $diff_hours = floor($diff_seconds / 3600);
 
  636            $diff_seconds -= $diff_hours * 3600;
 
  637            $diff_minutes = floor($diff_seconds / 60);
 
  638            $diff_seconds -= $diff_minutes * 60;
 
  639            array_push(
$data, array(
 
  640                'result' => $this->lng->txt(
"tst_eval_total_finished_average_time"),
 
  641                'value' => sprintf(
"%02d:%02d:%02d", $diff_hours, $diff_minutes, $diff_seconds)
 
  644            $total_passed_reached = 0;
 
  645            $total_passed_max = 0;
 
  646            $total_passed_time = 0;
 
  647            foreach ($foundParticipants as $userdata) {
 
  648                if ($userdata->getPassed()) {
 
  650                    $total_passed_reached += $userdata->getReached();
 
  651                    $total_passed_max += $userdata->getMaxpoints();
 
  652                    $total_passed_time += $userdata->getTimeOfWork();
 
  655            $average_passed_reached = $total_passed ? $total_passed_reached / $total_passed : 0;
 
  656            $average_passed_max = $total_passed ? $total_passed_max / $total_passed : 0;
 
  657            $average_passed_time = $total_passed ? $total_passed_time / $total_passed : 0;
 
  658            array_push(
$data, array(
 
  659                'result' => $this->lng->txt(
"tst_eval_total_passed"),
 
  660                'value' => $total_passed
 
  662            array_push(
$data, array(
 
  663                'result' => $this->lng->txt(
"tst_eval_total_passed_average_points"),
 
  664                'value' => sprintf(
"%2.2f", $average_passed_reached) . 
" " . strtolower($this->lng->txt(
"of")) . 
" " . sprintf(
"%2.2f", $average_passed_max)
 
  666            $average_time = $average_passed_time;
 
  667            $diff_seconds = $average_time;
 
  668            $diff_hours = floor($diff_seconds / 3600);
 
  669            $diff_seconds -= $diff_hours * 3600;
 
  670            $diff_minutes = floor($diff_seconds / 60);
 
  671            $diff_seconds -= $diff_minutes * 60;
 
  672            array_push(
$data, array(
 
  673                'result' => $this->lng->txt(
"tst_eval_total_passed_average_time"),
 
  674                'value' => sprintf(
"%02d:%02d:%02d", $diff_hours, $diff_minutes, $diff_seconds)
 
  678        include_once 
"./Modules/Test/classes/tables/class.ilTestAggregatedResultsTableGUI.php";
 
  680        $table_gui->setData(
$data);
 
  681        $this->tpl->setVariable(
'AGGREGATED_RESULTS', $table_gui->getHTML());
 
  684        foreach ($eval->getQuestionTitles() as $question_id => $question_title) {
 
  688            foreach ($foundParticipants as $userdata) {
 
  689                for (
$i = 0; 
$i <= $userdata->getLastPass(); 
$i++) {
 
  690                    if (is_object($userdata->getPass(
$i))) {
 
  691                        $question = &$userdata->getPass(
$i)->getAnsweredQuestionByQuestionId($question_id);
 
  692                        if (is_array($question)) {
 
  694                            $reached += $question[
"reached"];
 
  695                            $max += $question[
"points"];
 
  700            $percent = $max ? $reached / $max * 100.0 : 0;
 
  702            $this->ctrl->setParameter($this, 
"qid", $question_id);
 
  704            $points_reached = ($answered ? $reached / $answered : 0);
 
  705            $points_max = ($answered ? $max / $answered : 0);
 
  709                    'qid' => $question_id,
 
  710                    'title' => $question_title,
 
  711                    'points' => $points_reached,
 
  712                    'points_reached' => $points_reached,
 
  713                    'points_max' => $points_max,
 
  714                    'percentage' => (
float) $percent,
 
  715                    'answers' => $answered
 
  719        include_once 
"./Modules/Test/classes/tables/class.ilTestAverageReachedPointsTableGUI.php";
 
  721        $table_gui->setData(
$rows);
 
  722        $this->tpl->setVariable(
'TBL_AVG_REACHED', $table_gui->getHTML());
 
  731        if (array_key_exists(
"g_filterby", 
$_GET)) {
 
  732            $filterby = 
$_GET[
"g_filterby"];
 
  736        if (array_key_exists(
"g_userfilter", 
$_GET)) {
 
  737            $filtertext = 
$_GET[
"g_userfilter"];
 
  741        if (array_key_exists(
"g_passedonly", 
$_GET)) {
 
  742            if (
$_GET[
"g_passedonly"] == 1) {
 
  747        require_once 
'Modules/Test/classes/class.ilTestExportFactory.php';
 
  750        switch (
$_POST[
"export_type"]) {
 
  752                $expFactory->getExporter(
'results')->exportToExcel(
 
  761                $expFactory->getExporter(
'results')->exportToCSV(
 
  771                    $this->ctrl->setParameterByClass(
"iltestcertificategui", 
"g_passedonly", 
"1");
 
  773                if (strlen($filtertext)) {
 
  774                    $this->ctrl->setParameterByClass(
"iltestcertificategui", 
"g_userfilter", $filtertext);
 
  776                $this->ctrl->redirect($this, 
"exportCertificate");
 
  788        require_once 
'Modules/Test/classes/class.ilTestExportFactory.php';
 
  790        $exportObj = $expFactory->getExporter(
'aggregated');
 
  792        switch (
$_POST[
"export_type"]) {
 
  794                $exportObj->exportToExcel($deliver = 
true);
 
  797                $exportObj->exportToCSV($deliver = 
true);
 
  813        if (!$globalCertificatePrerequisites->validate()) {
 
  814            $DIC[
'ilErr']->raiseError($this->lng->txt(
'permission_denied'), 
$DIC[
'ilErr']->MESSAGE);
 
  817        $database = 
$DIC->database();
 
  818        $logger = 
$DIC->logger()->root();
 
  825        $total_users = array();
 
  827        $this->
object->setAccessFilteredParticipantList(
 
  828            $this->object->buildStatisticsAccessFilteredParticipantList()
 
  832        $pdfGenerator = 
new ilPdfGenerator($ilUserCertificateRepository, $logger);
 
  834        $total_users = &$this->
object->evalTotalPersonsArray();
 
  835        if (count($total_users)) {
 
  838            foreach ($total_users as $active_id => 
$name) {
 
  839                $user_id = $this->
object->_getUserIdFromActiveId($active_id);
 
  841                if (!$certValidator->isCertificateDownloadable($user_id, $this->object->getId())) {
 
  849                    $this->lng->txt(
'error_creating_certificate_pdf')
 
  852                $pdf = $pdfAction->createPDF($user_id, $this->object->getid());
 
  857            $zipArchive = 
$certificate->zipCertificatesInArchiveDirectory($archive_dir, 
true);
 
  869        if ($original_id > 0) {
 
  886        $ilTabs = 
$DIC[
'ilTabs'];
 
  887        $ilAccess = 
$DIC[
'ilAccess'];
 
  888        $ilObjDataCache = 
$DIC[
'ilObjDataCache'];
 
  890        $active_id = (int) 
$_GET[
"active_id"];
 
  892        if (!$this->
getTestAccess()->checkResultsAccessForActiveId($active_id)) {
 
  896        $this->ctrl->saveParameter($this, 
"active_id");
 
  897        $testSession = $this->testSessionFactory->getSession($active_id);
 
  900        if ($testSession->getTestId() != $this->object->getTestId()) {
 
  904        $this->ctrl->saveParameter($this, 
"pass");
 
  907        if (isset(
$_GET[
'statistics']) && 
$_GET[
'statistics'] == 1) {
 
  908            $this->ctrl->setParameterByClass(
"ilTestEvaluationGUI", 
"active_id", $active_id);
 
  909            $this->ctrl->saveParameter($this, 
'statistics');
 
  911            $ilTabs->setBackTarget(
 
  912                $this->lng->txt(
'back'),
 
  913                $this->ctrl->getLinkTargetByClass(
'ilTestEvaluationGUI', 
'detailedEvaluation')
 
  915        } elseif ($this->object->getNrOfTries() == 1) {
 
  916            $ilTabs->setBackTarget(
 
  917                $this->lng->txt(
'back'),
 
  918                $this->ctrl->getLinkTargetByClass(
'ilParticipantsTestResultsGUI')
 
  921            $ilTabs->setBackTarget(
 
  922                $this->lng->txt(
'tst_results_back_overview'),
 
  923                $this->ctrl->getLinkTarget($this, 
'outParticipantsResultsOverview')
 
  932        require_once 
'Modules/Test/classes/class.ilTestResultHeaderLabelBuilder.php';
 
  935        $objectivesList = 
null;
 
  938            $testSequence = $this->testSequenceFactory->getSequenceByActiveIdAndPass($active_id, 
$pass);
 
  939            $testSequence->loadFromDb();
 
  940            $testSequence->loadQuestions();
 
  942            require_once 
'Modules/Course/classes/Objectives/class.ilLOTestQuestionAdapter.php';
 
  946            $objectivesList->loadObjectivesTitles();
 
  948            $testResultHeaderLabelBuilder->setObjectiveOrientedContainerId($testSession->getObjectiveOrientedContainerId());
 
  949            $testResultHeaderLabelBuilder->setUserId($testSession->getUserId());
 
  950            $testResultHeaderLabelBuilder->setTestObjId($this->object->getId());
 
  951            $testResultHeaderLabelBuilder->setTestRefId($this->object->getRefId());
 
  952            $testResultHeaderLabelBuilder->initObjectiveOrientedMode();
 
  958        $overviewTableGUI->setTitle($testResultHeaderLabelBuilder->getPassDetailsHeaderLabel(
$pass + 1));
 
  960        $user_id = $this->
object->_getUserIdFromActiveId($active_id);
 
  962        $template = 
new ilTemplate(
"tpl.il_as_tst_pass_details_overview_participants.html", 
true, 
true, 
"Modules/Test");
 
  966        $this->ctrl->setParameter($this, 
'pdf', 
'1');
 
  967        $toolbar->setPdfExportLinkTarget($this->ctrl->getLinkTarget($this, 
'outParticipantsPassDetails'));
 
  968        $this->ctrl->setParameter($this, 
'pdf', 
'');
 
  970        if (isset(
$_GET[
'show_best_solutions'])) {
 
  971            $_SESSION[
'tst_results_show_best_solutions'] = 
true;
 
  972        } elseif (isset(
$_GET[
'hide_best_solutions'])) {
 
  973            $_SESSION[
'tst_results_show_best_solutions'] = 
false;
 
  974        } elseif (!isset(
$_SESSION[
'tst_results_show_best_solutions'])) {
 
  975            $_SESSION[
'tst_results_show_best_solutions'] = 
false;
 
  978        if (
$_SESSION[
'tst_results_show_best_solutions']) {
 
  979            $this->ctrl->setParameter($this, 
'hide_best_solutions', 
'1');
 
  980            $toolbar->setHideBestSolutionsLinkTarget($this->ctrl->getLinkTarget($this, 
'outParticipantsPassDetails'));
 
  981            $this->ctrl->setParameter($this, 
'hide_best_solutions', 
'');
 
  983            $this->ctrl->setParameter($this, 
'show_best_solutions', 
'1');
 
  984            $toolbar->setShowBestSolutionsLinkTarget($this->ctrl->getLinkTarget($this, 
'outParticipantsPassDetails'));
 
  985            $this->ctrl->setParameter($this, 
'show_best_solutions', 
'');
 
  989        $template->setVariable(
'RESULTS_TOOLBAR', $this->ctrl->getHTML($toolbar));
 
  993            $gradingMessageBuilder->buildList();
 
  995            $template->setCurrentBlock(
'grading_message');
 
  996            $template->setVariable(
'GRADING_MESSAGE', $gradingMessageBuilder->getList());
 
 1000        $list_of_answers = $this->
getPassListOfAnswers($result_array, $active_id, 
$pass, 
$_SESSION[
'tst_results_show_best_solutions'], 
false, 
false, 
false, 
true, $objectivesList, $testResultHeaderLabelBuilder);
 
 1001        $template->setVariable(
"LIST_OF_ANSWERS", $list_of_answers);
 
 1002        $template->setVariable(
"PASS_DETAILS", $this->ctrl->getHTML($overviewTableGUI));
 
 1004        $data = &$this->
object->getCompleteEvaluationData();
 
 1005                $result = 
$data->getParticipant($active_id)->getReached() . 
" " . strtolower($this->lng->txt(
"of")) . 
" " . 
$data->getParticipant($active_id)->getMaxpoints() . 
" (" . sprintf(
"%2.2f", 
$data->getParticipant($active_id)->getReachedPointsInPercent()) . 
" %" . 
")";
 
 1006                $template->setCurrentBlock(
'total_score');
 
 1007                $template->setVariable(
"TOTAL_RESULT_TEXT",$this->lng->txt(
'tst_stat_result_resultspoints'));
 
 1012            $template->setVariable(
"USER_DATA", $user_data);
 
 1014            $uname = $this->
object->userLookupFullName($user_id);
 
 1015            $template->setVariable(
"TEXT_HEADING", sprintf($this->lng->txt(
"tst_result_user_name_pass"), 
$pass + 1, $uname));
 
 1017            $template->setVariable(
"TEXT_RESULTS", $testResultHeaderLabelBuilder->getPassDetailsHeaderLabel(
$pass + 1));
 
 1020        $template->setVariable(
"FORMACTION", $this->ctrl->getFormAction($this));
 
 1026        if ($this->object->getShowSolutionAnswersOnly()) {
 
 1032            require_once 
'Modules/Test/classes/class.ilTestPDFGenerator.php';
 
 1035            $this->tpl->setVariable(
"ADM_CONTENT", 
$template->get());
 
 1047        $ilTabs = 
$DIC[
'ilTabs'];
 
 1048        $ilObjDataCache = 
$DIC[
'ilObjDataCache'];
 
 1050        $active_id = (int) 
$_GET[
"active_id"];
 
 1052        if (!$this->
getTestAccess()->checkResultsAccessForActiveId($active_id)) {
 
 1056        $testSession = $this->testSessionFactory->getSession($active_id);
 
 1059        if ($testSession->getTestId() != $this->object->getTestId()) {
 
 1063        if ($this->object->getNrOfTries() == 1) {
 
 1064            $this->ctrl->setParameter($this, 
"active_id", $active_id);
 
 1066            $this->ctrl->redirect($this, 
"outParticipantsPassDetails");
 
 1069        $ilTabs->setBackTarget(
 
 1070            $this->lng->txt(
'back'),
 
 1071            $this->ctrl->getLinkTargetByClass(
'ilParticipantsTestResultsGUI')
 
 1079        $template = 
new ilTemplate(
"tpl.il_as_tst_pass_overview_participants.html", 
true, 
true, 
"Modules/Test");
 
 1083        $this->ctrl->setParameter($this, 
'pdf', 
'1');
 
 1084        $toolbar->setPdfExportLinkTarget($this->ctrl->getLinkTarget($this, __FUNCTION__));
 
 1085        $this->ctrl->setParameter($this, 
'pdf', 
'');
 
 1088        $template->setVariable(
'RESULTS_TOOLBAR', $this->ctrl->getHTML($toolbar));
 
 1090        require_once 
'Modules/Test/classes/class.ilTestResultHeaderLabelBuilder.php';
 
 1093            $testResultHeaderLabelBuilder->setObjectiveOrientedContainerId($testSession->getObjectiveOrientedContainerId());
 
 1094            $testResultHeaderLabelBuilder->setUserId($testSession->getUserId());
 
 1095            $testResultHeaderLabelBuilder->setTestObjId($this->object->getId());
 
 1096            $testResultHeaderLabelBuilder->setTestRefId($this->object->getRefId());
 
 1097            $testResultHeaderLabelBuilder->initObjectiveOrientedMode();
 
 1101        require_once 
'Modules/Test/classes/class.ilTestPassesSelector.php';
 
 1103        $testPassesSelector->setActiveId($testSession->getActiveId());
 
 1104        $testPassesSelector->setLastFinishedPass($testSession->getLastFinishedPass());
 
 1107        $passOverViewTableGUI->setActiveId($testSession->getActiveId());
 
 1108        $passOverViewTableGUI->setResultPresentationEnabled(
true);
 
 1109        $passOverViewTableGUI->setPassDetailsCommand(
'outParticipantsPassDetails');
 
 1110        $passOverViewTableGUI->init();
 
 1111        $passOverViewTableGUI->setData($this->
getPassOverviewTableData($testSession, $testPassesSelector->getExistingPasses(), 
true, 
true));
 
 1112        $passOverViewTableGUI->setTitle($testResultHeaderLabelBuilder->getPassOverviewHeaderLabel());
 
 1113        $template->setVariable(
"PASS_OVERVIEW", $passOverViewTableGUI->getHTML());
 
 1117            $gradingMessageBuilder->buildList();
 
 1119            $template->setCurrentBlock(
'grading_message');
 
 1120            $template->setVariable(
'GRADING_MESSAGE', $gradingMessageBuilder->getList());
 
 1125        $user_id = $this->
object->_getUserIdFromActiveId($active_id);
 
 1128            if ($this->object->getAnonymity()) {
 
 1129                $template->setVariable(
"TEXT_HEADING", $this->lng->txt(
"tst_result"));
 
 1131                $uname = $this->
object->userLookupFullName($user_id, 
true);
 
 1132                $template->setVariable(
"TEXT_HEADING", sprintf($this->lng->txt(
"tst_result_user_name"), $uname));
 
 1133                $template->setVariable(
"USER_DATA", $user_data);
 
 1141        if ($this->object->getShowSolutionAnswersOnly()) {
 
 1145        if (array_key_exists(
"pdf", 
$_GET) && (
$_GET[
"pdf"] == 1)) {
 
 1149            $filename = 
$name[
'lastname'] . 
'_' . 
$name[
'firstname'] . 
'_' . 
$name[
'login'] . 
'__' . $this->
object->getTitleFilenameCompliant();
 
 1150            require_once 
'Modules/Test/classes/class.ilTestPDFGenerator.php';
 
 1155            $this->tpl->setVariable(
"ADM_CONTENT", 
$template->get());
 
 1162        $tableGUI->initFilter();
 
 1163        $tableGUI->resetOffset();
 
 1164        $tableGUI->writeFilterToSession();
 
 1171        $tableGUI->initFilter();
 
 1172        $tableGUI->resetOffset();
 
 1173        $tableGUI->resetFilter();
 
 1180        $tableGUI->initFilter();
 
 1181        $tableGUI->resetOffset();
 
 1182        $tableGUI->writeFilterToSession();
 
 1189        $tableGUI->initFilter();
 
 1190        $tableGUI->resetOffset();
 
 1191        $tableGUI->resetFilter();
 
 1203        $ilTabs = 
$DIC[
'ilTabs'];
 
 1205        $ilObjDataCache = 
$DIC[
'ilObjDataCache'];
 
 1207        $ilTabs->clearSubTabs();
 
 1208        $ilTabs->setBackTarget($this->lng->txt(
'tst_results_back_overview'), $this->ctrl->getLinkTarget($this));
 
 1210        $testSession = $this->testSessionFactory->getSession();
 
 1212        if (!$this->object->getShowPassDetails()) {
 
 1213            #$executable = $this->object->isExecutable($testSession, $ilUser->getId()); 
 1215            #if($executable["executable"])
 
 1217            $this->ctrl->redirectByClass(
"ilobjtestgui", 
"infoScreen");
 
 1221        $active_id = $testSession->getActiveId();
 
 1222        $user_id = $testSession->getUserId();
 
 1224        $this->ctrl->saveParameter($this, 
"pass");
 
 1232        require_once 
'Modules/Test/classes/class.ilTestResultHeaderLabelBuilder.php';
 
 1235        $objectivesList = 
null;
 
 1237        $considerHiddenQuestions = 
true;
 
 1238        $considerOptionalQuestions = 
true;
 
 1241            $considerHiddenQuestions = 
false;
 
 1243            $testSequence = $this->testSequenceFactory->getSequenceByActiveIdAndPass($active_id, 
$pass);
 
 1244            $testSequence->loadFromDb();
 
 1245            $testSequence->loadQuestions();
 
 1247            if ($this->object->isRandomTest() && !$testSequence->isAnsweringOptionalQuestionsConfirmed()) {
 
 1248                $considerOptionalQuestions = 
false;
 
 1251            require_once 
'Modules/Course/classes/Objectives/class.ilLOTestQuestionAdapter.php';
 
 1255            $objectivesList->loadObjectivesTitles();
 
 1257            $testResultHeaderLabelBuilder->setObjectiveOrientedContainerId($testSession->getObjectiveOrientedContainerId());
 
 1258            $testResultHeaderLabelBuilder->setUserId($testSession->getUserId());
 
 1259            $testResultHeaderLabelBuilder->setTestObjId($this->object->getId());
 
 1260            $testResultHeaderLabelBuilder->setTestRefId($this->object->getRefId());
 
 1261            $testResultHeaderLabelBuilder->initObjectiveOrientedMode();
 
 1266        $command_solution_details = 
"";
 
 1267        if ($this->object->getShowSolutionDetails()) {
 
 1268            $command_solution_details = 
"outCorrectSolution";
 
 1270        $questionAnchorNav = $this->
object->canShowSolutionPrintview();
 
 1272        $tpl = 
new ilTemplate(
'tpl.il_as_tst_pass_details_overview_participants.html', 
true, 
true, 
"Modules/Test");
 
 1277            $this->ctrl->setParameter($this, 
'pdf', 
'1');
 
 1278            $toolbar->setPdfExportLinkTarget($this->ctrl->getLinkTarget($this, 
'outUserPassDetails'));
 
 1279            $this->ctrl->setParameter($this, 
'pdf', 
'');
 
 1282            if ($validator->isCertificateDownloadable($user_id, $this->object->getId())) {
 
 1283                $toolbar->setCertificateLinkTarget($this->ctrl->getLinkTarget($this, 
'outCertificate'));
 
 1288            $tpl->setVariable(
'RESULTS_TOOLBAR', $this->ctrl->getHTML($toolbar));
 
 1290            $tpl->setCurrentBlock(
'signature');
 
 1292            $tpl->parseCurrentBlock();
 
 1294            if ($this->object->isShowExamIdInTestResultsEnabled()) {
 
 1295                $tpl->setCurrentBlock(
'exam_id');
 
 1297                    $testSession->getActiveId(),
 
 1300                $tpl->setVariable(
'EXAM_ID_TXT', $this->lng->txt(
'exam_id'));
 
 1301                $tpl->parseCurrentBlock();
 
 1308            $gradingMessageBuilder->buildMessage();
 
 1309            $gradingMessageBuilder->sendMessage();
 
 1311            #$template->setCurrentBlock('grading_message'); 
 1312            #$template->setVariable('GRADING_MESSAGE', ); 
 1313            #$template->parseCurrentBlock(); 
 1321            "outUserPassDetails",
 
 1322            $command_solution_details,
 
 1326        $overviewTableGUI->setTitle($testResultHeaderLabelBuilder->getPassDetailsHeaderLabel(
$pass + 1));
 
 1327        $tpl->setVariable(
"PASS_DETAILS", $this->ctrl->getHTML($overviewTableGUI));
 
 1329        $data = &$this->
object->getCompleteEvaluationData();
 
 1330                $result = 
$data->getParticipant($active_id)->getReached() . 
" " . strtolower($this->lng->txt(
"of")) . 
" " . 
$data->getParticipant($active_id)->getMaxpoints() . 
" (" . sprintf(
"%2.2f", 
$data->getParticipant($active_id)->getReachedPointsInPercent()) . 
" %" . 
")";
 
 1331                $tpl->setCurrentBlock(
'total_score');
 
 1332                $tpl->setVariable(
"TOTAL_RESULT_TEXT",$this->lng->txt(
'tst_stat_result_resultspoints'));
 
 1334        $tpl->parseCurrentBlock();
 
 1336        if ($this->object->canShowSolutionPrintview()) {
 
 1341                $this->object->getShowSolutionListComparison(),
 
 1347                $testResultHeaderLabelBuilder
 
 1349            $tpl->setVariable(
"LIST_OF_ANSWERS", $list_of_answers);
 
 1352        $tpl->setVariable(
"TEXT_RESULTS", $testResultHeaderLabelBuilder->getPassDetailsHeaderLabel(
$pass + 1));
 
 1353        $tpl->setVariable(
"FORMACTION", $this->ctrl->getFormAction($this));
 
 1355        $uname = $this->
object->userLookupFullName($user_id, 
true);
 
 1358            if ($this->object->getAnonymity()) {
 
 1359                $tpl->setVariable(
"TEXT_HEADING", $this->lng->txt(
"tst_result_pass"));
 
 1361                $tpl->setVariable(
"TEXT_HEADING", sprintf($this->lng->txt(
"tst_result_user_name_pass"), 
$pass + 1, $uname));
 
 1362                $tpl->setVariable(
"USER_DATA", $user_data);
 
 1370        if ($this->object->getShowSolutionAnswersOnly()) {
 
 1375            require_once 
'Modules/Test/classes/class.ilTestPDFGenerator.php';
 
 1378            $this->tpl->setContent(
$tpl->get());
 
 1391        $ilObjDataCache = 
$DIC[
'ilObjDataCache'];
 
 1393        $testSession = $this->testSessionFactory->getSession();
 
 1394        $active_id = $testSession->getActiveId();
 
 1396        $uname = $this->
object->userLookupFullName($user_id, 
true);
 
 1398        if (!$this->object->canShowTestResults($testSession)) {
 
 1399            $this->ctrl->redirectByClass(
"ilobjtestgui", 
"infoScreen");
 
 1407        $templatehead = 
new ilTemplate(
"tpl.il_as_tst_results_participants.html", 
true, 
true, 
"Modules/Test");
 
 1408        $template = 
new ilTemplate(
"tpl.il_as_tst_results_participant.html", 
true, 
true, 
"Modules/Test");
 
 1412        $this->ctrl->setParameter($this, 
'pdf', 
'1');
 
 1413        $toolbar->setPdfExportLinkTarget($this->ctrl->getLinkTarget($this, 
'outUserResultsOverview'));
 
 1414        $this->ctrl->setParameter($this, 
'pdf', 
'');
 
 1417        if ($validator->isCertificateDownloadable($user_id, $this->object->getId())) {
 
 1418            $toolbar->setCertificateLinkTarget($this->ctrl->getLinkTarget($this, 
'outCertificate'));
 
 1423        $templatehead->setVariable(
'RESULTS_TOOLBAR', $this->ctrl->getHTML($toolbar));
 
 1425        $passDetailsEnabled = $this->
object->getShowPassDetails();
 
 1426        #if (!$passDetailsEnabled) 
 1428        #       $executable = $this->object->isExecutable($testSession, $ilUser->getId()); 
 1429        #       if (!$executable["executable"]) $passDetailsEnabled = true;
 
 1432        require_once 
'Modules/Test/classes/class.ilTestResultHeaderLabelBuilder.php';
 
 1435            $testResultHeaderLabelBuilder->setObjectiveOrientedContainerId($testSession->getObjectiveOrientedContainerId());
 
 1436            $testResultHeaderLabelBuilder->setUserId($testSession->getUserId());
 
 1437            $testResultHeaderLabelBuilder->setTestObjId($this->object->getId());
 
 1438            $testResultHeaderLabelBuilder->setTestRefId($this->object->getRefId());
 
 1439            $testResultHeaderLabelBuilder->initObjectiveOrientedMode();
 
 1442        $template->setCurrentBlock(
"pass_overview");
 
 1445        require_once 
'Modules/Test/classes/class.ilTestPassesSelector.php';
 
 1447        $testPassesSelector->setActiveId($testSession->getActiveId());
 
 1448        $testPassesSelector->setLastFinishedPass($testSession->getLastFinishedPass());
 
 1451        $passOverViewTableGUI->setActiveId($testSession->getActiveId());
 
 1452        $passOverViewTableGUI->setResultPresentationEnabled(
true);
 
 1453        if ($passDetailsEnabled) {
 
 1454            $passOverViewTableGUI->setPassDetailsCommand(
'outUserPassDetails');
 
 1456        if ($this->object->isPassDeletionAllowed()) {
 
 1457            $passOverViewTableGUI->setPassDeletionCommand(
'confirmDeletePass');
 
 1459        $passOverViewTableGUI->init();
 
 1460        $passOverViewTableGUI->setData($this->
getPassOverviewTableData($testSession, $testPassesSelector->getReportablePasses(), 
true));
 
 1461        $passOverViewTableGUI->setTitle($testResultHeaderLabelBuilder->getPassOverviewHeaderLabel());
 
 1462        $overview = $passOverViewTableGUI->getHTML();
 
 1464            require_once 
'Modules/Test/classes/class.ilTestLearningObjectivesStatusGUI.php';
 
 1467            $loStatus->setUsrId($testSession->getUserId());
 
 1468            $overview .= 
"<br />" . $loStatus->getHTML();
 
 1470        $template->setVariable(
"PASS_OVERVIEW", $overview);
 
 1475            $gradingMessageBuilder->buildMessage();
 
 1476            $gradingMessageBuilder->sendMessage();
 
 1478            #$template->setCurrentBlock('grading_message'); 
 1479            #$template->setVariable('GRADING_MESSAGE', ); 
 1480            #$template->parseCurrentBlock(); 
 1486            if ($this->object->getAnonymity()) {
 
 1487                $template->setVariable(
"TEXT_HEADING", $this->lng->txt(
"tst_result"));
 
 1489                $template->setVariable(
"TEXT_HEADING", sprintf($this->lng->txt(
"tst_result_user_name"), $uname));
 
 1490                $template->setVariable(
"USER_DATA", $user_data);
 
 1495        if ($this->object->getShowSolutionAnswersOnly()) {
 
 1498        $templatehead->setVariable(
"RESULTS_PARTICIPANT", 
$template->get());
 
 1502            require_once 
'Modules/Test/classes/class.ilTestPDFGenerator.php';
 
 1505            $this->tpl->setContent($templatehead->get());
 
 1520        $ilObjDataCache = 
$DIC[
'ilObjDataCache'];
 
 1522        if (!$this->object->getShowSolutionPrintview()) {
 
 1524            $this->ctrl->redirectByClass(
"ilobjtestgui", 
"infoScreen");
 
 1527        $template = 
new ilTemplate(
"tpl.il_as_tst_info_list_of_answers.html", 
true, 
true, 
"Modules/Test");
 
 1530        if (array_key_exists(
"pass", 
$_GET)) {
 
 1531            if (strlen(
$_GET[
"pass"])) {
 
 1537        $testSession = $this->testSessionFactory->getSession();
 
 1538        $active_id = $testSession->getActiveId();
 
 1540        $template->setVariable(
"TEXT_RESULTS", $this->lng->txt(
"tst_passes"));
 
 1543        require_once 
'Modules/Test/classes/class.ilTestPassesSelector.php';
 
 1545        $testPassesSelector->setActiveId($testSession->getActiveId());
 
 1546        $testPassesSelector->setLastFinishedPass($testSession->getLastFinishedPass());
 
 1549        $passOverViewTableGUI->setActiveId($testSession->getActiveId());
 
 1550        $passOverViewTableGUI->setResultPresentationEnabled(
false);
 
 1551        $passOverViewTableGUI->setPassDetailsCommand(
'outUserListOfAnswerPasses');
 
 1552        $passOverViewTableGUI->init();
 
 1553        $passOverViewTableGUI->setData($this->
getPassOverviewTableData($testSession, $testPassesSelector->getClosedPasses(), 
false));
 
 1554        $template->setVariable(
"PASS_OVERVIEW", $passOverViewTableGUI->getHTML());
 
 1557        if (strlen(
$pass)) {
 
 1558            require_once 
'Modules/Test/classes/class.ilTestResultHeaderLabelBuilder.php';
 
 1561            $objectivesList = 
null;
 
 1564                $testSequence = $this->testSequenceFactory->getSequenceByActiveIdAndPass($active_id, 
$pass);
 
 1565                $testSequence->loadFromDb();
 
 1566                $testSequence->loadQuestions();
 
 1568                require_once 
'Modules/Course/classes/Objectives/class.ilLOTestQuestionAdapter.php';
 
 1572                $objectivesList->loadObjectivesTitles();
 
 1574                $testResultHeaderLabelBuilder->setObjectiveOrientedContainerId($testSession->getObjectiveOrientedContainerId());
 
 1575                $testResultHeaderLabelBuilder->setUserId($testSession->getUserId());
 
 1576                $testResultHeaderLabelBuilder->setTestObjId($this->object->getId());
 
 1577                $testResultHeaderLabelBuilder->setTestRefId($this->object->getRefId());
 
 1578                $testResultHeaderLabelBuilder->initObjectiveOrientedMode();
 
 1581            $result_array = $this->
object->getTestResult(
 
 1589            $user_id = &$this->
object->_getUserIdFromActiveId($active_id);
 
 1590            $showAllAnswers = 
true;
 
 1591            if ($this->object->isExecutable($testSession, $user_id)) {
 
 1592                $showAllAnswers = 
false;
 
 1595            $answers = $this->
getPassListOfAnswers($result_array, $active_id, 
$pass, 
false, $showAllAnswers, 
false, 
false, 
false, $objectivesList, $testResultHeaderLabelBuilder);
 
 1596            $template->setVariable(
"PASS_DETAILS", $answers);
 
 1598        $template->setVariable(
"FORMACTION", $this->ctrl->getFormAction($this));
 
 1599        $template->setVariable(
"PRINT_TEXT", $this->lng->txt(
"print"));
 
 1600        $template->setVariable(
"PRINT_URL", 
"javascript:window.print();");
 
 1603        $template->setVariable(
"USER_DATA", $user_data);
 
 1604        $template->setVariable(
"TEXT_LIST_OF_ANSWERS", $this->lng->txt(
"tst_list_of_answers"));
 
 1605        if (strlen($signature)) {
 
 1606            $template->setVariable(
"SIGNATURE", $signature);
 
 1608        if (!is_null(
$pass) && $this->object->isShowExamIdInTestResultsEnabled()) {
 
 1609            $template->setCurrentBlock(
'exam_id_footer');
 
 1611                $testSession->getActiveId(),
 
 1614            $template->setVariable(
'EXAM_ID_TXT', $this->lng->txt(
'exam_id'));
 
 1617        $this->tpl->setVariable(
"ADM_CONTENT", 
$template->get());
 
 1620        if ($this->object->getShowSolutionAnswersOnly()) {
 
 1634        if (array_key_exists(
"pass", 
$_GET) && (strlen(
$_GET[
"pass"]) > 0)) {
 
 1635            $this->ctrl->saveParameter($this, 
"pass");
 
 1636            $this->ctrl->saveParameter($this, 
"active_id");
 
 1637            $this->outTestResults(
false, 
$_GET[
"pass"]);
 
 1639            $this->outTestResults(
false);
 
 1655        $this->
object->setAccessFilteredParticipantList(
 
 1656            $this->object->buildStatisticsAccessFilteredParticipantList()
 
 1661        $data = &$this->
object->getCompleteEvaluationData();
 
 1662        $color_class = array(
"tblrow1", 
"tblrow2");
 
 1664        $this->tpl->addBlockFile(
"ADM_CONTENT", 
"adm_content", 
"tpl.il_as_tst_eval_single_answers.html", 
"Modules/Test");
 
 1665        $foundParticipants = &
$data->getParticipants();
 
 1666        if (count($foundParticipants) == 0) {
 
 1671            foreach (
$data->getQuestionTitles() as $question_id => $question_title) {
 
 1675                foreach ($foundParticipants as $userdata) {
 
 1676                    $pass = $userdata->getScoredPass();
 
 1677                    if (is_object($userdata->getPass(
$pass))) {
 
 1678                        $question = &$userdata->getPass(
$pass)->getAnsweredQuestionByQuestionId($question_id);
 
 1679                        if (is_array($question)) {
 
 1685                $this->ctrl->setParameter($this, 
"qid", $question_id);
 
 1686                require_once 
'./Modules/TestQuestionPool/classes/class.assQuestion.php';
 
 1690                    if ($question_object->hasFileUploads($this->object->getTestId())) {
 
 1691                        $download = 
"<a href=\"" . $this->ctrl->getLinkTarget($this, 
"exportFileUploadsForAllParticipants") . 
"\">" . $this->lng->txt(
"download") . 
"</a>";
 
 1697                        'qid' => $question_id,
 
 1698                        'question_title' => $question_title,
 
 1699                        'number_of_answers' => $answered,
 
 1700                        'output' => 
"<a href=\"" . $this->ctrl->getLinkTarget($this, 
"exportQuestionForAllParticipants") . 
"\">" . $this->lng->txt(
"pdf_export") . 
"</a>",
 
 1701                        'file_uploads' => $download
 
 1706                require_once 
'./Modules/Test/classes/tables/class.ilResultsByQuestionTableGUI.php';
 
 1708                $table_gui->setTitle($this->lng->txt(
"tst_answered_questions_test"));
 
 1709                $table_gui->setData(
$rows);
 
 1711                $this->tpl->setVariable(
"TBL_SINGLE_ANSWERS", $table_gui->getHTML());
 
 1713                $this->tpl->setVariable(
"TBL_SINGLE_ANSWERS", $this->lng->txt(
"adm_no_special_users"));
 
 1726        $database = 
$DIC->database();
 
 1727        $logger = 
$DIC->logger()->root();
 
 1730        $pdfGenerator = 
new ilPdfGenerator($ilUserCertificateRepository, $logger);
 
 1736            $this->lng->txt(
'error_creating_certificate_pdf')
 
 1739        $pdfAction->downloadPdf((
int) 
$user->getId(), (
int) $this->object->getId());
 
 1744        if (isset(
$_GET[
'context']) && strlen(
$_GET[
'context'])) {
 
 1750        if (!$this->object->isPassDeletionAllowed() && !$this->object->isDynamicTest()) {
 
 1754        require_once 
'Modules/Test/classes/confirmations/class.ilTestPassDeletionConfirmationGUI.php';
 
 1761        $tpl->setContent($this->ctrl->getHTML($confirm));
 
 1771        require_once 
'Modules/Test/classes/confirmations/class.ilTestPassDeletionConfirmationGUI.php';
 
 1776                $this->ctrl->redirect($this, 
'outUserResultsOverview');
 
 1781                $this->ctrl->redirectByClass(
'ilObjTestGUI', 
'infoScreen');
 
 1786                $this->ctrl->redirectByClass(
'ilTestPlayerDynamicQuestionSetGUI', 
'startTest');
 
 1790    public function performDeletePass()
 
 1792        if (isset(
$_POST[
'context']) && strlen(
$_POST[
'context'])) {
 
 1798        if (!$this->object->isPassDeletionAllowed() && !$this->object->isDynamicTest()) {
 
 1808        if (isset(
$_POST[
'active_id']) && (
int) 
$_POST[
'active_id']) {
 
 1809            $active_fi = 
$_POST[
'active_id'];
 
 1812        if (isset(
$_POST[
'pass']) && is_numeric(
$_POST[
'pass'])) {
 
 1816        if (is_null($active_fi) || is_null(
$pass)) {
 
 1817            $this->ctrl->redirect($this, 
'outUserResultsOverview');
 
 1820        if (!$this->object->isDynamicTest() && 
$pass == $this->object->_getResultPass($active_fi)) {
 
 1821            $this->ctrl->redirect($this, 
'outUserResultsOverview');
 
 1826                                SELECT tst_active.tries, tst_active.last_finished_pass, tst_sequence.pass 
 1828                                LEFT JOIN tst_sequence 
 1829                                ON tst_sequence.active_fi = tst_active.active_id 
 1830                                AND tst_sequence.pass = tst_active.tries 
 1831                                WHERE tst_active.active_id = {$ilDB->quote($active_fi, 'integer')} 
 1836        $tries = 
$row[
'tries'];
 
 1837        $lastFinishedPass = is_numeric(
$row[
'last_finished_pass']) ? 
$row[
'last_finished_pass'] : -1;
 
 1839        if (
$pass < $lastFinishedPass) {
 
 1840            $isActivePass = 
false;
 
 1841            $must_renumber = 
true;
 
 1842        } elseif (
$pass == $lastFinishedPass) {
 
 1843            $isActivePass = 
false;
 
 1845            if ($tries == 
$row[
'pass']) {
 
 1846                $must_renumber = 
true;
 
 1848                $must_renumber = 
false;
 
 1851            $isActivePass = 
true;
 
 1852            $must_renumber = 
false;
 
 1854            throw new ilTestException(
'This should not happen, please contact Bjoern Heyser to clean up this pass salad!');
 
 1857        if (!$this->object->isDynamicTest() && $isActivePass) {
 
 1858            $this->ctrl->redirect($this, 
'outUserResultsOverview');
 
 1862            ($lastFinishedPass == 0 && $tries == 1 && $tries != 
$row[
'pass'])
 
 1863                    || ($isActivePass == 
true) 
 
 1876                                        WHERE active_id = ' . 
$ilDB->quote($active_fi, 
'integer')
 
 1878        } elseif (!$isActivePass) {
 
 1881                                        SET tries = ' . 
$ilDB->quote($tries - 1, 
'integer') . 
', 
 1882                                        last_finished_pass = ' . 
$ilDB->quote($lastFinishedPass - 1, 
'integer') . 
' 
 1883                                        WHERE active_id = ' . 
$ilDB->quote($active_fi, 
'integer')
 
 1890                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer') . 
' 
 1891                                AND pass = ' . 
$ilDB->quote(
$pass, 
'integer')
 
 1894        if ($must_renumber) {
 
 1896                'UPDATE tst_manual_fb 
 1898                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer') . 
' 
 1899                                AND pass > ' . 
$ilDB->quote(
$pass, 
'integer')
 
 1908                                FROM tst_pass_result 
 1909                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer') . 
' 
 1910                                AND pass = ' . 
$ilDB->quote(
$pass, 
'integer')
 
 1913        if ($must_renumber) {
 
 1915                'UPDATE tst_pass_result 
 1917                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer') . 
' 
 1918                                AND pass > ' . 
$ilDB->quote(
$pass, 
'integer')
 
 1931                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer') . 
' 
 1932                                AND pass = ' . 
$ilDB->quote(
$pass, 
'integer')
 
 1935        if ($must_renumber) {
 
 1937                'UPDATE tst_sequence 
 1939                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer') . 
' 
 1940                                AND pass > ' . 
$ilDB->quote(
$pass, 
'integer')
 
 1944        if ($this->object->isDynamicTest()) {
 
 1946                'tst_seq_qst_tracking', 
'tst_seq_qst_answstatus', 
'tst_seq_qst_postponed', 
'tst_seq_qst_checked' 
 1949            foreach ($tables as 
$table) {
 
 1952                                                WHERE active_fi = {$ilDB->quote($active_fi, 'integer')} 
 1953                                                AND pass = {$ilDB->quote($pass, 'integer')} 
 1956                if ($must_renumber) {
 
 1960                                                WHERE active_fi = {$ilDB->quote($active_fi, 'integer')} 
 1961                                                AND pass > {$ilDB->quote($pass, 'integer')} 
 1971                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer') . 
' 
 1972                                AND pass = ' . 
$ilDB->quote(
$pass, 
'integer')
 
 1975        if ($must_renumber) {
 
 1977                'UPDATE tst_solutions 
 1979                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer') . 
' 
 1980                                AND pass > ' . 
$ilDB->quote(
$pass, 
'integer')
 
 1987                                FROM tst_test_result 
 1988                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer') . 
' 
 1989                                AND pass = ' . 
$ilDB->quote(
$pass, 
'integer')
 
 1992        if ($must_renumber) {
 
 1994                'UPDATE tst_test_result 
 1996                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer') . 
' 
 1997                                AND pass > ' . 
$ilDB->quote(
$pass, 
'integer')
 
 2007                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer') . 
' 
 2008                                AND pass = ' . 
$ilDB->quote(
$pass, 
'integer')
 
 2011        if ($must_renumber) {
 
 2015                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer') . 
' 
 2016                                AND pass > ' . 
$ilDB->quote(
$pass, 
'integer')
 
 2020        require_once 
'Modules/Test/classes/class.ilObjAssessmentFolder.php';
 
 2026        require_once 
'./Modules/TestQuestionPool/classes/class.assQuestion.php';
 
 2029        if ($this->object->isDynamicTest()) {
 
 2030            require_once 
'Modules/Test/classes/tables/class.ilTestDynamicQuestionSetStatisticTableGUI.php';
 
 2041        $ilPluginAdmin = 
$DIC[
'ilPluginAdmin'];
 
 2043        $resultData = $this->
object->getTestResult($active_id, 
$pass, 
false, $considerHiddenQuestions);
 
 2044        $questionIds = array();
 
 2045        foreach ($resultData as $resultItemKey => $resultItemValue) {
 
 2046            if ($resultItemKey === 
'test' || $resultItemKey === 
'pass') {
 
 2050            $questionIds[] = $resultItemValue[
'qid'];
 
 2054        $table_gui->initFilter();
 
 2056        require_once 
'Modules/TestQuestionPool/classes/class.ilAssQuestionList.php';
 
 2059        $questionList->setIncludeQuestionIdsFilter($questionIds);
 
 2060        $questionList->setQuestionInstanceTypeFilter(
null);
 
 2062        foreach ($table_gui->getFilterItems() as $item) {
 
 2063            if (substr($item->getPostVar(), 0, strlen(
'tax_')) == 
'tax_') {
 
 2064                $v = $item->getValue();
 
 2066                if (is_array($v) && count($v) && !(
int) $v[0]) {
 
 2070                $taxId = substr($item->getPostVar(), strlen(
'tax_'));
 
 2071                $questionList->addTaxonomyFilter($taxId, $item->getValue(), $this->object->getId(), 
'tst');
 
 2072            } elseif ($item->getValue() !== 
false) {
 
 2073                $questionList->addFieldFilter($item->getPostVar(), $item->getValue());
 
 2077        $questionList->load();
 
 2079        $filteredTestResult = array();
 
 2081        foreach ($resultData as $resultItemKey => $resultItemValue) {
 
 2082            if ($resultItemKey === 
'test' || $resultItemKey === 
'pass') {
 
 2086            if (!$questionList->isInList($resultItemValue[
'qid'])) {
 
 2090            $filteredTestResult[] = $resultItemValue;
 
 2093        return $filteredTestResult;
 
 2100        $activeId = (int) 
$_GET[
"active_id"];
 
 2102        require_once 
'Modules/Test/classes/class.ilTestParticipantAccessFilter.php';
 
 2105        require_once 
'Modules/Test/classes/class.ilTestParticipantList.php';
 
 2115        require_once 
'Services/Utilities/classes/class.ilConfirmationGUI.php';
 
 2118        $cgui->setHeaderText(sprintf(
 
 2119            $this->lng->txt(
"finish_pass_for_user_confirmation"),
 
 2123        $this->ctrl->setParameter($this, 
'active_id', $activeId);
 
 2124        $cgui->setFormAction($this->ctrl->getFormAction($this, 
"participants"));
 
 2126        $cgui->setCancel($this->lng->txt(
"cancel"), 
"redirectBackToParticipantsScreen");
 
 2127        $cgui->setConfirm($this->lng->txt(
"proceed"), 
"confirmFinishTestPassForUser");
 
 2129        $this->tpl->setContent($cgui->getHTML());
 
 2136        $activeId = (int) 
$_GET[
"active_id"];
 
 2138        require_once 
'Modules/Test/classes/class.ilTestParticipantAccessFilter.php';
 
 2141        require_once 
'Modules/Test/classes/class.ilTestParticipantList.php';
 
 2156        require_once 
'Services/Utilities/classes/class.ilConfirmationGUI.php';
 
 2158        $cgui->setFormAction($this->ctrl->getFormAction($this));
 
 2159        $cgui->setHeaderText($this->lng->txt(
"finish_pass_for_all_users"));
 
 2160        $cgui->setCancel($this->lng->txt(
"cancel"), 
"redirectBackToParticipantsScreen");
 
 2161        $cgui->setConfirm($this->lng->txt(
"proceed"), 
"confirmFinishTestPassForAllUser");
 
 2162        $this->tpl->setContent($cgui->getHTML());
 
 2167        require_once 
'Modules/Test/classes/class.ilTestParticipantAccessFilter.php';
 
 2170        require_once 
'Modules/Test/classes/class.ilTestParticipantList.php';
 
 2172        $participantList->initializeFromDbRows($this->object->getTestParticipants());
 
 2173        $participantList = $participantList->getAccessFilteredList($accessFilter);
 
 2175        foreach ($participantList as $participant) {
 
 2176            if (!$participant->hasUnfinishedPasses()) {
 
 2180            $this->
finishTestPass($participant->getActiveId(), $this->object->getId());
 
 2188        $this->processLockerFactory->setActiveId($active_id);
 
 2189        $processLocker = $this->processLockerFactory->getLocker();
 
 2192        $test_pass_finisher->performFinishTasks($processLocker);
 
 2197        $this->ctrl->redirectByClass(
"ilTestParticipantsGUI");
 
An exception for terminatinating execution or to throw for unit testing.
static _updateTestResultCache($active_id, ilAssQuestionProcessLocker $processLocker=null)
@TODO Move this to a proper place.
static _instanciateQuestion($question_id)
Creates an instance of a question with a given question id.
Validates if an active certificate is stored in the database and can be downloaded by the user.
Just a wrapper class to create Unit Test for other classes.
Confirmation screen class.
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date @access public.
@classDescription Date and time handling
TableGUI class for evaluation of all users.
static getInstance(ilTestSession $a_test_session)
This class represents a non editable value in a property form.
static _getLogLanguage()
retrieve the log language for assessment logging
static _enabledAssessmentLogging()
check wether assessment logging is enabled or not
static accessViolationRedirect()
static _getResultPass($active_id)
Retrieves the pass number that should be counted for a given user.
static lookupExamId($active_id, $pass)
static lookupLastTestPassAccess($activeId, $passIndex)
static lookupPassResultsUpdateTimestamp($active_id, $pass)
static _lookupFields($a_user_id)
lookup fields (deprecated; use more specific methods instead)
static _lookupName($a_user_id)
lookup user name
static prepareGenerationRequest($service, $purpose)
Prepare the content processing for a PDF generation request This function should be called as in a re...
TableGUI class for results by question.
special template class to simplify handling of ITX/PEAR
Class ilTestDetailedEvaluationStatisticsTableGUI.
Output class for assessment test evaluation.
exportFileUploadsForAllParticipants()
Creates a ZIP file containing all file uploads for a given question in a test.
outEvaluation()
Creates the evaluation output for the test.
outCertificate()
Output of a test certificate.
singleResults()
Creates user results for single questions.
outUserPassDetails()
Output of the pass details of an existing test pass for the active test participant.
executeCommand()
execute command
passDetails()
Output of the learners view of an existing test pass.
__construct(ilObjTest $a_object)
ilTestEvaluationGUI constructor
exportCertificate()
Exports the user results as PDF certificates using XSL-FO via XML:RPC calls.
eval_a()
Output of anonymous aggregated results for the test.
exportAggregatedResults()
Exports the aggregated results.
detailedEvaluation()
Creates the detailed evaluation output for a selected participant.
outUserListOfAnswerPasses()
Output of the pass overview for a user when he/she wants to see his/her list of answers.
finishTestPassForSingleUser()
confirmFinishTestPassForAllUser()
exportQuestionForAllParticipants()
Creates a PDF representation of the answers for a given question in a test.
outUserPassDetailsResetTableFilter()
outParticipantsPassDetails()
Output of the pass details of an existing test pass for the test statistics.
getEvaluationQuestionId($question_id, $original_id="")
Returns the ID of a question for evaluation purposes.
setTestAccess($testAccess)
outUserResultsOverview()
Output of the pass overview for a test called by a test participant.
confirmFinishTestPassForUser()
exportEvaluation()
Exports the evaluation data to a selected file format.
getFilteredTestResult($active_id, $pass, $considerHiddenQuestions, $considerOptionalQuestions)
outParticipantsResultsOverview()
Output of the pass overview for a test called from the statistics.
redirectToPassDeletionContext($context)
outParticipantsPassDetailsSetTableFilter()
redirectBackToParticipantsScreen()
outParticipantsPassDetailsResetTableFilter()
finishTestPass($active_id, $obj_id)
outUserPassDetailsSetTableFilter()
Base Exception for all Exceptions relating to Modules/Test.
static generatePDF($pdf_output, $output_mode, $filename=null, $purpose=null)
const PDF_OUTPUT_DOWNLOAD
static getManageParticipantsUserFilter($refId)
static getAccessStatisticsUserFilter($refId)
const CONTEXT_INFO_SCREEN
const CONTEXT_DYN_TEST_PLAYER
const CONTEXT_PASS_OVERVIEW
Class ilTestPassFinishTasks.
Service GUI class for tests.
getGradingMessageBuilder($activeId)
populateExamId(ilTemplate $tpl, int $activeId, int $pass)
getObjectiveOrientedContainer()
populatePassFinishDate($tpl, $passFinishDate)
getResultsSignature()
Returns HTML code for a signature field.
getCommand($cmd)
Retrieves the ilCtrl command.
buildPassOverviewTableGUI($targetGUI)
getQuestionResultForTestUsers($question_id, $test_id)
Creates a HTML representation for the results of a given question in a test.
buildUserTestResultsToolbarGUI()
setContextResultPresentation($contextResultPresentation)
buildQuestionRelatedObjectivesList(ilLOTestQuestionAdapter $objectivesAdapter, ilTestQuestionSequence $testSequence)
getPassOverviewTableData(ilTestSession $testSession, $passes, $withResults)
isGradingMessageRequired()
getPassListOfAnswers(&$result_array, $active_id, $pass, $show_solutions=false, $only_answered_questions=false, $show_question_only=false, $show_reached_points=false, $anchorNav=false, ilTestQuestionRelatedObjectivesList $objectivesList=null, ilTestResultHeaderLabelBuilder $testResultHeaderLabelBuilder=null)
Returns the list of answers of a users test pass.
getAdditionalUsrDataHtmlAndPopulateWindowTitle($testSession, $active_id, $overwrite_anonymity=false)
Returns the user data for a test results output.
getPassDetailsOverviewTableGUI($result_array, $active_id, $pass, $targetGUI, $targetCMD, $questionDetailsCMD, $questionAnchorNav, ilTestQuestionRelatedObjectivesList $objectivesList=null, $multipleObjectivesInvolved=true)
buildPassDetailsOverviewTableGUI($targetGUI, $targetCMD)
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user
static getASCIIFilename($a_filename)
convert utf8 to ascii filename
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
if(@file_exists(dirname(__FILE__).'/lang/eng.php')) $certificate
const PDF_USER_RESULT
PDF Purposes.
Interface ilObjFileHandlingQuestionType.
Class ilPdfGeneratorConstantsTest.
if(empty($password)) $table
if(isset($_POST['submit'])) $form