Public Member Functions | Data Fields

ilTestEvaluationGUI Class Reference

Output class for assessment test evaluation. More...

Public Member Functions

 ilTestEvaluationGUI ($a_object)
 ilTestEvaluationGUI constructor
executeCommand ()
 execute command
 getCommand ($cmd)
 Retrieves the ilCtrl command.
 outStatSelectedSearchResults ()
 Creates the output for the search results when trying to add users/groups to a test evaluation.
 addFoundUsersToEval ()
 Adds found users to the selected users table.
 removeSelectedUser ()
 Removes selected users from the selected users table.
 removeSelectedGroup ()
 Removes selected users from the selected users table.
 addFoundGroupsToEval ()
 Removes selected groups from the selected groups table.
 addFoundRolesToEval ()
 Adds selected role to the evaluation.
 searchForEvaluation ()
 Called when the search button is pressed in the evaluation user selection.
 evalStatSelected ($search=0)
 Creates the ouput of the selected users/groups for the test evaluation.
 outEvalSearchResultTable ($a_type, $id_array, $block_result, $block_row, $title_text, $buttons)
 Creates the search output for the user/group search form.
 evaluationDetail ()
 Creates the output of a users text answer.
 eval_stat ()
 saveEvaluationSettings ()
 getEvaluationQuestionId ($question_id, $original_id="")
 Returns the ID of a question for evaluation purposes.
 evalSelectedUsers ($all_users=0)
 evalAllUsers ()
 eval_a ()
 evalUserDetail ()
 Output of the learner overview for a varying random test.
 passDetails ()
 Output of the learners view of an existing test.
 setResultsTabs ()
 set the tabs for the results overview ("results" in the repository)

Data Fields

 $object
 $lng
 $tpl
 $ctrl
 $ilias
 $tree
 $ref_id

Detailed Description

Output class for assessment test evaluation.

The ilTestEvaluationGUI class creates the output for the ilObjTestGUI class when authors evaluate a test. This saves some heap space because the ilObjTestGUI class will be much smaller then

Author:
Helmut Schottmüller <helmut.schottmueller@mac.com>
Version:
Id:
class.ilTestEvaluationGUI.php 15249 2007-11-10 20:47:48Z hschottm

class.ilTestEvaluationGUI.php assessment

Definition at line 38 of file class.ilTestEvaluationGUI.php.


Member Function Documentation

ilTestEvaluationGUI::addFoundGroupsToEval (  ) 

Removes selected groups from the selected groups table.

Removes selected groups from the selected groups table

public

Definition at line 265 of file class.ilTestEvaluationGUI.php.

References $_POST, and evalStatSelected().

        {
                global $ilUser;
                if (is_array($_POST["group_select"]))
                {
                        foreach ($_POST["group_select"] as $group_id)
                        {
                                $this->object->addSelectedGroup($group_id, $ilUser->id);
                        }
                }
                $this->evalStatSelected();
        }

Here is the call graph for this function:

ilTestEvaluationGUI::addFoundRolesToEval (  ) 

Adds selected role to the evaluation.

Adds selected role to the evaluation

public

Definition at line 285 of file class.ilTestEvaluationGUI.php.

References $_POST, $role_id, and evalStatSelected().

        {
                global $ilUser;
                if (is_array($_POST["role_select"]))
                {
                        foreach ($_POST["role_select"] as $role_id)
                        {
                                $this->object->addSelectedRole($role_id, $ilUser->id);
                        }
                }
                $this->evalStatSelected();
        }

Here is the call graph for this function:

ilTestEvaluationGUI::addFoundUsersToEval (  ) 

Adds found users to the selected users table.

Adds found users to the selected users table

public

Definition at line 205 of file class.ilTestEvaluationGUI.php.

References $_POST, $user_id, and evalStatSelected().

        {
                global $ilUser;
                if (is_array($_POST["user_select"]))
                {
                        foreach ($_POST["user_select"] as $user_id)
                        {
                                $this->object->addSelectedUser($user_id, $ilUser->id);
                        }
                }
                $this->evalStatSelected();
        }

Here is the call graph for this function:

ilTestEvaluationGUI::eval_a (  ) 

Definition at line 1429 of file class.ilTestEvaluationGUI.php.

