Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-56046

lib/spout changes break Excel export of tables

    Details

    • Testing Instructions:
      Hide
      Prerequisite.
      1. Install https://github.com/mackensen/moodle-dataformat_markdown.
      2. Make sure you have debugging turned on.
      Test 1
      1. Create a quiz with a 'True False' and a 'Short answer' question.
      2. Make two attempts at the quiz with different student accounts and make sure to submit and finish.
      3. Go to 'Quiz administration' -> 'Results' -> 'Statistics'.
      4. Download the entire report in different formats (except for Markdown as it is broken (in stable as well)).
      5. Take the downloaded files and open them in a text editor and confirm there are no PHP warnings/errors mixed up with the binary data.
      6. Confirm the files look good and are accurate when opened (for json confirm it is valid (eg. use https://jsonlint.com/)).
      Test 2
      1. Visit 'Site administration' > 'Users' > 'Bulk user actions'.
      2. Select a bunch of users then click on 'Add to selection'.
      3. In the select box 'With selected users...' select 'Download' and download a file for each format.
      4. Take the downloaded files and open them in a text editor and confirm there are no PHP warnings/errors mixed up with the binary data.
      5. Confirm the files look good and are accurate when opened (for json confirm it is valid (eg. use https://jsonlint.com/)).
      6. For master only view your apache error log file and confirm there were messages warning abt the use of write_header() and write_footer() due to the markdown plugin.
      Test 3
      1. Put the following code into a file called test.php and place it in your dirroot.
        <?php
        
        require_once('config.php');
        require_once($CFG->dirroot . '/mod/quiz/report/statistics/statistics_table.php');
        
        $download = optional_param('download', '', PARAM_ALPHA);
        
        $table = new quiz_statistics_table();
        $table->is_downloading($download, 'test',
            get_string('quizstructureanalysis', 'quiz_statistics'));
        $exportclass = $table->export_class_instance();
        $exportclass->start_table(get_string('quizinformation', 'quiz_statistics'));
        $exportclass->output_headers(array('Test heading 1', 'Test heading 2'));
        $exportclass->add_data(array('Test value 1', 'Test value 2'));
        $exportclass->finish_table();
        $exportclass->finish_document();
        
      2. Visit <yoursite>/test.php?download=<format> and confirm it works as expected. (Go through all the formats - csv, excel, html, json, markdown, ods - for json confirm it is valid (eg. use https://jsonlint.com/)).
      3. For master only view your apache error log file and confirm there were messages warning abt the use of write_header() and write_footer() due to the markdown plugin.
      Show
      Prerequisite. Install https://github.com/mackensen/moodle-dataformat_markdown . Make sure you have debugging turned on. Test 1 Create a quiz with a 'True False' and a 'Short answer' question. Make two attempts at the quiz with different student accounts and make sure to submit and finish. Go to 'Quiz administration' -> 'Results' -> 'Statistics'. Download the entire report in different formats (except for Markdown as it is broken (in stable as well)). Take the downloaded files and open them in a text editor and confirm there are no PHP warnings/errors mixed up with the binary data. Confirm the files look good and are accurate when opened (for json confirm it is valid (eg. use https://jsonlint.com/ )). Test 2 Visit 'Site administration' > 'Users' > 'Bulk user actions'. Select a bunch of users then click on 'Add to selection'. In the select box 'With selected users...' select 'Download' and download a file for each format. Take the downloaded files and open them in a text editor and confirm there are no PHP warnings/errors mixed up with the binary data. Confirm the files look good and are accurate when opened (for json confirm it is valid (eg. use https://jsonlint.com/ )). For master only view your apache error log file and confirm there were messages warning abt the use of write_header() and write_footer() due to the markdown plugin. Test 3 Put the following code into a file called test.php and place it in your dirroot. <?php require_once('config.php'); require_once($CFG->dirroot . '/mod/quiz/report/statistics/statistics_table.php'); $download = optional_param('download', '', PARAM_ALPHA); $table = new quiz_statistics_table(); $table->is_downloading($download, 'test', get_string('quizstructureanalysis', 'quiz_statistics')); $exportclass = $table->export_class_instance(); $exportclass->start_table(get_string('quizinformation', 'quiz_statistics')); $exportclass->output_headers(array('Test heading 1', 'Test heading 2')); $exportclass->add_data(array('Test value 1', 'Test value 2')); $exportclass->finish_table(); $exportclass->finish_document(); Visit <yoursite>/test.php?download=<format> and confirm it works as expected. (Go through all the formats - csv, excel, html, json, markdown, ods - for json confirm it is valid (eg. use https://jsonlint.com/ )). For master only view your apache error log file and confirm there were messages warning abt the use of write_header() and write_footer() due to the markdown plugin.
    • Affected Branches:
      MOODLE_31_STABLE, MOODLE_32_STABLE, MOODLE_33_STABLE, MOODLE_34_STABLE
    • Fixed Branches:
      MOODLE_32_STABLE, MOODLE_33_STABLE
    • Pull from Repository:
    • Pull 3.2 Branch:
    • Pull 3.3 Branch:
    • Pull Master Branch:
      MDL-56046_master

      Description

      Steps to reproduce: (Quiz statistics export to excel is broken)

      1. Go to https://qa.moodle.net/mod/quiz/report.php?id=52&mode=statistics
      2. Select 'Microsoft Excel (.xlsx)' in the Dropdown, and click the download button.
      3. Save the file, and open it in a text editor.

      Expected result: binary Excel data, which Excel will open.

      Acutal result: Mixed in with the data, are PHP errors like

      <br />
      <b>Warning</b>: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/qa.moodle.net/html/lib/spout/src/Spout/Writer/Common/Helper/ZipHelper.php:214) in <b>/var/www/vhosts/qa.moodle.net/html/lib/spout/src/Spout/Common/Helper/GlobalFunctionsHelper.php</b> on line <b>252</b><br />

        Gliffy Diagrams

          Attachments

          1. sheet.patch
            0.9 kB
          2. sheet2.patch
            1 kB
          3. sheet3.patch
            0.6 kB

            Issue Links

              Activity

                People

                • Votes:
                  33 Vote for this issue
                  Watchers:
                  36 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved:
                    Fix Release Date:
                    10/Jul/17