115 lines
4.1 KiB
PHP
115 lines
4.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Popup Player.
|
|
*
|
|
* @link https://plugins360.com
|
|
* @since 3.5.0
|
|
*
|
|
* @package All_In_One_Video_Gallery
|
|
*/
|
|
|
|
// Exit if accessed directly
|
|
if ( ! defined( 'WPINC' ) ) {
|
|
die;
|
|
}
|
|
|
|
/**
|
|
* AIOVG_Player_Popup class.
|
|
*
|
|
* @since 3.5.0
|
|
*/
|
|
class AIOVG_Player_Popup extends AIOVG_Player_Base {
|
|
|
|
/**
|
|
* Get things started.
|
|
*
|
|
* @since 3.5.0
|
|
* @param int $post_id Post ID.
|
|
* @param array $args Player options.
|
|
* @param int $player_uid Player unique ID.
|
|
*/
|
|
public function __construct( $post_id, $args, $player_uid ) {
|
|
parent::__construct( $post_id, $args, $player_uid, 'popup' );
|
|
}
|
|
|
|
/**
|
|
* Get the player HTML.
|
|
*
|
|
* @since 3.5.0
|
|
* @return string $html Player HTML.
|
|
*/
|
|
public function get_player() {
|
|
$player_settings = $this->get_player_settings();
|
|
$general_settings = aiovg_get_option( 'aiovg_general_settings' );
|
|
|
|
$lazyloading = ! empty( $general_settings['lazyloading'] ) ? 'loading="lazy" ' : '';
|
|
$popup_content = __( 'Open Popup', 'all-in-one-video-gallery' );
|
|
$is_image = 0;
|
|
|
|
if ( ! isset( $this->args['content'] ) ) {
|
|
$poster = $this->get_poster();
|
|
|
|
if ( ! empty( $poster ) ) {
|
|
$popup_content = sprintf( '<img src="%s" alt="" %s/>', esc_url( $poster ), $lazyloading );
|
|
$is_image = 1;
|
|
}
|
|
} else {
|
|
$popup_content = trim( (string) $this->args['content'] );
|
|
|
|
if ( $popup_content && filter_var( $popup_content, FILTER_VALIDATE_URL ) ) {
|
|
$parsed = wp_parse_url( $popup_content );
|
|
|
|
// Allow only http / https URLs
|
|
if ( isset( $parsed['scheme'] ) && in_array( $parsed['scheme'], array( 'http', 'https' ) ) ) {
|
|
$popup_content = sprintf( '<img src="%s" alt="" %s/>', esc_url( $popup_content ), $lazyloading );
|
|
$is_image = 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( $is_image ) {
|
|
$icon = '<svg xmlns="http://www.w3.org/2000/svg" fill="white" width="40" height="40" viewBox="0 0 24 24" class="aiovg-svg-icon-play aiovg-flex-shrink-0">
|
|
<path fill-rule="evenodd" d="M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm14.024-.983a1.125 1.125 0 0 1 0 1.966l-5.603 3.113A1.125 1.125 0 0 1 9 15.113V8.887c0-.857.921-1.4 1.671-.983l5.603 3.113Z" clip-rule="evenodd" />
|
|
</svg>';
|
|
|
|
if ( $this->post_id > 0 && 'aiovg_videos' == $this->post_type ) {
|
|
if ( ! $this->has_access && ! $this->is_trailer ) {
|
|
$icon = '<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="32" height="32" viewBox="0 0 50 50" class="aiovg-svg-icon-locked aiovg-flex-shrink-0">
|
|
<path d="M 25 3 C 18.363281 3 13 8.363281 13 15 L 13 20 L 9 20 C 7.300781 20 6 21.300781 6 23 L 6 47 C 6 48.699219 7.300781 50 9 50 L 41 50 C 42.699219 50 44 48.699219 44 47 L 44 23 C 44 21.300781 42.699219 20 41 20 L 37 20 L 37 15 C 37 8.363281 31.636719 3 25 3 Z M 25 5 C 30.566406 5 35 9.433594 35 15 L 35 20 L 15 20 L 15 15 C 15 9.433594 19.433594 5 25 5 Z M 25 30 C 26.699219 30 28 31.300781 28 33 C 28 33.898438 27.601563 34.6875 27 35.1875 L 27 38 C 27 39.101563 26.101563 40 25 40 C 23.898438 40 23 39.101563 23 38 L 23 35.1875 C 22.398438 34.6875 22 33.898438 22 33 C 22 31.300781 23.300781 30 25 30 Z"></path>
|
|
</svg>';
|
|
}
|
|
}
|
|
|
|
$popup_content .= $icon;
|
|
}
|
|
|
|
// Enqueue dependencies
|
|
wp_enqueue_style( AIOVG_PLUGIN_SLUG . '-magnific-popup' );
|
|
if ( $is_image ) wp_enqueue_style( AIOVG_PLUGIN_SLUG . '-public' );
|
|
wp_enqueue_style( AIOVG_PLUGIN_SLUG . '-premium-public' );
|
|
|
|
wp_enqueue_script( AIOVG_PLUGIN_SLUG . '-magnific-popup' );
|
|
wp_enqueue_script( AIOVG_PLUGIN_SLUG . '-template-popup' );
|
|
|
|
// Process output
|
|
$this->args['autoplay'] = 1;
|
|
$this->embed_url = aiovg_get_player_page_url( $this->post_id, $this->args );
|
|
|
|
$classes = array();
|
|
$classes[] = 'aiovg-video-template-popup';
|
|
if ( $is_image ) $classes[] = 'aiovg-is-image';
|
|
|
|
$html = sprintf(
|
|
'<a href="javascript: void(0);" class="%s" data-mfp-src="%s" data-player_ratio="%s">%s</a>',
|
|
implode( ' ', $classes ),
|
|
esc_url( $this->embed_url ),
|
|
(float) $player_settings['ratio'],
|
|
$popup_content
|
|
);
|
|
|
|
return $html;
|
|
}
|
|
|
|
}
|