From a83e0e7377605c6501dd055e715a8868ca47f5aa Mon Sep 17 00:00:00 2001 From: jmontoyaa Date: Tue, 6 Jun 2017 14:48:16 +0200 Subject: [PATCH] Add multiple field types see BT#12888 --- main/inc/lib/display.lib.php | 1 + main/inc/lib/tracking.lib.php | 40 ++++++++++++++--------- main/tracking/courseLog.php | 61 ++++++++++++++++++++++------------- 3 files changed, 64 insertions(+), 38 deletions(-) diff --git a/main/inc/lib/display.lib.php b/main/inc/lib/display.lib.php index e4dcdd691d..99048795f1 100755 --- a/main/inc/lib/display.lib.php +++ b/main/inc/lib/display.lib.php @@ -1898,6 +1898,7 @@ class Display if (empty($tip)) { return $text; } + return self::span($text, array('class' => 'boot-tooltip', 'title' => strip_tags($tip))); } diff --git a/main/inc/lib/tracking.lib.php b/main/inc/lib/tracking.lib.php index 43f3d019f2..2dc10c3823 100755 --- a/main/inc/lib/tracking.lib.php +++ b/main/inc/lib/tracking.lib.php @@ -6832,7 +6832,7 @@ class TrackingCourseLog // the select field with the additional user profile fields (= this is where we select the field of which we want to see // the information the users have entered or selected. - $return .= ''; $return .= ''; $extra_fields_to_show = 0; foreach ($extra_fields as $key=>$field) { @@ -6980,7 +6980,7 @@ class TrackingCourseLog */ public static function get_user_data($from, $number_of_items, $column, $direction, $includeInvitedUsers = false) { - global $user_ids, $course_code, $additional_user_profile_info, $export_csv, $is_western_name_order, $csv_content, $session_id; + global $user_ids, $course_code, $export_csv, $is_western_name_order, $csv_content, $session_id; $course_code = Database::escape_string($course_code); $tbl_user = Database::get_main_table(TABLE_MAIN_USER); @@ -7152,17 +7152,6 @@ class TrackingCourseLog $session_id ); - // we need to display an additional profile field - $user['additional'] = ''; - - if (isset($_GET['additional_profile_field']) && is_numeric($_GET['additional_profile_field'])) { - if (isset($additional_user_profile_info[$user['user_id']]) && - is_array($additional_user_profile_info[$user['user_id']]) - ) { - $user['additional'] = implode(', ', $additional_user_profile_info[$user['user_id']]); - } - } - if (empty($session_id)) { $user['survey'] = (isset($survey_user_list[$user['user_id']]) ? $survey_user_list[$user['user_id']] : 0).' / '.$total_surveys; } @@ -7202,8 +7191,25 @@ class TrackingCourseLog $user_row['first_connection'] = $user['first_connection']; $user_row['last_connection'] = $user['last_connection']; - if (isset($_GET['additional_profile_field']) && is_numeric($_GET['additional_profile_field'])) { - $user_row['additional'] = $user['additional']; + + // we need to display an additional profile field + if (isset($_GET['additional_profile_field'])) { + $data = \System\Session::read('additional_user_profile_info'); + $extraFieldInfo = \System\Session::read('extra_field_info'); + foreach ($_GET['additional_profile_field'] as $fieldId) { + if (isset($data[$fieldId]) && isset($data[$fieldId][$user['user_id']])) { + if (is_array($data[$fieldId][$user['user_id']])) { + $user_row[$extraFieldInfo[$fieldId]['variable']] = implode( + ', ', + $data[$fieldId][$user['user_id']] + ); + } else { + $user_row[$extraFieldInfo[$fieldId]['variable']] = $data[$fieldId][$user['user_id']]; + } + } else { + $user_row[$extraFieldInfo[$fieldId]['variable']] = ''; + } + } } $user_row['link'] = $user['link']; @@ -7222,6 +7228,10 @@ class TrackingCourseLog $users[] = array_values($user_row); } + + \System\Session::erase('additional_user_profile_info'); + \System\Session::erase('extra_field_info'); + return $users; } } diff --git a/main/tracking/courseLog.php b/main/tracking/courseLog.php index f90aef0c51..b34a372197 100755 --- a/main/tracking/courseLog.php +++ b/main/tracking/courseLog.php @@ -1,6 +1,8 @@ $item) { $user_array[] = $key; } - // Fetching only the user that are loaded NOT ALL user in the portal. - $additional_user_profile_info = TrackingCourseLog::get_addtional_profile_information_of_field_by_user( - $_GET['additional_profile_field'], - $user_array - ); - $extra_info = UserManager::get_extra_field_information( - $_GET['additional_profile_field'] - ); + foreach ($_GET['additional_profile_field'] as $fieldId) { + // Fetching only the user that are loaded NOT ALL user in the portal. + $userProfileInfo[$fieldId] = TrackingCourseLog::get_addtional_profile_information_of_field_by_user( + $fieldId, + $user_array + ); + + $extra_info[$fieldId] = UserManager::get_extra_field_information( + $fieldId + ); + } } +Session::write('additional_user_profile_info', $userProfileInfo); +Session::write('extra_field_info', $extra_info); + // Display the header. Display::display_header($nameTools, 'Tracking'); @@ -439,10 +445,15 @@ if (count($a_students) > 0) { $headers['first_login'] = get_lang('FirstLoginInCourse'); $table->set_header(14, get_lang('LatestLoginInCourse'), false); $headers['latest_login'] = get_lang('LatestLoginInCourse'); - if (isset($_GET['additional_profile_field']) and is_numeric($_GET['additional_profile_field'])) { - $table->set_header(15, $extra_info['display_text'], false); - $headers['display_text'] = $extra_info['display_text']; - $table->set_header(16, get_lang('Details'), false); + if (isset($_GET['additional_profile_field'])) { + $counter = 15; + foreach ($_GET['additional_profile_field'] as $fieldId) { + $table->set_header($counter, $extra_info[$fieldId]['display_text'], false); + $headers[$extra_info[$fieldId]['variable']] = $extra_info[$fieldId]['display_text']; + $counter++; + } + + $table->set_header($counter, get_lang('Details'), false); $headers['details'] = get_lang('Details'); } else { $table->set_header(15, get_lang('Details'), false); @@ -454,11 +465,13 @@ if (count($a_students) > 0) { $table->set_header(13, get_lang('LatestLoginInCourse'), false); $headers['latest_login'] = get_lang('LatestLoginInCourse'); - if (isset($_GET['additional_profile_field']) and is_numeric($_GET['additional_profile_field'])) { - $table->set_header(14, $extra_info['display_text'], false); - $headers['display_text'] = $extra_info['display_text']; - $table->set_header(15, get_lang('Details'), false); - $headers['Details'] = get_lang('Details'); + if (isset($_GET['additional_profile_field'])) { + $counter = 15; + foreach ($_GET['additional_profile_field'] as $fieldId) { + $table->set_header($counter, $extra_info[$fieldId]['display_text'], false); + $headers[$extra_info[$fieldId]['variable']] = $extra_info[$fieldId]['display_text']; + $counter++; + } } else { $table->set_header(14, get_lang('Details'), false); $headers['Details'] = get_lang('Details'); @@ -520,8 +533,10 @@ if ($export_csv) { $csv_headers[] = get_lang('FirstLoginInCourse', ''); $csv_headers[] = get_lang('LatestLoginInCourse', ''); - if (isset($_GET['additional_profile_field']) && is_numeric($_GET['additional_profile_field'])) { - $csv_headers[] = $extra_info['display_text']; + if (isset($_GET['additional_profile_field'])) { + foreach ($_GET['additional_profile_field'] as $fieldId) { + $csv_headers[] = $extra_info[$fieldId]['display_text']; + } } ob_end_clean(); array_unshift($csv_content, $csv_headers); // Adding headers before the content.