4require_once 
'./Modules/Test/classes/class.ilTestServiceGUI.php';
 
    5require_once 
'Modules/TestQuestionPool/classes/class.ilAssQuestionHintTracking.php';
 
   43                parent::__construct($a_object);
 
   47                require_once 
'Modules/Test/classes/class.ilTestProcessLockerFactory.php';
 
   58                $cmd = $this->ctrl->getCmd();
 
   59                $next_class = $this->ctrl->getNextClass($this);
 
   60                $this->ctrl->saveParameter($this, 
"sequence");
 
   61                $this->ctrl->saveParameter($this, 
"active_id");
 
   65                        case 'iltestpassdetailsoverviewtablegui':
 
   66                                require_once 
'Modules/Test/classes/tables/class.ilTestPassDetailsOverviewTableGUI.php';
 
   69                                $tableGUI->initFilter();
 
   70                                $this->ctrl->forwardCommand($tableGUI);
 
   82                $headernames = array();
 
   83                if ($this->object->getAnonymity())
 
   85                        array_push($headernames, $this->lng->txt(
"counter"));
 
   89                        array_push($headernames, $this->lng->txt(
"name"));
 
   90                        array_push($headernames, $this->lng->txt(
"login"));
 
   92                $additionalFields = $this->
object->getEvaluationAdditionalFields();
 
   93                if (count($additionalFields))
 
   95                        foreach ($additionalFields as $fieldname)
 
   97                                array_push($headernames, $this->lng->txt($fieldname));
 
  100                array_push($headernames, $this->lng->txt(
"tst_reached_points"));
 
  101                array_push($headernames, $this->lng->txt(
"tst_mark"));
 
  102                if ($this->object->getECTSOutput())
 
  104                        array_push($headernames, $this->lng->txt(
"ects_grade"));
 
  106                array_push($headernames, $this->lng->txt(
"tst_answered_questions"));
 
  107                array_push($headernames, $this->lng->txt(
"working_time"));
 
  108                array_push($headernames, $this->lng->txt(
"detailed_evaluation"));
 
  114                $headervars = array();
 
  115                if ($this->object->getAnonymity())
 
  117                        array_push($headervars, 
"counter");
 
  121                        array_push($headervars, 
"name");
 
  122                        array_push($headervars, 
"login");
 
  124                array_push($headervars, 
"resultspoints");
 
  125                array_push($headervars, 
"resultsmarks");
 
  126                if ($this->object->getECTSOutput())
 
  128                        array_push($headervars, 
"ects_grade");
 
  130                array_push($headervars, 
"qworkedthrough");
 
  131                array_push($headervars, 
"timeofwork");
 
  132                array_push($headervars, 
"");
 
  138                include_once 
"./Modules/Test/classes/tables/class.ilEvaluationAllTableGUI.php";
 
  140                $table_gui->writeFilterToSession();
 
  141                $this->ctrl->redirect($this, 
"outEvaluation");
 
  146                include_once 
"./Modules/Test/classes/tables/class.ilEvaluationAllTableGUI.php";
 
  148                $table_gui->resetFilter();
 
  149                $this->ctrl->redirect($this, 
"outEvaluation");
 
  157        function outEvaluation()
 
  163                global $ilAccess, $ilToolbar;
 
  165                if ((!$ilAccess->checkAccess(
"tst_statistics", 
"", $this->ref_id)) && (!$ilAccess->checkAccess(
"write", 
"", $this->ref_id)))
 
  169                        $this->ctrl->redirectByClass(
"ilobjtestgui", 
"infoScreen");
 
  172                include_once 
"./Modules/Test/classes/tables/class.ilEvaluationAllTableGUI.php";
 
  175                                $this, 
'outEvaluation', $this->object->getAnonymity(), $this->object->isOfferingQuestionHintsEnabled()
 
  179                $arrFilter = array();
 
  181                foreach ($table_gui->getFilterItems() as $item)
 
  183                        if ($item->getValue() !== 
false)
 
  185                                switch ($item->getPostVar())
 
  190                                                $arrFilter[$item->getPostVar()] = $item->getValue();
 
  193                                                $passedonly = $item->getChecked();
 
  198                include_once 
"./Modules/Test/classes/class.ilTestEvaluationData.php";
 
  200                $eval->setFilterArray($arrFilter);
 
  201                $foundParticipants =& $eval->getParticipants();
 
  203                if (count($foundParticipants) > 0)
 
  205                        if ($this->object->getECTSOutput())
 
  207                                $passed_array =& $this->
object->getTotalPointsPassedArray();
 
  209                        foreach ($foundParticipants as $active_id => $userdata)
 
  216                                        $mark_obj = $this->
object->getMarkSchema()->getMatchingMark($userdata->getReachedPointsInPercent());
 
  218                                        if( $mark_obj->getPassed() == FALSE || !$userdata->areObligationsAnswered() )
 
  226                                        $evaluationrow = array();
 
  227                                        if ($this->object->getAnonymity())
 
  230                                                $evaluationrow[
'login'] = 
'';
 
  234                                                $evaluationrow[
'name'] = $userdata->getName();
 
  235                                                if (strlen($userdata->getLogin()))
 
  237                                                        $evaluationrow[
'login'] = 
"[" . $userdata->getLogin() . 
"]";
 
  241                                                        $evaluationrow[
'login'] = 
'';
 
  245                                        $evaluationrow[
'reached'] = $userdata->getReached();
 
  246                                        $evaluationrow[
'max'] = $userdata->getMaxpoints();
 
  247                                        $evaluationrow[
'hint_count'] = $userdata->getRequestedHintsCountFromScoredPass();
 
  248                                        $percentage = $userdata->getReachedPointsInPercent();
 
  249                                        $mark = $this->
object->getMarkSchema()->getMatchingMark($percentage);
 
  250                                        if (is_object($mark))
 
  252                                                $evaluationrow[
'mark'] = $mark->getShortName();
 
  254                                        if ($this->object->getECTSOutput())
 
  256                                                $ects_mark = $this->
object->getECTSGrade($passed_array, $userdata->getReached(), $userdata->getMaxPoints());
 
  257                                                $evaluationrow[
'ects_grade'] = $ects_mark;
 
  259                                        $evaluationrow[
'answered'] = $userdata->getQuestionsWorkedThroughInPercent();
 
  260                                        $evaluationrow[
'questions_worked_through'] = $userdata->getQuestionsWorkedThrough();
 
  261                                        $evaluationrow[
'number_of_questions']      = $userdata->getNumberOfQuestions();
 
  262                                        $time_seconds = $userdata->getTimeOfWork();
 
  263                                        $time_hours    = floor($time_seconds/3600);
 
  264                                        $time_seconds -= $time_hours   * 3600;
 
  265                                        $time_minutes  = floor($time_seconds/60);
 
  266                                        $time_seconds -= $time_minutes * 60;
 
  267                                        $evaluationrow[
'working_time'] = 
sprintf(
"%02d:%02d:%02d", $time_hours, $time_minutes, $time_seconds);
 
  268                                        $this->ctrl->setParameter($this, 
"active_id", $active_id);
 
  269                                        $href = $this->ctrl->getLinkTarget($this, 
"detailedEvaluation");
 
  270                                        $detailed_evaluation = $this->lng->txt(
"detailed_evaluation_show");
 
  271                                        $evaluationrow[
'details'] = 
"<a class=\"il_ContainerItemCommand\" href=\"$href\">$detailed_evaluation</a>";
 
  273                                        $evaluationrow[
'gender'] = $userfields[
'gender'];
 
  274                                        $evaluationrow[
'email'] = $userfields[
'email'];
 
  275                                        $evaluationrow[
'institution'] = $userfields[
'institution'];
 
  276                                        $evaluationrow[
'street'] = $userfields[
'street'];
 
  277                                        $evaluationrow[
'city'] = $userfields[
'city'];
 
  278                                        $evaluationrow[
'zipcode'] = $userfields[
'zipcode'];
 
  279                                        $evaluationrow[
'country'] = $userfields[
'country'];
 
  280                                        $evaluationrow[
'sel_country'] = $userfields[
'sel_country'];
 
  281                                        $evaluationrow[
'department'] = $userfields[
'department'];
 
  282                                        $evaluationrow[
'matriculation'] = $userfields[
'matriculation'];
 
  284                                        $data[] = $evaluationrow;
 
  289                $table_gui->setData(
$data);
 
  290                if(count($foundParticipants) > 0)
 
  292                        $ilToolbar->setFormName(
'form_output_eval');
 
  293                        $ilToolbar->setFormAction($this->ctrl->getFormAction($this, 
'exportEvaluation'));
 
  294                        require_once 
'Services/Form/classes/class.ilSelectInputGUI.php';
 
  295                        $export_type = 
new ilSelectInputGUI($this->lng->txt(
'exp_eval_data'), 
'export_type');
 
  297                                'excel' => $this->lng->txt(
'exp_type_excel'),
 
  298                                'csv'   => $this->lng->txt(
'exp_type_spss')
 
  301                        if(!$this->object->getAnonymity())
 
  303                                include_once 
