Browse Source

Corrections after adding option certificate_filter_by_official_code

see BT#9250
Julio Montoya 10 years ago
parent
commit
bcf4854e06
2 changed files with 32 additions and 11 deletions
  1. 31 10
      main/gradebook/gradebook_display_certificate.php
  2. 1 1
      main/inc/lib/usermanager.lib.php

+ 31 - 10
main/gradebook/gradebook_display_certificate.php

@@ -35,9 +35,16 @@ if (!api_is_allowed_to_edit()) {
 
 $cat_id = isset($_GET['cat_id']) ? (int)$_GET['cat_id'] : null;
 $action = isset($_GET['action']) && $_GET['action'] ? $_GET['action'] : null;
+$filterOfficialCode = isset($_POST['filter']) ? Security::remove_XSS($_POST['filter']) : null;
+$filterOfficialCodeGet = isset($_GET['filter']) ? Security::remove_XSS($_GET['filter']) : null;
+
 switch ($action) {
     case 'export_all_certificates':
-        Category::exportAllCertificates($cat_id);
+        $userList = array();
+        if (!empty($filterOfficialCodeGet)) {
+            $userList = UserManager::getUsersByOfficialCode($filterOfficialCodeGet);
+        }
+        Category::exportAllCertificates($cat_id, $userList);
         break;
     case 'generate_all_certificates':
         $user_list = CourseManager::get_user_list_from_course_code(api_get_course_id(), api_get_session_id());
@@ -50,8 +57,8 @@ switch ($action) {
 
 $course_code = api_get_course_id();
 
-$interbreadcrumb[] = array ('url' => Security::remove_XSS($_SESSION['gradebook_dest']).'?',	'name' => get_lang('Gradebook'));
-$interbreadcrumb[] = array ('url' => '#','name' => get_lang('GradebookListOfStudentsCertificates'));
+$interbreadcrumb[] = array('url' => Security::remove_XSS($_SESSION['gradebook_dest']).'?',	'name' => get_lang('Gradebook'));
+$interbreadcrumb[] = array('url' => '#','name' => get_lang('GradebookListOfStudentsCertificates'));
 
 $this_section = SECTION_COURSES;
 
@@ -119,11 +126,13 @@ if (!empty($cats)) {
 $filter = api_get_configuration_value('certificate_filter_by_official_code');
 $userList = array();
 $filterForm = null;
+$certificate_list = array();
 if ($filter) {
     echo '<br />';
     $options = UserManager::getOfficialCodeGrouped();
+    $options =array_merge(array('all' => get_lang('All')), $options);
     $form = new FormValidator(
-        'official_code',
+        'official_code_filter',
         'POST',
         api_get_self().'?'.api_get_cidreq().'&cat_id='.$cat_id
     );
@@ -133,21 +142,33 @@ if ($filter) {
 
     if ($form->validate()) {
         $officialCode = $form->getSubmitValue('filter');
-        $userList = UserManager::getUsersByOfficialCode($officialCode);
+         if ($officialCode == 'all') {
+            $certificate_list = get_list_users_certificates($cat_id);
+        } else {
+             $userList = UserManager::getUsersByOfficialCode($officialCode);
+             if (!empty($userList)) {
+                 $certificate_list = get_list_users_certificates(
+                     $cat_id,
+                     $userList
+                 );
+             }
+         }
+    } else {
+        $certificate_list = get_list_users_certificates($cat_id);
     }
+} else {
+    $certificate_list = get_list_users_certificates($cat_id);
 }
 
-$certificate_list = get_list_users_certificates($cat_id, $userList);
-
 echo '<div class="btn-group">';
-$url = api_get_self().'?action=generate_all_certificates'.'&'.api_get_cidReq().'&cat_id='.$cat_id;
+$url = api_get_self().'?action=generate_all_certificates'.'&'.api_get_cidReq().'&cat_id='.$cat_id.'&filter='.$filterOfficialCode;
 echo Display::url(get_lang('GenerateCertificates'), $url, array('class' => 'btn'));
 
-$url = api_get_self().'?action=delete_all_certificates'.'&'.api_get_cidReq().'&cat_id='.$cat_id;
+$url = api_get_self().'?action=delete_all_certificates'.'&'.api_get_cidReq().'&cat_id='.$cat_id.'&filter='.$filterOfficialCode;
 echo Display::url(get_lang('DeleteAllCertificates'), $url, array('class' => 'btn'));
 
 if (count($certificate_list) > 0) {
-    $url = api_get_self().'?action=export_all_certificates'.'&'.api_get_cidReq().'&cat_id='.$cat_id;
+    $url = api_get_self().'?action=export_all_certificates'.'&'.api_get_cidReq().'&cat_id='.$cat_id.'&filter='.$filterOfficialCode;
     echo Display::url(get_lang('ExportAllCertificatesToPDF'), $url, array('class' => 'btn'));
 }
 echo '</div>';

+ 1 - 1
main/inc/lib/usermanager.lib.php

@@ -4937,7 +4937,7 @@ EOF;
 
         $sql = "SELECT DISTINCT user_id
                 FROM $user
-                WHERE official_code = $officialCode
+                WHERE official_code = '$officialCode'
                 ";
         $result = Database::query($sql);