PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 3.9.10
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v3.9.10
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
404 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 $logoOpacity = !empty($attributes['logoOpacity']) ? $attributes['logoOpacity'] : '1';
266 $player_pip = !empty($attributes['playerPip']) ? 'block' : 'none';
267
268 $playerStyle = '';
269
270 if (!empty($custom_player)) {
271 $playerStyle = '
272 [data-playerid="' . md5($client_id). '"] {
273 --plyr-color-main: ' . ($player_color && strlen($player_color) === 7
274 ? 'rgba(' . hexdec(substr($player_color, 1, 2)) . ', ' . hexdec(substr($player_color, 3, 2)) . ', ' . hexdec(substr($player_color, 5, 2)) . ', .8)!important;'
275 : 'rgba(0, 0, 0, .8)!important;'
276 ) . ';
277 }
278 [data-playerid="' . md5($client_id). '"].custom-player-preset-3, [data-playerid="' . md5($client_id). '"].custom-player-preset-4 {
279 --plyr-color-main: ' . ($player_color && strlen($player_color) === 7
280 ? 'rgb(' . hexdec(substr($player_color, 1, 2)) . ', ' . hexdec(substr($player_color, 3, 2)) . ', ' . hexdec(substr($player_color, 5, 2)) . ')!important;'
281 : 'rgba(0, 0, 0, .8)!important;'
282 ) . ';
283 }
284 [data-playerid="' . md5($client_id). '"] [data-plyr="pip"] {
285 display: '.$player_pip.';
286 }
287
288 [data-playerid="' . md5($client_id). '"] .plyr{
289 width: ' . esc_attr($attributes['width']) . 'px !important;
290 height: ' . esc_attr($attributes['height']) . 'px!important;
291 max-height: ' . esc_attr($attributes['height']) . 'px!important;
292 }
293 ';
294 }
295
296
297 $_iscustomlogo = '';
298
299 if(!empty($attributes['customlogo'])){
300 $_iscustomlogo = $uniqid.' img.watermark.ep-custom-logo {
301 display: block !important;
302 }
303
304
305 #ep-gutenberg-content-'. md5($client_id).' img.watermark {
306 border: 0;
307 position: absolute;
308 bottom: '.esc_attr($logoY).'%;
309 right: '.esc_attr($logoX).'%;
310 max-width: 150px;
311 max-height: 75px;
312 -o-transition: opacity 0.5s ease-in-out;
313 -moz-transition: opacity 0.5s ease-in-out;
314 -webkit-transition: opacity 0.5s ease-in-out;
315 transition: opacity 0.5s ease-in-out;
316 z-index:1;
317 opacity: '.esc_attr($logoOpacity).';
318 }
319 #ep-gutenberg-content-'. md5($client_id).' img.watermark:hover {
320 opacity: 1;
321 }
322 ';
323 }
324 $youtubeStyles = '<style>
325 ' . esc_attr($uniqid) . ' {
326 width: ' . esc_attr($attributes['width']) . 'px !important;
327 height: ' . esc_attr($attributes['height']) . 'px!important;
328 max-height: ' . esc_attr($attributes['height']) . 'px !important;
329 max-width: 100%;
330 }
331
332 ' . esc_attr($uniqid) . '>iframe {
333 height: ' . esc_attr($attributes['height']) . 'px !important;
334 max-height: ' . esc_attr($attributes['height']) . 'px !important;
335 width: 100%;
336 position: relative !important;
337 }
338
339
340 ' . esc_attr($uniqid) . ' .wistia_embed {
341 max-width: 100%;
342 }
343
344 .alignright .ose-wistia' . esc_attr($uniqid) .'{
345 margin-left: auto;
346 }
347 .alignleft .ose-wistia' . esc_attr($uniqid) .'{
348 margin-right: auto;
349 }
350 .aligncenter .ose-wistia' . esc_attr($uniqid) .'{
351 margin: auto;
352 }
353 '.$uniqid.' img.watermark{
354 display: none;
355 }
356 '.$_iscustomlogo.'
357 '.$playerStyle.'
358
359
360
361 </style>';
362
363 if($attributes['videosize'] == 'responsive') {
364
365 $width = isset($attributes['width']) ? $attributes['width'] : 600;
366 $height = $width * (9/16);
367
368
369 $youtubeStyles = '<style>
370 ' . esc_attr($uniqid) . ' {
371 position: relative;
372 width: ' . esc_attr($attributes['width']) . 'px !important;
373 height: ' . esc_attr($height) . 'px !important;
374 max-width: 100%;
375 }
376
377 .ose-wistia{
378 height: auto !important;
379 padding-top: 0;
380 }
381
382 ' . esc_attr($uniqid) . ' > iframe {
383 width: 100%;
384 height: 100%;
385 max-height:100%;
386 }
387
388 .ep-video-responsive{
389 display: inline-block!important;
390 max-width: 100%;
391 }
392 '.$uniqid.' img.watermark{
393 display: none;
394 }
395 '.$_iscustomlogo.'
396 '.$playerStyle.'
397
398 </style>';
399 }
400
401 return $youtubeStyles;
402 }
403 ?>
404