Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.

Contains the import_strategy interface.

Copyright: 2020 Jake Dallimore <jrhdallimore@gmail.com>
License: http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
File Size: 69 lines (4 kb)
Included or required:0 times
Referenced: 0 times
Includes or requires: 0 files

Defines 1 class

import_strategy:: (2 methods):
  get_handlers()
  import()


Interface: import_strategy  - X-Ref

The import_strategy interface.

This provides a contract allowing different import strategies to be implemented.

An import_strategy encapsulates the logic used to prepare a remote_resource for import into Moodle in some way and is used by the
import_processor (to perform aforementioned preparations) before it hands control of the import over to a course module plugin.

We may wish to have many strategies because the preparation steps may vary depending on how the resource is to be treated.
E.g. We may wish to import as a file in which case download steps will be required, or we may simply wish to import the remote
resource as a link, in which cases setup steps will not require any file download.

get_handlers(array $registrydata, remote_resource $resource)   X-Ref
Get an array of import_handler_info objects supported by this import strategy, based on the registrydata and resource.

Implementations should check the registry data for any entries which align with their import strategy and should create
import_handler_info objects to represent each relevant entry. If an entry represents a module, or handling type which does
not align with the strategy, that item should simply be skipped.

E.g. If one strategy aims to import all remote resources as files (e.g. import_strategy_file), it would only generate a list
of import_handler_info objects created from those registry entries of type 'file', as those entries represent the modules
which have said they can handle resources as files.

param: array $registrydata The fully populated handler registry.
param: remote_resource $resource the remote resource.
return: import_handler_info[] the array of import_handler_info objects, or an empty array if none were matched.

import(remote_resource $resource, \stdClass $user, \stdClass $course, int $section)   X-Ref
Called during import to perform required import setup steps.

param: remote_resource $resource the resource to import.
param: \stdClass $user the user to import on behalf of.
param: \stdClass $course the course into which the remote resource is being imported.
param: int $section the section into which the remote resource is being imported.
return: \stdClass the module data which will be passed on to the course module plugin.