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