]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Refactored library. One file per videotype.
authorSem <sembrestels@riseup.net>
Thu, 10 Nov 2011 22:03:58 +0000 (23:03 +0100)
committerSem <sembrestels@riseup.net>
Thu, 10 Nov 2011 22:03:58 +0000 (23:03 +0100)
lib/bliptv.php [new file with mode: 0644]
lib/gisstv.php [new file with mode: 0644]
lib/metacafe.php [new file with mode: 0644]
lib/videolist.php
lib/vimeo.php [new file with mode: 0644]
lib/youtube.php [new file with mode: 0644]

diff --git a/lib/bliptv.php b/lib/bliptv.php
new file mode 100644 (file)
index 0000000..f4c0f77
--- /dev/null
@@ -0,0 +1,29 @@
+<?php
+
+function videolist_parseurl_bliptv($url) {
+       $parsed = parse_url($url);
+       $path = explode('/', $parsed['path']);
+
+       if ($parsed['host'] != 'blip.tv' || count($path) < 3) {
+               return false;
+       }
+       
+       return array(
+               'videotype' => 'bliptv',
+               'video_id' => $parsed['path'],
+       );
+}
+
+function videolist_get_data_bliptv($parsed){
+       $video_id = $parsed['video_id'];
+       
+       $buffer = file_get_contents('http://blip.tv'.$video_id.'?skin=rss');
+       $xml = new SimpleXMLElement($buffer);
+       
+       return array(
+               'title' => sanitize_string(current($xml->xpath('/rss/channel/item/title'))),
+               'description' => strip_tags(current($xml->xpath('/rss/channel/item/description'))),
+               'thumbnail' => sanitize_string(current($xml->xpath('/rss/channel/item/media:thumbnail/@url'))),
+               'embedurl' => sanitize_string(current($xml->xpath('/rss/channel/item/blip:embedUrl'))),
+       );
+}
diff --git a/lib/gisstv.php b/lib/gisstv.php
new file mode 100644 (file)
index 0000000..24e1134
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+function videolist_parseurl_gisstv($url) {
+       $parsed = parse_url($url);
+       $path = explode('/', $parsed['path']);
+
+       if ($parsed['host'] != 'giss.tv' || $path[1] != 'dmmdb') {
+               return false;
+       }
+       
+       if($path[2] == 'contents' && isset($path[3])) {
+               $video_id = $path[3];
+       } elseif($path[3] == 'contents' && isset($path[4])) {
+               $video_id = $path[4];
+       } else {
+               return false;
+       }
+       
+       return array(
+               'videotype' => 'gisstv',
+               'video_id' => $video_id,
+       );
+}
+
+function videolist_get_data_gisstv($parsed){
+       $video_id = $parsed['video_id'];
+       
+       $buffer = file_get_contents('http://giss.tv/dmmdb//rss.php');
+       $xml = new SimpleXMLElement($buffer);
+       
+       $data = array();
+       foreach($xml->xpath('/rss/channel/item') as $item){
+               if(sanitize_string($item->link) == 'http://giss.tv/dmmdb//contents/'.$video_id) {
+                       $data['title'] = sanitize_string($item->title);
+                       $data['description'] = strip_tags($item->description);
+                       $data['thumbnail'] = sanitize_string($item->thumbnail);
+                       break;
+               }
+       }
+       return $data;
+}
diff --git a/lib/metacafe.php b/lib/metacafe.php
new file mode 100644 (file)
index 0000000..34b006a
--- /dev/null
@@ -0,0 +1,29 @@
+<?php
+
+function videolist_parseurl_metacafe($url) {
+       $parsed = parse_url($url);
+       $path = explode('/', $parsed['path']);
+
+       if ($parsed['host'] != 'www.metacafe.com' || $path[1] != 'watch' || !(int) $path[2]) {
+               return false;
+       }
+       
+       return array(
+               'videotype' => 'metacafe',
+               'video_id' => $path[2],
+       );
+}
+
+function videolist_get_data_metacafe($parsed){
+       $video_id = $parsed['video_id'];
+       
+       $buffer = file_get_contents("http://www.metacafe.com/api/item/$video_id");
+       $xml = new SimpleXMLElement($buffer);
+       
+       return array(
+               'title' => sanitize_string(current($xml->xpath('/rss/channel/item/title'))),
+               'description' => strip_tags(current($xml->xpath('/rss/channel/item/description'))),
+               'thumbnail' => sanitize_string(current($xml->xpath('/rss/channel/item/media:thumbnail/@url'))),
+               'embedurl' => sanitize_string(current($xml->xpath('/rss/channel/item/media:content/@url'))),
+       );
+}
index c309167731b10f429d9a7ad99c0124c790f14d6a..2dfc7d8fc4bba0f0866a6d823539ed28c2905634 100644 (file)
 <?php
 
