oont-contents/plugins/jetpack/jetpack_vendor/automattic/jetpack-videopress/src/class-utils.php
2025-02-08 15:10:23 +01:00

80 lines
2.5 KiB
PHP

<?php
/**
* The Utils class.
*
* @package automattic/jetpack-videopress
*/
namespace Automattic\Jetpack\VideoPress;
/**
* The Utils class.
*/
class Utils {
/**
* Build a VideoPress video URL based on the guid and block attributes.
*
* @param string $guid - Video GUID.
* @param array $attributes - Video block attributes. Default is an empty array.
*
* @return string VideoPress video URL with the specified attributes.
*/
public static function get_video_press_url( $guid, $attributes = array() ) {
if ( ! $guid ) {
return null;
}
$video_press_url_options = wp_parse_args(
$attributes,
array(
'autoplay' => false,
'controls' => true,
'loop' => false,
'muted' => false,
'playsinline' => false,
'poster' => '',
'preload' => 'metadata',
'seekbarColor' => '',
'seekbarPlayedColor' => '',
'seekbarLoadingColor' => '',
'useAverageColor' => true,
)
);
$query_args = array(
'resizeToParent' => 1,
'cover' => 1,
'autoPlay' => (int) $video_press_url_options['autoplay'],
'controls' => (int) $video_press_url_options['controls'],
'loop' => (int) $video_press_url_options['loop'],
'muted' => (int) $video_press_url_options['muted'],
'persistVolume' => $video_press_url_options['muted'] ? 0 : 1,
'playsinline' => (int) $video_press_url_options['playsinline'],
'preloadContent' => $video_press_url_options['preload'],
'sbc' => $video_press_url_options['seekbarColor'],
'sbpc' => $video_press_url_options['seekbarPlayedColor'],
'sblc' => $video_press_url_options['seekbarLoadingColor'],
'useAverageColor' => (int) $video_press_url_options['useAverageColor'],
);
if ( ! empty( $video_press_url_options['poster'] ) ) {
$query_args['posterUrl'] = rawurlencode( $video_press_url_options['poster'] );
}
$url = 'https://videopress.com/v/' . $guid;
return add_query_arg( $query_args, $url );
}
/**
* Determines if a given URL is a VideoPress URL.
*
* @since x.x.x
*
* @param string $url The URL to check.
* @return bool True if the URL is a VideoPress URL, false otherwise.
*/
public static function is_videopress_url( $url ) {
$pattern = '/^https?:\/\/(?:(?:v(?:ideo)?\.wordpress\.com|videopress\.com)\/(?:v|embed)|v\.wordpress\.com)\/([a-z\d]{8})(\/|\b)/i'; // phpcs:ignore WordPress.WP.CapitalPDangit.MisspelledInText
return (bool) preg_match( $pattern, $url );
}
}