ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
ilSurveyEvaluationGUI Class Reference

Survey evaluation graphical output. More...

+ Collaboration diagram for ilSurveyEvaluationGUI:

Public Member Functions

 __construct ($a_object)
 ilSurveyEvaluationGUI constructor More...
 
 executeCommand ()
 execute command More...
 
 getCommand ($cmd)
 
 setEvalSubtabs ()
 Set the tabs for the evaluation output. More...
 
 setAppraiseeId ($a_val)
 Set appraisee id. More...
 
 getAppraiseeId ()
 Get appraisee id. More...
 
 determineAppraiseeId ()
 Determine appraisee id. More...
 
 checkAnonymizedEvaluationAccess ()
 Show the detailed evaluation. More...
 
 checkEvaluationAccess ()
 Checks the evaluation access after entering the survey access code. More...
 
 cancelEvaluationAccess ()
 Cancels the input of the survey access code for evaluation access. More...
 
 evaluationdetails ()
 Show the detailed evaluation. More...
 
 exportCumulatedResults ($details=0)
 
 exportData ()
 
 exportDetailData ()
 
 printEvaluation ()
 
 evaluation ($details=0, $pdf=false, $return_pdf=false)
 
 addApprSelectionToToolbar ()
 Add appraisee selection to toolbar. More...
 
 processCSVRow ($row, $quoteAll=false, $separator=";")
 Processes an array as a CSV row and converts the array values to correct CSV values. More...
 
 exportEvaluationUser ()
 
 evaluationuser ()
 Print the survey evaluation for a selected user. More...
 
 competenceEval ()
 Competence Evaluation. More...
 
 evaluationpdf ()
 
 evaluationdetailspdf ()
 
 downloadChart ()
 
 renderChartOnly ()
 
 generateAndSendPDF ($html, $filename="")
 
 callPdfGeneration ($a_url, $a_suffix, $a_filename, $a_return=false)
 

Data Fields

const TYPE_XLS = "excel"
 
const TYPE_SPSS = "csv"
 
const EXCEL_SUBTITLE = "DDDDDD"
 
 $object
 
 $lng
 
 $tpl
 
 $ctrl
 
 $appr_id = null
 

Protected Member Functions

 exportResultsDetailsExcel (ilExcel $a_excel, SurveyQuestionEvaluation $a_eval, $a_results, $a_do_title, $a_do_label)
 Export details (excel only) More...
 
 parseResultsToExcel (ilExcel $a_excel, ilSurveyEvaluationResults $a_results, &$a_excel_row, array $a_grid=null, array $a_text_answers=null, $a_include_mode=true)
 
 buildExportModal ($a_id, $a_cmd)
 
 renderDetails ($a_details_parts, $a_details_figure, array $a_qdata, SurveyQuestionEvaluation $a_eval, $a_results, $pdf)
 Render details. More...
 
 filterSurveyParticipantsByAccess ($a_finished_ids)
 
 parseUserSpecificResults (array $a_finished_ids=null)
 
 hasResultsAccess ()
 Check if user can view results granted by rbac or positions. More...
 

Protected Attributes

 $tabs
 
 $access
 
 $user
 
 $rbacsystem
 
 $tree
 
 $toolbar
 

Detailed Description

Survey evaluation graphical output.

The ilSurveyEvaluationGUI class creates the evaluation output for the ilObjSurveyGUI class. This saves some heap space because the ilObjSurveyGUI class will be smaller.

Author
Helmut Schottmüller helmu.nosp@m.t.sc.nosp@m.hottm.nosp@m.uell.nosp@m.er@ma.nosp@m.c.co.nosp@m.m
Version
$Id$

Definition at line 15 of file class.ilSurveyEvaluationGUI.php.

Constructor & Destructor Documentation

◆ __construct()

ilSurveyEvaluationGUI::__construct (   $a_object)

ilSurveyEvaluationGUI constructor

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

Parameters
object$a_objectAssociated ilObjSurvey class @access public

Definition at line 66 of file class.ilSurveyEvaluationGUI.php.

67 {
68 global $DIC;
69
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();
78 $tpl = $DIC["tpl"];
79 $ilCtrl = $DIC->ctrl();
80
81 $this->lng = $lng;
82 $this->tpl = $tpl;
83 $this->ctrl = $ilCtrl;
84 $this->object = $a_object;
85 $this->log = ilLoggerFactory::getLogger("svy");
86 $this->array_panels = array();
87
88 if ($this->object->get360Mode() || $this->object->getMode() == ilObjSurvey::MODE_SELF_EVAL) {
89 $this->determineAppraiseeId();
90 }
91 }
user()
Definition: user.php:4
static getLogger($a_component_id)
Get component logger.
determineAppraiseeId()
Determine appraisee id.
global $ilCtrl
Definition: ilias.php:18
ui()
Definition: ui.php:5
$DIC
Definition: xapitoken.php:46

References $DIC, $ilCtrl, $lng, $tpl, determineAppraiseeId(), ilLoggerFactory\getLogger(), ilObjSurvey\MODE_SELF_EVAL, ui(), and user().

+ Here is the call graph for this function:

Member Function Documentation

◆ addApprSelectionToToolbar()

ilSurveyEvaluationGUI::addApprSelectionToToolbar ( )

Add appraisee selection to toolbar.

Parameters

return

Definition at line 1154 of file class.ilSurveyEvaluationGUI.php.

1155 {
1156 $ilToolbar = $this->toolbar;
1158
1159 $svy_mode = $this->object->getMode();
1160 if ($svy_mode == ilObjSurvey::MODE_360 || $svy_mode == ilObjSurvey::MODE_SELF_EVAL) {
1161 $appr_id = $this->getAppraiseeId();
1162
1163 $options = array();
1164 if (!$appr_id) {
1165 $options[""] = $this->lng->txt("please_select");
1166 }
1167
1168 $no_appr = true;
1169 if ($this->object->get360Mode()) {
1170 foreach ($this->object->getAppraiseesData() as $item) {
1171 if ($item["closed"]) {
1172 $options[$item["user_id"]] = $item["login"];
1173 $no_appr = false;
1174 }
1175 }
1176 } else { //self evaluation mode
1177 foreach ($this->object->getSurveyParticipants() as $item) {
1178 $options[ilObjUser::_lookupId($item['login'])] = $item['login'];
1179 $no_appr = false;
1180 }
1181 }
1182
1183 if (!$no_appr) {
1184 if ($rbacsystem->checkAccess("write", $this->object->getRefId()) ||
1185 $this->object->get360Results() == ilObjSurvey::RESULTS_360_ALL ||
1186 $this->object->getSelfEvaluationResults() == ilObjSurvey::RESULTS_SELF_EVAL_ALL) {
1187 $appr = new ilSelectInputGUI($this->lng->txt("svy_participant"), "appr_id");
1188 $appr->setOptions($options);
1189 $appr->setValue($this->getAppraiseeId());
1190 $ilToolbar->addInputItem($appr, true);
1191
1192 $button = ilSubmitButton::getInstance();
1193 $button->setCaption("survey_360_select_appraisee");
1194 $button->setCommand($this->ctrl->getCmd());
1195 $ilToolbar->addButtonInstance($button);
1196
1197 if ($appr_id) {
1198 $ilToolbar->addSeparator();
1199 }
1200 }
1201 } else {
1202 ilUtil::sendFailure($this->lng->txt("survey_360_no_closed_appraisees"));
1203 }
1204 }
1205 }
const RESULTS_SELF_EVAL_ALL
static _lookupId($a_user_str)
Lookup id by login.
This class represents a selection list property in a property form.
static getInstance()
Factory.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.

References $appr_id, $rbacsystem, $toolbar, ilObjUser\_lookupId(), getAppraiseeId(), ilSubmitButton\getInstance(), ilObjSurvey\MODE_360, ilObjSurvey\MODE_SELF_EVAL, ilObjSurvey\RESULTS_360_ALL, ilObjSurvey\RESULTS_SELF_EVAL_ALL, and ilUtil\sendFailure().

Referenced by competenceEval(), evaluation(), and evaluationuser().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildExportModal()

ilSurveyEvaluationGUI::buildExportModal (   $a_id,
  $a_cmd 
)
protected

Definition at line 687 of file class.ilSurveyEvaluationGUI.php.

688 {
690
691 $form_id = "svymdfrm";
692
693 // hide modal on form submit
694 $tpl->addOnLoadCode('$("#form_' . $form_id . '").submit(function() { $("#' . $a_id . '").modal("hide"); });');
695
696 $modal = ilModalGUI::getInstance();
697 $modal->setId($a_id);
698 $modal->setHeading(($this->lng->txt("svy_export_format")));
699
700 $form = new ilPropertyFormGUI();
701 $form->setId($form_id);
702 $form->setFormAction($this->ctrl->getFormAction($this, $a_cmd));
703
704 $format = new ilSelectInputGUI($this->lng->txt("filetype"), "export_format");
705 $format->setOptions(array(
706 self::TYPE_XLS => $this->lng->txt('exp_type_excel'),
707 self::TYPE_SPSS => $this->lng->txt('exp_type_csv')
708 ));
709 $form->addItem($format, true);
710
711 $label = new ilSelectInputGUI($this->lng->txt("title"), "export_label");
712 $label->setOptions(array(
713 'label_only' => $this->lng->txt('export_label_only'),
714 'title_only' => $this->lng->txt('export_title_only'),
715 'title_label' => $this->lng->txt('export_title_label')
716 ));
717 $form->addItem($label);
718
719 $form->addCommandButton($a_cmd, $this->lng->txt("export"));
720 $form->setPreventDoubleSubmission(false);
721
722 $modal->setBody($form->getHTML());
723
724 return $modal->getHTML();
725 }
static getInstance()
Get instance.
This class represents a property form user interface.
const TYPE_SPSS
$format
Definition: metadata.php:218

References $format, $tpl, ilModalGUI\getInstance(), and TYPE_SPSS.

Referenced by evaluation(), and evaluationuser().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ callPdfGeneration()

ilSurveyEvaluationGUI::callPdfGeneration (   $a_url,
  $a_suffix,
  $a_filename,
  $a_return = false 
)

Definition at line 1781 of file class.ilSurveyEvaluationGUI.php.

