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