$skills = array_unique($skills); Session::write('skills', $skills); } else { $skills = Session::read('skills', array()); } } else { $skills = Session::read('skills', array()); } $user_list = array(); $count_skills = count($skills); $users = $skill_rel_user->get_user_by_skills($skills); if (!empty($users)) { foreach ($users as $user) { $user_info = api_get_user_info($user['user_id']); $user_list[$user['user_id']]['user'] = $user_info; $my_user_skills = $skill_rel_user->get_user_skills($user['user_id']); $user_skills = array(); $found_counts = 0; foreach ($my_user_skills as $my_skill) { $found = false; if (in_array($my_skill['skill_id'], $skills)) { $found = true; $found_counts++; } $user_skills[] = array('skill_id' => $my_skill['skill_id'], 'found' => $found); $total_skills_to_search[$my_skill['skill_id']] = $my_skill['skill_id']; } $user_list[$user['user_id']]['skills'] = $user_skills; $user_list[$user['user_id']]['total_found_skills'] = $found_counts; } $ordered_user_list = array();
/** * @param int $skill_id * @param bool $load_user_data * @param bool $user_id * @return array */ public function get_children($skill_id, $load_user_data = false, $user_id = false) { $skills = $this->find('all', array('where' => array('parent_id = ? ' => $skill_id))); $skill_obj = new Skill(); $skill_rel_user = new SkillRelUser(); if ($load_user_data) { $passed_skills = $skill_rel_user->get_user_skills($user_id); $done_skills = array(); foreach ($passed_skills as $done_skill) { $done_skills[] = $done_skill['skill_id']; } } if (!empty($skills)) { foreach ($skills as &$skill) { $skill['data'] = $skill_obj->get($skill['skill_id']); if (isset($skill['data']) && !empty($skill['data'])) { if (!empty($done_skills)) { $skill['data']['passed'] = 0; if (in_array($skill['skill_id'], $done_skills)) { $skill['data']['passed'] = 1; } } } else { $skill = null; } } } return $skills; }
* Show the achieved badges by an user * @author Angel Fernando Quiroz Campos <*****@*****.**> * @package chamilo.badge */ require_once '../inc/global.inc.php'; if (api_get_setting('allow_skills_tool') !== 'true') { api_not_allowed(true); } $userId = isset($_GET['user']) ? intval($_GET['user']) : 0; $courseId = api_get_course_int_id(); $sessionId = api_get_session_id(); if ($userId === 0) { exit; } $objSkillRelUser = new SkillRelUser(); $userSkills = $objSkillRelUser->get_user_skills($userId, $courseId, $sessionId); if (empty($userSkills)) { exit; } $assertions = array(); foreach ($userSkills as $skill) { $skillId = current($skill); $assertionUrl = api_get_path(WEB_CODE_PATH) . "badge/assertion.php?"; $assertionUrl .= http_build_query(array('user' => $userId, 'skill' => $skillId, 'course' => $courseId, 'session' => $sessionId)); $assertions[] = $assertionUrl; } $backpack = 'https://backpack.openbadges.org/'; $configBackpack = api_get_setting('openbadges_backpack'); if (strcmp($backpack, $configBackpack) !== 0) { $backpack = $configBackpack; }
/** * @param int $category_id * @param int $user_id * @return bool|string */ public static function register_user_certificate($category_id, $user_id) { $courseId = api_get_course_int_id(); $courseCode = api_get_course_id(); $sessionId = api_get_session_id(); // Generating the total score for a course $cats_course = Category::load($category_id, null, null, null, null, $sessionId, false); /** @var Category $category */ $category = $cats_course[0]; //@todo move these in a function $sum_categories_weight_array = array(); if (isset($cats_course) && !empty($cats_course)) { $categories = Category::load(null, null, null, $category_id); if (!empty($categories)) { foreach ($categories as $subCategory) { $sum_categories_weight_array[$subCategory->get_id()] = $subCategory->get_weight(); } } else { $sum_categories_weight_array[$category_id] = $cats_course[0]->get_weight(); } } $main_weight = $cats_course[0]->get_weight(); $cattotal = Category::load($category_id); $scoretotal = $cattotal[0]->calc_score($user_id); // Do not remove this the gradebook/lib/fe/gradebooktable.class.php // file load this variable as a global $scoredisplay = ScoreDisplay::instance(); $my_score_in_gradebook = $scoredisplay->display_score($scoretotal, SCORE_SIMPLE); // A student always sees only the teacher's repartition $scoretotal_display = $scoredisplay->display_score($scoretotal, SCORE_DIV_PERCENT); if (!self::userFinishedCourse($user_id, $cats_course[0], 0, $courseCode, $sessionId, true)) { return false; } $skillToolEnabled = api_get_setting('skill.allow_skills_tool') == 'true'; $userHasSkills = false; if ($skillToolEnabled) { if (!$category->getGenerateCertificates()) { $skill = new Skill(); $skill->add_skill_to_user($user_id, $category_id, $courseId, $sessionId); } $objSkillRelUser = new SkillRelUser(); $userSkills = $objSkillRelUser->get_user_skills($user_id, $courseId, $sessionId); $userHasSkills = !empty($userSkills); if (!$category->getGenerateCertificates() && $userHasSkills) { return ['badge_link' => Display::url(get_lang('DownloadBadges'), api_get_path(WEB_CODE_PATH) . "gradebook/get_badges.php?user={$user_id}", array('target' => '_blank', 'class' => 'btn btn-default'))]; } } $my_certificate = GradebookUtils::get_certificate_by_user_id($cats_course[0]->get_id(), $user_id); if (empty($my_certificate)) { GradebookUtils::register_user_info_about_certificate($category_id, $user_id, $my_score_in_gradebook, api_get_utc_datetime()); $my_certificate = GradebookUtils::get_certificate_by_user_id($cats_course[0]->get_id(), $user_id); } $html = array(); if (!empty($my_certificate)) { $certificate_obj = new Certificate($my_certificate['id']); $fileWasGenerated = $certificate_obj->html_file_is_generated(); if (!empty($fileWasGenerated)) { $url = api_get_path(WEB_PATH) . 'certificates/index.php?id=' . $my_certificate['id']; $certificates = Display::url(Display::returnFontAwesomeIcon('download') . ' ' . get_lang('DownloadCertificate'), $url, array('target' => '_blank', 'class' => 'btn btn-sm btn-primary')); $exportToPDF = Display::url(Display::return_icon('pdf.png', get_lang('ExportToPDF'), array(), ICON_SIZE_MEDIUM), "{$url}&action=export"); $hideExportLink = api_get_setting('hide_certificate_export_link'); $hideExportLinkStudent = api_get_setting('hide_certificate_export_link_students'); if ($hideExportLink === 'true' || api_is_student() && $hideExportLinkStudent === 'true') { $exportToPDF = null; } $html = array('certificate_link' => $certificates, 'pdf_link' => $exportToPDF, 'pdf_url' => "{$url}&action=export"); if ($skillToolEnabled && $userHasSkills) { $html['badge_link'] = Display::url(get_lang('DownloadBadges'), api_get_path(WEB_CODE_PATH) . "gradebook/get_badges.php?user={$user_id}", array('target' => '_blank', 'class' => 'btn btn-default')); } } return $html; } }