Пример #1
0
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');
}
Пример #2
0
 function getUserCompetences($id_user)
 {
     $cmodel = new CompetencesAdm();
     $scores = $cmodel->getUserCompetences($id_user, true);
     if (is_array($scores)) {
         $info = $cmodel->getCompetencesInfo(array_keys($scores));
     } else {
         $info = array();
     }
     $output = array();
     $lang_code = getLanguage();
     foreach ($info as $id_competence => $cdata) {
         $obj = new stdClass();
         $obj->id_competence = $id_competence;
         $obj->name = $cdata->langs[$lang_code]['name'];
         $obj->id_category = $cdata->id_category;
         $obj->typology = $cdata->typology;
         $obj->type = $cdata->type;
         $obj->score = $scores[$id_competence]->score_got;
         $obj->required = property_exists($scores[$id_competence], 'required') && $scores[$id_competence]->required ? true : false;
         $obj->gap = property_exists($scores[$id_competence], 'gap') ? (int) $scores[$id_competence]->gap : false;
         $output[$id_competence] = $obj;
     }
     return $output;
 }
Пример #3
0
 function _get_competences_query($type = 'html', $report_data = NULL, $other = '')
 {
     $cmodel = new CompetencesAdm();
     if ($report_data == NULL) {
         $ref =& $_SESSION['report_tempdata'];
     } else {
         $ref =& $report_data;
     }
     $rc_filters =& $ref['columns_filter']['filters_list'];
     $rc_exclusive = $ref['columns_filter']['exclusive'];
     //die('<pre>'.print_r($rc_filters, true).'</pre>');
     $final_arr = array();
     $all_users = $ref['rows_filter']['all_users'];
     $users_selection = $ref['rows_filter']['users'];
     //check admin permissions
     if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN && !Docebo::user()->isAnonymous()) {
         require_once _base_ . '/lib/lib.preference.php';
         $adminManager = new AdminPreference();
         $admin_tree = $adminManager->getAdminTree(Docebo::user()->getIdST());
         $admin_users = Docebo::aclm()->getAllUsersFromIdst($admin_tree);
         $all_users = false;
         $users_selection = array_intersect($users_selection, $admin_users);
         unset($admin_users);
         //free some memory
     }
     if (!$all_users && empty($users_selection)) {
         cout(Lang::t('_EMPTY_SELECTION', 'report'), 'content');
         return;
     }
     if (!$all_users) {
         $user_query_select = " AND t4.idst IN (" . implode(',', $users_selection) . ")";
     } else {
         $user_query_select = "";
     }
     //process filter and build query
     $table1 = "%lms_competence";
     $table2 = "%lms_competence_lang";
     $table3 = "%lms_competence_user";
     $table4 = "%adm_user";
     //extract all competneces for all selected users and store the data
     $arr_data = array();
     $arr_userids = array();
     $arr_competences = array();
     $language = getLanguage();
     $acl_man = Docebo::user()->getACLManager();
     $query = "SELECT t1.id_competence, t2.name, t3.id_user, t4.userid, t3.score_got " . " FROM (" . $table1 . " as t1 LEFT JOIN " . $table2 . " as t2 ON (t1.id_competence = t2.id_competence " . " AND t2.lang_code='" . $language . "')) JOIN " . $table3 . " as t3 ON (t1.id_competence = t3.id_competence) " . " JOIN " . $table4 . " as t4 ON (t3.id_user = t4.idst AND t4.valid=1 " . $user_query_select . " ) " . " ORDER BY t4.userid";
     $res = sql_query($query);
     while ($obj = sql_fetch_object($res)) {
         $arr_data[$obj->id_user][$obj->id_competence] = $obj->score_got;
         if (!in_array($obj->id_competence, $arr_competences)) {
             $arr_competences[] = $obj->id_competence;
         }
         $arr_userids[$obj->id_user] = $acl_man->relativeId($obj->userid);
     }
     if (count($arr_competences) <= 0) {
         cout(Lang::t('_NO_CONTENT', 'report'), 'content');
         return;
     }
     $cinfo = $cmodel->getCompetencesInfo($arr_competences);
     $ucount = 0;
     $signs = array('0' => '<', '1' => '<=', '2' => '=', '3' => '>=', '4' => '>');
     $conds = array();
     $icon_actv = '<span class="ico-sprite subs_actv"><span>' . Lang::t('_COMPETENCE_OBTAINED', 'competences') . '</span></span>';
     $icon_email = $this->_loadEmailIcon();
     //prepare buffer object
     require_once _lms_ . '/admin/modules/report/report_tableprinter.php';
     $buffer = new ReportTablePrinter($type, true);
     $buffer->openTable(Lang::t('_RC_CAPTION', 'report'), Lang::t('RC_CAPTION', 'report'));
     $buffer->openHeader();
     //set header
     $_head = array(Lang::t('_USER', 'standard'));
     foreach ($arr_competences as $cid) {
         $_head[] = array('style' => 'img-cell', 'value' => $cinfo[$cid]->langs[$language]['name']);
     }
     if ($this->use_mail) {
         $_head[] = array('style' => 'img-cell', 'value' => $icon_email);
     }
     //render header
     $buffer->addHeader($_head);
     $buffer->closeHeader();
     $buffer->openBody();
     //die('<pre>'.print_r($rc_filters, true).'</pre>');
     //check all data row and print them
     while (list($id_user, $ucomps) = each($arr_data)) {
         $is_valid = true;
         $satisfied = 0;
         $num_conditions = 0;
         foreach ($rc_filters as $id_competence => $filter) {
             if (isset($filter['flag'])) {
                 //we are checking a competence of type 'flag' --> just check if the score exists and is > 0
                 $num_conditions++;
                 if ($filter['flag'] == 'yes') {
                     //check conditions
                     if (array_key_exists($id_competence, $ucomps) && $ucomps[$id_competence] > 0) {
                         $satisfied++;
                     }
                 } else {
                     if (!array_key_exists($id_competence, $ucomps) || $ucomps[$id_competence] <= 0) {
                         $satisfied++;
                     }
                 }
             } else {
                 foreach ($filter as $fvalue) {
                     $num_conditions++;
                     $_sign = $fvalue['sign'];
                     $_value = $fvalue['value'];
                     if (array_key_exists($id_competence, $ucomps) && $ucomps[$id_competence] > 0) {
                         //condition ok
                         $condition = false;
                         switch ($_sign) {
                             case 0:
                                 $condition = $ucomps[$id_competence] < $_value;
                                 break;
                             case 1:
                                 $condition = $ucomps[$id_competence] <= $_value;
                                 break;
                             case 2:
                                 $condition = $ucomps[$id_competence] == $_value;
                                 break;
                             case 3:
                                 $condition = $ucomps[$id_competence] >= $_value;
                                 break;
                             case 4:
                                 $condition = $ucomps[$id_competence] > $_value;
                                 break;
                         }
                         if ($condition) {
                             $satisfied++;
                         }
                     }
                 }
             }
         }
         $is_valid = true;
         if ($num_conditions > 0) {
             $is_valid = false;
             if ($rc_exclusive && $satisfied >= $num_conditions) {
                 $is_valid = true;
             }
             if (!$rc_exclusive && $satisfied > 0) {
                 $is_valid = true;
             }
         }
         if ($is_valid) {
             //update lines counter
             $ucount++;
             //set line values
             $line = array($arr_userids[$id_user]);
             foreach ($arr_competences as $id_competence) {
                 $line[] = array('style' => 'img-cell', 'value' => array_key_exists($id_competence, $ucomps) && $ucomps[$id_competence] > 0 ? $cinfo[$id_competence]->type == 'score' ? '<b>' . $ucomps[$id_competence] . '</b>' : $icon_actv : '');
             }
             if ($this->use_mail) {
                 $line[] = array('style' => 'img-cell', 'value' => '<div class="align_center">' . Form::getInputCheckbox('mail_' . $id_user, 'mail_recipients[]', $id_user, isset($_POST['select_all']), '') . '</div>');
             }
             //render line
             $buffer->addLine($line);
         }
     }
     //check if we have rendered any row
     if ($ucount <= 0) {
         cout(Lang::t('_NO_CONTENT', 'report'), 'content');
         return;
     }
     //close table
     $buffer->closeBody();
     $buffer->closeTable();
     //*****************
     cout($buffer->get());
     if ($this->use_mail) {
         $this->_loadEmailActions();
     }
 }
 public function show_coursesTask()
 {
     $id_fncrole = Get::req('id', DOTY_INT, -1);
     if ($id_fncrole <= 0) {
         $this->render('invalid', array('message' => Lang::t('_INVALID_FNCROLE', 'fncroles'), 'back_url' => $back_url));
         return;
     }
     $cmodel = new CompetencesAdm();
     $competences = $this->model->getCompetences($id_fncrole);
     $properties = $this->model->getCompetencesProperties($competences, $id_fncrole);
     $competences_info = $cmodel->getCompetencesInfo($competences);
     while (list($key, $value) = each($competences_info)) {
         $value->role_score = isset($properties[$key]) ? $properties[$key]->score : 0;
         $value->role_expiration = isset($properties[$key]) ? $properties[$key]->expiration : 0;
     }
     $courses_info = $this->model->getCompetencesCoursesInfo($id_fncrole);
     $title_arr = array('index.php?r=adm/functionalroles/show' => Lang::t('_FUNCTIONAL_ROLE', 'fncroles'), Lang::t('_COURSES_FOR_COMPETENCES', 'course') . ': ' . $this->model->getFunctionalRoleName($id_fncrole));
     $this->render('competences_courses', array('title' => $title_arr, 'language' => getLanguage(), 'competences_info' => $competences_info, 'courses_info' => $courses_info, 'json' => $this->json));
 }