From 4f0775f3663f07c22b577a315cf3d76e6404a2f1 Mon Sep 17 00:00:00 2001 From: Aaron Krug Date: Thu, 29 Oct 2015 21:23:08 -0400 Subject: [PATCH] Added support for all the Vimeo URL formats Added support for the multilple formats that Vimeo has for their URLs, i.e. https://vimeo.com/channels/11111111, https://vimeo.com/channels/mychannel/11111111, https://vimeo.com/11111111?param=test, etc --- .../third_party/videolink/ft.videolink.php | 7 ++++--- themes/third_party/videolink/js/videolink.js | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/system/expressionengine/third_party/videolink/ft.videolink.php b/system/expressionengine/third_party/videolink/ft.videolink.php index 22a7c1d..7d80505 100644 --- a/system/expressionengine/third_party/videolink/ft.videolink.php +++ b/system/expressionengine/third_party/videolink/ft.videolink.php @@ -360,16 +360,17 @@ function build_embed_youtube($url, $width = NULL, $height = NULL, $params) } function is_vimeo($url) { - return preg_match("/^\s*https?:\/\/vimeo\.com\/[0-9]+/", $url); + return preg_match("/https?:\/\/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|video\/|)(\d+)(?:$|\/|\?)/", $url); } function parse_vimeo($url) { $parsed = parse_url($url); - $key = substr($parsed['path'], 1); + $key = explode("/", $parsed['path']); + $key = explode("?", end($key)); return array( 'service' => 'vimeo', - 'key' => $key + 'key' => $key[0] ); } diff --git a/themes/third_party/videolink/js/videolink.js b/themes/third_party/videolink/js/videolink.js index 8c7f911..dc232aa 100644 --- a/themes/third_party/videolink/js/videolink.js +++ b/themes/third_party/videolink/js/videolink.js @@ -50,9 +50,9 @@ jQuery(function($) { var vimeo = { name: 'Vimeo', getCode: function(url) { - var parse = url.match(/https?:\/\/vimeo.com\/([0-9]+)/); - if (parse && parse[1]) { - return parse[1]; + var parse = url.match(/https?:\/\/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|video\/|)(\d+)(?:$|\/|\?)/); + if (parse && parse[parse.length-1]) { + return parse[parse.length-1]; } }, getData: function(code, callback) {