1782 {
1783 $script = ILIAS_ABSOLUTE_PATH . "/Modules/Survey/js/phantom.js";
1784
1785 $bin = ilUtil::isWindows()
1786 ? ILIAS_ABSOLUTE_PATH . "/libs/composer/vendor/jakoch/phantomjs/bin/phantomjs.exe"
1787 : ILIAS_ABSOLUTE_PATH . "/libs/composer/vendor/jakoch/phantomjs/bin/phantomjs";
1788
1789 $parts = parse_url(ILIAS_HTTP_PATH);
1790
1791 $target = ilUtil::ilTempnam() . "." . $a_suffix;
1792 $path = $parts["path"];
1793 if (empty($path)) {
1794 $path = "''";
1795 }
1796
1797 $args = array(
1798 session_id(),
1799 $parts["host"],
1800 $parts["path"] ? $parts["path"] : '/',
1801 CLIENT_ID,
1802 "\"" . ILIAS_HTTP_PATH . "/" . $a_url . "\"",
1803 $target
1804 );
1805
1806 ilSession::_writeData(session_id(), session_encode());
1807
1808 $output = $return = "";
1809
1810 exec($executable_string = $bin . " " . $script . " " . implode(" ", $args), $output, $return);
1811
1813 $log->debug($executable_string);
1814 $log->dump($output, ilLogLevel::DEBUG);
1815 $log->dump($return, ilLogLevel::DEBUG);
1816
1817 $mime_type = '';
1818 if (substr($a_filename, -3) == 'pdf') {
1819 $mime_type = 'application/pdf';
1820 } elseif (substr($a_filename, -3) == 'png') {
1821 $mime_type = 'image/png';
1822 }
1823
1824 if (!$a_return) {
1825 ilUtil::deliverFile($target, $a_filename, $mime_type);
1826 } else {
1827 ilLoggerFactory::getRootLogger()->debug("**** Return a target = " . $target);
1828 return $target;
1829 }
1830 }
static getRootLogger()
The unique root logger has a fixed error level.
static _writeData($a_session_id, $a_data)
Write session data.
static isWindows()
check wether the current client system is a windows system
static ilTempnam($a_temp_path=null)
Returns a unique and non existing Path for e temporary file or directory.
static deliverFile( $a_file, $a_filename, $a_mime='', $isInline=false, $removeAfterDelivery=false, $a_exit_after=true)
deliver file for download via browser.
$log
Definition: result.php:15

References $log, ilSession\_writeData(), ilLogLevel\DEBUG, ilUtil\deliverFile(), ilLoggerFactory\getLogger(), ilLoggerFactory\getRootLogger(), ILIAS_HTTP_PATH, ilUtil\ilTempnam(), and ilUtil\isWindows().

+ Here is the call graph for this function:

◆ cancelEvaluationAccess()

ilSurveyEvaluationGUI::cancelEvaluationAccess ( )

Cancels the input of the survey access code for evaluation access.

Cancels the input of the survey access code for evaluation access

@access private

Definition at line 313 of file class.ilSurveyEvaluationGUI.php.

314 {
317 $path = $tree->getPathFull($this->object->getRefID());
318 $ilCtrl->setParameterByClass(
319 "ilrepositorygui",
320 "ref_id",
321 $path[count($path) - 2]["child"]
322 );
323 $ilCtrl->redirectByClass("ilrepositorygui", "frameset");
324 }

References $ctrl, $ilCtrl, and $tree.

Referenced by checkEvaluationAccess().

+ Here is the caller graph for this function:

◆ checkAnonymizedEvaluationAccess()

ilSurveyEvaluationGUI::checkAnonymizedEvaluationAccess ( )

Show the detailed evaluation.

Show the detailed evaluation

@access private

Definition at line 238 of file class.ilSurveyEvaluationGUI.php.

239 {
241
242 if ($this->object->getAnonymize() == 1 &&
243 $_SESSION["anon_evaluation_access"] == $_GET["ref_id"]) {
244 return true;
245 }
246
248 if ($this->object->getAnonymize() == 1) {
249 $_SESSION["anon_evaluation_access"] = $_GET["ref_id"];
250 }
251 return true;
252 }
253
254 if ($this->object->getAnonymize() == 1) {
255 // autocode
256 $surveycode = $this->object->getUserAccessCode($ilUser->getId());
257 if ($this->object->isAnonymizedParticipant($surveycode)) {
258 $_SESSION["anon_evaluation_access"] = $_GET["ref_id"];
259 return true;
260 }
261
262 /* try to find code for current (registered) user from existing run
263 if($this->object->findCodeForUser($ilUser->getId()))
264 {
265 $_SESSION["anon_evaluation_access"] = $_GET["ref_id"];
266 return true;
267 }
268 */
269
270 // code needed
271 $this->tpl->setVariable("TABS", "");
272 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_svy_svy_evaluation_checkaccess.html", "Modules/Survey");
273 $this->tpl->setCurrentBlock("adm_content");
274 $this->tpl->setVariable("AUTHENTICATION_NEEDED", $this->lng->txt("svy_check_evaluation_authentication_needed"));
275 $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this, "checkEvaluationAccess"));
276 $this->tpl->setVariable("EVALUATION_CHECKACCESS_INTRODUCTION", $this->lng->txt("svy_check_evaluation_access_introduction"));
277 $this->tpl->setVariable("VALUE_CHECK", $this->lng->txt("ok"));
278 $this->tpl->setVariable("VALUE_CANCEL", $this->lng->txt("cancel"));
279 $this->tpl->setVariable("TEXT_SURVEY_CODE", $this->lng->txt("survey_code"));
280 $this->tpl->parseCurrentBlock();
281 }
282
283 $_SESSION["anon_evaluation_access"] = null;
284 return false;
285 }
$_GET["client_id"]
$_SESSION["AccountId"]
static _hasEvaluationAccess($a_obj_id, $user_id)
static _lookupObjId($a_id)
$ilUser
Definition: imgupload.php:18

References $_GET, $_SESSION, $ilUser, $user, ilObjSurveyAccess\_hasEvaluationAccess(), and ilObject\_lookupObjId().

Referenced by evaluation().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ checkEvaluationAccess()

ilSurveyEvaluationGUI::checkEvaluationAccess ( )

Checks the evaluation access after entering the survey access code.

Checks the evaluation access after entering the survey access code

@access private

Definition at line 294 of file class.ilSurveyEvaluationGUI.php.

295 {
296 $surveycode = $_POST["surveycode"];
297 if ($this->object->isAnonymizedParticipant($surveycode)) {
298 $_SESSION["anon_evaluation_access"] = $_GET["ref_id"];
299 $this->evaluation();
300 } else {
301 ilUtil::sendFailure($this->lng->txt("svy_check_evaluation_wrong_key", true));
302 $this->cancelEvaluationAccess();
303 }
304 }
$_POST["username"]
cancelEvaluationAccess()
Cancels the input of the survey access code for evaluation access.
evaluation($details=0, $pdf=false, $return_pdf=false)

References $_GET, $_POST, $_SESSION, cancelEvaluationAccess(), evaluation(), and ilUtil\sendFailure().

+ Here is the call graph for this function:

◆ competenceEval()

ilSurveyEvaluationGUI::competenceEval ( )

Competence Evaluation.

Parameters

return

Definition at line 1544 of file class.ilSurveyEvaluationGUI.php.

1545 {
1547 $lng = $this->lng;
1549 $ilToolbar = $this->toolbar;
1550 $tpl = $this->tpl;
1551 $ilTabs = $this->tabs;
1552
1553 $survey = $this->object;
1554
1555 $ilTabs->activateSubtab("svy_eval_competences");
1556 $ilTabs->activateTab("svy_results");
1557
1558 $ilToolbar->setFormAction($this->ctrl->getFormAction($this, "competenceEval"));
1559
1560 if ($this->object->get360Mode() || $survey->getMode() == ilObjSurvey::MODE_SELF_EVAL) {
1561 $appr_id = $this->getAppraiseeId();
1563 }
1564
1565 if ($appr_id == 0) {
1566 return;
1567 }
1568
1569 // evaluation modes
1570 $eval_modes = array();
1571
1572 // get all competences of survey
1573 $sskill = new ilSurveySkill($survey);
1574 $opts = $sskill->getAllAssignedSkillsAsOptions();
1575 $skills = array();
1576 foreach ($opts as $id => $o) {
1577 $idarr = explode(":", $id);
1578 $skills[$id] = array("id" => $id, "title" => $o, "profiles" => array(),
1579 "base_skill" => $idarr[0], "tref_id" => $idarr[1]);
1580 }
1581
1582 // get matching user competence profiles
1583 // -> add gap analysis to profile
1585 foreach ($profiles as $p) {
1586 $prof = new ilSkillProfile($p["id"]);
1587 $prof_levels = $prof->getSkillLevels();
1588 foreach ($prof_levels as $pl) {
1589 if (isset($skills[$pl["base_skill_id"] . ":" . $pl["tref_id"]])) {
1590 $skills[$pl["base_skill_id"] . ":" . $pl["tref_id"]]["profiles"][] =
1591 $p["id"];
1592
1593 $eval_modes["gap_" . $p["id"]] =
1594 $lng->txt("svy_gap_analysis") . ": " . $prof->getTitle();
1595 }
1596 }
1597 }
1598 //var_dump($skills);
1599 //var_dump($eval_modes);
1600
1601 // if one competence does not match any profiles
1602 // -> add "competences of survey" alternative
1603 reset($skills);
1604 foreach ($skills as $sk) {
1605 if (count($sk["profiles"]) == 0) {
1606 $eval_modes["skills_of_survey"] = $lng->txt("svy_all_survey_competences");
1607 }
1608 }
1609
1610 // final determination of current evaluation mode
1611 $comp_eval_mode = $_GET["comp_eval_mode"];
1612 if ($_POST["comp_eval_mode"] != "") {
1613 $comp_eval_mode = $_POST["comp_eval_mode"];
1614 }
1615
1616 if (!isset($eval_modes[$comp_eval_mode])) {
1617 reset($eval_modes);
1618 $comp_eval_mode = key($eval_modes);
1619 $ilCtrl->setParameter($this, "comp_eval_mode", $comp_eval_mode);
1620 }
1621
1622 $ilCtrl->saveParameter($this, "comp_eval_mode");
1623
1624 $mode_sel = new ilSelectInputGUI($lng->txt("svy_analysis"), "comp_eval_mode");
1625 $mode_sel->setOptions($eval_modes);
1626 $mode_sel->setValue($comp_eval_mode);
1627 $ilToolbar->addInputItem($mode_sel, true);
1628
1629 $ilToolbar->addFormButton($lng->txt("select"), "competenceEval");
1630
1631 if (substr($comp_eval_mode, 0, 4) == "gap_") {
1632 // gap analysis
1633 $profile_id = (int) substr($comp_eval_mode, 4);
1634
1635 $pskills_gui = new ilPersonalSkillsGUI();
1636 $pskills_gui->setProfileId($profile_id);
1637 $pskills_gui->setGapAnalysisActualStatusModePerObject($survey->getId(), $lng->txt("skmg_eval_type_1"));
1638 if ($survey->getFinishedIdForAppraiseeIdAndRaterId($appr_id, $appr_id) > 0) {
1639 $sskill = new ilSurveySkill($survey);
1640 $self_levels = array();
1641 foreach ($sskill->determineSkillLevelsForAppraisee($appr_id, true) as $sl) {
1642 $self_levels[$sl["base_skill_id"]][$sl["tref_id"]] = $sl["new_level_id"];
1643 }
1644 $pskills_gui->setGapAnalysisSelfEvalLevels($self_levels);
1645 }
1646 $html = $pskills_gui->getGapAnalysisHTML($appr_id);
1647
1648 $tpl->setContent($html);
1649 } else { // must be all survey competences
1650 $pskills_gui = new ilPersonalSkillsGUI();
1651 #23743
1652 if ($survey->getMode() != ilObjSurvey::MODE_SELF_EVAL) {
1653 $pskills_gui->setGapAnalysisActualStatusModePerObject($survey->getId(), $lng->txt("skmg_eval_type_1"));
1654 }
1655 if ($survey->getFinishedIdForAppraiseeIdAndRaterId($appr_id, $appr_id) > 0) {
1656 $sskill = new ilSurveySkill($survey);
1657 $self_levels = array();
1658 foreach ($sskill->determineSkillLevelsForAppraisee($appr_id, true) as $sl) {
1659 $self_levels[$sl["base_skill_id"]][$sl["tref_id"]] = $sl["new_level_id"];
1660 }
1661 $pskills_gui->setGapAnalysisSelfEvalLevels($self_levels);
1662 }
1663 $sk = array();
1664 foreach ($skills as $skill) {
1665 $sk[] = array(
1666 "base_skill_id" => (int) $skill["base_skill"],
1667 "tref_id" => (int) $skill["tref_id"]
1668 );
1669 }
1670 $html = $pskills_gui->getGapAnalysisHTML($appr_id, $sk);
1671
1672 $tpl->setContent($html);
1673 }
1674 }
Personal skills GUI class.
static getProfilesOfUser($a_user_id)
Get profiles of a user.
addApprSelectionToToolbar()
Add appraisee selection to toolbar.
Skill/Competence handling in surveys.

