Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.2.x will end 22 April 2024 (12 months).
  • Bug fixes for security issues in 4.2.x will end 7 October 2024 (18 months).
  • PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.1.x is supported too.
<?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/>.

/**
 * H5P factory class.
 * This class is used to decouple the construction of H5P related objects.
 *
 * @package    core_h5p
 * @copyright  2019 Mihail Geshoski <mihail@moodle.com>
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

namespace core_h5p;

defined('MOODLE_INTERNAL') || die();

use core_h5p\local\library\autoloader;
< use H5PContentValidator as content_validator; < use H5peditor; < use H5PStorage as storage; < use H5PValidator as validator;
> use Moodle\H5PContentValidator as content_validator; > use Moodle\H5peditor; > use Moodle\H5PStorage as storage; > use Moodle\H5PValidator as validator;
/** * H5P factory class. * This class is used to decouple the construction of H5P related objects. * * @package core_h5p * @copyright 2019 Mihail Geshoski <mihail@moodle.com> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class factory { /** @var \core_h5p\local\library\autoloader The autoloader */ protected $autoloader; /** @var \core_h5p\core The Moodle H5PCore implementation */ protected $core; /** @var \core_h5p\framework The Moodle H5PFramework implementation */ protected $framework; /** @var \core_h5p\file_storage The Moodle H5PStorage implementation */ protected $storage; /** @var validator The Moodle H5PValidator implementation */ protected $validator; /** @var content_validator The Moodle H5PContentValidator implementation */ protected $content_validator; /** @var editor_framework The Moodle H5peditorStorage implementation */ protected $editorframework; /** @var H5peditor */ protected $editor; /** @var editor_ajax The Moodle H5PEditorAjaxInterface implementation */ protected $editorajaxinterface; /** * factory constructor. */ public function __construct() { // Loading classes we need from H5P third party library. $this->autoloader = new autoloader(); autoloader::register(); } /** * Returns an instance of the \core_h5p\local\library\autoloader class. * * @return \core_h5p\local\library\autoloader */ public function get_autoloader(): autoloader { return $this->autoloader; } /** * Returns an instance of the \core_h5p\framework class. * * @return \core_h5p\framework */ public function get_framework(): framework { if (null === $this->framework) { $this->framework = new framework(); } return $this->framework; } /** * Returns an instance of the \core_h5p\core class. * * @return \core_h5p\core */ public function get_core(): core { if (null === $this->core) { $fs = new \core_h5p\file_storage(); $language = \core_h5p\framework::get_language(); $context = \context_system::instance(); $url = \moodle_url::make_pluginfile_url($context->id, 'core_h5p', '', null, '', '')->out(); $this->core = new core($this->get_framework(), $fs, $url, $language, true); } return $this->core; } /**
< * Returns an instance of the \H5PStorage class.
> * Returns an instance of the H5PStorage class.
*
< * @return \H5PStorage
> * @return \Moodle\H5PStorage
*/ public function get_storage(): storage { if (null === $this->storage) { $this->storage = new storage($this->get_framework(), $this->get_core()); } return $this->storage; } /**
< * Returns an instance of the \H5PValidator class.
> * Returns an instance of the H5PValidator class.
*
< * @return \H5PValidator
> * @return \Moodle\H5PValidator
*/ public function get_validator(): validator { if (null === $this->validator) { $this->validator = new validator($this->get_framework(), $this->get_core()); } return $this->validator; } /**
< * Returns an instance of the \H5PContentValidator class.
> * Returns an instance of the H5PContentValidator class.
*
< * @return \H5PContentValidator
> * @return Moodle\H5PContentValidator
*/ public function get_content_validator(): content_validator { if (null === $this->content_validator) { $this->content_validator = new content_validator($this->get_framework(), $this->get_core()); } return $this->content_validator; } /** * Returns an instance of H5Peditor class. * * @return H5peditor */ public function get_editor(): H5peditor { if (null === $this->editor) { if (empty($this->editorframework)) { $this->editorframework = new editor_framework(); } if (empty($this->editorajaxinterface)) { $this->editorajaxinterface = new editor_ajax(); } if (empty($this->editor)) { $this->editor = new H5peditor($this->get_core(), $this->editorframework, $this->editorajaxinterface); } } return $this->editor; } }