PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.0.3
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.0.3
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 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 / packages / blocks / Blocks / VariantPriceSelector / Block.php
surecart / packages / blocks / Blocks / VariantPriceSelector Last commit date
Block.php 1 year ago block.json 2 years ago
Block.php
85 lines
1 <?php
2
3 namespace SureCartBlocks\Blocks\VariantPriceSelector;
4
5 use SureCart\Models\Component;
6 use SureCart\Models\Product;
7 use SureCartBlocks\Blocks\BaseBlock;
8
9 /**
10 * Product Variant Selector Block.
11 */
12 class Block extends BaseBlock {
13 /**
14 * Keep track of number of instances.
15 *
16 * @var integer
17 */
18 public static $instance = 0;
19
20 /**
21 * Render the block
22 *
23 * @param array $attributes Block attributes.
24 * @param string $content Post content.
25 *
26 * @return string
27 */
28 public function render( $attributes, $content = '' ) {
29 $product = Product::with(
30 [
31 'prices',
32 'variants',
33 'variant_options',
34 ]
35 )->find( $attributes['product_id'] );
36
37 if ( empty( $product ) || is_wp_error( $product ) ) {
38 return '';
39 }
40
41 // only active prices.
42 $product = $product->withActivePrices()->withSortedPrices();
43
44 // active prices.
45 $first_variant_with_stock = $product->first_variant_with_stock;
46
47 // must have at least one active price.
48 if ( empty( $product->prices->data[0] ) ) {
49 return '';
50 }
51
52 if ( ! empty( $product->prices->data[0]->id ) ) {
53 $line_item = array_merge(
54 [
55 'price_id' => $product->prices->data[0]->id,
56 'quantity' => 1,
57 ],
58 ! empty( $first_variant_with_stock->id ) ? [ 'variant_id' => $first_variant_with_stock->id ] : []
59 );
60
61 sc_initial_state(
62 [
63 'checkout' => [
64 'initialLineItems' => sc_initial_line_items( [ $line_item ] ),
65 ],
66 ]
67 );
68 }
69
70 self::$instance++;
71
72 return wp_kses_post(
73 Component::tag( 'sc-checkout-product-price-variant-selector' )
74 ->id( 'sc-checkout-product-price-variant-selector-' . (int) self::$instance )
75 ->with(
76 [
77 'product' => $product,
78 'label' => ! empty( $attributes['label'] ) ? $attributes['label'] : '',
79 'selectorTitle' => ! empty( $attributes['selectorTitle'] ) ? $attributes['selectorTitle'] : '',
80 ]
81 )->render( '' )
82 );
83 }
84 }
85