PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 3.8.3
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v3.8.3
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 5 years ago block-youtube.php 3 years ago
block-embedpress.php
369 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']) ? $_POST['client_id'] : '';
22 $password = isset($_POST['password']) ? $_POST['password'] : '';
23 $post_id = isset($_POST['post_id']) ? $_POST['post_id'] : '';
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_'.$client_id.'='.$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 echo json_encode($response);
63
64 wp_die();
65 }
66 }
67
68
69
70 function embedpress_render_block($attributes)
71 {
72
73 $client_id = !empty($attributes['clientId']) ? md5($attributes['clientId']) : '';
74 $block_id = !empty($attributes['clientId']) ? $attributes['clientId'] : '';
75 $custom_player = !empty($attributes['customPlayer']) ? $attributes['customPlayer'] : 0;
76
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 if (!empty($attributes['embedHTML'])) {
152 $embed = apply_filters('embedpress_gutenberg_embed', $attributes['embedHTML'], $attributes);
153
154 $content_share_class = '';
155 $share_position_class = '';
156 $share_position = isset($attributes['sharePosition']) ? $attributes['sharePosition'] : 'right';
157
158 if(!empty($attributes['contentShare'])) {
159 $content_share_class = 'ep-content-share-enabled';
160 $share_position_class = 'ep-share-position-'.$share_position;
161 }
162 $content_protection_class = '';
163 if(!empty($attributes['lockContent']) && !empty($attributes['contentPassword'])) {
164 $content_protection_class = 'ep-content-protection-enabled';
165 }
166
167 $aligns = [
168 'left' => 'alignleft',
169 'right' => 'alignright',
170 'wide' => 'alignwide',
171 'full' => 'alignfull',
172 'center' => 'aligncenter',
173 ];
174 if (isset($attributes['align'])) {
175 $alignment = isset($aligns[$attributes['align']]) ? $aligns[$attributes['align']] . ' clear' : '';
176 } else {
177 $alignment = 'aligncenter'; // default alignment is center in js, so keeping same here
178 }
179 $embed = Helper::customLogo($embed, $attributes);
180 $url = !empty($attributes['href']) ? $attributes['href'] : '';
181
182 ob_start();
183 ?>
184 <div class="embedpress-gutenberg-wrapper <?php echo esc_attr( $alignment.' '.$content_share_class.' '.$share_position_class.' '.$content_protection_class); ?>" id="<?php echo esc_attr($block_id); ?>">
185 <?php
186 $share_position = isset($attributes['sharePosition']) ? $attributes['sharePosition'] : 'right';
187 $custom_thumbnail = isset($attributes['customThumbnail']) ? $attributes['customThumbnail'] : '';
188 ?>
189 <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' ); ?>">
190 <div id="ep-gutenberg-content-<?php echo esc_attr( $client_id )?>" class="ep-gutenberg-content">
191 <div class="ep-embed-content-wraper <?php !empty($custom_player) ? esc_attr_e($player_preset) : ''; ?>" <?php echo $_custom_player; ?> <?php echo $_player_options; ?>>
192 <?php
193 $hash_pass = hash('sha256', wp_salt(32) . md5($attributes['contentPassword']));
194 $password_correct = isset($_COOKIE['password_correct_'.$client_id]) ? $_COOKIE['password_correct_'.$client_id] : '';
195 if(empty($attributes['lockContent']) || empty($attributes['contentPassword']) || (!empty(Helper::is_password_correct($client_id)) && ($hash_pass === $password_correct)) ){
196
197 if(!empty($attributes['contentShare'])) {
198 $content_id = $attributes['clientId'];
199 $embed .= Helper::embed_content_share($content_id, $attributes);
200 }
201 echo $embed;
202 } else {
203 if(!empty($attributes['contentShare'])) {
204 $content_id = $attributes['clientId'];
205 $embed .= Helper::embed_content_share($content_id, $attributes);
206 }
207 Helper::display_password_form($client_id, $embed, $pass_hash_key, $attributes);
208 }
209 ?>
210 </div>
211 </div>
212 </div>
213 </div>
214 <?php
215
216 echo embedpress_render_block_style($attributes);
217
218
219 return ob_get_clean();
220
221
222 }
223 }
224
225 /**
226 * Make style function for embedpress render block
227 */
228
229 function embedpress_render_block_style($attributes)
230 {
231
232 $uniqid = !empty($attributes['url']) ? '.ose-uid-' . md5($attributes['url']) : '';
233 $client_id = !empty($attributes['clientId']) ? $attributes['clientId'] : '';
234
235 $custom_player = !empty($attributes['customPlayer']) ? $attributes['customPlayer'] : 0;
236 $player_color = !empty($attributes['playerColor']) ? $attributes['playerColor'] : '';
237 $player_pip = !empty($attributes['playerPip']) ? 'block' : 'none';
238 $logoX = !empty($attributes['logoX']) ? $attributes['logoX'] : 5;
239 $logoY = !empty($attributes['logoY']) ? $attributes['logoX'] : 10;
240 $player_pip = !empty($attributes['playerPip']) ? 'block' : 'none';
241
242 $playerStyle = '';
243
244 if (!empty($custom_player)) {
245 $playerStyle = '
246 [data-playerid="' . md5($client_id). '"] {
247 --plyr-color-main: ' . ($player_color && strlen($player_color) === 7
248 ? 'rgba(' . hexdec(substr($player_color, 1, 2)) . ', ' . hexdec(substr($player_color, 3, 2)) . ', ' . hexdec(substr($player_color, 5, 2)) . ', .8)!important;'
249 : 'rgba(0, 0, 0, .8)!important;'
250 ) . ';
251 }
252 [data-playerid="' . md5($client_id). '"].custom-player-preset-3, [data-playerid="' . md5($client_id). '"].custom-player-preset-4 {
253 --plyr-color-main: ' . ($player_color && strlen($player_color) === 7
254 ? 'rgb(' . hexdec(substr($player_color, 1, 2)) . ', ' . hexdec(substr($player_color, 3, 2)) . ', ' . hexdec(substr($player_color, 5, 2)) . ')!important;'
255 : 'rgba(0, 0, 0, .8)!important;'
256 ) . ';
257 }
258 [data-playerid="' . md5($client_id). '"] [data-plyr="pip"] {
259 display: '.$player_pip.';
260 }
261
262 [data-playerid="' . md5($client_id). '"] .plyr{
263 width: ' . esc_attr($attributes['width']) . 'px !important;
264 height: ' . esc_attr($attributes['height']) . 'px!important;
265 max-height: ' . esc_attr($attributes['height']) . 'px!important;
266 }
267
268 [data-playerid="' . md5($client_id). '"] img.watermark {
269 border: 0;
270 position: absolute;
271 bottom: '.$logoY.'%;
272 right: '.$logoX.'%;
273 max-width: 150px;
274 max-height: 75px;
275 opacity: 1;
276 -o-transition: opacity 0.5s ease-in-out;
277 -moz-transition: opacity 0.5s ease-in-out;
278 -webkit-transition: opacity 0.5s ease-in-out;
279 transition: opacity 0.5s ease-in-out;
280 z-index:1;
281 }
282
283 ';
284 }
285
286
287 $_iscustomlogo = '';
288
289 if(!empty($attributes['customlogo'])){
290 $_iscustomlogo = $uniqid.' img.watermark.ep-custom-logo {
291 display: block !important;
292 }';
293 }
294 $youtubeStyles = '<style>
295 ' . esc_attr($uniqid) . ' {
296 width: ' . esc_attr($attributes['width']) . 'px !important;
297 height: ' . esc_attr($attributes['height']) . 'px;
298 max-width: 100%;
299 }
300
301 ' . esc_attr($uniqid) . '>iframe {
302 height: ' . esc_attr($attributes['height']) . 'px !important;
303 max-height: ' . esc_attr($attributes['height']) . 'px !important;
304 width: 100%;
305 }
306
307 ' . esc_attr($uniqid) . ' .wistia_embed {
308 max-width: 100%;
309 }
310
311 .alignright .ose-wistia' . esc_attr($uniqid) .'{
312 margin-left: auto;
313 }
314 .alignleft .ose-wistia' . esc_attr($uniqid) .'{
315 margin-right: auto;
316 }
317 .aligncenter .ose-wistia' . esc_attr($uniqid) .'{
318 margin: auto;
319 }
320 '.$uniqid.' img.watermark{
321 display: none;
322 }
323 '.$_iscustomlogo.'
324 '.$playerStyle.'
325
326 </style>';
327
328 if($attributes['videosize'] == 'responsive') {
329
330 $width = isset($attributes['width']) ? $attributes['width'] : 600;
331 $height = $width * (9/16);
332
333
334 $youtubeStyles = '<style>
335 ' . esc_attr($uniqid) . ' {
336 position: relative;
337 width: ' . esc_attr($attributes['width']) . 'px !important;
338 height: ' . esc_attr($height) . 'px !important;
339 max-width: 100%;
340 }
341
342 .ose-wistia{
343 height: auto !important;
344 padding-top: 0;
345 }
346
347 ' . esc_attr($uniqid) . ' > iframe {
348 width: 100%;
349 height: 100%;
350 max-height:100%;
351 }
352
353 .ep-video-responsive{
354 display: inline-block!important;
355 max-width: 100%;
356 }
357 '.$uniqid.' img.watermark{
358 display: none;
359 }
360 '.$_iscustomlogo.'
361 '.$playerStyle.'
362
363 </style>';
364 }
365
366 return $youtubeStyles;
367 }
368 ?>
369