PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 1.2.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v1.2.1
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 / WordPress / Shortcodes / ShortcodesServiceProvider.php
surecart / app / src / WordPress / Shortcodes Last commit date
ShortcodesBlockConversionService.php 3 years ago ShortcodesService.php 3 years ago ShortcodesServiceProvider.php 3 years ago
ShortcodesServiceProvider.php
268 lines
1 <?php
2
3 namespace SureCart\WordPress\Shortcodes;
4
5 use SureCartBlocks\Blocks\AddToCartButton\Block as AddtoCartBlock;
6 use SureCartBlocks\Blocks\BuyButton\Block as BuyButtonBlock;
7 use SureCartCore\ServiceProviders\ServiceProviderInterface;
8
9 /**
10 * Register shortcodes.
11 */
12 class ShortcodesServiceProvider implements ServiceProviderInterface {
13 /**
14 * Register all dependencies in the IoC container.
15 *
16 * @param \Pimple\Container $container Service container.
17 * @return void
18 */
19 public function register( $container ) {
20 $container['surecart.shortcodes'] = function () {
21 return new ShortcodesService();
22 };
23 }
24
25 /**
26 * Bootstrap the service.
27 *
28 * @param \Pimple\Container $container Service container.
29 * @return void
30 */
31 public function bootstrap( $container ) {
32 add_shortcode( 'sc_line_item', '__return_false' );
33 add_shortcode( 'sc_form', [ $this, 'formShortcode' ] );
34 add_shortcode( 'sc_add_to_cart_button', [ $this, 'addToCartShortcode' ], 10, 2 );
35 add_shortcode( 'sc_buy_button', [ $this, 'buyButtonShortcode' ], 10, 2 );
36 add_shortcode( 'sc_customer_dashboard', [ $this, 'dashboardShortcode' ] );
37
38 // buttons.
39 $container['surecart.shortcodes']->registerBlockShortcode(
40 'sc_customer_dashboard_button',
41 \SureCartBlocks\Blocks\CustomerDashboardButton\Block::class,
42 [
43 'show_icon' => true,
44 'type' => 'primary',
45 'size' => 'medium',
46 ]
47 );
48
49 // dashboard.
50 $container['surecart.shortcodes']->registerBlockShortcode(
51 'sc_customer_orders',
52 \SureCartBlocks\Blocks\Dashboard\CustomerOrders\Block::class,
53 [ 'title' => '' ]
54 );
55 $container['surecart.shortcodes']->registerBlockShortcode(
56 'sc_customer_billing_details',
57 \SureCartBlocks\Blocks\Dashboard\CustomerBillingDetails\Block::class,
58 [ 'title' => '' ]
59 );
60 $container['surecart.shortcodes']->registerBlockShortcode(
61 'sc_customer_charges',
62 \SureCartBlocks\Blocks\Dashboard\CustomerCharges\Block::class,
63 [ 'title' => '' ]
64 );
65 $container['surecart.shortcodes']->registerBlockShortcode(
66 'sc_customer_payment_methods',
67 \SureCartBlocks\Blocks\Dashboard\CustomerPaymentMethods\Block::class,
68 [ 'title' => '' ]
69 );
70 $container['surecart.shortcodes']->registerBlockShortcode(
71 'sc_customer_subscriptions',
72 \SureCartBlocks\Blocks\Dashboard\CustomerSubscriptions\Block::class,
73 [ 'title' => '' ]
74 );
75 $container['surecart.shortcodes']->registerBlockShortcode(
76 'sc_customer_downloads',
77 \SureCartBlocks\Blocks\Dashboard\CustomerDownloads\Block::class,
78 [ 'title' => '' ]
79 );
80 $container['surecart.shortcodes']->registerBlockShortcode(
81 'sc_customer_wordpress_account',
82 \SureCartBlocks\Blocks\Dashboard\WordPressAccount\Block::class,
83 [ 'title' => '' ]
84 );
85 $container['surecart.shortcodes']->registerBlockShortcode(
86 'sc_customer_dashboard_page',
87 \SureCartBlocks\Blocks\Dashboard\DashboardPage\Block::class,
88 [ 'name' => '' ]
89 );
90 $container['surecart.shortcodes']->registerBlockShortcode(
91 'sc_customer_dashboard_tab',
92 \SureCartBlocks\Blocks\Dashboard\DashboardTab\Block::class,
93 [
94 'icon' => 'shopping-bag',
95 'panel' => '',
96 'title' => 'test',
97 ]
98 );
99
100 // confirmation.
101 $container['surecart.shortcodes']->registerBlockShortcode(
102 'sc_order_confirmation',
103 \SureCartBlocks\Blocks\Confirmation\Block::class,
104 );
105 $container['surecart.shortcodes']->registerBlockShortcode(
106 'sc_order_confirmation_line_items',
107 \SureCartBlocks\Blocks\OrderConfirmationLineItems\Block::class,
108 );
109
110 }
111
112 /**
113 * Dashboard tab shortcode.
114 *
115 * @param array $attributes Shortcode attributes.
116 * @param string $content Shortcode content.
117 * @return string Shortcode output.
118 */
119 public function dashboardShortcode( $attributes, $content ) {
120 $attributes = shortcode_atts(
121 [],
122 $attributes,
123 'sc_customer_dashboard'
124 );
125
126 return '<sc-tab-group style="font-size:16px;font-family:var(--sc-font-sans)" class="wp-block-surecart-customer-dashboard alignwide">' . ( new \SureCartBlocks\Blocks\Dashboard\CustomerDashboard\Block() )->render( $attributes, $content ) . '</sc-tab-group>';
127 }
128
129 /**
130 * Form shorcode
131 *
132 * @param array $atts Shortcode attributes.
133 * @param string $content Shortcode content.
134 * @return string Shortcode output.
135 */
136 public function formShortcode( $atts ) {
137 $atts = shortcode_atts(
138 [
139 'id' => null,
140 ],
141 $atts,
142 'sc_form'
143 );
144
145 if ( ! $atts['id'] ) {
146 return;
147 }
148
149 $form = \SureCart::forms()->get( $atts['id'] );
150
151 global $load_sc_js;
152 $load_sc_js = true;
153
154 global $sc_form_id;
155 $sc_form_id = $atts['id'];
156
157 // check to make sure we have a form post.
158 if ( ! is_a( $form, 'WP_Post' ) ) {
159 return __( 'This form is not available or has been deleted.', 'surecart' );
160 }
161
162 return apply_filters( 'surecart/shortcode/render', do_blocks( $form->post_content ), $atts, $form );
163 }
164
165 /**
166 * Add To Cart Shortcode
167 *
168 * @param array $atts An array of attributes.
169 * @param string $content Content.
170 *
171 * @return string
172 */
173 public function addToCartShortcode( $atts, $content ) {
174 $atts = shortcode_atts(
175 [
176 'price_id' => null,
177 'type' => 'primary',
178 'size' => 'medium',
179 'button_text' => $content,
180 ],
181 $atts,
182 'sc_add_to_cart_button'
183 );
184
185 return( new AddToCartBlock() )->render( $atts );
186 }
187
188 /**
189 * Buy button shortcode.
190 *
191 * @param array $atts An array of attributes.
192 * @param string $content Content.
193 *
194 * @return string
195 */
196 public function buyButtonShortcode( $atts, $content ) {
197 // Remove inner shortcode from buy button label
198 $label = strip_shortcodes( $content );
199 $atts = shortcode_atts(
200 [
201 'type' => 'primary',
202 'size' => 'medium',
203 'label' => $label,
204 ],
205 $atts,
206 'sc_buy_button'
207 );
208
209 $atts['line_items'] = (array) $this->getShortcodesAtts(
210 'sc_line_item',
211 $content,
212 [
213 'price_id' => null,
214 'quantity' => 1,
215 ]
216 );
217
218 foreach ( $atts['line_items'] as $key => $line_item ) {
219 $atts['line_items'][ $key ]['id'] = $line_item['price_id'];
220 }
221
222 $block = new BuyButtonBlock();
223
224 return $block->render( $atts );
225 }
226
227 /**
228 * Get specific shortcode atts from content
229 *
230 * @param string $name Name of shortcode
231 * @param string $content Page content
232 * @param array $defaults Defaults for each
233 * @return array
234 */
235 public function getShortcodesAtts( $name, $content, $defaults = [] ) {
236 $items = [];
237
238 // if shortcode exists.
239 if (
240 preg_match_all( '/' . get_shortcode_regex() . '/s', $content, $matches )
241 && array_key_exists( 2, $matches )
242 && in_array( $name, $matches[2] )
243 ) {
244 foreach ( (array) $matches[0] as $key => $value ) {
245 if ( strpos( $value, $name ) !== false ) {
246 $items[] = wp_parse_args(
247 shortcode_parse_atts( $matches[3][ $key ] ),
248 $defaults
249 );
250 }
251 }
252 }
253
254 return $items;
255 }
256
257 protected function convertToBlock( $name, $block, $defaults = [], $atts = [], $content = '' ) {
258 return( new $block() )->render(
259 shortcode_atts(
260 $defaults,
261 $atts,
262 $name
263 ),
264 $content
265 );
266 }
267 }
268