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