PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 3.9.17
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v3.9.17
4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 trunk 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1 2.2.2 2.3.0 2.3.1 2.3.2 2.3.3 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.1.3 3.2.0 3.2.1 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.14 3.9.15 3.9.16 3.9.17 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9 4.0.0 4.0.1 4.0.10 4.0.11 4.0.12 4.0.13 4.0.14 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.10 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.4.0 4.4.1 4.4.10 4.4.11 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 4.5.0 4.5.1
embedpress / Gutenberg / block-backend / block-embedpress.php
embedpress / Gutenberg / block-backend Last commit date
block-embedpress.php 2 years ago block-wistia.php 2 years ago block-youtube.php 2 years ago
block-embedpress.php
413 lines
1 <?php
2
3 use EmbedPress\Includes\Classes\Helper;
4
5 // Exit if accessed directly.
6 if (!defined('ABSPATH')) {
7 exit;
8 }
9 /**
10 * It renders gutenberg block of embedpress on the frontend
11 * @param array $attributes
12 */
13
14 if(!function_exists('lock_content_form_handler')){
15 add_action('wp_ajax_lock_content_form_handler', 'lock_content_form_handler');
16 add_action('wp_ajax_nopriv_lock_content_form_handler', 'lock_content_form_handler');
17
18 function lock_content_form_handler() {
19 // print_r($embedHTML);
20
21 $client_id = isset($_POST['client_id']) ? sanitize_text_field($_POST['client_id']) : '';
22 $password = isset($_POST['password']) ? sanitize_text_field($_POST['password']) : '';
23 $post_id = isset($_POST['post_id']) ? absint($_POST['post_id']) : 0;
24
25 $epbase64 = get_post_meta( $post_id, 'ep_base_' .$client_id, true );
26 $hash_key = get_post_meta( $post_id, 'hash_key_' .$client_id, true );
27
28 // Set the decryption key and initialization vector (IV)
29 $key = Helper::get_hash();
30
31 // Decode the base64 encoded cipher
32 $cipher = base64_decode($epbase64);
33 // Decrypt the cipher using AES-128-CBC encryption
34
35 $wp_pass_key = hash('sha256', wp_salt(32) . md5($password));
36 $iv = substr($wp_pass_key, 0, 16);
37
38 if ($wp_pass_key === $hash_key) {
39 setcookie("password_correct_", $password, time()+3600);
40
41 $embed = openssl_decrypt($cipher, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv) . '<script>
42 var now = new Date();
43 var time = now.getTime();
44 var expireTime = time + 1000 * 60 * 60 * 24 * 30;
45 now.setTime(expireTime);
46 document.cookie = "password_correct_'.esc_js($client_id).'='.esc_js($hash_key).'; expires=" + now.toUTCString() + "; path=/";
47 </script>';
48
49 }
50 else{
51 $embed = 0;
52 }
53
54 // Process the form data and return a response
55 $response = array(
56 'success' => true,
57 'password' => $password,
58 'embedHtml' => $embed,
59 'post_id' => $post_id
60 );
61
62 wp_send_json($response);
63
64 }
65 }
66
67
68
69 function embedpress_render_block($attributes)
70 {
71
72 $client_id = !empty($attributes['clientId']) ? md5($attributes['clientId']) : '';
73 $block_id = !empty($attributes['clientId']) ? $attributes['clientId'] : '';
74 $custom_player = !empty($attributes['customPlayer']) ? $attributes['customPlayer'] : 0;
75
76 $cEmbedType = !empty($attributes['cEmbedType']) ? ' '.$attributes['cEmbedType'] : '';
77
78 $_custom_player = '';
79 $_player_options = '';
80
81 if (!empty($custom_player)) {
82
83 $is_self_hosted = Helper::check_media_format($attributes['url']);
84
85
86 $_custom_player = 'data-playerid="' . esc_attr($client_id) . '"';
87 $player_preset = !empty($attributes['playerPreset']) ? $attributes['playerPreset'] : 'preset-default';
88 $player_color = !empty($attributes['playerColor']) ? $attributes['playerColor'] : '';
89 $poster_thumbnail = !empty($attributes['posterThumbnail']) ? $attributes['posterThumbnail'] : '';
90 $player_pip = !empty($attributes['playerPip']) ? true : false;
91 $player_restart = !empty($attributes['playerRestart']) ? true : false;
92 $player_rewind = !empty($attributes['playerRewind']) ? true : false;
93 $player_fastForward = !empty($attributes['playerFastForward']) ? true : false;
94 $player_tooltip = !empty($attributes['playerTooltip']) ? true : false;
95 $player_hide_controls = !empty($attributes['playerHideControls']) ? true : false;
96 $player_download = !empty($attributes['playerDownload']) ? true : false;
97
98 $playerOptions = [
99 'rewind' => $player_rewind,
100 'restart' => $player_restart,
101 'pip' => $player_pip,
102 'poster_thumbnail' => $poster_thumbnail,
103 'player_color' => $player_color,
104 'player_preset' => $player_preset,
105 'fast_forward' => $player_fastForward,
106 'player_tooltip' => $player_tooltip,
107 'hide_controls' => $player_hide_controls,
108 'download' => $player_download,
109 ];
110
111 if(!empty($attributes['fullscreen'])){
112 $playerOptions['fullscreen'] = $attributes['fullscreen'];
113 }
114
115 if(!empty($is_self_hosted['selhosted'])){
116 $playerOptions['self_hosted'] = $is_self_hosted['selhosted'];
117 $playerOptions['hosted_format'] = $is_self_hosted['format'];
118 }
119
120 //Youtube options
121 if(!empty($attributes['starttime'])){
122 $playerOptions['start'] = $attributes['starttime'];
123 }
124 if(!empty($attributes['endtime'])){
125 $playerOptions['end'] = $attributes['endtime'];
126 }
127 if(!empty($attributes['relatedvideos'])){
128 $playerOptions['rel'] = $attributes['relatedvideos'];
129 }
130
131 //vimeo options
132 if(!empty($attributes['vstarttime'])){
133 $playerOptions['t'] = $attributes['vstarttime'];
134 }
135 if(!empty($attributes['vautoplay'])){
136 $playerOptions['vautoplay'] = $attributes['vautoplay'];
137 }
138 if(!empty($attributes['vautopause'])){
139 $playerOptions['autopause'] = $attributes['vautopause'];
140 }
141 if(!empty($attributes['vdnt'])){
142 $playerOptions['dnt'] = $attributes['vdnt'];
143 }
144
145 $playerOptionsString = json_encode($playerOptions);
146 $_player_options = 'data-options=\'' . htmlentities($playerOptionsString, ENT_QUOTES) . '\'';
147 }
148
149 $pass_hash_key = isset($attributes['contentPassword']) ? md5($attributes['contentPassword']): '';
150
151
152
153 if (!empty($attributes['embedHTML'])) {
154 $embed = apply_filters('embedpress_gutenberg_embed', $attributes['embedHTML'], $attributes);
155
156 $content_share_class = '';
157 $share_position_class = '';
158 $share_position = isset($attributes['sharePosition']) ? $attributes['sharePosition'] : 'right';
159
160 if(!empty($attributes['contentShare'])) {
161 $content_share_class = 'ep-content-share-enabled';
162 $share_position_class = 'ep-share-position-'.$share_position;
163 }
164
165 $password_correct = isset($_COOKIE['password_correct_'.$client_id]) ? $_COOKIE['password_correct_'.$client_id] : '';
166 $hash_pass = hash('sha256', wp_salt(32) . md5(isset($attributes['contentPassword']) ? $attributes['contentPassword'] : ''));
167
168 $content_protection_class = 'ep-content-protection-enabled';
169 if(empty($attributes['lockContent']) || empty($attributes['contentPassword']) || $hash_pass === $password_correct) {
170 $content_protection_class = 'ep-content-protection-disabled';
171 }
172
173 $aligns = [
174 'left' => 'alignleft',
175 'right' => 'alignright',
176 'wide' => 'alignwide',
177 'full' => 'alignfull',
178 'center' => 'aligncenter',
179 ];
180 if (isset($attributes['align'])) {
181 $alignment = isset($aligns[$attributes['align']]) ? $aligns[$attributes['align']] . ' clear' : '';
182 } else {
183 $alignment = 'aligncenter'; // default alignment is center in js, so keeping same here
184 }
185 $embed = Helper::customLogo($embed, $attributes);
186 $url = !empty($attributes['href']) ? $attributes['href'] : '';
187
188 $adsAtts = '';
189
190 if(!empty($attributes['adManager'])) {
191 $ad = base64_encode(json_encode($attributes));
192 $adsAtts = "data-ad-id=$client_id data-ad-attrs=$ad class=ad-mask";
193 }
194
195 ob_start();
196 ?>
197 <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); ?>">
198 <?php
199 $share_position = isset($attributes['sharePosition']) ? $attributes['sharePosition'] : 'right';
200 $custom_thumbnail = isset($attributes['customThumbnail']) ? $attributes['customThumbnail'] : '';
201 ?>
202 <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' ); ?>">
203 <div id="ep-gutenberg-content-<?php echo esc_attr( $client_id )?>" class="ep-gutenberg-content">
204 <div <?php echo esc_attr( $adsAtts ); ?> >
205 <div class="ep-embed-content-wraper <?php !empty($custom_player) ? esc_attr_e($player_preset) : ''; ?>" <?php echo $_custom_player; ?> <?php echo $_player_options; ?>>
206 <?php
207 $hash_pass = hash('sha256', wp_salt(32) . md5($attributes['contentPassword']));
208 $password_correct = isset($_COOKIE['password_correct_'.$client_id]) ? $_COOKIE['password_correct_'.$client_id] : '';
209 if(empty($attributes['lockContent']) || empty($attributes['contentPassword']) || (!empty(Helper::is_password_correct($client_id)) && ($hash_pass === $password_correct)) ){
210
211 if(!empty($attributes['contentShare'])) {
212 $content_id = $attributes['clientId'];
213 $embed .= Helper::embed_content_share($content_id, $attributes);
214 }
215 echo $embed;
216 } else {
217 if(!empty($attributes['contentShare'])) {
218 $content_id = $attributes['clientId'];
219 $embed .= Helper::embed_content_share($content_id, $attributes);
220 }
221 Helper::display_password_form($client_id, $embed, $pass_hash_key, $attributes);
222 }
223 ?>
224 </div>
225 <?php
226 if(!empty($attributes['adManager'])) {
227 $embed .= Helper::generateAdTemplate($client_id, $attributes, 'gutenberg');
228 }
229 ?>
230 </div>
231 </div>
232 </div>
233 </div>
234 <?php
235
236 echo embedpress_render_block_style($attributes);
237
238
239 return ob_get_clean();
240
241
242 }
243 }
244
245 /**
246 * Make style function for embedpress render block
247 */
248
249 function embedpress_render_block_style($attributes)
250 {
251
252 $uniqid = !empty($attributes['url']) ? '.ose-uid-' . md5($attributes['url']) : '';
253 $client_id = !empty($attributes['clientId']) ? $attributes['clientId'] : '';
254
255 $custom_player = !empty($attributes['customPlayer']) ? $attributes['customPlayer'] : 0;
256 $player_color = !empty($attributes['playerColor']) ? $attributes['playerColor'] : '';
257 $player_pip = !empty($attributes['playerPip']) ? 'block' : 'none';
258 $logoX = !empty($attributes['logoX']) ? $attributes['logoX'] : 5;
259 $logoY = !empty($attributes['logoY']) ? $attributes['logoX'] : 10;
260 $logoOpacity = !empty($attributes['logoOpacity']) ? $attributes['logoOpacity'] : '1';
261 $player_pip = !empty($attributes['playerPip']) ? 'block' : 'none';
262
263 $playerStyle = '';
264
265 if (!empty($custom_player)) {
266 $playerStyle = '
267 [data-playerid="' . md5($client_id). '"] {
268 --plyr-color-main: ' . ($player_color && strlen($player_color) === 7
269 ? 'rgba(' . hexdec(substr($player_color, 1, 2)) . ', ' . hexdec(substr($player_color, 3, 2)) . ', ' . hexdec(substr($player_color, 5, 2)) . ', .8)!important;'
270 : 'rgba(0, 0, 0, .8)!important;'
271 ) . ';
272 }
273 [data-playerid="' . md5($client_id). '"].custom-player-preset-3, [data-playerid="' . md5($client_id). '"].custom-player-preset-4 {
274 --plyr-color-main: ' . ($player_color && strlen($player_color) === 7
275 ? 'rgb(' . hexdec(substr($player_color, 1, 2)) . ', ' . hexdec(substr($player_color, 3, 2)) . ', ' . hexdec(substr($player_color, 5, 2)) . ')!important;'
276 : 'rgba(0, 0, 0, .8)!important;'
277 ) . ';
278 }
279 [data-playerid="' . md5($client_id). '"] [data-plyr="pip"] {
280 display: '.$player_pip.';
281 }
282
283 [data-playerid="' . md5($client_id). '"] .plyr{
284 width: ' . esc_attr($attributes['width']) . 'px !important;
285 height: ' . esc_attr($attributes['height']) . 'px!important;
286 max-height: ' . esc_attr($attributes['height']) . 'px!important;
287 }
288 ';
289 }
290
291
292 $_iscustomlogo = '';
293
294 $youtubeStyles = '';
295
296 if(!empty($attributes['customlogo'])){
297 $_iscustomlogo = $uniqid.' img.watermark.ep-custom-logo {
298 display: block !important;
299 }
300
301
302 #ep-gutenberg-content-'. md5($client_id).' img.watermark {
303 border: 0;
304 position: absolute;
305 bottom: '.esc_attr($logoY).'%;
306 right: '.esc_attr($logoX).'%;
307 max-width: 150px;
308 max-height: 75px;
309 -o-transition: opacity 0.5s ease-in-out;
310 -moz-transition: opacity 0.5s ease-in-out;
311 -webkit-transition: opacity 0.5s ease-in-out;
312 transition: opacity 0.5s ease-in-out;
313 z-index:1;
314 opacity: '.esc_attr($logoOpacity).';
315 }
316 #ep-gutenberg-content-'. md5($client_id).' img.watermark:hover {
317 opacity: 1;
318 }
319 ';
320 }
321 $youtubeStyles = '<style>
322 .ose-youtube' . esc_attr($uniqid) . ' {
323 width: ' . esc_attr($attributes['width']) . 'px !important;
324 height: ' . esc_attr($attributes['height']) . 'px!important;
325 max-height: ' . esc_attr($attributes['height']) . 'px !important;
326 max-width: 100%;
327 }
328
329 .ose-youtube' . esc_attr($uniqid) . '>iframe {
330 height: ' . esc_attr($attributes['height']) . 'px !important;
331 max-height: ' . esc_attr($attributes['height']) . 'px !important;
332 width: 100%;
333 position: relative !important;
334 }
335
336
337 ' . esc_attr($uniqid) . ' .wistia_embed {
338 max-width: 100%;
339 }
340
341 .alignright .ose-wistia' . esc_attr($uniqid) .'{
342 margin-left: auto;
343 }
344 .alignleft .ose-wistia' . esc_attr($uniqid) .'{
345 margin-right: auto;
346 }
347 .aligncenter .ose-wistia' . esc_attr($uniqid) .'{
348 margin: auto;
349 }
350 '.$uniqid.' img.watermark{
351 display: none;
352 }
353 '.$_iscustomlogo.'
354 '.$playerStyle.'
355
356
357
358 </style>';
359
360 if($attributes['videosize'] == 'responsive') {
361
362 $width = isset($attributes['width']) ? $attributes['width'] : 600;
363 $height = $width * (9/16);
364
365
366 $youtubeStyles = '<style>
367 .ose-youtube' . esc_attr($uniqid) . ' {
368 position: relative;
369 width: ' . esc_attr($attributes['width']) . 'px !important;
370 height: ' . esc_attr($height) . 'px !important;
371 max-width: 100%;
372 }
373
374 .ose-wistia{
375 height: auto !important;
376 padding-top: 0;
377 }
378
379 .ose-youtube' . esc_attr($uniqid) . ' > iframe {
380 width: 100%;
381 height: 100%;
382 max-height:100%;
383 }
384
385 .ep-video-responsive{
386 display: inline-block!important;
387 max-width: 100%;
388 }
389 '.$uniqid.' img.watermark{
390 display: none;
391 }
392 '.$_iscustomlogo.'
393 '.$playerStyle.'
394
395 </style>';
396 }
397
398 $youtubeStyles .= '<style>
399 .ose-matterport' . esc_attr($uniqid) . ' {
400 position: relative;
401 width: ' . esc_attr($attributes['width']) . 'px !important;
402 height: ' . esc_attr($attributes['height']) . 'px !important;
403 max-width: 100%;
404 }
405
406 </style>';
407
408
409
410 return $youtubeStyles;
411 }
412 ?>
413