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