References $_GET, $counter, $data, $table, sendInfo(), and setResultsTabs().

        {
                global $ilAccess;
                if (!$ilAccess->checkAccess("write", "", $this->ref_id)) 
                {
                        // allow only evaluation access
                        sendInfo($this->lng->txt("cannot_edit_test"), true);
                        $this->ctrl->redirectByClass("ilobjtestgui", "infoScreen");
                }
                
                $this->setResultsTabs();
                $data =& $this->object->getCompleteEvaluationData();
                $color_class = array("tblrow1", "tblrow2");
                $counter = 0;
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_eval_anonymous_aggregation.html", TRUE);
                if (count($data->getParticipants())) 
                {
                        $this->tpl->setCurrentBlock("row");
                        $this->tpl->setVariable("TXT_RESULT", $this->lng->txt("tst_eval_total_persons"));
                        $this->tpl->setVariable("TXT_VALUE", count($data->getParticipants()));
                        $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
                        $counter++;
                        $this->tpl->parseCurrentBlock();
                        $this->tpl->setCurrentBlock("row");
                        $this->tpl->setVariable("TXT_RESULT", $this->lng->txt("tst_eval_total_finished"));
                        $total_finished = $this->object->evalTotalFinished();
                        $this->tpl->setVariable("TXT_VALUE", $total_finished);
                        $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
                        $counter++;
                        $this->tpl->parseCurrentBlock();
                        $this->tpl->setCurrentBlock("row");
                        $average_time = $this->object->evalTotalStartedAverageTime();
                        $diff_seconds = $average_time;
                        $diff_hours    = floor($diff_seconds/3600);
                        $diff_seconds -= $diff_hours   * 3600;
                        $diff_minutes  = floor($diff_seconds/60);
                        $diff_seconds -= $diff_minutes * 60;
                        $this->tpl->setVariable("TXT_RESULT", $this->lng->txt("tst_eval_total_finished_average_time"));
                        $this->tpl->setVariable("TXT_VALUE", sprintf("%02d:%02d:%02d", $diff_hours, $diff_minutes, $diff_seconds));
                        $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
                        $counter++;
                        $total_passed = 0;
                        $total_passed_reached = 0;
                        $total_passed_max = 0;
                        $total_passed_time = 0;
                        foreach ($data->getParticipants() as $userdata)
                        {
                                if ($userdata->getPassed()) 
                                {
                                        $total_passed++;
                                        $total_passed_reached += $userdata->getReached();
                                        $total_passed_max += $userdata->getMaxpoints();
                                        $total_passed_time += $userdata->getTimeOfWork();
                                }
                        }
                        $average_passed_reached = $total_passed ? $total_passed_reached / $total_passed : 0;
                        $average_passed_max = $total_passed ? $total_passed_max / $total_passed : 0;
                        $average_passed_time = $total_passed ? $total_passed_time / $total_passed : 0;
                        $this->tpl->parseCurrentBlock();
                        $this->tpl->setCurrentBlock("row");
                        $this->tpl->setVariable("TXT_RESULT", $this->lng->txt("tst_eval_total_passed"));
                        $this->tpl->setVariable("TXT_VALUE", $total_passed);
                        $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
                        $counter++;
                        $this->tpl->parseCurrentBlock();
                        $this->tpl->setCurrentBlock("row");
                        $this->tpl->setVariable("TXT_RESULT", $this->lng->txt("tst_eval_total_passed_average_points"));
                        $this->tpl->setVariable("TXT_VALUE", sprintf("%2.2f", $average_passed_reached) . " " . strtolower($this->lng->txt("of")) . " " . sprintf("%2.2f", $average_passed_max));
                        $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
                        $counter++;
                        $this->tpl->parseCurrentBlock();
                        $this->tpl->setCurrentBlock("row");
                        $this->tpl->setVariable("TXT_RESULT", $this->lng->txt("tst_eval_total_passed_average_time"));
                        $average_time = $average_passed_time;
                        $diff_seconds = $average_time;
                        $diff_hours    = floor($diff_seconds/3600);
                        $diff_seconds -= $diff_hours   * 3600;
                        $diff_minutes  = floor($diff_seconds/60);
                        $diff_seconds -= $diff_minutes * 60;
                        $this->tpl->setVariable("TXT_VALUE", sprintf("%02d:%02d:%02d", $diff_hours, $diff_minutes, $diff_seconds));
                        $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
                        $counter++;
                        $this->tpl->parseCurrentBlock();
                } 
                else 
                {
                        $this->tpl->setCurrentBlock("emptyrow");
                        $this->tpl->setVariable("TXT_NO_ANONYMOUS_AGGREGATION", $this->lng->txt("tst_eval_no_anonymous_aggregation"));
                        $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
                        $this->tpl->parseCurrentBlock();
                }
                
                global $ilUser;
                $maxentries = $ilUser->getPref("hits_per_page");
                if ($maxentries < 1)
                {
                        $maxentries = 9999;
                }

                $offset = ($_GET["offset"]) ? $_GET["offset"] : 0;
                $orderdirection = ($_GET["sort_order"]) ? $_GET["sort_order"] : "asc";
                $defaultOrderColumn = "name";
                if ($this->object->getTestType() == TYPE_SELF_ASSESSMENT) $defaultOrderColumn = "counter";
                $ordercolumn = ($_GET["sort_by"]) ? $_GET["sort_by"] : $defaultOrderColumn;

                $counter = 0;
                include_once("./classes/class.ilTableGUI.php");
                $table = new ilTableGUI(0, FALSE);
                $table->setTitle($this->lng->txt("average_reached_points"));
                $table->setHeaderNames(array($this->lng->txt("question_title"), $this->lng->txt("points"), $this->lng->txt("percentage"), $this->lng->txt("number_of_answers")));

                $table->enable("auto_sort");
                $table->enable("sort");
                $table->setLimit($maxentries);

                $header_params = $this->ctrl->getParameterArray($this, "eval_a");
                $header_vars = array("question_title", "points", "percentage", "number_of_answers");
                $table->setHeaderVars($header_vars, $header_params);
                $table->setFooter("tblfooter", $this->lng->txt("previous"), $this->lng->txt("next"));

                $table->setOffset($offset);
                $table->setMaxCount(count($data->getQuestionTitles()));
                $table->setOrderColumn($ordercolumn);
                $table->setOrderDirection($orderdirection);
                $rows = array();
                foreach ($data->getQuestionTitles() as $question_id => $question_title)
                {
                        $answered = 0;
                        $reached = 0;
                        $max = 0;
                        foreach ($data->getParticipants() as $userdata)
                        {
                                for ($i = 0; $i <= $userdata->getLastPass(); $i++)
                                {
                                        $userpass =& $userdata->getPass($i);
                                        if (is_object($userpass))
                                        {
                                                $question =& $userpass->getAnsweredQuestionByQuestionId($question_id);
                                                if (is_array($question))
                                                {
                                                        $answered++;
                                                        $reached += $question["reached"];
                                                        $max += $question["points"];
                                                }
                                        }
                                }
                        }
                        $percent = $max ? $reached/$max * 100.0 : 0;
                        $counter++;
                        array_push($rows, 
                                array(
                                                $question_title, 
                                                sprintf("%.2f", $answered ? $reached / $answered : 0) . " " . strtolower($this->lng->txt("of")) . " " . sprintf("%.2f", $answered ? $max / $answered : 0),
                                                sprintf("%.2f", $percent) . "%",
                                                $answered
                                )
                        );
                }
                $table->setData($rows);
                $tableoutput = $table->render();
                $this->tpl->setVariable("TBL_AVG_REACHED", $tableoutput);

                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("TXT_ANON_EVAL", $this->lng->txt("tst_anon_eval"));
                $this->tpl->setVariable("TXT_RESULT", $this->lng->txt("result"));
                $this->tpl->setVariable("TXT_VALUE", $this->lng->txt("value"));
                $this->tpl->setVariable("TXT_AVG_REACHED", $this->lng->txt("average_reached_points"));
                $this->tpl->setVariable("TXT_QUESTIONTITLE", $this->lng->txt("question_title"));
                $this->tpl->setVariable("TXT_POINTS", $this->lng->txt("points"));
                $this->tpl->setVariable("TXT_ANSWERS", $this->lng->txt("number_of_answers"));
                $this->tpl->setVariable("TXT_PERCENT", $this->lng->txt("percentage"));
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

ilTestEvaluationGUI::eval_stat (  ) 

Definition at line 584 of file class.ilTestEvaluationGUI.php.

References $key, sendInfo(), and setResultsTabs().

        {
                global $ilAccess;
                if (!$ilAccess->checkAccess("write", "", $this->ref_id)) 
                {
                        // allow only evaluation access
                        sendInfo($this->lng->txt("cannot_edit_test"), true);
                        $this->ctrl->redirectByClass("ilobjtestgui", "infoScreen");
                }

                $this->ctrl->setCmdClass(get_class($this));
                $this->ctrl->setCmd("eval_stat");
                $this->setResultsTabs();
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_eval_statistical_evaluation_selection.html", true);
                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
                $this->tpl->setVariable("CMD_EVAL", "evalAllUsers");
                $this->tpl->setVariable("TXT_STAT_USERS_INTRO", $this->lng->txt("tst_stat_users_intro"));
                $this->tpl->setVariable("TXT_STAT_ALL_USERS", $this->lng->txt("tst_stat_all_users"));
                $this->tpl->setVariable("TXT_QWORKEDTHROUGH", $this->lng->txt("tst_stat_result_qworkedthrough"));
                $this->tpl->setVariable("TXT_PWORKEDTHROUGH", $this->lng->txt("tst_stat_result_pworkedthrough"));
                $this->tpl->setVariable("TXT_TIMEOFWORK", $this->lng->txt("tst_stat_result_timeofwork"));
                $this->tpl->setVariable("TXT_ATIMEOFWORK", $this->lng->txt("tst_stat_result_atimeofwork"));
                $this->tpl->setVariable("TXT_FIRSTVISIT", $this->lng->txt("tst_stat_result_firstvisit"));
                $this->tpl->setVariable("TXT_LASTVISIT", $this->lng->txt("tst_stat_result_lastvisit"));
                $this->tpl->setVariable("TXT_RESULTSPOINTS", $this->lng->txt("tst_stat_result_resultspoints"));
                $this->tpl->setVariable("TXT_RESULTSMARKS", $this->lng->txt("tst_stat_result_resultsmarks"));
                $this->tpl->setVariable("TXT_DISTANCEMEDIAN", $this->lng->txt("tst_stat_result_distancemedian"));
                $this->tpl->setVariable("TXT_SPECIFICATION", $this->lng->txt("tst_stat_result_specification"));
                $user_settings = $this->object->evalLoadStatisticalSettings($ilUser->id);
                foreach ($user_settings as $key => $value) {
                        if ($value == 1) {
                                $user_settings[$key] = " checked=\"checked\"";
                        } else {
                                $user_settings[$key] = "";
                        }
                }
                $this->tpl->setVariable("CHECKED_QWORKEDTHROUGH", $user_settings["qworkedthrough"]);
                $this->tpl->setVariable("CHECKED_PWORKEDTHROUGH", $user_settings["pworkedthrough"]);
                $this->tpl->setVariable("CHECKED_TIMEOFWORK", $user_settings["timeofwork"]);
                $this->tpl->setVariable("CHECKED_ATIMEOFWORK", $user_settings["atimeofwork"]);
                $this->tpl->setVariable("CHECKED_FIRSTVISIT", $user_settings["firstvisit"]);
                $this->tpl->setVariable("CHECKED_LASTVISIT", $user_settings["lastvisit"]);
                $this->tpl->setVariable("CHECKED_RESULTSPOINTS", $user_settings["resultspoints"]);
                $this->tpl->setVariable("CHECKED_RESULTSMARKS", $user_settings["resultsmarks"]);
                $this->tpl->setVariable("CHECKED_DISTANCEMEDIAN", $user_settings["distancemedian"]);
                $this->tpl->setVariable("TXT_STATISTICAL_EVALUATION", $this->lng->txt("tst_statistical_evaluation"));
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

ilTestEvaluationGUI::evalAllUsers (  ) 

Definition at line 1424 of file class.ilTestEvaluationGUI.php.

References evalSelectedUsers().

        {
                $this->evalSelectedUsers(1);
        }

Here is the call graph for this function:

ilTestEvaluationGUI::evalSelectedUsers ( all_users = 0  ) 

Definition at line 670 of file class.ilTestEvaluationGUI.php.

References $_GET, $_POST, $counter, $data, $key, $legend, $row, $separator, $title, ilExcelUtils::_convert_text(), assTextQuestion::_setReachedPoints(), ilUtil::deliverData(), ilUtil::deliverFile(), ilUtil::excelTime(), exit, ilUtil::getASCIIFilename(), ilUtil::ilTempnam(), ilUtil::prepareFormOutput(), saveEvaluationSettings(), sendInfo(), and setResultsTabs().

Referenced by evalAllUsers().

        {
                global $ilUser;

                if ($all_users)
                {
                        $this->ctrl->setParameter($this, "etype", "all");
                }
                else
                {
                        $this->ctrl->setParameter($this, "etype", "selected");
                }
                $this->tpl->setCurrentBlock("generic_css");
                $this->tpl->setVariable("LOCATION_GENERIC_STYLESHEET", "./assessment/templates/default/test_print.css");
                $this->tpl->setVariable("MEDIA_GENERIC_STYLESHEET", "print");
                $this->tpl->parseCurrentBlock();
                $savetextanswers = 0;
                $textanswers = 0;
                $export = 0;
                $filter = 0;
                $filtertext = "";
                $passedonly = FALSE;
                if (strcmp($_POST["cmd"][$this->ctrl->getCmd()], $this->lng->txt("set_filter")) == 0)
                {
                        $filter = 1;
                        $filtertext = $_POST["userfilter"];
                        if ($_POST["passedonly"] == 1)
                        {
                                $passedonly = TRUE;
                        }
                }
                else
                {
                        if (array_key_exists("g_userfilter", $_GET))
                        {
                                $filtertext = $_GET["userfilter"];
                        }
                        if (array_key_exists("g_passedonly", $_GET))
                        {
                                if ($_GET["g_passedonly"] == 1)
                                {
                                        $passedonly = TRUE;
                                }
                        }
                }
                if (strcmp($_POST["cmd"][$this->ctrl->getCmd()], $this->lng->txt("reset_filter")) == 0)
                {
                        $filter = 1;
                        $filtertext = "";
                        $passedonly = FALSE;
                }
                if (strlen($filtertext))
                {
                        $this->ctrl->setParameter($this, "g_userfilter", $filtertext);
                }
                if ($passedonly)
                {
                        $this->ctrl->setParameter($this, "g_passedonly", "1");
                }
                if (strcmp($_POST["cmd"][$this->ctrl->getCmd()], $this->lng->txt("export")) == 0)
                {
                        $export = 1;
                }
                if (strcmp($_POST["cmd"][$this->ctrl->getCmd()], $this->lng->txt("save_text_answer_points")) == 0)
                {

                        $savetextanswers = 1;
                        foreach ($_POST as $key => $value)
                        {
                                if (preg_match("/(\d+)_(\d+)_(\d+)/", $key, $matches))
                                {
                                        include_once "./assessment/classes/class.assTextQuestion.php";
                                        assTextQuestion::_setReachedPoints($matches[1], $matches[2], $value, $matches[3]);
                                }
                        }
                        sendInfo($this->lng->txt("text_answers_saved"));
                }
                if ((count($_POST) == 0) || ($export) || ($filter) || ($savetextanswers) || is_numeric($_GET["active_id"]))
                {
                        $user_settings = $this->object->evalLoadStatisticalSettings($ilUser->getId());
                        $eval_statistical_settings = array(
                                "resultspoints" => $user_settings["resultspoints"],
                                "resultsmarks" => $user_settings["resultsmarks"],
                                "qworkedthrough" => $user_settings["qworkedthrough"],
                                "pworkedthrough" => $user_settings["pworkedthrough"],
                                "timeofwork" => $user_settings["timeofwork"],
                                "atimeofwork" => $user_settings["atimeofwork"],
                                "firstvisit" => $user_settings["firstvisit"],
                                "lastvisit" => $user_settings["lastvisit"],
                                "distancemedian" => $user_settings["distancemedian"]
                        );
                }
                else
                {
                        $eval_statistical_settings = $this->saveEvaluationSettings();
                }
//              $this->ctrl->setCmd("evalSelectedUsers");
                $this->setResultsTabs();
                $legend = array();
                $legendquestions = array();
                $titlerow = array();
                // build title columns
                $sortimage = "";
                $sortparameter = "asc";
                if (strcmp($_GET["sortname"], "asc") == 0 || strcmp($_GET["sortname"], "") == 0)
                {
                        $sortimage = " <img src=\"".ilUtil::getImagePath("asc_order.png", true)."\" alt=\"" . $this->lng->txt("ascending_order") . "\" />";
                        $sortparameter = "asc";
                        $this->ctrl->setParameter($this, "sortname", "asc");
                }
                else
                {
                        $sortimage = " <img src=\"".ilUtil::getImagePath("desc_order.png", true)."\" alt=\"" . $this->lng->txt("descending_order") . "\" />";
                        $sortparameter = "desc";
                        $this->ctrl->setParameter($this, "sortname", "desc");
                }
                $name_column = $this->lng->txt("name");
                if ($this->object->getTestType() == TYPE_SELF_ASSESSMENT)
                {
                        $name_column = $this->lng->txt("counter");
                }
                array_push($titlerow, $name_column);
                
                $char = "A";
                if ($eval_statistical_settings["resultspoints"]) {
                        array_push($titlerow, $char);
                        $legend[$char] = $this->lng->txt("tst_stat_result_resultspoints");
                        $char++;
                }
                if ($eval_statistical_settings["resultsmarks"]) {
                        array_push($titlerow, $char);
                        $legend[$char] = $this->lng->txt("tst_stat_result_resultsmarks");
                        $char++;
                        
                        if ($this->object->ects_output)
                        {
                                array_push($titlerow, $char);
                                $legend[$char] = $this->lng->txt("ects_grade");
                                $char++;
                        }
                }
                if ($eval_statistical_settings["qworkedthrough"]) {
                        array_push($titlerow, $char);
                        $legend[$char] = $this->lng->txt("tst_stat_result_qworkedthrough");
                        $char++;
                }
                if ($eval_statistical_settings["pworkedthrough"]) {
                        array_push($titlerow, $char);
                        $legend[$char] = $this->lng->txt("tst_stat_result_pworkedthrough");
                        $char++;
                }
                if ($eval_statistical_settings["timeofwork"]) {
                        array_push($titlerow, $char);
                        $legend[$char] = $this->lng->txt("tst_stat_result_timeofwork");
                        $char++;
                }
                if ($eval_statistical_settings["atimeofwork"]) {
                        array_push($titlerow, $char);
                        $legend[$char] = $this->lng->txt("tst_stat_result_atimeofwork");
                        $char++;
                }
                if ($eval_statistical_settings["firstvisit"]) {
                        array_push($titlerow, $char);
                        $legend[$char] = $this->lng->txt("tst_stat_result_firstvisit");
                        $char++;
                }
                if ($eval_statistical_settings["lastvisit"]) {
                        array_push($titlerow, $char);
                        $legend[$char] = $this->lng->txt("tst_stat_result_lastvisit");
                        $char++;
                }
                if ($eval_statistical_settings["distancemedian"]) {
                        array_push($titlerow, $char);
                        $legend[$char] = $this->lng->txt("tst_stat_result_mark_median");
                        $char++;
                        array_push($titlerow, $char);
                        $legend[$char] = $this->lng->txt("tst_stat_result_rank_participant");
                        $char++;
                        array_push($titlerow, $char);
                        $legend[$char] = $this->lng->txt("tst_stat_result_rank_median");
                        $char++;
                        array_push($titlerow, $char);
                        $legend[$char] = $this->lng->txt("tst_stat_result_total_participants");
                        $char++;
                        array_push($titlerow, $char);
                        $legend[$char] = $this->lng->txt("tst_stat_result_median");
                        $char++;
                }
                
                $titlerow_without_questions = $titlerow;
                $data =& $this->object->getCompleteEvaluationData();
                $sortorder = $_GET["sortname"] ? $_GET["sortname"] : "asc";
                $data->sortParticipants($sortorder);
                if (!$this->object->isRandomTest())
                {
                        $questions =& $this->object->getTestQuestions();
                        $question_title_counter = 1;
                        foreach ($questions as $question)
                        {
                                $qt = $data->getQuestionTitle($question["original_id"]);
                                $qt = preg_replace("/<.*?>/", "", $qt);
                                array_push($titlerow, $this->lng->txt("question_short") . " " . $question_title_counter);
                                $legend[$this->lng->txt("question_short") . " " . $question_title_counter] = $question["original_id"];
                                $legendquestions[$question["original_id"]] = $qt;
                                $question_title_counter++;
                        }
                }
                else
                {
                        for ($i = 1; $i <= $this->object->getQuestionCount(); $i++)
                        {
                                array_push($titlerow, "&nbsp;");
                        }
                }
                $selected_users = array();
                if ($all_users != 1) 
                {
                        $selected_users =& $this->object->getEvaluationParticipants($ilUser->getId(), $sortparameter);
                }

                $row = 0;
                $question_legend = false;

                $evalcounter = 1;
                $question_titles = array();
                $question_title_counter = 1;
                $eval_complete = array();
                foreach ($data->getParticipants() as $active_id => $userdata)
                {
                        if (($all_users == 1) || (($all_users != 1) && (array_key_exists($active_id, $selected_users))))
                        {
                                $remove = FALSE;
                                if (strlen($filtertext))
                                {
                                        $username = $value["name"];
                                        if (!@preg_match("/$filtertext/i", $userdata->getName()))
                                        {
                                                $remove = TRUE;
                                        }
                                }
                                if ($passedonly)
                                {
                                        if ($userdata->getPassed() == FALSE)
                                        {
                                                $remove = TRUE;
                                        }
                                }
                                if (!$remove)
                                {
                                        $titlerow_user = array();
                                        $pass = 0;
                                        if ($this->object->getPassScoring() == SCORE_BEST_PASS)
                                        {
                                                $pass = $userdata->getBestPass();
                                        }
                                        else
                                        {
                                                $pass = $userdata->getLastPass();
                                        }
                                        if ($this->object->isRandomTest())
                                        {
                                                $titlerow_user = $titlerow_without_questions;
                                                $i = 1;
                                                $questions =& $userdata->getQuestions($pass);
                                                if (!is_array($questions)) $questions =& $userdata->getQuestions(0);
                                                foreach ($questions as $question)
                                                {
                                                        $qt = $data->getQuestionTitle($question["id"]);
                                                        $qt = preg_replace("/<.*?>/", "", $qt);
                                                        if (!array_key_exists($question["id"], $legendquestions))
                                                        {
                                                                array_push($titlerow_user, $this->lng->txt("question_short") . " " . $question_title_counter);
                                                                $legend[$this->lng->txt("question_short") . " " . $question_title_counter] = $question["id"];
                                                                $legendquestions[$question["id"]] = $qt;
                                                                $question_title_counter++;
                                                        }
                                                        else
                                                        {
                                                                $arraykey = array_search($question["id"], $legend);
                                                                array_push($titlerow_user, $arraykey);
                                                        }
                                                }
                                        }

                                        $evalrow = array();
                                        $username = $userdata->getName();
                                        array_push($evalrow, array(
                                                "html" => "<a href=\"".$this->ctrl->getLinkTargetByClass(get_class($this), "evalUserDetail")."&active_id=$active_id\">$username</a>",
                                                "xls"  => $username,
                                                "csv"  => $username
                                        ));
                                        if ($eval_statistical_settings["resultspoints"]) 
                                        {
                                                array_push($evalrow, array(
                                                        "html" => $userdata->getReached()." ".strtolower($this->lng->txt("of"))." ". $userdata->getMaxpoints(),
                                                        "xls"  => $userdata->getReached(),
                                                        "csv"  => $userdata->getReached()
                                                ));
                                        }
                                        if ($eval_statistical_settings["resultsmarks"]) 
                                        {
                                                array_push($evalrow, array(
                                                        "html" => $userdata->getMark(),
                                                        "xls"  => $userdata->getMark(),
                                                        "csv"  => $userdata->getMark()
                                                ));

                                                if ($this->object->ects_output)
                                                {
                                                        array_push($evalrow, array(
                                                                "html" => $userdata->getECTSMark(),
                                                                "xls"  => $userdata->getECTSMark(),
                                                                "csv"  => $userdata->getECTSMark()
                                                        ));
                                                }
                                        }
                                        if ($eval_statistical_settings["qworkedthrough"]) 
                                        {
                                                array_push($evalrow, array(
                                                        "html" => $userdata->getQuestionsWorkedThrough(),
                                                        "xls"  => $userdata->getQuestionsWorkedThrough(),
                                                        "csv"  => $userdata->getQuestionsWorkedThrough()
                                                ));
                                        }
                                        if ($eval_statistical_settings["pworkedthrough"]) {
                                                array_push($evalrow, array(
                                                        "html" => sprintf("%2.2f", $userdata->getQuestionsWorkedThroughInPercent()) . " %",
                                                        "xls"  => $userdata->getQuestionsWorkedThroughInPercent() / 100.0,
                                                        "csv"  => $userdata->getQuestionsWorkedThroughInPercent() / 100.0,
                                                        "format" => "%"
                                                ));
                                        }
                                        if ($eval_statistical_settings["timeofwork"]) 
                                        {
                                                $time = $userdata->getTimeOfWork();
                                                $time_seconds = $time;
                                                $time_hours    = floor($time_seconds/3600);
                                                $time_seconds -= $time_hours   * 3600;
                                                $time_minutes  = floor($time_seconds/60);
                                                $time_seconds -= $time_minutes * 60;
                                                array_push($evalrow, array(
                                                        "html" => sprintf("%02d:%02d:%02d", $time_hours, $time_minutes, $time_seconds),
                                                        "xls"  => sprintf("%02d:%02d:%02d", $time_hours, $time_minutes, $time_seconds),
                                                        "csv"  => sprintf("%02d:%02d:%02d", $time_hours, $time_minutes, $time_seconds)
                                                ));
                                        }
                                        if ($eval_statistical_settings["atimeofwork"]) 
                                        {
                                                $time = $userdata->getQuestionsWorkedThrough() ? $userdata->getTimeOfWork() / $userdata->getQuestionsWorkedThrough() : 0;
                                                $time_seconds = $time;
                                                $time_hours    = floor($time_seconds/3600);
                                                $time_seconds -= $time_hours   * 3600;
                                                $time_minutes  = floor($time_seconds/60);
                                                $time_seconds -= $time_minutes * 60;
                                                array_push($evalrow, array(
                                                        "html" => sprintf("%02d:%02d:%02d", $time_hours, $time_minutes, $time_seconds),
                                                        "xls"  => sprintf("%02d:%02d:%02d", $time_hours, $time_minutes, $time_seconds),
                                                        "csv"  => sprintf("%02d:%02d:%02d", $time_hours, $time_minutes, $time_seconds)
                                                ));
                                        }
                                        if ($eval_statistical_settings["firstvisit"]) 
                                        {
                                                $fv = getdate($userdata->getFirstVisit());
                                                array_push($evalrow, array(
                                                        "html" => date($this->lng->text["lang_dateformat"] . " " . $this->lng->text["lang_timeformat"], $userdata->getFirstVisit()),
                                                        "xls"  => ilUtil::excelTime($fv["year"],$fv["mon"], $fv["mday"],$fv["hours"],$fv["minutes"],$fv["seconds"]),
                                                        "csv"  => date($this->lng->text["lang_dateformat"] . " " . $this->lng->text["lang_timeformat"], $userdata->getFirstVisit()),
                                                        "format" => "t"
                                                ));
                                        }
                                        if ($eval_statistical_settings["lastvisit"]) 
                                        {
                                                $lv = getdate($userdata->getLastVisit());
                                                array_push($evalrow, array(
                                                        "html" => date($this->lng->text["lang_dateformat"] . " " . $this->lng->text["lang_timeformat"], $userdata->getLastVisit()),
                                                        "xls"  => ilUtil::excelTime($lv["year"],$lv["mon"],$lv["mday"],$lv["hours"],$lv["minutes"],$lv["seconds"]),
                                                        "csv"  => date($this->lng->text["lang_dateformat"] . " " . $this->lng->text["lang_timeformat"], $userdata->getLastVisit()),
                                                        "format" => "t"
                                                ));
                                        }

                                        if ($eval_statistical_settings["distancemedian"]) 
                                        {
                                                $stat =& $data->getStatistics();
                                                $teststat =& $stat->getStatistics();
                                                $median = $teststat->median();
                                                $pct = $userdata->getMaxpoints() ? $median / $userdata->getMaxpoints() * 100.0 : 0;
                                                $mark = $this->object->mark_schema->getMatchingMark($pct);
                                                $mark_short_name = "";
                                                if ($mark)
                                                {
                                                        $mark_short_name = $mark->getShortName();
                                                }
                                                array_push($evalrow, array(
                                                        "html" => $mark_short_name,
                                                        "xls"  => $mark_short_name,
                                                        "csv"  => $mark_short_name
                                                ));
                                                $rank_participant = $teststat->rank($userdata->getReached());
                                                array_push($evalrow, array(
                                                        "html" => $rank_participant,
                                                        "xls"  => $rank_participant,
                                                        "csv"  => $rank_participant
                                                ));
                                                $rank_median = $teststat->rank_median();
                                                array_push($evalrow, array(
                                                        "html" => $rank_median,
                                                        "xls"  => $rank_median,
                                                        "csv"  => $rank_median
                                                ));
                                                $total_participants = $teststat->count();
                                                array_push($evalrow, array(
                                                        "html" => $total_participants,
                                                        "xls"  => $total_participants,
                                                        "csv"  => $total_participants
                                                ));
                                                array_push($evalrow, array(
                                                        "html" => $median,
                                                        "xls"  => $median,
                                                        "csv"  => $median
                                                ));
                                        }

                                        $questions =& $userdata->getQuestions($pass);
                                        if (!is_array($questions)) $questions =& $userdata->getQuestions(0);
                                        foreach ($questions as $question)
                                        {
                                                $qshort = "";
                                                $qt = "";
                                                if ($this->object->isRandomTest())
                                                {
                                                        $qt = $question["title"];
                                                        $qt = preg_replace("/<.*?>/", "", $qt);
                                                        $arrkey = array_search($question["id"], $legend);
                                                        if ($arrkey)
                                                        {
                                                                $qshort = "<span title=\"" . ilUtil::prepareFormOutput($qt) . "\">" . $arrkey . "</span>: ";
                                                        }
                                                }

                                                $htmloutput = "";
                                                if (strcmp($question["type"], "assTextQuestion") == 0)
                                                {
                                                        // Text question
                                                        $name = $active_id."_".$question["copy_id"]."_".$question["points"];
                                                        $questionpass =& $userdata->getPass($pass);
                                                        $answeredquestion =& $questionpass->getAnsweredQuestionByQuestionId($question["id"]);
                                                        $reached = 0;
                                                        if (is_array($answeredquestion))
                                                        {
                                                                $reached = $answeredquestion["reached"] ;
                                                        }
                                                        $htmloutput = $qshort . "<input type=\"text\" name=\"".$name."\" size=\"3\" value=\"".$reached."\" />".strtolower($this->lng->txt("of"))." ". $question["points"];
                                                        // Solution
                                                        $htmloutput .= " [<a href=\"".$this->ctrl->getLinkTargetByClass(get_class($this), "evaluationDetail") . "&userdetail=".$active_id."&answer=".$question["copy_id"]."\" target=\"popup\" onclick=\"";
                                                        $htmloutput .= "window.open('', 'popup', 'width=600, height=200, scrollbars=yes, toolbar=no, status=no, resizable=yes, menubar=no, location=no, directories=no')";
                                                        $htmloutput .= "\">".$this->lng->txt("tst_eval_show_answer")."</a>]";
                                                        $textanswers++;
                                                }
                                                else
                                                {
                                                        $questionpass =& $userdata->getPass($pass);
                                                        $answeredquestion =& $questionpass->getAnsweredQuestionByQuestionId($question["id"]);
                                                        $reached = 0;
                                                        if (is_array($answeredquestion))
                                                        {
                                                                $reached = $answeredquestion["reached"] ;
                                                        }
                                                        $htmloutput = $qshort . $reached . " " . strtolower($this->lng->txt("of")) . " " .  $question["points"];
                                                }

                                                array_push($evalrow, array(
                                                        "html" => $htmloutput,
                                                        "xls"  => $reached,
                                                        "csv"  => $reached
                                                ));
                                        }
                                        array_push($eval_complete, array("title" => $titlerow_user, "data" => $evalrow));
                                }
                        }
                }

                $noqcount = count($titlerow_without_questions);
                if ($export)
                {
                        $testname = ilUtil::getASCIIFilename(preg_replace("/\s/", "_", $this->object->getTitle()));
                        switch ($_POST["export_type"])
                        {
                                case TYPE_XLS_PC:
                                        // Creating a workbook
                                        include_once "./classes/class.ilExcelWriterAdapter.php";
                                        $excelfile = ilUtil::ilTempnam();
                                        $adapter = new ilExcelWriterAdapter($excelfile, FALSE);
                                        $workbook = $adapter->getWorkbook();
                                        $workbook->setVersion(8); // Use Excel97/2000 Format
                                        $format_bold =& $workbook->addFormat();
                                        $format_bold->setBold();
                                        $format_percent =& $workbook->addFormat();
                                        $format_percent->setNumFormat("0.00%");
                                        $format_datetime =& $workbook->addFormat();
                                        $format_datetime->setNumFormat("DD/MM/YYYY hh:mm:ss");
                                        $format_title =& $workbook->addFormat();
                                        $format_title->setBold();
                                        $format_title->setColor('black');
                                        $format_title->setPattern(1);
                                        $format_title->setFgColor('silver');
                                        $worksheet =& $workbook->addWorksheet();
                                        $row = 0;
                                        $col = 0;
                                        include_once "./classes/class.ilExcelUtils.php";
                                        if (!$this->object->isRandomTest())
                                        {
                                                foreach ($titlerow as $title)
                                                {
                                                        if (preg_match("/\d+/", $title))
                                                        {
                                                                $worksheet->write($row, $col, ilExcelUtils::_convert_text($legendquestions[$legend[$title]], $_POST["export_type"]), $format_title);
                                                        }
                                                        else if (strlen($title) == 1)
                                                        {
                                                                $worksheet->write($row, $col, ilExcelUtils::_convert_text($legend[$title], $_POST["export_type"]), $format_title);
                                                        }
                                                        else
                                                        {
                                                                $worksheet->write($row, $col, ilExcelUtils::_convert_text($title, $_POST["export_type"]), $format_title);
                                                        }
                                                        $col++;
                                                }
                                                $row++;
                                        }
                                        foreach ($eval_complete as $evalrow)
                                        {
                                                $col = 0;
                                                if ($this->object->isRandomTest())
                                                {
                                                        foreach ($evalrow["title"] as $key => $value)
                                                        {
                                                                if ($key == 0)
                                                                {
                                                                        $worksheet->write($row, $col, ilExcelUtils::_convert_text($value, $_POST["export_type"]), $format_title);
                                                                }
                                                                else
                                                                {
                                                                        if (preg_match("/\d+/", $value))
                                                                        {
                                                                                $worksheet->write($row, $col, ilExcelUtils::_convert_text($legendquestions[$legend[$value]], $_POST["export_type"]), $format_title);
                                                                        }
                                                                        else
                                                                        {
                                                                                $worksheet->write($row, $col, ilExcelUtils::_convert_text($legend[$value], $_POST["export_type"]), $format_title);
                                                                        }
                                                                }
                                                                $col++;
                                                        }
                                                        $row++;
                                                }
                                                $col = 0;
                                                foreach ($evalrow["data"] as $key => $value)
                                                {
                                                        switch ($value["format"])
                                                        {
                                                                case "%":
                                                                        $worksheet->write($row, $col, $value["xls"], $format_percent);
                                                                        break;
                                                                case "t":
                                                                        $worksheet->write($row, $col, $value["xls"], $format_datetime);
                                                                        break;
                                                                default:
                                                                        $worksheet->write($row, $col, ilExcelUtils::_convert_text($value["xls"], $_POST["export_type"]));
                                                                        break;
                                                        }
                                                        $col++;
                                                }
                                                $row++;
                                        }
                                        $workbook->close();
                                        ilUtil::deliverFile($excelfile, "$testname.xls", "application/vnd.ms-excel");
                                        exit;
                                case TYPE_SPSS:
                                        $csv = "";
                                        $separator = ";";
                                        if (!$this->object->isRandomTest())
                                        {
                                                $titlerow =& $this->object->processCSVRow($titlerow, TRUE, $separator);
                                                $csv .= join($titlerow, $separator) . "\n";
                                        }
                                        foreach ($eval_complete as $evalrow)
                                        {
                                                $csvrow = array();
                                                foreach ($evalrow["data"] as $dataarray)
                                                {
                                                        array_push($csvrow, $dataarray["csv"]);
                                                }
                                                if ($this->object->isRandomTest())
                                                {
                                                        $evalrow["title"] =& $this->object->processCSVRow($evalrow["title"], TRUE, $separator);
                                                        $csv .= join($evalrow["title"], $separator) . "\n";
                                                }
                                                $csvarr = array();
                                                $evalrow["data"] =& $this->object->processCSVRow($csvrow, TRUE, $separator);
                                                $csv .= join($evalrow["data"], $separator) . "\n";
                                        }
                                        ilUtil::deliverData($csv, "$testname.csv");
                                        break;
                        }
                        exit;
                }
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_eval_statistical_evaluation.html", true);
                $color_class = array("tblrow1", "tblrow2");
                foreach ($legend as $short => $long)
                {
                        $this->tpl->setCurrentBlock("legendrow");
                        $this->tpl->setVariable("TXT_SYMBOL", $short);
                        if (preg_match("/\d+/", $short))
                        {
                                $this->tpl->setVariable("TXT_MEANING", $legendquestions[$long]);
                        }
                        else
                        {
                                $this->tpl->setVariable("TXT_MEANING", $long);
                        }
                        $this->tpl->parseCurrentBlock();
                }
                $this->tpl->setCurrentBlock("legend");
                $this->tpl->setVariable("TXT_LEGEND", $this->lng->txt("legend"));
                $this->tpl->setVariable("TXT_LEGEND_LINK", $this->lng->txt("eval_legend_link"));
                $this->tpl->setVariable("TXT_SYMBOL", $this->lng->txt("symbol"));
                $this->tpl->setVariable("TXT_MEANING", $this->lng->txt("meaning"));
                $this->tpl->parseCurrentBlock();

                $noq = $noqcount;               
                foreach ($titlerow as $title)
                {
                        if (strcmp($title, $this->lng->txt("name")) == 0)
                        {
                                if (strcmp($sortparameter, "asc") == 0)
                                {
                                        $this->ctrl->setParameter($this, "sortname", "desc");
                                }
                                else
                                {
                                        $this->ctrl->setParameter($this, "sortname", "asc");
                                }
                                if ($all_users)
                                {
                                        $title = "<a href=\"".$this->ctrl->getLinkTarget($this, "evalAllUsers")."\">" . $this->lng->txt("name") . "</a>";
                                        $title .= $sortimage;
                                }
                                else
                                {
                                        $title = "<a href=\"".$this->ctrl->getLinkTarget($this, "evalSelectedUsers")."\">" . $this->lng->txt("name") . "</a>";
                                        $title .= $sortimage;
                                }
                                $this->ctrl->setParameter($this, "sortname", $sortparameter);
                        }
                        if ($noq > 0)
                        {
                                $this->tpl->setCurrentBlock("titlecol");
                                $this->tpl->setVariable("TXT_TITLE", "<div title=\"" . ilUtil::prepareFormOutput($legendquestions[$legend[$title]]) . "\">" . $title . "</div>");
                                $this->tpl->parseCurrentBlock();
                                if ($noq == $noqcount)
                                {
                                        $this->tpl->setCurrentBlock("questions_titlecol");
                                        $this->tpl->setVariable("TXT_TITLE", $title);
                                        $this->tpl->parseCurrentBlock();
                                }
                                $noq--;
                        }
                        else
                        {
                                $this->tpl->setCurrentBlock("questions_titlecol");
                                $this->tpl->setVariable("TXT_TITLE", "<div title=\"" . $legendquestions[$legend[$title]] . "\">" . $title . "</div>");
                                $this->tpl->parseCurrentBlock();
                        }
                }
                $counter = 0;
                foreach ($eval_complete as $row)
                {
                        $noq = $noqcount;
                        foreach ($row["data"] as $key => $value)
                        {
                                if ($noq > 0)
                                {
                                        $this->tpl->setCurrentBlock("datacol");
                                        $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
                                        $this->tpl->setVariable("TXT_DATA", $value["html"]);
                                        $this->tpl->parseCurrentBlock();
                                        if ($noq == $noqcount)
                                        {
                                                $this->tpl->setCurrentBlock("questions_datacol");
                                                $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
                                                $this->tpl->setVariable("TXT_DATA", $value["html"]);
                                                $this->tpl->parseCurrentBlock();
                                        }
                                        $noq--;
                                }
                                else
                                {
                                        $this->tpl->setCurrentBlock("questions_datacol");
                                        $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
                                        $this->tpl->setVariable("TXT_DATA", $value["html"]);
                                        $this->tpl->parseCurrentBlock();
                                }
                        }
                        $this->tpl->setCurrentBlock("row");
                        $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
                        $this->tpl->parseCurrentBlock();
                        $this->tpl->setCurrentBlock("questions_row");
                        $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
                        $this->tpl->parseCurrentBlock();
                        $counter++;
                }

                if ($textanswers)
                {
                        $this->tpl->setCurrentBlock("questions_output_button");
                        $this->tpl->setVariable("BUTTON_SAVE", $this->lng->txt("save_text_answer_points"));
                        $this->tpl->setVariable("BTN_COMMAND", $this->ctrl->getCmd());
                        $this->tpl->parseCurrentBlock();
                }
                
                $this->tpl->setCurrentBlock("questions_output");
                $this->tpl->setVariable("TXT_QUESTIONS",  $this->lng->txt("assQuestions"));
                $this->tpl->setVariable("FORM_ACTION_RESULTS", $this->ctrl->getFormAction($this));
                $this->tpl->parseCurrentBlock();

                $this->tpl->setCurrentBlock("export_btn");
                $this->tpl->setVariable("EXPORT_DATA", $this->lng->txt("exp_eval_data"));
                $this->tpl->setVariable("TEXT_EXCEL", $this->lng->txt("exp_type_excel"));
                $this->tpl->setVariable("TEXT_CSV", $this->lng->txt("exp_type_spss"));
                $this->tpl->setVariable("BTN_EXPORT", $this->lng->txt("export"));
                $this->tpl->setVariable("BTN_PRINT", $this->lng->txt("print"));
                $this->tpl->setVariable("BTN_COMMAND", $this->ctrl->getCmd());
                $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
                $this->tpl->setVariable("TEXT_FILTER_USERS", $this->lng->txt("filter_users"));
                $this->tpl->setVariable("TEXT_FILTER", $this->lng->txt("set_filter"));
                $this->tpl->setVariable("TEXT_RESET_FILTER", $this->lng->txt("reset_filter"));
                $this->tpl->setVariable("TEXT_PASSEDONLY", $this->lng->txt("passed_only"));
                if ($passedonly)
                {
                        $this->tpl->setVariable("CHECKED_PASSEDONLY", " checked=\"checked\"");
                }
                if (strlen($filtertext) > 0)
                {
                        $this->tpl->setVariable("VALUE_FILTER_USERS", " value=\"" . $filtertext . "\"");
                }
                $this->tpl->parseCurrentBlock();
                
                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("TXT_STATISTICAL_DATA", $this->lng->txt("statistical_data"));
                $this->tpl->parseCurrentBlock();
                $this->tpl->setVariable("PAGETITLE", $this->object->getTitle());
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilTestEvaluationGUI::evalStatSelected ( search = 0  ) 

Creates the ouput of the selected users/groups for the test evaluation.

Creates the ouput of the selected users/groups for the test evaluation

public

Definition at line 317 of file class.ilTestEvaluationGUI.php.

References $_POST, $key, outEvalSearchResultTable(), outStatSelectedSearchResults(), sendInfo(), and setResultsTabs().

Referenced by addFoundGroupsToEval(), addFoundRolesToEval(), addFoundUsersToEval(), removeSelectedGroup(), removeSelectedUser(), and searchForEvaluation().

        {
                global $ilAccess;
                if (!$ilAccess->checkAccess("write", "", $this->ref_id)) 
                {
                        // allow only evaluation access
                        sendInfo($this->lng->txt("cannot_edit_test"), true);
                        $this->ctrl->redirectByClass("ilobjtestgui", "infoScreen");
                }

                global $ilUser;

                $this->ctrl->setCmd("evalStatSelected");
                $this->setResultsTabs();
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_eval_statistical_evaluation_selection.html", true);
                if ($search)
                {
                        $this->outStatSelectedSearchResults();
                }
                $this->tpl->setCurrentBlock("userselection");
                $this->tpl->setVariable("SEARCH_USERSELECTION", $this->lng->txt("eval_search_userselection"));
                $this->tpl->setVariable("SEARCH_TERM", $this->lng->txt("eval_search_term"));
                $this->tpl->setVariable("SEARCH_FOR", $this->lng->txt("search_for"));
                $this->tpl->setVariable("SEARCH_USERS", $this->lng->txt("eval_search_users"));
                $this->tpl->setVariable("SEARCH_GROUPS", $this->lng->txt("eval_search_groups"));
                $this->tpl->setVariable("SEARCH_ROLES", $this->lng->txt("eval_search_roles"));
                $this->tpl->setVariable("TEXT_CONCATENATION", $this->lng->txt("eval_concatenation"));
                $this->tpl->setVariable("TEXT_AND", $this->lng->txt("and"));
                $this->tpl->setVariable("TEXT_OR", $this->lng->txt("or"));
                $this->tpl->setVariable("VALUE_SEARCH_TERM", $_POST["search_term"]);
                if (is_array($_POST["search_for"]))
                {
                        if (in_array("usr", $_POST["search_for"]))
                        {
                                $this->tpl->setVariable("CHECKED_USERS", " checked=\"checked\"");
                        }
                        if (in_array("grp", $_POST["search_for"]))
                        {
                                $this->tpl->setVariable("CHECKED_GROUPS", " checked=\"checked\"");
                        }
                        if (in_array("role", $_POST["search_for"]))
                        {
                                $this->tpl->setVariable("CHECKED_ROLES", " checked=\"checked\"");
                        }
                }
                if (strcmp($_POST["concatenation"], "and") == 0)
                {
                        $this->tpl->setVariable("CHECKED_AND", " checked=\"checked\"");
                }
                else if (strcmp($_POST["concatenation"], "or") == 0)
                {
                        $this->tpl->setVariable("CHECKED_OR", " checked=\"checked\"");
                }
                $this->tpl->setVariable("SEARCH", $this->lng->txt("search"));
                $this->tpl->parseCurrentBlock();

                // output of alread found users and groups
                $eval_users = $this->object->getEvaluationUsers($ilUser->id);
                $buttons = array("remove");
                if (count($eval_users))
                {
                        $this->outEvalSearchResultTable("usr", $eval_users, "selected_user_result", "selected_user_row", $this->lng->txt("eval_found_selected_users"), $buttons);
                }
                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("CMD_EVAL", "evalSelectedUsers");
                $this->tpl->setVariable("TXT_STAT_USERS_INTRO", $this->lng->txt("tst_stat_users_intro"));
                $this->tpl->setVariable("TXT_STAT_ALL_USERS", $this->lng->txt("tst_stat_selected_users"));
                $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
                $this->tpl->setVariable("TXT_QWORKEDTHROUGH", $this->lng->txt("tst_stat_result_qworkedthrough"));
                $this->tpl->setVariable("TXT_PWORKEDTHROUGH", $this->lng->txt("tst_stat_result_pworkedthrough"));
                $this->tpl->setVariable("TXT_TIMEOFWORK", $this->lng->txt("tst_stat_result_timeofwork"));
                $this->tpl->setVariable("TXT_ATIMEOFWORK", $this->lng->txt("tst_stat_result_atimeofwork"));
                $this->tpl->setVariable("TXT_FIRSTVISIT", $this->lng->txt("tst_stat_result_firstvisit"));
                $this->tpl->setVariable("TXT_LASTVISIT", $this->lng->txt("tst_stat_result_lastvisit"));
                $this->tpl->setVariable("TXT_RESULTSPOINTS", $this->lng->txt("tst_stat_result_resultspoints"));
                $this->tpl->setVariable("TXT_RESULTSMARKS", $this->lng->txt("tst_stat_result_resultsmarks"));
                $this->tpl->setVariable("TXT_DISTANCEMEDIAN", $this->lng->txt("tst_stat_result_distancemedian"));
                $this->tpl->setVariable("TXT_SPECIFICATION", $this->lng->txt("tst_stat_result_specification"));
                $user_settings = $this->object->evalLoadStatisticalSettings($ilUser->id);
                foreach ($user_settings as $key => $value) {
                        if ($value == 1) {
                                $user_settings[$key] = " checked=\"checked\"";
                        } else {
                                $user_settings[$key] = "";
                        }
                }
                $this->tpl->setVariable("CHECKED_QWORKEDTHROUGH", $user_settings["qworkedthrough"]);
                $this->tpl->setVariable("CHECKED_PWORKEDTHROUGH", $user_settings["pworkedthrough"]);
                $this->tpl->setVariable("CHECKED_TIMEOFWORK", $user_settings["timeofwork"]);
                $this->tpl->setVariable("CHECKED_ATIMEOFWORK", $user_settings["atimeofwork"]);
                $this->tpl->setVariable("CHECKED_FIRSTVISIT", $user_settings["firstvisit"]);
                $this->tpl->setVariable("CHECKED_LASTVISIT", $user_settings["lastvisit"]);
                $this->tpl->setVariable("CHECKED_RESULTSPOINTS", $user_settings["resultspoints"]);
                $this->tpl->setVariable("CHECKED_RESULTSMARKS", $user_settings["resultsmarks"]);
                $this->tpl->setVariable("CHECKED_DISTANCEMEDIAN", $user_settings["distancemedian"]);
                $this->tpl->setVariable("TXT_STATISTICAL_EVALUATION", $this->lng->txt("tst_statistical_evaluation"));
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilTestEvaluationGUI::evaluationDetail (  ) 

Creates the output of a users text answer.

Creates the output of a users text answer

public

Definition at line 556 of file class.ilTestEvaluationGUI.php.

References $_GET, $user_id, ilObjUser::_lookupName(), and ilUtil::prepareFormOutput().

        {
                include_once "./classes/class.ilObjUser.php";
                $active_id = $_GET["userdetail"];
                $answertext = $this->object->getTextAnswer($active_id, $_GET["answer"]);
                $questiontext = $this->object->getQuestiontext($_GET["answer"]);
                include_once "./classes/class.ilTemplate.php";
                $this->tpl = new ilTemplate("./assessment/templates/default/tpl.il_as_tst_eval_user_answer.html", true, true);
                $this->tpl->setVariable("TITLE_USER_ANSWER", $this->lng->txt("tst_eval_user_answer"));
                $this->tpl->setVariable("TEXT_USER", $this->lng->txt("user"));
                if ($this->object->getTestType() == TYPE_SELF_ASSESSMENT)
                {
                        $this->tpl->setVariable("TEXT_USERNAME", $this->lng->txt("unknown"));
                }
                else
                {
                        include_once "./classes/class.ilObjUser.php";
                        $user_id = $this->object->_getUserIdFromActiveId($active_id);
                        $uname = ilObjUser::_lookupName($user_id);
                        if (strlen($uname["firstname"].$uname["lastname"]) == 0) $uname["firstname"] = $this->lng->txt("deleted_user");
                        $this->tpl->setVariable("TEXT_USERNAME", trim($uname["firstname"] . " " . $uname["lastname"]));
                }
                $this->tpl->setVariable("TEXT_QUESTION", $this->lng->txt("question"));
                $this->tpl->setVariable("TEXT_QUESTIONTEXT", $questiontext);
                $this->tpl->setVariable("TEXT_ANSWER", $this->lng->txt("answer"));
                $this->tpl->setVariable("TEXT_USER_ANSWER", str_replace("\n", "<br />", ilUtil::prepareFormOutput($answertext)));
        }

Here is the call graph for this function:

ilTestEvaluationGUI::evalUserDetail (  ) 

Output of the learner overview for a varying random test.

Output of the learner overview for a varying random test

public

Definition at line 1610 of file class.ilTestEvaluationGUI.php.

References $_GET, $counter, $user_id, ilObjTest::_getResultPass(), ilObjTest::_getUserIdFromActiveId(), ilObjUser::_lookupName(), ilFormat::formatDate(), ilFormat::ftimestamp2dateDB(), and setResultsTabs().

        {
                $active_id = $_GET["active_id"];
                $this->ctrl->saveParameter($this, "active_id");         
                if (!is_numeric($active_id))
                {
                        $this->ctrl->redirect($this, "eval_stat");
                }
                if ($this->object->getTestType() != TYPE_VARYING_RANDOMTEST)
                {
                        $this->ctrl->redirect($this, "passDetails");
                }
                include_once "./assessment/classes/class.ilObjTest.php";
                $counted_pass = ilObjTest::_getResultPass($active_id);
                $this->setResultsTabs();
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_eval_user_detail_overview.html", true);
                $color_class = array("tblrow1", "tblrow2");
                $counter = 0;
                $reached_pass = $this->object->_getPass($active_id);
                for ($pass = 0; $pass <= $reached_pass; $pass++)
                {
                        $finishdate = $this->object->getPassFinishDate($active_id, $pass);
                        if ($finishdate > 0)
                        {
                                $result_array =& $this->object->getTestResult($active_id, $pass);
                                if (!$result_array["test"]["total_max_points"])
                                {
                                        $percentage = 0;
                                }
                                else
                                {
                                        $percentage = ($result_array["test"]["total_reached_points"]/$result_array["test"]["total_max_points"])*100;
                                }
                                $total_max = $result_array["test"]["total_max_points"];
                                $total_reached = $result_array["test"]["total_reached_points"];
                                $this->tpl->setCurrentBlock("result_row");
                                if ($pass == $counted_pass)
                                {
                                        $this->tpl->setVariable("COLOR_CLASS", "tblrowmarked");
                                }
                                else
                                {
                                        $this->tpl->setVariable("COLOR_CLASS", $color_class[$pass % 2]);
                                }
                                $this->tpl->setVariable("VALUE_PASS", $pass + 1);
                                $this->tpl->setVariable("VALUE_DATE", ilFormat::formatDate(ilFormat::ftimestamp2dateDB($finishdate), "date"));
                                $this->tpl->setVariable("VALUE_ANSWERED", $this->object->getAnsweredQuestionCount($active_id, $pass) . " " . strtolower($this->lng->txt("of")) . " " . (count($result_array)-1));
                                $this->tpl->setVariable("VALUE_REACHED", $total_reached . " " . strtolower($this->lng->txt("of")) . " " . $total_max);
                                $this->tpl->setVariable("VALUE_PERCENTAGE", sprintf("%.2f", $percentage) . "%");
                                if ($this->object->canViewResults())
                                {
                                        $this->tpl->setVariable("HREF_PASS_DETAILS", "<a href=\"".$this->ctrl->getLinkTargetByClass(get_class($this), "passDetails")."&pass=$pass\">" . $this->lng->txt("show_details") . "</a>");
                                }
                                $this->tpl->parseCurrentBlock();
                        }
                }
                $this->tpl->setCurrentBlock("test_user_name");
                include_once "./assessment/classes/class.ilObjTest.php";
                $user_id = ilObjTest::_getUserIdFromActiveId($active_id);
                include_once "./classes/class.ilObjUser.php";
                $uname = ilObjUser::_lookupName($user_id);
                $struname = trim($uname["title"] . " " . $uname["firstname"] . " " . $uname["lastname"]);
                $this->tpl->setVariable("USER_NAME", sprintf($this->lng->txt("tst_result_user_name"), $struname));
                $this->tpl->setVariable("TEXT_RESULTS", $this->lng->txt("tst_results"));
                $this->tpl->parseCurrentBlock();
                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("PASS_COUNTER", $this->lng->txt("pass"));
                $this->tpl->setVariable("DATE", $this->lng->txt("date"));
                $this->tpl->setVariable("ANSWERED_QUESTIONS", $this->lng->txt("tst_answered_questions"));
                $this->tpl->setVariable("REACHED_POINTS", $this->lng->txt("tst_reached_points"));
                $this->tpl->setVariable("PERCENTAGE_CORRECT", $this->lng->txt("tst_percent_solved"));
                $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
                $this->tpl->setVariable("BACK_TO_EVALUATION", $this->lng->txt("tst_results_back_evaluation"));
                $back_command = ($_GET["etype"] == "all") ? "evalAllUsers"      : "evalSelectedUsers";
                $this->tpl->setVariable("BACK_COMMAND", $back_command);
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

& ilTestEvaluationGUI::executeCommand (  ) 

execute command

Definition at line 73 of file class.ilTestEvaluationGUI.php.

References $cmd, and getCommand().

        {
                $this->ctrl->saveParameter($this, "etype");
                $cmd = $this->ctrl->getCmd();
                $next_class = $this->ctrl->getNextClass($this);

                $cmd = $this->getCommand($cmd);
                switch($next_class)
                {
                        default:
                                $ret =& $this->$cmd();
                                break;
                }
                return $ret;
        }

Here is the call graph for this function:

ilTestEvaluationGUI::getCommand ( cmd  ) 

Retrieves the ilCtrl command.

Retrieves the ilCtrl command

public

Definition at line 96 of file class.ilTestEvaluationGUI.php.

References $cmd.

Referenced by executeCommand().

        {
                return $cmd;
        }

Here is the caller graph for this function:

ilTestEvaluationGUI::getEvaluationQuestionId ( question_id,
original_id = "" 
)

Returns the ID of a question for evaluation purposes.

If a question id and the id of the original question are given, this function returns the original id, otherwise the question id

Returns:
int question or original id

Definition at line 658 of file class.ilTestEvaluationGUI.php.

        {
                if ($original_id > 0)
                {
                        return $original_id;
                }
                else
                {
                        return $question_id;
                }
        }

ilTestEvaluationGUI::ilTestEvaluationGUI ( a_object  ) 

ilTestEvaluationGUI constructor

The constructor takes possible arguments an creates an instance of the ilTestEvaluationGUI object.

Parameters:
object $a_object Associated ilObjTest class public

Definition at line 57 of file class.ilTestEvaluationGUI.php.

References $ilCtrl, $ilias, $lng, $tpl, and $tree.

  {
                global $lng, $tpl, $ilCtrl, $ilias, $tree;

    $this->lng =& $lng;
    $this->tpl =& $tpl;
                $this->ctrl =& $ilCtrl;
                $this->ilias =& $ilias;
                $this->object =& $a_object;
                $this->tree =& $tree;
                $this->ref_id = $this->object->ref_id;
        }

ilTestEvaluationGUI::outEvalSearchResultTable ( a_type,
id_array,
block_result,
block_row,
title_text,
buttons 
)

Creates the search output for the user/group search form.

Creates the search output for the user/group search form

public

Definition at line 423 of file class.ilTestEvaluationGUI.php.

References $counter, $data, $key, $user, $user_id, ilObjUser::_lookupName(), and ilUtil::getImagePath().

Referenced by evalStatSelected(), and outStatSelectedSearchResults().

        {
                global $ilAccess;
                
                $rowclass = array("tblrow1", "tblrow2");
                switch($a_type)
                {
                        case "usr":
                                include_once "./classes/class.ilObjUser.php";
                                foreach ($id_array as $user_id => $username)
                                {
                                        $counter = 0;
                                        $uname = ilObjUser::_lookupName($user_id);
                                        $user = new ilObjUser($user_id);
                                        $this->tpl->setCurrentBlock($block_row);
                                        $this->tpl->setVariable("COLOR_CLASS", $rowclass[$counter % 2]);
                                        $this->tpl->setVariable("COUNTER", $user->getId());
                                        $this->tpl->setVariable("VALUE_LOGIN", $user->getLogin());
                                        $this->tpl->setVariable("VALUE_FIRSTNAME", $uname["firstname"]);
                                        $this->tpl->setVariable("VALUE_LASTNAME", $uname["lastname"]);
                                        $counter++;
                                        $this->tpl->parseCurrentBlock();
                                }
                                if (count($id_array))
                                {
                                        $this->tpl->setCurrentBlock("selectall_$block_result");
                                        $this->tpl->setVariable("SELECT_ALL", $this->lng->txt("select_all"));
                                        $counter++;
                                        $this->tpl->setVariable("COLOR_CLASS", $rowclass[$counter % 2]);
                                        $this->tpl->parseCurrentBlock();
                                }
                                $this->tpl->setCurrentBlock($block_result);
                                $this->tpl->setVariable("TEXT_USER_TITLE", $title_text);
                                $this->tpl->setVariable("TEXT_LOGIN", $this->lng->txt("login"));
                                $this->tpl->setVariable("TEXT_FIRSTNAME", $this->lng->txt("firstname"));
                                $this->tpl->setVariable("TEXT_LASTNAME", $this->lng->txt("lastname"));
                                $this->tpl->setVariable("SRC_USER_IMAGE", ilUtil::getImagePath("icon_usr_b.gif"));
                                $this->tpl->setVariable("ALT_USER_IMAGE", $this->lng->txt("objs_".$a_type));
                                if ($ilAccess->checkAccess("write", "", $this->object->getRefId()))
                                {
                                        foreach ($buttons as $cat)
                                        {
                                                $this->tpl->setVariable("VALUE_" . strtoupper($cat), $this->lng->txt($cat));
                                        }
                                        $this->tpl->setVariable("ARROW", "<img src=\"" . ilUtil::getImagePath("arrow_downright.gif") . "\" alt=\"".$this->lng->txt("arrow_downright")."\"/>");
                                }
                                $this->tpl->parseCurrentBlock();
                                break;
                        case "grp":
                                include_once "./classes/class.ilObjGroup.php";
                                foreach ($id_array as $group_id)
                                {
                                        $counter = 0;
                                        $group = new ilObjGroup($group_id);
                                        $this->tpl->setCurrentBlock($block_row);
                                        $this->tpl->setVariable("COLOR_CLASS", $rowclass[$counter % 2]);
                                        $this->tpl->setVariable("COUNTER", $group->getRefId());
                                        $this->tpl->setVariable("VALUE_TITLE", $group->getTitle());
                                        $this->tpl->setVariable("VALUE_DESCRIPTION", $group->getDescription());
                                        $counter++;
                                        $this->tpl->parseCurrentBlock();
                                }
                                if (count($id_array))
                                {
                                        $this->tpl->setCurrentBlock("selectall_$block_result");
                                        $this->tpl->setVariable("SELECT_ALL", $this->lng->txt("select_all"));
                                        $counter++;
                                        $this->tpl->setVariable("COLOR_CLASS", $rowclass[$counter % 2]);
                                        $this->tpl->parseCurrentBlock();
                                }
                                $this->tpl->setCurrentBlock($block_result);
                                $this->tpl->setVariable("TEXT_GROUP_TITLE", $title_text);
                                $this->tpl->setVariable("TEXT_TITLE", $this->lng->txt("title"));
                                $this->tpl->setVariable("TEXT_DESCRIPTION", $this->lng->txt("description"));
                                $this->tpl->setVariable("SRC_GROUP_IMAGE", ilUtil::getImagePath("icon_grp_b.gif"));
                                $this->tpl->setVariable("ALT_GROUP_IMAGE", $this->lng->txt("objs_".$a_type));
                                if ($ilAccess->checkAccess("write", "", $this->object->getRefId()))
                                {
                                        foreach ($buttons as $cat)
                                        {
                                                $this->tpl->setVariable("VALUE_" . strtoupper($cat), $this->lng->txt($cat));
                                        }
                                        $this->tpl->setVariable("ARROW", "<img src=\"" . ilUtil::getImagePath("arrow_downright.gif") . "\" alt=\"".$this->lng->txt("arrow_downright")."\"/>");
                                }
                                $this->tpl->parseCurrentBlock();
                                break;
                        case "role":
                                $counter = 0;
                                foreach ($id_array as $key => $data)
                                {
                                        $this->tpl->setCurrentBlock($block_row);
                                        $this->tpl->setVariable("COLOR_CLASS", $rowclass[$counter % 2]);
                                        $this->tpl->setVariable("COUNTER", $key);
                                        $this->tpl->setVariable("VALUE_TITLE", $data->title);
                                        $this->tpl->setVariable("VALUE_DESCRIPTION", $data->description);
                                        $counter++;
                                        $this->tpl->parseCurrentBlock();
                                }
                                if (count($id_array))
                                {
                                        $this->tpl->setCurrentBlock("selectall_$block_result");
                                        $this->tpl->setVariable("SELECT_ALL", $this->lng->txt("select_all"));
                                        $counter++;
                                        $this->tpl->setVariable("COLOR_CLASS", $rowclass[$counter % 2]);
                                        $this->tpl->parseCurrentBlock();
                                }
                                $this->tpl->setCurrentBlock($block_result);
                                $this->tpl->setVariable("TEXT_ROLE_TITLE", $title_text);
                                $this->tpl->setVariable("TEXT_TITLE", $this->lng->txt("title"));
                                $this->tpl->setVariable("TEXT_DESCRIPTION", $this->lng->txt("description"));
                                $this->tpl->setVariable("SRC_ROLE_IMAGE", ilUtil::getImagePath("icon_role_b.gif"));
                                $this->tpl->setVariable("ALT_ROLE_IMAGE", $this->lng->txt("objs_".$a_type));

                                if ($ilAccess->checkAccess("write", "", $this->object->getRefId()))
                                {
                                        foreach ($buttons as $cat)
                                        {
                                                $this->tpl->setVariable("VALUE_" . strtoupper($cat), $this->lng->txt($cat));
                                        }
                                        $this->tpl->setVariable("ARROW", "<img src=\"" . ilUtil::getImagePath("arrow_downright.gif") . "\" alt=\"".$this->lng->txt("arrow_downright")."\"/>");
                                }
                                $this->tpl->parseCurrentBlock();
                                break;
                }
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilTestEvaluationGUI::outStatSelectedSearchResults (  ) 

Creates the output for the search results when trying to add users/groups to a test evaluation.

Creates the output for the search results when trying to add users/groups to a test evaluation

public

Definition at line 108 of file class.ilTestEvaluationGUI.php.

References $_POST, $users, outEvalSearchResultTable(), and sendInfo().

Referenced by evalStatSelected().

        {
                include_once ("./classes/class.ilSearch.php");
                global $ilUser;
                
                if (is_array($_POST["search_for"]))
                {
                        if (in_array("usr", $_POST["search_for"]) or in_array("grp", $_POST["search_for"]) or in_array("role", $_POST["search_for"]))
                        {
                                $search =& new ilSearch($ilUser->id);
                                $search->setSearchString($_POST["search_term"]);
                                $search->setCombination($_POST["concatenation"]);
                                $search->setSearchFor($_POST["search_for"]);
                                $search->setSearchType("new");
                                if($search->validate($message))
                                {
                                        $search->performSearch();
                                }
                                if ($message)
                                {
                                        //sendInfo($message);
                                }
                                if(!$search->getNumberOfResults() && $search->getSearchFor())
                                {
                                        sendInfo($this->lng->txt("search_no_match"));
                                        return;
                                }
                                $buttons = array("add");
                                $participants =& $this->object->evalTotalPersonsArray();
                                $eval_users = $this->object->getEvaluationUsers($ilUser->id);
                                if ($searchresult = $search->getResultByType("usr"))
                                {
                                        $users = array();
                                        foreach ($searchresult as $result_array)
                                        {
                                                if (!array_key_exists($result_array["id"], $eval_users))
                                                {
                                                        $active = $this->object->getActiveTestUser($result_array["id"]);
                                                        if (array_key_exists($active->active_id, $participants))
                                                        {
                                                                $users[$result_array["id"]] = $eval_users[$result_array["id"]];
                                                        }
                                                }
                                        }
                                        $this->outEvalSearchResultTable("usr", $users, "user_result", "user_row", $this->lng->txt("search_found_users"), $buttons);
                                }
                                $searchresult = array();
                                if ($searchresult = $search->getResultByType("grp"))
                                {
                                        $groups = array();
                                        foreach ($searchresult as $result_array)
                                        {
                                                include_once("./classes/class.ilObjGroup.php");
                                                $grp = new ilObjGroup($result_array["id"], true);
                                                $members = $grp->getGroupMemberIds();
                                                $found_member = 0;
                                                foreach ($members as $member_id)
                                                {
                                                        $active = $this->object->getActiveTestUser($member_id);
                                                        if (array_key_exists($active->active_id, $participants))
                                                        {
                                                                $found_member = 1;
                                                        }
                                                }
                                                if ($found_member)
                                                {
                                                        array_push($groups, $result_array["id"]);
                                                }
                                        }
                                        $this->outEvalSearchResultTable("grp", $groups, "group_result", "group_row", $this->lng->txt("search_found_groups"), $buttons);
                                }
                                if ($searchresult = $search->getResultByType("role"))
                                {
                                        $roles = array();
                                        foreach ($searchresult as $result_array)
                                        {                                                       
                                                array_push($roles, $result_array["id"]);
                                        }
                                        $roles = $this->object->getRoleData($roles);                    
                                        if (count ($roles))
                                                $this->outEvalSearchResultTable("role", $roles, "role_result", "role_row", $this->lng->txt("search_found_roles"), $buttons);
                                }
                        }
                }
                else
                {
                        sendInfo($this->lng->txt("no_user_or_group_selected"));
                }
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilTestEvaluationGUI::passDetails (  ) 

Output of the learners view of an existing test.

Output of the learners view of an existing test

public

Definition at line 1695 of file class.ilTestEvaluationGUI.php.

References $_GET, $counter, $key, $user_id, ilObjUser::_lookupName(), ilUtil::getImagePath(), and setResultsTabs().

        {
                function sort_percent($a, $b) 
                {
                        if (strcmp($_GET["order"], "ASC")) 
                        {
                                $smaller = 1;
                                $greater = -1;
                        } 
                        else 
                        {
                                $smaller = -1;
                                $greater = 1;
                        }
                        if ($a["percent"] == $b["percent"]) 
                        {
                                if ($a["nr"] == $b["nr"]) return 0;
                                return ($a["nr"] < $b["nr"]) ? -1 : 1;
                        }
                        return ($a["percent"] < $b["percent"]) ? $smaller : $greater;
                }

                function sort_nr($a, $b) 
                {
                        if (strcmp($_GET["order"], "ASC")) 
                        {
                                $smaller = 1;
                                $greater = -1;
                        } 
                        else 
                        {
                                $smaller = -1;
                                $greater = 1;
                        }
                        if ($a["nr"] == $b["nr"]) return 0;
                        return ($a["nr"] < $b["nr"]) ? $smaller : $greater;
                }

                $pass = $_GET["pass"];
                $active_id = $_GET["active_id"];
                $this->ctrl->saveParameter($this, "active_id");         
                $this->ctrl->saveParameter($this, "pass");              
                if (!is_numeric($pass)) $pass = NULL;
                
                $this->setResultsTabs();
                $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_eval_user_detail_detail.html", true);
                $color_class = array("tblrow1", "tblrow2");
                $counter = 0;
                $result_array =& $this->object->getTestResult($active_id, $pass);

                if (!$result_array["test"]["total_max_points"])
                {
                        $percentage = 0;
                }
                else
                {
                        $percentage = ($result_array["test"]["total_reached_points"]/$result_array["test"]["total_max_points"])*100;
                }
                $total_max = $result_array["test"]["total_max_points"];
                $total_reached = $result_array["test"]["total_reached_points"];
                $img_title_percent = "";
                $img_title_nr = "";
                switch ($_GET["sortres"]) 
                {
                        case "percent":
                                usort($result_array, "sort_percent");
                                $img_title_percent = " <img src=\"" . ilUtil::getImagePath(strtolower($_GET["order"]) . "_order.png", true) . "\" alt=\"".$this->lng->txt(strtolower($_GET["order"])."ending_order")."\" />";
                                if (strcmp($_GET["order"], "ASC") == 0) 
                                {
                                        $sortpercent = "DESC";
                                } 
                                else 
                                {
                                        $sortpercent = "ASC";
                                }
                                break;
                        case "nr":
                                usort($result_array, "sort_nr");
                                $img_title_nr = " <img src=\"" . ilUtil::getImagePath(strtolower($_GET["order"]) . "_order.png", true) . "\" alt=\"".$this->lng->txt(strtolower($_GET["order"])."ending_order")."\" />";
                                if (strcmp($_GET["order"], "ASC") == 0) 
                                {
                                        $sortnr = "DESC";
                                } 
                                else 
                                {
                                        $sortnr = "ASC";
                                }
                                break;
                }
                if (!$sortpercent) 
                {
                        $sortpercent = "ASC";
                }
                if (!$sortnr) 
                {
                        $sortnr = "ASC";
                }

                foreach ($result_array as $key => $value) 
                {
                        if (preg_match("/\d+/", $key)) 
                        {
                                $this->tpl->setCurrentBlock("question_row");
                                $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
                                $this->tpl->setVariable("VALUE_QUESTION_COUNTER", $value["nr"]);
                                //if ($this->object->isOnlineTest())
                                        $this->tpl->setVariable("VALUE_QUESTION_TITLE", $value["title"]);
                                //else
                                //      $this->tpl->setVariable("VALUE_QUESTION_TITLE", "<a href=\"" . $this->ctrl->getLinkTargetByClass(get_class($this), "run") . "&evaluation=" . $value["qid"] . "\">" . $value["title"] . "</a>");
                                $this->tpl->setVariable("VALUE_MAX_POINTS", $value["max"]);
                                $this->tpl->setVariable("VALUE_REACHED_POINTS", $value["reached"]);
                                $this->tpl->setVariable("VALUE_PERCENT_SOLVED", $value["percent"]);
                                $this->tpl->parseCurrentBlock();
                                $counter++;
                        }
                }

                $this->tpl->setCurrentBlock("question_footer");
                $this->tpl->setVariable("VALUE_QUESTION_COUNTER", "<strong>" . $this->lng->txt("total") . "</strong>");
                $this->tpl->setVariable("VALUE_QUESTION_TITLE", "");
                $this->tpl->setVariable("VALUE_MAX_POINTS", "<strong>" . $total_max . "</strong>");
                $this->tpl->setVariable("VALUE_REACHED_POINTS", "<strong>" . $total_reached . "</strong>");
                $this->tpl->setVariable("VALUE_PERCENT_SOLVED", "<strong>" . sprintf("%2.2f", $percentage) . " %" . "</strong>");
                $this->tpl->parseCurrentBlock();

                $this->tpl->setCurrentBlock("test_user_name");
                $user_id = $this->object->_getUserIdFromActiveId($active_id);
                include_once "./classes/class.ilObjUser.php";
                $uname = ilObjUser::_lookupName($user_id);
                $struname = trim($uname["title"] . " " . $uname["firstname"] . " " . $uname["lastname"]);
                if ($this->object->getTestType() != TYPE_SELF_ASSESSMENT)
                {
                        include_once "./classes/class.ilObjUser.php";
                        $uname = ilObjUser::_lookupName($user_id);
                        $struname = trim($uname["title"] . " " . $uname["firstname"] . " " . $uname["lastname"]);
                        $this->tpl->setCurrentBlock("test_user_name");
                        $this->tpl->setVariable("USER_NAME", sprintf($this->lng->txt("tst_result_user_name"), $struname));
                        $this->tpl->parseCurrentBlock();
                }
                $this->tpl->parseCurrentBlock();

                if ($this->object->isRandomTest())
                {
                        $this->object->loadQuestions($active_id, $pass);
                }
                $counter = 1;
                // output of questions with solutions
                foreach ($result_array as $question_data)
                {
                        $question_id = $question_data["qid"];
                        if (is_numeric($question_id))
                        {
                                $this->tpl->setCurrentBlock("question");
                                $question_gui = $this->object->createQuestionGUI("", $question_id);
        
                                $this->tpl->setVariable("COUNTER_QUESTION", $counter.".&nbsp;");
                                $this->tpl->setVariable("QUESTION_TITLE", $question_gui->object->getTitle());
                                $result_output = $question_gui->getSolutionOutput($active_id, $pass, TRUE, FALSE, FALSE);
                                $this->tpl->setVariable("SOLUTION_OUTPUT", $result_output);
                                $this->tpl->parseCurrentBlock();
                                $counter ++;
                        }
                }
                
                $this->tpl->setCurrentBlock("adm_content");
                $this->tpl->setVariable("TEST_RESULTS_BY_PASS", $this->lng->txt("tst_eval_results_by_pass"));
                $this->tpl->setVariable("TEXT_RESULTS", $this->lng->txt("tst_results"));
                $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
                $this->tpl->setVariable("QUESTION_COUNTER", "<a href=\"" . $this->ctrl->getLinkTargetByClass(get_class($this), "passDetails") . "&sortres=nr&order=$sortnr\">" . $this->lng->txt("tst_question_no") . "</a>$img_title_nr");
                $this->tpl->setVariable("QUESTION_TITLE", $this->lng->txt("tst_question_title"));
                $this->tpl->setVariable("MAX_POINTS", $this->lng->txt("tst_maximum_points"));
                $this->tpl->setVariable("REACHED_POINTS", $this->lng->txt("tst_reached_points"));
                $this->tpl->setVariable("PERCENT_SOLVED", "<a href=\"" . $this->ctrl->getLinkTargetByClass(get_class($this), "passDetails") . "&sortres=percent&order=$sortpercent\">" . $this->lng->txt("tst_percent_solved") . "</a>$img_title_percent");
                $back_command = "evalUserDetail";
                $back_text = $this->lng->txt("tst_results_back_overview");
                if (is_null($pass))
                {
                        $back_command = ($_GET["etype"] == "all") ? "evalAllUsers"      : "evalSelectedUsers";
                        $back_text = $this->lng->txt("tst_results_back_evaluation");
                }
                $this->tpl->setVariable("BACK_TO_OVERVIEW", $back_text);
                $this->tpl->setVariable("BACK_COMMAND", $back_command);
                $this->tpl->parseCurrentBlock();
        }

Here is the call graph for this function:

ilTestEvaluationGUI::removeSelectedGroup (  ) 

Removes selected users from the selected users table.

Removes selected users from the selected users table

public

Definition at line 245 of file class.ilTestEvaluationGUI.php.

References $_POST, and evalStatSelected().

        {
                global $ilUser;
                if (is_array($_POST["selected_groups"]))
                {
                        foreach ($_POST["selected_groups"] as $group_id)
                        {
                                $this->object->removeSelectedGroup($group_id, $ilUser->id);
                        }
                }
                $this->evalStatSelected();
        }

Here is the call graph for this function:

ilTestEvaluationGUI::removeSelectedUser (  ) 

Removes selected users from the selected users table.

Removes selected users from the selected users table

public

Definition at line 225 of file class.ilTestEvaluationGUI.php.

References $_POST, $user_id, and evalStatSelected().

        {
                global $ilUser;
                if (is_array($_POST["selected_users"]))
                {
                        foreach ($_POST["selected_users"] as $user_id)
                        {
                                $this->object->removeSelectedUser($user_id, $ilUser->id);
                        }
                }
                $this->evalStatSelected();
        }

Here is the call graph for this function:

ilTestEvaluationGUI::saveEvaluationSettings (  ) 

Definition at line 634 of file class.ilTestEvaluationGUI.php.

References $_POST.

Referenced by evalSelectedUsers().

        {
                global $ilUser;
                $eval_statistical_settings = array(
                        "resultspoints" => $_POST["chb_result_resultspoints"],
                        "resultsmarks" => $_POST["chb_result_resultsmarks"],
                        "qworkedthrough" => $_POST["chb_result_qworkedthrough"],
                        "pworkedthrough" => $_POST["chb_result_pworkedthrough"],
                        "timeofwork" => $_POST["chb_result_timeofwork"],
                        "atimeofwork" => $_POST["chb_result_atimeofwork"],
                        "firstvisit" => $_POST["chb_result_firstvisit"],
                        "lastvisit" => $_POST["chb_result_lastvisit"],
                        "distancemedian" => $_POST["chb_result_distancemedian"]
                );
                $this->object->evalSaveStatisticalSettings($eval_statistical_settings, $ilUser->getId());
                return $eval_statistical_settings;
        }

Here is the caller graph for this function:

ilTestEvaluationGUI::searchForEvaluation (  ) 

Called when the search button is pressed in the evaluation user selection.

Called when the search button is pressed in the evaluation user selection

public

Definition at line 305 of file class.ilTestEvaluationGUI.php.

References evalStatSelected().

        {
                $this->evalStatSelected(1);
        }

Here is the call graph for this function:

ilTestEvaluationGUI::setResultsTabs (  ) 

set the tabs for the results overview ("results" in the repository)

Definition at line 1883 of file class.ilTestEvaluationGUI.php.

References $_GET.

Referenced by eval_a(), eval_stat(), evalSelectedUsers(), evalStatSelected(), evalUserDetail(), and passDetails().

        {
                global $ilTabs;

                include_once ("./classes/class.ilTabsGUI.php");
                $tabs_gui = new ilTabsGUI();

                // Test results tab
                $tabs_gui->addTarget("tst_results_aggregated",
                        $this->ctrl->getLinkTarget($this, "eval_a"),
                        array("eval_a"),
                        "", "");

                $force_active = (is_numeric($_GET["active_id"]) && $_GET["etype"] == "all") ? true      : false;
                $tabs_gui->addTarget("eval_all_users", 
                        $this->ctrl->getLinkTargetByClass(get_class($this), "eval_stat"), 
                        array("eval_stat", "evalAllUsers", "evalUserDetail"),   
                        "", "", $force_active
                );
                
                if ($this->object->getTestType() != TYPE_SELF_ASSESSMENT)
                {
                        $force_active = (is_numeric($_GET["active_id"]) && $_GET["etype"] == "selected") ? true : false;
                        $tabs_gui->addTarget("eval_selected_users", 
                                $this->ctrl->getLinkTargetByClass(get_class($this), "evalStatSelected"), 
                                array("evalStatSelected", "evalSelectedUsers", "searchForEvaluation",
                                "addFoundUsersToEval", "removeSelectedUser"),   
                                "", "", $force_active
                        );
                }
                $ilTabs = $tabs_gui;
        }       

Here is the caller graph for this function:


Field Documentation

ilTestEvaluationGUI::$ctrl

Definition at line 43 of file class.ilTestEvaluationGUI.php.

ilTestEvaluationGUI::$ilias

Definition at line 44 of file class.ilTestEvaluationGUI.php.

Referenced by ilTestEvaluationGUI().

ilTestEvaluationGUI::$lng

Definition at line 41 of file class.ilTestEvaluationGUI.php.

Referenced by ilTestEvaluationGUI().

ilTestEvaluationGUI::$object

Definition at line 40 of file class.ilTestEvaluationGUI.php.

ilTestEvaluationGUI::$ref_id

Definition at line 46 of file class.ilTestEvaluationGUI.php.

ilTestEvaluationGUI::$tpl

Definition at line 42 of file class.ilTestEvaluationGUI.php.

Referenced by ilTestEvaluationGUI().

ilTestEvaluationGUI::$tree

Definition at line 45 of file class.ilTestEvaluationGUI.php.

Referenced by ilTestEvaluationGUI().


The documentation for this class was generated from the following file: