Add multiple field types see BT#12888

pull/2487/head
jmontoyaa 9 years ago
parent 036d6559ac
commit a83e0e7377
  1. 1
      main/inc/lib/display.lib.php
  2. 40
      main/inc/lib/tracking.lib.php
  3. 61
      main/tracking/courseLog.php

@ -1898,6 +1898,7 @@ class Display
if (empty($tip)) {
return $text;
}
return self::span($text, array('class' => 'boot-tooltip', 'title' => strip_tags($tip)));
}

@ -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 .= '<select name="additional_profile_field">';
$return .= '<select class="chozn" name="additional_profile_field[]" multiple>';
$return .= '<option value="-">'.get_lang('SelectFieldToAdd').'</option>';
$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;
}
}

@ -1,6 +1,8 @@
<?php
/* For licensing terms, see /license.txt */
use ChamiloSession as Session;
/**
* @package chamilo.tracking
*/
@ -182,26 +184,30 @@ if (empty($session_id)) {
$nbStudents = count($a_students);
$extra_info = array();
$userProfileInfo = [];
// Getting all the additional information of an additional profile field.
if (isset($_GET['additional_profile_field']) &&
is_numeric($_GET['additional_profile_field'])
) {
if (isset($_GET['additional_profile_field'])) {
$user_array = array();
foreach ($a_students as $key => $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.

Loading…
Cancel
Save