/* For licensing terms, see /license.txt */ /** * @package chamilo.admin */ use ChamiloSession as Session; $cidReset = true; //require_once '../inc/global.inc.php'; $this_section = SECTION_PLATFORM_ADMIN; api_protect_admin_script(); if (api_get_setting('skill.allow_skills_tool') != 'true') { api_not_allowed(); } $interbreadcrumb[] = array('url' => 'index.php', "name" => get_lang('PlatformAdmin')); $skill = new Skill(); $skill_profile = new SkillProfile(); $skill_rel_user = new SkillRelUser(); $url = api_get_path(WEB_AJAX_PATH) . 'skill.ajax.php'; $tpl = new Template(get_lang('Skills')); $form = new FormValidator('profile_search'); $form->addElement('header', get_lang('SearchSkills')); $form->addElement('select', 'skills', null, null, array('id' => 'skills')); $form->addButtonSearch(get_lang('Search')); $profiles = $skill_profile->get_all(); $tpl->assign('profiles', $profiles); $total_skills_to_search = array(); if ($form->validate()) { $values = $form->getSubmitValues(); $skills = $values['skills']; if (!empty($skills)) { $hidden_skills = isset($values['hidden_skills']) ? $values['hidden_skills'] : array(); $skills = array_merge($skills, $hidden_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;
<?php /* For licensing terms, see /license.txt */ /** * Show information about a new assertion * @author Angel Fernando Quiroz Campos <*****@*****.**> * @package chamilo.badge */ header('Content-Type: application/json'); require_once '../inc/global.inc.php'; $userId = isset($_GET['user']) ? intval($_GET['user']) : 0; $skillId = isset($_GET['skill']) ? intval($_GET['skill']) : 0; $courseId = isset($_GET['course']) ? intval($_GET['course']) : 0; $sessionId = isset($_GET['session']) ? intval($_GET['session']) : 0; if ($userId === 0 || $skillId === 0) { exit; } $objSkill = new Skill(); if (!$objSkill->user_has_skill($userId, $skillId, $courseId, $sessionId)) { exit; } $objSkillRelUser = new SkillRelUser(); $userSkill = $objSkillRelUser->getByUserAndSkill($userId, $skillId, $courseId, $sessionId); if ($userSkill == false) { exit; } $user = api_get_user_info($userSkill['user_id']); $json = array('uid' => $userSkill['id'], 'recipient' => array('type' => 'email', 'hashed' => false, 'identity' => $user['email']), 'issuedOn' => strtotime($userSkill['acquired_skill_at']), 'badge' => api_get_path(WEB_CODE_PATH) . "badge/class.php?id={$skillId}", 'verify' => array('type' => 'hosted', 'url' => api_get_path(WEB_CODE_PATH) . "badge/assertion.php?" . http_build_query(array('user' => $userId, 'skill' => $skillId, 'course' => $courseId, 'session' => $sessionId)))); echo json_encode($json);
/** * @param int $user_id * @param int $gradebook_id * @param int $courseId * @param int $sessionId */ public function add_skill_to_user($user_id, $gradebook_id, $courseId = 0, $sessionId = 0) { $skill_gradebook = new SkillRelGradebook(); $skill_rel_user = new SkillRelUser(); $skill_gradebooks = $skill_gradebook->get_all(array('where' => array('gradebook_id = ?' => $gradebook_id))); if (!empty($skill_gradebooks)) { foreach ($skill_gradebooks as $skill_gradebook) { $user_has_skill = $this->user_has_skill($user_id, $skill_gradebook['skill_id'], $courseId, $sessionId); if (!$user_has_skill) { $params = array('user_id' => $user_id, 'skill_id' => $skill_gradebook['skill_id'], 'acquired_skill_at' => api_get_utc_datetime(), 'course_id' => intval($courseId)); if (!empty($sessionId)) { $params['session_id'] = $sessionId; } $skill_rel_user->save($params); } } } }
/** * @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; } }