PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 3.4.1
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v3.4.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_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
309 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 = $this->get_id();
251 $this->_render($url, $settings, $id);
252 }
253
254 public function _render($url, $settings, $id)
255 {
256 $id = 'embedpress-pdf-' . $id;
257 $dimension = "width: {$settings['embedpress_elementor_document_width']['size']}px;height: {$settings['embedpress_elementor_document_height']['size']}px";
258 $this->add_render_attribute( 'embedpres-pdf-render', [
259 'class' => ['embedpress-embed-document-pdf', $id],
260 'data-emid' => $id
261 ] );
262 $this->add_render_attribute( 'embedpress-document', [
263 'class' => ['embedpress-document-embed', 'ep-doc-'.md5( $id), 'ose-document']
264 ] );
265 ?>
266 <div <?php echo $this->get_render_attribute_string( 'embedpress-document' ); ?> style="<?php echo esc_attr( $dimension); ?>; max-width:100%; display: inline-block">
267 <?php
268 do_action( 'embedpress_pdf_after_embed', $settings, $url, $id, $this);
269 ?>
270 <?php if ( $url != '' ) {
271 if ( $this->is_pdf( $url ) && ! $this->is_external_url( $url) ) {
272 $this->add_render_attribute( 'embedpres-pdf-render', 'data-emsrc', $url );
273 $renderer = Helper::get_pdf_renderer();
274 $src = $renderer . ((strpos($renderer, '?') == false) ? '?' : '&') . 'file=' . $url;
275 ?>
276 <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' ); ?>
277 frameborder="0"></iframe>
278 <?php
279
280 } else {
281 ?>
282 <div>
283 <iframe allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true" style="<?php echo esc_attr( $dimension); ?>; max-width:100%;" src="<?php echo esc_url( $url); ?>" <?php $this->get_render_attribute_string( 'embedpres-pdf-render' ); ?>></iframe>
284 </div>
285
286 <?php
287 }
288 if ( $settings[ 'embedpress_pdf_powered_by' ] === 'yes' ) {
289
290 printf( '<p class="embedpress-el-powered">%s</p>', __( 'Powered By EmbedPress', 'embedpress' ) );
291 }
292 }
293 ?>
294 </div>
295
296 <?php
297 }
298
299 private function get_file_url()
300 {
301 $settings = $this->get_settings();
302 return $settings[ 'embedpress_pdf_type' ] === 'url' ? $settings[ 'embedpress_pdf_file_link' ][ 'url' ] : $settings[ 'embedpress_pdf_Uploader' ][ 'url' ];
303 }
304
305 protected function is_external_url( $url ) {
306 return strpos( $url, get_site_url()) === false;
307 }
308 }
309