From a0a95a11e550488f9dbc4fe10aa3350c0179e186 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Thu, 14 Jan 2010 13:01:41 -0500 Subject: [PATCH] Fixing user export and improving tag field exports see CT#493 --- main/inc/lib/usermanager.lib.php | 74 +++++++++++++++++++------------- main/mySpace/index.php | 31 +++++++------ 2 files changed, 62 insertions(+), 43 deletions(-) diff --git a/main/inc/lib/usermanager.lib.php b/main/inc/lib/usermanager.lib.php index dd1fe48a63..b7556bf409 100644 --- a/main/inc/lib/usermanager.lib.php +++ b/main/inc/lib/usermanager.lib.php @@ -1337,38 +1337,45 @@ class UserManager $res = Database::query($sql, __FILE__, __LINE__); if (Database::num_rows($res) > 0) { while ($row = Database::fetch_array($res)) { - $sqlu = "SELECT field_value as fval " . - " FROM $t_ufv " . - " WHERE field_id=".$row['id']."" . - " AND user_id=".$user_id; - $resu = Database::query($sqlu, __FILE__, __LINE__); - $fval = ''; - // get default value - $sql_df = "SELECT field_default_value as fval_df " . - " FROM $t_uf " . - " WHERE id=".$row['id']; - $res_df = Database::query($sql_df, __FILE__, __LINE__); - if (Database::num_rows($resu) > 0) { - $rowu = Database::fetch_array($resu); - $fval = $rowu['fval']; - if ($row['type'] == USER_FIELD_TYPE_SELECT_MULTIPLE) { - $fval = split(';',$rowu['fval']); - } + if ($row['type'] == USER_FIELD_TYPE_TAG) { + $tags = self::get_user_tags_to_string($user_id,$row['id'],false); + $extra_data['extra_'.$row['fvar']] = $tags; + } else { - $row_df = Database::fetch_array($res_df); - $fval = $row_df['fval_df']; - } - if ($prefix) { - if ($row['type'] == USER_FIELD_TYPE_RADIO) { - $extra_data['extra_'.$row['fvar']]['extra_'.$row['fvar']] = $fval; + $sqlu = "SELECT field_value as fval " . + " FROM $t_ufv " . + " WHERE field_id=".$row['id']."" . + " AND user_id=".$user_id; + $resu = Database::query($sqlu, __FILE__, __LINE__); + $fval = ''; + // get default value + $sql_df = "SELECT field_default_value as fval_df " . + " FROM $t_uf " . + " WHERE id=".$row['id']; + $res_df = Database::query($sql_df, __FILE__, __LINE__); + + if (Database::num_rows($resu) > 0) { + $rowu = Database::fetch_array($resu); + $fval = $rowu['fval']; + if ($row['type'] == USER_FIELD_TYPE_SELECT_MULTIPLE) { + $fval = split(';',$rowu['fval']); + } } else { - $extra_data['extra_'.$row['fvar']] = $fval; + $row_df = Database::fetch_array($res_df); + $fval = $row_df['fval_df']; } - } else { - if ($row['type'] == USER_FIELD_TYPE_RADIO) { - $extra_data['extra_'.$row['fvar']]['extra_'.$row['fvar']] = $fval; + if ($prefix) { + if ($row['type'] == USER_FIELD_TYPE_RADIO) { + $extra_data['extra_'.$row['fvar']]['extra_'.$row['fvar']] = $fval; + } else { + $extra_data['extra_'.$row['fvar']] = $fval; + } } else { - $extra_data[$row['fvar']] = $fval; + if ($row['type'] == USER_FIELD_TYPE_RADIO) { + $extra_data['extra_'.$row['fvar']]['extra_'.$row['fvar']] = $fval; + } else { + $extra_data[$row['fvar']] = $fval; + } } } } @@ -2388,9 +2395,10 @@ class UserManager * Get user's tags * @param int user_id * @param int field_id + * @param bool show links or not * @return array */ - public static function get_user_tags_to_string($user_id,$field_id) { + public static function get_user_tags_to_string($user_id,$field_id,$show_links=true) { // database table definition $table_user_tag = Database::get_main_table(TABLE_MAIN_TAG); $table_user_tag_values = Database::get_main_table(TABLE_MAIN_USER_REL_TAG); @@ -2410,10 +2418,16 @@ class UserManager $user_tags = $return; $tag_tmp = array(); foreach ($user_tags as $tag) { - $tag_tmp[] = ''.$tag['tag'].''; + if ($show_links) { + $tag_tmp[] = ''.$tag['tag'].''; + } else { + $tag_tmp[] = $tag['tag']; + } } if (is_array($user_tags) && count($user_tags)>0) { $return = implode(', ',$tag_tmp); + } else { + return ''; } return $return; } diff --git a/main/mySpace/index.php b/main/mySpace/index.php index b007ea99f3..2bcbb8640b 100755 --- a/main/mySpace/index.php +++ b/main/mySpace/index.php @@ -1,5 +1,5 @@ 1) { } } } -echo ' '.get_lang('Print').' '; -echo (isset($_GET['display']) && $_GET['display'] == 'useroverview')? '' : ' '.get_lang('ExportAsCSV').''; + +echo '  '.get_lang('Print').' '; +if ($view == 'admin') { + echo (isset($_GET['display']) && $_GET['display'] == 'useroverview')? ' '.get_lang('ExportAsCSV').'' : ''; +} else { + echo (isset($_GET['display']) && $_GET['display'] == 'useroverview')? '' : ' '.get_lang('ExportAsCSV').''; +} echo ''; echo '

'.$title.'

'; @@ -469,7 +473,7 @@ if (api_is_allowed_to_create_course() && $view == 'teacher') { } } -if ($is_platform_admin && $view == 'admin') { +if ($is_platform_admin && $view == 'admin') { echo ''.get_lang('DisplayCoaches').' | '; echo ''.get_lang('DisplayUserOverview').''; if ($_GET['display'] == 'useroverview') { @@ -723,6 +727,7 @@ function export_tracking_user_overview() { // the additional user defined fields (only those that were selected to be exported) require_once (api_get_path(LIBRARY_PATH).'usermanager.lib.php'); $fields = UserManager::get_extra_fields(0, 50, 5, 'ASC'); + if (is_array($_SESSION['additional_export_fields'])) { foreach ($_SESSION['additional_export_fields'] as $key => $extra_field_export) { $csv_row[] = $fields[$extra_field_export][3]; @@ -762,6 +767,7 @@ function export_tracking_user_overview() { $csv_row[] = $row[0]; // the additional defined user fields $extra_fields = get_user_overview_export_extra_fields($user[4]); + if (is_array($field_names_to_be_exported)) { foreach ($field_names_to_be_exported as $key => $extra_field_export) { $csv_row[] = $extra_fields[$extra_field_export]; @@ -792,7 +798,7 @@ function export_tracking_user_overview() { $csv_content[] = $csv_row; } - } + } Export :: export_table_csv($csv_content, 'reporting_user_overview'); exit; } @@ -1104,9 +1110,8 @@ function display_user_overview_export_options() { */ function get_user_overview_export_extra_fields($user_id) { // include the user manager - require_once api_get_path(LIBRARY_PATH).'usermanager.lib.php'; - - $extra_data = UserManager::get_extra_user_data($user_id, true); + require_once api_get_path(LIBRARY_PATH).'usermanager.lib.php'; + $extra_data = UserManager::get_extra_user_data($user_id, true); return $extra_data; } /**