References $_GET, $_POST, $appr_id, $ctrl, $ilCtrl, $ilUser, $lng, $object, $tabs, $toolbar, $tpl, $user, addApprSelectionToToolbar(), getAppraiseeId(), ilSkillProfile\getProfilesOfUser(), and ilObjSurvey\MODE_SELF_EVAL.

+ Here is the call graph for this function:

◆ determineAppraiseeId()

ilSurveyEvaluationGUI::determineAppraiseeId ( )

Determine appraisee id.

Definition at line 189 of file class.ilSurveyEvaluationGUI.php.

190 {
193
194 $appr_id = "";
195
196 // always start with current user
197 if ($_REQUEST["appr_id"] == "") {
198 $req_appr_id = $ilUser->getId();
199 } else {
200 $req_appr_id = (int) $_REQUEST["appr_id"];
201 }
202
203 // write access? allow selection
204 if ($req_appr_id > 0 && $this->object->get360Mode()) {
205 $all_appr = ($this->object->get360Results() == ilObjSurvey::RESULTS_360_ALL);
206
207 $valid = array();
208 foreach ($this->object->getAppraiseesData() as $item) {
209 if ($item["closed"] &&
210 ($item["user_id"] == $ilUser->getId() ||
211 $rbacsystem->checkAccess("write", $this->object->getRefId()) ||
212 $all_appr)) {
213 $valid[] = $item["user_id"];
214 }
215 }
216 if (in_array($req_appr_id, $valid)) {
217 $appr_id = $req_appr_id;
218 } else {
219 // current selection / user is not valid, use 1st valid instead
220 $appr_id = array_shift($valid);
221 }
222 } else { // SVY SELF EVALUATION MODE
223 $appr_id = $req_appr_id;
224 }
225
226 $this->ctrl->setParameter($this, "appr_id", $appr_id);
227 $this->setAppraiseeId($appr_id);
228 }
setAppraiseeId($a_val)
Set appraisee id.
$valid

References $appr_id, $ilUser, $rbacsystem, $user, $valid, ilObjSurvey\RESULTS_360_ALL, and setAppraiseeId().

Referenced by __construct().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ downloadChart()

ilSurveyEvaluationGUI::downloadChart ( )

Definition at line 1694 of file class.ilSurveyEvaluationGUI.php.

1695 {
1696 $qid = (int) $_GET["qid"];
1697 if (!$qid) {
1698 return;
1699 }
1700
1701 $this->renderChartOnly();
1702 }

References $_GET, and renderChartOnly().

+ Here is the call graph for this function:

◆ evaluation()

ilSurveyEvaluationGUI::evaluation (   $details = 0,
  $pdf = false,
  $return_pdf = false 
)

Definition at line 727 of file class.ilSurveyEvaluationGUI.php.

728 {
730 $ilToolbar = $this->toolbar;
732 $ui = $this->ui;
733
734 $ui_factory = $ui->factory();
735 $ui_renderer = $ui->renderer();
736
737 $this->log->debug("check access");
738
739 // auth
740 if (!$this->hasResultsAccess()) {
741 if (!$this->access->checkAccess('read', '', $this->object->getRefId())) {
742 ilUtil::sendFailure($this->lng->txt("permission_denied"));
743 return;
744 }
745
746 switch ($this->object->getEvaluationAccess()) {
748 ilUtil::sendFailure($this->lng->txt("permission_denied"));
749 return;
750
753 if (!$this->checkAnonymizedEvaluationAccess()) {
754 ilUtil::sendFailure($this->lng->txt("permission_denied"));
755 return;
756 }
757 break;
758 }
759 }
760
761 $this->log->debug("check access ok");
762
763 if (!$pdf) {
764 $ilToolbar->setFormAction($this->ctrl->getFormAction($this));
765 }
766
767 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_svy_svy_evaluation.html", "Modules/Survey");
768
769 if ($this->object->get360Mode()) {
770 $appr_id = $this->getAppraiseeId();
772 }
773
774 $results = array();
775 if (!$this->object->get360Mode() || $appr_id) {
776 if ($details) {
777 $captions = new ilSelectInputGUI($this->lng->txt("svy_eval_captions"), "cp");
778 $captions->setOptions(array(
779 "ap" => $this->lng->txt("svy_eval_captions_abs_perc"),
780 "a" => $this->lng->txt("svy_eval_captions_abs"),
781 "p" => $this->lng->txt("svy_eval_captions_perc")
782 ));
783 $captions->setValue($_POST["cp"]);
784 $ilToolbar->addInputItem($captions, true);
785
786 $view = new ilSelectInputGUI($this->lng->txt("svy_eval_view"), "vw");
787 $view->setOptions(array(
788 "tc" => $this->lng->txt("svy_eval_view_tables_charts"),
789 "t" => $this->lng->txt("svy_eval_view_tables"),
790 "c" => $this->lng->txt("svy_eval_view_charts")
791 ));
792 $view->setValue($_POST["vw"]);
793 $ilToolbar->addInputItem($view, true);
794
795 $button = ilSubmitButton::getInstance();
796 $button->setCaption("ok");
797 $button->setCommand("evaluationdetails");
798 $button->setOmitPreventDoubleSubmission(true);
799 $ilToolbar->addButtonInstance($button);
800
801 $ilToolbar->addSeparator();
802
803 //templates: results, table of contents
804 $dtmpl = new ilTemplate("tpl.il_svy_svy_results_details.html", true, true, "Modules/Survey");
805 $toc_tpl = new ilTemplate("tpl.svy_results_table_contents.html", true, true, "Modules/Survey");
806 $this->lng->loadLanguageModule("content");
807 $toc_tpl->setVariable("TITLE_TOC", $this->lng->txt('cont_toc'));
808 }
809
810 if (!$pdf) {
811 $modal_id = "svy_ev_exp";
812 $modal = $this->buildExportModal($modal_id, $details
813 ? 'exportDetailData'
814 : 'exportData');
815
816 $button = ilLinkButton::getInstance();
817 $button->setCaption("export");
818 $button->setOnClick('$(\'#' . $modal_id . '\').modal(\'show\')');
819 $ilToolbar->addButtonInstance($button);
820
821 $ilToolbar->addSeparator();
822
823 $button = ilLinkButton::getInstance();
824 $button->setCaption("print");
825 $button->setOnClick("if(il.Accordion) { il.Accordion.preparePrint(); } window.print(); return false;");
826 $button->setOmitPreventDoubleSubmission(true);
827 $ilToolbar->addButtonInstance($button);
828
829 // patch BGHW jluetzen-ilias
830 $this->ctrl->setParameter($this, "cp", $_POST["cp"]);
831 $this->ctrl->setParameter($this, "vw", $_POST["vw"]);
832 $url = $this->ctrl->getLinkTarget($this, $details
833 ? "evaluationdetailspdf"
834 : "evaluationpdf");
835 $this->ctrl->setParameter($this, "cp", "");
836 $this->ctrl->setParameter($this, "vw", "");
837 $button = ilLinkButton::getInstance();
838 $button->setCaption("svy_export_pdf");
839 $button->setUrl($url);
840 $button->setOmitPreventDoubleSubmission(true);
841 $ilToolbar->addButtonInstance($button);
842 }
843
844 $finished_ids = null;
845 if ($appr_id) {
846 $finished_ids = $this->object->getFinishedIdsForAppraiseeId($appr_id);
847 if (!sizeof($finished_ids)) {
848 $finished_ids = array(-1);
849 }
850 }
851
852 $details_figure = $_POST["cp"]
853 ? $_POST["cp"]
854 : "ap";
855 $details_view = $_POST["vw"]
856 ? $_POST["vw"]
857 : "tc";
858
859 // @todo
860 // filter finished ids
861 $finished_ids2 = $this->access->filterUserIdsByRbacOrPositionOfCurrentUser(
862 'read_results',
863 'access_results',
864 $this->object->getRefId(),
865 (array) $finished_ids
866 );
867
868 // parse answer data in evaluation results
869 $list = new ilNestedList();
870
871 foreach ($this->object->getSurveyQuestions() as $qdata) {
872 $q_eval = SurveyQuestion::_instanciateQuestionEvaluation($qdata["question_id"], $finished_ids);
873 $q_res = $q_eval->getResults();
874 $results[] = $q_res;
875
876 if ($details) {
877 //$this->renderDetails($details_view, $details_figure, $dtmpl, $qdata, $q_eval, $q_res);
878 $this->renderDetails($details_view, $details_figure, $qdata, $q_eval, $q_res, $pdf);
879
880 // TABLE OF CONTENTS
881 if ($qdata["questionblock_id"] &&
882 $qdata["questionblock_id"] != $this->last_questionblock_id) {
883 $qblock = ilObjSurvey::_getQuestionblock($qdata["questionblock_id"]);
884 if ($qblock["show_blocktitle"]) {
885 $list->addListNode($qdata["questionblock_title"], "q" . $qdata["questionblock_id"]);
886 } else {
887 $list->addListNode("", "q" . $qdata["questionblock_id"]);
888 }
889 $this->last_questionblock_id = $qdata["questionblock_id"];
890 }
891 $anchor_id = "svyrdq" . $qdata["question_id"];
892 $list->addListNode("<a href='#" . $anchor_id . "'>" . $qdata["title"] . "</a>", $qdata["question_id"], $qdata["questionblock_id"] ?
893 "q" . $qdata["questionblock_id"] : 0);
894 }
895 }
896
897 if ($details) {
898 $list->setListClass("il_Explorer");
899 $toc_tpl->setVariable("LIST", $list->getHTML());
900
901 //TABLE OF CONTENTS
902 $panel_toc = $ui_factory->panel()->standard("", $ui_factory->legacy($toc_tpl->get()));
903 $render_toc = $ui_renderer->render($panel_toc);
904 $dtmpl->setVariable("PANEL_TOC", $render_toc);
905
906 //REPORT
907 $report_title = "";
908 $panel_report = $ui_factory->panel()->report($report_title, $this->array_panels);
909 $render_report = $ui_renderer->render($panel_report);
910 $dtmpl->setVariable("PANEL_REPORT", $render_report);
911
912 //print the main template
913 $this->tpl->setVariable('DETAIL', $dtmpl->get());
914 }
915 }
916
917 $this->tpl->setVariable('MODAL', $modal);
918 if (!$details) {
919 $table_gui = new ilSurveyResultsCumulatedTableGUI($this, $details ? 'evaluationdetails' : 'evaluation', $results);
920 $this->tpl->setVariable('CUMULATED', $table_gui->getHTML());
921 }
922 unset($dtmpl);
923 unset($table_gui);
924 unset($modal);
925
926
927 // print header
928
929 $path = "";
930 $path_full = $tree->getPathFull($this->object->getRefId());
931 foreach ($path_full as $data) {
932 $path .= " &raquo; ";
933 $path .= $data['title'];
934 }
935
937
938 $props = array(
939 $this->lng->txt("link") => ilLink::_getStaticLink($this->object->getRefId()),
940 $this->lng->txt("path") => $path,
941 $this->lng->txt("svy_results") => !$details
942 ? $this->lng->txt("svy_eval_cumulated")
943 : $this->lng->txt("svy_eval_detail"),
944 $this->lng->txt("date") => ilDatePresentation::formatDate(new ilDateTime(time(), IL_CAL_UNIX)),
945 );
946
947 $this->tpl->setCurrentBlock("print_header_bl");
948 foreach ($props as $key => $value) {
949 $this->tpl->setVariable("HEADER_PROP_KEY", $key);
950 $this->tpl->setVariable("HEADER_PROP_VALUE", $value);
951 $this->tpl->parseCurrentBlock();
952 }
953
954 $this->log->debug("end");
955 if ($pdf) {
956 $html = $this->tpl->printToString();
957 if ($return_pdf) {
958 return $html;
959 } else {
960 $this->generateAndSendPDF($html);
961 }
962 }
963
964 // $this->tpl->addCss("./Modules/Survey/templates/default/survey_print.css", "print");
965 }
static _instanciateQuestionEvaluation($question_id, array $a_finished_ids=null)
Creates an instance of a question evaluation with a given question id.
const IL_CAL_UNIX
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date @access public.
static setUseRelativeDates($a_status)
set use relative dates
@classDescription Date and time handling
static getInstance()
Factory.
const EVALUATION_ACCESS_PARTICIPANTS
const EVALUATION_ACCESS_ALL
static _getQuestionblock($questionblock_id)
Returns the database row for a given question block.
const EVALUATION_ACCESS_OFF
checkAnonymizedEvaluationAccess()
Show the detailed evaluation.
generateAndSendPDF($html, $filename="")
renderDetails($a_details_parts, $a_details_figure, array $a_qdata, SurveyQuestionEvaluation $a_eval, $a_results, $pdf)
Render details.
hasResultsAccess()
Check if user can view results granted by rbac or positions.
special template class to simplify handling of ITX/PEAR
$url
$results
$data
Definition: storeScorm.php:23

