From c18987bbe1b66556e82d627178fdba3836787bab Mon Sep 17 00:00:00 2001 From: Paul Holden Date: Wed, 19 May 2021 09:59:05 +0100 Subject: [PATCH] MDL-71685 dataformat_json: include column names in exported file. --- dataformat/json/classes/writer.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/dataformat/json/classes/writer.php b/dataformat/json/classes/writer.php index effd83ecaa9..c7803ad7d74 100644 --- a/dataformat/json/classes/writer.php +++ b/dataformat/json/classes/writer.php @@ -24,7 +24,7 @@ namespace dataformat_json; -defined('MOODLE_INTERNAL') || die(); +use core_text; /** * JSON data format writer @@ -47,6 +47,9 @@ class writer extends \core\dataformat\base { /** @var $sheetdatadded */ public $sheetdatadded = false; + /** @var string[] $columns */ + protected $columns = []; + /** * Write the start of the file. */ @@ -60,6 +63,10 @@ class writer extends \core\dataformat\base { * @param array $columns */ public function start_sheet($columns) { + $this->columns = array_map(function($column) { + return core_text::strtolower(clean_param($column, PARAM_ALPHA)); + }, $columns); + if ($this->sheetstarted) { echo ","; } else { @@ -80,6 +87,8 @@ class writer extends \core\dataformat\base { echo ","; } + // Ensure our record is keyed by column names, rather than numerically. + $record = array_combine($this->columns, (array) $record); echo json_encode($this->format_record($record), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); $this->sheetdatadded = true;