|
|
|
@ -518,7 +518,7 @@ class SurveyUtil |
|
|
|
|
*/ |
|
|
|
|
public static function display_question_report($survey_data) |
|
|
|
|
{ |
|
|
|
|
$singlePage = isset($_GET['single_page']) ? intval($_GET['single_page']) : 0; |
|
|
|
|
$singlePage = isset($_GET['single_page']) ? (int) $_GET['single_page'] : 0; |
|
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
|
// Database table definitions |
|
|
|
|
$table_survey_question = Database::get_course_table(TABLE_SURVEY_QUESTION); |
|
|
|
@ -526,10 +526,10 @@ class SurveyUtil |
|
|
|
|
$table_survey_answer = Database::get_course_table(TABLE_SURVEY_ANSWER); |
|
|
|
|
|
|
|
|
|
// Determining the offset of the sql statement (the n-th question of the survey) |
|
|
|
|
$offset = !isset($_GET['question']) ? 0 : intval($_GET['question']); |
|
|
|
|
$currentQuestion = isset($_GET['question']) ? intval($_GET['question']) : 0; |
|
|
|
|
$offset = !isset($_GET['question']) ? 0 : (int) $_GET['question']; |
|
|
|
|
$currentQuestion = isset($_GET['question']) ? (int) $_GET['question'] : 0; |
|
|
|
|
$questions = []; |
|
|
|
|
$surveyId = intval($_GET['survey_id']); |
|
|
|
|
$surveyId = (int) $_GET['survey_id']; |
|
|
|
|
$action = Security::remove_XSS($_GET['action']); |
|
|
|
|
|
|
|
|
|
echo '<div class="actions">'; |
|
|
|
@ -574,9 +574,9 @@ class SurveyUtil |
|
|
|
|
$sql = "SELECT * FROM $table_survey_question |
|
|
|
|
WHERE |
|
|
|
|
c_id = $course_id AND |
|
|
|
|
survey_id='".intval($_GET['survey_id'])."' AND |
|
|
|
|
type <>'pagebreak' AND |
|
|
|
|
type <>'comment' |
|
|
|
|
survey_id='".$surveyId."' AND |
|
|
|
|
type <>'pagebreak' |
|
|
|
|
|
|
|
|
|
ORDER BY sort ASC |
|
|
|
|
$limitStatement"; |
|
|
|
|
$result = Database::query($sql); |
|
|
|
@ -588,6 +588,7 @@ class SurveyUtil |
|
|
|
|
foreach ($questions as $question) { |
|
|
|
|
$chartData = []; |
|
|
|
|
$options = []; |
|
|
|
|
$questionId = (int) $question['question_id']; |
|
|
|
|
echo '<div class="title-question">'; |
|
|
|
|
echo strip_tags(isset($question['survey_question']) ? $question['survey_question'] : null); |
|
|
|
|
echo '</div>'; |
|
|
|
@ -595,13 +596,13 @@ class SurveyUtil |
|
|
|
|
if ($question['type'] == 'score') { |
|
|
|
|
/** @todo This function should return the options as this is needed further in the code */ |
|
|
|
|
$options = self::display_question_report_score($survey_data, $question, $offset); |
|
|
|
|
} elseif ($question['type'] == 'open') { |
|
|
|
|
} elseif ($question['type'] == 'open' || $question['type'] == 'comment') { |
|
|
|
|
/** @todo Also get the user who has answered this */ |
|
|
|
|
$sql = "SELECT * FROM $table_survey_answer |
|
|
|
|
WHERE |
|
|
|
|
c_id = $course_id AND |
|
|
|
|
survey_id='".intval($_GET['survey_id'])."' AND |
|
|
|
|
question_id = '".intval($question['question_id'])."'"; |
|
|
|
|
survey_id='".$surveyId."' AND |
|
|
|
|
question_id = '".$questionId."'"; |
|
|
|
|
$result = Database::query($sql); |
|
|
|
|
while ($row = Database::fetch_array($result, 'ASSOC')) { |
|
|
|
|
echo $row['option_id'].'<hr noshade="noshade" size="1" />'; |
|
|
|
@ -611,8 +612,8 @@ class SurveyUtil |
|
|
|
|
$sql = "SELECT * FROM $table_survey_question_option |
|
|
|
|
WHERE |
|
|
|
|
c_id = $course_id AND |
|
|
|
|
survey_id='".intval($_GET['survey_id'])."' |
|
|
|
|
AND question_id = '".intval($question['question_id'])."' |
|
|
|
|
survey_id='".$surveyId."' |
|
|
|
|
AND question_id = '".$questionId."' |
|
|
|
|
ORDER BY sort ASC"; |
|
|
|
|
$result = Database::query($sql); |
|
|
|
|
while ($row = Database::fetch_array($result, 'ASSOC')) { |
|
|
|
@ -622,8 +623,8 @@ class SurveyUtil |
|
|
|
|
$sql = "SELECT *, count(answer_id) as total FROM $table_survey_answer |
|
|
|
|
WHERE |
|
|
|
|
c_id = $course_id AND |
|
|
|
|
survey_id='".intval($_GET['survey_id'])."' |
|
|
|
|
AND question_id = '".intval($question['question_id'])."' |
|
|
|
|
survey_id='".$surveyId."' |
|
|
|
|
AND question_id = '".$questionId."' |
|
|
|
|
GROUP BY option_id, value"; |
|
|
|
|
$result = Database::query($sql); |
|
|
|
|
$number_of_answers = []; |
|
|
|
@ -714,6 +715,7 @@ class SurveyUtil |
|
|
|
|
echo '</div>'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (isset($_GET['viewoption'])) { |
|
|
|
|
echo '<div class="answered-people">'; |
|
|
|
|
echo '<h4>'.get_lang('PeopleWhoAnswered').': ' |
|
|
|
@ -963,7 +965,7 @@ class SurveyUtil |
|
|
|
|
(is_array($_POST['questions_filter']) && in_array($row['question_id'], $_POST['questions_filter'])) |
|
|
|
|
) { |
|
|
|
|
// We do not show comment and pagebreak question types |
|
|
|
|
if ($row['type'] != 'comment' && $row['type'] != 'pagebreak') { |
|
|
|
|
if ($row['type'] != 'pagebreak') { |
|
|
|
|
echo ' <th'; |
|
|
|
|
if ($row['number_of_options'] > 0 && $row['type'] != 'percentage') { |
|
|
|
|
echo ' colspan="'.$row['number_of_options'].'"'; |
|
|
|
@ -1024,7 +1026,7 @@ class SurveyUtil |
|
|
|
|
(is_array($_POST['questions_filter']) && in_array($row['question_id'], $_POST['questions_filter'])) |
|
|
|
|
) { |
|
|
|
|
// we do not show comment and pagebreak question types |
|
|
|
|
if ($row['type'] == 'open') { |
|
|
|
|
if ($row['type'] == 'open' || $row['type'] == 'comment') { |
|
|
|
|
echo '<th> - </th>'; |
|
|
|
|
$possible_answers[$row['question_id']][$row['question_option_id']] = $row['question_option_id']; |
|
|
|
|
$display_percentage_header = 1; |
|
|
|
@ -1034,7 +1036,7 @@ class SurveyUtil |
|
|
|
|
$display_percentage_header = 0; |
|
|
|
|
} elseif ($row['type'] == 'percentage') { |
|
|
|
|
$possible_answers[$row['question_id']][$row['question_option_id']] = $row['question_option_id']; |
|
|
|
|
} elseif ($row['type'] != 'comment' && $row['type'] != 'pagebreak' && $row['type'] != 'percentage') { |
|
|
|
|
} elseif ($row['type'] != 'pagebreak' && $row['type'] != 'percentage') { |
|
|
|
|
echo '<th>'; |
|
|
|
|
echo $row['option_text']; |
|
|
|
|
echo '</th>'; |
|
|
|
@ -1073,7 +1075,10 @@ class SurveyUtil |
|
|
|
|
); |
|
|
|
|
$answers_of_user = []; |
|
|
|
|
} |
|
|
|
|
if (isset($questions[$row['question_id']]) && $questions[$row['question_id']]['type'] != 'open') { |
|
|
|
|
if (isset($questions[$row['question_id']]) && |
|
|
|
|
$questions[$row['question_id']]['type'] != 'open' && |
|
|
|
|
$questions[$row['question_id']]['type'] != 'comment' |
|
|
|
|
) { |
|
|
|
|
$answers_of_user[$row['question_id']][$row['option_id']] = $row; |
|
|
|
|
} else { |
|
|
|
|
$answers_of_user[$row['question_id']][0] = $row; |
|
|
|
@ -1156,7 +1161,7 @@ class SurveyUtil |
|
|
|
|
|
|
|
|
|
if (is_array($possible_options)) { |
|
|
|
|
foreach ($possible_options as $question_id => &$possible_option) { |
|
|
|
|
if ($questions[$question_id]['type'] == 'open') { |
|
|
|
|
if ($questions[$question_id]['type'] == 'open' || $questions[$question_id]['type'] == 'comment') { |
|
|
|
|
echo '<td align="center">'; |
|
|
|
|
echo $answers_of_user[$question_id]['0']['option_id']; |
|
|
|
|
echo '</td>'; |
|
|
|
@ -1204,6 +1209,12 @@ class SurveyUtil |
|
|
|
|
$table_survey_question_option = Database::get_course_table(TABLE_SURVEY_QUESTION_OPTION); |
|
|
|
|
$table_survey_answer = Database::get_course_table(TABLE_SURVEY_ANSWER); |
|
|
|
|
|
|
|
|
|
$surveyId = isset($_GET['survey_id']) ? (int) $_GET['survey_id'] : 0; |
|
|
|
|
|
|
|
|
|
if (empty($surveyId)) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// The first column |
|
|
|
|
$return = ';'; |
|
|
|
|
|
|
|
|
@ -1219,7 +1230,6 @@ class SurveyUtil |
|
|
|
|
|
|
|
|
|
$num = count($extra_user_fields); |
|
|
|
|
$return .= str_repeat(';', $num); |
|
|
|
|
|
|
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
|
|
|
|
|
|
$sql = "SELECT |
|
|
|
@ -1229,9 +1239,9 @@ class SurveyUtil |
|
|
|
|
count(options.question_option_id) as number_of_options |
|
|
|
|
FROM $table_survey_question questions |
|
|
|
|
LEFT JOIN $table_survey_question_option options |
|
|
|
|
ON questions.question_id = options.question_id AND options.c_id = $course_id |
|
|
|
|
ON questions.question_id = options.question_id AND options.c_id = questions.c_id |
|
|
|
|
WHERE |
|
|
|
|
questions.survey_id = '".intval($_GET['survey_id'])."' AND |
|
|
|
|
questions.survey_id = '".$surveyId."' AND |
|
|
|
|
questions.c_id = $course_id |
|
|
|
|
GROUP BY questions.question_id |
|
|
|
|
ORDER BY questions.sort ASC"; |
|
|
|
@ -1246,8 +1256,8 @@ class SurveyUtil |
|
|
|
|
in_array($row['question_id'], $_POST['questions_filter'])) |
|
|
|
|
) { |
|
|
|
|
// We do not show comment and pagebreak question types |
|
|
|
|
if ($row['type'] != 'comment' && $row['type'] != 'pagebreak') { |
|
|
|
|
if ($row['number_of_options'] == 0 && $row['type'] == 'open') { |
|
|
|
|
if ($row['type'] != 'pagebreak') { |
|
|
|
|
if ($row['number_of_options'] == 0 && ($row['type'] == 'open' || $row['type'] == 'comment')) { |
|
|
|
|
$return .= str_replace( |
|
|
|
|
"\r\n", |
|
|
|
|
' ', |
|
|
|
@ -1267,11 +1277,10 @@ class SurveyUtil |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$return .= "\n"; |
|
|
|
|
|
|
|
|
|
$return .= "\n"; |
|
|
|
|
// Getting all the questions and options |
|
|
|
|
$return .= ';'; |
|
|
|
|
|
|
|
|
|
// Show the fields names for user fields |
|
|
|
|
if (!empty($extra_user_fields)) { |
|
|
|
|
foreach ($extra_user_fields as &$field) { |
|
|
|
@ -1299,9 +1308,9 @@ class SurveyUtil |
|
|
|
|
LEFT JOIN $table_survey_question_option survey_question_option |
|
|
|
|
ON |
|
|
|
|
survey_question.question_id = survey_question_option.question_id AND |
|
|
|
|
survey_question_option.c_id = $course_id |
|
|
|
|
survey_question_option.c_id = survey_question.c_id |
|
|
|
|
WHERE |
|
|
|
|
survey_question.survey_id = '".intval($_GET['survey_id'])."' AND |
|
|
|
|
survey_question.survey_id = '".$surveyId."' AND |
|
|
|
|
survey_question.c_id = $course_id |
|
|
|
|
ORDER BY survey_question.sort ASC, survey_question_option.sort ASC"; |
|
|
|
|
$result = Database::query($sql); |
|
|
|
@ -1317,7 +1326,7 @@ class SurveyUtil |
|
|
|
|
) |
|
|
|
|
) { |
|
|
|
|
// We do not show comment and pagebreak question types |
|
|
|
|
if ($row['type'] != 'comment' && $row['type'] != 'pagebreak') { |
|
|
|
|
if ($row['type'] != 'pagebreak') { |
|
|
|
|
$row['option_text'] = str_replace(["\r", "\n"], ['', ''], $row['option_text']); |
|
|
|
|
$return .= api_html_entity_decode(strip_tags($row['option_text']), ENT_QUOTES).';'; |
|
|
|
|
$possible_answers[$row['question_id']][$row['question_option_id']] = $row['question_option_id']; |
|
|
|
@ -1331,7 +1340,7 @@ class SurveyUtil |
|
|
|
|
$old_user = ''; |
|
|
|
|
$answers_of_user = []; |
|
|
|
|
$sql = "SELECT * FROM $table_survey_answer |
|
|
|
|
WHERE c_id = $course_id AND survey_id='".intval($_GET['survey_id'])."'"; |
|
|
|
|
WHERE c_id = $course_id AND survey_id='".$surveyId."'"; |
|
|
|
|
if ($user_id != 0) { |
|
|
|
|
$sql .= "AND user='".Database::escape_string($user_id)."' "; |
|
|
|
|
} |
|
|
|
@ -1350,7 +1359,9 @@ class SurveyUtil |
|
|
|
|
); |
|
|
|
|
$answers_of_user = []; |
|
|
|
|
} |
|
|
|
|
if ($possible_answers_type[$row['question_id']] == 'open') { |
|
|
|
|
if ($possible_answers_type[$row['question_id']] == 'open' || |
|
|
|
|
$possible_answers_type[$row['question_id']] == 'comment' |
|
|
|
|
) { |
|
|
|
|
$temp_id = 'open'.$open_question_iterator; |
|
|
|
|
$answers_of_user[$row['question_id']][$temp_id] = $row; |
|
|
|
|
$open_question_iterator++; |
|
|
|
@ -1518,7 +1529,7 @@ class SurveyUtil |
|
|
|
|
count(options.question_option_id) as number_of_options |
|
|
|
|
FROM $table_survey_question questions |
|
|
|
|
LEFT JOIN $table_survey_question_option options |
|
|
|
|
ON questions.question_id = options.question_id AND options.c_id = $course_id |
|
|
|
|
ON questions.question_id = options.question_id AND options.c_id = questions.c_id |
|
|
|
|
WHERE |
|
|
|
|
questions.survey_id = $surveyId AND |
|
|
|
|
questions.c_id = $course_id |
|
|
|
@ -1534,8 +1545,8 @@ class SurveyUtil |
|
|
|
|
in_array($row['question_id'], $_POST['questions_filter'])) |
|
|
|
|
) { |
|
|
|
|
// We do not show comment and pagebreak question types |
|
|
|
|
if ($row['type'] != 'comment' && $row['type'] != 'pagebreak') { |
|
|
|
|
if ($row['number_of_options'] == 0 && $row['type'] == 'open') { |
|
|
|
|
if ($row['type'] != 'pagebreak') { |
|
|
|
|
if ($row['number_of_options'] == 0 && ($row['type'] == 'open' || $row['type'] == 'comment')) { |
|
|
|
|
$worksheet->setCellValueByColumnAndRow( |
|
|
|
|
$column, |
|
|
|
|
$line, |
|
|
|
@ -1592,7 +1603,7 @@ class SurveyUtil |
|
|
|
|
LEFT JOIN $table_survey_question_option survey_question_option |
|
|
|
|
ON |
|
|
|
|
survey_question.question_id = survey_question_option.question_id AND |
|
|
|
|
survey_question_option.c_id = $course_id |
|
|
|
|
survey_question_option.c_id = survey_question.c_id |
|
|
|
|
WHERE |
|
|
|
|
survey_question.survey_id = $surveyId AND |
|
|
|
|
survey_question.c_id = $course_id |
|
|
|
@ -1609,7 +1620,7 @@ class SurveyUtil |
|
|
|
|
in_array($row['question_id'], $_POST['questions_filter'])) |
|
|
|
|
) { |
|
|
|
|
// We do not show comment and pagebreak question types |
|
|
|
|
if ($row['type'] != 'comment' && $row['type'] != 'pagebreak') { |
|
|
|
|
if ($row['type'] != 'pagebreak') { |
|
|
|
|
$worksheet->setCellValueByColumnAndRow( |
|
|
|
|
$column, |
|
|
|
|
$line, |
|
|
|
@ -1656,7 +1667,7 @@ class SurveyUtil |
|
|
|
|
$line++; |
|
|
|
|
$column = 0; |
|
|
|
|
} |
|
|
|
|
if ($possible_answers_type[$row['question_id']] == 'open') { |
|
|
|
|
if ($possible_answers_type[$row['question_id']] == 'open' || $possible_answers_type[$row['question_id']] == 'comment') { |
|
|
|
|
$temp_id = 'open'.$open_question_iterator; |
|
|
|
|
$answers_of_user[$row['question_id']][$temp_id] = $row; |
|
|
|
|
$open_question_iterator++; |
|
|
|
|