Improving user csv/xls exports (adding extra fields) see #3723

skala
Julio Montoya 15 years ago
parent fdb96c9832
commit 441f872f24
  1. 45
      main/user/user.php

@ -98,40 +98,55 @@ if (api_is_allowed_to_edit(null, true)) {
$current_access_url_id = api_get_current_access_url_id();
}
$session_id = api_get_session_id();
$extra_fields = UserManager::get_extra_user_data(api_get_user_id(), false, false, false, true);
$extra_fields = array_keys($extra_fields);
if ($sort_by_first_name) {
$a_users[0] = array(get_lang('FirstName'), get_lang('LastName'), get_lang('Email'), get_lang('Phone'), get_lang('OfficialCode'), get_lang('Active'));
} else {
$a_users[0] = array(get_lang('LastName'), get_lang('FirstName'), get_lang('Email'), get_lang('Phone'), get_lang('OfficialCode'), get_lang('Active'));
}
$a_users[0] = array_merge($a_users[0],$extra_fields);
// users subscribed to the course through a session
if (api_get_setting('use_session_mode') == 'true') {
$session_id = intval($_SESSION['id_session']);
if (api_get_session_id()) {
$table_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$sql_query = "SELECT DISTINCT user.user_id, ".($is_western_name_order ? "user.firstname, user.lastname" : "user.lastname, user.firstname").", user.email, user.official_code
$sql_query = "SELECT DISTINCT user.user_id, ".($is_western_name_order ? "user.firstname, user.lastname" : "user.lastname, user.firstname").", user.email, phone, user.official_code, active
FROM $table_session_course_user as session_course_user, $table_users as user ";
if ($_configuration['multiple_access_urls']) {
$sql_query .= ' , '.Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER).' au ';
}
$sql_query .="WHERE course_code = '$currentCourseID' AND session_course_user.id_user = user.user_id ";
if ($session_id != 0) {
$sql_query .= ' AND id_session = '.$session_id;
}
if ($_configuration['multiple_access_urls']) {
$sql_query .= " AND user.user_id = au.user_id AND access_url_id = $current_access_url_id ";
}
$sql_query .= $sort_by_first_name ? ' ORDER BY user.firstname, user.lastname' : ' ORDER BY user.lastname, user.firstname';
$rs = Database::query($sql_query);
while ($user = Database:: fetch_array($rs, 'ASSOC')) {
$extra_fields = UserManager::get_extra_user_data($user['user_id'], false, false, false, true);
if (!empty($extra_fields)) {
foreach($extra_fields as $key => $extra_value) {
$user[$key] = $extra_value;
}
}
unset($user['user_id']);
$data[] = $user;
//$user_infos = Database :: get_user_info_from_id($user['user_id']);
$a_users[$user['user_id']] = $user;
$a_users[] = $user;
}
}
}
if ($session_id == 0) {
// users directly subscribed to the course
$table_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$sql_query = "SELECT DISTINCT user.user_id, ".($is_western_name_order ? "user.firstname, user.lastname" : "user.lastname, user.firstname").", user.email, user.official_code
$sql_query = "SELECT DISTINCT user.user_id, ".($is_western_name_order ? "user.firstname, user.lastname" : "user.lastname, user.firstname").", user.email, phone, user.official_code, active
FROM $table_course_user as course_user, $table_users as user";
if ($_configuration['multiple_access_urls']) {
$sql_query .= ' , '.Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER).' au ';
@ -145,8 +160,15 @@ if (api_is_allowed_to_edit(null, true)) {
$rs = Database::query($sql_query);
while ($user = Database::fetch_array($rs, 'ASSOC')) {
$extra_fields = UserManager::get_extra_user_data($user['user_id'], false, false, false, true);
if (!empty($extra_fields)) {
foreach($extra_fields as $key => $extra_value) {
$user[$key] = $extra_value;
}
}
unset($user['user_id']);
$data[] = $user;
$a_users[$user['user_id']] = $user;
$a_users[] = $user;
}
}
@ -465,7 +487,6 @@ function get_user_data($from, $number_of_items, $column, $direction) {
$groups_name = GroupManager :: get_user_group_name($user_id);
$temp = array();
if (api_is_allowed_to_edit(null, true)) {
if (api_get_setting('allow_user_course_subscription_by_course_admin') == 'true') {
$temp[] = $user_id;
}
@ -486,7 +507,7 @@ function get_user_data($from, $number_of_items, $column, $direction) {
$temp[] = $o_course_user['firstname'];
}
$temp[] = $o_course_user['role'];
$temp[] = isset($o_course_user['role']) ? $o_course_user['role'] : null;
$temp[] = implode(', ', $groups_name); //Group
$temp[] = $o_course_user['official_code'];

Loading…
Cancel
Save