MDL-69549 mod_folder: Content export implementation
authorAndrew Nicols <andrew@nicols.co.uk>
Wed, 14 Oct 2020 23:31:05 +0000 (07:31 +0800)
committerAndrew Nicols <andrew@nicols.co.uk>
Thu, 15 Oct 2020 05:45:59 +0000 (13:45 +0800)
mod/folder/classes/content/exporter.php [new file with mode: 0644]

diff --git a/mod/folder/classes/content/exporter.php b/mod/folder/classes/content/exporter.php
new file mode 100644 (file)
index 0000000..159ad8c
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Content export definition.
+ *
+ * @package     mod_folder
+ * @copyright   2020 Andrew Nicols <andrew@nicols.co.uk>
+ * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+namespace mod_folder\content;
+
+use core\content\export\exportable_items\exportable_filearea;
+use core\content\export\exporters\abstract_mod_exporter;
+
+/**
+ * A class which assists a component to export content.
+ *
+ * @copyright   2020 Andrew Nicols <andrew@nicols.co.uk>
+ * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class exporter extends abstract_mod_exporter {
+
+    /**
+     * Get the exportable items for mod_folder.
+     *
+     * @param   bool $includeuserdata Whether to include user data, in addition to shared content.
+     * @return  \core\content\export\exportable_item[]
+     */
+    public function get_exportables(bool $includeuserdata = false): array {
+        $contentitems = [];
+
+        $contentitems[]  = new exportable_filearea(
+            $this->get_context(),
+            $this->get_component(),
+            get_string('foldercontent', 'mod_folder'),
+
+            // The files held in mod_folder are stored in the 'content' filearea, under itemid 0.
+            'content',
+            0,
+
+            // The itemid is used in the URL when accessing.
+            0
+        );
+
+        return $contentitems;
+    }
+}