References $_POST, $appr_id, $data, $rbacsystem, $results, $toolbar, $tree, $url, ilObjSurvey\_getQuestionblock(), ilLink\_getStaticLink(), SurveyQuestion\_instanciateQuestionEvaluation(), addApprSelectionToToolbar(), buildExportModal(), checkAnonymizedEvaluationAccess(), ilObjSurvey\EVALUATION_ACCESS_ALL, ilObjSurvey\EVALUATION_ACCESS_OFF, ilObjSurvey\EVALUATION_ACCESS_PARTICIPANTS, ilDatePresentation\formatDate(), generateAndSendPDF(), getAppraiseeId(), ilLinkButton\getInstance(), ilSubmitButton\getInstance(), hasResultsAccess(), IL_CAL_UNIX, renderDetails(), ilUtil\sendFailure(), and ilDatePresentation\setUseRelativeDates().

Referenced by checkEvaluationAccess(), evaluationdetails(), evaluationdetailspdf(), and evaluationpdf().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evaluationdetails()

ilSurveyEvaluationGUI::evaluationdetails ( )

Show the detailed evaluation.

Show the detailed evaluation

@access private

Definition at line 333 of file class.ilSurveyEvaluationGUI.php.

334 {
335 $this->evaluation(1);
336 }

References evaluation().

+ Here is the call graph for this function:

◆ evaluationdetailspdf()

ilSurveyEvaluationGUI::evaluationdetailspdf ( )

Definition at line 1689 of file class.ilSurveyEvaluationGUI.php.

1690 {
1691 $this->evaluation(1, true);
1692 }

References evaluation().

+ Here is the call graph for this function:

◆ evaluationpdf()

ilSurveyEvaluationGUI::evaluationpdf ( )

Definition at line 1684 of file class.ilSurveyEvaluationGUI.php.

1685 {
1686 $this->evaluation(0, true);
1687 }

References evaluation().

+ Here is the call graph for this function:

◆ evaluationuser()

ilSurveyEvaluationGUI::evaluationuser ( )

Print the survey evaluation for a selected user.

Print the survey evaluation for a selected user

@access private

Definition at line 1403 of file class.ilSurveyEvaluationGUI.php.

1404 {
1405 $ilAccess = $this->access;
1406 $ilToolbar = $this->toolbar;
1407
1408 if (!$this->hasResultsAccess() &&
1409 $this->object->getMode() != ilObjSurvey::MODE_SELF_EVAL) {
1410 ilUtil::sendFailure($this->lng->txt("no_permission"), true);
1411 $this->ctrl->redirectByClass("ilObjSurveyGUI", "infoScreen");
1412 }
1413
1414 $ilToolbar->setFormAction($this->ctrl->getFormAction($this, "evaluationuser"));
1415
1416 if ($this->object->get360Mode()) {
1417 $appr_id = $this->getAppraiseeId();
1419 }
1420
1421 $tabledata = null;
1422 if (!$this->object->get360Mode() || $appr_id) {
1423 $modal_id = "svy_ev_exp";
1424 $modal = $this->buildExportModal($modal_id, "exportevaluationuser");
1425
1426 $button = ilLinkButton::getInstance();
1427 $button->setCaption("export");
1428 $button->setOnClick('$(\'#' . $modal_id . '\').modal(\'show\')');
1429 $ilToolbar->addButtonInstance($button);
1430
1431 $ilToolbar->addSeparator();
1432
1433 $button = ilLinkButton::getInstance();
1434 $button->setCaption("print");
1435 $button->setOnClick("window.print(); return false;");
1436 $button->setOmitPreventDoubleSubmission(true);
1437 $ilToolbar->addButtonInstance($button);
1438
1439 $finished_ids = null;
1440 if ($appr_id) {
1441 $finished_ids = $this->object->getFinishedIdsForAppraiseeId($appr_id);
1442 if (!sizeof($finished_ids)) {
1443 $finished_ids = array(-1);
1444 }
1445 }
1446
1447 $data = $this->parseUserSpecificResults($finished_ids);
1448 }
1449
1450 $table_gui = new ilSurveyResultsUserTableGUI($this, 'evaluationuser', $this->object->hasAnonymizedResults());
1451 $table_gui->setData($data);
1452 $this->tpl->setContent($table_gui->getHTML() . $modal);
1453 }
parseUserSpecificResults(array $a_finished_ids=null)

References $access, $appr_id, $data, $toolbar, addApprSelectionToToolbar(), buildExportModal(), getAppraiseeId(), ilLinkButton\getInstance(), hasResultsAccess(), ilObjSurvey\MODE_SELF_EVAL, parseUserSpecificResults(), and ilUtil\sendFailure().

+ Here is the call graph for this function:

◆ executeCommand()

ilSurveyEvaluationGUI::executeCommand ( )

execute command

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

97 {
98 $skmg_set = new ilSkillManagementSettings();
99 if ($this->object->getSkillService() && $skmg_set->isActivated()) {
100 $cmd = $this->ctrl->getCmd("competenceEval");
101 } else {
102 $cmd = $this->ctrl->getCmd("evaluation");
103 }
104
105 $next_class = $this->ctrl->getNextClass($this);
106
107 $cmd = $this->getCommand($cmd);
108
109 $this->log->debug($cmd);
110
111 switch ($next_class) {
112 default:
113 $this->setEvalSubTabs();
114 $ret = &$this->$cmd();
115 break;
116 }
117 return $ret;
118 }
$ret
Definition: parser.php:6

References $ret, and getCommand().

+ Here is the call graph for this function:

◆ exportCumulatedResults()

ilSurveyEvaluationGUI::exportCumulatedResults (   $details = 0)

Definition at line 338 of file class.ilSurveyEvaluationGUI.php.

