Files
conservatorio-tomadini/plugins/system/nrframework/NRFramework/Helpers/Video.php
2024-12-31 11:07:09 +01:00

98 lines
2.0 KiB
PHP

<?php
/**
* @author Tassos Marinos <info@tassos.gr>
* @link https://www.tassos.gr
* @copyright Copyright © 2024 Tassos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
namespace NRFramework\Helpers;
defined('_JEXEC') or die;
class Video
{
/**
* Returns the Video URL details.
*
* Supported platforms:
* - YouTube
* - Vimeo
*
* @param string $url
*
* @return array
*/
public static function getDetails($url)
{
$id = '';
$provider = '';
if (preg_match(self::getYouTubePattern(), $url, $matches))
{
$id = !empty($matches[1]) ? $matches[1] : $matches[2];
$provider = 'youtube';
}
else if (preg_match(self::getVimeoPattern(), $url, $matches))
{
$id = !empty($matches[1]) ? $matches[1] : null;
$provider = 'vimeo';
}
else if (preg_match(self::getFacebookVideoPattern(), $url))
{
$id = $url;
$provider = 'facebookvideo';
}
else if (preg_match(self::getDailymotionPattern(), $url, $matches))
{
$id = end($matches);
$provider = 'dailymotion';
}
return [
'id' => $id,
'provider' => $provider
];
}
/**
* Get YouTube Pattern.
*
* @return string
*/
public static function getYouTubePattern()
{
return '/^https?:\/\/(?:m\.|www\.)?youtube\.com\/(?:watch\?v=|embed\/|shorts\/)?([a-zA-Z0-9_-]{11})|^https?:\/\/youtu\.be\/([a-zA-Z0-9_-]{11})/';
}
/**
* Get Vimeo Pattern.
*
* @return string
*/
public static function getVimeoPattern()
{
return '/^https?:\/\/(?:www\.)?(?:player\.)?vimeo\.com\/(\d+)/';
}
/**
* Get Facebook Video Pattern.
*
* @return string
*/
public static function getFacebookVideoPattern()
{
return '/^(?:(?:https?:)?\/\/)?(?:www\.)?facebook\.com\/(?:watch\/\?v=|[\w\.]+\/videos\/(?:[\w\.]+\/)?)?(\d+)/';
}
/**
* Get Dailymotion Pattern.
*
* @return string
*/
public static function getDailymotionPattern()
{
return '/(?:dailymotion\.com\/(?:video|hub)\/|dai\.ly\/)([a-zA-Z0-9]+)/';
}
}