PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 3.3.2
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v3.3.2
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 5 years ago dist 4 years ago plugin.php 4 years ago
plugin.php
261 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 $wistia_labels = json_encode( $wistia_labels );
69 $wistia_options = null;
70 if ( function_exists( 'embedpress_wisita_pro_get_options' ) ):
71 $wistia_options = embedpress_wisita_pro_get_options();
72 endif;
73 $pars_url = wp_parse_url(get_site_url());
74 $documents_cta_options = (array) get_option(EMBEDPRESS_PLG_NAME . ':document');
75 wp_localize_script( 'embedpress_blocks-cgb-block-js', 'embedpressObj', array(
76 'wistia_labels' => $wistia_labels,
77 'wisita_options' => $wistia_options,
78 'embedpress_powered_by' => apply_filters('embedpress_document_block_powered_by',true),
79 'embedpress_pro' => defined('EMBEDPRESS_PRO_PLUGIN_FILE'),
80 'twitch_host' => !empty($pars_url['host'])?$pars_url['host']:'',
81 'site_url' => site_url(),
82 'active_blocks' => $active_blocks,
83 'document_cta' => $documents_cta_options,
84 'pdf_renderer' => Helper::get_pdf_renderer(),
85 ) );
86
87 // Styles.
88 wp_enqueue_style(
89 'embedpress_blocks-cgb-block-editor-css', // Handle.
90 EMBEDPRESS_GUTENBERG_DIR_URL . 'dist/blocks.editor.build.css', // Block editor CSS.
91 array( 'wp-edit-blocks' ), // Dependency to include the CSS after it.
92 filemtime( EMBEDPRESS_GUTENBERG_DIR_PATH . 'dist/blocks.editor.build.css' ) // Version: File modification time.
93 );
94 }
95
96 // Hook: Editor assets.
97 add_action( 'enqueue_block_editor_assets', 'embedpress_blocks_cgb_editor_assets' );
98
99
100 function embedpress_block_category( $categories, $post ) {
101 return array_merge(
102 $categories,
103 array(
104 array(
105 'slug' => 'embedpress',
106 'title' => 'EmbedPress',
107 'icon' => '',
108 ),
109 )
110 );
111
112 }
113 $wp_version = get_bloginfo( 'version', 'display' );
114 if ( version_compare( $wp_version, '5.8', '>=') ) {
115 add_filter( 'block_categories_all', 'embedpress_block_category', 10, 2 );
116
117 }else{
118 add_filter( 'block_categories', 'embedpress_block_category', 10, 2 );
119 }
120
121
122
123
124 foreach ( glob( EMBEDPRESS_GUTENBERG_DIR_PATH . 'block-backend/*.php' ) as $block_logic ) {
125 require_once $block_logic;
126 }
127
128 /**
129 * Registers the embedpress gutneberg block on server.
130 */
131
132 function embedpress_gutenberg_register_all_block() {
133 if ( function_exists( 'register_block_type' ) ) :
134
135 $elements = (array) get_option( EMBEDPRESS_PLG_NAME.":elements", []);
136 $g_blocks = isset( $elements['gutenberg']) ? (array) $elements['gutenberg'] : [];
137 $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'];
138
139 foreach ( $blocks_to_registers as $blocks_to_register ) {
140 if ( !empty($g_blocks[$blocks_to_register]) ) {
141 if ( 'embedpress' === $blocks_to_register ) {
142 register_block_type( 'embedpress/embedpress', [
143 'render_callback' => 'embedpress_render_block',
144 ]);
145 }elseif ( 'embedpress-pdf' === $blocks_to_register ) {
146 register_block_type( 'embedpress/embedpress-pdf', [
147 'render_callback' => 'embedpress_pdf_render_block',
148 ]);
149 }elseif ( 'embedpress-calendar' === $blocks_to_register ) {
150 register_block_type( 'embedpress/embedpress-calendar', [
151 'render_callback' => 'embedpress_calendar_render_block',
152 ]);
153 }else{
154 register_block_type( 'embedpress/'.$blocks_to_register );
155 }
156 }else{
157
158 if ( WP_Block_Type_Registry::get_instance()->is_registered( 'embedpress/'.$blocks_to_register) ) {
159 unregister_block_type( 'embedpress/'.$blocks_to_register );
160 }
161
162 }
163 }
164
165 endif;
166 }
167
168 add_action( 'init', 'embedpress_gutenberg_register_all_block' );
169
170 function embedpress_pdf_render_block( $attributes ){
171
172 if ( !empty( $attributes['href']) ) {
173 $renderer = Helper::get_pdf_renderer();
174 $pdf_url = $attributes['href'];
175 $id = !empty( $attributes['id']) ? $attributes['id'] : 'embedpress-pdf-'.rand(100, 10000);
176 $width = !empty( $attributes['width']) ? $attributes['width'].'px' : '600px';
177 $height = !empty( $attributes['height']) ? $attributes['height'].'px' : '600px';
178 $gen_settings = get_option( EMBEDPRESS_PLG_NAME);
179 $powered_by = isset( $gen_settings['embedpress_document_powered_by']) && 'yes' === $gen_settings['embedpress_document_powered_by'];
180 if ( isset( $attributes['powered_by']) ) {
181 $powered_by = $attributes['powered_by'];
182 }
183
184 $src = $renderer . ((strpos($renderer, '?') == false) ? '?' : '&') . 'file=' . $attributes['href'];
185 $hash = md5( $id );
186 $aligns = [
187 'left' => 'alignleft',
188 'right' => 'alignright',
189 'wide' => 'alignwide',
190 'full' => 'alignfull'
191 ];
192 $alignment = isset($attributes['align']) && isset($aligns[$attributes['align']])?$aligns[$attributes['align']]:'';
193 $dimension = "width:$width;height:$height";
194 ob_start();
195 ?>
196 <div class="embedpress-document-embed embedpress-pdf ose-document ep-doc-<?php echo esc_attr( $hash) .' '. esc_attr($alignment) ?>">
197 <iframe style="<?php echo esc_attr( $dimension); ?>; max-width:100%; display: inline-block" src="<?php echo esc_attr( $src); ?>"
198 frameborder="0"></iframe>
199
200 <?php do_action( 'embedpress_pdf_gutenberg_after_embed', $hash, 'pdf', $attributes, $pdf_url); ?>
201
202 <?php
203 if ($powered_by ) {
204 printf( '<p class="embedpress-el-powered">%s</p>', __( 'Powered By EmbedPress', 'embedpress' ) );
205 }?>
206
207 </div>
208 <?php
209 return ob_get_clean();
210 }
211 }
212
213 function embedpress_calendar_render_block( $attributes ){
214 $id = !empty( $attributes['id']) ? $attributes['id'] : 'embedpress-calendar-'.rand(100, 10000);
215 $url = !empty( $attributes['url']) ? $attributes['url'] : '';
216 $is_private = isset( $attributes['is_public']);
217 $hash = md5($id);
218 $width = !empty( $attributes['width']) ? $attributes['width'].'px' : '600px';
219 $height = !empty( $attributes['height']) ? $attributes['height'].'px' : '600px';
220 $gen_settings = get_option( EMBEDPRESS_PLG_NAME);
221 $powered_by = isset( $gen_settings['embedpress_document_powered_by']) && 'yes' === $gen_settings['embedpress_document_powered_by'];
222 if ( isset( $attributes['powered_by']) ) {
223 $powered_by = $attributes['powered_by'];
224 }
225
226
227 $aligns = [
228 'left' => 'alignleft',
229 'right' => 'alignright',
230 'wide' => 'alignwide',
231 'full' => 'alignfull'
232 ];
233 $alignment = isset($attributes['align']) && isset($aligns[$attributes['align']])?$aligns[$attributes['align']]:'';
234 $dimension = "width:$width;height:$height";
235 ob_start();
236 ?>
237 <div class="embedpress-calendar-gutenberg embedpress-calendar ose-calendar <?php echo esc_attr($alignment) ?>" style="<?php echo esc_attr( $dimension); ?>; max-width:100%;">
238
239 <?php
240 if ( !empty( $url) && !$is_private ) {
241 ?>
242 <iframe style="<?php echo esc_attr( $dimension); ?>; max-width:100%; display: inline-block" src="<?php echo esc_attr( $url); ?>"></iframe>
243 <?php } else {
244 if ( is_embedpress_pro_active() ) {
245 echo Embedpress_Google_Helper::shortcode();
246 }
247
248 } ?>
249 <?php do_action( 'embedpress_calendar_gutenberg_after_embed', $hash, 'calendar', $attributes); ?>
250
251 <?php
252 if ($powered_by ) {
253 printf( '<p class="embedpress-el-powered">%s</p>', __( 'Powered By EmbedPress', 'embedpress' ) );
254 }?>
255
256 </div>
257 <?php
258 return ob_get_clean();
259
260 }
261