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'); }
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; }
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)); }