MDL-71981 dataformat: indicate HTML support in writer callback.
authorPaul Holden <paulh@moodle.com>
Fri, 18 Jun 2021 09:15:27 +0000 (10:15 +0100)
committerAdrian Greeve <abgreeve@gmail.com>
Tue, 6 Jul 2021 01:27:15 +0000 (09:27 +0800)
dataformat/upgrade.txt
lib/classes/dataformat.php

index 89eaa5b..687ea73 100644 (file)
@@ -1,6 +1,13 @@
 This files describes API changes in /dataformat/ download system,
 information provided here is intended especially for developers.
 
+=== 3.11.1 ===
+* Optional $callback for the following \core\dataformat methods now receive a second argument to define
+  whether the current format writer supports HTML:
+  - download_data()
+  - write_data()
+  - write_data_to_filearea()
+
 === 3.9 ===
 * The following methods have been added to the base dataformat class to allow instances to export to a local
   file. They can be overridden in extending classes to define how files should be created:
index 0bc5453..70bdcec 100644 (file)
@@ -60,7 +60,8 @@ class dataformat {
      * @param string $dataformat
      * @param array $columns
      * @param Iterable $iterator
-     * @param callable|null $callback
+     * @param callable|null $callback Optional callback method to apply to each record prior to writing, which accepts two
+     *      parameters as such: function($record, bool $supportshtml) returning formatted record
      * @throws coding_exception
      */
     public static function download_data(string $filename, string $dataformat, array $columns, Iterable $iterator,
@@ -90,7 +91,7 @@ class dataformat {
         $rownum = 0;
         foreach ($iterator as $row) {
             if (is_callable($callback)) {
-                $row = $callback($row);
+                $row = $callback($row, $format->supports_html());
             }
             if ($row === null) {
                 continue;
@@ -132,7 +133,7 @@ class dataformat {
         $rownum = 0;
         foreach ($iterator as $row) {
             if (is_callable($callback)) {
-                $row = $callback($row);
+                $row = $callback($row, $format->supports_html());
             }
             if ($row === null) {
                 continue;