/** * Determine max scales and questions * * @param * @return */ function determineMaxScalesAndQuestions() { include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php"; include_once "./Modules/Survey/classes/class.ilSurveySkill.php"; $ssk = new ilSurveySkill($this->object); $this->question_ids = $ssk->getQuestionsForSkill($this->base_skill_id, $this->tref_id); $this->scale_sum = $ssk->determineMaxScale($this->base_skill_id, $this->tref_id); }
/** * Get skills * * @param * @return */ function getSkills() { include_once "./Modules/Survey/classes/class.ilSurveySkill.php"; $sskill = new ilSurveySkill($this->survey); $opts = $sskill->getAllAssignedSkillsAsOptions(); $data = array(); foreach ($opts as $k => $o) { $v = explode(":", $k); $question_ids = $sskill->getQuestionsForSkill($v[0], $v[1]); $scale_sum = $sskill->determineMaxScale($v[0], $v[1]); $data[] = array("title" => $o, "base_skill" => $v[0], "tref_id" => $v[1], "nr_of_q" => count($question_ids), "scale_sum" => $scale_sum); } $this->setData($data); }
/** * Write skills * * @param * @return */ function writeSkills() { global $lng, $ilCtrl; return; include_once "./Modules/Survey/classes/class.ilSurveySkill.php"; $sskill = new ilSurveySkill($this->survey); $apps = $this->survey->getAppraiseesData(); $ctpl = new ilTemplate("tpl.svy_skill_list_changes.html", true, true, "Modules/Survey"); foreach ($apps as $app) { $new_levels = $sskill->determineSkillLevelsForAppraisee($app["user_id"]); foreach ($new_levels as $nl) { if ($nl["new_level_id"] > 0) { ilBasicSkill::writeUserSkillLevelStatus($nl["new_level_id"], $app["user_id"], $this->survey->getRefId(), $nl["tref_id"], ilBasicSkill::ACHIEVED); } } } ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true); $ilCtrl->redirect($this, "listSkillChanges"); }
/** * Competence Evaluation * * @param * @return */ function competenceEval() { global $ilUser, $lng, $ilCtrl, $ilToolbar, $tpl, $ilTabs; $survey = $this->object; $ilTabs->activateSubtab("svy_eval_competences"); $ilTabs->activateTab("svy_results"); $ilToolbar->setFormAction($this->ctrl->getFormAction($this, "competenceEval")); if ($this->object->get360Mode()) { $appr_id = $this->getAppraiseeId(); $this->addApprSelectionToToolbar(); } if ($appr_id == 0) { return; } // evaluation modes $eval_modes = array(); // get all competences of survey include_once "./Modules/Survey/classes/class.ilSurveySkill.php"; $sskill = new ilSurveySkill($survey); $opts = $sskill->getAllAssignedSkillsAsOptions(); $skills = array(); foreach ($opts as $id => $o) { $idarr = explode(":", $id); $skills[$id] = array("id" => $id, "title" => $o, "profiles" => array(), "base_skill" => $idarr[0], "tref_id" => $idarr[1]); } //var_dump($opts); // get matching user competence profiles // -> add gap analysis to profile include_once "./Services/Skill/classes/class.ilSkillProfile.php"; $profiles = ilSkillProfile::getProfilesOfUser($appr_id); foreach ($profiles as $p) { $prof = new ilSkillProfile($p["id"]); $prof_levels = $prof->getSkillLevels(); foreach ($prof_levels as $pl) { if (isset($skills[$pl["base_skill_id"] . ":" . $pl["tref_id"]])) { $skills[$pl["base_skill_id"] . ":" . $pl["tref_id"]]["profiles"][] = $p["id"]; $eval_modes["gap_" . $p["id"]] = $lng->txt("svy_gap_analysis") . ": " . $prof->getTitle(); } } } //var_dump($skills); //var_dump($eval_modes); // if one competence does not match any profiles // -> add "competences of survey" alternative reset($skills); foreach ($skills as $sk) { if (count($sk["profiles"]) == 0) { $eval_modes["skills_of_survey"] = $lng->txt("svy_all_survey_competences"); } } // final determination of current evaluation mode $comp_eval_mode = $_GET["comp_eval_mode"]; if ($_POST["comp_eval_mode"] != "") { $comp_eval_mode = $_POST["comp_eval_mode"]; } if (!isset($eval_modes[$comp_eval_mode])) { reset($eval_modes); $comp_eval_mode = key($eval_modes); $ilCtrl->setParameter($this, "comp_eval_mode", $comp_eval_mode); } $ilCtrl->saveParameter($this, "comp_eval_mode"); include_once "./Services/Form/classes/class.ilSelectInputGUI.php"; $mode_sel = new ilSelectInputGUI($lng->txt("svy_analysis"), "comp_eval_mode"); $mode_sel->setOptions($eval_modes); $mode_sel->setValue($comp_eval_mode); $ilToolbar->addInputItem($mode_sel, true); $ilToolbar->addFormButton($lng->txt("select"), "competenceEval"); if (substr($comp_eval_mode, 0, 4) == "gap_") { // gap analysis $profile_id = (int) substr($comp_eval_mode, 4); include_once "./Services/Skill/classes/class.ilPersonalSkillsGUI.php"; $pskills_gui = new ilPersonalSkillsGUI(); $pskills_gui->setProfileId($profile_id); $pskills_gui->setGapAnalysisActualStatusModePerObject($survey->getId(), $lng->txt("survey_360_raters")); if ($survey->getFinishedIdForAppraiseeIdAndRaterId($appr_id, $appr_id) > 0) { $sskill = new ilSurveySkill($survey); $self_levels = array(); foreach ($sskill->determineSkillLevelsForAppraisee($appr_id, true) as $sl) { $self_levels[$sl["base_skill_id"]][$sl["tref_id"]] = $sl["new_level_id"]; } $pskills_gui->setGapAnalysisSelfEvalLevels($self_levels); } $html = $pskills_gui->getGapAnalysisHTML($appr_id); $tpl->setContent($html); } else { include_once "./Services/Skill/classes/class.ilPersonalSkillsGUI.php"; $pskills_gui = new ilPersonalSkillsGUI(); $pskills_gui->setGapAnalysisActualStatusModePerObject($survey->getId(), $lng->txt("survey_360_raters")); if ($survey->getFinishedIdForAppraiseeIdAndRaterId($appr_id, $appr_id) > 0) { $sskill = new ilSurveySkill($survey); $self_levels = array(); foreach ($sskill->determineSkillLevelsForAppraisee($appr_id, true) as $sl) { $self_levels[$sl["base_skill_id"]][$sl["tref_id"]] = $sl["new_level_id"]; } $pskills_gui->setGapAnalysisSelfEvalLevels($self_levels); } $sk = array(); foreach ($skills as $skill) { $sk[] = array("base_skill_id" => (int) $skill["base_skill"], "tref_id" => (int) $skill["tref_id"]); } $html = $pskills_gui->getGapAnalysisHTML($appr_id, $sk); $tpl->setContent($html); } }
function closeAppraisee($a_user_id) { global $ilDB; // close the appraisee $ilDB->manipulate("UPDATE svy_360_appr" . " SET has_closed = " . $ilDB->quote(time(), "integer") . " WHERE obj_id = " . $ilDB->quote($this->getSurveyId(), "integer") . " AND user_id = " . $ilDB->quote($a_user_id, "integer")); // write competences include_once "./Services/Skill/classes/class.ilSkillManagementSettings.php"; $skmg_set = new ilSkillManagementSettings(); if ($this->get360SkillService() && $skmg_set->isActivated()) { include_once "./Modules/Survey/classes/class.ilSurveySkill.php"; $sskill = new ilSurveySkill($this); $sskill->writeAppraiseeSkills($a_user_id); } }
/** * Deletes a question and all materials from the database * * @param integer $question_id The database id of the question * @access private */ function delete($question_id) { global $ilDB; if ($question_id < 1) { return; } $result = $ilDB->queryF("SELECT obj_fi FROM svy_question WHERE question_id = %s", array('integer'), array($question_id)); if ($result->numRows() == 1) { $row = $ilDB->fetchAssoc($result); $obj_id = $row["obj_fi"]; } else { return; } $affectedRows = $ilDB->manipulateF("DELETE FROM svy_answer WHERE question_fi = %s", array('integer'), array($question_id)); $affectedRows = $ilDB->manipulateF("DELETE FROM svy_constraint WHERE question_fi = %s", array('integer'), array($question_id)); $result = $ilDB->queryF("SELECT constraint_fi FROM svy_qst_constraint WHERE question_fi = %s", array('integer'), array($question_id)); while ($row = $ilDB->fetchObject($result)) { $affectedRows = $ilDB->manipulateF("DELETE FROM svy_constraint WHERE constraint_id = %s", array('integer'), array($row->constraint_fi)); } $affectedRows = $ilDB->manipulateF("DELETE FROM svy_qst_constraint WHERE question_fi = %s", array('integer'), array($question_id)); $affectedRows = $ilDB->manipulateF("DELETE FROM svy_qblk_qst WHERE question_fi = %s", array('integer'), array($question_id)); $affectedRows = $ilDB->manipulateF("DELETE FROM svy_qst_oblig WHERE question_fi = %s", array('integer'), array($question_id)); $affectedRows = $ilDB->manipulateF("DELETE FROM svy_svy_qst WHERE question_fi = %s", array('integer'), array($question_id)); $affectedRows = $ilDB->manipulateF("DELETE FROM svy_variable WHERE question_fi = %s", array('integer'), array($question_id)); $affectedRows = $ilDB->manipulateF("DELETE FROM svy_question WHERE question_id = %s", array('integer'), array($question_id)); $this->deleteAdditionalTableData($question_id); $affectedRows = $ilDB->manipulateF("DELETE FROM svy_material WHERE question_fi = %s", array('integer'), array($question_id)); include_once "./Services/Link/classes/class.ilInternalLink.php"; ilInternalLink::_deleteAllLinksOfSource("sqst", $question_id); $directory = CLIENT_WEB_DIR . "/survey/" . $obj_id . "/{$question_id}"; if (preg_match("/\\d+/", $obj_id) and preg_match("/\\d+/", $question_id) and is_dir($directory)) { include_once "./Services/Utilities/classes/class.ilUtil.php"; ilUtil::delDir($directory); } include_once "./Services/MediaObjects/classes/class.ilObjMediaObject.php"; $mobs = ilObjMediaObject::_getMobsOfObject("spl:html", $question_id); // remaining usages are not in text anymore -> delete them // and media objects (note: delete method of ilObjMediaObject // checks whether object is used in another context; if yes, // the object is not deleted!) foreach ($mobs as $mob) { ilObjMediaObject::_removeUsage($mob, "spl:html", $question_id); $mob_obj =& new ilObjMediaObject($mob); $mob_obj->delete(); } include_once "./Modules/Survey/classes/class.ilSurveySkill.php"; ilSurveySkill::handleQuestionDeletion($question_id, $obj_id); // #12772 - untie question copies from pool question $ilDB->manipulate("UPDATE svy_question" . " SET original_id = NULL" . " WHERE original_id = " . $ilDB->quote($question_id, "integer")); }
/** * Remove skill from question */ function removeSkillFromQuestion() { global $ilCtrl, $lng; include_once "./Modules/Survey/classes/class.ilSurveySkill.php"; $skill_survey = new ilSurveySkill($this->survey); $skill_survey->removeQuestionSkillAssignment((int) $_GET["q_id"]); ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true); $ilCtrl->redirect($this, "listQuestionAssignment"); }
/** * Determine max scales and questions * * @param * @return */ function determineMaxScale($a_base_skill, $a_tref_id = 0) { include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php"; include_once "./Modules/Survey/classes/class.ilSurveySkill.php"; $ssk = new ilSurveySkill($this->survey); $question_ids = $ssk->getQuestionsForSkill($a_base_skill, $a_tref_id); $scale_sum = 0; foreach ($question_ids as $q_id) { $q = SurveyQuestion::_instanciateQuestion($q_id); if (!is_object($q)) { continue; } $cats = $q->getCategories(); $max_scale = 0; for ($i = 0; $i <= $cats->getCategoryCount(); $i++) { $c = $cats->getCategory($i); $n = $c->neutral; $s = $c->scale; if (!$c->neutral) { if ($c->scale > $max_scale) { $max_scale = $c->scale; } } } $scale_sum += $max_scale; } return $scale_sum; }
/** * Get Skills * * @param * @return */ function getSkillLevelsForAppraisee() { $sskill = new ilSurveySkill($this->survey); $new_levels = $sskill->determineSkillLevelsForAppraisee($this->appraisee["user_id"]); $this->setData($new_levels); }