PluginProbe
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.3.3
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.3.3
4.7.2 4.7.1 4.7.0 4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.1 4.5.0 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 All 281 releases
surecart / app / src / BlockLibrary / BlockServiceProvider.php
BlockServiceProvider.php
179 lines 4.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Block Service Provider
5 */
6
7 namespace SureCart\BlockLibrary;
8
9 use SureCart\BlockLibrary\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 * Cached components from kses.json
23 *
24 * @var array
25 */
26 private static $components = [];
27
28 /**
29 * {@inheritDoc}
30 *
31 * @param \Pimple\Container $container Service Container.
32 */
33 public function register( $container ) {
34 $app = $container[ SURECART_APPLICATION_KEY ];
35
36 $container['block'] = fn () => new BlockService( $app );
37
38 $container['block.support.anchor'] = fn () => new BlockAnchorSupportService();
39 $container['block.support.currency'] = fn () => new BlockCurrencyConversionSupportService();
40 $container['blocks.quick_view'] = fn () => new ProductQuickViewService();
41 $container['blocks.review_form'] = fn () => new ProductReviewFormService();
42 $container['blocks.patterns'] = fn () => new BlockPatternsService( $app );
43 $container['blocks.mode_switcher'] = fn () => new FormModeSwitcherService( $app );
44 $container['blocks.validations'] = fn () => new BlockValidationService(
45 apply_filters(
46 'surecart_block_validators',
47 array(
48 new \SureCart\BlockValidator\VariantChoice(),
49 )
50 )
51 );
52
53 $app->alias( 'block', 'block' );
54
55 // Register blocks.
56 include plugin_dir_path( SURECART_PLUGIN_FILE ) . 'packages/blocks-next/index.php';
57 }
58
59 /**
60 * {@inheritDoc}
61 *
62 * @param \Pimple\Container $container Service Container.
63 *
64 * @return void
65 *
66 * phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter
67 */
68 public function bootstrap( $container ) {
69 $container['blocks.patterns']->bootstrap();
70 $container['blocks.validations']->bootstrap();
71 $container['blocks.mode_switcher']->bootstrap();
72 $container['block.support.anchor']->bootstrap();
73 $container['block.support.currency']->bootstrap();
74
75 // allow design tokens in css.
76 add_filter(
77 'safe_style_css',
78 function ( $styles ) {
79 return array_merge(
80 array(
81 '--spacing',
82 '--font-weight',
83 '--line-height',
84 '--font-size',
85 '--text-align',
86 '--color',
87 '--sc-input-label-color',
88 '--primary-background',
89 '--primary-color',
90 '--sc-color-primary-text',
91 '--sc-color-primary-500',
92 '--sc-focus-ring-color-primary',
93 '--sc-input-border-color-focus',
94 ),
95 $styles
96 );
97 }
98 );
99 // allow our web components in wp_kses contexts.
100 add_filter( 'wp_kses_allowed_html', array( $this, 'ksesComponents' ) );
101 // register our blocks.
102 add_action( 'init', array( $this, 'registerBlocks' ) );
103 // register our category.
104 add_action( 'block_categories_all', array( $this, 'registerBlockCategories' ) );
105 }
106
107 /**
108 * Register our custom block category.
109 *
110 * @param array $categories Array of categories.
111 * @return array
112 */
113 public function registerBlockCategories( $categories ) {
114 return array(
115 ...array(
116 array(
117 'slug' => 'surecart',
118 'title' => esc_html__( 'Checkout', 'surecart' ),
119 ),
120 array(
121 'slug' => 'surecart-customer-dashboard',
122 'title' => esc_html__( 'Customer Dashboard', 'surecart' ),
123 ),
124 array(
125 'slug' => 'surecart-cart',
126 'title' => esc_html__( 'Cart', 'surecart' ),
127 ),
128 array(
129 'slug' => 'surecart-product-list',
130 'title' => esc_html__( 'Shop', 'surecart' ),
131 ),
132 array(
133 'slug' => 'surecart-product-page',
134 'title' => esc_html__( 'Product', 'surecart' ),
135 ),
136 array(
137 'slug' => 'surecart-upsell-page',
138 'title' => esc_html__( 'Upsells', 'surecart' ),
139 ),
140 ),
141 ...$categories,
142 );
143 }
144
145 /**
146 * Add iFrame to allowed wp_kses_post tags
147 *
148 * @param array $tags Allowed tags, attributes, and/or entities.
149 *
150 * @return array
151 */
152 public function ksesComponents( $tags ) {
153 if ( empty( self::$components ) ) {
154 self::$components = json_decode( file_get_contents( plugin_dir_path( SURECART_PLUGIN_FILE ) . 'app/src/Support/kses.json' ), true );
155 }
156
157 // add slot to defaults.
158 $tags['span']['slot'] = true;
159 $tags['div']['slot'] = true;
160 $tags['sc-spinner']['data-*'] = true;
161
162 return array_merge( self::$components, $tags );
163 }
164
165 /**
166 * Register blocks from config
167 *
168 * @return void
169 */
170 public function registerBlocks() {
171 $service = \SureCart::resolve( SURECART_CONFIG_KEY );
172 if ( ! empty( $service['blocks'] ) ) {
173 foreach ( $service['blocks'] as $block ) {
174 ( new $block() )->register();
175 }
176 }
177 }
178 }
179