-function videolist_parseurl_youtube($url) {
-       $parsed = parse_url($url);
-       parse_str($parsed['query'], $query);
-       
-       if ($parsed['host'] != 'www.youtube.com' || $parsed['path'] != '/watch' || !isset($query['v'])) {
-               return false;
-       }
-       
-       return array(
-               'videotype' => 'youtube',
-               'video_id' => $query['v'],
-       );
-}
-
-function videolist_parseurl_vimeo($url) {
-       $parsed = parse_url($url);
-       $path = explode('/', $parsed['path']);
-       
-       if ($parsed['host'] != 'vimeo.com' || !(int) $path[1]) {
-               return false;
-       }
-
-       return array(
-               'videotype' => 'vimeo',
-               'video_id' => $path[1],
-       );
-}
-
-function videolist_parseurl_metacafe($url) {
-       $parsed = parse_url($url);
-       $path = explode('/', $parsed['path']);
-
-       if ($parsed['host'] != 'www.metacafe.com' || $path[1] != 'watch' || !(int) $path[2]) {
-               return false;
-       }
-       
-       return array(
-               'videotype' => 'metacafe',
-               'video_id' => $path[2],
-       );
-}
+define('VIDEOLIST_SUPPORTED_PLATFORMS', 'youtube, vimeo, metacafe, bliptv, gisstv');
 
