70 $this->tabs = $DIC->tabs();
71 $this->access = $DIC->access();
72 $this->
user = $DIC->user();
73 $this->rbacsystem = $DIC->rbac()->system();
74 $this->tree = $DIC->repositoryTree();
75 $this->toolbar = $DIC->toolbar();
76 $this->ui = $DIC->ui();
77 $lng = $DIC->language();
84 $this->
object = $a_object;
86 $this->array_panels =
array();
88 if ($this->
object->get360Mode()) {
98 include_once(
"./Services/Skill/classes/class.ilSkillManagementSettings.php");
100 if ($this->
object->get360SkillService() && $skmg_set->isActivated()) {
101 $cmd = $this->ctrl->getCmd(
"competenceEval");
103 $cmd = $this->ctrl->getCmd(
"evaluation");
106 $next_class = $this->ctrl->getNextClass($this);
109 switch ($next_class) {
111 $this->setEvalSubTabs();
112 $ret =&$this->$cmd();
133 include_once(
"./Services/Skill/classes/class.ilSkillManagementSettings.php");
135 if ($this->
object->get360SkillService() && $skmg_set->isActivated()) {
136 $ilTabs->addSubTabTarget(
137 "svy_eval_competences",
138 $this->ctrl->getLinkTarget($this,
"competenceEval"),
139 array(
"competenceEval")
143 $ilTabs->addSubTabTarget(
144 "svy_eval_cumulated",
145 $this->ctrl->getLinkTarget($this,
"evaluation"),
146 array(
"evaluation",
"checkEvaluationAccess")
149 $ilTabs->addSubTabTarget(
151 $this->ctrl->getLinkTarget($this,
"evaluationdetails"),
152 array(
"evaluationdetails")
155 if ($ilAccess->checkAccess(
"write",
"", $this->object->getRefId())) {
156 $ilTabs->addSubTabTarget(
158 $this->ctrl->getLinkTarget($this,
"evaluationuser"),
159 array(
"evaluationuser")
172 $this->appr_id = $a_val;
196 if ($_REQUEST[
"appr_id"] ==
"") {
197 $req_appr_id =
$ilUser->getId();
199 $req_appr_id = (int) $_REQUEST[
"appr_id"];
203 if ($req_appr_id > 0) {
207 foreach ($this->
object->getAppraiseesData() as $item) {
208 if ($item[
"closed"] &&
209 ($item[
"user_id"] ==
$ilUser->getId() ||
212 $valid[] = $item[
"user_id"];
215 if (in_array($req_appr_id,
$valid)) {
223 $this->ctrl->setParameter($this,
"appr_id",
$appr_id);
239 if ($this->
object->getAnonymize() == 1 &&
244 include_once
"Modules/Survey/classes/class.ilObjSurveyAccess.php";
246 if ($this->
object->getAnonymize() == 1) {
252 if ($this->
object->getAnonymize() == 1) {
254 $surveycode = $this->
object->getUserAccessCode(
$ilUser->getId());
255 if ($this->
object->isAnonymizedParticipant($surveycode)) {
269 $this->tpl->setVariable(
"TABS",
"");
270 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.il_svy_svy_evaluation_checkaccess.html",
"Modules/Survey");
271 $this->tpl->setCurrentBlock(
"adm_content");
272 $this->tpl->setVariable(
"AUTHENTICATION_NEEDED", $this->lng->txt(
"svy_check_evaluation_authentication_needed"));
273 $this->tpl->setVariable(
"FORM_ACTION", $this->ctrl->getFormAction($this,
"checkEvaluationAccess"));
274 $this->tpl->setVariable(
"EVALUATION_CHECKACCESS_INTRODUCTION", $this->lng->txt(
"svy_check_evaluation_access_introduction"));
275 $this->tpl->setVariable(
"VALUE_CHECK", $this->lng->txt(
"ok"));
276 $this->tpl->setVariable(
"VALUE_CANCEL", $this->lng->txt(
"cancel"));
277 $this->tpl->setVariable(
"TEXT_SURVEY_CODE", $this->lng->txt(
"survey_code"));
278 $this->tpl->parseCurrentBlock();
281 $_SESSION[
"anon_evaluation_access"] = null;
294 $surveycode =
$_POST[
"surveycode"];
295 if ($this->
object->isAnonymizedParticipant($surveycode)) {
321 $ilCtrl->redirectByClass(
"ilrepositorygui",
"frameset");
338 $finished_ids = null;
339 if ($this->
object->get360Mode()) {
342 $this->ctrl->redirect($this, $details ?
"evaluationdetails" :
"evaluation");
344 $finished_ids = $this->
object->getFinishedIdsForAppraiseeId(
$appr_id);
345 if (!
sizeof($finished_ids)) {
346 $finished_ids =
array(-1);
351 $title_row =
array();
352 $do_title = $do_label =
true;
353 switch (
$_POST[
'export_label']) {
355 $title_row[] = $this->lng->txt(
"label");
360 $title_row[] = $this->lng->txt(
"title");
365 $title_row[] = $this->lng->txt(
"title");
366 $title_row[] = $this->lng->txt(
"label");
369 $title_row[] = $this->lng->txt(
"question");
370 $title_row[] = $this->lng->txt(
"question_type");
371 $title_row[] = $this->lng->txt(
"users_answered");
372 $title_row[] = $this->lng->txt(
"users_skipped");
373 $title_row[] = $this->lng->txt(
"mode");
374 $title_row[] = $this->lng->txt(
"mode_text");
375 $title_row[] = $this->lng->txt(
"mode_nr_of_selections");
376 $title_row[] = $this->lng->txt(
"median");
377 $title_row[] = $this->lng->txt(
"arithmetic_mean");
380 switch (
$_POST[
"export_format"]) {
382 include_once
"Services/Excel/classes/class.ilExcel.php";
384 $excel->addSheet($this->lng->txt(
"svy_eval_cumulated"));
385 $excel->setCellArray(
array($title_row),
"A1");
386 $excel->setBold(
"A1:" . $excel->getColumnCoord(
sizeof($title_row)-1) .
"1");
390 $csvfile =
array($title_row);
397 include_once
"./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
398 foreach ($this->
object->getSurveyQuestions() as $qdata) {
400 $q_res = $q_eval->getResults();
401 $ov_rows = $q_eval->exportResults($q_res, $do_title, $do_label);
403 switch (
$_POST[
"export_format"]) {
405 $excel->setActiveSheet(0);
406 foreach ($ov_rows as
$row) {
407 foreach ($row as $col => $value) {
408 $excel->setCell($ov_row, $col, $value);
415 foreach ($ov_rows as $row) {
422 switch (
$_POST[
"export_format"]) {
432 ? $this->lng->txt(
"svy_eval_cumulated")
433 : $this->lng->txt(
"svy_eval_detail");
435 $surveyname = $this->
object->getTitle() .
" " .
$type .
" " .
date(
"Y-m-d");
436 $surveyname = preg_replace(
"/\s/",
"_", trim($surveyname));
440 switch (
$_POST[
"export_format"]) {
442 $excel->sendToClient($surveyname);
448 foreach ($csvfile as $csvrow) {
450 $csv .= join($csvrow, $separator) .
"\n";
469 $question_res = $a_results;
471 if (is_array($question_res)) {
472 $question_res = $question_res[0][1];
475 $question = $question_res->getQuestion();
477 $a_excel->
addSheet($question->getTitle());
485 $kv[$this->lng->txt(
"title")] = $question->getTitle();
488 $kv[$this->lng->txt(
"label")] = $question->label;
492 $kv[$this->lng->txt(
"question")] = $question->getQuestiontext();
500 $kv[$this->lng->txt(
"users_answered")] = (int) $question_res->getUsersAnswered();
501 $kv[$this->lng->txt(
"users_skipped")] = (int) $question_res->getUsersSkipped();
505 foreach ($kv as
$key => $value) {
507 $a_excel->
setCell($excel_row++, 1, $value);
532 foreach ($a_results as $row_results) {
533 $row_title = $row_results[0];
535 $a_excel->
setCell($excel_row, 0, $this->lng->txt(
"row"));
536 $a_excel->
setCell($excel_row++, 1, $row_title);
543 is_array($texts[$row_title])
544 ?
array(
""=>$texts[$row_title])
552 $a_excel->
setCell($excel_row++, 0, $this->lng->txt(
"overview"));
556 $cats = $question->getColumns();
557 foreach ($cats->getCategories() as $cat) {
564 foreach ($a_results as $row_results) {
565 $row_title = $row_results[0];
567 $a_excel->
setCell($excel_row, 0, $row_title);
569 $vars = $row_results[1]->getVariables();
571 foreach ($vars as $var) {
580 $a_excel->
setBold(
"A1:A" . $excel_row);
587 if ($a_include_mode) {
590 $kv[$this->lng->txt(
"mode")] = is_array($a_results->
getModeValue())
602 if ($a_results->
getMean() !== null) {
603 $kv[$this->lng->txt(
"arithmetic_mean")] = $a_results->
getMean();
607 foreach ($kv as
$key => $value) {
609 $a_excel->
setCell($a_excel_row++, 1, $value);
616 $a_excel->
setCell($a_excel_row, 0, $this->lng->txt(
"categories"));
617 foreach ($a_grid[
"cols"] as $col_idx => $col) {
618 $a_excel->
setCell($a_excel_row, $col_idx+1, $col);
623 foreach ($a_grid[
"rows"] as
$cols) {
624 foreach ($cols as $col_idx => $col) {
625 $a_excel->
setCell($a_excel_row, $col_idx+1, $col);
632 if ($a_text_answers) {
634 $a_excel->
setCell($a_excel_row, 0, $this->lng->txt(
"freetext_answers"));
637 if (!is_array($a_text_answers[
""])) {
639 $a_excel->
setCell($a_excel_row, 1, $this->lng->txt(
"title"));
640 $a_excel->
setCell($a_excel_row++, 2, $this->lng->txt(
"answer"));
645 $a_excel->
setCell($a_excel_row++, 1, $this->lng->txt(
"answer"));
648 foreach ($a_text_answers as $var => $items) {
649 foreach ($items as $item) {
650 if (!is_array($a_text_answers[
""])) {
651 $a_excel->
setCell($a_excel_row, 1, $var);
652 $a_excel->
setCell($a_excel_row++, 2, $item);
654 $a_excel->
setCell($a_excel_row++, 1, $item);
663 if (strlen(
$_POST[
"export_format"])) {
667 $this->ctrl->redirect($this,
'evaluation');
673 if (strlen(
$_POST[
"export_format"])) {
677 $this->ctrl->redirect($this,
'evaluation');
684 $this->ctrl->redirect($this,
'evaluation');
691 $form_id =
"svymdfrm";
694 $tpl->addOnLoadCode(
'$("#form_' . $form_id .
'").submit(function() { $("#' . $a_id .
'").modal("hide"); });');
696 include_once
"Services/UIComponent/Modal/classes/class.ilModalGUI.php";
698 $modal->setId($a_id);
699 $modal->setHeading(($this->lng->txt(
"svy_export_format")));
701 include_once
"Services/Form/classes/class.ilPropertyFormGUI.php";
703 $form->setId($form_id);
704 $form->setFormAction($this->ctrl->getFormAction($this, $a_cmd));
708 self::TYPE_XLS => $this->lng->txt(
'exp_type_excel'),
715 'label_only' => $this->lng->txt(
'export_label_only'),
716 'title_only' => $this->lng->txt(
'export_title_only'),
717 'title_label'=> $this->lng->txt(
'export_title_label')
719 $form->addItem($label);
721 $form->addCommandButton($a_cmd, $this->lng->txt(
"export"));
722 $form->setPreventDoubleSubmission(
false);
724 $modal->setBody(
$form->getHTML());
726 return $modal->getHTML();
736 $ui_factory = $ui->factory();
737 $ui_renderer = $ui->renderer();
746 switch ($this->
object->getEvaluationAccess()) {
761 $ilToolbar->setFormAction($this->ctrl->getFormAction($this));
762 include_once
"Services/Form/classes/class.ilPropertyFormGUI.php";
764 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.il_svy_svy_evaluation.html",
"Modules/Survey");
766 if ($this->
object->get360Mode()) {
774 $captions =
new ilSelectInputGUI($this->lng->txt(
"svy_eval_captions"),
"cp");
776 "ap" => $this->lng->txt(
"svy_eval_captions_abs_perc"),
777 "a" => $this->lng->txt(
"svy_eval_captions_abs"),
778 "p" => $this->lng->txt(
"svy_eval_captions_perc")
780 $captions->setValue(
$_POST[
"cp"]);
781 $ilToolbar->addInputItem($captions,
true);
785 "tc" => $this->lng->txt(
"svy_eval_view_tables_charts"),
786 "t" => $this->lng->txt(
"svy_eval_view_tables"),
787 "c" => $this->lng->txt(
"svy_eval_view_charts")
789 $view->setValue(
$_POST[
"vw"]);
790 $ilToolbar->addInputItem($view,
true);
792 include_once
"Services/UIComponent/Button/classes/class.ilSubmitButton.php";
794 $button->setCaption(
"ok");
795 $button->setCommand(
"evaluationdetails");
796 $button->setOmitPreventDoubleSubmission(
true);
797 $ilToolbar->addButtonInstance($button);
799 $ilToolbar->addSeparator();
802 $dtmpl =
new ilTemplate(
"tpl.il_svy_svy_results_details.html",
true,
true,
"Modules/Survey");
803 $toc_tpl =
new ilTemplate(
"tpl.svy_results_table_contents.html",
true,
true,
"Modules/Survey");
804 $this->lng->loadLanguageModule(
"content");
805 $toc_tpl->setVariable(
"TITLE_TOC", $this->lng->txt(
'cont_toc'));
808 $modal_id =
"svy_ev_exp";
813 include_once
"Services/UIComponent/Button/classes/class.ilLinkButton.php";
815 $button->setCaption(
"export");
816 $button->setOnClick(
'$(\'#' . $modal_id .
'\').modal(\
'show\')');
817 $ilToolbar->addButtonInstance($button);
819 $ilToolbar->addSeparator();
821 include_once
"Services/UIComponent/Button/classes/class.ilLinkButton.php";
823 $button->setCaption(
"print");
824 $button->setOnClick(
"if(il.Accordion) { il.Accordion.preparePrint(); } window.print(); return false;");
825 $button->setOmitPreventDoubleSubmission(
true);
826 $ilToolbar->addButtonInstance($button);
828 $finished_ids = null;
830 $finished_ids = $this->
object->getFinishedIdsForAppraiseeId(
$appr_id);
831 if (!
sizeof($finished_ids)) {
832 $finished_ids =
array(-1);
836 $details_figure =
$_POST[
"cp"]
839 $details_view =
$_POST[
"vw"]
844 include_once(
"./Services/UIComponent/NestedList/classes/class.ilNestedList.php");
847 include_once
"./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
848 foreach ($this->
object->getSurveyQuestions() as $qdata) {
850 $q_res = $q_eval->getResults();
855 $this->
renderDetails($details_view, $details_figure, $qdata, $q_eval, $q_res);
858 if ($qdata[
"questionblock_id"] &&
859 $qdata[
"questionblock_id"] != $this->last_questionblock_id) {
861 if ($qblock[
"show_blocktitle"]) {
862 $list->addListNode($qdata[
"questionblock_title"],
"q" . $qdata[
"questionblock_id"]);
864 $this->last_questionblock_id = $qdata[
"questionblock_id"];
866 $anchor_id =
"svyrdq" . $qdata[
"question_id"];
867 $list->addListNode(
"<a href='#" . $anchor_id .
"'>" . $qdata[
"title"] .
"</a>", $qdata[
"question_id"], $qdata[
"questionblock_id"] ?
868 "q" . $qdata[
"questionblock_id"] : 0);
873 $list->setListClass(
"il_Explorer");
874 $toc_tpl->setVariable(
"LIST",
$list->getHTML());
877 $panel_toc = $ui_factory->panel()->standard(
"", $ui_factory->legacy($toc_tpl->get()));
878 $render_toc = $ui_renderer->render($panel_toc);
879 $dtmpl->setVariable(
"PANEL_TOC", $render_toc);
883 $panel_report = $ui_factory->panel()->report($report_title, $this->array_panels);
884 $render_report = $ui_renderer->render($panel_report);
885 $dtmpl->setVariable(
"PANEL_REPORT", $render_report);
888 $this->tpl->setVariable(
'DETAIL', $dtmpl->get());
892 $this->tpl->setVariable(
'MODAL', $modal);
894 include_once
"./Modules/Survey/classes/tables/class.ilSurveyResultsCumulatedTableGUI.php";
896 $this->tpl->setVariable(
'CUMULATED', $table_gui->getHTML());
906 $path_full =
$tree->getPathFull($this->
object->getRefId());
907 foreach ($path_full as
$data) {
908 $path .=
" » ";
909 $path .= $data[
'title'];
913 include_once
"Services/Link/classes/class.ilLink.php";
917 $this->lng->txt(
"path") =>
$path,
918 $this->lng->txt(
"svy_results") => !$details
919 ? $this->lng->txt(
"svy_eval_cumulated")
920 : $this->lng->txt(
"svy_eval_detail"),
924 $this->tpl->setCurrentBlock(
"print_header_bl");
925 foreach ($props as
$key => $value) {
926 $this->tpl->setVariable(
"HEADER_PROP_KEY",
$key);
927 $this->tpl->setVariable(
"HEADER_PROP_VALUE", $value);
928 $this->tpl->parseCurrentBlock();
947 $ui_factory = $this->ui->factory();
948 $a_tpl =
new ilTemplate(
"tpl.svy_results_details_panel.html",
true,
true,
"Modules/Survey");
950 $question_res = $a_results;
952 if (is_array($question_res)) {
953 $question_res = $question_res[0][1];
956 $question = $question_res->getQuestion();
965 $kv[
"users_answered"] = $question_res->getUsersAnswered();
966 $kv[
"users_skipped"] = $question_res->getUsersSkipped();
969 if ($question_res->getModeValue() !== null) {
970 $kv[
"mode"] = wordwrap($question_res->getModeValueAsText(), 50,
"<br />");
971 $kv[
"mode_nr_of_selections"] = $question_res->getModeNrOfSelections();
973 if ($question_res->getMedian() !== null) {
974 $kv[
"median"] = $question_res->getMedianAsText();
976 if ($question_res->getMean() !== null) {
977 $kv[
"arithmetic_mean"] = $question_res->getMean();
982 $qst_title = $question->getTitle();
983 $svy_text = nl2br($question->getQuestiontext());
984 $card_table_tpl =
new ilTemplate(
"tpl.svy_results_details_card.html",
true,
true,
"Modules/Survey");
985 foreach ($kv as
$key => $value) {
986 $card_table_tpl->setCurrentBlock(
"question_statistics_card");
987 $card_table_tpl->setVariable(
"QUESTION_STATISTIC_KEY", $this->lng->txt(
$key));
988 $card_table_tpl->setVariable(
"QUESTION_STATISTIC_VALUE", $value);
989 $card_table_tpl->parseCurrentBlock();
992 $anchor_id =
"svyrdq" . $question->getId();
993 $title =
"<span id='$anchor_id'>$qst_title</span>";
994 $panel_qst_card = $ui_factory->panel()->sub(
$title, $ui_factory->legacy($svy_text))
995 ->withCard($ui_factory->card($svy_type_title)->withSections(
array($ui_factory->legacy($card_table_tpl->get()))));
996 array_push($this->array_panels, $panel_qst_card);
999 if ($a_details_parts ==
"t" ||
1000 $a_details_parts ==
"tc") {
1003 ($a_details_figure ==
"ap" || $a_details_figure ==
"a"),
1004 ($a_details_figure ==
"ap" || $a_details_figure ==
"p")
1007 foreach ($grid[
"cols"] as $col) {
1008 $a_tpl->setCurrentBlock(
"grid_col_header_bl");
1009 $a_tpl->setVariable(
"COL_HEADER", $col);
1010 $a_tpl->parseCurrentBlock();
1012 foreach ($grid[
"rows"] as
$cols) {
1013 foreach ($cols as $idx => $col) {
1015 $a_tpl->touchBlock(
"grid_col_nowrap_bl");
1018 $a_tpl->setCurrentBlock(
"grid_col_bl");
1019 $a_tpl->setVariable(
"COL_CAPTION", trim($col));
1020 $a_tpl->parseCurrentBlock();
1023 $a_tpl->touchBlock(
"grid_row_bl");
1031 if (array_key_exists(
"", $texts)) {
1032 $a_tpl->setVariable(
"TEXT_HEADING", $this->lng->txt(
"given_answers"));
1033 foreach ($texts[
""] as $item) {
1034 $a_tpl->setCurrentBlock(
"text_direct_item_bl");
1035 $a_tpl->setVariable(
"TEXT_DIRECT", nl2br($item));
1036 $a_tpl->parseCurrentBlock();
1039 include_once
"Services/Accordion/classes/class.ilAccordionGUI.php";
1041 $acc->setId(
"svyevaltxt" . $question->getId());
1043 $a_tpl->setVariable(
"TEXT_HEADING", $this->lng->txt(
"freetext_answers"));
1045 foreach ($texts as $var => $items) {
1047 foreach ($items as $item) {
1048 $list[] =
"<li>" . nl2br($item) .
"</li>";
1051 $acc->addItem($var, implode(
"\n",
$list));
1054 $a_tpl->setVariable(
"TEXT_ACC", $acc->getHTML());
1059 if ($a_details_parts ==
"c" ||
1060 $a_details_parts ==
"tc") {
1065 if (is_array(
$chart[1])) {
1066 foreach (
$chart[1] as $legend_item) {
1067 $r = hexdec(substr($legend_item[1], 1, 2));
1068 $g = hexdec(substr($legend_item[1], 3, 2));
1069 $b = hexdec(substr($legend_item[1], 5, 2));
1071 $a_tpl->setCurrentBlock(
"legend_bl");
1072 $a_tpl->setVariable(
"LEGEND_CAPTION", $legend_item[0]);
1073 $a_tpl->setVariable(
"LEGEND_COLOR", $legend_item[1]);
1074 $a_tpl->setVariable(
"LEGEND_COLOR_SVG",
$r .
"," . $g .
"," . $b);
1075 $a_tpl->parseCurrentBlock();
1081 $a_tpl->setVariable(
"CHART",
$chart);
1084 $panel = $ui_factory->panel()->sub(
"", $ui_factory->legacy($a_tpl->get()));
1085 array_push($this->array_panels, $panel);
1099 if ($this->
object->get360Mode()) {
1104 $options[
""] = $this->lng->txt(
"please_select");
1107 foreach ($this->
object->getAppraiseesData() as $item) {
1108 if ($item[
"closed"]) {
1109 $options[$item[
"user_id"]] = $item[
"login"];
1115 if (
$rbacsystem->checkAccess(
"write", $this->object->getRefId()) ||
1117 include_once(
"./Services/Form/classes/class.ilSelectInputGUI.php");
1118 $appr =
new ilSelectInputGUI($this->lng->txt(
"survey_360_appraisee"),
"appr_id");
1121 $ilToolbar->addInputItem($appr,
true);
1123 include_once
"Services/UIComponent/Button/classes/class.ilSubmitButton.php";
1125 $button->setCaption(
"survey_360_select_appraisee");
1126 $button->setCommand($this->ctrl->getCmd());
1127 $ilToolbar->addButtonInstance($button);
1130 $ilToolbar->addSeparator();
1151 $resultarray =
array();
1152 foreach (
$row as $rowindex => $entry) {
1153 if (is_array($entry)) {
1154 $entry = implode(
"/", $entry);
1160 if (strpos($entry,
"\"") !==
false) {
1161 $entry = str_replace(
"\"",
"\"\"", $entry);
1164 if (strpos($entry, $separator) !==
false) {
1168 $entry = str_replace(chr(13) . chr(10), chr(10), $entry);
1170 $resultarray[$rowindex] = utf8_decode(
"\"" . $entry .
"\"");
1172 $resultarray[$rowindex] = utf8_decode($entry);
1175 return $resultarray;
1183 $title_row = $title_row2 =
array();
1184 $title_row[] = $this->lng->txt(
"lastname");
1185 $title_row[] = $this->lng->txt(
"firstname");
1186 $title_row[] = $this->lng->txt(
"login");
1187 $title_row[] = $this->lng->txt(
'workingtime');
1188 $title_row[] = $this->lng->txt(
'survey_results_finished');
1194 if ($this->
object->canExportSurveyCode()) {
1195 $title_row[] = $this->lng->txt(
"codes");
1199 $questions =
array();
1201 include_once
"./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
1202 foreach ($this->
object->getSurveyQuestions() as $qdata) {
1204 $q_res = $q_eval->getResults();
1206 $questions[$qdata[
"question_id"]] =
array($q_eval, $q_res);
1208 $question = is_array($q_res)
1209 ? $q_res[0][1]->getQuestion()
1210 : $q_res->getQuestion();
1212 $do_title = $do_label =
true;
1213 switch (
$_POST[
'export_label']) {
1215 $title_row[] = $question->label;
1221 $title_row[] = $question->getTitle();
1227 $title_row[] = $question->getTitle();
1228 $title_row2[] = $question->label;
1232 $q_eval->getUserSpecificVariableTitles($title_row, $title_row2, $do_title, $do_label);
1238 $rows[] = $title_row;
1239 if (implode(
"", $title_row2)) {
1240 $rows[] = $title_row2;
1246 $finished_ids = null;
1247 if ($this->
object->get360Mode()) {
1250 $this->ctrl->redirect($this,
"evaluationuser");
1252 $finished_ids = $this->
object->getFinishedIdsForAppraiseeId(
$appr_id);
1253 if (!
sizeof($finished_ids)) {
1254 $finished_ids =
array(-1);
1258 $participants = $this->
object->getSurveyParticipants($finished_ids);
1260 include_once
"./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
1261 foreach ($participants as
$user) {
1262 $user_id = $user[
"active_id"];
1265 $row[] = trim($user[
"lastname"])
1268 $row[] = $user[
"firstname"];
1269 $row[] = $user[
"login"];
1271 if ($this->
object->canExportSurveyCode()) {
1275 $row[] = $this->
object->getWorkingtimeForParticipant($user_id);
1277 if ((
bool) $user[
"finished"]) {
1279 $row[] = (
$_POST[
"export_format"] == self::TYPE_XLS)
1286 foreach ($questions as $item) {
1290 $q_eval->addUserSpecificResults(
$row, $user_id, $q_res);
1297 $surveyname = $this->
object->getTitle() .
" " . $this->lng->txt(
"svy_eval_user") .
" " .
date(
"Y-m-d");
1298 $surveyname = preg_replace(
"/\s/",
"_", trim($surveyname));
1301 switch (
$_POST[
"export_format"]) {
1302 case self::TYPE_XLS:
1303 include_once
"Services/Excel/classes/class.ilExcel.php";
1305 $excel->addSheet($this->lng->txt(
"svy_eval_user"));
1308 foreach (
$row as $col_idx => $col) {
1309 $excel->setCell($row_idx+1, $col_idx, $col);
1312 $excel->setBold(
"A1:" . $excel->getColumnCoord(
sizeof(
$row)-1) .
"1");
1315 $excel->sendToClient($surveyname);
1321 foreach (
$rows as $csvrow) {
1322 $csvrow = str_replace(
"\n",
" ", $this->
processCSVRow($csvrow,
true, $separator));
1323 $csv .= join($csvrow, $separator) .
"\n";
1342 if (!$ilAccess->checkAccess(
"write",
"", $this->object->getRefId())) {
1344 $this->ctrl->redirectByClass(
"ilObjSurveyGUI",
"infoScreen");
1347 include_once
"Services/Form/classes/class.ilPropertyFormGUI.php";
1348 $ilToolbar->setFormAction($this->ctrl->getFormAction($this,
"evaluationuser"));
1350 if ($this->
object->get360Mode()) {
1357 $modal_id =
"svy_ev_exp";
1360 include_once
"Services/UIComponent/Button/classes/class.ilLinkButton.php";
1362 $button->setCaption(
"export");
1363 $button->setOnClick(
'$(\'#' . $modal_id .
'\').modal(\
'show\')');
1364 $ilToolbar->addButtonInstance($button);
1366 $ilToolbar->addSeparator();
1368 include_once
"Services/UIComponent/Button/classes/class.ilLinkButton.php";
1370 $button->setCaption(
"print");
1371 $button->setOnClick(
"window.print(); return false;");
1372 $button->setOmitPreventDoubleSubmission(
true);
1373 $ilToolbar->addButtonInstance($button);
1375 $finished_ids = null;
1377 $finished_ids = $this->
object->getFinishedIdsForAppraiseeId(
$appr_id);
1378 if (!
sizeof($finished_ids)) {
1379 $finished_ids =
array(-1);
1394 include_once
"./Modules/Survey/classes/tables/class.ilSurveyResultsUserTableGUI.php";
1397 $this->tpl->setContent($table_gui->getHTML() . $modal);
1404 $participants = $this->
object->getSurveyParticipants($a_finished_ids);
1406 include_once
"./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
1407 foreach ($this->
object->getSurveyQuestions() as $qdata) {
1409 $q_res = $q_eval->getResults();
1411 $question = is_array($q_res)
1412 ? $q_res[0][1]->getQuestion()
1413 : $q_res->getQuestion();
1415 foreach ($participants as
$user) {
1416 $user_id = $user[
"active_id"];
1418 $parsed_results = $q_eval->parseUserSpecificResults($q_res, $user_id);
1420 if (!array_key_exists($user_id,
$data)) {
1421 $wt = $this->
object->getWorkingtimeForParticipant($user_id);
1423 $finished = $user[
"finished"]
1424 ? $user[
"finished_tstamp"]
1428 "username" => $user[
"sortname"],
1429 "question" => $question->getTitle(),
1430 "results" => $parsed_results,
1431 "workingtime" => $wt,
1432 "finished" => $finished,
1433 "subitems" =>
array()
1438 "question" => $question->getTitle(),
1439 "results" => $parsed_results,
1440 "workingtime" => null,
1467 $ilTabs->activateSubtab(
"svy_eval_competences");
1468 $ilTabs->activateTab(
"svy_results");
1470 $ilToolbar->setFormAction($this->ctrl->getFormAction($this,
"competenceEval"));
1472 if ($this->
object->get360Mode()) {
1482 $eval_modes =
array();
1485 include_once(
"./Modules/Survey/classes/class.ilSurveySkill.php");
1487 $opts = $sskill->getAllAssignedSkillsAsOptions();
1489 foreach ($opts as
$id => $o) {
1490 $idarr = explode(
":",
$id);
1492 "base_skill" => $idarr[0],
"tref_id" => $idarr[1]);
1498 include_once(
"./Services/Skill/classes/class.ilSkillProfile.php");
1500 foreach ($profiles as $p) {
1502 $prof_levels = $prof->getSkillLevels();
1503 foreach ($prof_levels as $pl) {
1504 if (isset($skills[$pl[
"base_skill_id"] .
":" . $pl[
"tref_id"]])) {
1505 $skills[$pl[
"base_skill_id"] .
":" . $pl[
"tref_id"]][
"profiles"][] =
1508 $eval_modes[
"gap_" . $p[
"id"]] =
1509 $lng->txt(
"svy_gap_analysis") .
": " . $prof->getTitle();
1519 foreach ($skills as $sk) {
1520 if (count($sk[
"profiles"]) == 0) {
1521 $eval_modes[
"skills_of_survey"] =
$lng->txt(
"svy_all_survey_competences");
1526 $comp_eval_mode =
$_GET[
"comp_eval_mode"];
1527 if (
$_POST[
"comp_eval_mode"] !=
"") {
1528 $comp_eval_mode =
$_POST[
"comp_eval_mode"];
1531 if (!isset($eval_modes[$comp_eval_mode])) {
1533 $comp_eval_mode = key($eval_modes);
1534 $ilCtrl->setParameter($this,
"comp_eval_mode", $comp_eval_mode);
1537 $ilCtrl->saveParameter($this,
"comp_eval_mode");
1539 include_once(
"./Services/Form/classes/class.ilSelectInputGUI.php");
1542 $mode_sel->setValue($comp_eval_mode);
1543 $ilToolbar->addInputItem($mode_sel,
true);
1545 $ilToolbar->addFormButton(
$lng->txt(
"select"),
"competenceEval");
1547 if (substr($comp_eval_mode, 0, 4) ==
"gap_") {
1549 $profile_id = (int) substr($comp_eval_mode, 4);
1551 include_once(
"./Services/Skill/classes/class.ilPersonalSkillsGUI.php");
1553 $pskills_gui->setProfileId($profile_id);
1554 $pskills_gui->setGapAnalysisActualStatusModePerObject($survey->getId(),
$lng->txt(
"skmg_eval_type_1"));
1555 if ($survey->getFinishedIdForAppraiseeIdAndRaterId(
$appr_id,
$appr_id) > 0) {
1557 $self_levels =
array();
1558 foreach ($sskill->determineSkillLevelsForAppraisee(
$appr_id,
true) as $sl) {
1559 $self_levels[$sl[
"base_skill_id"]][$sl[
"tref_id"]] = $sl[
"new_level_id"];
1561 $pskills_gui->setGapAnalysisSelfEvalLevels($self_levels);
1567 include_once(
"./Services/Skill/classes/class.ilPersonalSkillsGUI.php");
1569 $pskills_gui->setGapAnalysisActualStatusModePerObject($survey->getId(),
$lng->txt(
"skmg_eval_type_1"));
1570 if ($survey->getFinishedIdForAppraiseeIdAndRaterId(
$appr_id,
$appr_id) > 0) {
1572 $self_levels =
array();
1573 foreach ($sskill->determineSkillLevelsForAppraisee(
$appr_id,
true) as $sl) {
1574 $self_levels[$sl[
"base_skill_id"]][$sl[
"tref_id"]] = $sl[
"new_level_id"];
1576 $pskills_gui->setGapAnalysisSelfEvalLevels($self_levels);
1579 foreach ($skills as $skill) {
1581 "base_skill_id" => (
int) $skill[
"base_skill"],
1582 "tref_id" => (
int) $skill[
"tref_id"]
static deliverData($a_data, $a_filename, $mime="application/octet-stream", $charset="")
deliver data for download via browser.
getExportGrid($a_results)
Get grid data.
parseResultsToExcel(ilExcel $a_excel, ilSurveyEvaluationResults $a_results, &$a_excel_row, array $a_grid=null, array $a_text_answers=null, $a_include_mode=true)
if(isset($_REQUEST['delete'])) $list
exportResultsDetailsExcel(ilExcel $a_excel, SurveyQuestionEvaluation $a_eval, $a_results, $a_do_title, $a_do_label)
Export details (excel only)
setEvalSubtabs()
Set the tabs for the evaluation output.
evaluationuser()
Print the survey evaluation for a selected user.
const EVALUATION_ACCESS_OFF
Skill management settings.
const EVALUATION_ACCESS_PARTICIPANTS
renderDetails($a_details_parts, $a_details_figure, array $a_qdata, SurveyQuestionEvaluation $a_eval, $a_results)
Render details.
cancelEvaluationAccess()
Cancels the input of the survey access code for evaluation access.
static _getStaticLink( $a_ref_id, $a_type='', $a_fallback_goto=true, $append="")
Get static link.
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false)
Format a date public.
setAppraiseeId($a_val)
Set appraisee id.
if(!array_key_exists('StateId', $_REQUEST)) $id
static setUseRelativeDates($a_status)
set use relative dates
addApprSelectionToToolbar()
Add appraisee selection to toolbar.
Survey question evaluation.
getCoordByColumnAndRow($pColumn=0, $pRow=1)
Get cell coordinate (e.g.
parseUserSpecificResults(array $a_finished_ids=null)
static _getQuestionTypeName($type_tag)
Return the translation for a given question type tag.
exportCumulatedResults($details=0)
static getASCIIFilename($a_filename)
convert utf8 to ascii filename
getAppraiseeId()
Get appraisee id.
checkEvaluationAccess()
Checks the evaluation access after entering the survey access code.
Survey evaluation answers.
Skill/Competence handling in surveys.
processCSVRow($row, $quoteAll=false, $separator=";")
Processes an array as a CSV row and converts the array values to correct CSV values.
getGrid($a_results, $a_abs=true, $a_perc=true)
Get grid data.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
Personal skills GUI class.
static getProfilesOfUser($a_user_id)
Get profiles of a user.
if(isset($_POST['submit'])) $form
addSheet($a_name, $a_activate=true)
Add sheet.
setBold($a_coords)
Set cell(s) to bold.
static _instanciateQuestionEvaluation($question_id, array $a_finished_ids=null)
Creates an instance of a question evaluation with a given question id.
static _lookupObjId($a_id)
date( 'd-M-Y', $objPHPExcel->getProperties() ->getCreated())
special template class to simplify handling of ITX/PEAR
buildExportModal($a_id, $a_cmd)
competenceEval()
Competence Evaluation.
checkAnonymizedEvaluationAccess()
Show the detailed evaluation.
setCell($a_row, $a_col, $a_value, $a_datatype=null)
Set cell value.
static _getQuestionblock($questionblock_id)
Returns the database row for a given question block.
Create styles array
The data for the language used.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
const EVALUATION_ACCESS_ALL
static _hasEvaluationAccess($a_obj_id, $user_id)
static getInstance()
Get instance.
setColors($a_coords, $a_background, $a_font=null)
Set cell(s) colors.
Create new PHPExcel object
obj_idprivate
__construct($a_object)
ilSurveyEvaluationGUI constructor
executeCommand()
execute command
static getLogger($a_component_id)
Get component logger.
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
Survey evaluation graphical output.
evaluationdetails()
Show the detailed evaluation.
Accordion user interface class.
determineAppraiseeId()
Determine appraisee id.
getChart($a_results)
Get chart.
if(!isset($_REQUEST['ReturnTo'])) if(!isset($_REQUEST['AuthId'])) $options
getTextAnswers($a_results)
Get text answers.