HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /var/www/ippmt.kauko.lt/wp-content/plugins/embedpress/Gutenberg/block-backend/block-embedpress.php
<?php

use EmbedPress\Includes\Classes\Helper;

// Exit if accessed directly.
if (!defined('ABSPATH')) {
	exit;
}
/**
 * It renders gutenberg block of embedpress on the frontend
 * @param array $attributes
 */

if(!function_exists('lock_content_form_handler')){
	add_action('wp_ajax_lock_content_form_handler', 'lock_content_form_handler');
	add_action('wp_ajax_nopriv_lock_content_form_handler', 'lock_content_form_handler');

	function lock_content_form_handler() {
		// print_r($embedHTML);

		$client_id = isset($_POST['client_id']) ? sanitize_text_field($_POST['client_id']) : '';
		$password = isset($_POST['password']) ? sanitize_text_field($_POST['password']) : '';
		$post_id = isset($_POST['post_id']) ? absint($_POST['post_id']) : 0;
		
		$epbase64 = get_post_meta( $post_id, 'ep_base_' .$client_id, true );	
		$hash_key = get_post_meta( $post_id, 'hash_key_' .$client_id, true  );

		// Set the decryption key and initialization vector (IV)
		$key = Helper::get_hash();

		// Decode the base64 encoded cipher
		$cipher = base64_decode($epbase64);
		// Decrypt the cipher using AES-128-CBC encryption

		$wp_pass_key = hash('sha256', wp_salt(32) . md5($password));
		$iv = substr($wp_pass_key, 0, 16);

		if ($wp_pass_key === $hash_key) {
			setcookie("password_correct_", $password, time()+3600);

			$embed = openssl_decrypt($cipher, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv) . '<script>
			var now = new Date();
			var time = now.getTime();
			var expireTime = time + 1000 * 60 * 60 * 24 * 30;
			now.setTime(expireTime);
			document.cookie = "password_correct_'.esc_js($client_id).'='.esc_js($hash_key).'; expires=" + now.toUTCString() + "; path=/";
		</script>';

		}
		else{
			$embed = 0;
		}

		// Process the form data and return a response
		$response = array(
		'success' => true,
		'password' => $password,
		'embedHtml' => $embed,
		'post_id' => $post_id
		);

		wp_send_json($response);

	}
}

if (!function_exists('has_content_allowed_roles')) {
    function has_content_allowed_roles($allowed_roles = []) {
        if ((count($allowed_roles) === 1 && empty($allowed_roles[0]))) {
            return true;
        }

        $current_user = wp_get_current_user();
        $user_roles = $current_user->roles;

        return !empty(array_intersect($user_roles, $allowed_roles));
    }
}

function embedpress_block_scripts($attributes) {

	$script_handles = [];

	if(!empty($attributes['customPlayer'])){
		$script_handles[] = 'plyr.polyfilled';
		$script_handles[] = 'initplyr';
		$script_handles[] = 'vimeo-player';
	}
	
	$script_handles[] = 'embedpress-google-photos-album';
	$script_handles[] = 'embedpress-front';

	if(!empty($attributes['adManager'])){
		$script_handles[] = 'embedpress-ads';
	}

	if((!empty($attributes['instaLayout']) && $attributes['instaLayout'] == 'insta-carousel') || (!empty($attributes['ytChannelLayout']) && $attributes['ytChannelLayout'] == 'carousel')){
		$script_handles[] = 'cg-carousel';
	}

    foreach ($script_handles as $handle) {
        wp_enqueue_script($handle);
    }

	$style_handles = [];

	if(!empty($attributes['customPlayer'])){
		$style_handles[] = 'plyr';
	}

	if((!empty($attributes['instaLayout']) && $attributes['instaLayout'] == 'insta-carousel') || (!empty($attributes['ytChannelLayout']) && $attributes['ytChannelLayout'] == 'carousel')){
		$style_handles[] = 'cg-carousel';
	}

	$style_handles[] = 'embedpress_blocks-cgb-style-css';
	$style_handles[] = 'embedpress-style';

    foreach ($style_handles as $handle) {
        wp_enqueue_style($handle, false, [], EMBEDPRESS_PLUGIN_VERSION);
    }
}

