]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Handle shortened Youtube URLs
authorSteve Clay <steve@mrclay.org>
Tue, 10 Apr 2012 13:51:45 +0000 (09:51 -0400)
committerSteve Clay <steve@mrclay.org>
Tue, 10 Apr 2012 13:51:45 +0000 (09:51 -0400)
lib/Videolist/Platform/Youtube.php

index 41c7d1252a2bdc391b7b0382e9509a14648ca278..648ac282cc76da3483bf36f4c6a589297f88a50b 100644 (file)
@@ -10,16 +10,28 @@ class Videolist_Platform_Youtube implements Videolist_PlatformInterface
     public function parseUrl($url)
     {
         $parsed = parse_url($url);
-        parse_str($parsed['query'], $query);
-
-        if ($parsed['host'] != 'www.youtube.com' || $parsed['path'] != '/watch' || !isset($query['v'])) {
-            return false;
+        $id = '';
+        if (! empty($parsed['host'])) {
+            if ($parsed['host'] === 'youtu.be') {
+                // short URLs
+                $id = substr($parsed['path'], 1);
+            } elseif ($parsed['host'] === 'www.youtube.com'
+                    && $parsed['path'] === '/watch'
+                    && ! empty($parsed['query'])) {
+                // long URLs
+                parse_str($parsed['query'], $query);
+                if (! empty($query['v'])) {
+                    $id = $query['v'];
+                }
+            }
         }
-
-        return array(
-            'videotype' => 'youtube',
-            'video_id' => $query['v'],
-        );
+        if ($id) {
+            return array(
+                'videotype' => 'youtube',
+                'video_id' => $id,
+            );
+        }
+        return false;
     }
 
     public function getData($parsed)