gradebook_display_certificate.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. /**
  4. * Script
  5. * @package chamilo.gradebook
  6. */
  7. require_once '../inc/global.inc.php';
  8. $current_course_tool = TOOL_GRADEBOOK;
  9. api_protect_course_script();
  10. set_time_limit(0);
  11. ini_set('max_execution_time', 0);
  12. //extra javascript functions for in html head:
  13. $htmlHeadXtra[] ="<script>
  14. function confirmation() {
  15. if (confirm(\" " . trim(get_lang('AreYouSureToDelete')) . " ?\")) {
  16. return true;
  17. } else {
  18. return false;
  19. }
  20. }
  21. </script>";
  22. api_block_anonymous_users();
  23. if (!api_is_allowed_to_edit()) {
  24. api_not_allowed(true);
  25. }
  26. $cat_id = isset($_GET['cat_id']) ? (int)$_GET['cat_id'] : null;
  27. $action = isset($_GET['action']) && $_GET['action'] ? $_GET['action'] : null;
  28. $filterOfficialCode = isset($_POST['filter']) ? Security::remove_XSS($_POST['filter']) : null;
  29. $filterOfficialCodeGet = isset($_GET['filter']) ? Security::remove_XSS($_GET['filter']) : null;
  30. switch ($action) {
  31. case 'export_all_certificates':
  32. $userList = array();
  33. if (!empty($filterOfficialCodeGet)) {
  34. $userList = UserManager::getUsersByOfficialCode($filterOfficialCodeGet);
  35. }
  36. Category::exportAllCertificates($cat_id, $userList);
  37. break;
  38. case 'generate_all_certificates':
  39. $user_list = CourseManager::get_user_list_from_course_code(
  40. api_get_course_id(),
  41. api_get_session_id()
  42. );
  43. if (!empty($user_list)) {
  44. foreach ($user_list as $user_info) {
  45. if ($user_info['status'] == INVITEE) {
  46. continue;
  47. }
  48. Category::register_user_certificate($cat_id, $user_info['user_id']);
  49. }
  50. }
  51. break;
  52. case 'delete_all_certificates':
  53. Category::deleteAllCertificates($cat_id);
  54. break;
  55. }
  56. $course_code = api_get_course_id();
  57. $interbreadcrumb[] = array('url' => Security::remove_XSS($_SESSION['gradebook_dest']).'?', 'name' => get_lang('Gradebook'));
  58. $interbreadcrumb[] = array('url' => '#','name' => get_lang('GradebookListOfStudentsCertificates'));
  59. $this_section = SECTION_COURSES;
  60. Display::display_header('');
  61. if (isset($_GET['action']) && $_GET['action'] == 'delete') {
  62. $check = Security::check_token('get');
  63. if ($check) {
  64. $certificate = new Certificate($_GET['certificate_id']);
  65. $result = $certificate->delete(true);
  66. Security::clear_token();
  67. if ($result ==true) {
  68. Display::display_confirmation_message(get_lang('CertificateRemoved'));
  69. } else {
  70. Display::display_error_message(get_lang('CertificateNotRemoved'));
  71. }
  72. }
  73. }
  74. $token = Security::get_token();
  75. echo Display::page_header(get_lang('GradebookListOfStudentsCertificates'));
  76. //@todo replace all this code with something like get_total_weight()
  77. $cats = Category :: load($cat_id, null, null, null, null, null, false);
  78. if (!empty($cats)) {
  79. //with this fix the teacher only can view 1 gradebook
  80. if (api_is_platform_admin()) {
  81. $stud_id= (api_is_allowed_to_edit() ? null : api_get_user_id());
  82. } else {
  83. $stud_id= api_get_user_id();
  84. }
  85. $total_weight = $cats[0]->get_weight();
  86. $allcat = $cats[0]->get_subcategories($stud_id, api_get_course_id(), api_get_session_id());
  87. $alleval = $cats[0]->get_evaluations($stud_id);
  88. $alllink = $cats[0]->get_links($stud_id);
  89. $datagen = new GradebookDataGenerator ($allcat,$alleval, $alllink);
  90. $total_resource_weight = 0;
  91. if (!empty($datagen)) {
  92. $data_array = $datagen->get_data(
  93. GradebookDataGenerator :: GDG_SORT_NAME,
  94. 0,
  95. null,
  96. true
  97. );
  98. if (!empty($data_array)) {
  99. $newarray = array();
  100. foreach ($data_array as $data) {
  101. $newarray[] = array_slice($data, 1);
  102. }
  103. foreach($newarray as $item) {
  104. $total_resource_weight = $total_resource_weight + $item['2'];
  105. }
  106. }
  107. }
  108. if ($total_resource_weight != $total_weight) {
  109. Display::display_warning_message(get_lang('SumOfActivitiesWeightMustBeEqualToTotalWeight'));
  110. }
  111. }
  112. $filter = api_get_configuration_value('certificate_filter_by_official_code');
  113. $userList = array();
  114. $filterForm = null;
  115. $certificate_list = array();
  116. if ($filter) {
  117. echo '<br />';
  118. $options = UserManager::getOfficialCodeGrouped();
  119. $options =array_merge(array('all' => get_lang('All')), $options);
  120. $form = new FormValidator(
  121. 'official_code_filter',
  122. 'POST',
  123. api_get_self().'?'.api_get_cidreq().'&cat_id='.$cat_id
  124. );
  125. $form->addElement('select', 'filter', get_lang('OfficialCode'), $options);
  126. $form->addButton('submit', get_lang('Submit'));
  127. $filterForm = '<br />'.$form->return_form();
  128. if ($form->validate()) {
  129. $officialCode = $form->getSubmitValue('filter');
  130. if ($officialCode == 'all') {
  131. $certificate_list = GradebookUtils::get_list_users_certificates($cat_id);
  132. } else {
  133. $userList = UserManager::getUsersByOfficialCode($officialCode);
  134. if (!empty($userList)) {
  135. $certificate_list = GradebookUtils::get_list_users_certificates(
  136. $cat_id,
  137. $userList
  138. );
  139. }
  140. }
  141. } else {
  142. $certificate_list = GradebookUtils::get_list_users_certificates($cat_id);
  143. }
  144. } else {
  145. $certificate_list = GradebookUtils::get_list_users_certificates($cat_id);
  146. }
  147. echo '<div class="btn-group">';
  148. $url = api_get_self().'?action=generate_all_certificates'.'&'.api_get_cidReq().'&cat_id='.$cat_id.'&filter='.$filterOfficialCode;
  149. echo Display::url(get_lang('GenerateCertificates'), $url, array('class' => 'btn btn-default'));
  150. $url = api_get_self().'?action=delete_all_certificates'.'&'.api_get_cidReq().'&cat_id='.$cat_id.'&filter='.$filterOfficialCode;
  151. echo Display::url(get_lang('DeleteAllCertificates'), $url, array('class' => 'btn btn-default'));
  152. if (count($certificate_list) > 0) {
  153. $url = api_get_self().'?action=export_all_certificates'.'&'.api_get_cidReq().'&cat_id='.$cat_id.'&filter='.$filterOfficialCode;
  154. echo Display::url(get_lang('ExportAllCertificatesToPDF'), $url, array('class' => 'btn btn-default'));
  155. }
  156. echo '</div>';
  157. echo $filterForm;
  158. if (count($certificate_list) == 0 ) {
  159. echo Display::display_warning_message(get_lang('NoResultsAvailable'));
  160. } else {
  161. echo '<br /><br /><table class="data_table">';
  162. foreach ($certificate_list as $index=>$value) {
  163. echo '<tr>
  164. <td width="100%" class="actions">'.get_lang('Student').' : '.api_get_person_name($value['firstname'], $value['lastname']).' ('.$value['username'].')</td>';
  165. echo '</tr>';
  166. echo '<tr><td>
  167. <table class="data_table">';
  168. $list_certificate = GradebookUtils::get_list_gradebook_certificates_by_user_id($value['user_id'], $cat_id);
  169. foreach ($list_certificate as $value_certificate) {
  170. echo '<tr>';
  171. echo '<td width="50%">'.get_lang('Score').' : '.$value_certificate['score_certificate'].'</td>';
  172. echo '<td width="30%">'.get_lang('Date').' : '.api_convert_and_format_date($value_certificate['created_at']).'</td>';
  173. echo '<td width="20%">';
  174. $url = api_get_path(WEB_PATH).'certificates/index.php?id='.$value_certificate['id'];
  175. $certificates = Display::url(get_lang('Certificate'), $url, array('target'=>'_blank', 'class' => 'btn btn-default'));
  176. echo $certificates;
  177. echo '<a onclick="return confirmation();" href="gradebook_display_certificate.php?sec_token='.$token.'&cidReq='.$course_code.'&action=delete&cat_id='.$cat_id.'&certificate_id='.$value_certificate['id'].'">
  178. '.Display::return_icon('delete.png',get_lang('Delete')).'
  179. </a>';
  180. echo '</td></tr>';
  181. }
  182. echo '</table>';
  183. echo '</td></tr>';
  184. }
  185. echo '</table>';
  186. }
  187. Display::display_footer();