'Services/Certificate/classes/class.ilCertificate.php';
 
  304                                include_once 
'Modules/Test/classes/class.ilTestCertificateAdapter.php';
 
  307                                        $options[
'certificate'] = $this->lng->txt(
'exp_type_certificate');
 
  313                        $ilToolbar->addInputItem($export_type, 
true);
 
  314                        require_once 
'Services/UIComponent/Button/classes/class.ilSubmitButton.php';
 
  316                        $button->setCommand(
'exportEvaluation');
 
  317                        $button->setCaption(
'export');
 
  318                        $button->getOmitPreventDoubleSubmission();
 
  319                        $ilToolbar->addButtonInstance($button);
 
  323                if ($this->object->getShowSolutionAnswersOnly())
 
  328                $this->tpl->setContent($table_gui->getHTML());
 
  342                if((!
$DIC->access()->checkAccess(
'tst_statistics', 
'', $this->ref_id)) && (!
$DIC->access()->checkAccess(
'write', 
'', $this->ref_id)))
 
  345                        $this->ctrl->redirectByClass(
'ilobjtestgui', 
'infoScreen');
 
  348                $active_id = 
$_GET[
'active_id'];
 
  349                if(strlen($active_id) == 0)
 
  351                        ilUtil::sendInfo($this->lng->txt(
'detailed_evaluation_missing_active_id'), TRUE);
 
  352                        $this->ctrl->redirect($this, 
'outEvaluation');
 
  357                $toolbar = 
$DIC[
'ilToolbar'];
 
  359                require_once 
'Services/UIComponent/Button/classes/class.ilLinkButton.php';
 
  361                $backBtn->setCaption(
'back');
 
  362                $backBtn->setUrl($this->ctrl->getLinkTarget($this, 
'outEvaluation'));
 
  363                $toolbar->addInputItem($backBtn);
 
  365                $data =& $this->
object->getCompleteEvaluationData();
 
  367                require_once 
'Services/Form/classes/class.ilPropertyFormGUI.php';
 
  370                        $this->lng->txt(
'detailed_evaluation_for'), 
$data->getParticipant($active_id)->getName()
 
  374                $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()) . 
" %" . 
")");
 
  375                $form->addItem($resultPoints);
 
  377                if(strlen(
$data->getParticipant($active_id)->getMark()))
 
  380                        $resultMarks->setValue(
$data->getParticipant($active_id)->getMark());
 
  381                        $form->addItem($resultMarks);
 
  382                        if(strlen(
$data->getParticipant($active_id)->getECTSMark()))
 
  385                                $ectsGrade->setValue(
$data->getParticipant($active_id)->getECTSMark());
 
  386                                $form->addItem($ectsGrade);
 
  390                if($this->object->isOfferingQuestionHintsEnabled() )
 
  392                        $requestHints = 
new ilNonEditableValueGUI($this->lng->txt(
'tst_question_hints_requested_hint_count_header'));
 
  393                        $requestHints->setValue(
$data->getParticipant($active_id)->getRequestedHintsCountFromScoredPass());
 
  394                        $form->addItem($requestHints);
 
  397                $time_seconds = 
$data->getParticipant($active_id)->getTimeOfWork();
 
  398                $atime_seconds = 
$data->getParticipant($active_id)->getNumberOfQuestions() ? $time_seconds / 
$data->getParticipant($active_id)->getNumberOfQuestions() : 0;
 
  399                $time_hours    = floor($time_seconds/3600);
 
  400                $time_seconds -= $time_hours   * 3600;
 
  401                $time_minutes  = floor($time_seconds/60);
 
  402                $time_seconds -= $time_minutes * 60;
 
  404                $timeOfWork->setValue(
sprintf(
"%02d:%02d:%02d", $time_hours, $time_minutes, $time_seconds));
 
  405                $form->addItem($timeOfWork);
 
  407                $this->tpl->setVariable(
"TXT_ATIMEOFWORK", $this->lng->txt(
""));
 
  408                $time_hours    = floor($atime_seconds/3600);
 
  409                $atime_seconds -= $time_hours   * 3600;
 
  410                $time_minutes  = floor($atime_seconds/60);
 
  411                $atime_seconds -= $time_minutes * 60;
 
  413                $avgTimeOfWork->setValue(
sprintf(
"%02d:%02d:%02d", $time_hours, $time_minutes, $atime_seconds));
 
  414                $form->addItem($avgTimeOfWork);
 
  418                $form->addItem($firstVisit);
 
  422                $form->addItem($lastVisit);
 
  425                $nrPasses->setValue(
$data->getParticipant($active_id)->getLastPass() + 1);
 
  426                $form->addItem($nrPasses);
 
  431                        $scoredPass->setValue(
$data->getParticipant($active_id)->getBestPass() + 1);
 
  435                        $scoredPass->setValue(
$data->getParticipant($active_id)->getLastPass() + 1);
 
  437                $form->addItem($scoredPass);
 
  439                $median = 
$data->getStatistics()->getStatistics()->median();
 
  440                $pct    = 
$data->getParticipant($active_id)->getMaxpoints() ? ($median / 
$data->getParticipant($active_id)->getMaxpoints()) * 100.0 : 0;
 
  441                $mark   = $this->
object->mark_schema->getMatchingMark($pct);
 
  445                        $markMedian->setValue($mark->getShortName());
 
  446                        $form->addItem($markMedian);
 
  450                $rankParticipant->setValue(
$data->getStatistics()->getStatistics()->rank(
$data->getParticipant($active_id)->getReached()));
 
  451                $form->addItem($rankParticipant);
 
  454                $rankMedian->setValue(
$data->getStatistics()->getStatistics()->rank_median());
 
  455                $form->addItem($rankMedian);
 
  457                $totalParticipants = 
new ilNonEditableValueGUI($this->lng->txt(
'tst_stat_result_total_participants'));
 
  458                $totalParticipants->setValue(
$data->getStatistics()->getStatistics()->count());
 
  459                $form->addItem($totalParticipants);
 
  462                $medianField->setValue($median);
 
  463                $form->addItem($medianField);
 
  465                $this->tpl->setContent($form->getHTML());
 
  471                        $finishdate = $this->
object->getPassFinishDate($active_id, 
$pass);
 
  474                                if((
$DIC->access()->checkAccess(
'write', 
'', (
int)
$_GET[
'ref_id'])))
 
  476                                        $this->ctrl->setParameter($this, 
'statistics', 
'1');
 
  477                                        $this->ctrl->setParameter($this, 
'active_id', $active_id);
 
  478                                        $this->ctrl->setParameter($this, 
'pass', 
$pass);
 
  482                                        $this->ctrl->setParameter($this, 
'statistics', 
'');
 
  483                                        $this->ctrl->setParameter($this, 
'active_id', 
'');
 
  484                                        $this->ctrl->setParameter($this, 
'pass', 
'');
 
  487                                require_once 
'Modules/Test/classes/tables/class.ilTestDetailedEvaluationStatisticsTableGUI.php';
 
  489                                $table->setTitle(
sprintf($this->lng->txt(
"tst_eval_question_points"), 
$pass + 1));
 
  490                                if((
$DIC->access()->checkAccess(
'write', 
'', (
int)
$_GET[
'ref_id'])))
 
  492                                        $table->addCommandButton(
'outParticipantsPassDetails', $this->lng->txt(
'tst_show_answer_sheet'));
 
  495                                $questions = 
$data->getParticipant($active_id)->getQuestions(
$pass);
 
  496                                if(!is_array($questions))
 
  498                                        $questions = 
