PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 4.2.4
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v4.2.4
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 1 year ago Embedpress_Pdf.php 1 year ago
Embedpress_Document.php
782 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 (class_exists('ACF') && function_exists('get_field')) {
453 if (!empty($settings['__dynamic__']) && !empty($settings['__dynamic__']['embedpress_document_file_link'])) {
454 $decode_url = urldecode(($settings['__dynamic__']['embedpress_document_file_link']));
455 preg_match('/"key":"([^"]+):([^"]+)"/', $decode_url, $matches);
456 if (isset($matches[0])) {
457 if (isset($matches[1])) {
458 $get_acf_key = $matches[1];
459 $url = esc_url(get_field($get_acf_key));
460
461 if (empty($url)) {
462 $pattern = '/"fallback":"([^"]+)"/';
463 preg_match($pattern, $decode_url, $matches);
464
465 if (isset($matches[1])) {
466 $url = esc_url($matches[1]);
467 }
468 }
469 }
470 }
471 }
472 }
473 }
474 $hash_pass = hash('sha256', wp_salt(32) . md5($settings['embedpress_doc_lock_content_password']));
475
476 $dimension = '';
477 if (
478 empty($settings['embedpress_doc_lock_content']) &&
479 empty($settings['embedpress_doc_lock_content_password']) &&
480 isset($settings['embedpress_elementor_document_width']) &&
481 isset($settings['embedpress_elementor_document_height'])
482 ) {
483 $dimension = "width: " . esc_attr($settings['embedpress_elementor_document_width']['size']) . "px; height: " . esc_attr($settings['embedpress_elementor_document_height']['size']) . "px";
484 }
485
486 $content_locked_class = '';
487 if (!empty($settings['embedpress_doc_lock_content']) && !empty($settings['embedpress_doc_lock_content_password'])) {
488 $content_locked_class = 'ep-content-locked';
489 }
490
491 $this->add_render_attribute('embedpres-pdf-render', [
492 'class' => ['embedpress-embed-document-pdf', $id],
493 'data-emid' => esc_attr($id)
494 ]);
495
496 Helper::get_source_data(md5($this->get_id()) . '_eb_elementor', $url, 'elementor_source_data', 'elementor_temp_source_data');
497
498 $this->add_render_attribute('embedpress-document', [
499 'class' => ['embedpress-document-embed', 'ep-doc-' . md5($id), 'ose-document', $content_locked_class]
500 ]);
501
502 $embed_settings = [];
503 $embed_settings['customThumbnail'] = !empty($settings['embedpress_doc_content_share_custom_thumbnail']['url']) ? esc_url($settings['embedpress_doc_content_share_custom_thumbnail']['url']) : '';
504
505 $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));
506
507 $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));
508
509 $embed_settings['sharePosition'] = !empty($settings['embedpress_doc_content_share_position']) ? esc_attr($settings['embedpress_doc_content_share_position']) : 'right';
510
511 $embed_settings['lockHeading'] = !empty($settings['embedpress_doc_lock_content_heading']) ? sanitize_text_field($settings['embedpress_doc_lock_content_heading']) : '';
512
513 $embed_settings['lockSubHeading'] = !empty($settings['embedpress_doc_lock_content_sub_heading']) ? sanitize_text_field($settings['embedpress_doc_lock_content_sub_heading']) : '';
514
515 $embed_settings['lockErrorMessage'] = !empty($settings['embedpress_doc_lock_content_error_message']) ? sanitize_text_field($settings['embedpress_doc_lock_content_error_message']) : '';
516
517 $embed_settings['passwordPlaceholder'] = !empty($settings['embedpress_doc_password_placeholder']) ? esc_attr($settings['embedpress_doc_password_placeholder']) : '';
518
519 $embed_settings['submitButtonText'] = !empty($settings['embedpress_doc_submit_button_text']) ? sanitize_text_field($settings['embedpress_doc_submit_button_text']) : '';
520
521 $embed_settings['submitUnlockingText'] = !empty($settings['embedpress_doc_submit_Unlocking_text']) ? sanitize_text_field($settings['embedpress_doc_submit_Unlocking_text']) : '';
522
523 $embed_settings['enableFooterMessage'] = !empty($settings['embedpress_doc_enable_footer_message']) ? esc_attr($settings['embedpress_doc_enable_footer_message']) : '';
524
525 $embed_settings['footerMessage'] = !empty($settings['embedpress_doc_lock_content_footer_message']) ? sanitize_text_field($settings['embedpress_doc_lock_content_footer_message']) : '';
526
527 $embed_settings['userRole'] = !empty($settings['embedpress_doc_select_roles']) ? $settings['embedpress_doc_select_roles'] : [];
528
529 $embed_settings['protectionMessage'] = !empty($settings['embedpress_doc_protection_message']) ? $settings['embedpress_doc_protection_message'] : '';
530
531
532 $content_share_class = '';
533 $share_position_class = '';
534 $share_position = isset($settings['embedpress_doc_content_share_position']) ? esc_attr($settings['embedpress_doc_content_share_position']) : 'right';
535
536 if (!empty($settings['embedpress_doc_content_share'])) {
537 $content_share_class = 'ep-content-share-enabled';
538 $share_position_class = 'ep-share-position-' . $share_position;
539 }
540
541 $password_correct = isset($_COOKIE['password_correct_' . $client_id]) ? sanitize_text_field($_COOKIE['password_correct_' . $client_id]) : '';
542
543 $content_protection_class = 'ep-content-protection-enabled';
544 if (empty($settings['embedpress_doc_lock_content']) || empty($settings['embedpress_doc_lock_content_password']) || $hash_pass === $password_correct) {
545 $content_protection_class = 'ep-content-protection-disabled';
546 }
547
548 $adsAtts = '';
549
550 if (!empty($settings['adManager'])) {
551 $ad = base64_encode(json_encode($settings)); // Using WordPress JSON encoding function
552 $adsAtts = 'data-sponsored-id="' . esc_attr($client_id) . '" data-sponsored-attrs="' . esc_attr($ad) . '" class="sponsored-mask"';
553 }
554
555 ?>
556
557 <div <?php echo $this->get_render_attribute_string('embedpress-document'); ?> style="<?php echo esc_attr($dimension); ?>; max-width:100%; display: inline-block">
558
559 <?php
560 do_action('embedpress_document_after_embed', $settings, $url, $id, $this);
561
562 if ($url != '') {
563 $url = esc_url($url);
564
565 if ($this->is_pdf($url)) {
566 $this->add_render_attribute('embedpres-pdf-render', 'data-emsrc', esc_url($url));
567 $embed_content = '<div ' . $this->get_render_attribute_string('embedpres-pdf-render') . '>';
568
569 $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>';
570
571 if ($settings['embedpress_document_powered_by'] === 'yes') {
572 $embed_content .= sprintf('<p class="embedpress-el-powered">%s</p>', esc_html__('Powered By EmbedPress', 'embedpress'));
573 }
574 $embed_content .= '</div>';
575
576 if (Plugin::$instance->editor->is_edit_mode()) {
577 $embed_content .= $this->render_editor_script($id, $url);
578 }
579 } else {
580 if (Helper::is_file_url($url)) {
581 $view_link = '//view.officeapps.live.com/op/embed.aspx?src=' . urlencode($url) . '&embedded=true';
582 } else {
583 $view_link = 'https://drive.google.com/viewerng/viewer?url=' . urlencode($url) . '&embedded=true&chrome=false';
584 }
585
586
587 if($settings['embedpress_document_viewer'] === 'custom')
588 {
589 if (Helper::is_file_url($url)) {
590 $view_link = '//view.officeapps.live.com/op/embed.aspx?src=' . urlencode($url) . '&embedded=true';
591 } else {
592 $view_link = 'https://drive.google.com/viewerng/viewer?url=' . urlencode($url) . '&embedded=true&chrome=false';
593 }
594 }
595 elseif($settings['embedpress_document_viewer'] === 'office')
596 {
597 $view_link = '//view.officeapps.live.com/op/embed.aspx?src=' . urlencode($url) . '&embedded=true';
598 }
599 elseif($settings['embedpress_document_viewer'] === 'google')
600 {
601 $view_link = '//docs.google.com/gview?embedded=true&url=' . urlencode($url);
602 }
603
604 $hostname = parse_url($url, PHP_URL_HOST);
605 $domain = implode(".", array_slice(explode(".", $hostname), -2));
606
607 if ($domain == "google.com") {
608 $view_link = $url . '?embedded=true';
609 if (strpos($view_link, '/presentation/')) {
610 $view_link = Helper::get_google_presentation_url($url);
611 }
612 }
613
614 $embed_content = '<div ' . $this->get_render_attribute_string('embedpres-pdf-render') . '>';
615
616 $is_powered_by = '';
617 if ($settings['embedpress_document_powered_by'] === 'yes') {
618 $is_powered_by = 'ep-powered-by-enabled';
619 }
620
621 $is_download_enabled = ' enabled-file-download';
622 if ($settings['doc_print_download'] !== 'yes') {
623 $is_download_enabled = '';
624 }
625
626 $file_extenstion = 'link';
627 if (!empty(Helper::is_file_url($url))) {
628 $file_extenstion = Helper::get_extension_from_file_url($url);
629 }
630
631 $is_masked = '';
632
633 if($settings['embedpress_document_viewer'] === 'custom')
634 {
635 $is_masked = 'ep-file-download-option-masked ';
636 }
637
638 $is_custom_theme = '';
639
640 if ($settings['embedpress_theme_mode'] == 'custom') {
641 $custom_color = sanitize_text_field($settings['embedpress_doc_custom_color']);
642
643 $is_custom_theme = 'data-custom-color="'.esc_attr($custom_color).'"';
644 }
645
646 $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()) . '">';
647
648 $sandbox = '';
649 if ($settings['doc_print_download'] === 'yes') {
650 $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"';
651 }
652
653 $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 . '>
654 </iframe>';
655
656 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')) {
657 $embed_content .= '<div class="embed-download-disabled"></div>';
658 }
659
660 if (
661 $settings['doc_draw'] === 'yes' &&
662 isset($settings['embedpress_elementor_document_width']) &&
663 isset($settings['embedpress_elementor_document_height'])
664 ) {
665 $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>';
666 }
667
668 if ($settings['doc_print_download'] === 'yes' && Helper::get_extension_from_file_url($url) !== 'pptx') {
669 $embed_content .= '<div style="width: 40px; height: 40px; position: absolute; opacity: 0; right: 12px; top: 12px;"></div>';
670 }
671
672 if (!empty($settings['doc_toolbar']) && $settings['embedpress_document_viewer'] === 'custom') {
673 $embed_content .= '<div class="ep-external-doc-icons">';
674
675 if (empty(Helper::is_file_url($url))) {
676 $embed_content .= Helper::ep_get_popup_icon();
677 }
678
679 if (!empty(Helper::is_file_url($url))) {
680 if (!empty($settings['doc_print_download'])) {
681 $embed_content .= Helper::ep_get_print_icon();
682 $embed_content .= Helper::ep_get_download_icon();
683 }
684 }
685 if (!empty($settings['doc_draw'])) {
686 $embed_content .= Helper::ep_get_draw_icon();
687 }
688 if (!empty($settings['doc_fullscreen_mode'])) {
689 $embed_content .= Helper::ep_get_fullscreen_icon();
690 $embed_content .= Helper::ep_get_minimize_icon();
691 }
692
693 $embed_content .= '</div>';
694 }
695 $embed_content .= '</div>';
696
697 if ($settings['embedpress_document_powered_by'] === 'yes') {
698 $embed_content .= '<div>';
699 $embed_content .= sprintf('<p class="embedpress-el-powered">%s</p>', esc_html__('Powered By EmbedPress', 'embedpress'));
700 $embed_content .= '</div>';
701 }
702
703 $embed_content .= '</div>';
704 }
705 }
706
707
708 ?>
709 <div <?php echo $adsAtts; ?>>
710
711 <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); ?>">
712 <div id="<?php echo esc_attr($this->get_id()); ?>" class="ep-embed-content-wraper">
713 <?php
714
715 $content_id = $client_id;
716 if (
717 (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') ||
718 ($settings['embedpress_doc_protection_type'] == 'password' && !empty(Helper::is_password_correct($client_id)) && ($hash_pass === $password_correct) ) ||
719 !apply_filters('embedpress/is_allow_rander', false) ||
720 ($settings['embedpress_doc_protection_type'] == 'user-role' && Helper::has_allowed_roles($embed_settings['userRole']))
721 ) {
722
723 if (!empty($settings['embedpress_doc_content_share'])) {
724 $embed_content .= Helper::embed_content_share($content_id, $embed_settings);
725 }
726 if (!empty($embed_content)) {
727 echo $embed_content;
728 }
729 } else {
730 if (!empty($settings['embedpress_doc_content_share'])) {
731 $embed_content .= Helper::embed_content_share($content_id, $embed_settings);
732 }
733 if ($settings['embedpress_doc_protection_type'] == 'password') {
734 do_action('embedpress/display_password_form', $client_id, $embed_content, $pass_hash_key, $embed_settings);
735 } else {
736 do_action('embedpress/content_protection_content', $client_id, $embed_settings['protectionMessage'], $embed_settings['userRole']);
737 }
738 }
739 ?>
740 </div>
741 </div>
742 <?php
743 if (!empty($settings['adManager'])) {
744 $embed_content = apply_filters('embedpress/generate_ad_template', $embed_content, $client_id, $settings, 'elementor');
745 }
746 ?>
747 </div>
748 </div>
749
750 <?php
751 }
752
753
754 private function get_file_url()
755 {
756 $settings = $this->get_settings();
757 $file_url = $settings['embedpress_document_type'] === 'url' ? esc_url($settings['embedpress_document_file_link']['url']) : esc_url($settings['embedpress_document_Uploader']['url']);
758 return $file_url;
759 }
760
761
762 protected function render_editor_script( $id, $url )
763 {
764 ?>
765 <script>
766 (function ($) {
767 'use strict';
768 $(document).ready(function () {
769 var selector = $('.embedpress-embed-document-pdf');
770 let option = {
771 forceObject: false,
772 };
773 if (selector.length) {
774 PDFObject.embed("<?php echo $url; ?>", "<?php echo '.' . $id; ?>", option);
775 }
776 });
777 })(jQuery);
778 </script>
779 <?php
780 }
781 }
782