PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 3.5.0
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v3.5.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 / Gutenberg / plugin.php
embedpress / Gutenberg Last commit date
block-backend 4 years ago dist 3 years ago plugin.php 3 years ago
plugin.php
272 lines
1 <?php
2 /**
3 * Blocks Initializer
4 *
5 * Enqueue CSS/JS of all the blocks.
6 *
7 * @since 1.0.0
8 * @package CGB
9 */
10
11 // Exit if accessed directly.
12 use EmbedPress\Includes\Classes\Helper;
13
14 if ( !defined( 'ABSPATH' ) ) {
15 exit;
16 }
17
18
19 /**
20 * Enqueue Gutenberg block assets for both frontend + backend.
21 *
22 * @uses {wp-editor} for WP editor styles.
23 * @since 1.0.0
24 */
25 function embedpress_blocks_cgb_block_assets() { // phpcs:ignore
26 // Styles.
27 wp_enqueue_style(
28 'embedpress_blocks-cgb-style-css', // Handle.
29 EMBEDPRESS_GUTENBERG_DIR_URL.'dist/blocks.style.build.css', // Block style CSS.
30 is_admin() ? array( 'wp-editor' ) : null, // Dependency to include the CSS after it.
31 filemtime( EMBEDPRESS_GUTENBERG_DIR_PATH.'dist/blocks.style.build.css' ) // Version: File modification time.
32 );
33 }
34
35 // Hook: Frontend assets.
36 add_action( 'enqueue_block_assets', 'embedpress_blocks_cgb_block_assets' );
37
38 /**
39 * Enqueue Gutenberg block assets for backend editor.
40 *
41 * @uses {wp-blocks} for block type registration & related functions.
42 * @uses {wp-element} for WP Element abstraction — structure of blocks.
43 * @uses {wp-i18n} to internationalize the block's text.
44 * @uses {wp-editor} for WP editor styles.
45 * @since 1.0.0
46 */
47 function embedpress_blocks_cgb_editor_assets() { // phpcs:ignore
48 // Scripts.
49 if (! wp_script_is( 'embedpress-pdfobject') ) {
50 wp_enqueue_script( 'embedpress-pdfobject', EMBEDPRESS_URL_ASSETS . 'js/pdfobject.min.js', [],
51 EMBEDPRESS_VERSION );
52 }
53
54 wp_enqueue_script(
55 'embedpress_blocks-cgb-block-js', // Handle.
56 EMBEDPRESS_GUTENBERG_DIR_URL.'/dist/blocks.build.js', // Block.build.js: We register the block here. Built with Webpack.
57 array( 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor','wp-components', 'embedpress-pdfobject' ), // Dependencies, defined above.
58 filemtime( EMBEDPRESS_GUTENBERG_DIR_PATH . 'dist/blocks.build.js' ), // Version: File modification time.
59 true // Enqueue the script in the footer.
60 );
61 $wistia_labels = array(
62 'watch_from_beginning' => __( 'Watch from the beginning', 'embedpress' ),
63 'skip_to_where_you_left_off' => __( 'Skip to where you left off', 'embedpress' ),
64 'you_have_watched_it_before' => __( 'It looks like you\'ve watched<br />part of this video before!', 'embedpress' ),
65 );
66 $elements = (array) get_option( EMBEDPRESS_PLG_NAME.":elements", []);
67 $active_blocks = isset( $elements['gutenberg']) ? (array) $elements['gutenberg'] : [];
68
69 $wistia_labels = json_encode( $wistia_labels );
70 $wistia_options = null;
71 if ( function_exists( 'embedpress_wisita_pro_get_options' ) ):
72 $wistia_options = embedpress_wisita_pro_get_options();
73 endif;
74 $pars_url = wp_parse_url(get_site_url());
75 $documents_cta_options = (array) get_option(EMBEDPRESS_PLG_NAME . ':document');
76 wp_localize_script( 'embedpress_blocks-cgb-block-js', 'embedpressObj', array(
77 'wistia_labels' => $wistia_labels,
78 'wisita_options' => $wistia_options,
79 'embedpress_powered_by' => apply_filters('embedpress_document_block_powered_by',true),
80 'embedpress_pro' => defined('EMBEDPRESS_PRO_PLUGIN_FILE'),
81 'twitch_host' => !empty($pars_url['host'])?$pars_url['host']:'',
82 'site_url' => site_url(),
83 'active_blocks' => $active_blocks,
84 'document_cta' => $documents_cta_options,
85 'pdf_renderer' => Helper::get_pdf_renderer(),
86 ) );
87
88 // Styles.
89 wp_enqueue_style(
90 'embedpress_blocks-cgb-block-editor-css', // Handle.
91 EMBEDPRESS_GUTENBERG_DIR_URL . 'dist/blocks.editor.build.css', // Block editor CSS.
92 array( 'wp-edit-blocks' ), // Dependency to include the CSS after it.
93 filemtime( EMBEDPRESS_GUTENBERG_DIR_PATH . 'dist/blocks.editor.build.css' ) // Version: File modification time.
94 );
95 }
96
97 // Hook: Editor assets.
98 add_action( 'enqueue_block_editor_assets', 'embedpress_blocks_cgb_editor_assets' );
99
100
101 function embedpress_block_category( $categories, $post ) {
102 return array_merge(
103 $categories,
104 array(
105 array(
106 'slug' => 'embedpress',
107 'title' => 'EmbedPress',
108 'icon' => '',
109 ),
110 )
111 );
112
113 }
114 $wp_version = get_bloginfo( 'version', 'display' );
115 if ( version_compare( $wp_version, '5.8', '>=') ) {
116 add_filter( 'block_categories_all', 'embedpress_block_category', 10, 2 );
117
118 }else{
119 add_filter( 'block_categories', 'embedpress_block_category', 10, 2 );
120 }
121
122
123
124
125 foreach ( glob( EMBEDPRESS_GUTENBERG_DIR_PATH . 'block-backend/*.php' ) as $block_logic ) {
126 require_once $block_logic;
127 }
128
129 /**
130 * Registers the embedpress gutneberg block on server.
131 */
132
133 function embedpress_gutenberg_register_all_block() {
134 if ( function_exists( 'register_block_type' ) ) :
135
136 $elements = (array) get_option( EMBEDPRESS_PLG_NAME.":elements", []);
137 $g_blocks = isset( $elements['gutenberg']) ? (array) $elements['gutenberg'] : [];
138 $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'];
139
140 foreach ( $blocks_to_registers as $blocks_to_register ) {
141 if ( !empty($g_blocks[$blocks_to_register]) ) {
142 if ( 'embedpress' === $blocks_to_register ) {
143 register_block_type( 'embedpress/embedpress', [
144 'render_callback' => 'embedpress_render_block',
145 'attributes' => array(
146 'height' => [
147 'type' => 'string',
148 'default' => '450'
149 ],
150 'width' => [
151 'type' => 'string',
152 'default' => '600'
153 ],
154 ),
155 ]);
156 }elseif ( 'embedpress-pdf' === $blocks_to_register ) {
157 register_block_type( 'embedpress/embedpress-pdf', [
158 'render_callback' => 'embedpress_pdf_render_block',
159 ]);
160 }elseif ( 'embedpress-calendar' === $blocks_to_register ) {
161 register_block_type( 'embedpress/embedpress-calendar', [
162 'render_callback' => 'embedpress_calendar_render_block',
163 ]);
164 }else{
165 register_block_type( 'embedpress/'.$blocks_to_register );
166 }
167 }else{
168
169 if ( WP_Block_Type_Registry::get_instance()->is_registered( 'embedpress/'.$blocks_to_register) ) {
170 unregister_block_type( 'embedpress/'.$blocks_to_register );
171 }
172
173 }
174 }
175
176 endif;
177 }
178
179 add_action( 'init', 'embedpress_gutenberg_register_all_block' );
180
181 function embedpress_pdf_render_block( $attributes ){
182
183 if ( !empty( $attributes['href']) ) {
184 $renderer = Helper::get_pdf_renderer();
185 $pdf_url = $attributes['href'];
186 $id = !empty( $attributes['id']) ? $attributes['id'] : 'embedpress-pdf-'.rand(100, 10000);
187 $width = !empty( $attributes['width']) ? $attributes['width'].'px' : '600px';
188 $height = !empty( $attributes['height']) ? $attributes['height'].'px' : '600px';
189 $gen_settings = get_option( EMBEDPRESS_PLG_NAME);
190 $powered_by = isset( $gen_settings['embedpress_document_powered_by']) && 'yes' === $gen_settings['embedpress_document_powered_by'];
191 if ( isset( $attributes['powered_by']) ) {
192 $powered_by = $attributes['powered_by'];
193 }
194
195 $src = $renderer . ((strpos($renderer, '?') == false) ? '?' : '&') . 'file=' . $attributes['href'];
196 $hash = md5( $id );
197 $aligns = [
198 'left' => 'alignleft',
199 'right' => 'alignright',
200 'wide' => 'alignwide',
201 'full' => 'alignfull'
202 ];
203 $alignment = isset($attributes['align']) && isset($aligns[$attributes['align']])?$aligns[$attributes['align']]:'';
204 $dimension = "width:$width;height:$height";
205 ob_start();
206 ?>
207 <div class="embedpress-document-embed embedpress-pdf ose-document ep-doc-<?php echo esc_attr( $hash) .' '. esc_attr($alignment) ?>">
208 <iframe style="<?php echo esc_attr( $dimension); ?>; max-width:100%; display: inline-block" src="<?php echo esc_attr( $src); ?>"
209 frameborder="0"></iframe>
210
211 <?php do_action( 'embedpress_pdf_gutenberg_after_embed', $hash, 'pdf', $attributes, $pdf_url); ?>
212
213 <?php
214 if ($powered_by ) {
215 printf( '<p class="embedpress-el-powered">%s</p>', __( 'Powered By EmbedPress', 'embedpress' ) );
216 }?>
217
218 </div>
219 <?php
220 return ob_get_clean();
221 }
222 }
223
224 function embedpress_calendar_render_block( $attributes ){
225 $id = !empty( $attributes['id']) ? $attributes['id'] : 'embedpress-calendar-'.rand(100, 10000);
226 $url = !empty( $attributes['url']) ? $attributes['url'] : '';
227 $is_private = isset( $attributes['is_public']);
228 $hash = md5($id);
229 $width = !empty( $attributes['width']) ? $attributes['width'].'px' : '600px';
230 $height = !empty( $attributes['height']) ? $attributes['height'].'px' : '600px';
231 $gen_settings = get_option( EMBEDPRESS_PLG_NAME);
232 $powered_by = isset( $gen_settings['embedpress_document_powered_by']) && 'yes' === $gen_settings['embedpress_document_powered_by'];
233 if ( isset( $attributes['powered_by']) ) {
234 $powered_by = $attributes['powered_by'];
235 }
236
237
238 $aligns = [
239 'left' => 'alignleft',
240 'right' => 'alignright',
241 'wide' => 'alignwide',
242 'full' => 'alignfull'
243 ];
244 $alignment = isset($attributes['align']) && isset($aligns[$attributes['align']])?$aligns[$attributes['align']]:'';
245 $dimension = "width:$width;height:$height";
246 ob_start();
247 ?>
248 <div class="embedpress-calendar-gutenberg embedpress-calendar ose-calendar <?php echo esc_attr($alignment) ?>" style="<?php echo esc_attr( $dimension); ?>; max-width:100%;">
249
250 <?php
251 if ( !empty( $url) && !$is_private ) {
252 ?>
253 <iframe style="<?php echo esc_attr( $dimension); ?>; max-width:100%; display: inline-block" src="<?php echo esc_attr( $url); ?>"></iframe>
254 <?php } else {
255 if ( is_embedpress_pro_active() ) {
256 echo Embedpress_Google_Helper::shortcode();
257 }
258
259 } ?>
260 <?php do_action( 'embedpress_calendar_gutenberg_after_embed', $hash, 'calendar', $attributes); ?>
261
262 <?php
263 if ($powered_by ) {
264 printf( '<p class="embedpress-el-powered">%s</p>', __( 'Powered By EmbedPress', 'embedpress' ) );
265 }?>
266
267 </div>
268 <?php
269 return ob_get_clean();
270
271 }
272