320 ) {
$maxwidth = 320;
}
return $maxwidth;
}
function arg_mode( string $mode ): string {
if ( 'lazyload-lightbox' === $mode ) {
$mode = 'lightbox';
}
if ( 'thumbnail' === $mode ) {
$mode = 'lazyload';
}
if ( 'normal' !== $mode
&& ! function_exists( 'Nextgenthemes\ARVE\Pro\register_assets' )
) {
$err_msg = sprintf(
// Translators: Mode
__( 'Mode: %s not available (ARVE Pro not active?), switching to normal mode', 'advanced-responsive-video-embedder' ),
$mode
);
arve_errors()->add( 'mode-not-avail', $err_msg );
$mode = 'normal';
}
return $mode;
}
function compare_oembed_src_with_generated_src( string $src, string $src_gen, string $provider, string $url ): void {
$options = options();
$always = 'cli' === PHP_SAPI || 'always' === $options['show_src_mismatch_errors'];
$dev_mode_only = is_dev_mode() && 'dev-mode' === $options['show_src_mismatch_errors'];
if ( empty( $src )
|| empty( $src_gen )
|| ! ( $always || $dev_mode_only )
) {
return;
}
$org_src = $src;
$org_src_gen = $src_gen;
switch ( $provider ) {
case 'vimeo':
$src = remove_query_arg( 'app_id', $src );
$src = remove_query_arg( 'dnt', $src );
$src_gen = remove_query_arg( 'dnt', $src_gen );
break;
case 'wistia':
$src = remove_url_query( $src );
$src_gen = remove_url_query( $src_gen );
break;
case 'youtube':
$src = remove_query_arg( 'feature', $src );
$src = remove_query_arg( 'origin', $src );
$src = remove_query_arg( 'enablejsapi', $src );
$src = remove_query_arg( 'width', $src );
$src = remove_query_arg( 'height', $src );
$src = remove_query_arg( 'discover', $src );
break;
case 'dailymotion':
$src = remove_query_arg( 'pubtool', $src );
break;
}
if ( $src !== $src_gen ) {
$l = 13;
$msg = 'src mismatch
' . PHP_EOL;
$msg .= '
' . PHP_EOL;
$msg .= str_pad( 'provider:', $l, ' ' ) . esc_html( $provider ) . '
';
$msg .= str_pad( 'url:', $l, ' ' ) . esc_url( $url ) . '
';
$msg .= str_pad( 'src:', $l, ' ' ) . esc_url( $org_src ) . '
';
if ( $src !== $org_src ) {
$msg .= str_pad( 'src mod:', $l, ' ' ) . esc_url( $src ) . '
';
}
if ( $src_gen !== $org_src_gen ) {
$msg .= str_pad( 'src gen mod:', $l, ' ' ) . esc_url( $src_gen ) . '
';
}
$msg .= str_pad( 'src gen:', $l, ' ' ) . esc_url( $org_src_gen ) . '
';
$msg .= '
';
arve_errors()->add( 'src-mismatch', $msg );
}
}
function height_from_width_and_ratio( int $width, ?string $ratio ): float {
if ( empty( $ratio ) ) {
return 0;
}
list( $old_width, $old_height ) = explode( ':', $ratio, 2 );
return new_height( (float) $old_width, (float) $old_height, $width );
}
/**
* @param array $a
*
* @return array
*/
function args_video( array $a ): array {
foreach ( VIDEO_FILE_EXTENSIONS as $ext ) {
if ( ! empty( $a[ $ext ] ) && is_numeric( $a[ $ext ] ) ) {
$a[ $ext ] = wp_get_attachment_url( (int) $a[ $ext ] );
}
}
return $a;
}
/**
* Generate the URL with autoplay parameter based on the provider.
*
* @param string $src The source URL of the iframe.
* @param string $provider The provider of the iframe.
* @param bool $autoplay The autoplay flag.
* @return string The modified URL with autoplay parameter.
*/
function iframesrc_urlarg_autoplay( string $src, string $provider, bool $autoplay ): string {
switch ( $provider ) {
case 'alugha':
case 'archiveorg':
case 'dailymotion':
case 'dailymotionlist':
case 'facebook':
case 'vevo':
case 'viddler':
case 'vimeo':
case 'youtube':
case 'youtubelist':
return $autoplay ?
add_query_arg( 'autoplay', 1, $src ) :
add_query_arg( 'autoplay', 0, $src );
case 'rumble':
return $autoplay ?
add_query_arg( 'autoplay', 2, $src ) :
add_query_arg( 'autoplay', 0, $src );
case 'twitch':
case 'ustream':
return $autoplay ?
add_query_arg( 'autoplay', 'true', $src ) :
add_query_arg( 'autoplay', 'false', $src );
case 'livestream':
case 'wistia':
return $autoplay ?
add_query_arg( 'autoPlay', 'true', $src ) :
add_query_arg( 'autoPlay', 'false', $src );
case 'metacafe':
return $autoplay ?
add_query_arg( 'ap', 1, $src ) :
remove_query_arg( 'ap', $src );
case 'gab':
return $autoplay ?
add_query_arg( 'autoplay', 'on', $src ) :
remove_query_arg( 'autoplay', $src );
case 'brightcove':
case 'snotr':
return $autoplay ?
add_query_arg( 'autoplay', 1, $src ) :
remove_query_arg( 'autoplay', $src );
case 'kick':
case 'yahoo':
return $autoplay ?
add_query_arg( 'autoplay', 'true', $src ) :
add_query_arg( 'autoplay', 'false', $src );
default:
// Do nothing for providers that to not support autoplay or fail with parameters
return $src;
case 'MAYBEiframe':
return $autoplay ?
add_query_arg(
array(
'ap' => '1',
'autoplay' => '1',
'autoStart' => 'true',
'player_autoStart' => 'true',
),
$src
) :
add_query_arg(
array(
'ap' => '0',
'autoplay' => '0',
'autoStart' => 'false',
'player_autoStart' => 'false',
),
$src
);
}
}
function get_video_type( string $ext ): string {
switch ( $ext ) {
case 'ogv':
case 'ogm':
return 'video/ogg';
case 'av1mp4':
return 'video/mp4; codecs=av01.0.05M.08';
case 'mp4':
return 'video/mp4';
case 'webm':
return 'video/webm';
default:
return 'video/x-' . $ext;
}
}
function iframesrc_urlarg_enablejsapi( string $src, string $provider ): string {
if ( function_exists( __NAMESPACE__ . '\Pro\init' ) && 'youtube' === $provider ) {
$src = add_query_arg( array( 'enablejsapi' => 1 ), $src );
}
return $src;
}
function iframesrc_urlargs( string $src, string $provider, string $mode, string $parameters ): string {
$options = options();
$parameters = wp_parse_args( preg_replace( '!\s+!', '&', $parameters ) );
$params_options = array();
if ( ! empty( $options[ 'url_params_' . $provider ] ) ) {
$params_options = wp_parse_args( preg_replace( '!\s+!', '&', $options[ 'url_params_' . $provider ] ) );
}
$parameters = wp_parse_args( $parameters, $params_options );
$src = add_query_arg( $parameters, $src );
if ( 'youtube' === $provider && in_array( $mode, array( 'lightbox', 'link-lightbox' ), true ) ) {
$src = add_query_arg( 'playsinline', '1', $src );
}
if ( 'twitch' === $provider ) {
$domain = wp_parse_url( home_url(), PHP_URL_HOST );
$src = add_query_arg( 'parent', $domain, $src );
}
return $src;
}
/**
* @return array
*/
function shortcode_pairs(): array {
$pairs = array();
$options = options();
$settings = settings( 'shortcode' )->get_all();
foreach ( $settings as $k => $setting ) {
if ( $setting->option ) {
$pairs[ $k ] = $options[ $k ];
} else {
$pairs[ $k ] = $setting->default;
}
}
$pairs = array_merge(
$pairs,
array(
'id' => '',
'provider' => '',
'img_srcset' => '',
'maxwidth' => 0, # Overwriting the option value ON PURPOSE here, see arg_maxwidth
'av1mp4' => '',
'mp4' => '',
'm4v' => '',
'webm' => '',
'ogv' => '',
'account_id' => '',
'iframe_name' => '',
'brightcove_player' => '',
'brightcove_embed' => '',
'video_sources_html' => '',
'post_id' => '',
'thumbnail_fallback' => '', # Pro
'oembed_data' => null,
'origin_data' => array(),
)
);
for ( $n = 1; $n <= NUM_TRACKS; $n++ ) {
$pairs[ "track_{$n}" ] = '';
$pairs[ "track_{$n}_label" ] = '';
}
return apply_filters( 'nextgenthemes/arve/shortcode_pairs', $pairs );
}