externalvideo: Added support for various media sources
[mahara:mahara.git] / htdocs / blocktype / externalvideo / media_sources / scivee / mediasource.php
1 <?php
2
3 require_once(dirname(__FILE__) . '/../Media_base.php');
4
5 class Media_scivee implements MediaBase {
6
7     private static $base_url = 'http://scivee.tv/';
8
9     private static $default_width  = 480;
10     private static $default_height = 400;
11
12     private static $embed_sources  = array(
13         array(
14             'match' => '#.*scivee\.tv/node/([0-9]+).*#',
15             'url'   => 'http://scivee.tv/flash/embedPlayer.swf?id=$1&type=3',
16         ),
17         array(
18             'match' => '#.*scivee\.tv.*id=([0-9]+).*#',
19             'url'   => 'http://scivee.tv/flash/embedPlayer.swf?id=$1&type=3',
20         ),
21     );
22
23     public function process_url($input, $width=0, $height=0) {
24         $width  = $width  ? (int)$width  : self::$default_width;
25         $height = $height ? (int)$height : self::$default_height;
26
27         foreach (self::$embed_sources as $source) {
28             if (preg_match($source['match'], $input)) {
29                 $output = preg_replace($source['match'], $source['url'], $input);
30                 $result = array(
31                     'videoid' => $output,
32                     'type'    => 'embed',
33                     'width'   => $width,
34                     'height'  => $height,
35                 );
36                 return $result;
37             }
38         }
39         return false;
40     }
41
42     public function validate_url($input) {
43         foreach (self::$embed_sources as $source) {
44             if (preg_match($source['match'], $input)) {
45                 return true;
46             }
47         }
48         return false;
49     }
50
51     public function get_base_url() {
52         return self::$base_url;
53     }
54 }