$data->getParticipant($active_id)->getQuestions(0);
 
  501                                $tableData = array();
 
  504                                foreach((array)$questions as $question)
 
  506                                        $userDataData = array(
 
  508                                                'id'      => $question[
'id'],
 
  509                                                'id_txt'  => $this->lng->txt(
'question_id_short'),
 
  510                                                'title'   => 
$data->getQuestionTitle($question[
'id'])
 
  513                                        $answeredquestion = 
$data->getParticipant($active_id)->getPass(
$pass)->getAnsweredQuestionByQuestionId($question[
"id"]);
 
  514                                        if(is_array($answeredquestion))
 
  516                                                $percent = $answeredquestion[
'points'] ? $answeredquestion[
'reached'] / $answeredquestion[
'points'] * 100.0 : 0;
 
  517                                                $userDataData[
'points'] = $answeredquestion[
'reached'] . 
' ' . strtolower($this->lng->txt(
'of')) . 
" " . $answeredquestion[
'points'] . 
' (' . 
sprintf(
"%.2f", $percent) . 
' %)';
 
  521                                                $userDataData[
'points'] = 
'0 ' . strtolower($this->lng->txt(
'of')) . 
' ' . $question[
'points'] . 
' (' . 
sprintf(
"%.2f", 0) . 
' %) - ' . $this->lng->txt(
'question_not_answered');
 
  524                                        $tableData[] = $userDataData;
 
  526                                $table->setData($tableData);
 
  528                                $tables[] = $table->getHTML();
 
  532                $GLOBALS[
'tpl']->setContent($form->getHTML() . implode(
'', $tables));
 
  550                require_once 
'./Modules/TestQuestionPool/classes/class.assQuestion.php';
 
  554                        $question_object->deliverFileUploadZIPFile($this->object->getTestId(), $this->object->getTitle());
 
  558                        $this->ctrl->redirect($this, 
"singleResults");
 
  575                global $ilAccess, $ilToolbar;
 
  577                if ((!$ilAccess->checkAccess(
"tst_statistics", 
"", $this->ref_id)) && (!$ilAccess->checkAccess(
"write", 
"", $this->ref_id)))
 
  581                        $this->ctrl->redirectByClass(
"ilobjtestgui", 
"infoScreen");
 
  584                $this->tpl->addBlockFile(
"ADM_CONTENT", 
"adm_content", 
"tpl.il_as_tst_eval_anonymous_aggregation.html", 
"Modules/Test");
 
  585                $eval =& $this->
object->getCompleteEvaluationData();
 
  587                $foundParticipants =& $eval->getParticipants();
 
  588                if (count($foundParticipants)) 
 
  590                        $ilToolbar->setFormName(
'form_output_eval');
 
  591                        $ilToolbar->setFormAction($this->ctrl->getFormAction($this, 
'exportAggregatedResults'));
 
  592                        require_once 
'Services/Form/classes/class.ilSelectInputGUI.php';
 
  593                        $export_type = 
new ilSelectInputGUI($this->lng->txt(
'exp_eval_data'), 
'export_type');
 
  594                        $export_type->setOptions(array(
 
  595                                'excel' => $this->lng->txt(
'exp_type_excel'),
 
  596                                'csv'   => $this->lng->txt(
'exp_type_spss')
 
  598                        $ilToolbar->addInputItem($export_type, 
true);
 
  599                        require_once 
'Services/UIComponent/Button/classes/class.ilSubmitButton.php';
 
  601                        $button->setCommand(
'exportAggregatedResults');
 
  602                        $button->setCaption(
'export');
 
  603                        $button->getOmitPreventDoubleSubmission();
 
  604                        $ilToolbar->addButtonInstance($button);
 
  606                        array_push(
$data, array(
 
  607                                'result' => $this->lng->txt(
"tst_eval_total_persons"),
 
  608                                'value'  => count($foundParticipants)
 
  610                        $total_finished = $this->
object->evalTotalFinished();
 
  611                        array_push(
$data, array(
 
  612                                'result' => $this->lng->txt(
"tst_eval_total_finished"),
 
  613                                'value'  => $total_finished
 
  615                        $average_time = $this->
object->evalTotalStartedAverageTime();
 
  616                        $diff_seconds = $average_time;
 
  617                        $diff_hours    = floor($diff_seconds/3600);
 
  618                        $diff_seconds -= $diff_hours   * 3600;
 
  619                        $diff_minutes  = floor($diff_seconds/60);
 
  620                        $diff_seconds -= $diff_minutes * 60;
 
  621                        array_push(
$data, array(
 
  622                                'result' => $this->lng->txt(
"tst_eval_total_finished_average_time"),
 
  623                                'value'  => 
sprintf(
"%02d:%02d:%02d", $diff_hours, $diff_minutes, $diff_seconds)
 
  626                        $total_passed_reached = 0;
 
  627                        $total_passed_max = 0;
 
  628                        $total_passed_time = 0;
 
  629                        foreach ($foundParticipants as $userdata)
 
  631                                if ($userdata->getPassed()) 
 
  634                                        $total_passed_reached += $userdata->getReached();
 
  635                                        $total_passed_max += $userdata->getMaxpoints();
 
  636                                        $total_passed_time += $userdata->getTimeOfWork();
 
  639                        $average_passed_reached = $total_passed ? $total_passed_reached / $total_passed : 0;
 
  640                        $average_passed_max = $total_passed ? $total_passed_max / $total_passed : 0;
 
  641                        $average_passed_time = $total_passed ? $total_passed_time / $total_passed : 0;
 
  642                        array_push(
$data, array(
 
  643                                'result' => $this->lng->txt(
"tst_eval_total_passed"),
 
  644                                'value'  => $total_passed
 
  646                        array_push(
$data, array(
 
  647                                'result' => $this->lng->txt(
"tst_eval_total_passed_average_points"),
 
  648                                'value'  => 
sprintf(
"%2.2f", $average_passed_reached) . 
" " . strtolower($this->lng->txt(
"of")) . 
" " . 
sprintf(
"%2.2f", $average_passed_max)
 
  650                        $average_time = $average_passed_time;
 
  651                        $diff_seconds = $average_time;
 
  652                        $diff_hours    = floor($diff_seconds/3600);
 
  653                        $diff_seconds -= $diff_hours   * 3600;
 
  654                        $diff_minutes  = floor($diff_seconds/60);
 
  655                        $diff_seconds -= $diff_minutes * 60;
 
  656                        array_push(
$data, array(
 
  657                                'result' => $this->lng->txt(
"tst_eval_total_passed_average_time"),
 
  658                                'value'  => 
sprintf(
"%02d:%02d:%02d", $diff_hours, $diff_minutes, $diff_seconds)
 
  662                include_once 
"./Modules/Test/classes/tables/class.ilTestAggregatedResultsTableGUI.php";
 
  664                $table_gui->setData(
$data);
 
  665                $this->tpl->setVariable(
'AGGREGATED_RESULTS', $table_gui->getHTML());   
 
  668                foreach ($eval->getQuestionTitles() as $question_id => $question_title)
 
  673                        foreach ($foundParticipants as $userdata)
 
  675                                for ($i = 0; $i <= $userdata->getLastPass(); $i++)
 
  677                                        if (is_object($userdata->getPass($i)))
 
  679                                                $question =& $userdata->getPass($i)->getAnsweredQuestionByQuestionId($question_id);
 
  680                                                if (is_array($question))
 
  683                                                        $reached += $question[
"reached"];
 
  684                                                        $max += $question[
"points"];
 
  689                        $percent = $max ? $reached/$max * 100.0 : 0;
 
  691                        $this->ctrl->setParameter($this, 
"qid", $question_id);
 
  693                        $points_reached = ($answered ? $reached / $answered : 0);
 
  694                        $points_max     = ($answered ? $max / $answered : 0);
 
  697                                        'qid'            => $question_id,
 
  698                                        'title'          => $question_title,
 
  699                                        'points'         => $points_reached,
 
  700                                        'points_reached' => $points_reached,
 
  701                                        'points_max'     => $points_max,
 
  702                                        'percentage'     => (
float)$percent,
 
  703                                        'answers'        => $answered
 
  707                include_once 
"./Modules/Test/classes/tables/class.ilTestAverageReachedPointsTableGUI.php";
 
  709                $table_gui->setData($rows);
 
  710                $this->tpl->setVariable(
'TBL_AVG_REACHED', $table_gui->getHTML());      
 
  719                if (array_key_exists(
"g_filterby", 
$_GET))
 
  721                        $filterby = 
$_GET[
"g_filterby"];
 
  725                if (array_key_exists(
"g_userfilter", 
$_GET))
 
  727                        $filtertext = 
$_GET[
"g_userfilter"];
 
  731                if (array_key_exists(
"g_passedonly", 
$_GET))
 
  733                        if (
$_GET[
"g_passedonly"] == 1)
 
  739                require_once 
'Modules/Test/classes/class.ilTestExportFactory.php';
 
  742                switch (
$_POST[
"export_type"])
 
  745                                $expFactory->getExporter(
'results')->exportToExcel(
 
  746                                        $deliver = TRUE, $filterby, $filtertext, $passedonly
 
  751                                $expFactory->getExporter(
'results')->exportToCSV(
 
  752                                        $deliver = TRUE, $filterby, $filtertext, $passedonly
 
  759                                        $this->ctrl->setParameterByClass(
"iltestcertificategui", 
"g_passedonly", 
"1");
 
  761                                if (strlen($filtertext))
 
  763                                        $this->ctrl->setParameterByClass(
"iltestcertificategui", 
"g_userfilter", $filtertext);
 
  765                                $this->ctrl->redirect($this, 
"exportCertificate");
 
  777                require_once 
'Modules/Test/classes/class.ilTestExportFactory.php';
 
  779                $exportObj = $expFactory->getExporter(
'aggregated');
 
  781                switch (
$_POST[
"export_type"])
 
  784                                $exportObj->exportToExcel($deliver = TRUE);
 
  787                                $exportObj->exportToCSV($deliver = TRUE);
 
  802                include_once 
"./Services/Utilities/classes/class.ilUtil.php";
 
  803                include_once 
"./Services/Certificate/classes/class.ilCertificate.php";
 
  804                include_once 
"./Modules/Test/classes/class.ilTestCertificateAdapter.php";
 
  807                $total_users = array();
 
  808                $total_users =& $this->
object->evalTotalPersonsArray();
 
  809                if (count($total_users))
 
  811                        foreach ($total_users as $active_id => $name)
 
  813                                $user_id = $this->
object->_getUserIdFromActiveId($active_id);
 
  816                                                "active_id" => $active_id,
 
  817                                                "userfilter" => $userfilter,
 
  818                                                "passedonly" => $passedonly
 
  827                        $zipArchive = 
$certificate->zipCertificatesInArchiveDirectory($archive_dir, TRUE);
 
  840                if ($original_id > 0)
 
  859                global $ilTabs, $ilAccess, $ilObjDataCache;
 
  861                if (!$ilAccess->checkAccess(
'write', 
'', $this->ref_id))
 
  865                        $this->ctrl->redirectByClass(
'ilObjTestGUI', 
'infoScreen');
 
  868                $this->ctrl->saveParameter($this, 
"active_id");
 
  869                $active_id = (int)
$_GET[
"active_id"];
 
  870                $testSession = $this->testSessionFactory->getSession($active_id);
 
  873                if( $testSession->getTestId() != $this->
object->getTestId() )
 
  876                        $this->ctrl->redirectByClass(
'ilObjTestGUI', 
'infoScreen');
 
  879                $this->ctrl->saveParameter($this, 
"pass");
 
  882                if ( isset(
$_GET[
'statistics']) && 
$_GET[
'statistics'] == 1)
 
  884                        $this->ctrl->setParameterByClass(
"ilTestEvaluationGUI", 
"active_id", $active_id);
 
  885                        $this->ctrl->saveParameter($this, 
'statistics');
 
  887                        $ilTabs->setBackTarget(
 
  888                                $this->lng->txt(
'back'), $this->ctrl->getLinkTargetByClass(
'ilTestEvaluationGUI', 
'detailedEvaluation')
 
  891                elseif ($this->object->getNrOfTries() == 1)
 
  893                        $ilTabs->setBackTarget(
 
  894                                $this->lng->txt(
'back'), $this->ctrl->getLinkTargetByClass(
'ilobjtestgui', 
'participants')
 
  899                        $ilTabs->setBackTarget(
 
  900                                $this->lng->txt(
'tst_results_back_overview'), $this->ctrl->getLinkTarget($this, 
'outParticipantsResultsOverview')
 
  907                        require_once 
'Services/PDFGeneration/classes/class.ilPDFGeneration.php';
 
  911                require_once 
'Modules/Test/classes/class.ilTestResultHeaderLabelBuilder.php';
 
  914                $objectivesList = 
null;
 
  918                        $testSequence = $this->testSequenceFactory->getSequenceByActiveIdAndPass($active_id, 
$pass);
 
  919                        $testSequence->loadFromDb();
 
  920                        $testSequence->loadQuestions();
 
  922                        require_once 
'Modules/Course/classes/Objectives/class.ilLOTestQuestionAdapter.php';
 
  926                        $objectivesList->loadObjectivesTitles();
 
  928                        $testResultHeaderLabelBuilder->setObjectiveOrientedContainerId($testSession->getObjectiveOrientedContainerId());
 
  929                        $testResultHeaderLabelBuilder->setUserId($testSession->getUserId());
 
  930                        $testResultHeaderLabelBuilder->setTestObjId($this->object->getId());
 
  931                        $testResultHeaderLabelBuilder->setTestRefId($this->object->getRefId());
 
  932                        $testResultHeaderLabelBuilder->initObjectiveOrientedMode();
 
  935                $result_array = $this->
object->getTestResult(
 
  940                $overviewTableGUI->setTitle($testResultHeaderLabelBuilder->getPassDetailsHeaderLabel(
$pass + 1));
 
  942                $user_id = $this->
object->_getUserIdFromActiveId($active_id);
 
  944                $template = 
new ilTemplate(
"tpl.il_as_tst_pass_details_overview_participants.html", TRUE, TRUE, 
"Modules/Test");
 
  948                $this->ctrl->setParameter($this, 
'pdf', 
'1');
 
  949                $toolbar->setPdfExportLinkTarget( $this->ctrl->getLinkTarget($this, 
'outParticipantsPassDetails') );
 
  950                $this->ctrl->setParameter($this, 
'pdf', 
'');
 
  952                if( isset(
$_GET[
'show_best_solutions']) )
 
  954                        $_SESSION[
'tst_results_show_best_solutions'] = 
true;
 
  956                elseif( isset(
$_GET[
'hide_best_solutions']) )
 
  958                        $_SESSION[
'tst_results_show_best_solutions'] = 
false;
 
  960                elseif( !isset(
$_SESSION[
'tst_results_show_best_solutions']) )
 
  962                        $_SESSION[
'tst_results_show_best_solutions'] = 
false;
 
  965                if( 
$_SESSION[
'tst_results_show_best_solutions'] )
 
  967                        $this->ctrl->setParameter($this, 
'hide_best_solutions', 
'1');
 
  968                        $toolbar->setHideBestSolutionsLinkTarget($this->ctrl->getLinkTarget($this, 
'outParticipantsPassDetails'));
 
  969                        $this->ctrl->setParameter($this, 
'hide_best_solutions', 
'');
 
  973                        $this->ctrl->setParameter($this, 
'show_best_solutions', 
'1');
 
  974                        $toolbar->setShowBestSolutionsLinkTarget($this->ctrl->getLinkTarget($this, 
'outParticipantsPassDetails'));
 
  975                        $this->ctrl->setParameter($this, 
'show_best_solutions', 
'');
 
  979                $template->setVariable(
'RESULTS_TOOLBAR', $this->ctrl->getHTML($toolbar));
 
  984                        $gradingMessageBuilder->buildList();
 
  986                        $template->setCurrentBlock(
'grading_message');
 
  987                        $template->setVariable(
'GRADING_MESSAGE', $gradingMessageBuilder->getList());
 
  988                        $template->parseCurrentBlock();
 
  991                $list_of_answers = $this->
getPassListOfAnswers($result_array, $active_id, 
$pass, 
$_SESSION[
'tst_results_show_best_solutions'], 
false, 
false, 
false, 
true, $objectivesList, $testResultHeaderLabelBuilder);
 
  992                $template->setVariable(
"LIST_OF_ANSWERS", $list_of_answers);
 
  993                $template->setVariable(
"PASS_DETAILS", $this->ctrl->getHTML($overviewTableGUI));
 
  997                        $template->setVariable(
"USER_DATA", $user_data);
 
  999                        $uname = $this->
object->userLookupFullName($user_id);
 
 1000                        $template->setVariable(
"TEXT_HEADING", 
sprintf($this->lng->txt(
"tst_result_user_name_pass"), 
$pass + 1, $uname));
 
 1002                        $template->setVariable(
"TEXT_RESULTS", $testResultHeaderLabelBuilder->getPassDetailsHeaderLabel(
$pass + 1));
 
 1005                $template->setVariable(
"FORMACTION", $this->ctrl->getFormAction($this));
 
 1010                if ($this->object->getShowSolutionAnswersOnly())
 
 1018                        require_once 
'class.ilTestPDFGenerator.php';
 
 1023                        $this->tpl->setVariable(
"ADM_CONTENT", $template->get());
 
 1034                global $ilTabs, $ilAccess, $ilObjDataCache;
 
 1036                if (!$ilAccess->checkAccess(
'write', 
'', $this->ref_id))
 
 1040                        $this->ctrl->redirectByClass(
'ilObjTestGUI', 
'infoScreen');
 
 1043                $active_id = (int)
$_GET[
"active_id"];
 
 1044                $testSession = $this->testSessionFactory->getSession($active_id);
 
 1047                if( $testSession->getTestId() != $this->
object->getTestId() )
 
 1050                        $this->ctrl->redirectByClass(
'ilObjTestGUI', 
'infoScreen');
 
 1053                if ($this->object->getNrOfTries() == 1)
 
 1055                        $this->ctrl->setParameter($this, 
"active_id", $active_id);
 
 1057                        $this->ctrl->redirect($this, 
"outParticipantsPassDetails");
 
 1060                $ilTabs->setBackTarget(
 
 1061                        $this->lng->txt(
'back'), $this->ctrl->getLinkTargetByClass(
'ilobjtestgui', 
'participants')
 
 1067                        require_once 
'Services/PDFGeneration/classes/class.ilPDFGeneration.php';
 
 1071                $template = 
new ilTemplate(
"tpl.il_as_tst_pass_overview_participants.html", TRUE, TRUE, 
"Modules/Test");
 
 1075                $this->ctrl->setParameter($this, 
'pdf', 
'1');
 
 1076                $toolbar->setPdfExportLinkTarget( $this->ctrl->getLinkTarget($this, __FUNCTION__) );
 
 1077                $this->ctrl->setParameter($this, 
'pdf', 
'');
 
 1080                $template->setVariable(
'RESULTS_TOOLBAR', $this->ctrl->getHTML($toolbar));
 
 1082                require_once 
'Modules/Test/classes/class.ilTestResultHeaderLabelBuilder.php';
 
 1086                        $testResultHeaderLabelBuilder->setObjectiveOrientedContainerId($testSession->getObjectiveOrientedContainerId());
 
 1087                        $testResultHeaderLabelBuilder->setUserId($testSession->getUserId());
 
 1088                        $testResultHeaderLabelBuilder->setTestObjId($this->object->getId());
 
 1089                        $testResultHeaderLabelBuilder->setTestRefId($this->object->getRefId());
 
 1090                        $testResultHeaderLabelBuilder->initObjectiveOrientedMode();
 
 1093                require_once 
'Modules/Test/classes/class.ilTestPassesSelector.php';
 
 1095                $testPassesSelector->setActiveId($testSession->getActiveId());
 
 1096                $testPassesSelector->setLastFinishedPass($testSession->getLastFinishedPass());
 
 1099                $passOverViewTableGUI->setActiveId($testSession->getActiveId());
 
 1100                $passOverViewTableGUI->setResultPresentationEnabled(
true);
 
 1101                $passOverViewTableGUI->setPassDetailsCommand(
'outParticipantsPassDetails');
 
 1102                $passOverViewTableGUI->init();
 
 1103                $passOverViewTableGUI->setData($this->
getPassOverviewTableData($testSession, $testPassesSelector->getExistingPasses(), 
true, 
true));
 
 1104                $passOverViewTableGUI->setTitle($testResultHeaderLabelBuilder->getPassOverviewHeaderLabel());
 
 1105                $template->setVariable(
"PASS_OVERVIEW", $passOverViewTableGUI->getHTML());
 
 1110                        $gradingMessageBuilder->buildList();
 
 1112                        $template->setCurrentBlock(
'grading_message');
 
 1113                        $template->setVariable(
'GRADING_MESSAGE', $gradingMessageBuilder->getList());
 
 1114                        $template->parseCurrentBlock();
 
 1118                $user_id = $this->
object->_getUserIdFromActiveId($active_id);
 
 1122                        if ($this->object->getAnonymity())
 
 1124                                $template->setVariable(
"TEXT_HEADING", $this->lng->txt(
"tst_result"));
 
 1128                                $uname = $this->
object->userLookupFullName($user_id, TRUE);
 
 1129                                $template->setVariable(
"TEXT_HEADING", 
sprintf($this->lng->txt(
"tst_result_user_name"), $uname));
 
 1130                                $template->setVariable(
"USER_DATA", $user_data);
 
 1134                $template->parseCurrentBlock();
 
 1138                if ($this->object->getShowSolutionAnswersOnly())
 
 1143                if (array_key_exists(
"pdf", 
$_GET) && (
$_GET[
"pdf"] == 1))
 
 1148                        $filename = $name[
'lastname'] . 
'_' . $name[
'firstname'] . 
'_' . $name[
'login'] . 
'__'. $this->
object->getTitleFilenameCompliant();
 
 1149                        require_once 
'class.ilTestPDFGenerator.php';
 
 1156                        $this->tpl->setVariable(
"ADM_CONTENT", $template->get());
 
 1163                $tableGUI->initFilter();
 
 1164                $tableGUI->resetOffset();
 
 1165                $tableGUI->writeFilterToSession();
 
 1172                $tableGUI->initFilter();
 
 1173                $tableGUI->resetOffset();
 
 1174                $tableGUI->resetFilter();
 
 1185                global $ilTabs, 
$ilUser, $ilObjDataCache;
 
 1189                if ($this->object->getNrOfTries() == 1)
 
 1191                        $ilTabs->setBackTarget($this->lng->txt(
'tst_results_back_introduction'), $this->ctrl->getLinkTargetByClass(
'ilObjTestGUI', 
'infoScreen'));
 
 1195                        $ilTabs->setBackTarget($this->lng->txt(
'tst_results_back_overview'), $this->ctrl->getLinkTarget($this, 
'outUserResultsOverview'));
 
 1198                $testSession = $this->testSessionFactory->getSession();
 
 1200                if( !$this->object->getShowPassDetails() )
 
 1202                        #$executable = $this->object->isExecutable($testSession, $ilUser->getId()); 
 1204                        #if($executable["executable"])
 
 1206                                $this->ctrl->redirectByClass(
"ilobjtestgui", 
"infoScreen");
 
 1210                $active_id = $testSession->getActiveId();
 
 1211                $user_id = $testSession->getUserId();
 
 1213                $this->ctrl->saveParameter($this, 
"pass");
 
 1219                        require_once 
'Services/PDFGeneration/classes/class.ilPDFGeneration.php';
 
 1223                require_once 
'Modules/Test/classes/class.ilTestResultHeaderLabelBuilder.php';
 
 1226                $objectivesList = 
null;
 
 1228                $considerHiddenQuestions = 
true;
 
 1229                $considerOptionalQuestions = 
true;
 
 1233                        $considerHiddenQuestions = 
false;
 
 1235                        $testSequence = $this->testSequenceFactory->getSequenceByActiveIdAndPass($active_id, 
$pass);
 
 1236                        $testSequence->loadFromDb();
 
 1237                        $testSequence->loadQuestions();
 
 1239                        if( $this->object->isRandomTest() && !$testSequence->isAnsweringOptionalQuestionsConfirmed() )
 
 1241                                $considerOptionalQuestions = 
false;
 
 1244                        require_once 
'Modules/Course/classes/Objectives/class.ilLOTestQuestionAdapter.php';
 
 1248                        $objectivesList->loadObjectivesTitles();
 
 1250                        $testResultHeaderLabelBuilder->setObjectiveOrientedContainerId($testSession->getObjectiveOrientedContainerId());
 
 1251                        $testResultHeaderLabelBuilder->setUserId($testSession->getUserId());
 
 1252                        $testResultHeaderLabelBuilder->setTestObjId($this->object->getId());
 
 1253                        $testResultHeaderLabelBuilder->setTestRefId($this->object->getRefId());
 
 1254                        $testResultHeaderLabelBuilder->initObjectiveOrientedMode();
 
 1259                $command_solution_details = 
"";
 
 1260                if ($this->object->getShowSolutionDetails())
 
 1262                        $command_solution_details = 
"outCorrectSolution";
 
 1264                $questionAnchorNav = $this->
object->canShowSolutionPrintview();
 
 1266                $tpl = 
new ilTemplate(
'tpl.il_as_tst_pass_details_overview_participants.html', 
true, 
true, 
"Modules/Test");
 
 1272                        $this->ctrl->setParameter($this, 
'pdf', 
'1');
 
 1273                        $toolbar->setPdfExportLinkTarget( $this->ctrl->getLinkTarget($this, 
'outUserPassDetails') );
 
 1274                        $this->ctrl->setParameter($this, 
'pdf', 
'');
 
 1276                        include_once 
'./Services/WebServices/RPC/classes/class.ilRPCServerSettings.php';
 
 1277                        if( $this->object->canShowCertificate($testSession, $user_id, $active_id) )
 
 1279                                $toolbar->setCertificateLinkTarget($this->ctrl->getLinkTarget($this, 
'outCertificate'));
 
 1284                        $tpl->setVariable(
'RESULTS_TOOLBAR', $this->ctrl->getHTML($toolbar));
 
 1286                        $tpl->setCurrentBlock(
'signature');
 
 1288                        $tpl->parseCurrentBlock();
 
 1290                        if ($this->object->isShowExamIdInTestResultsEnabled())
 
 1292                                $tpl->setCurrentBlock(
'exam_id');
 
 1294                                        $testSession->getActiveId(), 
$pass 
 1296                                $tpl->setVariable(
'EXAM_ID_TXT', $this->lng->txt(
'exam_id'));
 
 1297                                $tpl->parseCurrentBlock();
 
 1305                        $gradingMessageBuilder->buildMessage();
 
 1306                        $gradingMessageBuilder->sendMessage();
 
 1308                        #$template->setCurrentBlock('grading_message'); 
 1309                        #$template->setVariable('GRADING_MESSAGE', ); 
 1310                        #$template->parseCurrentBlock(); 
 1314                        $result_array, $active_id, 
$pass, $this, 
"outUserPassDetails",
 
 1315                        $command_solution_details, $questionAnchorNav, $objectivesList
 
 1317                $overviewTableGUI->setTitle($testResultHeaderLabelBuilder->getPassDetailsHeaderLabel(
$pass + 1));
 
 1318                $tpl->setVariable(
"PASS_DETAILS", $this->ctrl->getHTML($overviewTableGUI));
 
 1320                if( $this->object->canShowSolutionPrintview() )
 
 1323                                $result_array, $active_id, 
$pass, $this->object->getShowSolutionListComparison(),
 
 1324                                false, 
false, 
false, 
true, $objectivesList, $testResultHeaderLabelBuilder
 
 1326                        $tpl->setVariable(
"LIST_OF_ANSWERS", $list_of_answers);
 
 1329                $tpl->setVariable(
"TEXT_RESULTS", $testResultHeaderLabelBuilder->getPassDetailsHeaderLabel(
$pass+1));
 
 1330                $tpl->setVariable(
"FORMACTION", $this->ctrl->getFormAction($this));
 
 1332                $uname = $this->
object->userLookupFullName($user_id, TRUE);
 
 1336                        if($this->object->getAnonymity())
 
 1338                                $tpl->setVariable(
"TEXT_HEADING", $this->lng->txt(
"tst_result_pass"));
 
 1341                                $tpl->setVariable(
"TEXT_HEADING", 
sprintf($this->lng->txt(
"tst_result_user_name_pass"), 
$pass + 1, $uname));
 
 1342                                $tpl->setVariable(
"USER_DATA", $user_data);
 
 1349                if ($this->object->getShowSolutionAnswersOnly())
 
 1356                        require_once 
'class.ilTestPDFGenerator.php';
 
 1361                        $this->tpl->setContent(
$tpl->get());
 
 1372                global 
$ilUser, $ilTabs, $ilObjDataCache;
 
 1376                $ilTabs->setBackTarget(
 
 1377                        $this->lng->txt(
'tst_results_back_introduction'),
 
 1378                        $this->ctrl->getLinkTargetByClass(
'ilObjTestGUI', 
'infoScreen')
 
 1381                $testSession = $this->testSessionFactory->getSession();
 
 1382                $active_id = $testSession->getActiveId();
 
 1384                $uname = $this->
object->userLookupFullName($user_id, TRUE);
 
 1386                if( !$this->object->canShowTestResults($testSession) )
 
 1388                        $this->ctrl->redirectByClass(
"ilobjtestgui", 
"infoScreen");
 
 1394                        require_once 
'Services/PDFGeneration/classes/class.ilPDFGeneration.php';
 
 1398                $templatehead = 
new ilTemplate(
"tpl.il_as_tst_results_participants.html", TRUE, TRUE, 
"Modules/Test");
 
 1399                $template = 
new ilTemplate(
"tpl.il_as_tst_results_participant.html", TRUE, TRUE, 
"Modules/Test");
 
 1403                $this->ctrl->setParameter($this, 
'pdf', 
'1');
 
 1404                $toolbar->setPdfExportLinkTarget( $this->ctrl->getLinkTarget($this, 
'outUserResultsOverview') );
 
 1405                $this->ctrl->setParameter($this, 
'pdf', 
'');
 
 1407                include_once 
'./Services/WebServices/RPC/classes/class.ilRPCServerSettings.php';
 
 1408                if( $this->object->canShowCertificate($testSession, $user_id, $active_id) )
 
 1410                        $toolbar->setCertificateLinkTarget($this->ctrl->getLinkTarget($this, 
'outCertificate'));
 
 1415                $templatehead->setVariable(
'RESULTS_TOOLBAR', $this->ctrl->getHTML($toolbar));
 
 1417                $passDetailsEnabled = $this->
object->getShowPassDetails();
 
 1418                #if (!$passDetailsEnabled) 
 1420                #       $executable = $this->object->isExecutable($testSession, $ilUser->getId()); 
 1421                #       if (!$executable["executable"]) $passDetailsEnabled = true;
 
 1424                require_once 
'Modules/Test/classes/class.ilTestResultHeaderLabelBuilder.php';
 
 1428                        $testResultHeaderLabelBuilder->setObjectiveOrientedContainerId($testSession->getObjectiveOrientedContainerId());
 
 1429                        $testResultHeaderLabelBuilder->setUserId($testSession->getUserId());
 
 1430                        $testResultHeaderLabelBuilder->setTestObjId($this->object->getId());
 
 1431                        $testResultHeaderLabelBuilder->setTestRefId($this->object->getRefId());
 
 1432                        $testResultHeaderLabelBuilder->initObjectiveOrientedMode();
 
 1435                $template->setCurrentBlock(
"pass_overview");
 
 1437                require_once 
'Modules/Test/classes/class.ilTestPassesSelector.php';
 
 1439                $testPassesSelector->setActiveId($testSession->getActiveId());
 
 1440                $testPassesSelector->setLastFinishedPass($testSession->getLastFinishedPass());
 
 1443                $passOverViewTableGUI->setActiveId($testSession->getActiveId());
 
 1444                $passOverViewTableGUI->setResultPresentationEnabled(
true);
 
 1445                if($passDetailsEnabled)
 
 1447                        $passOverViewTableGUI->setPassDetailsCommand(
'outUserPassDetails');
 
 1449                if( $this->object->isPassDeletionAllowed() )
 
 1451                        $passOverViewTableGUI->setPassDeletionCommand(
'confirmDeletePass');
 
 1453                $passOverViewTableGUI->init();
 
 1454                $passOverViewTableGUI->setData($this->
getPassOverviewTableData($testSession, $testPassesSelector->getReportablePasses(), 
true));
 
 1455                $passOverViewTableGUI->setTitle($testResultHeaderLabelBuilder->getPassOverviewHeaderLabel());
 
 1456                $overview = $passOverViewTableGUI->getHTML();
 
 1459                        require_once 
'Modules/Test/classes/class.ilTestLearningObjectivesStatusGUI.php';
 
 1462                        $loStatus->setUsrId($testSession->getUserId());
 
 1463                        $overview .= 
"<br />".$loStatus->getHTML();
 
 1465                $template->setVariable(
"PASS_OVERVIEW", $overview);
 
 1466                $template->parseCurrentBlock();
 
 1471                        $gradingMessageBuilder->buildMessage();
 
 1472                        $gradingMessageBuilder->sendMessage();
 
 1474                        #$template->setCurrentBlock('grading_message'); 
 1475                        #$template->setVariable('GRADING_MESSAGE', ); 
 1476                        #$template->parseCurrentBlock(); 
 1483                        if ($this->object->getAnonymity())
 
 1485                                $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())
 
 1499                $templatehead->setVariable(
"RESULTS_PARTICIPANT", $template->get());
 
 1504                        require_once 
'class.ilTestPDFGenerator.php';
 
 1509                        $this->tpl->setContent($templatehead->get());
 
 1522                global 
$ilUser, $ilObjDataCache;
 
 1524                if (!$this->object->getShowSolutionPrintview())
 
 1527                        $this->ctrl->redirectByClass(
"ilobjtestgui", 
"infoScreen");
 
 1530                $template = 
new ilTemplate(
"tpl.il_as_tst_info_list_of_answers.html", TRUE, TRUE, 
"Modules/Test");
 
 1533                if (array_key_exists(
"pass", 
$_GET))
 
 1539                $testSession = $this->testSessionFactory->getSession();
 
 1540                $active_id = $testSession->getActiveId();
 
 1543                if ($this->object->getNrOfTries() == 1)
 
 1549                        $template->setVariable(
"TEXT_RESULTS", $this->lng->txt(
"tst_passes"));
 
 1551                        require_once 
'Modules/Test/classes/class.ilTestPassesSelector.php';
 
 1553                        $testPassesSelector->setActiveId($testSession->getActiveId());
 
 1554                        $testPassesSelector->setLastFinishedPass($testSession->getLastFinishedPass());
 
 1557                        $passOverViewTableGUI->setActiveId($testSession->getActiveId());
 
 1558                        $passOverViewTableGUI->setResultPresentationEnabled(
false);
 
 1559                        $passOverViewTableGUI->setPassDetailsCommand(
'outUserListOfAnswerPasses');
 
 1560                        $passOverViewTableGUI->init();
 
 1561                        $passOverViewTableGUI->setData($this->
getPassOverviewTableData($testSession, $testPassesSelector->getClosedPasses(), 
false));
 
 1562                        $template->setVariable(
"PASS_OVERVIEW", $passOverViewTableGUI->getHTML());
 
 1568                        require_once 
'Modules/Test/classes/class.ilTestResultHeaderLabelBuilder.php';
 
 1571                        $objectivesList = 
null;
 
 1575                                $testSequence = $this->testSequenceFactory->getSequenceByActiveIdAndPass($active_id, 
$pass);
 
 1576                                $testSequence->loadFromDb();
 
 1577                                $testSequence->loadQuestions();
 
 1579                                require_once 
'Modules/Course/classes/Objectives/class.ilLOTestQuestionAdapter.php';
 
 1583                                $objectivesList->loadObjectivesTitles();
 
 1585                                $testResultHeaderLabelBuilder->setObjectiveOrientedContainerId($testSession->getObjectiveOrientedContainerId());
 
 1586                                $testResultHeaderLabelBuilder->setUserId($testSession->getUserId());
 
 1587                                $testResultHeaderLabelBuilder->setTestObjId($this->object->getId());
 
 1588                                $testResultHeaderLabelBuilder->setTestRefId($this->object->getRefId());
 
 1589                                $testResultHeaderLabelBuilder->initObjectiveOrientedMode();
 
 1592                        $result_array = $this->
object->getTestResult(
 
 1597                        $user_id =& $this->
object->_getUserIdFromActiveId($active_id);
 
 1598                        $showAllAnswers = TRUE;
 
 1599                        if ($this->object->isExecutable($testSession, $user_id))
 
 1601                                $showAllAnswers = FALSE;
 
 1604                        $answers = $this->
getPassListOfAnswers($result_array, $active_id, 
$pass, FALSE, $showAllAnswers, 
false, 
false, 
false, $objectivesList, $testResultHeaderLabelBuilder);
 
 1605                        $template->setVariable(
"PASS_DETAILS", $answers);
 
 1607                $template->setVariable(
"FORMACTION", $this->ctrl->getFormAction($this));
 
 1608                $template->setVariable(
"BACK_TEXT", $this->lng->txt(
"tst_results_back_introduction"));
 
 1609                $template->setVariable(
"BACK_URL", $this->ctrl->getLinkTargetByClass(
"ilobjtestgui", 
"infoScreen"));
 
 1610                $template->setVariable(
"PRINT_TEXT", $this->lng->txt(
"print"));
 
 1611                $template->setVariable(
"PRINT_URL", 
"javascript:window.print();");
 
 1614                $template->setVariable(
"USER_DATA", $user_data);
 
 1615                $template->setVariable(
"TEXT_LIST_OF_ANSWERS", $this->lng->txt(
"tst_list_of_answers"));
 
 1616                if (strlen($signature))
 
 1618                        $template->setVariable(
"SIGNATURE", $signature);
 
 1620                if (!is_null(
$pass) && $this->object->isShowExamIdInTestResultsEnabled())
 
 1622                        $template->setCurrentBlock(
'exam_id_footer');
 
 1624                                $testSession->getActiveId(), 
$pass 
 1626                        $template->setVariable(
'EXAM_ID_TXT', $this->lng->txt(
'exam_id'));
 
 1627                        $template->parseCurrentBlock();
 
 1629                $this->tpl->setVariable(
"ADM_CONTENT", $template->get());
 
 1632                if ($this->object->getShowSolutionAnswersOnly())
 
 1647                if (array_key_exists(
"pass", 
$_GET) && (strlen(
$_GET[
"pass"]) > 0))
 
 1649                        $this->ctrl->saveParameter($this, 
"pass");
 
 1650                        $this->ctrl->saveParameter($this, 
"active_id");
 
 1651                        $this->outTestResults(
false, 
$_GET[
"pass"]);
 
 1655                        $this->outTestResults(
false);
 
 1667                if ((!$ilAccess->checkAccess(
"tst_statistics", 
"", $this->ref_id)) && (!$ilAccess->checkAccess(
"write", 
"", $this->ref_id)))
 
 1671                        $this->ctrl->redirectByClass(
"ilobjtestgui", 
"infoScreen");
 
 1674                $data =& $this->
object->getCompleteEvaluationData();
 
 1675                $color_class = array(
"tblrow1", 
"tblrow2");
 
 1677                $this->tpl->addBlockFile(
"ADM_CONTENT", 
"adm_content", 
"tpl.il_as_tst_eval_single_answers.html", 
"Modules/Test");
 
 1678                $foundParticipants =& 
$data->getParticipants();
 
 1679                if (count($foundParticipants) == 0)
 
 1687                        foreach (
$data->getQuestionTitles() as $question_id => $question_title)
 
 1692                                foreach ($foundParticipants as $userdata)
 
 1694                                        $pass = $userdata->getScoredPass();
 
 1695                                        if (is_object($userdata->getPass(
$pass)))
 
 1697                                                $question =& $userdata->getPass(
$pass)->getAnsweredQuestionByQuestionId($question_id);
 
 1698                                                if (is_array($question))
 
 1705                                $this->ctrl->setParameter($this, 
"qid", $question_id);
 
 1706                                require_once 
'./Modules/TestQuestionPool/classes/class.assQuestion.php';
 
 1711                                        if ($question_object->hasFileUploads($this->object->getTestId()))
 
 1713                                                $download = 
"<a href=\"" . $this->ctrl->getLinkTarget($this, 
"exportFileUploadsForAllParticipants"). 
"\">" . $this->lng->txt(
"download") . 
"</a>";
 
 1718                                                'qid'               => $question_id,
 
 1719                                                'question_title'    => $question_title,
 
 1720                                                'number_of_answers' => $answered,
 
 1721                                                'output'            => 
"<a href=\"" . $this->ctrl->getLinkTarget($this, 
"exportQuestionForAllParticipants") . 
"\">" . $this->lng->txt(
"pdf_export") . 
"</a>",
 
 1722                                                'file_uploads'      => $download
 
 1728                                require_once 
'./Modules/Test/classes/tables/class.ilResultsByQuestionTableGUI.php';
 
 1730                                $table_gui->setTitle($this->lng->txt(
"tst_answered_questions_test"));
 
 1731                                $table_gui->setData($rows);
 
 1733                                $this->tpl->setVariable(
"TBL_SINGLE_ANSWERS", $table_gui->getHTML());
 
 1737                                $this->tpl->setVariable(
"TBL_SINGLE_ANSWERS", $this->lng->txt(
"adm_no_special_users"));
 
 1747                $testSession = $this->testSessionFactory->getSession();
 
 1749                require_once 
'./Services/Certificate/classes/class.ilCertificate.php';
 
 1750                require_once 
'./Modules/Test/classes/class.ilTestCertificateAdapter.php';
 
 1754                                "active_id" => $testSession->getActiveId(), 
 
 1762                if( isset(
$_GET[
'context']) && strlen(
$_GET[
'context']) )
 
 1764                        $context = 
$_GET[
'context'];
 
 1771                if( !$this->object->isPassDeletionAllowed() && !$this->object->isDynamicTest() )
 
 1776                require_once 
'Modules/Test/classes/confirmations/class.ilTestPassDeletionConfirmationGUI.php';
 
 1779                $confirm->build((
int)
$_GET[
'active_id'], (
int)
$_GET[
'pass'], $context);
 
 1782                $tpl->setContent($this->ctrl->getHTML($confirm));
 
 1792                require_once 
'Modules/Test/classes/confirmations/class.ilTestPassDeletionConfirmationGUI.php';
 
 1798                                $this->ctrl->redirect($this, 
'outUserResultsOverview');
 
 1802                                $this->ctrl->redirectByClass(
'ilObjTestGUI', 
'infoScreen');
 
 1806                                $this->ctrl->redirectByClass(
'ilTestPlayerDynamicQuestionSetGUI', 
'startTest');
 
 1810        public function performDeletePass()
 
 1812                if( isset(
$_POST[
'context']) && strlen(
$_POST[
'context']) )
 
 1814                        $context = 
$_POST[
'context'];
 
 1821                if( !$this->object->isPassDeletionAllowed() && !$this->object->isDynamicTest() )
 
 1831                if( isset(
$_POST[
'active_id']) && (
int)
$_POST[
'active_id'] )
 
 1833                        $active_fi = 
$_POST[
'active_id'];
 
 1836                if( isset(
$_POST[
'pass']) && is_numeric(
$_POST[
'pass']) )
 
 1841                if( is_null($active_fi) || is_null(
$pass) )
 
 1843                        $this->ctrl->redirect($this, 
'outUserResultsOverview');
 
 1846                if( !$this->object->isDynamicTest() && 
$pass == $this->object->_getResultPass($active_fi) )
 
 1848                        $this->ctrl->redirect($this, 
'outUserResultsOverview');
 
 1853                                SELECT tst_active.tries, tst_active.last_finished_pass, tst_sequence.pass 
 1855                                LEFT JOIN tst_sequence 
 1856                                ON tst_sequence.active_fi = tst_active.active_id 
 1857                                AND tst_sequence.pass = tst_active.tries 
 1858                                WHERE tst_active.active_id = {$ilDB->quote($active_fi, 'integer')} 
 1863                        $tries = 
$row[
'tries'];
 
 1864                        $lastFinishedPass = is_numeric(
$row[
'last_finished_pass']) ? 
$row[
'last_finished_pass'] : -1;
 
 1866                        if( 
$pass < $lastFinishedPass )
 
 1868                                $isActivePass = 
false;
 
 1869                                $must_renumber = 
true;
 
 1871                        elseif( 
$pass == $lastFinishedPass )
 
 1873                                $isActivePass = 
false;
 
 1875                                if( $tries == 
$row[
'pass'] )
 
 1877                                        $must_renumber = 
true;
 
 1881                                        $must_renumber = 
false;
 
 1886                                $isActivePass = 
true;
 
 1887                                $must_renumber = 
false;
 
 1891                                throw new ilTestException (
'This should not happen, please contact Bjoern Heyser to clean up this pass salad!');
 
 1894                if( !$this->object->isDynamicTest() && $isActivePass )
 
 1896                        $this->ctrl->redirect($this, 
'outUserResultsOverview');
 
 1900                                        ($lastFinishedPass == 0 && $tries == 1 && $tries != 
$row[
'pass'])
 
 1901                                        || ($isActivePass == 
true) 
 
 1918                                        WHERE active_id = ' . 
$ilDB->quote($active_fi, 
'integer')
 
 1921                        elseif( !$isActivePass )
 
 1925                                        SET tries = ' . 
$ilDB->quote($tries-1, 
'integer') . 
', 
 1926                                        last_finished_pass = ' . 
$ilDB->quote($lastFinishedPass-1, 
'integer') . 
' 
 1927                                        WHERE active_id = ' . 
$ilDB->quote($active_fi, 
'integer')
 
 1934                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer') . 
' 
 1935                                AND pass = ' . 
$ilDB->quote(
$pass, 
'integer')
 
 1941                                'UPDATE tst_manual_fb 
 1943                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer'). 
' 
 1944                                AND pass > ' . 
$ilDB->quote(
$pass, 
'integer')
 
 1953                                FROM tst_pass_result 
 1954                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer') . 
' 
 1955                                AND pass = ' . 
$ilDB->quote(
$pass, 
'integer')
 
 1961                                'UPDATE tst_pass_result 
 1963                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer'). 
' 
 1964                                AND pass > ' . 
$ilDB->quote(
$pass, 
'integer')
 
 1977                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer') . 
' 
 1978                                AND pass = ' . 
$ilDB->quote(
$pass, 
'integer')
 
 1984                                'UPDATE tst_sequence 
 1986                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer'). 
' 
 1987                                AND pass > ' . 
$ilDB->quote(
$pass, 
'integer')
 
 1991                if( $this->object->isDynamicTest() )
 
 1994                                'tst_seq_qst_tracking', 
'tst_seq_qst_answstatus', 
'tst_seq_qst_postponed', 
'tst_seq_qst_checked' 
 1997                        foreach($tables as $table)
 
 2001                                                WHERE active_fi = {$ilDB->quote($active_fi, 'integer')} 
 2002                                                AND pass = {$ilDB->quote($pass, 'integer')} 
 2005                                if( $must_renumber )
 
 2010                                                WHERE active_fi = {$ilDB->quote($active_fi, 'integer')} 
 2011                                                AND pass > {$ilDB->quote($pass, 'integer')} 
 2021                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer') . 
' 
 2022                                AND pass = ' . 
$ilDB->quote(
$pass, 
'integer')
 
 2028                                'UPDATE tst_solutions 
 2030                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer'). 
' 
 2031                                AND pass > ' . 
$ilDB->quote(
$pass, 
'integer')
 
 2038                                FROM tst_test_result 
 2039                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer') . 
' 
 2040                                AND pass = ' . 
$ilDB->quote(
$pass, 
'integer')
 
 2046                                'UPDATE tst_test_result 
 2048                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer') . 
' 
 2049                                AND pass > ' . 
$ilDB->quote(
$pass, 
'integer')
 
 2059                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer') . 
' 
 2060                                AND pass = ' . 
$ilDB->quote(
$pass, 
'integer')
 
 2068                                WHERE active_fi = ' . 
$ilDB->quote($active_fi, 
'integer'). 
' 
 2069                                AND pass > ' . 
$ilDB->quote(
$pass, 
'integer')
 
 2073                        require_once 
'Modules/Test/classes/class.ilObjAssessmentFolder.php';
 
 2080                        require_once 
'./Modules/TestQuestionPool/classes/class.assQuestion.php';
 
 2083                if( $this->object->isDynamicTest() )
 
 2085                        require_once 
'Modules/Test/classes/tables/class.ilTestDynamicQuestionSetStatisticTableGUI.php';
 
 2094                global 
$ilDB, $ilPluginAdmin;
 
 2096                $resultData = $this->
object->getTestResult($active_id, 
$pass, 
false, $considerHiddenQuestions);
 
 2097                $questionIds = array();
 
 2098                foreach($resultData as $resultItemKey => $resultItemValue)
 
 2100                        if($resultItemKey === 
'test' || $resultItemKey === 
'pass')
 
 2105                        $questionIds[] = $resultItemValue[
'qid'];
 
 2109                $table_gui->initFilter();
 
 2111                require_once 
'Modules/TestQuestionPool/classes/class.ilAssQuestionList.php';
 
 2114                $questionList->setIncludeQuestionIdsFilter($questionIds);
 
 2115                $questionList->setQuestionInstanceTypeFilter(
null);
 
 2117                foreach ($table_gui->getFilterItems() as $item)
 
 2119                        if( substr($item->getPostVar(), 0, strlen(
'tax_')) == 
'tax_' )
 
 2121                                $v = $item->getValue();
 
 2123                                if( is_array($v) && count($v) && !(
int)$v[0] )
 
 2128                                $taxId = substr($item->getPostVar(), strlen(
'tax_'));
 
 2129                                $questionList->addTaxonomyFilter($taxId, $item->getValue(), $this->object->getId(), 
'tst');
 
 2131                        elseif( $item->getValue() !== 
false )
 
 2133                                $questionList->addFieldFilter($item->getPostVar(), $item->getValue());
 
 2137                $questionList->load();
 
 2139                $filteredTestResult = array();
 
 2141                foreach($resultData as $resultItemKey => $resultItemValue)
 
 2143                        if($resultItemKey === 
'test' || $resultItemKey === 
'pass')
 
 2148                        if( !$questionList->isInList($resultItemValue[
'qid']) )
 
 2153                        $filteredTestResult[] = $resultItemValue;
 
 2156                return $filteredTestResult;
 
 2161                require_once 
'Services/Utilities/classes/class.ilConfirmationGUI.php';
 
 2163                $cgui->setFormAction($this->ctrl->getFormAction($this, 
"participants"));
 
 2164                $cgui->setHeaderText($this->lng->txt(
"finish_pass_for_user_confirmation"));
 
 2165                $cgui->setCancel($this->lng->txt(
"cancel"), 
"redirectBackToParticipantsScreen");
 
 2166                $cgui->setConfirm($this->lng->txt(
"proceed"), 
"confirmFinishTestPassForUser");
 
 2167                $this->tpl->setContent($cgui->getHTML());
 
 2172                require_once 
'Modules/Test/classes/class.ilTestPassFinishTasks.php';
 
 2173                $active_id = (int) 
$_GET[
"active_id"];
 
 2180                require_once 
'Services/Utilities/classes/class.ilConfirmationGUI.php';
 
 2182                $cgui->setFormAction($this->ctrl->getFormAction($this, 
"participants"));
 
 2183                $cgui->setHeaderText($this->lng->txt(
"finish_pass_for_all_users"));
 
 2184                $cgui->setCancel($this->lng->txt(
"cancel"), 
"redirectBackToParticipantsScreen");
 
 2185                $cgui->setConfirm($this->lng->txt(
"proceed"), 
"confirmFinishTestPassForAllUser");
 
 2186                $this->tpl->setContent($cgui->getHTML());
 
 2191                require_once 
'Modules/Test/classes/class.ilTestPassFinishTasks.php';
 
 2192                $participants = $this->
object->getTestParticipants();
 
 2193                foreach($participants as $participant)
 
 2195                        if(array_key_exists(
'unfinished_passes', $participant) && $participant[
'unfinished_passes'] == 1)
 
 2197                                $this->
finishTestPass($participant[
'active_id'], $this->object->getId());
 
 2205                $this->processLockerFactory->setActiveId($active_id);
 
 2206                $processLocker = $this->processLockerFactory->getLocker();
 
 2209                $test_pass_finisher->performFinishTasks($processLocker);
 
 2214                $this->ctrl->redirectByClass(
"ilobjtestgui", 
"participants");
 
sprintf('%.4f', $callTime)
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.
static _isComplete($adapter)
Checks the status of the certificate.
Confirmation screen class.
static formatDate(ilDateTime $date)
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 _getResultPass($active_id)
Retrieves the pass number that should be counted for a given user.
static lookupExamId($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 prepareGeneration()
Prepare the PDF generation This initializes the purpose for MathJax rendering It has to be called bef...
TableGUI class for results by question.
special template class to simplify handling of ITX/PEAR
Test certificate adapter.
Class ilTestDetailedEvaluationStatisticsTableGUI.
Output class for assessment test evaluation.
exportFileUploadsForAllParticipants()
Creates a ZIP file containing all file uploads for a given question in a 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.
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.
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)
redirectBackToParticipantsScreen()
finishTestPass($active_id, $obj_id)
outUserPassDetailsSetTableFilter()
Base Exception for all Exceptions relating to Modules/Test.
const PDF_OUTPUT_DOWNLOAD
static generatePDF($pdf_output, $output_mode, $filename=null)
const CONTEXT_INFO_SCREEN
const CONTEXT_DYN_TEST_PLAYER
const CONTEXT_PASS_OVERVIEW
Class ilTestPassFinishTasks.
Service GUI class for tests.
getGradingMessageBuilder($activeId)
getObjectiveOrientedContainer()
buildPassOverviewTableGUI($targetGUI, $targetCmd='')
populatePassFinishDate($tpl, $passFinishDate)
getResultsSignature()
Returns HTML code for a signature field.
getCommand($cmd)
Retrieves the ilCtrl command.
getQuestionResultForTestUsers($question_id, $test_id)
Creates a HTML representation for the results of a given question in a test.
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.
buildUserTestResultsToolbarGUI()
setContextResultPresentation($contextResultPresentation)
buildQuestionRelatedObjectivesList(ilLOTestQuestionAdapter $objectivesAdapter, ilTestQuestionSequence $testSequence)
getPassOverviewTableData(ilTestSession $testSession, $passes, $withResults)
isGradingMessageRequired()
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
$GLOBALS['loaded']
Global hash that tracks already loaded includes.
Interface ilObjFileHandlingQuestionType.
if(!is_array($argv)) $options