From f5b7ba38f419359d00f92d523f9c6dcf40f5d081 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Thu, 21 Jul 2011 17:07:54 +0200 Subject: [PATCH] Adding extra fields in survey exports fixes #1647 --- main/survey/reporting.php | 8 +++--- main/survey/survey.lib.php | 57 +++++++++++++++++++------------------- 2 files changed, 32 insertions(+), 33 deletions(-) diff --git a/main/survey/reporting.php b/main/survey/reporting.php index e171112401..27d4a33842 100755 --- a/main/survey/reporting.php +++ b/main/survey/reporting.php @@ -14,11 +14,11 @@ $language_file = 'survey'; // Including the global initialization file -require '../inc/global.inc.php'; +require_once '../inc/global.inc.php'; require_once 'survey.lib.php'; $this_section = SECTION_COURSES; -$survey_id = Security::remove_XSS($_GET['survey_id']); +$survey_id = intval($_GET['survey_id']); // Export /** @@ -36,6 +36,7 @@ if ($_POST['export_report']) { default: $survey_data = survey_manager::get_survey($survey_id); $data = SurveyUtil::export_complete_report($_GET['user_id']); + //$filename = 'fileexport.csv'; $filename = 'survey_results_'.$survey_id.'.csv'; @@ -61,7 +62,6 @@ if ($_POST['export_report']) { } // Including additional libraries -//require_once api_get_path(LIBRARY_PATH).'survey.lib.php'; require_once api_get_path(LIBRARY_PATH).'course.lib.php'; // Checking the parameters @@ -129,7 +129,7 @@ SurveyUtil::handle_reporting_actions(); // Actions bar echo '
'; -echo ''.Display::return_icon('back.png', get_lang('BackToSurvey'),'','32').''; +echo ''.Display::return_icon('back.png', get_lang('BackToSurvey'),'','32').''; echo '
'; // Content diff --git a/main/survey/survey.lib.php b/main/survey/survey.lib.php index fe3384124d..7dca06f983 100644 --- a/main/survey/survey.lib.php +++ b/main/survey/survey.lib.php @@ -2731,6 +2731,7 @@ class SurveyUtil { echo ''; echo ''; echo ''; + echo '
'; // The table @@ -2739,15 +2740,15 @@ class SurveyUtil { echo ' '; echo ' '; if ($_POST['submit_question_filter'] || $_POST['export_report']) { - echo ' '; + echo ''; } - echo ' '; + echo ''; echo ''; $display_extra_user_fields = false; if (!($_POST['submit_question_filter'] || $_POST['export_report']) || !empty($_POST['fields_filter'])) { // Show user fields section with a big th colspan that spans over all fields - $extra_user_fields = UserManager::get_extra_fields(0, 0, 5, 'ASC', false); + $extra_user_fields = UserManager::get_extra_fields(0, 0, 5, 'ASC', false, true); $num = count($extra_user_fields); if ($num > 0 ) { echo '0?' colspan="'.$num.'"':'').'>'; @@ -2920,7 +2921,7 @@ class SurveyUtil { if ($display_extra_user_fields) { // Show user fields data, if any, for this user - $user_fields_values = UserManager::get_extra_user_data(intval($user), false, false); + $user_fields_values = UserManager::get_extra_user_data(intval($user), false, false, false, true); foreach ($user_fields_values as & $value) { echo ''.$value.''; } @@ -2979,14 +2980,14 @@ class SurveyUtil { $return = ';'; // Show extra fields blank space (enough for extra fields on next line) - $display_extra_user_fields = false; - if (!($_POST['submit_question_filter'] || $_POST['export_report']) || !empty($_POST['fields_filter'])) { + + //if (!empty($_REQUEST['fields_filter'])) { //show user fields section with a big th colspan that spans over all fields - $extra_user_fields = UserManager::get_extra_fields(0, 0, 5, 'ASC', false); + $extra_user_fields = UserManager::get_extra_fields(0, 0, 5, 'ASC', false, true); + $num = count($extra_user_fields); - $return .= str_repeat(';', $num); - $display_extra_user_fields = true; - } + $return .= str_repeat(';', $num); + //} $sql = "SELECT questions.question_id, questions.type, questions.survey_question, count(options.question_option_id) as number_of_options @@ -3019,12 +3020,14 @@ class SurveyUtil { $return .= ';'; // Show extra field values - if (!($_POST['submit_question_filter'] || $_POST['export_report']) || !empty($_POST['fields_filter'])) { + //if (!($_POST['submit_question_filter'] || $_POST['export_report']) || !empty($_POST['fields_filter'])) { // Show the fields names for user fields - foreach ($extra_user_fields as & $field) { - $return .= '"'.str_replace("\r\n",' ',api_html_entity_decode(strip_tags($field[3]), ENT_QUOTES)).'";'; + if (!empty($extra_user_fields)) { + foreach ($extra_user_fields as & $field) { + $return .= '"'.str_replace("\r\n",' ',api_html_entity_decode(strip_tags($field[3]), ENT_QUOTES)).'";'; + } } - } + //} $sql = "SELECT survey_question.question_id, survey_question.survey_id, survey_question.survey_question, survey_question.display, survey_question.sort, survey_question.type, survey_question_option.question_option_id, survey_question_option.option_text, survey_question_option.sort as option_sort @@ -3065,7 +3068,7 @@ class SurveyUtil { $result = Database::query($sql); while ($row = Database::fetch_array($result)) { if ($old_user != $row['user'] && $old_user != '') { - $return .= SurveyUtil::export_complete_report_row($possible_answers, $answers_of_user, $old_user, $display_extra_user_fields); + $return .= SurveyUtil::export_complete_report_row($possible_answers, $answers_of_user, $old_user, true); $answers_of_user=array(); } if($possible_answers_type[$row['question_id']] == 'open') { @@ -3077,7 +3080,7 @@ class SurveyUtil { } $old_user = $row['user']; } - $return .= SurveyUtil::export_complete_report_row($possible_answers, $answers_of_user, $old_user, $display_extra_user_fields); // This is to display the last user + $return .= SurveyUtil::export_complete_report_row($possible_answers, $answers_of_user, $old_user, true); // This is to display the last user return $return; } @@ -3105,10 +3108,8 @@ class SurveyUtil { } else { $user_displayed = '-'; } - //echo ' '.$user_displayed.''; // the user column $return .= $user_displayed.';'; } else { - //echo ' '.$user.''; // The user column $return .= $user.';'; } } else { @@ -3117,7 +3118,7 @@ class SurveyUtil { if ($display_extra_user_fields) { // Show user fields data, if any, for this user - $user_fields_values = UserManager::get_extra_user_data(intval($user),false,false); + $user_fields_values = UserManager::get_extra_user_data($user,false,false, false, true); foreach ($user_fields_values as & $value) { $return .= '"'.str_replace('"', '""', api_html_entity_decode(strip_tags($value), ENT_QUOTES)).'";'; } @@ -3170,16 +3171,16 @@ class SurveyUtil { // Show extra fields blank space (enough for extra fields on next line) $display_extra_user_fields = false; - if (!($_POST['submit_question_filter'] || $_POST['export_report']) || !empty($_POST['fields_filter'])) { + //if (!empty($_REQUEST['fields_filter'])) { // Show user fields section with a big th colspan that spans over all fields - $extra_user_fields = UserManager::get_extra_fields(0, 0, 5, 'ASC', false); + $extra_user_fields = UserManager::get_extra_fields(0, 0, 5, 'ASC', false, true); $num = count($extra_user_fields); for ($i = 0; $i < $num; $i++) { $worksheet->write($line, $column, ''); $column++; } $display_extra_user_fields = true; - } + //} // Database table definitions $table_survey_question = Database :: get_course_table(TABLE_SURVEY_QUESTION); @@ -3267,7 +3268,7 @@ class SurveyUtil { $result = Database::query($sql); while ($row = Database::fetch_array($result)) { if ($old_user != $row['user'] && $old_user != '') { - $return = SurveyUtil::export_complete_report_row_xls($possible_answers, $answers_of_user, $old_user, $display_extra_user_fields); + $return = SurveyUtil::export_complete_report_row_xls($possible_answers, $answers_of_user, $old_user, true); foreach ($return as $elem) { $worksheet->write($line, $column, $elem); $column++; @@ -3285,7 +3286,7 @@ class SurveyUtil { } $old_user = $row['user']; } - $return = SurveyUtil::export_complete_report_row_xls($possible_answers, $answers_of_user, $old_user); // this is to display the last user + $return = SurveyUtil::export_complete_report_row_xls($possible_answers, $answers_of_user, $old_user, true); // this is to display the last user foreach ($return as $elem) { $worksheet->write($line, $column, $elem); $column++; @@ -3326,12 +3327,10 @@ class SurveyUtil { $return[] = '-'; // The user column } - if ($display_extra_user_fields) - { + if ($display_extra_user_fields) { //show user fields data, if any, for this user - $user_fields_values = UserManager::get_extra_user_data(intval($user),false,false); - foreach($user_fields_values as $value) - { + $user_fields_values = UserManager::get_extra_user_data(intval($user),false,false, false, true); + foreach($user_fields_values as $value) { $return[] = api_html_entity_decode(strip_tags($value), ENT_QUOTES); } }