PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.16.3
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.16.3
4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 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.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 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.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 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / BlockLibrary / BlockServiceProvider.php
surecart / app / src / BlockLibrary Last commit date
BlockPatternsService.php 3 years ago BlockService.php 3 years ago BlockServiceProvider.php 2 years ago BlockValidationService.php 2 years ago
BlockServiceProvider.php
153 lines
1 <?php
2
3 /**
4 * Block Service Provider
5 */
6
7 namespace SureCart\BlockLibrary;
8
9 use SureCartBlocks\Blocks\BlockService;
10 use SureCartCore\ServiceProviders\ServiceProviderInterface;
11
12 /**
13 * Block Service Provider Class
14 * Registers block service used throughout the plugin
15 *
16 * @author SureCart <andre@surecart.com>
17 * @since 1.0.0
18 * @license GPL
19 */
20 class BlockServiceProvider implements ServiceProviderInterface {
21 /**
22 * {@inheritDoc}
23 *
24 * @param \Pimple\Container $container Service Container.
25 */
26 public function register( $container ) {
27 $app = $container[ SURECART_APPLICATION_KEY ];
28
29 $container['blocks'] = function () use ( $app ) {
30 return new BlockService( $app );
31 };
32
33 $container['blocks.patterns'] = function () use ( $app ) {
34 return new BlockPatternsService( $app );
35 };
36
37 $container['blocks.validations'] = function () {
38 return new BlockValidationService(
39 apply_filters(
40 'surecart_block_validators',
41 [
42 new \SureCart\BlockValidator\VariantChoice(),
43 ]
44 )
45 );
46 };
47
48 $app->alias( 'blocks', 'blocks' );
49
50 $app->alias(
51 'block',
52 function () use ( $app ) {
53 return call_user_func_array( [ $app->blocks(), 'render' ], func_get_args() );
54 }
55 );
56 }
57
58 /**
59 * {@inheritDoc}
60 *
61 * @param \Pimple\Container $container Service Container.
62 *
63 * @return void
64 *
65 * phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter
66 */
67 public function bootstrap( $container ) {
68 $container['blocks.patterns']->bootstrap();
69 $container['blocks.validations']->bootstrap();
70
71 // allow design tokens in css.
72 add_filter(
73 'safe_style_css',
74 function( $styles ) {
75 return array_merge(
76 [
77 '--spacing',
78 '--font-weight',
79 '--line-height',
80 '--font-size',
81 '--text-align',
82 '--color',
83 '--sc-input-label-color',
84 '--primary-background',
85 '--primary-color',
86 '--sc-color-primary-text',
87 '--sc-color-primary-500',
88 '--sc-focus-ring-color-primary',
89 '--sc-input-border-color-focus',
90 ],
91 $styles
92 );
93 }
94 );
95 // allow our web components in wp_kses contexts.
96 add_filter( 'wp_kses_allowed_html', [ $this, 'ksesComponents' ] );
97 // register our blocks.
98 add_action( 'init', [ $this, 'registerBlocks' ] );
99 // register our category.
100 add_action( 'block_categories_all', [ $this, 'registerBlockCategories' ] );
101 }
102
103 /**
104 * Register our custom block category.
105 *
106 * @param array $categories Array of categories.
107 * @return array
108 */
109 public function registerBlockCategories( $categories ) {
110 return [
111 ...[
112 [
113 'slug' => 'surecart',
114 'title' => esc_html__( 'SureCart', 'surecart' ),
115 ],
116 ],
117 ...$categories,
118 ];
119 }
120
121 /**
122 * Add iFrame to allowed wp_kses_post tags
123 *
124 * @param array $tags Allowed tags, attributes, and/or entities.
125 *
126 * @return array
127 */
128 public function ksesComponents( $tags ) {
129 $components = json_decode( file_get_contents( plugin_dir_path( SURECART_PLUGIN_FILE ) . 'app/src/Support/kses.json' ), true );
130
131 // add slot to defaults.
132 $tags['span']['slot'] = true;
133 $tags['div']['slot'] = true;
134 $tags['sc-spinner']['data-*'] = true;
135
136 return array_merge( $components, $tags );
137 }
138
139 /**
140 * Register blocks from config
141 *
142 * @return void
143 */
144 public function registerBlocks() {
145 $service = \SureCart::resolve( SURECART_CONFIG_KEY );
146 if ( ! empty( $service['blocks'] ) ) {
147 foreach ( $service['blocks'] as $block ) {
148 ( new $block() )->register();
149 }
150 }
151 }
152 }
153