function embedpress_render_block($attributes)
{

	embedpress_block_scripts($attributes);


	$client_id = !empty($attributes['clientId']) ? md5($attributes['clientId']) : '';
	$block_id = !empty($attributes['clientId']) ? $attributes['clientId'] : '';
	$custom_player = !empty($attributes['customPlayer']) ? $attributes['customPlayer'] : 0;
	$instaLayout = !empty($attributes['instaLayout']) ? ' '.$attributes['instaLayout'] : ' insta-grid';
	$mode = !empty($attributes['mode']) ? ' ep-google-photos-'.$attributes['mode'] : '';

	$_carousel_options = '';
	$_carousel_id = '';
	if(!empty($attributes['instaLayout']) && $attributes['instaLayout'] === 'insta-carousel'){
		$_carousel_id = 'data-carouselid=' . esc_attr($client_id) . '';

		$layout = $attributes['instaLayout'];
		$slidesShow = !empty($attributes['slidesShow']) ? $attributes['slidesShow'] : 5;
		$carouselAutoplay = !empty($attributes['carouselAutoplay']) ? $attributes['carouselAutoplay'] : 0;
		$autoplaySpeed = !empty($attributes['autoplaySpeed']) ? $attributes['autoplaySpeed'] : 3000;
		$transitionSpeed = !empty($attributes['transitionSpeed']) ? $attributes['transitionSpeed'] : 1000;
		$carouselLoop = !empty($attributes['carouselLoop']) ? $attributes['carouselLoop'] : 0;
		$carouselArrows = !empty($attributes['carouselArrows']) ? $attributes['carouselArrows'] : 0;
		$spacing = !empty($attributes['carouselSpacing']) ? $attributes['carouselSpacing'] : 0;
		
		// print_r($attributes); 
		
		$carousel_options = [
			'layout' => $layout,
			'slideshow' => $slidesShow,
			'autoplay' => $carouselAutoplay,
			'autoplayspeed' => $autoplaySpeed,
			'transitionspeed' => $transitionSpeed,
			'loop' => $carouselLoop,
			'arrows' => $carouselArrows,
			'spacing' => $spacing
		];

		$carousel_options_string = json_encode($carousel_options);
		$_carousel_options = 'data-carousel-options='. htmlentities($carousel_options_string, ENT_QUOTES) .'';
	}

	$cEmbedType = !empty($attributes['cEmbedType']) ? ' '.$attributes['cEmbedType'] : '';

	$_custom_player = '';
	$_player_options = '';

	if (!empty($custom_player)) {

		$is_self_hosted = Helper::check_media_format($attributes['url']);

		$_custom_player = 'data-playerid=' . esc_attr($client_id);
		$player_preset = !empty($attributes['playerPreset']) ? $attributes['playerPreset'] : 'preset-default';
		$player_color = !empty($attributes['playerColor']) ? $attributes['playerColor'] : '';
		$poster_thumbnail = !empty($attributes['posterThumbnail']) ? $attributes['posterThumbnail'] : '';
		$player_pip = !empty($attributes['playerPip']) ? true : false;
		$player_restart = !empty($attributes['playerRestart']) ? true : false;
		$player_rewind = !empty($attributes['playerRewind']) ? true : false;
		$player_fastForward = !empty($attributes['playerFastForward']) ? true : false;
		$player_tooltip = !empty($attributes['playerTooltip']) ? true : false;
		$player_hide_controls = !empty($attributes['playerHideControls']) ? true : false;
		$player_download = !empty($attributes['playerDownload']) ? true : false;

		$playerOptions = [
			'rewind' => $player_rewind,
			'restart' => $player_restart,
			'pip' => $player_pip,
			'poster_thumbnail' => $poster_thumbnail,
			'player_color' => $player_color,
			'player_preset' => $player_preset,
			'fast_forward' => $player_fastForward,
			'player_tooltip' => $player_tooltip,
			'hide_controls' => $player_hide_controls,
			'download' => $player_download,
		];

		if(!empty($attributes['fullscreen'])){
			$playerOptions['fullscreen'] = $attributes['fullscreen'];
		}

		if(!empty($is_self_hosted['selhosted'])){
			$playerOptions['self_hosted'] = $is_self_hosted['selhosted'];
			$playerOptions['hosted_format'] = $is_self_hosted['format'];
		}

		//Youtube options
		if(!empty($attributes['starttime'])){
			$playerOptions['start'] = $attributes['starttime'];
		}
		if(!empty($attributes['endtime'])){
			$playerOptions['end'] = $attributes['endtime'];
		}
		if(!empty($attributes['relatedvideos'])){
			$playerOptions['rel'] = $attributes['relatedvideos'];
		}
		if(!empty($attributes['muteVideo'])){
			$playerOptions['mute'] = $attributes['muteVideo'];
		}

		//vimeo options
		if(!empty($attributes['vstarttime'])){
			$playerOptions['t'] = $attributes['vstarttime'];
		}
		if(!empty($attributes['vautoplay'])){
			$playerOptions['vautoplay'] = $attributes['vautoplay'];
		}
		if(!empty($attributes['vautopause'])){
			$playerOptions['autopause'] = $attributes['vautopause'];
		}
		if(!empty($attributes['vdnt'])){
			$playerOptions['dnt'] = $attributes['vdnt'];
		}

		$playerOptionsString = json_encode($playerOptions);
		$_player_options = 'data-options='. htmlentities($playerOptionsString, ENT_QUOTES);
	}

	$pass_hash_key = isset($attributes['contentPassword']) ? md5($attributes['contentPassword']): '';

	

	if (!empty($attributes['embedHTML'])) {
		$embed  = apply_filters('embedpress_gutenberg_embed', $attributes['embedHTML'], $attributes);

		$content_share_class = '';
		$share_position_class = '';
		$share_position = isset($attributes['sharePosition']) ? $attributes['sharePosition'] : 'right';

		if(!empty($attributes['contentShare'])) {
			$content_share_class = 'ep-content-share-enabled';
			$share_position_class = 'ep-share-position-'.$share_position;
		}

		$password_correct = isset($_COOKIE['password_correct_'.$client_id]) ? $_COOKIE['password_correct_'.$client_id] : '';
		$hash_pass = hash('sha256', wp_salt(32) . md5(isset($attributes['contentPassword']) ? $attributes['contentPassword'] : ''));

		$content_protection_class = 'ep-content-protection-enabled';
		if(empty($attributes['lockContent']) || empty($attributes['contentPassword']) || $hash_pass === $password_correct) {
			$content_protection_class = 'ep-content-protection-disabled';
		}

		$aligns = [
			'left' => 'alignleft',
			'right' => 'alignright',
			'wide' => 'alignwide',
			'full' => 'alignfull',
			'center' => 'aligncenter',
		];
		if (isset($attributes['align'])) {
			$alignment = isset($aligns[$attributes['align']]) ? $aligns[$attributes['align']] . ' clear' : '';
		} else {
			$alignment = 'aligncenter'; // default alignment is center in js, so keeping same here
		}
		$embed = Helper::customLogo($embed, $attributes);
		$url = !empty($attributes['href']) ? $attributes['href'] : '';

		$adsAtts = '';

		if(!empty($attributes['adManager'])) {
			$ad = base64_encode(json_encode($attributes));
			$adsAtts = "data-sponsored-id=$client_id data-sponsored-attrs=$ad class=sponsored-mask";
		}

		$hosted_format = '';
		if (!empty($custom_player)) {			
			$self_hosted = Helper::check_media_format($attributes['url']);
			$hosted_format = isset($self_hosted['format']) ? $self_hosted['format'] : '';
		}

		$yt_channel_class = '';
		if(Helper::is_youtube_channel($attributes['url'])){
			$yt_channel_class = 'embedded-youtube-channel';
		}

		$autoPause = '';
		if(!empty($attributes['autoPause'])){
			$autoPause = ' enabled-auto-pause';
		}

		ob_start();
		?>
		<div class="embedpress-gutenberg-wrapper <?php echo esc_attr( $alignment.' '.$content_share_class.' '.$share_position_class.' '.$content_protection_class); echo esc_attr( $cEmbedType ); ?>" id="<?php echo esc_attr($block_id); ?>">
			<?php
				$share_position = isset($attributes['sharePosition']) ? $attributes['sharePosition'] : 'right';
				$custom_thumbnail = isset($attributes['customThumbnail']) ? $attributes['customThumbnail'] : '';
			?>
			<div class="wp-block-embed__wrapper <?php if(!empty($attributes['contentShare'])) echo esc_attr( 'position-'.$share_position.'-wraper'); ?>  <?php if($attributes['videosize'] == 'responsive') echo esc_attr( 'ep-video-responsive' ); ?>">
				<div id="ep-gutenberg-content-<?php echo esc_attr( $client_id )?>" class="ep-gutenberg-content<?php  echo esc_attr($autoPause); ?>">
					<div 
						<?php echo esc_attr( $adsAtts ); ?> >
						<div  class="ep-embed-content-wraper <?php 
							if (!empty($custom_player)) {
								echo esc_attr($player_preset);
							} 
							echo esc_attr($instaLayout);
							echo esc_attr($mode);
						?> <?php echo esc_attr($hosted_format); ?> <?php echo esc_attr($yt_channel_class); ?>" 
						<?php echo esc_attr($_custom_player); ?> 
						<?php echo esc_attr($_player_options); ?> 
						<?php echo esc_attr( $_carousel_id ); ?>
						<?php echo esc_attr($_carousel_options); ?>
					>
							<?php
								$hash_pass = hash('sha256', wp_salt(32) . md5($attributes['contentPassword']));
								$password_correct = isset($_COOKIE['password_correct_'.$client_id]) ? $_COOKIE['password_correct_'.$client_id] : '';
								if(
									!apply_filters('embedpress/is_allow_rander', false) ||
									empty($attributes['lockContent']) || 
									($attributes['protectionType'] == 'password' && empty($attributes['contentPassword'])) || 
									($attributes['protectionType'] == 'password' &&  (!empty(Helper::is_password_correct($client_id))) && ($hash_pass === $password_correct)) ||
									($attributes['protectionType'] == 'user-role' && has_content_allowed_roles($attributes['userRole']))
								){

									if(!empty($attributes['contentShare'])) {
										$content_id = $attributes['clientId'];
										$embed .= Helper::embed_content_share($content_id, $attributes);
									}
									echo $embed;
								} else {
									if(!empty($attributes['contentShare'])) {
										$content_id = $attributes['clientId'];
										$embed .= Helper::embed_content_share($content_id, $attributes);
									}

									if ($attributes['protectionType'] == 'password') {
										do_action('embedpress/display_password_form', $client_id, $embed, $pass_hash_key, $attributes);
									} else {
										do_action('embedpress/content_protection_content', $client_id, $attributes['protectionMessage'], $attributes['userRole']);
									}

								}
							?>
						</div>
						<?php 
							if(!empty($attributes['adManager'])) {
								$embed = apply_filters('embedpress/generate_ad_template', $embed, $client_id, $attributes, 'gutenberg');

							}
						?>
					</div>
				</div>
			</div>
		</div>
		<?php

		echo embedpress_render_block_style($attributes);


		return ob_get_clean();


	}
}

