acf
This commit is contained in:
98
plugins/system/nrframework/NRFramework/Helpers/Video.php
Normal file
98
plugins/system/nrframework/NRFramework/Helpers/Video.php
Normal file
@ -0,0 +1,98 @@
|
||||
<?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]+)/';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user