/** * @param int $catId * @param array $userList */ public static function exportAllCertificates($catId, $userList = array()) { $orientation = api_get_configuration_value('certificate_pdf_orientation'); $params['orientation'] = 'landscape'; if (!empty($orientation)) { $params['orientation'] = $orientation; } $params['left'] = 0; $params['right'] = 0; $params['top'] = 0; $params['bottom'] = 0; $page_format = $params['orientation'] == 'landscape' ? 'A4-L' : 'A4'; $pdf = new PDF($page_format, $params['orientation'], $params); $certificate_list = GradebookUtils::get_list_users_certificates($catId, $userList); $certificate_path_list = array(); if (!empty($certificate_list)) { foreach ($certificate_list as $index => $value) { $list_certificate = GradebookUtils::get_list_gradebook_certificates_by_user_id($value['user_id'], $catId); foreach ($list_certificate as $value_certificate) { $certificate_obj = new Certificate($value_certificate['id']); $certificate_obj->generate(array('hide_print_button' => true)); if ($certificate_obj->html_file_is_generated()) { $certificate_path_list[] = $certificate_obj->html_file; } } } } if (!empty($certificate_path_list)) { // Print certificates (without the common header/footer/watermark // stuff) and return as one multiple-pages PDF $pdf->html_to_pdf($certificate_path_list, get_lang('Certificates'), null, false, false); } }
$cat_id = isset($_GET['cat_id']) ? (int) $_GET['cat_id'] : null; $action = isset($_GET['action']) && $_GET['action'] ? $_GET['action'] : null; switch ($action) { case 'export_all_certificates': $params['orientation'] = 'landscape'; $page_format = $params['orientation'] == 'landscape' ? 'A4-L' : 'A4'; $pdf = new PDF($page_format, $params['orientation'], $params); $certificate_list = get_list_users_certificates($cat_id); $certificate_path_list = array(); if (!empty($certificate_list)) { foreach ($certificate_list as $index => $value) { $list_certificate = get_list_gradebook_certificates_by_user_id($value['user_id'], $cat_id); foreach ($list_certificate as $value_certificate) { $certificate_obj = new Certificate($value_certificate['id']); $certificate_obj->generate(array('hide_print_button' => true)); if ($certificate_obj->html_file_is_generated()) { $certificate_path_list[] = $certificate_obj->html_file; } } } } if (!empty($certificate_path_list)) { // Print certificates (without the common header/footer/watermark // stuff) and return as one multiple-pages PDF $pdf->html_to_pdf($certificate_path_list, get_lang('Certificates'), null, false, false); } break; case 'generate_all_certificates': $user_list = CourseManager::get_user_list_from_course_code(api_get_course_id(), api_get_session_id()); if (!empty($user_list)) { foreach ($user_list as $user_info) {
/** * @param int $category_id * @param int $user_id * @return bool|string */ public static function register_user_certificate($category_id, $user_id) { // generating the total score for a course $cats_course = Category::load($category_id, null, null, null, null, api_get_session_id(), false); $alleval_course = $cats_course[0]->get_evaluations($user_id, true); $alllink_course = $cats_course[0]->get_links($user_id, true); $evals_links = array_merge($alleval_course, $alllink_course); //@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 $category) { $sum_categories_weight_array[$category->get_id()] = $category->get_weight(); } } else { $sum_categories_weight_array[$category_id] = $cats_course[0]->get_weight(); } } $main_weight = $cats_course[0]->get_weight(); $item_total_value = 0; $item_value = 0; for ($count = 0; $count < count($evals_links); $count++) { $item = $evals_links[$count]; $score = $item->calc_score($user_id); $divide = $score[1] == 0 ? 1 : $score[1]; $item_value = $score[0] / $divide * $item->get_weight(); /*var_dump($score[0], $divide, $item->get_weight(), $item_value); echo '---';-*/ $item_total_value += $item_value; } $item_total_value = (double) $item_total_value; $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); //Show certificate $certificate_min_score = $cats_course[0]->get_certificate_min_score(); // A student always sees only the teacher's repartition $scoretotal_display = $scoredisplay->display_score($scoretotal, SCORE_DIV_PERCENT); if (isset($certificate_min_score) && $item_total_value >= $certificate_min_score) { $my_certificate = get_certificate_by_user_id($cats_course[0]->get_id(), $user_id); if (empty($my_certificate)) { register_user_info_about_certificate($category_id, $user_id, $my_score_in_gradebook, api_get_utc_datetime()); $my_certificate = get_certificate_by_user_id($cats_course[0]->get_id(), $user_id); } if (!empty($my_certificate)) { $certificate_obj = new Certificate($my_certificate['id']); $fileWasGenerated = $certificate_obj->html_file_is_generated(); $html = null; if (!empty($fileWasGenerated)) { $url = api_get_path(WEB_PATH) . 'certificates/index.php?id=' . $my_certificate['id']; $certificates = Display::url(Display::return_icon('certificate.png', get_lang('Certificates'), array(), 32), $url, array('target' => '_blank')); $html = '<div class="actions" align="right">'; $html .= $certificates; $html .= '</div>'; } return $html; } } else { return false; } }