SurveyExport plugins: Add option to export incomplete surveys - refs BT#15280

pull/2864/head
Angel Fernando Quiroz Campos 7 years ago
parent 492252c552
commit 1caea04a9c
  1. 1
      plugin/surveyexportcsv/SurveyExportCsvPlugin.php
  2. 17
      plugin/surveyexportcsv/export.php
  3. 2
      plugin/surveyexportcsv/lang/english.php
  4. 2
      plugin/surveyexportcsv/lang/spanish.php
  5. 1
      plugin/surveyexporttxt/SurveyExportTxtPlugin.php
  6. 21
      plugin/surveyexporttxt/export.php
  7. 2
      plugin/surveyexporttxt/lang/english.php
  8. 2
      plugin/surveyexporttxt/lang/spanish.php

@ -13,6 +13,7 @@ class SurveyExportCsvPlugin extends Plugin
{
$settings = [
'enabled' => 'boolean',
'export_incomplete' => 'boolean',
];
parent::__construct('0.1', 'Angel Fernando Quiroz Campos', $settings);

@ -18,6 +18,7 @@ if (empty($surveyData)) {
}
$plugin = SurveyExportCsvPlugin::create();
$allowExportIncomplete = 'true' === $plugin->get('export_incomplete');
if ($plugin->get('enabled') !== 'true') {
api_not_allowed(true);
@ -31,6 +32,7 @@ $questionsData = array_filter(
return in_array($questionData['type'], ['yesno', 'multiplechoice', 'open']);
}
);
$numberOfQuestions = count($questionsData);
usort(
$questionsData,
@ -49,11 +51,18 @@ $content[] = firstRow($questionsData);
$surveyAnswers = getSurveyAnswers($courseId, $surveyId);
// Process answers
foreach ($surveyAnswers as $i => $answer) {
$i = 1;
foreach ($surveyAnswers as $answer) {
$row = otherRow($questionsData, $answer['user'], $courseId);
array_unshift($row, $i + 1);
if (!$allowExportIncomplete && count($row) < $numberOfQuestions) {
continue;
}
array_unshift($row, $i);
$content[] = $row;
$i++;
}
// Generate file
@ -182,7 +191,9 @@ function otherRow($questions, $user, $courseId)
if ('open' === $question['type']) {
$answer = getOpenAnswer($question['question_id'], $question['survey_id'], $courseId, $user);
$row[] = Security::remove_XSS($answer->getOptionId());
if ($answer){
$row[] = Security::remove_XSS($answer->getOptionId());
}
} else {
$options = getQuestionOptions(
$user,

@ -5,3 +5,5 @@ $strings['plugin_title'] = "Survey Export CSV";
$strings['plugin_comment'] = "Export surveys results to CSV file";
$strings['enabled'] = 'Enabled';
$strings['export_incomplete'] = 'Export incomplete';
$strings['export_incomplete_help'] = 'Allow export incomplete surveys. Disabled by default.';

@ -5,3 +5,5 @@ $strings['plugin_title'] = "Survey Export CSV";
$strings['plugin_comment'] = "Exportar resultados de encuestas en archivo CSV.";
$strings['enabled'] = 'Habilitado';
$strings['export_incomplete'] = 'Exportar incompletos';
$strings['export_incomplete_help'] = 'Permitir exportar encuestas incompletas. Deshabilitado por defecto.';

@ -13,6 +13,7 @@ class SurveyExportTxtPlugin extends Plugin
{
$settings = [
'enabled' => 'boolean',
'export_incomplete' => 'boolean',
];
parent::__construct('0.1', 'Angel Fernando Quiroz Campos', $settings);

@ -17,6 +17,7 @@ if (empty($surveyData)) {
}
$plugin = SurveyExportTxtPlugin::create();
$allowExportIncomplete = 'true' === $plugin->get('export_incomplete');
if ($plugin->get('enabled') !== 'true') {
api_not_allowed(true);
@ -41,6 +42,8 @@ $content = [];
$parts = [];
$indexPart = 0;
$numberOfQuestions = 0;
// Separate questions in introduction and main blocks
foreach ($questionsData as $questionData) {
if (!in_array($questionData['type'], ['yesno', 'pagebreak', 'multiplechoice'])) {
@ -53,6 +56,8 @@ foreach ($questionsData as $questionData) {
continue;
}
$numberOfQuestions++;
if (0 === $indexPart) {
$parts[0][] = $questionData;
@ -91,8 +96,11 @@ $surveyAnswers = Database::getManager()
->getResult();
// Process answers
foreach ($surveyAnswers as $i => $answer) {
$surveyLine = '"'.($i + 1).'","';
$i = 1;
foreach ($surveyAnswers as $answer) {
$userAnswersCount = 0;
$surveyLine = '';
// Show answers for introduction questions
foreach ($parts[0] as $introQuestion) {
@ -102,6 +110,7 @@ foreach ($surveyAnswers as $i => $answer) {
$introQuestion['survey_id'],
$introQuestion['question_id']
);
$userAnswersCount += count($options);
/** @var CSurveyQuestionOption $option */
foreach ($options as $option) {
@ -119,6 +128,7 @@ foreach ($surveyAnswers as $i => $answer) {
$mainQuestion['survey_id'],
$mainQuestion['question_id']
);
$userAnswersCount += count($options);
/** @var CSurveyQuestionOption $option */
foreach ($options as $option) {
@ -128,7 +138,12 @@ foreach ($surveyAnswers as $i => $answer) {
$surveyLine .= '"';
$content[] = $surveyLine;
if (!$allowExportIncomplete && $userAnswersCount < $numberOfQuestions) {
continue;
}
$content[] = '"'.$i.'","'.$surveyLine;
$i++;
}
// Add EOL to lines

@ -5,3 +5,5 @@ $strings['plugin_title'] = "Survey Export TXT";
$strings['plugin_comment'] = "Export surveys results to TXT file";
$strings['enabled'] = 'Enabled';
$strings['export_incomplete'] = 'Export incomplete';
$strings['export_incomplete_help'] = 'Allow export incomplete surveys. Disabled by default.';

@ -5,3 +5,5 @@ $strings['plugin_title'] = "Survey Export TXT";
$strings['plugin_comment'] = "Exportar resultados de encuestas en archivo TXT.";
$strings['enabled'] = 'Habilitado';
$strings['export_incomplete'] = 'Exportar incompletos';
$strings['export_incomplete_help'] = 'Permitir exportar encuestas incompletas. Deshabilitado por defecto.';

Loading…
Cancel
Save