/**
 * Make style function for embedpress render block
 */

function embedpress_render_block_style($attributes)
{
	$uniqid = !empty($attributes['url']) ? '.ose-uid-' . md5($attributes['url']) : '';
	$client_id = !empty($attributes['clientId']) ? $attributes['clientId'] : '';

	$custom_player = !empty($attributes['customPlayer']) ? $attributes['customPlayer'] : 0;
	$player_color = !empty($attributes['playerColor']) ? $attributes['playerColor'] : '';
	$player_pip = !empty($attributes['playerPip']) ? 'block' : 'none';
	$logoX = !empty($attributes['logoX']) ? $attributes['logoX'] : 5;
	$logoY = !empty($attributes['logoY']) ? $attributes['logoY'] : 10;
	$logoOpacity = !empty($attributes['logoOpacity']) ? $attributes['logoOpacity'] : '1';
	$player_pip = !empty($attributes['playerPip']) ? 'block' : 'none';

	$playerStyle = '';

	if (!empty($custom_player)) {
		$playerStyle = '
		[data-playerid="' . md5($client_id). '"] {
			--plyr-color-main: ' . ($player_color && strlen($player_color) === 7
				? 'rgba(' . hexdec(substr($player_color, 1, 2)) . ', ' . hexdec(substr($player_color, 3, 2)) . ', ' . hexdec(substr($player_color, 5, 2)) . ', .8)!important;'
				: 'rgba(0, 0, 0, .8)!important;'
			) . ';
		}
		[data-playerid="' . md5($client_id). '"].custom-player-preset-3, [data-playerid="' . md5($client_id). '"].custom-player-preset-4 {
			--plyr-color-main: ' . ($player_color && strlen($player_color) === 7
				? 'rgb(' . hexdec(substr($player_color, 1, 2)) . ', ' . hexdec(substr($player_color, 3, 2)) . ', ' . hexdec(substr($player_color, 5, 2)) . ')!important;'
				: 'rgba(0, 0, 0, .8)!important;'
			) . ';
		}
		[data-playerid="' . md5($client_id). '"] [data-plyr="pip"] {
			display: '.$player_pip.';
		}

		[data-playerid="' . md5($client_id). '"] .plyr{
			width: ' . esc_attr($attributes['width']) . 'px !important;
			height: ' . esc_attr($attributes['height']) . 'px!important;
			max-height: ' . esc_attr($attributes['height']) . 'px!important;
		}
		';
	}


	$_iscustomlogo = '';
	
	$youtubeStyles = '';

	if(!empty($attributes['customlogo'])){
		$_iscustomlogo = $uniqid.' img.watermark.ep-custom-logo {
			display: block !important;
		}
		

		#ep-gutenberg-content-'. md5($client_id).' img.watermark {
			border: 0;
			position: absolute;
			bottom: '.esc_attr($logoY).'%;
			right: '.esc_attr($logoX).'%;
			max-width: 150px;
			max-height: 75px;
			-o-transition: opacity 0.5s ease-in-out;
			-moz-transition: opacity 0.5s ease-in-out;
			-webkit-transition: opacity 0.5s ease-in-out;
			transition: opacity 0.5s ease-in-out;
			z-index:1;
			opacity: '.esc_attr($logoOpacity).';
		}
		#ep-gutenberg-content-'. md5($client_id).' img.watermark:hover {
			opacity: 1;
		}
		';
	}
	$youtubeStyles = '<style>
		.ose-youtube' . esc_attr($uniqid) . ' {
			width: ' . esc_attr($attributes['width']) . 'px !important;
			height: ' . esc_attr($attributes['height']) . 'px!important;
			max-height: ' . esc_attr($attributes['height']) . 'px !important;
			max-width: 100%;
		}

		.ose-youtube' . esc_attr($uniqid) . '>iframe {
			height: ' . esc_attr($attributes['height']) . 'px !important;
			max-height: ' . esc_attr($attributes['height']) . 'px !important;
			width: 100%;
			position: relative !important;
		}
		

		' . esc_attr($uniqid) . ' .wistia_embed {
			max-width: 100%;
		}

		.alignright .ose-wistia' . esc_attr($uniqid) .'{
			margin-left: auto;
		}
		.alignleft .ose-wistia' . esc_attr($uniqid) .'{
			margin-right: auto;
		}
		.aligncenter .ose-wistia' . esc_attr($uniqid) .'{
			margin: auto;
		}
		'.$uniqid.' img.watermark{
			display: none;
		}
		'.$_iscustomlogo.'
		'.$playerStyle.'

		

	</style>';

	if($attributes['videosize'] == 'responsive') {

		$width = !empty($attributes['width']) ? $attributes['width'] : 600;
		$height = intval($width) * (9/16);

		$youtubeStyles = '<style>
		.ose-youtube' . esc_attr($uniqid) . ' {
			position: relative;
			width: ' . esc_attr($attributes['width']) . 'px !important;
			height: ' . esc_attr($height) . 'px !important;
			max-width: 100%;
		  }

		  .ose-wistia{
			height: auto !important;
			padding-top: 0;
		  }

		  .ose-youtube' . esc_attr($uniqid) . ' > iframe {
			width: 100%;
			max-height:100%!important;
		  }

		  .ep-video-responsive{
			display: inline-block!important;
			max-width: 100%;
		  }
		  '.$uniqid.' img.watermark{
				display: none;
			}
		  '.$_iscustomlogo.'
		'.$playerStyle.'

	</style>';
	}

	$youtubeStyles .= '<style>
		.ose-matterport' . esc_attr($uniqid) . ' {
			position: relative;
			width: ' . esc_attr($attributes['width']) . 'px !important;
			height: ' . esc_attr($attributes['height']) . 'px !important;
			max-width: 100%;
		  }
		.ose-giphy' . esc_attr($uniqid) . ' img{
			position: relative;
			width: ' . esc_attr($attributes['width']) . 'px !important;
			height: ' . esc_attr($attributes['height']) . 'px !important;
			max-width: 100%;
		  }



	</style>';



	return $youtubeStyles;
}
?>