Skip to content
Snippets Groups Projects
Select Git revision
  • 364472866e9ee0e2aa84ab215c27be9c5e422511
  • master default protected
  • hsh-v4.4-r1
  • hsh_3.10
4 results

filter.php

  • filter.php 6.69 KiB
    <?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/>.
    
    /**
     *  Opencast filtering
     *
     *  This filter will replace any links to opencast videos with the selected player from opencast.
     *
     * @package    filter_opencast
     * @copyright  2018 Tamara Gunkel
     * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
     */
    
    
    use mod_opencast\local\paella_transform;
    
    defined('MOODLE_INTERNAL') || die();
    
    /**
     * Automatic opencast videos filter class.
     *
     * @package    filter_opencast
     * @copyright  2018 Tamara Gunkel
     * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
     */
    class filter_opencast extends moodle_text_filter
    {
    
        /**
         * Replaces Opencast videos embedded in <video> tags by the paella player.
         * @param string $text
         * @param array $options
         * @return array|mixed|string|string[]|null
         * @throws dml_exception
         */
        public function filter($text, array $options = array()) {
            global $CFG, $PAGE;
            $i = 0;
    
            if (stripos($text, '</video>') === false) {
                // Performance shortcut - if there is no </video> tag, nothing can match.
                return $text;
            }
    
            foreach (\tool_opencast\local\settings_api::get_ocinstances() as $ocinstance) {
                $episodeurl = get_config('filter_opencast', 'episodeurl_' . $ocinstance->id);
                if (!$episodeurl) {
                    continue;
                }
    
                $urlparts = parse_url($episodeurl);
                $baseurl = $urlparts['scheme'] . '://' . $urlparts['host'];
                if (isset($urlparts['port'])) {
                    $baseurl .= $urlparts['port'];
                }
    
                if (empty($episodeurl) || stripos($text, $baseurl) === false) {