PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 3.6.8
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v3.6.8
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 / Gutenberg / plugin.php
embedpress / Gutenberg Last commit date
block-backend 3 years ago dist 3 years ago plugin.php 3 years ago
plugin.php
505 lines
1 <?php
2
3 /**
4 * Blocks Initializer
5 *
6 * Enqueue CSS/JS of all the blocks.
7 *
8 * @since 1.0.0
9 * @package CGB
10 */
11
12 // Exit if accessed directly.
13 use EmbedPress\Includes\Classes\Helper;
14
15 if (!defined('ABSPATH')) {
16 exit;
17 }
18
19
20 /**
21 * Enqueue Gutenberg block assets for both frontend + backend.
22 *
23 * @uses {wp-editor} for WP editor styles.
24 * @since 1.0.0
25 */
26 function embedpress_blocks_cgb_block_assets()
27 { // phpcs:ignore
28 // Styles.
29 wp_enqueue_style(
30 'embedpress_blocks-cgb-style-css', // Handle.
31 EMBEDPRESS_GUTENBERG_DIR_URL . 'dist/blocks.style.build.css', // Block style CSS.
32 is_admin() ? array('wp-editor') : null, // Dependency to include the CSS after it.
33 filemtime(EMBEDPRESS_GUTENBERG_DIR_PATH . 'dist/blocks.style.build.css') // Version: File modification time.
34 );
35 }
36
37 // Hook: Frontend assets.
38 add_action('enqueue_block_assets', 'embedpress_blocks_cgb_block_assets');
39
40 /**
41 * Enqueue Gutenberg block assets for backend editor.
42 *
43 * @uses {wp-blocks} for block type registration & related functions.
44 * @uses {wp-element} for WP Element abstraction — structure of blocks.
45 * @uses {wp-i18n} to internationalize the block's text.
46 * @uses {wp-editor} for WP editor styles.
47 * @since 1.0.0
48 */
49 function embedpress_blocks_cgb_editor_assets()
50 { // phpcs:ignore
51 // Scripts.
52 if (!wp_script_is('embedpress-pdfobject')) {
53 wp_enqueue_script(
54 'embedpress-pdfobject',
55 EMBEDPRESS_URL_ASSETS . 'js/pdfobject.min.js',
56 [],
57 EMBEDPRESS_VERSION
58 );
59 }
60
61 wp_enqueue_script(
62 'embedpress_blocks-cgb-block-js', // Handle.
63 EMBEDPRESS_GUTENBERG_DIR_URL . 'dist/blocks.build.js', // Block.build.js: We register the block here. Built with Webpack.
64 array('wp-blocks', 'wp-i18n', 'wp-element', 'wp-api-fetch', 'wp-is-shallow-equal', 'wp-editor', 'wp-components', 'embedpress-pdfobject'), // Dependencies, defined above.
65 filemtime(EMBEDPRESS_GUTENBERG_DIR_PATH . 'dist/blocks.build.js'), // Version: File modification time.
66 true // Enqueue the script in the footer.
67 );
68 $wistia_labels = array(
69 'watch_from_beginning' => __('Watch from the beginning', 'embedpress'),
70 'skip_to_where_you_left_off' => __('Skip to where you left off', 'embedpress'),
71 'you_have_watched_it_before' => __('It looks like you\'ve watched<br />part of this video before!', 'embedpress'),
72 );
73 $elements = (array) get_option(EMBEDPRESS_PLG_NAME . ":elements", []);
74 $active_blocks = isset($elements['gutenberg']) ? (array) $elements['gutenberg'] : [];
75
76 $wistia_labels = json_encode($wistia_labels);
77 $wistia_options = null;
78 if (function_exists('embedpress_wisita_pro_get_options')) :
79 $wistia_options = embedpress_wisita_pro_get_options();
80 endif;
81 $pars_url = wp_parse_url(get_site_url());
82 $documents_cta_options = (array) get_option(EMBEDPRESS_PLG_NAME . ':document');
83 wp_localize_script('embedpress_blocks-cgb-block-js', 'embedpressObj', array(
84 'wistia_labels' => $wistia_labels,
85 'wisita_options' => $wistia_options,
86 'embedpress_powered_by' => apply_filters('embedpress_document_block_powered_by', true),
87 'embedpress_pro' => defined('EMBEDPRESS_PRO_PLUGIN_FILE'),
88 'twitch_host' => !empty($pars_url['host']) ? $pars_url['host'] : '',
89 'site_url' => site_url(),
90 'active_blocks' => $active_blocks,
91 'document_cta' => $documents_cta_options,
92 'pdf_renderer' => Helper::get_pdf_renderer(),
93 'is_pro_plugin_active' => defined('EMBEDPRESS_SL_ITEM_SLUG'),
94 ));
95
96 // Styles.
97 wp_enqueue_style(
98 'embedpress_blocks-cgb-block-editor-css', // Handle.
99 EMBEDPRESS_GUTENBERG_DIR_URL . 'dist/blocks.editor.build.css', // Block editor CSS.
100 array('wp-edit-blocks'), // Dependency to include the CSS after it.
101 filemtime(EMBEDPRESS_GUTENBERG_DIR_PATH . 'dist/blocks.editor.build.css') // Version: File modification time.
102 );
103 }
104
105 // Hook: Editor assets.
106 add_action('enqueue_block_editor_assets', 'embedpress_blocks_cgb_editor_assets');
107
108
109 function embedpress_block_category($categories, $post)
110 {
111 return array_merge(
112 $categories,
113 array(
114 array(
115 'slug' => 'embedpress',
116 'title' => 'EmbedPress',
117 'icon' => '',
118 ),
119 )
120 );
121 }
122 $wp_version = get_bloginfo('version', 'display');
123 if (version_compare($wp_version, '5.8', '>=')) {
124 add_filter('block_categories_all', 'embedpress_block_category', 10, 2);
125 } else {
126 add_filter('block_categories', 'embedpress_block_category', 10, 2);
127 }
128
129
130
131
132 foreach (glob(EMBEDPRESS_GUTENBERG_DIR_PATH . 'block-backend/*.php') as $block_logic) {
133 require_once $block_logic;
134 }
135
136 /**
137 * Registers the embedpress gutneberg block on server.
138 */
139
140 function embedpress_gutenberg_register_all_block()
141 {
142 if (function_exists('register_block_type')) :
143
144 $elements = (array) get_option(EMBEDPRESS_PLG_NAME . ":elements", []);
145 $g_blocks = isset($elements['gutenberg']) ? (array) $elements['gutenberg'] : [];
146 $blocks_to_registers = ['twitch-block', 'google-slides-block', 'google-sheets-block', 'google-maps-block', 'google-forms-block', 'google-drawings-block', 'google-docs-block', 'embedpress', 'embedpress-pdf', 'embedpress-calendar', 'document'];
147
148 foreach ($blocks_to_registers as $blocks_to_register) {
149 if (!empty($g_blocks[$blocks_to_register])) {
150 if ('embedpress' === $blocks_to_register) {
151 register_block_type('embedpress/embedpress', [
152 'render_callback' => 'embedpress_render_block',
153 'attributes' => array(
154 'height' => [
155 'type' => 'string',
156 'default' => '450'
157 ],
158 'width' => [
159 'type' => 'string',
160 'default' => '600'
161 ],
162 'videosize' => [
163 'type' => 'string',
164 'default' => 'fixed'
165 ],
166
167 'isGutenberg' => [
168 'type' => 'boolean',
169 'default' => false
170 ],
171 'loadmore' => [
172 'type' => 'boolean',
173 'default' => false
174 ],
175 //Youtube Attributes
176 'starttime' => [
177 'type' => 'string',
178 ],
179 'endtime' => [
180 'type' => 'string',
181 ],
182 'autoplay' => [
183 'type' => 'boolean',
184 'default' => false
185 ],
186 'controls' => [
187 'type' => 'string',
188 ],
189 'progressbarcolor' => [
190 'type' => 'string',
191 ],
192 'videoannotations' => [
193 'type' => 'string',
194 ],
195 'closedcaptions' => [
196 'type' => 'boolean',
197 'default' => true
198 ],
199 'relatedvideos' => [
200 'type' => 'boolean',
201 'default' => true
202 ],
203 'fullscreen' => [
204 'type' => 'boolean',
205 'default' => true
206 ],
207
208 'modestbranding' => [
209 'type' => 'string',
210 ],
211 //Wistia Attributes
212 'wstarttime' => [
213 'type' => 'string',
214 ],
215 'wautoplay' => [
216 'type' => 'boolean',
217 'default' => true
218 ],
219 'scheme' => [
220 'type' => 'string',
221 ],
222 'captions' => [
223 'type' => 'boolean',
224 'default' => true
225 ],
226 'playbutton' => [
227 'type' => 'boolean',
228 'default' => true
229 ],
230 'smallplaybutton' => [
231 'type' => 'boolean',
232 'default' => true
233 ],
234 'playbar' => [
235 'type' => 'boolean',
236 'default' => true
237 ],
238 'resumable' => [
239 'type' => 'boolean',
240 'default' => true
241 ],
242 'wistiafocus' => [
243 'type' => 'boolean',
244 'default' => true
245 ],
246 'volumecontrol' => [
247 'type' => 'boolean',
248 'default' => true
249 ],
250 'volume' => [
251 'type' => 'number',
252 'default' => 100
253 ],
254 'rewind' => [
255 'type' => 'boolean',
256 'default' => false
257 ],
258 'wfullscreen' => [
259 'type' => 'boolean',
260 'default' => true
261 ],
262
263 // Vimeo attributes
264 'vstarttime' => [
265 'type' => 'string',
266 ],
267 'vautoplay' => [
268 'type' => 'boolean',
269 'default' => false
270 ],
271 'vscheme' => [
272 'type' => 'string',
273 ],
274 'vtitle' => [
275 'type' => 'boolean',
276 'default' => true
277 ],
278 'vauthor' => [
279 'type' => 'boolean',
280 'default' => true
281 ],
282 'vavatar' => [
283 'type' => 'boolean',
284 'default' => true
285 ],
286 'vloop' => [
287 'type' => 'boolean',
288 'default' => false
289 ],
290 'vautopause' => [
291 'type' => 'boolean',
292 'default' => false
293 ],
294 'vdnt' => [
295 'type' => 'boolean',
296 'default' => false
297 ],
298
299 ),
300 ]);
301 } elseif ('embedpress-pdf' === $blocks_to_register) {
302 register_block_type('embedpress/embedpress-pdf', [
303 'attributes' => array(
304 'powered_by' => [
305 'type' => 'boolean',
306 'default' => true
307 ],
308
309 'presentation' => [
310 'type' => "boolean",
311 'default' => true,
312 ],
313
314 'position' => [
315 'type' => "string",
316 'default' => 'top',
317 ],
318
319 'print' => [
320 'type' => "boolean",
321 'default' => true,
322 ],
323
324 'download' => [
325 'type' => "boolean",
326 'default' => true,
327 ],
328 'open' => [
329 'type' => "boolean",
330 'default' => true,
331 ],
332 'copy_text' => [
333 'type' => "boolean",
334 'default' => true,
335 ],
336 'add_text' => [
337 'type' => "boolean",
338 'default' => true,
339 ],
340 'draw' => [
341 'type' => "boolean",
342 'default' => true,
343 ],
344 'toolbar' => [
345 'type' => "boolean",
346 'default' => true,
347 ],
348 'doc_details' => [
349 'type' => "boolean",
350 'default' => true,
351 ],
352 'doc_rotation' => [
353 'type' => "boolean",
354 'default' => true,
355 ],
356 'unitoption' => [
357 'type' => "string",
358 'default' => 'px',
359 ],
360 ),
361 'render_callback' => 'embedpress_pdf_render_block',
362 ]);
363 } elseif ('embedpress-calendar' === $blocks_to_register) {
364 register_block_type('embedpress/embedpress-calendar', [
365 'render_callback' => 'embedpress_calendar_render_block',
366 ]);
367 } else {
368 register_block_type('embedpress/' . $blocks_to_register);
369 }
370 } else {
371
372 if (WP_Block_Type_Registry::get_instance()->is_registered('embedpress/' . $blocks_to_register)) {
373 unregister_block_type('embedpress/' . $blocks_to_register);
374 }
375 }
376 }
377
378 endif;
379 }
380
381 add_action('init', 'embedpress_gutenberg_register_all_block');
382
383 function getParamData($attributes)
384 {
385
386 $urlParamData = array(
387 'themeMode' => !empty($attributes['themeMode']) ? $attributes['themeMode'] : 'default',
388 'toolbar' => !empty($attributes['toolbar']) ? 'true' : 'false',
389 'position' => $attributes['position'],
390 'presentation' => !empty($attributes['presentation']) ? 'true' : 'false',
391 'download' => !empty($attributes['download']) ? 'true' : 'false',
392 'copy_text' => !empty($attributes['copy_text']) ? 'true' : 'false',
393 'add_text' => !empty($attributes['add_text']) ? 'true' : 'false',
394 'draw' => !empty($attributes['draw']) ? 'true' : 'false',
395 'doc_rotation' => !empty($attributes['doc_rotation']) ? 'true' : 'false',
396 'doc_details' => !empty($attributes['doc_details']) ? 'true' : 'false',
397 );
398
399 if($urlParamData['themeMode'] == 'custom') {
400 $urlParamData['customColor'] = !empty($attributes['customColor']) ? $attributes['customColor'] : '#403A81';
401 }
402
403 return "#" . http_build_query($urlParamData);
404 }
405
406 function embedpress_pdf_render_block($attributes)
407 {
408
409 if (!empty($attributes['href'])) {
410 $renderer = Helper::get_pdf_renderer();
411 $pdf_url = $attributes['href'];
412 $id = !empty($attributes['id']) ? $attributes['id'] : 'embedpress-pdf-' . rand(100, 10000);
413
414 $unitoption = !empty($attributes['unitoption']) ? $attributes['unitoption'] : 'px';
415 $width = !empty($attributes['width']) ? $attributes['width'] . $unitoption : '600px';
416
417 $height = !empty($attributes['height']) ? $attributes['height'] . 'px' : '600px';
418 $gen_settings = get_option(EMBEDPRESS_PLG_NAME);
419
420 $powered_by = isset($gen_settings['embedpress_document_powered_by']) && 'yes' === $gen_settings['embedpress_document_powered_by'];
421 if (isset($attributes['powered_by'])) {
422 $powered_by = $attributes['powered_by'];
423 }
424
425 $src = $renderer . ((strpos($renderer, '?') == false) ? '?' : '&') . 'file=' . urlencode($attributes['href']) . getParamData($attributes);
426
427 $hash = md5($id);
428 $aligns = [
429 'left' => 'ep-alignleft',
430 'right' => 'ep-alignright',
431 'center' => 'ep-aligncenter',
432 'wide' => 'ep-alignwide',
433 'full' => 'ep-alignfull'
434 ];
435 $alignment = isset($attributes['align']) && isset($aligns[$attributes['align']]) ? $aligns[$attributes['align']] : '';
436 $dimension = "width:$width;height:$height";
437 ob_start();
438 ?>
439 <div class="embedpress-document-embed embedpress-pdf ose-document ep-doc-<?php echo esc_attr($hash) . ' ' . esc_attr($alignment) ?>">
440 <div class="embedpress-inner-iframe <?php if($unitoption === '%') echo esc_attr('emebedpress-unit-percent'); ?>" <?php if($unitoption === '%' && !empty($attributes['width'])) {echo 'style="'.esc_attr('width:'.$attributes['width'].'%').'"';}else{echo 'style="'.esc_attr('width:100%').'"';} ?>>
441 <iframe title="<?php echo esc_attr(Helper::get_file_title($attributes['href'])); ?>" class="embedpress-embed-document-pdf <?php echo esc_attr($id); ?>" style="<?php echo esc_attr($dimension); ?>; max-width:100%; display: inline-block" src="<?php echo esc_attr($src); ?>" frameborder="0" oncontextmenu="return false;"></iframe>
442
443 <?php do_action('embedpress_pdf_gutenberg_after_embed', $hash, 'pdf', $attributes, $pdf_url); ?>
444
445 <?php
446 if ($powered_by) {
447 printf('<p class="embedpress-el-powered">%s</p>', __('Powered By EmbedPress', 'embedpress'));
448 } ?>
449 </div>
450
451 </div>
452 <?php
453
454 return ob_get_clean();
455 }
456 }
457
458 function embedpress_calendar_render_block($attributes)
459 {
460
461 $id = !empty($attributes['id']) ? $attributes['id'] : 'embedpress-calendar-' . rand(100, 10000);
462 $url = !empty($attributes['url']) ? $attributes['url'] : '';
463 $is_private = isset($attributes['is_public']);
464 $hash = md5($id);
465 $width = !empty($attributes['width']) ? $attributes['width'] . 'px' : '600px';
466 $height = !empty($attributes['height']) ? $attributes['height'] . 'px' : '600px';
467 $gen_settings = get_option(EMBEDPRESS_PLG_NAME);
468 $powered_by = isset($gen_settings['embedpress_document_powered_by']) && 'yes' === $gen_settings['embedpress_document_powered_by'];
469 if (isset($attributes['powered_by'])) {
470 $powered_by = $attributes['powered_by'];
471 }
472
473 $aligns = [
474 'left' => 'alignleft',
475 'right' => 'alignright',
476 'wide' => 'alignwide',
477 'full' => 'alignfull'
478 ];
479 $alignment = isset($attributes['align']) && isset($aligns[$attributes['align']]) ? $aligns[$attributes['align']] : '';
480 $dimension = "width:$width;height:$height";
481 ob_start();
482 ?>
483 <div class="embedpress-calendar-gutenberg embedpress-calendar ose-calendar <?php echo esc_attr($alignment) ?>" style="<?php echo esc_attr($dimension); ?>; max-width:100%;">
484
485 <?php
486 if (!empty($url) && !$is_private) {
487 ?>
488 <iframe title="<?php echo esc_attr(Helper::get_file_title($url)); ?>" style="<?php echo esc_attr($dimension); ?>; max-width:100%; display: inline-block" src="<?php echo esc_attr($url); ?>"></iframe>
489 <?php } else {
490 if (is_embedpress_pro_active()) {
491 echo Embedpress_Google_Helper::shortcode();
492 }
493 } ?>
494 <?php do_action('embedpress_calendar_gutenberg_after_embed', $hash, 'calendar', $attributes); ?>
495
496 <?php
497 if ($powered_by) {
498 printf('<p class="embedpress-el-powered" style="width:' . esc_attr($width) . '" >%s</p>', __('Powered By EmbedPress', 'embedpress'));
499 } ?>
500
501 </div>
502 <?php
503 return ob_get_clean();
504 }
505