339 {
340 $finished_ids = null;
341 if ($this->object->get360Mode()) {
342 $appr_id = $_REQUEST["appr_id"];
343 if (!$appr_id) {
344 $this->ctrl->redirect($this, $details ? "evaluationdetails" : "evaluation");
345 }
346 $finished_ids = $this->object->getFinishedIdsForAppraiseeId($appr_id);
347 if (!sizeof($finished_ids)) {
348 $finished_ids = array(-1);
349 }
350 }
351
352 // titles
353 $title_row = array();
354 $do_title = $do_label = true;
355 switch ($_POST['export_label']) {
356 case 'label_only':
357 $title_row[] = $this->lng->txt("label");
358 $do_title = false;
359 break;
360
361 case 'title_only':
362 $title_row[] = $this->lng->txt("title");
363 $do_label = false;
364 break;
365
366 default:
367 $title_row[] = $this->lng->txt("title");
368 $title_row[] = $this->lng->txt("label");
369 break;
370 }
371 $title_row[] = $this->lng->txt("question");
372 $title_row[] = $this->lng->txt("question_type");
373 $title_row[] = $this->lng->txt("users_answered");
374 $title_row[] = $this->lng->txt("users_skipped");
375 $title_row[] = $this->lng->txt("mode");
376 $title_row[] = $this->lng->txt("mode_text");
377 $title_row[] = $this->lng->txt("mode_nr_of_selections");
378 $title_row[] = $this->lng->txt("median");
379 $title_row[] = $this->lng->txt("arithmetic_mean");
380
381 // creating container
382 switch ($_POST["export_format"]) {
383 case self::TYPE_XLS:
384 $excel = new ilExcel();
385 $excel->addSheet($this->lng->txt("svy_eval_cumulated"));
386 $excel->setCellArray(array($title_row), "A1");
387 $excel->setBold("A1:" . $excel->getColumnCoord(sizeof($title_row) - 1) . "1");
388 break;
389
390 case self::TYPE_SPSS:
391 $csvfile = array($title_row);
392 break;
393 }
394
395
396 // parse answer data in evaluation results
397 $ov_row = 2;
398 foreach ($this->object->getSurveyQuestions() as $qdata) {
399 $q_eval = SurveyQuestion::_instanciateQuestionEvaluation($qdata["question_id"], $finished_ids);
400 $q_res = $q_eval->getResults();
401 $ov_rows = $q_eval->exportResults($q_res, $do_title, $do_label);
402
403 switch ($_POST["export_format"]) {
404 case self::TYPE_XLS:
405 $excel->setActiveSheet(0);
406 foreach ($ov_rows as $row) {
407 foreach ($row as $col => $value) {
408 $excel->setCell($ov_row, $col, $value);
409 }
410 $ov_row++;
411 }
412 break;
413
414 case self::TYPE_SPSS:
415 foreach ($ov_rows as $row) {
416 $csvfile[] = $row;
417 }
418 break;
419 }
420
421 if ($details) {
422 switch ($_POST["export_format"]) {
423 case self::TYPE_XLS:
424 $this->exportResultsDetailsExcel($excel, $q_eval, $q_res, $do_title, $do_label);
425 break;
426 }
427 }
428 }
429
430 // #11179
431 $type = !$details
432 ? $this->lng->txt("svy_eval_cumulated")
433 : $this->lng->txt("svy_eval_detail");
434
435 $surveyname = $this->object->getTitle() . " " . $type . " " . date("Y-m-d");
436 $surveyname = preg_replace("/\s/", "_", trim($surveyname));
437 $surveyname = ilUtil::getASCIIFilename($surveyname);
438
439 // send to client
440 switch ($_POST["export_format"]) {
441 case self::TYPE_XLS:
442 $excel->sendToClient($surveyname);
443 break;
444
445 case self::TYPE_SPSS:
446 $csv = "";
447 $separator = ";";
448 foreach ($csvfile as $csvrow) {
449 $csvrow = $this->processCSVRow($csvrow, true, $separator);
450 $csv .= join($separator, $csvrow) . "\n";
451 }
452 ilUtil::deliverData($csv, $surveyname . ".csv");
453 exit();
454 break;
455 }
456 }
exportResultsDetailsExcel(ilExcel $a_excel, SurveyQuestionEvaluation $a_eval, $a_results, $a_do_title, $a_do_label)
Export details (excel only)
processCSVRow($row, $quoteAll=false, $separator=";")
Processes an array as a CSV row and converts the array values to correct CSV values.
static deliverData($a_data, $a_filename, $mime="application/octet-stream", $charset="")
deliver data for download via browser.
static getASCIIFilename($a_filename)
convert utf8 to ascii filename
exit
Definition: login.php:29
$type

References $_POST, $appr_id, $type, SurveyQuestion\_instanciateQuestionEvaluation(), ilUtil\deliverData(), exit, exportResultsDetailsExcel(), ilUtil\getASCIIFilename(), processCSVRow(), TYPE_SPSS, and TYPE_XLS.

Referenced by exportData(), and exportDetailData().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ exportData()

ilSurveyEvaluationGUI::exportData ( )

Definition at line 661 of file class.ilSurveyEvaluationGUI.php.

662 {
663 if (strlen($_POST["export_format"])) {
664 $this->exportCumulatedResults(0);
665 return;
666 } else {
667 $this->ctrl->redirect($this, 'evaluation');
668 }
669 }

References $_POST, and exportCumulatedResults().

+ Here is the call graph for this function:

◆ exportDetailData()

ilSurveyEvaluationGUI::exportDetailData ( )

Definition at line 671 of file class.ilSurveyEvaluationGUI.php.

672 {
673 if (strlen($_POST["export_format"])) {
674 $this->exportCumulatedResults(1);
675 return;
676 } else {
677 $this->ctrl->redirect($this, 'evaluation');
678 }
679 }

References $_POST, and exportCumulatedResults().

+ Here is the call graph for this function:

◆ exportEvaluationUser()

ilSurveyEvaluationGUI::exportEvaluationUser ( )

Definition at line 1247 of file class.ilSurveyEvaluationGUI.php.

1248 {
1249 // build title row(s)
1250
1251 $title_row = $title_row2 = array();
1252 $title_row[] = $this->lng->txt("lastname"); // #12756
1253 $title_row[] = $this->lng->txt("firstname");
1254 $title_row[] = $this->lng->txt("login");
1255 $title_row[] = $this->lng->txt('workingtime'); // #13622
1256 $title_row[] = $this->lng->txt('survey_results_finished');
1257 $title_row2[] = "";
1258 $title_row2[] = "";
1259 $title_row2[] = "";
1260 $title_row2[] = "";
1261 $title_row2[] = "";
1262 if ($this->object->canExportSurveyCode()) {
1263 $title_row[] = $this->lng->txt("codes");
1264 $title_row2[] = "";
1265 }
1266
1267 $questions = array();
1268
1269 foreach ($this->object->getSurveyQuestions() as $qdata) {
1270 $q_eval = SurveyQuestion::_instanciateQuestionEvaluation($qdata["question_id"], $finished_ids);
1271 $q_res = $q_eval->getResults();
1272
1273 $questions[$qdata["question_id"]] = array($q_eval, $q_res);
1274
1275 $question = is_array($q_res)
1276 ? $q_res[0][1]->getQuestion()
1277 : $q_res->getQuestion();
1278
1279 $do_title = $do_label = true;
1280 switch ($_POST['export_label']) {
1281 case "label_only":
1282 $title_row[] = $question->label;
1283 $title_row2[] = "";
1284 $do_title = false;
1285 break;
1286
1287 case "title_only":
1288 $title_row[] = $question->getTitle();
1289 $title_row2[] = "";
1290 $do_label = false;
1291 break;
1292
1293 default:
1294 $title_row[] = $question->getTitle();
1295 $title_row2[] = $question->label;
1296 break;
1297 }
1298
1299 $q_eval->getUserSpecificVariableTitles($title_row, $title_row2, $do_title, $do_label);
1300 }
1301
1302 $rows = array();
1303
1304 // add title row(s)
1305 $rows[] = $title_row;
1306 if (implode("", $title_row2)) {
1307 $rows[] = $title_row2;
1308 }
1309
1310 // #13620
1312
1313 $finished_ids = null;
1314 if ($this->object->get360Mode()) {
1315 $appr_id = $_REQUEST["appr_id"];
1316 if (!$appr_id) {
1317 $this->ctrl->redirect($this, "evaluationuser");
1318 }
1319 $finished_ids = $this->object->getFinishedIdsForAppraiseeId($appr_id);
1320 if (!sizeof($finished_ids)) {
1321 $finished_ids = array(-1);
1322 }
1323 }
1324
1325 //$participants = $this->object->getSurveyParticipants($finished_ids);
1326 $participants = $this->filterSurveyParticipantsByAccess($finished_ids);
1327
1328 foreach ($participants as $user) {
1329 $user_id = $user["active_id"];
1330
1331 $row = array();
1332 $row[] = trim($user["lastname"])
1333 ? $user["lastname"]
1334 : $user["name"]; // anonymous
1335 $row[] = $user["firstname"];
1336 $row[] = $user["login"]; // #10579
1337
1338 if ($this->object->canExportSurveyCode()) {
1339 $row[] = $user_id;
1340 }
1341
1342 $row[] = $this->object->getWorkingtimeForParticipant($user_id);
1343
1344 if ((bool) $user["finished"]) {
1345 $dt = new ilDateTime($user["finished_tstamp"], IL_CAL_UNIX);
1346 $row[] = ($_POST["export_format"] == self::TYPE_XLS)
1347 ? $dt
1349 } else {
1350 $row[] = "-"; // :TODO:
1351 }
1352
1353 foreach ($questions as $item) {
1354 $q_eval = $item[0];
1355 $q_res = $item[1];
1356
1357 $q_eval->addUserSpecificResults($row, $user_id, $q_res);
1358 }
1359
1360 $rows[] = $row;
1361 }
1362
1363 // #11179
1364 $surveyname = $this->object->getTitle() . " " . $this->lng->txt("svy_eval_user") . " " . date("Y-m-d");
1365 $surveyname = preg_replace("/\s/", "_", trim($surveyname));
1366 $surveyname = ilUtil::getASCIIFilename($surveyname);
1367
1368 switch ($_POST["export_format"]) {
1369 case self::TYPE_XLS:
1370 $excel = new ilExcel();
1371 $excel->addSheet($this->lng->txt("svy_eval_user"));
1372
1373 foreach ($rows as $row_idx => $row) {
1374 foreach ($row as $col_idx => $col) {
1375 $excel->setCell($row_idx + 1, $col_idx, $col);
1376 }
1377 if (!$row_idx) {
1378 $excel->setBold("A1:" . $excel->getColumnCoord(sizeof($row) - 1) . "1");
1379 }
1380 }
1381 $excel->sendToClient($surveyname);
1382
1383 // no break
1384 case self::TYPE_SPSS:
1385 $csv = "";
1386 $separator = ";";
1387 foreach ($rows as $csvrow) {
1388 $csvrow = str_replace("\n", " ", $this->processCSVRow($csvrow, true, $separator));
1389 $csv .= join($separator, $csvrow) . "\n";
1390 }
1391 ilUtil::deliverData($csv, "$surveyname.csv");
1392 exit();
1393 }
1394 }
filterSurveyParticipantsByAccess($a_finished_ids)
$rows
Definition: xhr_table.php:10

