PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 3.9.6
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v3.9.6
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 5 years ago block-youtube.php 3 years ago
block-embedpress.php
399 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 // echo '<pre>';
73 // print_r($attributes);
74 // echo '</pre>';
75
76
77 $client_id = !empty($attributes['clientId']) ? md5($attributes['clientId']) : '';
78 $block_id = !empty($attributes['clientId']) ? $attributes['clientId'] : '';
79 $custom_player = !empty($attributes['customPlayer']) ? $attributes['customPlayer'] : 0;
80
81 $cEmbedType = !empty($attributes['cEmbedType']) ? ' '.$attributes['cEmbedType'] : '';
82
83 $_custom_player = '';
84 $_player_options = '';
85
86 if (!empty($custom_player)) {
87
88 $is_self_hosted = Helper::check_media_format($attributes['url']);
89
90
91 $_custom_player = 'data-playerid="' . esc_attr($client_id) . '"';
92 $player_preset = !empty($attributes['playerPreset']) ? $attributes['playerPreset'] : 'preset-default';
93 $player_color = !empty($attributes['playerColor']) ? $attributes['playerColor'] : '';
94 $poster_thumbnail = !empty($attributes['posterThumbnail']) ? $attributes['posterThumbnail'] : '';
95 $player_pip = !empty($attributes['playerPip']) ? true : false;
96 $player_restart = !empty($attributes['playerRestart']) ? true : false;
97 $player_rewind = !empty($attributes['playerRewind']) ? true : false;
98 $player_fastForward = !empty($attributes['playerFastForward']) ? true : false;
99 $player_tooltip = !empty($attributes['playerTooltip']) ? true : false;
100 $player_hide_controls = !empty($attributes['playerHideControls']) ? true : false;
101 $player_download = !empty($attributes['playerDownload']) ? true : false;
102
103 $playerOptions = [
104 'rewind' => $player_rewind,
105 'restart' => $player_restart,
106 'pip' => $player_pip,
107 'poster_thumbnail' => $poster_thumbnail,
108 'player_color' => $player_color,
109 'player_preset' => $player_preset,
110 'fast_forward' => $player_fastForward,
111 'player_tooltip' => $player_tooltip,
112 'hide_controls' => $player_hide_controls,
113 'download' => $player_download,
114 ];
115
116 if(!empty($attributes['fullscreen'])){
117 $playerOptions['fullscreen'] = $attributes['fullscreen'];
118 }
119
120 if(!empty($is_self_hosted['selhosted'])){
121 $playerOptions['self_hosted'] = $is_self_hosted['selhosted'];
122 $playerOptions['hosted_format'] = $is_self_hosted['format'];
123 }
124
125 //Youtube options
126 if(!empty($attributes['starttime'])){
127 $playerOptions['start'] = $attributes['starttime'];
128 }
129 if(!empty($attributes['endtime'])){
130 $playerOptions['end'] = $attributes['endtime'];
131 }
132 if(!empty($attributes['relatedvideos'])){
133 $playerOptions['rel'] = $attributes['relatedvideos'];
134 }
135
136 //vimeo options
137 if(!empty($attributes['vstarttime'])){
138 $playerOptions['t'] = $attributes['vstarttime'];
139 }
140 if(!empty($attributes['vautoplay'])){
141 $playerOptions['vautoplay'] = $attributes['vautoplay'];
142 }
143 if(!empty($attributes['vautopause'])){
144 $playerOptions['autopause'] = $attributes['vautopause'];
145 }
146 if(!empty($attributes['vdnt'])){
147 $playerOptions['dnt'] = $attributes['vdnt'];
148 }
149
150 $playerOptionsString = json_encode($playerOptions);
151 $_player_options = 'data-options=\'' . htmlentities($playerOptionsString, ENT_QUOTES) . '\'';
152 }
153
154 $pass_hash_key = isset($attributes['contentPassword']) ? md5($attributes['contentPassword']): '';
155
156
157
158 if (!empty($attributes['embedHTML'])) {
159 $embed = apply_filters('embedpress_gutenberg_embed', $attributes['embedHTML'], $attributes);
160
161 $content_share_class = '';
162 $share_position_class = '';
163 $share_position = isset($attributes['sharePosition']) ? $attributes['sharePosition'] : 'right';
164
165 if(!empty($attributes['contentShare'])) {
166 $content_share_class = 'ep-content-share-enabled';
167 $share_position_class = 'ep-share-position-'.$share_position;
168 }
169
170 $password_correct = isset($_COOKIE['password_correct_'.$client_id]) ? $_COOKIE['password_correct_'.$client_id] : '';
171 $hash_pass = hash('sha256', wp_salt(32) . md5(isset($attributes['contentPassword']) ? $attributes['contentPassword'] : ''));
172
173 $content_protection_class = 'ep-content-protection-enabled';
174 if(empty($attributes['lockContent']) || empty($attributes['contentPassword']) || $hash_pass === $password_correct) {
175 $content_protection_class = 'ep-content-protection-disabled';
176 }
177
178 $aligns = [
179 'left' => 'alignleft',
180 'right' => 'alignright',
181 'wide' => 'alignwide',
182 'full' => 'alignfull',
183 'center' => 'aligncenter',
184 ];
185 if (isset($attributes['align'])) {
186 $alignment = isset($aligns[$attributes['align']]) ? $aligns[$attributes['align']] . ' clear' : '';
187 } else {
188 $alignment = 'aligncenter'; // default alignment is center in js, so keeping same here
189 }
190 $embed = Helper::customLogo($embed, $attributes);
191 $url = !empty($attributes['href']) ? $attributes['href'] : '';
192
193 $adsAtts = '';
194
195 if(!empty($attributes['adManager'])) {
196 $ad = base64_encode(json_encode($attributes));
197 $adsAtts = "data-ad-id=$client_id data-ad-attrs=$ad class=ad-mask";
198 }
199
200 ob_start();
201 ?>
202 <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); ?>">
203 <?php
204 $share_position = isset($attributes['sharePosition']) ? $attributes['sharePosition'] : 'right';
205 $custom_thumbnail = isset($attributes['customThumbnail']) ? $attributes['customThumbnail'] : '';
206 ?>
207 <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' ); ?>">
208 <div id="ep-gutenberg-content-<?php echo esc_attr( $client_id )?>" class="ep-gutenberg-content">
209 <div <?php echo esc_attr( $adsAtts ); ?> >
210 <div class="ep-embed-content-wraper <?php !empty($custom_player) ? esc_attr_e($player_preset) : ''; ?>" <?php echo $_custom_player; ?> <?php echo $_player_options; ?>>
211 <?php
212 $hash_pass = hash('sha256', wp_salt(32) . md5($attributes['contentPassword']));
213 $password_correct = isset($_COOKIE['password_correct_'.$client_id]) ? $_COOKIE['password_correct_'.$client_id] : '';
214 if(empty($attributes['lockContent']) || empty($attributes['contentPassword']) || (!empty(Helper::is_password_correct($client_id)) && ($hash_pass === $password_correct)) ){
215
216 if(!empty($attributes['contentShare'])) {
217 $content_id = $attributes['clientId'];
218 $embed .= Helper::embed_content_share($content_id, $attributes);
219 }
220 echo $embed;
221 } else {
222 if(!empty($attributes['contentShare'])) {
223 $content_id = $attributes['clientId'];
224 $embed .= Helper::embed_content_share($content_id, $attributes);
225 }
226 Helper::display_password_form($client_id, $embed, $pass_hash_key, $attributes);
227 }
228 ?>
229 </div>
230 <?php
231 if(!empty($attributes['adManager'])) {
232 $embed .= Helper::generateAdTemplate($client_id, $attributes, 'gutenberg');
233 }
234 ?>
235 </div>
236 </div>
237 </div>
238 </div>
239 <?php
240
241 echo embedpress_render_block_style($attributes);
242
243
244 return ob_get_clean();
245
246
247 }
248 }
249
250 /**
251 * Make style function for embedpress render block
252 */
253
254 function embedpress_render_block_style($attributes)
255 {
256
257 $uniqid = !empty($attributes['url']) ? '.ose-uid-' . md5($attributes['url']) : '';
258 $client_id = !empty($attributes['clientId']) ? $attributes['clientId'] : '';
259
260 $custom_player = !empty($attributes['customPlayer']) ? $attributes['customPlayer'] : 0;
261 $player_color = !empty($attributes['playerColor']) ? $attributes['playerColor'] : '';
262 $player_pip = !empty($attributes['playerPip']) ? 'block' : 'none';
263 $logoX = !empty($attributes['logoX']) ? $attributes['logoX'] : 5;
264 $logoY = !empty($attributes['logoY']) ? $attributes['logoX'] : 10;
265 $player_pip = !empty($attributes['playerPip']) ? 'block' : 'none';
266
267 $playerStyle = '';
268
269 if (!empty($custom_player)) {
270 $playerStyle = '
271 [data-playerid="' . md5($client_id). '"] {
272 --plyr-color-main: ' . ($player_color && strlen($player_color) === 7
273 ? 'rgba(' . hexdec(substr($player_color, 1, 2)) . ', ' . hexdec(substr($player_color, 3, 2)) . ', ' . hexdec(substr($player_color, 5, 2)) . ', .8)!important;'
274 : 'rgba(0, 0, 0, .8)!important;'
275 ) . ';
276 }
277 [data-playerid="' . md5($client_id). '"].custom-player-preset-3, [data-playerid="' . md5($client_id). '"].custom-player-preset-4 {
278 --plyr-color-main: ' . ($player_color && strlen($player_color) === 7
279 ? 'rgb(' . hexdec(substr($player_color, 1, 2)) . ', ' . hexdec(substr($player_color, 3, 2)) . ', ' . hexdec(substr($player_color, 5, 2)) . ')!important;'
280 : 'rgba(0, 0, 0, .8)!important;'
281 ) . ';
282 }
283 [data-playerid="' . md5($client_id). '"] [data-plyr="pip"] {
284 display: '.$player_pip.';
285 }
286
287 [data-playerid="' . md5($client_id). '"] .plyr{
288 width: ' . esc_attr($attributes['width']) . 'px !important;
289 height: ' . esc_attr($attributes['height']) . 'px!important;
290 max-height: ' . esc_attr($attributes['height']) . 'px!important;
291 }
292
293 [data-playerid="' . md5($client_id). '"] img.watermark {
294 border: 0;
295 position: absolute;
296 bottom: '.$logoY.'%;
297 right: '.$logoX.'%;
298 max-width: 150px;
299 max-height: 75px;
300 opacity: 1;
301 -o-transition: opacity 0.5s ease-in-out;
302 -moz-transition: opacity 0.5s ease-in-out;
303 -webkit-transition: opacity 0.5s ease-in-out;
304 transition: opacity 0.5s ease-in-out;
305 z-index:1;
306 }
307
308 ';
309 }
310
311
312 $_iscustomlogo = '';
313
314 if(!empty($attributes['customlogo'])){
315 $_iscustomlogo = $uniqid.' img.watermark.ep-custom-logo {
316 display: block !important;
317 }';
318 }
319 $youtubeStyles = '<style>
320 ' . esc_attr($uniqid) . ' {
321 width: ' . esc_attr($attributes['width']) . 'px !important;
322 height: ' . esc_attr($attributes['height']) . 'px!important;
323 max-height: ' . esc_attr($attributes['height']) . 'px !important;
324 max-width: 100%;
325 }
326
327 ' . esc_attr($uniqid) . '>iframe {
328 height: ' . esc_attr($attributes['height']) . 'px !important;
329 max-height: ' . esc_attr($attributes['height']) . 'px !important;
330 width: 100%;
331 position: relative !important;
332 }
333
334
335 ' . esc_attr($uniqid) . ' .wistia_embed {
336 max-width: 100%;
337 }
338
339 .alignright .ose-wistia' . esc_attr($uniqid) .'{
340 margin-left: auto;
341 }
342 .alignleft .ose-wistia' . esc_attr($uniqid) .'{
343 margin-right: auto;
344 }
345 .aligncenter .ose-wistia' . esc_attr($uniqid) .'{
346 margin: auto;
347 }
348 '.$uniqid.' img.watermark{
349 display: none;
350 }
351 '.$_iscustomlogo.'
352 '.$playerStyle.'
353
354
355
356 </style>';
357
358 if($attributes['videosize'] == 'responsive') {
359
360 $width = isset($attributes['width']) ? $attributes['width'] : 600;
361 $height = $width * (9/16);
362
363
364 $youtubeStyles = '<style>
365 ' . esc_attr($uniqid) . ' {
366 position: relative;
367 width: ' . esc_attr($attributes['width']) . 'px !important;
368 height: ' . esc_attr($height) . 'px !important;
369 max-width: 100%;
370 }
371
372 .ose-wistia{
373 height: auto !important;
374 padding-top: 0;
375 }
376
377 ' . esc_attr($uniqid) . ' > iframe {
378 width: 100%;
379 height: 100%;
380 max-height:100%;
381 }
382
383 .ep-video-responsive{
384 display: inline-block!important;
385 max-width: 100%;
386 }
387 '.$uniqid.' img.watermark{
388 display: none;
389 }
390 '.$_iscustomlogo.'
391 '.$playerStyle.'
392
393 </style>';
394 }
395
396 return $youtubeStyles;
397 }
398 ?>
399