/**
  * Fill table row
  */
 protected function fillRow($a_set)
 {
     global $lng, $ilCtrl;
     $ilCtrl->setParameter($this->parent_obj, "sk_id", $a_set["base_skill"]);
     $ilCtrl->setParameter($this->parent_obj, "tref_id", $a_set["tref_id"]);
     $this->tpl->setVariable("COMPETENCE", ilBasicSkill::_lookupTitle($a_set["base_skill"], $a_set["tref_id"]));
     $path = $this->skill_tree->getSkillTreePath($a_set["base_skill"], $a_set["tref_id"]);
     $path_nodes = array();
     foreach ($path as $p) {
         if ($p["child"] > 1 && $p["skill_id"] != $a_set["base_skill"]) {
             $path_nodes[] = ilBasicSkill::_lookupTitle($p["skill_id"], $p["tref_id"]);
         }
     }
     $this->tpl->setVariable("PATH", implode($path_nodes, " > "));
     $this->tpl->setVariable("NR_OF_QUESTIONS", $a_set["nr_of_q"]);
     $this->tpl->setVariable("MAX_SCALE_POINTS", $a_set["scale_sum"]);
     $this->tpl->setVariable("CMD", $ilCtrl->getLinkTarget($this->parent_obj, "listSkillThresholds"));
     $this->tpl->setVariable("ACTION", $lng->txt("edit"));
     include_once "./Services/Skill/classes/class.ilBasicSkill.php";
     $bs = new ilBasicSkill($a_set["base_skill"]);
     $ld = $bs->getLevelData();
     foreach ($ld as $l) {
         $this->tpl->setCurrentBlock("points");
         $this->tpl->setVariable("LEV", $l["title"]);
         $tr = $this->thresholds[$l["id"]][$a_set["tref_id"]];
         if ((int) $tr != 0) {
             $this->tpl->setVariable("THRESHOLD", (int) $tr);
         } else {
             $this->tpl->setVariable("THRESHOLD", "");
         }
         $this->tpl->parseCurrentBlock();
     }
 }
 /**
  * Constructor
  */
 function __construct($a_parent_obj, $a_parent_cmd, $a_survey, $a_base_skill_id, $a_tref_id)
 {
     global $ilCtrl, $lng, $ilAccess, $lng;
     $this->object = $a_survey;
     $this->base_skill_id = $a_base_skill_id;
     $this->tref_id = $a_tref_id;
     $this->determineMaxScalesAndQuestions();
     ilUtil::sendInfo($lng->txt("survey_skill_nr_q") . ": " . count($this->question_ids) . ", " . $lng->txt("survey_skill_max_scale_points") . ": " . $this->scale_sum);
     include_once "./Modules/Survey/classes/class.ilSurveySkillThresholds.php";
     $this->skill_thres = new ilSurveySkillThresholds($this->object);
     $this->thresholds = $this->skill_thres->getThresholds();
     parent::__construct($a_parent_obj, $a_parent_cmd);
     include_once "./Modules/Survey/classes/class.ilSurveySkill.php";
     $this->skill_survey = new ilSurveySkill($a_survey);
     $this->setData($this->getLevels());
     $this->setTitle(ilBasicSkill::_lookupTitle($this->base_skill_id));
     $this->addColumn($this->lng->txt("survey_skill_level"));
     $this->addColumn($this->lng->txt("survey_up_to_x_points"));
     $this->setRowTemplate("tpl.svy_skill_threshold_row.html", "Modules/Survey");
     //		$this->addMultiCommand("saveThresholds", $lng->txt("save"));
     $this->addCommandButton("saveThresholds", $lng->txt("save"));
     $this->setFormAction($ilCtrl->getFormAction($this->parent_obj));
 }
 public function fillRow($data)
 {
     $skill = $data['skill'];
     $levels = $skill->getLevelData();
     $this->tpl->setCurrentBlock('competence');
     $this->tpl->setVariable('ROWSPAN', $this->getRowspan(count($levels)));
     include_once "./Services/Skill/classes/class.ilBasicSkill.php";
     $this->tpl->setVariable('COMPETENCE', ilBasicSkill::_lookupTitle($skill->getId(), $data['skill_tref_id']));
     $this->tpl->setVariable('NUM_QUESTIONS', $data['num_assigns']);
     $this->tpl->setVariable('MAX_COMP_POINTS', $data['max_points']);
     $this->tpl->parseCurrentBlock();
     $this->tpl->setCurrentBlock('tbl_content');
     for ($i = 0, $max = count($levels); $i < $max; $i++) {
         $level = $levels[$i];
         $this->tpl->setVariable('LEVEL', $level['title']);
         $this->tpl->setVariable('THRESHOLD', $this->buildThresholdInput($data['skill_base_id'], $data['skill_tref_id'], $level['id']));
         if ($i < $max - 1) {
             $this->tpl->parseCurrentBlock();
             $this->tpl->setVariable("CSS_ROW", $this->css_row);
             $this->tpl->setVariable("CSS_NO_BORDER", 'ilBorderlessRow');
         }
     }
 }
 /**
  * Fill table row
  */
 protected function fillRow($a_set)
 {
     global $lng, $ilCtrl;
     $ilCtrl->setParameter($this->parent_obj, "q_id", $a_set["id"]);
     if ($a_set["supported"]) {
         $this->tpl->setCurrentBlock("cmd");
         $this->tpl->setVariable("HREF_CMD", $ilCtrl->getLinkTarget($this->parent_obj, "assignSkillToQuestion"));
         $this->tpl->setVariable("TXT_CMD", $lng->txt("survey_assign_competence"));
         $this->tpl->parseCurrentBlock();
         if ($s = $this->skill_survey->getSkillForQuestion($a_set["id"])) {
             $this->tpl->setCurrentBlock("cmd");
             $this->tpl->setVariable("HREF_CMD", $ilCtrl->getLinkTarget($this->parent_obj, "removeSkillFromQuestion"));
             $this->tpl->setVariable("TXT_CMD", $lng->txt("survey_remove_competence"));
             $this->tpl->parseCurrentBlock();
             include_once "./Services/Skill/classes/class.ilBasicSkill.php";
             $this->tpl->setVariable("COMPETENCE", ilBasicSkill::_lookupTitle($s["base_skill_id"]));
             //var_dump($a_set);
             $path = $this->skill_tree->getSkillTreePath($s["base_skill_id"], $s["tref_id"]);
             $path_nodes = array();
             foreach ($path as $p) {
                 if ($p["child"] > 1 && $p["child"] != $s["base_skill_id"]) {
                     $path_nodes[] = $p["title"];
                 }
             }
             $this->tpl->setVariable("PATH", implode($path_nodes, " > "));
             $this->tpl->setVariable("COMP_ID", "comp_" . $a_set["id"]);
             /*include_once("./Services/UIComponent/Tooltip/classes/class.ilTooltipGUI.php");
             		ilTooltipGUI::addTooltip("comp_".$a_set["id"],
             			ilBasicSkill::_lookupDescription($s["base_skill_id"]));*/
         }
     } else {
         $this->tpl->setVariable("NOT_SUPPORTED", $lng->txt("svy_skl_comp_assignm_not_supported"));
     }
     $this->tpl->setVariable("QUESTION_TITLE", $a_set["title"]);
     $ilCtrl->setParameter($this->parent_obj, "q_id", "");
 }
 public function loadAdditionalSkillData()
 {
     require_once 'Services/Skill/classes/class.ilBasicSkill.php';
     require_once 'Services/Skill/classes/class.ilSkillTree.php';
     $this->setSkillTitle(ilBasicSkill::_lookupTitle($this->getSkillBaseId(), $this->getSkillTrefId()));
     $tree = new ilSkillTree();
     $path = $tree->getSkillTreePath($this->getSkillBaseId(), $this->getSkillTrefId());
     $nodes = array();
     foreach ($path as $node) {
         if ($node['child'] > 1 && $node['skill_id'] != $this->getSkillBaseId()) {
             $nodes[] = $node['title'];
         }
     }
     $this->setSkillPath(implode(' > ', $nodes));
 }
 public function completeCompetenceTitles($rows)
 {
     foreach ($rows as $key => $row) {
         $rows[$key]['competence'] = ilBasicSkill::_lookupTitle($row['skill']->getId(), $row['skill_tref_id']);
     }
     return $rows;
 }
 /**
  * Get gap analysis html
  *
  * @param
  * @return
  */
 function getGapAnalysisHTML($a_user_id = 0, $a_skills = null)
 {
     global $ilUser, $lng;
     //		$this->setTabs("list_skills");
     if ($a_user_id == 0) {
         $user_id = $ilUser->getId();
     } else {
         $user_id = $a_user_id;
     }
     $skills = array();
     if ($this->getProfileId() > 0) {
         $profile = new ilSkillProfile($this->getProfileId());
         $this->profile_levels = $profile->getSkillLevels();
         foreach ($this->profile_levels as $l) {
             $skills[] = array("base_skill_id" => $l["base_skill_id"], "tref_id" => $l["tref_id"], "level_id" => $l["level_id"]);
         }
     } else {
         if (is_array($a_skills)) {
             $skills = $a_skills;
         }
     }
     // get actual levels for gap analysis
     $this->actual_levels = array();
     include_once "./Services/Skill/classes/class.ilBasicSkill.php";
     foreach ($skills as $sk) {
         $bs = new ilBasicSkill($sk["base_skill_id"]);
         if ($this->gap_mode == "max_per_type") {
             $max = $bs->getMaxLevelPerType($sk["tref_id"], $this->gap_mode_type, $user_id);
             $this->actual_levels[$sk["base_skill_id"]][$sk["tref_id"]] = $max;
         } else {
             if ($this->gap_mode == "max_per_object") {
                 $max = $bs->getMaxLevelPerObject($sk["tref_id"], $this->gap_mode_obj_id, $user_id);
                 $this->actual_levels[$sk["base_skill_id"]][$sk["tref_id"]] = $max;
             }
         }
     }
     $incl_self_eval = false;
     if (count($this->getGapAnalysisSelfEvalLevels() > 0)) {
         $incl_self_eval = true;
         $self_vals = $this->getGapAnalysisSelfEvalLevels();
     }
     // output spider stuff
     if (count($skills) >= 3) {
         $max_cnt = 0;
         $leg_labels = array();
         //var_dump($this->profile_levels);
         //foreach ($this->profile_levels as $k => $l)
         // write target, actual and self counter to skill array
         foreach ($skills as $k => $l) {
             //$bs = new ilBasicSkill($l["base_skill_id"]);
             $bs = new ilBasicSkill($l["base_skill_id"]);
             $leg_labels[] = ilBasicSkill::_lookupTitle($l["base_skill_id"], $l["tref_id"]);
             $levels = $bs->getLevelData();
             $cnt = 0;
             foreach ($levels as $lv) {
                 $cnt++;
                 if ($l["level_id"] == $lv["id"]) {
                     $skills[$k]["target_cnt"] = $cnt;
                 }
                 if ($this->actual_levels[$l["base_skill_id"]][$l["tref_id"]] == $lv["id"]) {
                     $skills[$k]["actual_cnt"] = $cnt;
                 }
                 if ($incl_self_eval) {
                     if ($self_vals[$l["base_skill_id"]][$l["tref_id"]] == $lv["id"]) {
                         $skills[$k]["self_cnt"] = $cnt;
                     }
                 }
                 $max_cnt = max($max_cnt, $cnt);
             }
         }
         //			$leg_labels = array("AAAAA", "BBBBB", "CCCCC");
         //var_dump($this->profile_levels);
         //var_dump($this->actual_levels);
         include_once "./Services/Chart/classes/class.ilChart.php";
         $chart = ilChart::getInstanceByType(ilChart::TYPE_SPIDER, "gap_chart");
         $chart->setsize(800, 300);
         $chart->setYAxisMax($max_cnt);
         $chart->setLegLabels($leg_labels);
         // target level
         $cd = $chart->getDataInstance();
         $cd->setLabel($lng->txt("skmg_target_level"));
         $cd->setFill(true, "#A0A0A0");
         // other users
         $cd2 = $chart->getDataInstance();
         if ($this->gap_cat_title != "") {
             $cd2->setLabel($this->gap_cat_title);
         } else {
             if ($this->gap_mode == "max_per_type") {
                 $cd2->setLabel($lng->txt("objs_" . $this->gap_mode_type));
             } else {
                 if ($this->gap_mode == "max_per_object") {
                     $cd2->setLabel(ilObject::_lookupTitle($this->gap_mode_obj_id));
                 }
             }
         }
         $cd2->setFill(true, "#8080FF");
         // self evaluation
         if ($incl_self_eval) {
             $cd3 = $chart->getDataInstance();
             $cd3->setLabel($lng->txt("skmg_self_evaluation"));
             $cd3->setFill(true, "#FF8080");
         }
         // fill in data
         $cnt = 0;
         foreach ($skills as $pl) {
             $cd->addPoint($cnt, (int) $pl["target_cnt"]);
             $cd2->addPoint($cnt, (int) $pl["actual_cnt"]);
             if ($incl_self_eval) {
                 $cd3->addPoint($cnt, (int) $pl["self_cnt"]);
             }
             $cnt++;
         }
         // add data to chart
         if ($this->getProfileId() > 0) {
             $chart->addData($cd);
         }
         $chart->addData($cd2);
         if ($incl_self_eval && count($this->getGapAnalysisSelfEvalLevels()) > 0) {
             $chart->addData($cd3);
         }
         $lg = new ilChartLegend();
         $chart->setLegend($lg);
         $chart_html = $chart->getHTML();
         include_once "./Services/UIComponent/Panel/classes/class.ilPanelGUI.php";
         $pan = ilPanelGUI::getInstance();
         $pan->setPanelStyle(ilPanelGUI::PANEL_STYLE_PRIMARY);
         $pan->setBody($chart_html);
         $chart_html = $pan->getHTML();
     }
     $stree = new ilSkillTree();
     $html = "";
     foreach ($skills as $s) {
         $path = $stree->getSkillTreePath($s["base_skill_id"]);
         // check draft
         foreach ($path as $p) {
             if ($p["status"] == ilSkillTreeNode::STATUS_DRAFT) {
                 continue 2;
             }
         }
         $html .= $this->getSkillHTML($s["base_skill_id"], $user_id, false, $s["tref_id"]);
     }
     // list skills
     //		include_once("./Services/Skill/classes/class.ilPersonalSkillTableGUI.php");
     //		$sktab = new ilPersonalSkillTableGUI($this, "listSkills");
     return $chart_html . $html;
 }
 /**
  * Confirm level assignment removal
  */
 function confirmLevelAssignmentRemoval()
 {
     global $ilCtrl, $tpl, $lng;
     $this->setTabs("levels");
     if (!is_array($_POST["ass_id"]) || count($_POST["ass_id"]) == 0) {
         ilUtil::sendInfo($lng->txt("no_checkbox"), true);
         $ilCtrl->redirect($this, "showLevels");
     } else {
         include_once "./Services/Utilities/classes/class.ilConfirmationGUI.php";
         $cgui = new ilConfirmationGUI();
         $cgui->setFormAction($ilCtrl->getFormAction($this));
         $cgui->setHeaderText($lng->txt("skmg_confirm_remove_level_ass"));
         $cgui->setCancel($lng->txt("cancel"), "showLevels");
         $cgui->setConfirm($lng->txt("remove"), "removeLevelAssignments");
         include_once "./Services/Skill/classes/class.ilBasicSkill.php";
         foreach ($_POST["ass_id"] as $i) {
             $id_arr = explode(":", $i);
             $cgui->addItem("ass_id[]", $i, ilBasicSkill::_lookupTitle($id_arr[0]) . ": " . ilBasicSkill::lookupLevelTitle($id_arr[2]));
         }
         $tpl->setContent($cgui->getHTML());
     }
 }
 /**
  * Get skill for question
  *
  * @param int $a_question_id question id
  * @return array skill array
  */
 function getAllAssignedSkillsAsOptions()
 {
     $skills = array();
     include_once "./Services/Skill/classes/class.ilBasicSkill.php";
     foreach ($this->q_skill as $sk) {
         $skills[$sk["base_skill_id"] . ":" . $sk["tref_id"]] = ilBasicSkill::_lookupTitle($sk["base_skill_id"]);
     }
     return $skills;
 }