From f41f61f2e2a56460035d60e75cfe670fb116b073 Mon Sep 17 00:00:00 2001 From: romanlesnikov Date: Wed, 25 Sep 2024 10:59:49 +0300 Subject: [PATCH] #4558 - Build-in API support (fix YouTube url processing) --- inc/classes/BxDolEmbed.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/inc/classes/BxDolEmbed.php b/inc/classes/BxDolEmbed.php index 3880b9efd7..37c2e4cbe7 100644 --- a/inc/classes/BxDolEmbed.php +++ b/inc/classes/BxDolEmbed.php @@ -83,6 +83,7 @@ public function addJsCss () public function getData ($sUrl, $sTheme) { + $sUrl = $this->cleanYoutubeUrl($sUrl); $sData = BxDolEmbedQuery::getLocal($sUrl, $sTheme, $this->_sTableName); if(!$sData) { $sData = $this->getDataFromApi($sUrl, $sTheme); @@ -97,6 +98,26 @@ public function getDataFromApi ($sUrl, $sTheme) { // override this function in particular embed provider class } + + function cleanYoutubeUrl($url) { + $parsedUrl = parse_url($url); + if (isset($parsedUrl['host']) && $parsedUrl['host'] === 'youtu.be') { + if (isset($parsedUrl['query'])) { + parse_str($parsedUrl['query'], $queryParams); + if (isset($queryParams['si'])) { + unset($queryParams['si']); + } + $queryString = http_build_query($queryParams); + $cleanUrl = $parsedUrl['scheme'] . '://' . $parsedUrl['host'] . $parsedUrl['path']; + if (!empty($queryString)) { + $cleanUrl .= '?' . $queryString; + } + return $cleanUrl; + } + return $url; + } + return $url; + } } /** @} */