References $_POST, $appr_id, $rows, $user, SurveyQuestion\_instanciateQuestionEvaluation(), ilUtil\deliverData(), exit, filterSurveyParticipantsByAccess(), ilDatePresentation\formatDate(), ilUtil\getASCIIFilename(), IL_CAL_UNIX, processCSVRow(), ilDatePresentation\setUseRelativeDates(), TYPE_SPSS, and TYPE_XLS.

+ Here is the call graph for this function:

◆ exportResultsDetailsExcel()

ilSurveyEvaluationGUI::exportResultsDetailsExcel ( ilExcel  $a_excel,
SurveyQuestionEvaluation  $a_eval,
  $a_results,
  $a_do_title,
  $a_do_label 
)
protected

Export details (excel only)

Parameters
ilExcel$a_excel
SurveyQuestionEvaluation$a_eval
ilSurveyEvaluationResults | array$a_results
bool$a_do_title
bool | array$a_do_label

Definition at line 467 of file class.ilSurveyEvaluationGUI.php.

468 {
469 $question_res = $a_results;
470 $matrix = false;
471 if (is_array($question_res)) {
472 $question_res = $question_res[0][1];
473 $matrix = true;
474 }
475 $question = $question_res->getQuestion();
476
477 $a_excel->addSheet($question->getTitle());
478
479
480 // question "overview"
481
482 $kv = array();
483
484 if ($a_do_title) {
485 $kv[$this->lng->txt("title")] = $question->getTitle();
486 }
487 if ($a_do_label) {
488 $kv[$this->lng->txt("label")] = $question->label;
489 }
490
491 // question
492 $kv[$this->lng->txt("question")] = $question->getQuestiontext();
493
494 // question type
495 $kv[$this->lng->txt("question_type")] = SurveyQuestion::_getQuestionTypeName($question->getQuestionType());
496
497 // :TODO: present subtypes (hrz/vrt, mc/sc mtx, metric scale)?
498
499 // answered and skipped users
500 $kv[$this->lng->txt("users_answered")] = (int) $question_res->getUsersAnswered();
501 $kv[$this->lng->txt("users_skipped")] = (int) $question_res->getUsersSkipped(); // #0021671
502
503 $excel_row = 1;
504
505 foreach ($kv as $key => $value) {
506 $a_excel->setCell($excel_row, 0, $key);
507 $a_excel->setCell($excel_row++, 1, $value);
508 }
509
510 if (!$matrix) {
511 $this->parseResultsToExcel(
512 $a_excel,
513 $question_res,
514 $excel_row,
515 $a_eval->getExportGrid($a_results),
516 $a_eval->getTextAnswers($a_results)
517 );
518 } else {
519 // question
520 $this->parseResultsToExcel(
521 $a_excel,
522 $question_res,
523 $excel_row,
524 null,
525 null,
526 false
527 );
528
529 $texts = $a_eval->getTextAnswers($a_results);
530
531 // "rows"
532 foreach ($a_results as $row_results) {
533 $row_title = $row_results[0];
534
535 $a_excel->setCell($excel_row, 0, $this->lng->txt("row"));
536 $a_excel->setCell($excel_row++, 1, $row_title);
537
538 $this->parseResultsToExcel(
539 $a_excel,
540 $row_results[1],
541 $excel_row,
542 $a_eval->getExportGrid($row_results[1]),
543 is_array($texts[$row_title])
544 ? array("" => $texts[$row_title])
545 : null
546 );
547 }
548 }
549
550 // matrix question: overview #21438
551 if ($matrix) {
552 $a_excel->setCell($excel_row++, 0, $this->lng->txt("overview"));
553
554 // title row with variables
555 $counter = 0;
556 $cats = $question->getColumns();
557 foreach ($cats->getCategories() as $cat) {
558 $a_excel->setColors($a_excel->getCoordByColumnAndRow(1 + $counter, $excel_row), ilSurveyEvaluationGUI::EXCEL_SUBTITLE);
559 $a_excel->setCell($excel_row, 1 + $counter, $cat->title);
560 $counter++;
561 }
562 $excel_row++;
563
564 foreach ($a_results as $row_results) {
565 $row_title = $row_results[0];
566 $counter = 0;
567 $a_excel->setCell($excel_row, 0, $row_title);
568
569 $vars = $row_results[1]->getVariables();
570 if ($vars) {
571 foreach ($vars as $var) {
572 $a_excel->setCell($excel_row, ++$counter, $var->abs);
573 }
574 }
575 $excel_row++;
576 }
577 }
578
579 // 1st column is bold
580 $a_excel->setBold("A1:A" . $excel_row);
581 }
getExportGrid($a_results)
Get grid data.
getTextAnswers($a_results)
Get text answers.
static _getQuestionTypeName($type_tag)
Return the translation for a given question type tag.
setCell($a_row, $a_col, $a_value, $a_datatype=null)
Set cell value.
setColors($a_coords, $a_background, $a_font=null)
Set cell(s) colors.
setBold($a_coords)
Set cell(s) to bold.
addSheet($a_name, $a_activate=true)
Add sheet.
getCoordByColumnAndRow($pColumn=1, $pRow=1)
Get cell coordinate (e.g.
parseResultsToExcel(ilExcel $a_excel, ilSurveyEvaluationResults $a_results, &$a_excel_row, array $a_grid=null, array $a_text_answers=null, $a_include_mode=true)

References SurveyQuestion\_getQuestionTypeName(), ilExcel\addSheet(), EXCEL_SUBTITLE, ilExcel\getCoordByColumnAndRow(), SurveyQuestionEvaluation\getExportGrid(), SurveyQuestionEvaluation\getTextAnswers(), parseResultsToExcel(), ilExcel\setBold(), ilExcel\setCell(), and ilExcel\setColors().

Referenced by exportCumulatedResults().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ filterSurveyParticipantsByAccess()

ilSurveyEvaluationGUI::filterSurveyParticipantsByAccess (   $a_finished_ids)
protected

Definition at line 1455 of file class.ilSurveyEvaluationGUI.php.

1456 {
1457 $all_participants = $this->object->getSurveyParticipants($a_finished_ids);
1458 $participant_ids = [];
1459 foreach ($all_participants as $participant) {
1460 $participant_ids[] = $participant['usr_id'];
1461 }
1462
1463
1464 $filtered_participant_ids = $this->access->filterUserIdsByRbacOrPositionOfCurrentUser(
1465 'read_results',
1466 'access_results',
1467 $this->object->getRefId(),
1468 $participant_ids
1469 );
1470 $participants = [];
1471 foreach ($all_participants as $username => $user_data) {
1472 if (!$user_data['usr_id']) {
1473 $participants[$username] = $user_data;
1474 }
1475 if (in_array($user_data['usr_id'], $filtered_participant_ids)) {
1476 $participants[$username] = $user_data;
1477 }
1478 }
1479 return $participants;
1480 }

Referenced by exportEvaluationUser(), and parseUserSpecificResults().

+ Here is the caller graph for this function:

◆ generateAndSendPDF()

ilSurveyEvaluationGUI::generateAndSendPDF (   $html,
  $filename = "" 
)
Parameters
$html
$filename
Exceptions
Exception

Definition at line 1763 of file class.ilSurveyEvaluationGUI.php.

1764 {
1765 // :TODO: fixing css dummy parameters
1766 $html = preg_replace("/\?dummy\=[0-9]+/", "", $html);
1767 $html = preg_replace("/\?vers\=[0-9A-Za-z\-]+/", "", $html);
1768 $html = str_replace('.css$Id$', ".css", $html);
1769 $html = preg_replace("/src=\"\\.\\//ims", "src=\"" . ILIAS_HTTP_PATH . "/", $html);
1770 $html = preg_replace("/href=\"\\.\\//ims", "href=\"" . ILIAS_HTTP_PATH . "/", $html);
1771
1772 //echo $html; exit;
1773
1774 if ($filename == "") {
1775 $filename = $this->object->getTitle() . ".pdf";
1776 }
1777 $pdf_factory = new ilHtmlToPdfTransformerFactory();
1778 $pdf_factory->deliverPDFFromHTMLString($html, $filename, ilHtmlToPdfTransformerFactory::PDF_OUTPUT_DOWNLOAD, "Survey", "Results");
1779 }
$filename
Definition: buildRTE.php:89
Class ilHtmlToPdfTransformerFactory.

References $filename, ILIAS_HTTP_PATH, and ilHtmlToPdfTransformerFactory\PDF_OUTPUT_DOWNLOAD.

Referenced by evaluation(), and renderChartOnly().

+ Here is the caller graph for this function:

◆ getAppraiseeId()

ilSurveyEvaluationGUI::getAppraiseeId ( )

Get appraisee id.

Returns
int appraisee id

Definition at line 181 of file class.ilSurveyEvaluationGUI.php.

182 {
183 return $this->appr_id;
184 }

References $appr_id.

Referenced by addApprSelectionToToolbar(), competenceEval(), evaluation(), evaluationuser(), and renderChartOnly().

+ Here is the caller graph for this function:

◆ getCommand()

ilSurveyEvaluationGUI::getCommand (   $cmd)

Definition at line 120 of file class.ilSurveyEvaluationGUI.php.

121 {
122 return $cmd;
123 }

Referenced by executeCommand().

+ Here is the caller graph for this function:

◆ hasResultsAccess()

ilSurveyEvaluationGUI::hasResultsAccess ( )
protected

Check if user can view results granted by rbac or positions.

Definition at line 1679 of file class.ilSurveyEvaluationGUI.php.

1680 {
1681 return $this->access->checkRbacOrPositionPermissionAccess('read_results', 'access_results', $this->object->getRefId());
1682 }

Referenced by evaluation(), evaluationuser(), and setEvalSubtabs().

+ Here is the caller graph for this function:

◆ parseResultsToExcel()

ilSurveyEvaluationGUI::parseResultsToExcel ( ilExcel  $a_excel,
ilSurveyEvaluationResults  $a_results,
$a_excel_row,
array  $a_grid = null,
array  $a_text_answers = null,
  $a_include_mode = true 
)
protected

Definition at line 583 of file class.ilSurveyEvaluationGUI.php.

584 {
585 $kv = array();
586
587 if ($a_include_mode) {
588 if ($a_results->getModeValue() !== null) {
589 // :TODO:
590 $kv[$this->lng->txt("mode")] = is_array($a_results->getModeValue())
591 ? implode(", ", $a_results->getModeValue())
592 : $a_results->getModeValue();
593
594 $kv[$this->lng->txt("mode_text")] = $a_results->getModeValueAsText();
595 $kv[$this->lng->txt("mode_nr_of_selections")] = (int) $a_results->getModeNrOfSelections();
596 }
597
598 if ($a_results->getMedian() !== null) {
599 $kv[$this->lng->txt("median")] = $a_results->getMedianAsText();
600 }
601
602 if ($a_results->getMean() !== null) {
603 $kv[$this->lng->txt("arithmetic_mean")] = $a_results->getMean();
604 }
605 }
606
607 foreach ($kv as $key => $value) {
608 $a_excel->setCell($a_excel_row, 0, $key);
609 $a_excel->setCell($a_excel_row++, 1, $value);
610 }
611
612 // grid
613 if ($a_grid) {
614 // header
615 $a_excel->setColors("B" . $a_excel_row . ":E" . $a_excel_row, ilSurveyEvaluationGUI::EXCEL_SUBTITLE);
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);
619 }
620 $a_excel_row++;
621
622 // rows
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);
626 }
627 $a_excel_row++;
628 }
629 }
630
631 // text answers
632 if ($a_text_answers) {
633 // "given_answers" ?
634 $a_excel->setCell($a_excel_row, 0, $this->lng->txt("freetext_answers"));
635
636 // mc/sc
637 if (!is_array($a_text_answers[""])) {
638 $a_excel->setColors("B" . $a_excel_row . ":C" . $a_excel_row, ilSurveyEvaluationGUI::EXCEL_SUBTITLE);
639 $a_excel->setCell($a_excel_row, 1, $this->lng->txt("title"));
640 $a_excel->setCell($a_excel_row++, 2, $this->lng->txt("answer"));
641 }
642 // mtx (row), txt
643 else {
644 $a_excel->setColors("B" . $a_excel_row . ":B" . $a_excel_row, ilSurveyEvaluationGUI::EXCEL_SUBTITLE);
645 $a_excel->setCell($a_excel_row++, 1, $this->lng->txt("answer"));
646 }
647
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);
653 } else {
654 $a_excel->setCell($a_excel_row++, 1, $item);
655 }
656 }
657 }
658 }
659 }
$cols
Definition: xhr_table.php:11

