61a19422f482ff5a3c055d587df06ed63c145bed
[moodle.git] / media / player / vimeo / wsplayer.php
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
18 /**
19  * A script to embed vimeo videos via the site (so vimeo privacy restrictions by domain will work in the mobile app).
20  *
21  * The site is doing a double frame embedding:
22  *  - First, the media player replaces the vimeo link with an iframe pointing to vimeo.
23  *  - Second, the app replaces the previous iframe link with a link to this file that includes again the iframe to vimeo.
24  *  Thanks to these changes, the video is embedded in a page in the site server so the privacy restrictions will work.
25  *
26  *  Note 1: Vimeo privacy restrictions seems to be based on the Referer HTTP header.
27  *  Note 2: This script works even if the plugin is disabled (some users could be using the vimeo embedding code).
28  *
29  * @package    media_vimeo
30  * @copyright  2017 Juan Leyva
31  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
32  */
34 define('NO_MOODLE_COOKIES', true);
36 require_once(__DIR__ . '/../../../config.php');
37 require_once($CFG->dirroot . '/webservice/lib.php');
39 $token = required_param('token', PARAM_ALPHANUM);
40 $video = required_param('video', PARAM_ALPHANUM);   // Video ids are numeric, but it's more solid to expect things like 00001.
41 $width = required_param('width', PARAM_INT);
42 $height = required_param('height', PARAM_INT);
44 // Authenticate the user.
45 $webservicelib = new webservice();
46 $webservicelib->authenticate_user($token);
48 $output = <<<OET
49 <html>
50     <head>
51         <meta http-equiv="content-type" content="text/html; charset=utf-8" />
52     </head>
53     <body style="margin:0; padding:0">
54         <iframe src="https://player.vimeo.com/video/$video"
55             width="$width" height="$height" frameborder="0"
56             webkitallowfullscreen mozallowfullscreen allowfullscreen>
57         </iframe>
58     </body>
59 </html>
60 OET;
61 echo $output;