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