-function videolist_parseurl_bliptv($url) {
-       $parsed = parse_url($url);
-       $path = explode('/', $parsed['path']);
-
-       if ($parsed['host'] != 'blip.tv' || count($path) < 3) {
-               return false;
-       }
-       
-       return array(
-               'videotype' => 'bliptv',
-               'video_id' => $parsed['path'],
-       );
-}
-
-function videolist_parseurl_gisstv($url) {
-       $parsed = parse_url($url);
-       $path = explode('/', $parsed['path']);
-
-       if ($parsed['host'] != 'giss.tv' || $path[1] != 'dmmdb') {
-               return false;
-       }
-       
-       if($path[2] == 'contents' && isset($path[3])) {
-               $video_id = $path[3];
-       } elseif($path[3] == 'contents' && isset($path[4])) {
-               $video_id = $path[4];
-       } else {
-               return false;
-       }
-       
-       return array(
-               'videotype' => 'gisstv',
-               'video_id' => $video_id,
-       );
+foreach(explode(', ', VIDEOLIST_SUPPORTED_PLATFORMS) as $videotype){
+       include(elgg_get_plugins_path()."videolist/lib/$videotype.php");
 }
 
 function videolist_parseurl($url){
-       if ($parsed = videolist_parseurl_youtube($url)) return $parsed;
-       elseif ($parsed = videolist_parseurl_vimeo($url)) return $parsed;
-       elseif ($parsed = videolist_parseurl_metacafe($url)) return $parsed;
-       elseif ($parsed = videolist_parseurl_bliptv($url)) return $parsed;
-       elseif ($parsed = videolist_parseurl_gisstv($url)) return $parsed;
-       else return array();
-}
-
-function videolist_get_data($video_parsed_url) {
-       $videotype = $video_parsed_url['videotype'];
-       $video_id = $video_parsed_url['video_id'];
-       switch($videotype){
-               case 'youtube': return videolist_get_data_youtube($video_id);
-               case 'vimeo': return videolist_get_data_vimeo($video_id);
-               case 'metacafe': return videolist_get_data_metacafe($video_id);
-               case 'bliptv': return videolist_get_data_bliptv($video_id);
-               case 'gisstv': return videolist_get_data_gisstv($video_id);
-               default: return array();
+       foreach(explode(', ', VIDEOLIST_SUPPORTED_PLATFORMS) as $videotype){
+               if (is_callable("videolist_parseurl_$videotype")){
+                       if ($parsed = call_user_func("videolist_parseurl_$videotype", $url)) {
+                               return $parsed;
+                       }
+               }
        }
+       return array();
 }
 
-
-function videolist_get_data_youtube($video_id){
-       $buffer = file_get_contents('http://gdata.youtube.com/feeds/api/videos/'.$video_id);
-       $xml = new SimpleXMLElement($buffer);
-       
-       return array(
-               'title' => sanitize_string($xml->title),
-               'description' => strip_tags($xml->content),
-               'thumbnail' => "http://img.youtube.com/vi/$video_id/default.jpg",
-               'video_id' => $video_id,
-               'videotype' => 'youtube',
-       );
-}
-
-function videolist_get_data_vimeo($video_id){
-       $buffer = file_get_contents("http://vimeo.com/api/v2/video/$video_id.xml");
-       $xml = new SimpleXMLElement($buffer);
-       
-       $videos = $xml->children();
-       $video = $videos[0];
-       
-       return array(
-               'title' => sanitize_string($video->title),
-               'description' => strip_tags($video->description),
-               'thumbnail' => sanitize_string($video->thumbnail_medium),
-               'video_id' => $video_id,
-               'videotype' => 'vimeo',
-       );
-}
-
-function videolist_get_data_metacafe($video_id){
-       $buffer = file_get_contents("http://www.metacafe.com/api/item/$video_id");
-       $xml = new SimpleXMLElement($buffer);
-       
-       return array(
-               'title' => sanitize_string(current($xml->xpath('/rss/channel/item/title'))),
-               'description' => strip_tags(current($xml->xpath('/rss/channel/item/description'))),
-               'thumbnail' => sanitize_string(current($xml->xpath('/rss/channel/item/media:thumbnail/@url'))),
-               'embedurl' => sanitize_string(current($xml->xpath('/rss/channel/item/media:content/@url'))),
-               'video_id' => $video_id,
-               'videotype' => 'metacafe',
-       );
-}
-
-function videolist_get_data_bliptv($video_id){
-       $buffer = file_get_contents('http://blip.tv'.$video_id.'?skin=rss');
-       $xml = new SimpleXMLElement($buffer);
+function videolist_get_data($parsed) {
+       $videotype = $parsed['videotype'];
+       $video_id = $parsed['video_id'];
        
-       return array(
-               'title' => sanitize_string(current($xml->xpath('/rss/channel/item/title'))),
-               'description' => strip_tags(current($xml->xpath('/rss/channel/item/description'))),
-               'thumbnail' => sanitize_string(current($xml->xpath('/rss/channel/item/media:thumbnail/@url'))),
-               'embedurl' => sanitize_string(current($xml->xpath('/rss/channel/item/blip:embedUrl'))),
-               'video_id' => $video_id,
-               'videotype' => 'bliptv',
-       );
-}
-
-function videolist_get_data_gisstv($video_id){
-       $buffer = file_get_contents('http://giss.tv/dmmdb//rss.php');
-       $xml = new SimpleXMLElement($buffer);
-       
-       $data = array();
-       foreach($xml->xpath('/rss/channel/item') as $item){
-               if(sanitize_string($item->link) == 'http://giss.tv/dmmdb//contents/'.$video_id) {
-                       $data['title'] = sanitize_string($item->title);
-                       $data['description'] = strip_tags($item->description);
-                       $data['thumbnail'] = sanitize_string($item->thumbnail);
-                       break;
-               }
+       if(is_callable("videolist_get_data_$videotype")){
+               return array_merge($parsed, call_user_func("videolist_get_data_$videotype", $parsed));
+       } else {
+               return $parsed;
        }
-       return array_merge($data, array(
-               'video_id' => $video_id,
-               'videotype' => 'gisstv',
-       ));
 }
diff --git a/lib/vimeo.php b/lib/vimeo.php
new file mode 100644 (file)
index 0000000..0433c5a
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+function videolist_parseurl_vimeo($url) {
+       $parsed = parse_url($url);
+       $path = explode('/', $parsed['path']);
+       
+       if ($parsed['host'] != 'vimeo.com' || !(int) $path[1]) {
+               return false;
+       }
+
+       return array(
+               'videotype' => 'vimeo',
+               'video_id' => $path[1],
+       );
+}
+
+function videolist_get_data_vimeo($parsed){
+       $video_id = $parsed['video_id'];
+       
+       $buffer = file_get_contents("http://vimeo.com/api/v2/video/$video_id.xml");
+       $xml = new SimpleXMLElement($buffer);
+       
+       $videos = $xml->children();
+       $video = $videos[0];
+       
+       return array(
+               'title' => sanitize_string($video->title),
+               'description' => strip_tags($video->description),
+               'thumbnail' => sanitize_string($video->thumbnail_medium),
+       );
+}
diff --git a/lib/youtube.php b/lib/youtube.php
new file mode 100644 (file)
index 0000000..6ed9344
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+
+function videolist_parseurl_youtube($url) {
+       $parsed = parse_url($url);
+       parse_str($parsed['query'], $query);
+       
+       if ($parsed['host'] != 'www.youtube.com' || $parsed['path'] != '/watch' || !isset($query['v'])) {
+               return false;
+       }
+       
+       return array(
+               'videotype' => 'youtube',
+               'video_id' => $query['v'],
+       );
+}
+
+function videolist_get_data_youtube($parsed){
+       $video_id = $parsed['video_id'];
+       
+       $buffer = file_get_contents('http://gdata.youtube.com/feeds/api/videos/'.$video_id);
+       $xml = new SimpleXMLElement($buffer);
+       
+       return array(
+               'title' => sanitize_string($xml->title),
+               'description' => strip_tags($xml->content),
+               'thumbnail' => "http://img.youtube.com/vi/$video_id/default.jpg",
+       );
+}