$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();
示例#2
0
 /**
  * @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;
 }
示例#3
0
 * 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;
     }
 }