/**
  * 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");
 }
Example #8
0
 /**
  * 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);
 }