MDL-38158 core_media: Convert media players to new plugin type

AMOS BEGIN
  MOV [siteyoutube,core_media],[pluginname,media_youtube]
  MOV [siteyoutube_desc,core_media],[pluginname_help,media_youtube]
  MOV [sitevimeo,core_media],[pluginname,media_vimeo]
  MOV [sitevimeo_desc,core_media],[pluginname_help,media_vimeo]
  MOV [html5audio,core_media],[pluginname,media_html5audio]
  MOV [html5audio_desc,core_media],[pluginname_help,media_html5audio]
  MOV [html5video,core_media],[pluginname,media_html5video]
  MOV [html5video_desc,core_media],[pluginname_help,media_html5video]
  MOV [flashanimation,core_media],[pluginname,media_swf]
  MOV [flashanimation_desc,core_media],[pluginname_help,media_swf]
AMOS END
This commit is contained in:
Marina Glancy 2016-09-15 15:52:41 +08:00
parent 3c73b26c4b
commit fab11235d8
76 changed files with 3524 additions and 4406 deletions

View file

@ -316,6 +316,10 @@ class core_useragent {
// Internet Explorer.
return self::check_ie_version($version);
case 'Edge':
// Microsoft Edge.
return self::check_edge_version($version);
case 'Firefox':
// Mozilla Firefox browsers.
return self::check_firefox_version($version);
@ -1054,4 +1058,85 @@ class core_useragent {
}
return false;
}
/**
* Checks if current browser supports files with give extension as <video> or <audio> source
*
* Note, the check here is not 100% accurate!
*
* First, we do not know which codec is used in .mp4 or .webm files. Not all browsers support
* all codecs.
*
* Also we assume that users of Firefox/Chrome/Safari do not use the ancient versions of browsers.
*
* We check the exact version for IE/Edge though. We know that there are still users of very old
* versions that are afraid to upgrade or have slow IT department.
*
* Resources:
* https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats
* https://en.wikipedia.org/wiki/HTML5_video
* https://en.wikipedia.org/wiki/HTML5_Audio
*
* @param string $extension extension without leading .
* @return bool
*/
public static function supports_html5($extension) {
$extension = strtolower($extension);
$supportedvideo = array('m4v', 'webm', 'ogv', 'mp4');
$supportedaudio = array('ogg', 'oga', 'aac', 'm4a', 'mp3', 'wav', 'mov');
// TODO MDL-56549 Flac will be supported in Firefox 51 in January 2017.
// Basic extension support.
if (!in_array($extension, $supportedvideo) && !in_array($extension, $supportedaudio)) {
return false;
}
// MS IE support - version 9.0 or later.
if (self::is_ie() && !self::check_ie_version('9.0')) {
return false;
}
// MS Edge support - version 12.0 for desktop and 13.0 for mobile.
if (self::is_edge()) {
if (!self::check_edge_version('12.0')) {
return false;
}
if (self::instance()->is_useragent_mobile() && !self::check_edge_version('13.0')) {
return false;
}
}
// Different exceptions.
// Webm is not supported in IE, Edge and in Safari.
if ($extension === 'webm' &&
(self::is_ie() || self::is_edge() || self::is_safari() || self::is_safari_ios())) {
return false;
}
// Ogg is not supported in IE, Edge and Safari.
$isogg = in_array($extension, ['ogg', 'oga', 'ogv']);
if ($isogg && (self::is_ie() || self::is_edge() || self::is_safari() || self::is_safari_ios())) {
return false;
}
// Wave is not supported in IE.
if ($extension === 'wav' && self::is_ie()) {
return false;
}
// Aac is not supported in IE below 11.0.
if ($extension === 'aac' && (self::is_ie() && !self::check_ie_version('11.0'))) {
return false;
}
// Mpeg is not supported in IE below 10.0.
$ismpeg = in_array($extension, ['m4a', 'mp3', 'm4v', 'mp4']);
if ($ismpeg && (self::is_ie() && !self::check_ie_version('10.0'))) {
return false;
}
// Mov is not supported in IE.
if ($extension === 'mov' && self::is_ie()) {
return false;
}
return true;
}
}