PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 3.3.0
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v3.3.0
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_Pdf.php
embedpress / EmbedPress / Elementor / Widgets Last commit date
Embedpress_Calendar.php 4 years ago Embedpress_Document.php 4 years ago Embedpress_Elementor.php 4 years ago Embedpress_Pdf.php 4 years ago
Embedpress_Pdf.php
304 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 EmbedPress\Includes\Classes\Helper;
10 use EmbedPress\Includes\Traits\Branding;
11
12 ( defined( 'ABSPATH' ) ) or die( "No direct script access allowed." );
13
14 class Embedpress_Pdf extends Widget_Base
15 {
16 use Branding;
17 protected $pro_class = '';
18 protected $pro_text = '';
19 public function get_name()
20 {
21 return 'embedpress_pdf';
22 }
23
24 public function get_title()
25 {
26 return esc_html__( 'EmbedPress PDF', 'embedpress' );
27 }
28
29 public function get_categories()
30 {
31 return ['embedpress'];
32 }
33
34 public function get_custom_help_url()
35 {
36 return 'https://embedpress.com/documentation';
37 }
38
39 public function get_icon()
40 {
41 return 'icon-pdf';
42 }
43
44 /**
45 * Get widget keywords.
46 *
47 * Retrieve the list of keywords the widget belongs to.
48 *
49 * @return array Widget keywords.
50 * @since 2.5.5
51 * @access public
52 *
53 */
54 public function get_keywords()
55 {
56 return ['embedpress', 'pdf', 'doc', 'embedpress-document'];
57 }
58
59 protected function _register_controls()
60 {
61 $this->pro_class = is_embedpress_pro_active() ? '': 'embedpress-pro-control';
62 $this->pro_text = is_embedpress_pro_active() ? '': '<sup class="embedpress-pro-label" style="color:red">'.__('Pro', 'embedpress').'</sup>';
63 /**
64 * EmbedPress Content Settings
65 */
66 $this->start_controls_section(
67 'embedpress_pdf_content_settings',
68 [
69 'label' => esc_html__( 'Content Settings', 'embedpress' ),
70 ]
71 );
72
73 $this->add_control(
74 'embedpress_pdf_type',
75 [
76 'label' => __( 'Document Type', 'embedpress' ),
77 'type' => Controls_Manager::SELECT,
78 'default' => 'file',
79 'options' => [
80 'file' => __( 'File', 'embedpress' ),
81 'url' => __( 'URL', 'embedpress' )
82 ],
83 ]
84 );
85
86 $this->add_control(
87 'embedpress_pdf_Uploader',
88 [
89
90 'label' => __( 'Upload File', 'embedpress' ),
91 'type' => Controls_Manager::MEDIA,
92 'dynamic' => [
93 'active' => true,
94 'categories' => [
95 TagsModule::MEDIA_CATEGORY,
96 ],
97 ],
98 'media_type' => [
99 'application/pdf',
100 ],
101 'description' => __( 'Upload a file or pick one from your media library for embed. Supported File Type: PDF',
102 'embedpress' ),
103 'condition' => [
104 'embedpress_pdf_type' => 'file'
105 ],
106 ]
107 );
108
109 $this->add_control(
110 'embedpress_pdf_file_link',
111 [
112 'label' => __( 'URL', 'embedpress' ),
113 'type' => Controls_Manager::URL,
114 'placeholder' => __( 'https://your-link.com/file.pdf', 'embedpress' ),
115 'show_external' => false,
116 'default' => [
117 'url' => ''
118 ],
119 'condition' => [
120 'embedpress_pdf_type' => 'url'
121 ],
122 ]
123 );
124
125 $this->add_control(
126 'embedpress_elementor_document_width',
127 [
128 'label' => __( 'Width', 'embedpress' ),
129 'type' => Controls_Manager::SLIDER,
130 'separator' => 'before',
131 'default' => [
132 'unit' => 'px',
133 'size' => 600,
134 ],
135 'range' => [
136 'px' => [
137 'min' => 6,
138 'max' => 1000,
139 ],
140 ],
141 'selectors' => [
142 '{{WRAPPER}} .embedpress-document-embed iframe' => 'width: {{SIZE}}{{UNIT}} !important; max-width: 100%',
143 '{{WRAPPER}} .embedpress-document-embed .pdfobject-container' => 'width: {{SIZE}}{{UNIT}} !important; max-width: 100%',
144 ],
145 'render_type' => 'template',
146 ]
147 );
148
149 $this->add_control(
150 'embedpress_elementor_document_height',
151 [
152 'label' => __( 'Height', 'embedpress' ),
153 'type' => Controls_Manager::SLIDER,
154 'default' => [
155 'unit' => 'px',
156 'size' => 600,
157 ],
158 'range' => [
159 'px' => [
160 'min' => 6,
161 'max' => 1000,
162 ],
163 ],
164 'selectors' => [
165 '{{WRAPPER}} .embedpress-document-embed iframe' => 'height: {{SIZE}}{{UNIT}};',
166 '{{WRAPPER}} .embedpress-document-embed .pdfobject-container' => 'height: {{SIZE}}{{UNIT}};',
167 ],
168 'render_type' => 'template',
169 ]
170 );
171
172 $this->add_responsive_control(
173 'embedpress_elementor_document_align',
174 [
175 'label' => __( 'Alignment', 'embedpress' ),
176 'type' => Controls_Manager::CHOOSE,
177 'options' => [
178 'left' => [
179 'title' => __( 'Left', 'embedpress' ),
180 'icon' => 'eicon-text-align-left',
181 ],
182 'center' => [
183 'title' => __( 'Center', 'embedpress' ),
184 'icon' => 'eicon-text-align-center',
185 ],
186 'right' => [
187 'title' => __( 'Right', 'embedpress' ),
188 'icon' => 'eicon-text-align-right',
189 ]
190 ],
191 'prefix_class' => 'elementor%s-align-',
192 'default' => '',
193 ]
194 );
195
196 $this->add_control(
197 'embedpress_pdf_powered_by',
198 [
199 'label' => __( 'Powered By', 'embedpress' ),
200 'type' => Controls_Manager::SWITCHER,
201 'label_on' => __( 'Show', 'embedpress' ),
202 'label_off' => __( 'Hide', 'embedpress' ),
203 'return_value' => 'yes',
204 'default' => apply_filters( 'embedpress_document_powered_by_control', 'yes' ),
205 ]
206 );
207
208 $this->init_branding_controls( 'document');
209
210 $this->end_controls_section();
211
212 if (! is_embedpress_pro_active()) {
213 $this->start_controls_section(
214 'embedpress_pro_section',
215 [
216 'label' => __('Go Premium for More Features', 'embedpress'),
217 ]
218 );
219
220 $this->add_control(
221 'embedpress_pro_cta',
222 [
223 'label' => __('Unlock more possibilities', 'embedpress'),
224 'type' => Controls_Manager::CHOOSE,
225 'options' => [
226 '1' => [
227 'title' => '',
228 'icon' => 'eicon-lock',
229 ],
230 ],
231 'default' => '1',
232 '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>',
233 ]
234 );
235
236 $this->end_controls_section();
237 }
238 }
239
240 private function is_pdf( $url )
241 {
242 $arr = explode( '.', $url );
243 return end( $arr ) === 'pdf';
244 }
245
246 protected function render()
247 {
248 $settings = $this->get_settings();
249 $url = $this->get_file_url();
250 $id = 'embedpress-pdf-' . $this->get_id();
251 $dimension = "width: {$settings['embedpress_elementor_document_width']['size']}px;height: {$settings['embedpress_elementor_document_height']['size']}px";
252 $this->add_render_attribute( 'embedpres-pdf-render', [
253 'class' => ['embedpress-embed-document-pdf', $id],
254 'data-emid' => $id
255 ] );
256 $this->add_render_attribute( 'embedpress-document', [
257 'class' => ['embedpress-document-embed', 'ep-doc-'.md5( $id), 'ose-document']
258 ] );
259 ?>
260 <div <?php echo $this->get_render_attribute_string( 'embedpress-document' ); ?> style="<?php echo esc_attr( $dimension); ?>; max-width:100%; display: inline-block">
261 <?php
262 do_action( 'embedpress_pdf_after_embed', $settings, $url, $id, $this);
263 ?>
264 <?php if ( $url != '' ) {
265 if ( $this->is_pdf( $url ) && ! $this->is_external_url( $url) ) {
266 $this->add_render_attribute( 'embedpres-pdf-render', 'data-emsrc', $url );
267 $renderer = Helper::get_pdf_renderer();
268 $src = $renderer . ((strpos($renderer, '?') == false) ? '?' : '&') . 'file=' . $url;
269 ?>
270 <iframe style="<?php echo esc_attr( $dimension); ?>; max-width:100%; display: inline-block" src="<?php echo esc_attr( $src); ?>" <?php $this->get_render_attribute_string( 'embedpres-pdf-render' ); ?>
271 frameborder="0"></iframe>
272 <?php
273
274 } else {
275 $view_link = 'https://docs.google.com/viewer?url=' . $url . '&embedded=true';
276 ?>
277 <div>
278 <iframe allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true" style="<?php echo esc_attr( $dimension); ?>; max-width:100%;" src="<?php echo esc_url( $view_link); ?>" <?php $this->get_render_attribute_string( 'embedpres-pdf-render' ); ?>></iframe>
279 </div>
280
281 <?php
282 }
283 if ( $settings[ 'embedpress_pdf_powered_by' ] === 'yes' ) {
284
285 printf( '<p class="embedpress-el-powered">%s</p>', __( 'Powered By EmbedPress', 'embedpress' ) );
286 }
287 }
288 ?>
289 </div>
290
291 <?php
292 }
293
294 private function get_file_url()
295 {
296 $settings = $this->get_settings();
297 return $settings[ 'embedpress_pdf_type' ] === 'url' ? $settings[ 'embedpress_pdf_file_link' ][ 'url' ] : $settings[ 'embedpress_pdf_Uploader' ][ 'url' ];
298 }
299
300 protected function is_external_url( $url ) {
301 return strpos( $url, get_site_url()) === false;
302 }
303 }
304