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 public

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

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

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
global $ilCtrl
Definition: ilias.php:18
ui()
Definition: ui.php:5
$DIC
Definition: xapitoken.php:46
static getLogger($a_component_id)
Get component logger.
determineAppraiseeId()
Determine appraisee id.
+ Here is the call graph for this function:

Member Function Documentation

◆ addApprSelectionToToolbar()

ilSurveyEvaluationGUI::addApprSelectionToToolbar ( )

Add appraisee selection to toolbar.

Parameters

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

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().

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  }
static _lookupId($a_user_str)
Lookup id by login.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
const RESULTS_SELF_EVAL_ALL
+ 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.

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

Referenced by evaluation(), and evaluationuser().

688  {
689  $tpl = $this->tpl;
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  }
This class represents a property form user interface.
$format
Definition: metadata.php:218
static getInstance()
Get instance.
const TYPE_SPSS
+ 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.

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

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 isWindows()
check wether the current client system is a windows system
$log
Definition: result.php:15
static _writeData($a_session_id, $a_data)
Write session data.
static ilTempnam($a_temp_path=null)
Returns a unique and non existing Path for e temporary file or directory.
static getLogger($a_component_id)
Get component logger.
static deliverFile( $a_file, $a_filename, $a_mime='', $isInline=false, $removeAfterDelivery=false, $a_exit_after=true)
deliver file for download via browser.
static getRootLogger()
The unique root logger has a fixed error level.
+ 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

private

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

References $ctrl, $ilCtrl, and $tree.

Referenced by checkEvaluationAccess().

314  {
316  $tree = $this->tree;
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  }
global $ilCtrl
Definition: ilias.php:18
+ Here is the caller graph for this function:

◆ checkAnonymizedEvaluationAccess()

ilSurveyEvaluationGUI::checkAnonymizedEvaluationAccess ( )

Show the detailed evaluation.

Show the detailed evaluation

private

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

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

Referenced by evaluation().

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  }
$_SESSION["AccountId"]
$_GET["client_id"]
static _lookupObjId($a_id)
$ilUser
Definition: imgupload.php:18
static _hasEvaluationAccess($a_obj_id, $user_id)
+ 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

private

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

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

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  }
$_SESSION["AccountId"]
$_GET["client_id"]
cancelEvaluationAccess()
Cancels the input of the survey access code for evaluation access.
evaluation($details=0, $pdf=false, $return_pdf=false)
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
$_POST["username"]
+ Here is the call graph for this function:

◆ competenceEval()

ilSurveyEvaluationGUI::competenceEval ( )

Competence Evaluation.

Parameters

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

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

1545  {
1546  $ilUser = $this->user;
1547  $lng = $this->lng;
1548  $ilCtrl = $this->ctrl;
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();
1562  $this->addApprSelectionToToolbar();
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  }
$_GET["client_id"]
addApprSelectionToToolbar()
Add appraisee selection to toolbar.
global $ilCtrl
Definition: ilias.php:18
Skill/Competence handling in surveys.
Personal skills GUI class.
static getProfilesOfUser($a_user_id)
Get profiles of a user.
$ilUser
Definition: imgupload.php:18
$_POST["username"]
+ Here is the call graph for this function:

◆ determineAppraiseeId()

ilSurveyEvaluationGUI::determineAppraiseeId ( )

Determine appraisee id.

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

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

Referenced by __construct().

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  }
$valid
setAppraiseeId($a_val)
Set appraisee id.
$ilUser
Definition: imgupload.php:18
+ 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.

References $_GET, and renderChartOnly().

1695  {
1696  $qid = (int) $_GET["qid"];
1697  if (!$qid) {
1698  return;
1699  }
1700 
1701  $this->renderChartOnly();
1702  }
$_GET["client_id"]
+ 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.

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(), ilSubmitButton\getInstance(), ilLinkButton\getInstance(), hasResultsAccess(), IL_CAL_UNIX, renderDetails(), ilUtil\sendFailure(), and ilDatePresentation\setUseRelativeDates().

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