References $cols, EXCEL_SUBTITLE, ilSurveyEvaluationResults\getMean(), ilSurveyEvaluationResults\getMedian(), ilSurveyEvaluationResults\getMedianAsText(), ilSurveyEvaluationResults\getModeNrOfSelections(), ilSurveyEvaluationResults\getModeValue(), ilSurveyEvaluationResults\getModeValueAsText(), ilExcel\setCell(), and ilExcel\setColors().

Referenced by exportResultsDetailsExcel().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parseUserSpecificResults()

ilSurveyEvaluationGUI::parseUserSpecificResults ( array  $a_finished_ids = null)
protected

Definition at line 1484 of file class.ilSurveyEvaluationGUI.php.

1485 {
1486 $data = array();
1487
1488 $participants = $this->filterSurveyParticipantsByAccess($a_finished_ids);
1489
1490 foreach ($this->object->getSurveyQuestions() as $qdata) {
1491 $q_eval = SurveyQuestion::_instanciateQuestionEvaluation($qdata["question_id"], $a_finished_ids);
1492 $q_res = $q_eval->getResults();
1493
1494 // see #28507 (matrix question without a row)
1495 if (is_array($q_res) && !is_object($q_res[0][1])) {
1496 continue;
1497 }
1498
1499 $question = is_array($q_res)
1500 ? $q_res[0][1]->getQuestion()
1501 : $q_res->getQuestion();
1502
1503 foreach ($participants as $user) {
1504 $user_id = $user["active_id"];
1505
1506 $parsed_results = $q_eval->parseUserSpecificResults($q_res, $user_id);
1507
1508 if (!array_key_exists($user_id, $data)) {
1509 $wt = $this->object->getWorkingtimeForParticipant($user_id);
1510
1511 $finished = $user["finished"]
1512 ? $user["finished_tstamp"]
1513 : false;
1514
1515 $data[$user_id] = array(
1516 "username" => $user["sortname"],
1517 "question" => $question->getTitle(),
1518 "results" => $parsed_results,
1519 "workingtime" => $wt,
1520 "finished" => $finished,
1521 "subitems" => array()
1522 );
1523 } else {
1524 $data[$user_id]["subitems"][] = array(
1525 "username" => " ",
1526 "question" => $question->getTitle(),
1527 "results" => $parsed_results,
1528 "workingtime" => null,
1529 "finished" => null
1530 );
1531 }
1532 }
1533 }
1534
1535 return $data;
1536 }

References $data, $user, SurveyQuestion\_instanciateQuestionEvaluation(), and filterSurveyParticipantsByAccess().

Referenced by evaluationuser().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ printEvaluation()

ilSurveyEvaluationGUI::printEvaluation ( )

Definition at line 681 of file class.ilSurveyEvaluationGUI.php.

682 {
683 ilUtil::sendInfo($this->lng->txt('use_browser_print_function'), true);
684 $this->ctrl->redirect($this, 'evaluation');
685 }
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.

References ilUtil\sendInfo().

+ Here is the call graph for this function:

◆ processCSVRow()

ilSurveyEvaluationGUI::processCSVRow (   $row,
  $quoteAll = false,
  $separator = ";" 
)

Processes an array as a CSV row and converts the array values to correct CSV values.

The "converted" array is returned

Parameters
array$rowThe array containing the values for a CSV row
string$quoteAllIndicates to quote every value (=TRUE) or only values containing quotes and separators (=FALSE, default)
string$separatorThe value separator in the CSV row (used for quoting) (; = default)
Returns
array The converted array ready for CSV use @access public

Definition at line 1217 of file class.ilSurveyEvaluationGUI.php.

1218 {
1219 $resultarray = array();
1220 foreach ($row as $rowindex => $entry) {
1221 if (is_array($entry)) {
1222 $entry = implode("/", $entry);
1223 }
1224 $surround = false;
1225 if ($quoteAll) {
1226 $surround = true;
1227 }
1228 if (strpos($entry, "\"") !== false) {
1229 $entry = str_replace("\"", "\"\"", $entry);
1230 $surround = true;
1231 }
1232 if (strpos($entry, $separator) !== false) {
1233 $surround = true;
1234 }
1235 // replace all CR LF with LF (for Excel for Windows compatibility
1236 $entry = str_replace(chr(13) . chr(10), chr(10), $entry);
1237 if ($surround) {
1238 $resultarray[$rowindex] = utf8_decode("\"" . $entry . "\"");
1239 } else {
1240 $resultarray[$rowindex] = utf8_decode($entry);
1241 }
1242 }
1243 return $resultarray;
1244 }

Referenced by exportCumulatedResults(), and exportEvaluationUser().

+ Here is the caller graph for this function:

◆ renderChartOnly()

ilSurveyEvaluationGUI::renderChartOnly ( )

Definition at line 1704 of file class.ilSurveyEvaluationGUI.php.

1705 {
1706 global $tpl;
1707
1708 $qid = (int) $_GET["qid"];
1709 if (!$qid) {
1710 return;
1711 }
1712
1713 $finished_ids = null;
1714 if ($this->object->get360Mode()) {
1715 $appr_id = $this->getAppraiseeId();
1716 $finished_ids = $this->object->getFinishedIdsForAppraiseeId($appr_id);
1717 if (!sizeof($finished_ids)) {
1718 $finished_ids = array(-1);
1719 }
1720 }
1721
1722 // parse answer data in evaluation results
1723 foreach ($this->object->getSurveyQuestions() as $qdata) {
1724 if ($qid == $qdata["question_id"]) {
1725 $q_eval = SurveyQuestion::_instanciateQuestionEvaluation($qdata["question_id"], $finished_ids);
1726 $q_res = $q_eval->getResults();
1727
1728 $chart = $q_eval->getChart($q_res);
1729 if ($chart) {
1730 $dtmpl = new ilTemplate("tpl.il_svy_svy_results_details_single.html", true, true, "Modules/Survey");
1731
1732 if (is_array($chart)) {
1733 // legend
1734 if (is_array($chart[1])) {
1735 foreach ($chart[1] as $legend_item) {
1736 $dtmpl->setCurrentBlock("legend_bl");
1737 $dtmpl->setVariable("LEGEND_CAPTION", $legend_item[0]);
1738 $dtmpl->setVariable("LEGEND_COLOR", $legend_item[1]);
1739 $dtmpl->parseCurrentBlock();
1740 }
1741 }
1742
1743 $chart = $chart[0];
1744 }
1745 $dtmpl->setVariable("CHART", $chart);
1746 }
1747 }
1748 }
1749
1750 // "print view"
1751 $this->tpl->setContent($dtmpl->get());
1752
1753 $html = $this->tpl->printToString();
1754 $this->generateAndSendPDF($html, $this->object->getTitle() . " - " . SurveyQuestion::_getTitle($qid) . ".pdf");
1755 }
static _getTitle($question_id)
Returns the question title of a question with a given id.

References $_GET, $appr_id, $tpl, SurveyQuestion\_getTitle(), SurveyQuestion\_instanciateQuestionEvaluation(), generateAndSendPDF(), and getAppraiseeId().

Referenced by downloadChart().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ renderDetails()

ilSurveyEvaluationGUI::renderDetails (   $a_details_parts,
  $a_details_figure,
array  $a_qdata,
SurveyQuestionEvaluation  $a_eval,
  $a_results,
  $pdf 
)
protected

Render details.

Parameters
string$a_details_parts
string$a_details_figure@param___ ilTemplate $a_tpl
array$a_qdata
SurveyQuestionEvaluation$a_eval
ilSurveyEvaluationResults | array$a_results

Definition at line 978 of file class.ilSurveyEvaluationGUI.php.

