PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 4.3.1
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v4.3.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 / EmbedPress / Elementor / Widgets / Embedpress_Document.php
embedpress / EmbedPress / Elementor / Widgets Last commit date
Embedpress_Calendar.php 1 year ago Embedpress_Document.php 1 year ago Embedpress_Elementor.php 10 months ago Embedpress_Pdf.php 11 months ago
Embedpress_Document.php
816 lines
1 <?php
2
3 namespace EmbedPress\Elementor\Widgets;
4
5
6 use \Elementor\Controls_Manager as Controls_Manager;
7 use \Elementor\Modules\DynamicTags\Module as TagsModule;
8 use \Elementor\Widget_Base as Widget_Base;
9 use \Elementor\Plugin;
10 use EmbedPress\Includes\Traits\Branding;
11 use EmbedPress\Includes\Classes\Helper;
12
13 ( defined( 'ABSPATH' ) ) or die( "No direct script access allowed." );
14
15 class Embedpress_Document extends Widget_Base
16 {
17 use Branding;
18 protected $pro_class = '';
19 protected $pro_text = '';
20 public function get_name()
21 {
22 return 'embedpres_document';
23 }
24
25 public function get_title()
26 {
27 return esc_html__( 'EmbedPress Document', 'embedpress' );
28 }
29
30 public function get_categories()
31 {
32 return ['embedpress'];
33 }
34
35 public function get_custom_help_url()
36 {
37 return 'https://embedpress.com/documentation';
38 }
39
40 public function get_icon()
41 {
42 return 'icon-document';
43 }
44
45 public function get_style_depends()
46 {
47 return [
48 'embedpress-elementor-css',
49 'embedpress-style'
50 ];
51 }
52
53 public function get_script_depends()
54 {
55
56 $handler_keys = get_option('enabled_elementor_scripts', []);
57
58 $handles = [];
59
60 $handles[] = 'embedpress-pdfobject';
61 $handles[] = 'embedpress-front';
62
63 if (isset($handler_keys['enabled_ads']) && $handler_keys['enabled_ads'] === 'yes') {
64 $handles[] = 'embedpress-ads';
65 }
66 if (isset($handler_keys['enabled_docs_custom_viewer']) && $handler_keys['enabled_docs_custom_viewer'] === 'yes') {
67 $handles[] = 'embedpress_documents_viewer_script';
68 }
69
70 return $handles;
71 }
72
73 /**
74 * Get widget keywords.
75 *
76 * Retrieve the list of keywords the widget belongs to.
77 *
78 * @return array Widget keywords.
79 * @since 2.5.5
80 * @access public
81 *
82 */
83 public function get_keywords()
84 {
85 return ['embedpress', 'pdf', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'embedpress-document'];
86 }
87
88 protected function register_controls()
89 {
90 $class = 'embedpress-pro-control not-active';
91 $text = '<sup class="embedpress-pro-label" style="color:red">' . __('Pro', 'embedpress') . '</sup>';
92 $this->pro_class = apply_filters('embedpress/pro_class', $class);
93 $this->pro_text = apply_filters('embedpress/pro_text', $text);
94
95 /**
96 * EmbedPress Content Settings
97 */
98 $this->start_controls_section(
99 'embedpress_document_content_settings',
100 [
101 'label' => esc_html__( 'General', 'embedpress' ),
102 ]
103 );
104
105 $this->add_control(
106 'embedpress_document_type',
107 [
108 'label' => __( 'Document Type', 'embedpress' ),
109 'type' => Controls_Manager::SELECT,
110 'default' => 'file',
111 'options' => [
112 'file' => __( 'File', 'embedpress' ),
113 'url' => __( 'URL', 'embedpress' )
114 ],
115 ]
116 );
117 $this->add_control(
118 'embedpress_document_Uploader',
119 [
120
121 'label' => __( 'Upload File', 'embedpress' ),
122 'type' => Controls_Manager::MEDIA,
123 'dynamic' => [
124 'active' => true,
125 'categories' => [
126 TagsModule::MEDIA_CATEGORY,
127 ],
128 ],
129 'media_type' => [
130 'application/pdf',
131 'application/msword',
132 'application/vnd.ms-powerpoint',
133 'application/vnd.ms-excel',
134 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
135 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
136 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
137 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' // Added PPSX MIME type
138
139 ],
140 'description' => __( 'Upload a file or pick one from your media library for embed. Supported File Type: PDF, DOC/DOCX, PPT/PPTX, XLS/XLSX etc.',
141 'embedpress' ),
142 'condition' => [
143 'embedpress_document_type' => 'file'
144 ],
145 ]
146 );
147
148 $this->add_control(
149 'embedpress_document_file_link',
150 [
151 'label' => __( 'URL', 'embedpress' ),
152 'type' => Controls_Manager::URL,
153 'placeholder' => __( 'https://your-link.com/file.pdf', 'embedpress' ),
154 'show_external' => false,
155 'dynamic' => [
156 'active' => true,
157 ],
158 'default' => [
159 'url' => ''
160 ],
161 'condition' => [
162 'embedpress_document_type' => 'url'
163 ],
164 ]
165 );
166
167 $this->add_responsive_control(
168 'embedpress_elementor_document_width',
169 [
170 'type' => \Elementor\Controls_Manager::SLIDER,
171 'label' => esc_html__( 'Width', 'embedpress' ),
172 'range' => [
173 'px' => [
174 'min' => 1,
175 'max' => 1000,
176 ],
177 ],
178 // 'devices' => [ 'desktop', 'tablet', 'mobile' ],
179 'default' => [
180 'unit' => 'px',
181 'size' => !empty($value = intval(Helper::get_options_value('enableEmbedResizeWidth'))) ? $value : 600,
182 ],
183 // 'desktop_default' => [
184 // 'unit' => 'px',
185 // 'size' => 600,
186 // ],
187 // 'tablet_default' => [
188 // 'size' => 400,
189 // 'unit' => 'px',
190 // ],
191 // 'mobile_default' => [
192 // 'size' => 300,
193 // 'unit' => 'px',
194 // ],
195 'selectors' => [
196 '{{WRAPPER}} .embedpress-document-embed iframe' => 'width: {{SIZE}}{{UNIT}} !important; max-width: 100%; background-color: #fff',
197 '{{WRAPPER}} .embedpress-document-embed .pdfobject-container' => 'width: {{SIZE}}{{UNIT}} !important; max-width: 100%',
198 '{{WRAPPER}} .embedpress-document-embed' => 'width: {{SIZE}}{{UNIT}} !important; max-width: 100%',
199 ],
200 ]
201 );
202 $this->add_responsive_control(
203 'embedpress_elementor_document_height',
204 [
205 'type' => \Elementor\Controls_Manager::SLIDER,
206 'label' => esc_html__( 'Height', 'embedpress' ),
207 'range' => [
208 'px' => [
209 'min' => 1,
210 'max' => 1500,
211 ],
212 ],
213 // 'devices' => [ 'desktop', 'tablet', 'mobile' ],
214 'default' => [
215 'unit' => 'px',
216 'size' => !empty($value = intval(Helper::get_options_value('enableEmbedResizeHeight'))) ? $value : 600,
217 ],
218 // 'desktop_default' => [
219 // 'unit' => 'px',
220 // 'size' => 600,
221 // ],
222 // 'tablet_default' => [
223 // 'size' => 400,
224 // 'unit' => 'px',
225 // ],
226 // 'mobile_default' => [
227 // 'size' => 300,
228 // 'unit' => 'px',
229 // ],
230 'selectors' => [
231 '{{WRAPPER}} .embedpress-document-embed iframe' => 'height: {{SIZE}}{{UNIT}}!important;',
232 '{{WRAPPER}} .embedpress-document-embed .pdfobject-container' => 'height: {{SIZE}}{{UNIT}};',
233 '{{WRAPPER}} .embedpress-document-embed ' => 'max-height: {{SIZE}}{{UNIT}};',
234 ],
235 ]
236 );
237
238 $this->add_responsive_control(
239 'embedpress_elementor_document_align',
240 [
241 'label' => __( 'Alignment', 'embedpress' ),
242 'type' => Controls_Manager::CHOOSE,
243 'options' => [
244 'left' => [
245 'title' => __( 'Left', 'embedpress' ),
246 'icon' => 'eicon-text-align-left',
247 ],
248 'center' => [
249 'title' => __( 'Center', 'embedpress' ),
250 'icon' => 'eicon-text-align-center',
251 ],
252 'right' => [
253 'title' => __( 'Right', 'embedpress' ),
254 'icon' => 'eicon-text-align-right',
255 ]
256 ],
257 'prefix_class' => 'elementor%s-align-',
258 'default' => '',
259 ]
260 );
261
262 $this->add_control(
263 'embedpress_document_powered_by',
264 [
265 'label' => __( 'Powered By', 'embedpress' ),
266 'type' => Controls_Manager::SWITCHER,
267 'label_on' => __( 'Show', 'embedpress' ),
268 'label_off' => __( 'Hide', 'embedpress' ),
269 'return_value' => 'yes',
270 'default' => apply_filters( 'embedpress_document_powered_by_control', 'yes' ),
271 ]
272 );
273
274 $this->init_branding_controls( 'document');
275
276 $this->end_controls_section();
277
278 /**
279 * EmbedPress Document control settings
280 */
281
282 $this->start_controls_section(
283 'embedpress_doc_content_settings',
284 [
285 'label' => esc_html__('Controls', 'embedpress'),
286 ]
287 );
288
289 $this->add_control(
290 'important_note',
291 [
292 'type' => \Elementor\Controls_Manager::RAW_HTML,
293 'raw' => esc_html__( 'Download feature is available when link has the document extension at the end.', 'embedpress' ),
294 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
295 'condition' => [
296 'embedpress_document_type' => 'url',
297 ],
298 ]
299 );
300
301 $this->add_control(
302 'important_note_2',
303 [
304 'type' => \Elementor\Controls_Manager::RAW_HTML,
305 'raw' => esc_html__( 'Toolbar and additional feature options become accessible upon selecting the Custom Viewer mode.', 'embedpress' ),
306 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
307 'condition' => [
308 'embedpress_document_type' => 'file',
309 'embedpress_document_viewer' => 'office',
310 ],
311 ]
312 );
313
314
315 $this->add_control(
316 'embedpress_document_viewer',
317 [
318 'label' => __('Viewer', 'embedpress'),
319 'type' => Controls_Manager::SELECT,
320 'default' => 'custom',
321 'options' => [
322 'custom' => __('Custom', 'embedpress'),
323 'office' => __('MS Office', 'embedpress'),
324 'google' => __('Google', 'embedpress'),
325 ],
326 ]
327 );
328
329 $this->add_control(
330 'embedpress_theme_mode',
331 [
332 'label' => __('Theme', 'embedpress'),
333 'type' => Controls_Manager::SELECT,
334 'default' => 'default',
335 'options' => [
336 'default' => __('System Default', 'embedpress'),
337 'dark' => __('Dark', 'embedpress'),
338 'light' => __('Light', 'embedpress'),
339 'custom' => __('Custom', 'embedpress')
340 ],
341 'condition' => [
342 'embedpress_document_viewer' => 'custom',
343 ],
344
345 ]
346 );
347
348 $this->add_control(
349 'embedpress_doc_custom_color',
350 [
351 'label' => esc_html__( 'Color', 'embedpress' ),
352 'type' => \Elementor\Controls_Manager::COLOR,
353 'condition' => [
354 'embedpress_theme_mode' => 'custom',
355 'embedpress_document_viewer' => 'custom',
356 ],
357 ]
358 );
359
360 $this->add_control(
361 'doc_toolbar',
362 [
363 'label' => sprintf(__('Toolbar %s', 'embedpress'), $this->pro_text),
364 'type' => Controls_Manager::SWITCHER,
365 'label_on' => __('Show', 'embedpress'),
366 'label_off' => __('Hide', 'embedpress'),
367 'return_value' => 'yes',
368 'default' => 'yes',
369 'classes' => $this->pro_class,
370 'condition' => [
371 'embedpress_document_viewer' => 'custom',
372 ],
373 ]
374 );
375
376
377 $this->add_control(
378 'doc_fullscreen_mode',
379 [
380 'label' => __('Fullscreen', 'embedpress'),
381 'type' => Controls_Manager::SWITCHER,
382 'label_on' => __('Show', 'embedpress'),
383 'label_off' => __('Hide', 'embedpress'),
384 'return_value' => 'yes',
385 'default' => 'yes',
386 'condition' => [
387 'doc_toolbar' => 'yes',
388 'embedpress_document_viewer' => 'custom',
389 ],
390 ]
391 );
392
393 $this->add_control(
394 'doc_print_download',
395 [
396 'label' => sprintf(__('Print/Download %s', 'embedpress'), $this->pro_text),
397 'type' => Controls_Manager::SWITCHER,
398 'label_on' => __('Show', 'embedpress'),
399 'label_off' => __('Hide', 'embedpress'),
400 'return_value' => 'yes',
401 'default' => 'yes',
402 'classes' => $this->pro_class,
403 'condition' => [
404 'doc_toolbar' => 'yes',
405 'embedpress_document_viewer' => 'custom',
406 ],
407 ]
408 );
409
410
411 $this->add_control(
412 'doc_draw',
413 [
414 'label' => __('Draw', 'embedpress'),
415 'type' => Controls_Manager::SWITCHER,
416 'label_on' => __('Show', 'embedpress'),
417 'label_off' => __('Hide', 'embedpress'),
418 'return_value' => 'yes',
419 'default' => 'yes',
420 'condition' => [
421 'doc_toolbar' => 'yes',
422 'embedpress_document_viewer' => 'custom',
423 ],
424 ]
425 );
426
427
428 $this->end_controls_section();
429
430 do_action( 'extend_elementor_controls', $this, '_doc_', $this->pro_text, $this->pro_class);
431
432 }
433
434 private function is_pdf( $url )
435 {
436 $arr = explode( '.', $url );
437 return end( $arr ) === 'pdf';
438 }
439
440 protected function render()
441 {
442 $settings = $this->get_settings();
443
444 Helper::get_enable_settings_data_for_scripts($settings);
445
446 $client_id = esc_attr($this->get_id());
447 $pass_hash_key = md5($settings['embedpress_doc_lock_content_password']);
448 $url = esc_url($this->get_file_url());
449 $id = 'embedpress-pdf-' . esc_attr($this->get_id());
450
451 if ($settings['embedpress_document_type'] === 'url') {
452 if (!empty($settings['__dynamic__']['embedpress_document_file_link'])) {
453 $decode_url = urldecode($settings['__dynamic__']['embedpress_document_file_link']);
454 preg_match('/name="([^"]+)"/', $decode_url, $name_matches);
455
456 if (!empty($name_matches[1])) {
457 $name_key = $name_matches[1];
458 $pattern = '';
459
460 if ($name_key === 'acf-url' && class_exists('ACF') && function_exists('get_field')) {
461 $pattern = '/"key":"[^"]+:(.*?)"/';
462 } elseif ($name_key === 'toolset-url' && class_exists('Types_Helper_Output_Meta_Box')) {
463 $pattern = '/"key":"[^"]+:(.*?)"/';
464 } elseif ($name_key === 'jet-post-custom-field' && class_exists('Jet_Engine')) {
465 $pattern = '/"meta_field":"([^"]+)"/';
466 }
467
468 if ($pattern) {
469 preg_match($pattern, $decode_url, $matches);
470
471 if (!empty($matches[1])) {
472 $get_field_key = sanitize_key($matches[1]);
473
474 $url = '';
475
476 if ($name_key === 'acf-url') {
477 $url = get_field($get_field_key);
478 } elseif ($name_key === 'toolset-url') {
479 $url = get_post_meta(get_the_ID(), 'wpcf-' . $get_field_key, true);
480 } elseif ($name_key === 'jet-post-custom-field') {
481 $url = get_post_meta(get_the_ID(), $get_field_key, true);
482 }
483
484 $url = apply_filters('embedpress/custom_meta_field_value', $url, $get_field_key);
485
486 // Fallback
487 if (empty($url)) {
488 preg_match('/"fallback":"([^"]+)"/', $decode_url, $fallback_matches);
489 if (!empty($fallback_matches[1])) {
490 $url = $fallback_matches[1];
491 }
492 }
493
494 // Final sanitization before output
495 $url = esc_url_raw($url);
496 }
497 }
498 }
499 }
500 }
501 $hash_pass = hash('sha256', wp_salt(32) . md5($settings['embedpress_doc_lock_content_password']));
502
503 $dimension = '';
504 if (
505 empty($settings['embedpress_doc_lock_content']) &&
506 empty($settings['embedpress_doc_lock_content_password']) &&
507 isset($settings['embedpress_elementor_document_width']) &&
508 isset($settings['embedpress_elementor_document_height'])
509 ) {
510 $dimension = "width: " . esc_attr($settings['embedpress_elementor_document_width']['size']) . "px; height: " . esc_attr($settings['embedpress_elementor_document_height']['size']) . "px";
511 }
512
513 $content_locked_class = '';
514 if (!empty($settings['embedpress_doc_lock_content']) && !empty($settings['embedpress_doc_lock_content_password'])) {
515 $content_locked_class = 'ep-content-locked';
516 }
517
518 $this->add_render_attribute('embedpres-pdf-render', [
519 'class' => ['embedpress-embed-document-pdf', $id],
520 'data-emid' => esc_attr($id)
521 ]);
522
523 Helper::get_source_data(md5($this->get_id()) . '_eb_elementor', $url, 'elementor_source_data', 'elementor_temp_source_data');
524
525 $this->add_render_attribute('embedpress-document', [
526 'class' => ['embedpress-document-embed', 'ep-doc-' . md5($id), 'ose-document', $content_locked_class]
527 ]);
528
529 $embed_settings = [];
530 $embed_settings['customThumbnail'] = !empty($settings['embedpress_doc_content_share_custom_thumbnail']['url']) ? esc_url($settings['embedpress_doc_content_share_custom_thumbnail']['url']) : '';
531
532 $embed_settings['customTitle'] = !empty($settings['embedpress_doc_content_title']) ? sanitize_text_field($settings['embedpress_doc_content_title']) : sanitize_text_field(Helper::get_file_title($url));
533
534 $embed_settings['customDescription'] = !empty($settings['embedpress_doc_content_descripiton']) ? sanitize_text_field($settings['embedpress_doc_content_descripiton']) : sanitize_text_field(Helper::get_file_title($url));
535
536 $embed_settings['sharePosition'] = !empty($settings['embedpress_doc_content_share_position']) ? esc_attr($settings['embedpress_doc_content_share_position']) : 'right';
537
538 // Add social share platform settings
539 $embed_settings['shareFacebook'] = !empty($settings['embedpress_doc_share_facebook']) ? true : false;
540 $embed_settings['shareTwitter'] = !empty($settings['embedpress_doc_share_twitter']) ? true : false;
541 $embed_settings['sharePinterest'] = !empty($settings['embedpress_doc_share_pinterest']) ? true : false;
542 $embed_settings['shareLinkedin'] = !empty($settings['embedpress_doc_share_linkedin']) ? true : false;
543
544 $embed_settings['lockHeading'] = !empty($settings['embedpress_doc_lock_content_heading']) ? sanitize_text_field($settings['embedpress_doc_lock_content_heading']) : '';
545
546 $embed_settings['lockSubHeading'] = !empty($settings['embedpress_doc_lock_content_sub_heading']) ? sanitize_text_field($settings['embedpress_doc_lock_content_sub_heading']) : '';
547
548 $embed_settings['lockErrorMessage'] = !empty($settings['embedpress_doc_lock_content_error_message']) ? sanitize_text_field($settings['embedpress_doc_lock_content_error_message']) : '';
549
550 $embed_settings['passwordPlaceholder'] = !empty($settings['embedpress_doc_password_placeholder']) ? esc_attr($settings['embedpress_doc_password_placeholder']) : '';
551
552 $embed_settings['submitButtonText'] = !empty($settings['embedpress_doc_submit_button_text']) ? sanitize_text_field($settings['embedpress_doc_submit_button_text']) : '';
553
554 $embed_settings['submitUnlockingText'] = !empty($settings['embedpress_doc_submit_Unlocking_text']) ? sanitize_text_field($settings['embedpress_doc_submit_Unlocking_text']) : '';
555
556 $embed_settings['enableFooterMessage'] = !empty($settings['embedpress_doc_enable_footer_message']) ? esc_attr($settings['embedpress_doc_enable_footer_message']) : '';
557
558 $embed_settings['footerMessage'] = !empty($settings['embedpress_doc_lock_content_footer_message']) ? sanitize_text_field($settings['embedpress_doc_lock_content_footer_message']) : '';
559
560 $embed_settings['userRole'] = !empty($settings['embedpress_doc_select_roles']) ? $settings['embedpress_doc_select_roles'] : [];
561
562 $embed_settings['protectionMessage'] = !empty($settings['embedpress_doc_protection_message']) ? $settings['embedpress_doc_protection_message'] : '';
563
564
565 $content_share_class = '';
566 $share_position_class = '';
567 $share_position = isset($settings['embedpress_doc_content_share_position']) ? esc_attr($settings['embedpress_doc_content_share_position']) : 'right';
568
569 if (!empty($settings['embedpress_doc_content_share'])) {
570 $content_share_class = 'ep-content-share-enabled';
571 $share_position_class = 'ep-share-position-' . $share_position;
572 }
573
574 $password_correct = isset($_COOKIE['password_correct_' . $client_id]) ? sanitize_text_field($_COOKIE['password_correct_' . $client_id]) : '';
575
576 $content_protection_class = 'ep-content-protection-enabled';
577 if (empty($settings['embedpress_doc_lock_content']) || empty($settings['embedpress_doc_lock_content_password']) || $hash_pass === $password_correct) {
578 $content_protection_class = 'ep-content-protection-disabled';
579 }
580
581 $adsAtts = '';
582
583 if (!empty($settings['adManager'])) {
584 $ad = base64_encode(json_encode($settings)); // Using WordPress JSON encoding function
585 $adsAtts = 'data-sponsored-id="' . esc_attr($client_id) . '" data-sponsored-attrs="' . esc_attr($ad) . '" class="sponsored-mask"';
586 }
587
588 ?>
589
590 <div <?php echo $this->get_render_attribute_string('embedpress-document'); ?> style="<?php echo esc_attr($dimension); ?>; max-width:100%; display: inline-block">
591
592 <?php
593 do_action('embedpress_document_after_embed', $settings, $url, $id, $this);
594
595 if ($url != '') {
596 $url = esc_url($url);
597
598 if ($this->is_pdf($url)) {
599 $this->add_render_attribute('embedpres-pdf-render', 'data-emsrc', esc_url($url));
600 $embed_content = '<div ' . $this->get_render_attribute_string('embedpres-pdf-render') . '>';
601
602 $embed_content .= '<iframe title="' . esc_attr(Helper::get_file_title($url)) . '" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true" style="' . esc_attr($dimension) . '; max-width:100%;" src="' . esc_url($url) . '"></iframe>';
603
604 if ($settings['embedpress_document_powered_by'] === 'yes') {
605 $embed_content .= sprintf('<p class="embedpress-el-powered">%s</p>', esc_html__('Powered By EmbedPress', 'embedpress'));
606 }
607 $embed_content .= '</div>';
608
609 if (Plugin::$instance->editor->is_edit_mode()) {
610 $embed_content .= $this->render_editor_script($id, $url);
611 }
612 } else {
613 if (Helper::is_file_url($url)) {
614 $view_link = '//view.officeapps.live.com/op/embed.aspx?src=' . urlencode($url) . '&embedded=true';
615 } else {
616 $view_link = 'https://drive.google.com/viewerng/viewer?url=' . urlencode($url) . '&embedded=true&chrome=false';
617 }
618
619
620 if($settings['embedpress_document_viewer'] === 'custom')
621 {
622 if (Helper::is_file_url($url)) {
623 $view_link = '//view.officeapps.live.com/op/embed.aspx?src=' . urlencode($url) . '&embedded=true';
624 } else {
625 $view_link = 'https://drive.google.com/viewerng/viewer?url=' . urlencode($url) . '&embedded=true&chrome=false';
626 }
627 }
628 elseif($settings['embedpress_document_viewer'] === 'office')
629 {
630 $view_link = '//view.officeapps.live.com/op/embed.aspx?src=' . urlencode($url) . '&embedded=true';
631 }
632 elseif($settings['embedpress_document_viewer'] === 'google')
633 {
634 $view_link = '//docs.google.com/gview?embedded=true&url=' . urlencode($url);
635 }
636
637 $hostname = parse_url($url, PHP_URL_HOST);
638 $domain = implode(".", array_slice(explode(".", $hostname), -2));
639
640 if ($domain == "google.com") {
641 $view_link = $url . '?embedded=true';
642 if (strpos($view_link, '/presentation/')) {
643 $view_link = Helper::get_google_presentation_url($url);
644 }
645 }
646
647 $embed_content = '<div ' . $this->get_render_attribute_string('embedpres-pdf-render') . '>';
648
649 $is_powered_by = '';
650 if ($settings['embedpress_document_powered_by'] === 'yes') {
651 $is_powered_by = 'ep-powered-by-enabled';
652 }
653
654 $is_download_enabled = ' enabled-file-download';
655 if ($settings['doc_print_download'] !== 'yes') {
656 $is_download_enabled = '';
657 }
658
659 $file_extenstion = 'link';
660 if (!empty(Helper::is_file_url($url))) {
661 $file_extenstion = Helper::get_extension_from_file_url($url);
662 }
663
664 $is_masked = '';
665
666 if($settings['embedpress_document_viewer'] === 'custom')
667 {
668 $is_masked = 'ep-file-download-option-masked ';
669 }
670
671 $is_custom_theme = '';
672
673 if ($settings['embedpress_theme_mode'] == 'custom') {
674 $custom_color = sanitize_text_field($settings['embedpress_doc_custom_color']);
675
676 $is_custom_theme = 'data-custom-color="'.esc_attr($custom_color).'"';
677 }
678
679 $embed_content .= '<div class="'.esc_attr( $is_masked ).'ep-file-' . esc_attr($file_extenstion) . ' ' . $is_powered_by . '' . $is_download_enabled . '" data-theme-mode="' . esc_attr($settings['embedpress_theme_mode']) . '"' . $is_custom_theme . ' data-id="' . esc_attr($this->get_id()) . '">';
680
681 $sandbox = '';
682 if ($settings['doc_print_download'] === 'yes') {
683 $sandbox = 'sandbox="allow-forms allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-same-origin allow-scripts allow-top-navigation allow-top-navigation-by-user-activation"';
684 }
685
686 $embed_content .= '<iframe title="' . esc_attr(Helper::get_file_title($url)) . '" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true" style="' . esc_attr($dimension) . '; max-width:100%;" src="' . esc_url($view_link) . '" ' . $sandbox . '>
687 </iframe>';
688
689 if ($settings['embedpress_document_viewer'] === 'custom' && $settings['doc_print_download'] === 'yes' && (Helper::get_extension_from_file_url($url) === 'pptx' || Helper::get_extension_from_file_url($url) === 'ppt' || Helper::get_extension_from_file_url($url) === 'xls' || Helper::get_extension_from_file_url($url) === 'xlsx')) {
690 $embed_content .= '<div class="embed-download-disabled"></div>';
691 }
692
693 if (
694 $settings['doc_draw'] === 'yes' &&
695 isset($settings['embedpress_elementor_document_width']) &&
696 isset($settings['embedpress_elementor_document_height'])
697 ) {
698 $embed_content .= '<canvas class="ep-doc-canvas" width="' . esc_attr($settings['embedpress_elementor_document_width']['size']) . '" height="' . esc_attr($settings['embedpress_elementor_document_height']['size']) . '" ></canvas>';
699 }
700
701 if ($settings['doc_print_download'] === 'yes' && Helper::get_extension_from_file_url($url) !== 'pptx') {
702 $embed_content .= '<div style="width: 40px; height: 40px; position: absolute; opacity: 0; right: 12px; top: 12px;"></div>';
703 }
704
705 if (!empty($settings['doc_toolbar']) && $settings['embedpress_document_viewer'] === 'custom') {
706 $embed_content .= '<div class="ep-external-doc-icons">';
707
708 if (empty(Helper::is_file_url($url))) {
709 $embed_content .= Helper::ep_get_popup_icon();
710 }
711
712 if (!empty(Helper::is_file_url($url))) {
713 if (!empty($settings['doc_print_download'])) {
714 $embed_content .= Helper::ep_get_print_icon();
715 $embed_content .= Helper::ep_get_download_icon();
716 }
717 }
718 if (!empty($settings['doc_draw'])) {
719 $embed_content .= Helper::ep_get_draw_icon();
720 }
721 if (!empty($settings['doc_fullscreen_mode'])) {
722 $embed_content .= Helper::ep_get_fullscreen_icon();
723 $embed_content .= Helper::ep_get_minimize_icon();
724 }
725
726 $embed_content .= '</div>';
727 }
728 $embed_content .= '</div>';
729
730 if ($settings['embedpress_document_powered_by'] === 'yes') {
731 $embed_content .= '<div>';
732 $embed_content .= sprintf('<p class="embedpress-el-powered">%s</p>', esc_html__('Powered By EmbedPress', 'embedpress'));
733 $embed_content .= '</div>';
734 }
735
736 $embed_content .= '</div>';
737 }
738 }
739
740
741 ?>
742 <div <?php echo $adsAtts; ?>>
743
744 <div id="ep-elementor-content-<?php echo esc_attr($client_id) ?>" class="ep-elementor-content <?php if (!empty($settings['embedpress_doc_content_share'])) : echo esc_attr('position-' . $settings['embedpress_doc_content_share_position'] . '-wraper'); endif; ?> <?php echo esc_attr($content_share_class . ' ' . $share_position_class . ' ' . $content_protection_class); ?>">
745 <div id="<?php echo esc_attr($this->get_id()); ?>" class="ep-embed-content-wraper">
746 <?php
747
748 $content_id = $client_id;
749 if (
750 (empty($settings['embedpress_doc_lock_content']) || ($settings['embedpress_doc_protection_type'] == 'password' && empty($settings['embedpress_doc_lock_content_password'])) || $settings['embedpress_doc_lock_content'] == 'no') ||
751 ($settings['embedpress_doc_protection_type'] == 'password' && !empty(Helper::is_password_correct($client_id)) && ($hash_pass === $password_correct) ) ||
752 !apply_filters('embedpress/is_allow_rander', false) ||
753 ($settings['embedpress_doc_protection_type'] == 'user-role' && Helper::has_allowed_roles($embed_settings['userRole']))
754 ) {
755
756 if (!empty($settings['embedpress_doc_content_share'])) {
757 $embed_content .= Helper::embed_content_share($content_id, $embed_settings);
758 }
759 if (!empty($embed_content)) {
760 echo $embed_content;
761 }
762 } else {
763 if (!empty($settings['embedpress_doc_content_share'])) {
764 $embed_content .= Helper::embed_content_share($content_id, $embed_settings);
765 }
766 if ($settings['embedpress_doc_protection_type'] == 'password') {
767 do_action('embedpress/display_password_form', $client_id, $embed_content, $pass_hash_key, $embed_settings);
768 } else {
769 do_action('embedpress/content_protection_content', $client_id, $embed_settings['protectionMessage'], $embed_settings['userRole']);
770 }
771 }
772 ?>
773 </div>
774 </div>
775 <?php
776 if (!empty($settings['adManager'])) {
777 $embed_content = apply_filters('embedpress/generate_ad_template', $embed_content, $client_id, $settings, 'elementor');
778 }
779 ?>
780 </div>
781 </div>
782
783 <?php
784 }
785
786
787 private function get_file_url()
788 {
789 $settings = $this->get_settings();
790 $file_url = $settings['embedpress_document_type'] === 'url' ? esc_url($settings['embedpress_document_file_link']['url']) : esc_url($settings['embedpress_document_Uploader']['url']);
791 return $file_url;
792 }
793
794
795 protected function render_editor_script( $id, $url )
796 {
797 ?>
798 <script>
799 (function ($) {
800 'use strict';
801 $(document).ready(function () {
802 var selector = $('.embedpress-embed-document-pdf');
803 let option = {
804 forceObject: false,
805 };
806 if (selector.length) {
807 PDFObject.embed("<?php echo $url; ?>", "<?php echo '.' . $id; ?>", option);
808 }
809 });
810 })(jQuery);
811 </script>
812 <?php
813 }
814
815 }
816