attribute['sg_video_type'] );
$url = $is_self_hosted ? esc_url( '#jkit_video_button_' . $this->unique_id ) : esc_url( $this->attribute['sg_video_url'] );
$class = 'jkit-video-popup-btn';
if ( 'yes' === $this->attribute['sg_video_glow_enable'] ) {
$class .= ' glow-enable';
}
$content = $this->render_content();
if ( 'gradient' === $this->attribute['st_button_normal_background_background_background'] || 'gradient' === $this->attribute['st_button_hover_background_background_background'] ) {
$class .= ' hover-gradient';
$content = '' . $content . '';
}
$content = $this->render_url_element(
array(
'url' => $url,
'is_external' => 'off',
'nofollow' => 'off',
'custom_attributes' => '',
),
null,
$class,
$content,
'aria-label="video-button"'
);
$data_attr = $this->render_data();
if ( $is_self_hosted ) {
$content .= $this->render_self_hosted_video( $data_attr );
}
return $this->render_wrapper( 'video-button', $content, array(), $data_attr );
}
/**
* Render self hosted video
*
* @return mixed
*/
private function render_self_hosted_video( $data_attr ) {
$video_metadata = wp_get_attachment_metadata( $this->attribute['sg_video_hosted']['id'] );
$video_attr = sprintf(
'%s %s %s %s %s %s %s %s',
$data_attr['autoplay'] ? 'autoplay' : '',
$data_attr['controls'] ? 'controls' : '',
$data_attr['loop'] ? 'loop' : '',
$data_attr['mute'] ? 'muted' : '',
isset( $video_metadata['height'] ) ? 'height=' . esc_attr( $video_metadata['height'] ) : '',
isset( $video_metadata['width'] ) ? 'width=' . esc_attr( $video_metadata['width'] ) : '',
( isset( $this->attribute['sg_video_hosted']['url'] ) && ! empty( $this->attribute['sg_video_hosted']['url'] ) ) ? 'src=' . esc_url( $this->attribute['sg_video_hosted']['url'] ) : '',
( isset( $this->attribute['sg_video_hosted_poster']['url'] ) && ! empty( $this->attribute['sg_video_hosted_poster']['url'] ) ) ? 'poster=' . esc_attr( $this->attribute['sg_video_hosted_poster']['url'] ) : ''
);
$video = '';
$content = '' . $video . '';
return $content;
}
/**
* Render content
*
* @return mixed
*/
private function render_content() {
$icon = null;
$text = null;
$content = null;
$button_type = $this->attribute['sg_video_button_style'];
$icon_enable = $this->attribute['sg_video_button_icon_enable'];
$position = $this->attribute['sg_video_button_icon_position'];
if ( ( 'icon' === $button_type || 'both' === $button_type ) && 'yes' === $icon_enable ) {
$icon = $this->render_icon_element( $this->attribute['sg_video_button_icon'] );
}
if ( ( 'text' === $button_type || 'both' === $button_type ) ) {
$text = '' . esc_attr( $this->attribute['sg_video_button_title'] ) . '';
}
if ( 'both' === $button_type && 'before' === $position ) {
$content = $icon . $text;
} else {
$content = $text . $icon;
}
$content = '' . $content . '';
return $content;
}
/**
* Get URL with parameters
*
* @return string
*/
private function render_data() {
$type = $this->attribute['sg_video_type'];
$data = array(
'autoplay' => 'yes' === $this->attribute['sg_video_auto_play'] ? '1' : '0',
'loop' => 'yes' === $this->attribute['sg_video_loop'] ? '1' : '0',
'controls' => 'yes' === $this->attribute['sg_video_player_control'] ? '1' : '0',
'type' => $type,
'mute' => 'yes' === $this->attribute['sg_video_mute'] ? '1' : '0',
);
if ( 'youtube' === $type ) {
$data['start'] = esc_attr( $this->attribute['sg_video_start_time'] ) ? '1' : '0';
$data['end'] = esc_attr( $this->attribute['sg_video_end_time'] ) ? '1' : '0';
} else {
$data['title'] = 'yes' === $this->attribute['sg_video_intro_title'] ? '1' : '0';
$data['portrait'] = 'yes' === $this->attribute['sg_video_intro_portrait'] ? '1' : '0';
$data['byline'] = 'yes' === $this->attribute['sg_video_intro_byline'] ? '1' : '0';
$data['unique-id'] = 'jkit_video_button_' . esc_attr( $this->unique_id );
}
return $data;
}
}