979 {
980 $ui_factory = $this->ui->factory();
981 $a_tpl = new ilTemplate("tpl.svy_results_details_panel.html", true, true, "Modules/Survey");
982
983 $question_res = $a_results;
984 $matrix = false;
985 if (is_array($question_res)) {
986 $question_res = $question_res[0][1];
987 $matrix = true;
988 }
989
990 // see #28507 (matrix question without a row)
991 if (!is_object($question_res)) {
992 return;
993 }
994
995 $question = $question_res->getQuestion();
996
997 // question "overview"
998
999 // :TODO: present subtypes (hrz/vrt, mc/sc mtx)?
1000
1001 $a_tpl->setVariable("QTYPE", SurveyQuestion::_getQuestionTypeName($question->getQuestionType()));
1002
1003 $kv = array();
1004 $kv["users_answered"] = $question_res->getUsersAnswered();
1005 $kv["users_skipped"] = $question_res->getUsersSkipped();
1006
1007 if (!$matrix) {
1008 if ($question_res->getModeValue() !== null) {
1009 $kv["mode"] = wordwrap($question_res->getModeValueAsText(), 50, "<br />");
1010 $kv["mode_nr_of_selections"] = $question_res->getModeNrOfSelections();
1011 }
1012 if ($question_res->getMedian() !== null) {
1013 $kv["median"] = $question_res->getMedianAsText();
1014 }
1015 if ($question_res->getMean() !== null) {
1016 $kv["arithmetic_mean"] = $question_res->getMean();
1017 }
1018 }
1019
1020 $svy_type_title = SurveyQuestion::_getQuestionTypeName($question->getQuestionType());
1021 $qst_title = $question->getTitle();
1022 $svy_text = nl2br($question->getQuestiontext());
1023 $card_table_tpl = new ilTemplate("tpl.svy_results_details_card.html", true, true, "Modules/Survey");
1024 foreach ($kv as $key => $value) {
1025 $card_table_tpl->setCurrentBlock("question_statistics_card");
1026 $card_table_tpl->setVariable("QUESTION_STATISTIC_KEY", $this->lng->txt($key));
1027 $card_table_tpl->setVariable("QUESTION_STATISTIC_VALUE", $value);
1028 $card_table_tpl->parseCurrentBlock();
1029 }
1030
1031 // patch BGHW: added anchor
1032 $anchor_id = "svyrdq" . $question->getId();
1033 $title = "<span id='$anchor_id'>$qst_title</span>";
1034 $panel_qst_card = $ui_factory->panel()->sub($title, $ui_factory->legacy($svy_text))
1035 ->withCard($ui_factory->card()->standard($svy_type_title)->withSections(array($ui_factory->legacy($card_table_tpl->get()))));
1036
1037 //commit 715c28815 from phantom patch
1038 //$anchor = "<a name='".$anchor_id."'></a>";
1039 //$panel_qst_card = $ui_factory->panel()->sub($anchor.$qst_title, $ui_factory->legacy($svy_text))
1040 //->withCard($ui_factory->card($svy_type_title)->withSections(array($ui_factory->legacy($card_table_tpl->get()))));
1041
1042 array_push($this->array_panels, $panel_qst_card);
1043
1044 // grid
1045 if ($a_details_parts == "t" ||
1046 $a_details_parts == "tc") {
1047 $grid = $a_eval->getGrid(
1048 $a_results,
1049 ($a_details_figure == "ap" || $a_details_figure == "a"),
1050 ($a_details_figure == "ap" || $a_details_figure == "p")
1051 );
1052 if ($grid) {
1053 foreach ($grid["cols"] as $col) {
1054 $a_tpl->setCurrentBlock("grid_col_header_bl");
1055 $a_tpl->setVariable("COL_HEADER", $col);
1056 $a_tpl->parseCurrentBlock();
1057 }
1058 foreach ($grid["rows"] as $cols) {
1059 foreach ($cols as $idx => $col) {
1060 if ($idx > 0) {
1061 $a_tpl->touchBlock("grid_col_nowrap_bl");
1062 }
1063
1064 $a_tpl->setCurrentBlock("grid_col_bl");
1065 $a_tpl->setVariable("COL_CAPTION", trim($col));
1066 $a_tpl->parseCurrentBlock();
1067 }
1068
1069 $a_tpl->touchBlock("grid_row_bl");
1070 }
1071 }
1072 }
1073
1074 // text answers
1075 $texts = $a_eval->getTextAnswers($a_results);
1076 if ($texts) {
1077 if (array_key_exists("", $texts)) {
1078 $a_tpl->setVariable("TEXT_HEADING", $this->lng->txt("given_answers"));
1079 foreach ($texts[""] as $item) {
1080 $a_tpl->setCurrentBlock("text_direct_item_bl");
1081 $a_tpl->setVariable("TEXT_DIRECT", nl2br(htmlentities($item)));
1082 $a_tpl->parseCurrentBlock();
1083 }
1084 } else {
1085 $acc = new ilAccordionGUI();
1086 // patch BGHW: fixed accordion in pdf output
1087 if ($_GET["pdf"] == 1) {
1088 $acc->setBehaviour(ilAccordionGUI::FORCE_ALL_OPEN);
1089 }
1090 $acc->setId("svyevaltxt" . $question->getId());
1091
1092 $a_tpl->setVariable("TEXT_HEADING", $this->lng->txt("freetext_answers"));
1093
1094 foreach ($texts as $var => $items) {
1095 $list = array("<ul class=\"small\">");
1096 foreach ($items as $item) {
1097 $list[] = "<li>" . nl2br(htmlentities($item)) . "</li>";
1098 }
1099 $list[] = "</ul>";
1100 $acc->addItem($var, implode("\n", $list));
1101 }
1102
1103 $a_tpl->setVariable("TEXT_ACC", $acc->getHTML());
1104 }
1105 }
1106
1107 // chart
1108 if ($a_details_parts == "c" ||
1109 $a_details_parts == "tc") {
1110 $chart = $a_eval->getChart($a_results);
1111 if ($chart) {
1112 if (is_array($chart)) {
1113 // legend
1114 if (is_array($chart[1])) {
1115 foreach ($chart[1] as $legend_item) {
1116 $r = hexdec(substr($legend_item[1], 1, 2));
1117 $g = hexdec(substr($legend_item[1], 3, 2));
1118 $b = hexdec(substr($legend_item[1], 5, 2));
1119
1120 $a_tpl->setCurrentBlock("legend_bl");
1121 $a_tpl->setVariable("LEGEND_CAPTION", $legend_item[0]);
1122 $a_tpl->setVariable("LEGEND_COLOR", $legend_item[1]);
1123 $a_tpl->setVariable("LEGEND_COLOR_SVG", $r . "," . $g . "," . $b);
1124 $a_tpl->parseCurrentBlock();
1125 }
1126 }
1127
1128 $chart = $chart[0];
1129 }
1130
1131 // patch BGHW jluezen
1132 if (!$pdf) {
1133 $this->ctrl->setParameter($this, "qid", $question->getId());
1134 $url = $this->ctrl->getLinkTarget($this, "downloadChart");
1135 $this->ctrl->setParameter($this, "qid", "");
1136 }
1137
1138 $a_tpl->setVariable("CHART", $chart);
1139 $a_tpl->setVariable("CHART_DL_URL", $url);
1140 $a_tpl->setVariable("CHART_DL_TXT", $this->lng->txt("svy_chart_download"));
1141 }
1142 }
1143
1144 $panel = $ui_factory->panel()->sub("", $ui_factory->legacy($a_tpl->get()));
1145 array_push($this->array_panels, $panel);
1146 }
getGrid($a_results, $a_abs=true, $a_perc=true)
Get grid data.
Accordion user interface class.

References $_GET, Vendor\Package\$b, $cols, $url, SurveyQuestion\_getQuestionTypeName(), ilAccordionGUI\FORCE_ALL_OPEN, SurveyQuestionEvaluation\getChart(), SurveyQuestionEvaluation\getGrid(), SurveyQuestionEvaluation\getTextAnswers(), and ui().

Referenced by evaluation().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setAppraiseeId()

ilSurveyEvaluationGUI::setAppraiseeId (   $a_val)

Set appraisee id.

Parameters
int$a_valappraisee id

Definition at line 171 of file class.ilSurveyEvaluationGUI.php.

172 {
173 $this->appr_id = $a_val;
174 }

Referenced by determineAppraiseeId().

+ Here is the caller graph for this function:

◆ setEvalSubtabs()

ilSurveyEvaluationGUI::setEvalSubtabs ( )

Set the tabs for the evaluation output.

@access private

Definition at line 130 of file class.ilSurveyEvaluationGUI.php.

131 {
132 $ilTabs = $this->tabs;
133 $ilAccess = $this->access;
134
135 $skmg_set = new ilSkillManagementSettings();
136 if ($this->object->getSkillService() && $skmg_set->isActivated()) {
137 $ilTabs->addSubTabTarget(
138 "svy_eval_competences",
139 $this->ctrl->getLinkTarget($this, "competenceEval"),
140 array("competenceEval")
141 );
142 }
143
144 $ilTabs->addSubTabTarget(
145 "svy_eval_cumulated",
146 $this->ctrl->getLinkTarget($this, "evaluation"),
147 array("evaluation", "checkEvaluationAccess")
148 );
149
150 $ilTabs->addSubTabTarget(
151 "svy_eval_detail",
152 $this->ctrl->getLinkTarget($this, "evaluationdetails"),
153 array("evaluationdetails")
154 );
155
156 if ($this->hasResultsAccess()) {
157 $ilTabs->addSubTabTarget(
158 "svy_eval_user",
159 $this->ctrl->getLinkTarget($this, "evaluationuser"),
160 array("evaluationuser")
161 );
162 }
163 }

References $access, $tabs, and hasResultsAccess().

+ Here is the call graph for this function:

Field Documentation

◆ $access

ilSurveyEvaluationGUI::$access
protected

Definition at line 25 of file class.ilSurveyEvaluationGUI.php.

Referenced by evaluationuser(), and setEvalSubtabs().

◆ $appr_id

◆ $ctrl

ilSurveyEvaluationGUI::$ctrl

Definition at line 55 of file class.ilSurveyEvaluationGUI.php.

Referenced by cancelEvaluationAccess(), and competenceEval().

◆ $lng

ilSurveyEvaluationGUI::$lng

Definition at line 53 of file class.ilSurveyEvaluationGUI.php.

Referenced by __construct(), and competenceEval().

◆ $object

ilSurveyEvaluationGUI::$object

Definition at line 52 of file class.ilSurveyEvaluationGUI.php.

Referenced by competenceEval().

◆ $rbacsystem

ilSurveyEvaluationGUI::$rbacsystem
protected

◆ $tabs

ilSurveyEvaluationGUI::$tabs
protected

Definition at line 20 of file class.ilSurveyEvaluationGUI.php.

Referenced by competenceEval(), and setEvalSubtabs().

◆ $toolbar

ilSurveyEvaluationGUI::$toolbar
protected

◆ $tpl

ilSurveyEvaluationGUI::$tpl

◆ $tree

ilSurveyEvaluationGUI::$tree
protected

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

Referenced by cancelEvaluationAccess(), and evaluation().

◆ $user

◆ EXCEL_SUBTITLE

const ilSurveyEvaluationGUI::EXCEL_SUBTITLE = "DDDDDD"

◆ TYPE_SPSS

const ilSurveyEvaluationGUI::TYPE_SPSS = "csv"

Definition at line 48 of file class.ilSurveyEvaluationGUI.php.

Referenced by exportCumulatedResults(), and exportEvaluationUser().

◆ TYPE_XLS

const ilSurveyEvaluationGUI::TYPE_XLS = "excel"

Definition at line 47 of file class.ilSurveyEvaluationGUI.php.

Referenced by exportCumulatedResults(), and exportEvaluationUser().


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