Skip to content

Commit

Permalink
MDL-57316 media: Setup media plugins in media_manager::instance()
Browse files Browse the repository at this point in the history
  • Loading branch information
John Okely authored and marinaglancy committed Feb 7, 2017
1 parent c2e0033 commit 1abd437
Show file tree
Hide file tree
Showing 8 changed files with 52 additions and 12 deletions.
4 changes: 2 additions & 2 deletions filter/mediaplugin/filter.php
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ public function setup($page, $context) {
}
$jsinitialised = true;

$mediamanager = core_media_manager::instance();
$mediamanager->setup($page);
// Set up the media manager so that media plugins requiring JS are initialised.
$mediamanager = core_media_manager::instance($page);
}

public function filter($text, array $options = array()) {
Expand Down
2 changes: 1 addition & 1 deletion lib/editor/tinymce/plugins/moodlemedia/preview.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@

echo $OUTPUT->header();

$mediarenderer = core_media_manager::instance();
$mediarenderer = core_media_manager::instance($PAGE);

if (isloggedin() and !isguestuser() and $mediarenderer->can_embed_url($url)) {
require_sesskey();
Expand Down
7 changes: 7 additions & 0 deletions lib/tests/medialib_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -517,4 +517,11 @@ public function get_players_test() {
}
return $out;
}

/**
* Override the constructor to access it.
*/
public function __construct() {
parent::__construct();
}
}
40 changes: 34 additions & 6 deletions media/classes/manager.php
Original file line number Diff line number Diff line change
Expand Up @@ -100,27 +100,55 @@ class core_media_manager {
/**
* Returns a singleton instance of a manager
*
* Note as of Moodle 3.3, this will call setup for you.
*
* @return core_media_manager
*/
public static function instance() {
public static function instance($page = null) {
if (self::$instance === null) {
self::$instance = new self();
self::$instance = new self($page);
}
return self::$instance;
}

/**
* Construct a new core_media_manager instance
*
* @param moodle_page $page The page we are going to add requirements to.
* @see core_media_manager::instance()
*/
protected function __construct($page = null) {
// Use the passed $page if given, otherwise the $PAGE global.
if ($page == null) {
global $PAGE;
if (isset($PAGE)) {
$page = $PAGE;
}
}
if ($page) {
$players = $this->get_players();
foreach ($players as $player) {
$player->setup($page);
}
} else {
debugging('Could not determine the $PAGE. Media plugins will not be set up', DEBUG_DEVELOPER);
}
}

/**
* Setup page requirements.
*
* This should must only be called once per page request.
*
* @deprecated Moodle 3.3, The setup is now done in ::instance() so there is no need to call this
* @param moodle_page $page The page we are going to add requirements to.
* @see core_media_manager::instance()
* @todo MDL-57632 final deprecation
*/
public function setup($page) {
$players = $this->get_players();
foreach ($players as $player) {
$player->setup($page);
}
debugging('core_media_manager::setup() is deprecated.' .
'You only need to call core_media_manager::instance() now', DEBUG_DEVELOPER);
// No need to call ::instance from here, because the instance has already be set up.
}

/**
Expand Down
5 changes: 5 additions & 0 deletions media/upgrade.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
This files describes API changes in /media/ plugins,
information provided here is intended especially for developers.

=== 3.3 ===
* core_media_manager setup() is now deprecated as it is now called when initialising core_media_manager::instance().
2 changes: 1 addition & 1 deletion mod/lesson/locallib.php
Original file line number Diff line number Diff line change
Expand Up @@ -618,7 +618,7 @@ function lesson_get_media_html($lesson, $context) {

$extension = resourcelib_get_extension($url->out(false));

$mediamanager = core_media_manager::instance();
$mediamanager = core_media_manager::instance($PAGE);
$embedoptions = array(
core_media_manager::OPTION_TRUSTED => true,
core_media_manager::OPTION_BLOCK => true
Expand Down
2 changes: 1 addition & 1 deletion mod/resource/locallib.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ function resource_display_embed($resource, $cm, $course, $file) {

$extension = resourcelib_get_extension($file->get_filename());

$mediamanager = core_media_manager::instance();
$mediamanager = core_media_manager::instance($PAGE);
$embedoptions = array(
core_media_manager::OPTION_TRUSTED => true,
core_media_manager::OPTION_BLOCK => true,
Expand Down
2 changes: 1 addition & 1 deletion mod/url/locallib.php
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,7 @@ function url_display_embed($url, $cm, $course) {

$extension = resourcelib_get_extension($url->externalurl);

$mediamanager = core_media_manager::instance();
$mediamanager = core_media_manager::instance($PAGE);
$embedoptions = array(
core_media_manager::OPTION_TRUSTED => true,
core_media_manager::OPTION_BLOCK => true
Expand Down

0 comments on commit 1abd437

Please sign in to comment.