From 375ca114e2e1f664534be0c9295009ced63758de Mon Sep 17 00:00:00 2001 From: Shamim Rezaie Date: Wed, 12 Aug 2020 18:43:46 +1000 Subject: [PATCH] MDL-57682 media_videojs: webservice to get the language pack of videojs --- .../videojs/classes/external/get_language.php | 73 +++++++++++++++++++ media/player/videojs/classes/plugin.php | 13 ++++ media/player/videojs/db/services.php | 37 ++++++++++ media/player/videojs/version.php | 2 +- 4 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 media/player/videojs/classes/external/get_language.php create mode 100644 media/player/videojs/db/services.php diff --git a/media/player/videojs/classes/external/get_language.php b/media/player/videojs/classes/external/get_language.php new file mode 100644 index 00000000000..9e32bab314f --- /dev/null +++ b/media/player/videojs/classes/external/get_language.php @@ -0,0 +1,73 @@ +. + +/** + * External API to get language strings for the videojs. + * + * @package media_videojs + * @copyright 2020 Shamim Rezaie + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace media_videojs\external; + +defined('MOODLE_INTERNAL') || die(); + +require_once("$CFG->libdir/externallib.php"); + +use external_api; +use external_function_parameters; +use external_value; + +/** + * The API to get language strings for the videojs. + * + * @copyright 2020 Shamim Rezaie + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class get_language extends external_api { + /** + * Returns description of parameters. + * + * @return external_function_parameters + */ + public static function execute_parameters() { + return new external_function_parameters([ + 'lang' => new external_value(PARAM_ALPHAEXT, 'language') + ]); + } + + /** + * Returns language strings in the JSON format + * + * @param string $lang The language code + * @return string + */ + public static function execute(string $lang) { + external_api::validate_parameters(self::execute_parameters(), ['lang' => $lang]); + + return \media_videojs_plugin::get_language_content($lang); + } + + /** + * Returns description of method result value + * + * @return external_value + */ + public static function execute_returns() { + return new external_value(PARAM_RAW, 'language pack json'); + } +} diff --git a/media/player/videojs/classes/plugin.php b/media/player/videojs/classes/plugin.php index 3b4233de230..bc11f2a4e26 100644 --- a/media/player/videojs/classes/plugin.php +++ b/media/player/videojs/classes/plugin.php @@ -369,6 +369,19 @@ class media_videojs_plugin extends core_media_player_native { return ""; } + /** + * Returns the requested language pack in the json format. + * + * @param string $lang The language code + * @return false|string The read data or false on failure + */ + public static function get_language_content(string $lang) { + global $CFG; + $langfile = "{$CFG->dirroot}/media/player/videojs/videojs/lang/{$lang}.json"; + + return file_exists($langfile) ? file_get_contents($langfile) : ''; + } + public function supports($usedextensions = []) { $supports = parent::supports($usedextensions); if (get_config('media_videojs', 'youtube')) { diff --git a/media/player/videojs/db/services.php b/media/player/videojs/db/services.php new file mode 100644 index 00000000000..8d25e8530ba --- /dev/null +++ b/media/player/videojs/db/services.php @@ -0,0 +1,37 @@ +. + +/** + * VideoJS player external functions and service definitions. + * + * @package media_videojs + * @copyright 2020 Shamim Rezaie + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die; + +$functions = [ + 'media_videojs_get_language' => [ + 'classname' => 'media_videojs\external\get_language', + 'methodname' => 'execute', + 'classpath' => '', + 'description' => 'get language.', + 'type' => 'read', + 'ajax' => 'true', + 'capabilities' => '', + ] +]; diff --git a/media/player/videojs/version.php b/media/player/videojs/version.php index 2d6280c83e3..670a3e766f0 100644 --- a/media/player/videojs/version.php +++ b/media/player/videojs/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die(); -$plugin->version = 2021052500; // The current plugin version (Date: YYYYMMDDXX) +$plugin->version = 2021052501; // The current plugin version (Date: YYYYMMDDXX) $plugin->requires = 2021052500; // Requires this Moodle version $plugin->component = 'media_videojs'; // Full name of the plugin (used for diagnostics).