function mycompetences(&$url)
{
    checkPerm('view');
    $html = "";
    $html .= getTitleArea(Lang::t('_COMPETENCES'), 'competences');
    $html .= '<div class="std_block">';
    $cmodel = new CompetencesAdm();
    $fmodel = new FunctionalrolesAdm();
    $id_user = getLogUserId();
    $ucomps = $cmodel->getUserCompetences($id_user);
    $rcomps = $fmodel->getUserRequiredCompetences($id_user);
    $ucomps_info = $cmodel->getCompetencesInfo(array_keys($ucomps));
    $language = getLanguage();
    $_typologies = $cmodel->getCompetenceTypologies();
    $_types = $cmodel->getCompetenceTypes();
    $icon_actv = '<span class="ico-sprite subs_actv"><span>' . Lang::t('_COMPETENCE_OBTAINED', 'competences') . '</span></span>';
    $icon_req = '<span class="ico-sprite subs_actv"><span>' . Lang::t('_MANDATORY', 'competences') . '</span></span>';
    //*******************
    require_once _base_ . '/lib/lib.table.php';
    $table = new Table(Get::sett('visuItem'), Lang::t('_COMPETENCES'), Lang::t('_COMPETENCES'));
    $style_h = array('', '', 'image', 'image', 'image', 'image', 'image');
    $label_h = array(Lang::t('_NAME', 'competences'), Lang::t('_TYPOLOGY', 'competences'), Lang::t('_TYPE', 'standard'), Lang::t('_SCORE', 'competences'), Lang::t('_DATE_LAST_COMPLETE', 'subscribe'), Lang::t('_COMPETENCES_REQUIRED', 'competences'));
    $table->addHead($label_h, $style_h);
    foreach ($ucomps_info as $id_competence => $cinfo) {
        $line = array();
        $line[] = $cinfo->langs[$language]['name'];
        $line[] = $_typologies[$cinfo->typology];
        $line[] = $_types[$cinfo->type];
        $line[] = $cinfo->type == 'score' ? '<b>' . $ucomps[$id_competence]->score_got . '</b>' : $icon_actv;
        $line[] = Format::date($ucomps[$id_competence]->last_assign_date, 'datetime');
        $line[] = array_key_exists($id_competence, $rcomps) ? $icon_req : '';
        $table->addBody($line);
    }
    $html .= $table->getTable();
    $html .= '</div>';
    $html .= Form::openForm('beck_url', 'index.php');
    $html .= Form::openButtonSpace();
    $html .= Form::getButton('close', 'close', Lang::t('_CLOSE', 'standard'));
    $html .= Form::closeButtonSpace();
    $html .= Form::closeform();
    cout($html, 'content');
}
 public function getUserCompetences($id_user, $fncroles = false)
 {
     if ($id_user <= 0) {
         return false;
     }
     $output = array();
     $query = "SELECT * FROM " . $this->_getCompetencesUsersTable() . " WHERE id_user="******" AND score_got>0";
     $res = $this->db->query($query);
     if ($res) {
         while ($obj = $this->db->fetch_obj($res)) {
             $output[$obj->id_competence] = $obj;
         }
     }
     //retrieve required competences too
     if ($fncroles) {
         $fmodel = new FunctionalrolesAdm();
         $req = $fmodel->getUserRequiredCompetences($id_user, true);
         //$cinfo = $this->getCompetencesInfo(array_keys($req));
         foreach ($req as $id_competence => $cdata) {
             if (isset($output[$id_competence])) {
                 $output[$id_competence]->required = true;
                 $output[$id_competence]->gap = $output[$id_competence]->score_got - $cdata->score;
             } else {
                 $t = new stdClass();
                 $t->id_competence = $id_competence;
                 $t->id_user = $id_user;
                 $t->score_got = 0;
                 $t->last_assign_date = '';
                 $t->required = true;
                 $t->gap = 0 - $cdata->score;
                 $output[$id_competence] = $t;
             }
         }
     }
     return $output;
 }
 public function convertEntity($id_entities, $rule_type)
 {
     $entities_name = array();
     if (empty($id_entities) && $rule_type != 'base') {
         return $entities_name;
     }
     switch ($rule_type) {
         case "base":
             foreach ($id_entities as $i => $ename) {
                 if (isset($ename->id_entity)) {
                     $entities_name[$ename->id_entity] = $ename->title;
                 }
             }
             break;
         case "orgchart":
             $us_man = new UsermanagementAdm();
             $folders = $us_man->getInfoFolders($id_entities);
             $entities_name = $folders['idst'];
             break;
         case "group":
             $aclman = Docebo::aclm();
             $names = $aclman->getGroups($id_entities);
             if ($names) {
                 foreach ($names as $group) {
                     $entities_name[$group[ACL_INFO_IDST]] = $aclman->relativeId($group[ACL_INFO_GROUPID]);
                 }
             }
             break;
         case "fncrole":
             $fmodel = new FunctionalrolesAdm();
             $entities_name = $fmodel->getFunctionalRolesNames($id_entities);
             break;
     }
     return $entities_name;
 }
 function getUserFunctionalRoles($id_user)
 {
     $fmodel = new FunctionalrolesAdm();
     $roles = $fmodel->getUserFunctionalRoles($id_user, true);
     if (is_array($roles)) {
         $info = $fmodel->getFunctionalRolesInfo(array_keys($roles));
     } else {
         $info = array();
     }
     $output = array();
     $lang_code = getLanguage();
     foreach ($info as $id_fncrole => $fdata) {
         $obj = new stdClass();
         $obj->id_fncrole = $id_fncrole;
         $obj->name = $fdata->langs[$lang_code]['name'];
         $obj->competences_obtained = $roles[$id_fncrole]->competences_obtained;
         $obj->competences_required = $roles[$id_fncrole]->competences_required;
         $output[$id_fncrole] = $obj;
     }
     return $output;
 }
 function addUser($params)
 {
     try {
         $functionalrolesadm = new FunctionalrolesAdm();
         $result = $functionalrolesadm->assignMembers($params["id_fncrole"], array(0 => $params["id_user"]));
         $enrollrules = new EnrollrulesAlms();
         $enrollrules->applyRulesMultiLang('_LOG_USERS_TO_FNCROLE', array(0 => $params["id_user"]), false, $params["id_fncrole"]);
         $result = $params["id_user"];
     } catch (Exception $e) {
         $result = false;
     }
     return $result;
 }
 public function saveGroupMembers($idst, $members)
 {
     //validate parameters
     if ($idst <= 0) {
         return false;
     }
     if (is_numeric($members)) {
         $members = array($members);
     }
     if (!is_array($members)) {
         return false;
     }
     if (empty($members)) {
         return true;
     }
     //filter and validate members - group can't have hisself as member, members cannot be fncroles
     $fmodel = new FunctionalrolesAdm();
     $fncroles = $fmodel->getAllFunctionalRoles();
     if (!empty($fncroles)) {
         $members = array_diff($members, $fncroles);
     }
     //delete old members
     $res = $this->deleteGroupMembers($idst);
     if (!$res) {
         return false;
     }
     //write new members
     if (count($members) > 0) {
         $insert_list = array();
         foreach ($members as $member) {
             if (is_numeric($member) && $member > 0 && $member != $idst) {
                 $insert_list[] = '(' . (int) $idst . ', ' . (int) $member . ')';
             }
         }
         if (count($insert_list) > 0) {
             $query = "INSERT INTO %adm_group_members (idst, idstMember) VALUES " . implode(",", $insert_list);
             $res = $this->db->query($query);
         }
     }
     return $res;
 }