Adding certificate_filter_by_official_code see BT#9250

1.9.x
Julio Montoya 11 years ago
parent ef1dc064ea
commit d36c633267
  1. 28
      main/gradebook/gradebook_display_certificate.php
  2. 60
      main/inc/lib/usermanager.lib.php
  3. 2
      main/install/configuration.dist.php

@ -45,7 +45,6 @@ switch ($action) {
break; break;
case 'delete_all_certificates': case 'delete_all_certificates':
Category::deleteAllCertificates($cat_id); Category::deleteAllCertificates($cat_id);
break; break;
} }
@ -117,7 +116,28 @@ if (!empty($cats)) {
} }
} }
$certificate_list = get_list_users_certificates($cat_id); $filter = api_get_configuration_value('certificate_filter_by_official_code');
$userList = array();
$filterForm = null;
if ($filter) {
echo '<br />';
$options = UserManager::getOfficialCodeGrouped();
$form = new FormValidator(
'official_code',
'POST',
api_get_self().'?'.api_get_cidreq().'&cat_id='.$cat_id
);
$form->addElement('select', 'filter', get_lang('OfficialCode'), $options);
$form->add_button('submit', get_lang('Submit'));
$filterForm = '<br />'.$form->return_form();
if ($form->validate()) {
$officialCode = $form->getSubmitValue('filter');
$userList = UserManager::getUsersByOfficialCode($officialCode);
}
}
$certificate_list = get_list_users_certificates($cat_id, $userList);
echo '<div class="btn-group">'; 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;
@ -132,7 +152,9 @@ if (count($certificate_list) > 0) {
} }
echo '</div>'; echo '</div>';
if (count($certificate_list)==0) { echo $filterForm;
if (count($certificate_list) == 0 ) {
echo Display::display_warning_message(get_lang('NoResultsAvailable')); echo Display::display_warning_message(get_lang('NoResultsAvailable'));
} else { } else {

@ -3557,7 +3557,7 @@ class UserManager
} }
/** /**
* Returns a list of all admninistrators * Returns a list of all administrators
* @author jmontoya * @author jmontoya
* @return array * @return array
*/ */
@ -3568,13 +3568,18 @@ class UserManager
$tbl_url_rel_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $tbl_url_rel_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id(); $access_url_id = api_get_current_access_url_id();
if (api_get_multiple_access_url()) { if (api_get_multiple_access_url()) {
$access_url_id = api_get_current_access_url_id(); $sql = "SELECT admin.user_id, username, firstname, lastname, email
$sql = "SELECT admin.user_id, username, firstname, lastname, email FROM $tbl_url_rel_user as url INNER JOIN $table_admin as admin FROM $tbl_url_rel_user as url
ON (admin.user_id=url.user_id) INNER JOIN $table_user u ON (u.user_id=admin.user_id) INNER JOIN $table_admin as admin
ON (admin.user_id=url.user_id)
INNER JOIN $table_user u
ON (u.user_id=admin.user_id)
WHERE access_url_id ='".$access_url_id."'"; WHERE access_url_id ='".$access_url_id."'";
} else { } else {
$sql = "SELECT admin.user_id, username, firstname, lastname, email FROM $table_admin as admin $sql = "SELECT admin.user_id, username, firstname, lastname, email
INNER JOIN $table_user u ON (u.user_id=admin.user_id)"; FROM $table_admin as admin
INNER JOIN $table_user u
ON (u.user_id=admin.user_id)";
} }
$result = Database::query($sql); $result = Database::query($sql);
$return = array(); $return = array();
@ -3583,6 +3588,7 @@ class UserManager
$return[$row['user_id']] = $row; $return[$row['user_id']] = $row;
} }
} }
return $return; return $return;
} }
@ -4899,4 +4905,46 @@ EOF;
Database::query($sql); Database::query($sql);
} }
} }
/**
* @return array
*/
public static function getOfficialCodeGrouped()
{
$user = Database::get_main_table(TABLE_MAIN_USER);
$sql = "SELECT DISTINCT official_code
FROM $user
GROUP BY official_code";
$result = Database::query($sql);
$values = Database::store_result($result, 'ASSOC');
$result = array();
foreach ($values as $value) {
$result[$value['official_code']] = $value['official_code'];
}
return $result;
}
/**
* @param string $officialCode
* @return array
*/
public static function getUsersByOfficialCode($officialCode)
{
$user = Database::get_main_table(TABLE_MAIN_USER);
$officialCode = Database::escape_string($officialCode);
$sql = "SELECT DISTINCT user_id
FROM $user
WHERE official_code = $officialCode
";
$result = Database::query($sql);
$users = array();
while ($row = Database::fetch_array($result)) {
$users[] = $row['user_id'];
}
return $users;
}
} }

@ -271,3 +271,5 @@ $_configuration['system_stable'] = NEW_VERSION_STABLE;
//$_configuration['course_images_in_courses_list'] = false; //$_configuration['course_images_in_courses_list'] = false;
// Which student publication will be taken when connected to the gradebook: first|last // Which student publication will be taken when connected to the gradebook: first|last
//$_configuration['student_publication_to_take_in_gradebook'] = 'first'; //$_configuration['student_publication_to_take_in_gradebook'] = 'first';
// Show a filter by official code
//$_configuration['certificate_filter_by_official_code'] = false;

Loading…
Cancel
Save