728  {
730  $ilToolbar = $this->toolbar;
731  $tree = $this->tree;
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();
771  $this->addApprSelectionToToolbar();
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  }
$data
Definition: storeScorm.php:23
const EVALUATION_ACCESS_OFF
const EVALUATION_ACCESS_PARTICIPANTS
renderDetails($a_details_parts, $a_details_figure, array $a_qdata, SurveyQuestionEvaluation $a_eval, $a_results, $pdf)
Render details.
Nested List.
static setUseRelativeDates($a_status)
set use relative dates
addApprSelectionToToolbar()
Add appraisee selection to toolbar.
const IL_CAL_UNIX
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date public.
hasResultsAccess()
Check if user can view results granted by rbac or positions.
static _instanciateQuestionEvaluation($question_id, array $a_finished_ids=null)
Creates an instance of a question evaluation with a given question id.
generateAndSendPDF($html, $filename="")
checkAnonymizedEvaluationAccess()
Show the detailed evaluation.
$results
static _getQuestionblock($questionblock_id)
Returns the database row for a given question block.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
const EVALUATION_ACCESS_ALL
$url
$_POST["username"]
+ 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

private

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

References evaluation().

334  {
335  $this->evaluation(1);
336  }
evaluation($details=0, $pdf=false, $return_pdf=false)
+ Here is the call graph for this function:

◆ evaluationdetailspdf()

ilSurveyEvaluationGUI::evaluationdetailspdf ( )

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

References evaluation().

1690  {
1691  $this->evaluation(1, true);
1692  }
evaluation($details=0, $pdf=false, $return_pdf=false)
+ Here is the call graph for this function:

◆ evaluationpdf()

ilSurveyEvaluationGUI::evaluationpdf ( )

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

References evaluation().

1685  {
1686  $this->evaluation(0, true);
1687  }
evaluation($details=0, $pdf=false, $return_pdf=false)
+ 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

private

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

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

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();
1418  $this->addApprSelectionToToolbar();
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  }
$data
Definition: storeScorm.php:23
addApprSelectionToToolbar()
Add appraisee selection to toolbar.
parseUserSpecificResults(array $a_finished_ids=null)
hasResultsAccess()
Check if user can view results granted by rbac or positions.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
+ Here is the call graph for this function:

◆ executeCommand()

ilSurveyEvaluationGUI::executeCommand ( )

execute command

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

References $ret, and getCommand().

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
+ Here is the call graph for this function:

◆ exportCumulatedResults()

ilSurveyEvaluationGUI::exportCumulatedResults (   $details = 0)

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

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

Referenced by exportData(), and exportDetailData().

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  }
static deliverData($a_data, $a_filename, $mime="application/octet-stream", $charset="")
deliver data for download via browser.
exit
Definition: login.php:29
exportResultsDetailsExcel(ilExcel $a_excel, SurveyQuestionEvaluation $a_eval, $a_results, $a_do_title, $a_do_label)
Export details (excel only)
$type
static getASCIIFilename($a_filename)
convert utf8 to ascii filename
processCSVRow($row, $quoteAll=false, $separator=";")
Processes an array as a CSV row and converts the array values to correct CSV values.
static _instanciateQuestionEvaluation($question_id, array $a_finished_ids=null)
Creates an instance of a question evaluation with a given question id.
$_POST["username"]
const TYPE_SPSS
+ 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.

References $_POST, and exportCumulatedResults().

662  {
663  if (strlen($_POST["export_format"])) {
664  $this->exportCumulatedResults(0);
665  return;
666  } else {
667  $this->ctrl->redirect($this, 'evaluation');
668  }
669  }
$_POST["username"]
+ Here is the call graph for this function:

◆ exportDetailData()

ilSurveyEvaluationGUI::exportDetailData ( )

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

References $_POST, and exportCumulatedResults().

672  {
673  if (strlen($_POST["export_format"])) {
674  $this->exportCumulatedResults(1);
675  return;
676  } else {
677  $this->ctrl->redirect($this, 'evaluation');
678  }
679  }
$_POST["username"]
+ Here is the call graph for this function:

◆ exportEvaluationUser()

