Adding extra fields in survey exports fixes #1647

skala
Julio Montoya 14 years ago
parent 2ce24bcd54
commit f5b7ba38f4
  1. 8
      main/survey/reporting.php
  2. 57
      main/survey/survey.lib.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 '<div class="actions">';
echo '<a href="survey.php?survey_id='.Security::remove_XSS($_GET['survey_id']).'">'.Display::return_icon('back.png', get_lang('BackToSurvey'),'','32').'</a>';
echo '<a href="survey.php?survey_id='.$survey_id.'">'.Display::return_icon('back.png', get_lang('BackToSurvey'),'','32').'</a>';
echo '</div>';
// Content

@ -2731,6 +2731,7 @@ class SurveyUtil {
echo '<input type="hidden" name="export_report" value="export_report">';
echo '<input type="hidden" name="export_format" value="xls">';
echo '</form>';
echo '<form id="form2" name="form2" method="post" action="'.api_get_self().'?action='.Security::remove_XSS($_GET['action']).'&survey_id='.Security::remove_XSS($_GET['survey_id']).'">';
// The table
@ -2739,15 +2740,15 @@ class SurveyUtil {
echo ' <tr>';
echo ' <th>';
if ($_POST['submit_question_filter'] || $_POST['export_report']) {
echo ' <button class="cancel" type="submit" name="reset_question_filter" value="'.get_lang('ResetQuestionFilter').'">'.get_lang('ResetQuestionFilter').'</button>';
echo '<button class="cancel" type="submit" name="reset_question_filter" value="'.get_lang('ResetQuestionFilter').'">'.get_lang('ResetQuestionFilter').'</button>';
}
echo ' <button class="save" type="submit" name="submit_question_filter" value="'.get_lang('SubmitQuestionFilter').'">'.get_lang('SubmitQuestionFilter').'</button>';
echo '<button class="save" type="submit" name="submit_question_filter" value="'.get_lang('SubmitQuestionFilter').'">'.get_lang('SubmitQuestionFilter').'</button>';
echo '</th>';
$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 '<th '.($num>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 '<td align="center">'.$value.'</td>';
}
@ -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 ' <th><a href="'.api_get_self().'?action=userreport&survey_id='.Security::remove_XSS($_GET['survey_id']).'&user='.$user.'">'.$user_displayed.'</a></th>'; // the user column
$return .= $user_displayed.';';
} else {
//echo ' <th>'.$user.'</th>'; // 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);
}
}

Loading…
Cancel
Save