ilSurveyEvaluationGUI::exportEvaluationUser ( )

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

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

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  }
static deliverData($a_data, $a_filename, $mime="application/octet-stream", $charset="")
deliver data for download via browser.
exit
Definition: login.php:29
static setUseRelativeDates($a_status)
set use relative dates
const IL_CAL_UNIX
static getASCIIFilename($a_filename)
convert utf8 to ascii filename
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date public.
processCSVRow($row, $quoteAll=false, $separator=";")
Processes an array as a CSV row and converts the array values to correct CSV values.
static _instanciateQuestionEvaluation($question_id, array $a_finished_ids=null)
Creates an instance of a question evaluation with a given question id.
filterSurveyParticipantsByAccess($a_finished_ids)
$rows
Definition: xhr_table.php:10
$_POST["username"]
const TYPE_SPSS
+ 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.

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

Referenced by exportCumulatedResults().

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.
parseResultsToExcel(ilExcel $a_excel, ilSurveyEvaluationResults $a_results, &$a_excel_row, array $a_grid=null, array $a_text_answers=null, $a_include_mode=true)
static _getQuestionTypeName($type_tag)
Return the translation for a given question type tag.
addSheet($a_name, $a_activate=true)
Add sheet.
setBold($a_coords)
Set cell(s) to bold.
getCoordByColumnAndRow($pColumn=1, $pRow=1)
Get cell coordinate (e.g.
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.
getTextAnswers($a_results)
Get text answers.
+ 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.

Referenced by exportEvaluationUser(), and parseUserSpecificResults().

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  }
+ 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.

References $filename, ILIAS_HTTP_PATH, and ilHtmlToPdfTransformerFactory\PDF_OUTPUT_DOWNLOAD.

Referenced by evaluation(), and renderChartOnly().

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  }
Class ilHtmlToPdfTransformerFactory.
$filename
Definition: buildRTE.php:89
+ 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.

References $appr_id.

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

182  {
183  return $this->appr_id;
184  }
+ Here is the caller graph for this function:

◆ getCommand()

ilSurveyEvaluationGUI::getCommand (   $cmd)

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

Referenced by executeCommand().

121  {
122  return $cmd;
123  }
+ 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.

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

1680  {
1681  return $this->access->checkRbacOrPositionPermissionAccess('read_results', 'access_results', $this->object->getRefId());
1682  }
+ 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.

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

Referenced by exportResultsDetailsExcel().

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  }
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.
$cols
Definition: xhr_table.php:11
+ 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.

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

Referenced by evaluationuser().

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  }
$data
Definition: storeScorm.php:23
static _instanciateQuestionEvaluation($question_id, array $a_finished_ids=null)
Creates an instance of a question evaluation with a given question id.
filterSurveyParticipantsByAccess($a_finished_ids)
+ 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.

References ilUtil\sendInfo().

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.
+ 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 public

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

Referenced by exportCumulatedResults(), and exportEvaluationUser().

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  }
+ Here is the caller graph for this function:

◆ renderChartOnly()

ilSurveyEvaluationGUI::renderChartOnly ( )

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

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

Referenced by downloadChart().

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  }
$_GET["client_id"]
static _getTitle($question_id)
Returns the question title of a question with a given id.
static _instanciateQuestionEvaluation($question_id, array $a_finished_ids=null)
Creates an instance of a question evaluation with a given question id.
generateAndSendPDF($html, $filename="")
+ 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_figureilTemplate $a_tpl
array$a_qdata
SurveyQuestionEvaluation$a_eval
ilSurveyEvaluationResults | array$a_results

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

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

Referenced by evaluation().

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  }
$_GET["client_id"]
static _getQuestionTypeName($type_tag)
Return the translation for a given question type tag.
getGrid($a_results, $a_abs=true, $a_perc=true)
Get grid data.
ui()
Definition: ui.php:5
$url
Accordion user interface class.
$cols
Definition: xhr_table.php:11
getTextAnswers($a_results)
Get text answers.
+ 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.

Referenced by determineAppraiseeId().

172  {
173  $this->appr_id = $a_val;
174  }
+ Here is the caller graph for this function:

◆ setEvalSubtabs()

ilSurveyEvaluationGUI::setEvalSubtabs ( )

Set the tabs for the evaluation output.

private

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

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

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  }
hasResultsAccess()
Check if user can view results granted by rbac or positions.
+ 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.

◆ TYPE_XLS

const ilSurveyEvaluationGUI::TYPE_XLS = "excel"

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


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