PluginProbe ʕ •ᴥ•ʔ
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping / 6.11.0
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping v6.11.0
6.11.0 6.10.0 6.9.1 6.9.0 6.8.1 6.8.0 6.7.4 6.7.3 6.7.2 6.7.0 4.21.7 4.22.0 4.22.1 4.23.0 4.23.1 4.23.2 4.23.3 4.24.0 4.24.1 4.24.10 4.24.11 4.24.12 4.24.13 4.24.14 4.24.15 4.24.16 4.24.17 4.24.18 4.24.19 4.24.2 4.24.4 4.24.6 4.24.7 4.24.8 4.24.9 4.25.0 4.25.1 4.25.2 4.25.4 4.25.5 4.25.6 4.25.7 4.25.8 4.3.0 4.3.1 4.4.0 4.4.1 4.5.0 4.5.1 4.6.0 4.6.1 4.7.0 4.7.1 4.7.2 4.8.0 4.8.1 4.8.3 4.8.4 4.8.5 4.9.0 5.0.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.0.9 5.1.0 5.1.1 5.1.2 5.1.3 5.2.0 5.3.0 5.3.1 5.3.3 5.3.4 5.3.5 6.0.0 6.1.0 6.1.1 6.1.2 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.3.0 trunk 6.4.0 1.4 6.4.1 1.4.1 6.4.2 1.5 6.4.3 1.6 6.4.5 1.6.1 6.5.0 1.6.2 6.5.1 1.7 6.5.2 1.8 6.5.3 1.9 6.5.4 1.9.1 6.5.5 1.9.10 6.5.6 1.9.11 6.5.7 1.9.12 6.5.8 1.9.2 6.6.0 1.9.3 6.6.1 1.9.4 6.6.2 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0 2.0.1 2.1 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.6 3.0.7 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.10.0 3.11.0 3.11.1 3.11.2 3.11.3 3.11.4 3.12.0 3.13.0 3.14.0 3.14.1 3.14.2 3.14.3 3.14.4 3.15.0 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.2.0 3.3.1 3.3.10 3.3.11 3.3.12 3.3.13 3.3.14 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4.0 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.8.0 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.15 3.9.16 3.9.17 3.9.18 3.9.19 3.9.2 3.9.20 3.9.21 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.9 4.0.0 4.0.1 4.0.10 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.2 4.1.3 4.1.4 4.10.0 4.10.1 4.11.0 4.11.1 4.11.2 4.11.3 4.11.4 4.11.5 4.11.6 4.11.7 4.11.8 4.11.9 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.14.0 4.14.1 4.14.2 4.15.0 4.16.0 4.16.1 4.16.2 4.17.0 4.18.0 4.18.1 4.18.2 4.18.3 4.18.4 4.18.5 4.18.6 4.19.0 4.19.1 4.2.0 4.20.0 4.20.1 4.20.2 4.20.3 4.21.0 4.21.1 4.21.2 4.21.3 4.21.4 4.21.5
flexible-shipping / src / WPDesk / FS / Blocks / FreeShipping / FreeShippingBlock.php
flexible-shipping / src / WPDesk / FS / Blocks / FreeShipping Last commit date
FreeShippingBlock.php 1 day ago FreeShippingStoreEndpointData.php 1 day ago
FreeShippingBlock.php
104 lines
1 <?php
2
3 namespace WPDesk\FS\Blocks\FreeShipping;
4
5 use FSVendor\WPDesk\PluginBuilder\Plugin\Hookable;
6 use WPDesk\FS\TableRate\FreeShipping\FreeShippingNoticeData;
7
8 class FreeShippingBlock implements Hookable {
9
10 const BLOCK_NAME = 'flexible-shipping/free-shipping-notice';
11
12 /**
13 * @var string[]
14 */
15 private $session_variable_names;
16
17 /**
18 * FreeShippingBlock constructor.
19 *
20 * @param string[] $session_variable_names .
21 */
22 public function __construct( $session_variable_names ) {
23 if ( ! is_array( $session_variable_names ) ) {
24 $session_variable_names = [];
25 }
26 $this->session_variable_names = $session_variable_names;
27 }
28
29 public function hooks() {
30 add_action( 'init', [ $this, 'create_free_shipping_notice_block' ] );
31 add_action( 'rest_api_init', [ $this, 'add_free_shipping_notice_endpoint' ] );
32 }
33
34 public function add_free_shipping_notice_endpoint() {
35 register_rest_route(
36 'flexible-shipping/v1',
37 '/free-shipping-notice',
38 [
39 'methods' => 'GET',
40 'callback' => [ $this, 'get_free_shipping_notices' ],
41 'permission_callback' => '__return_true',
42 ]
43 );
44 }
45
46 public function get_free_shipping_notices() {
47 $free_shipping_notices = [];
48 foreach ($this->get_free_shipping_notices_data() as $free_shipping_notice_data) {
49 $free_shipping_notices[] = [
50 'content' => apply_filters( 'flexible-shipping/free-shipping/render-notice', $free_shipping_notice_data ),
51 'blocks' => apply_filters( 'flexible-shipping/free-shipping-block/allowed-blocks', [
52 'checkout',
53 'cart'
54 ], $free_shipping_notice_data ),
55 ];
56 }
57
58 return $free_shipping_notices;
59 }
60
61 public function create_free_shipping_notice_block() {
62 register_block_type(
63 __DIR__ . '/../../../../../assets/blocks/free-shipping-notice',
64 [
65 'render_callback' => [ $this, 'render' ],
66 ]
67 );
68 }
69
70 public function render() {
71 return '<div class="flexible-shipping-free-shipping-root"></div>';
72 }
73
74 /**
75 * @return FreeShippingNoticeData[]
76 */
77 private function get_free_shipping_notices_data() {
78 $free_shipping_notice_data = [];
79 $session_variable_names = apply_filters( 'flexible-shipping/free-shipping-block/session-variables', $this->session_variable_names );
80 if ( ! is_array( $session_variable_names) ) {
81 return [];
82 }
83 foreach ( $session_variable_names as $session_variable_name ) {
84 $session_data = $this->get_session()->get( $session_variable_name, '' );
85 if ( $session_data instanceof FreeShippingNoticeData ) {
86 $free_shipping_notice_data[] = $session_data;
87 }
88 if ( is_array( $session_data ) ) {
89 $free_shipping_notice_data[] = FreeShippingNoticeData::create_from_array( $session_data );
90 }
91 }
92
93 return $free_shipping_notice_data;
94 }
95
96 protected function get_session() {
97 if ( WC()->session === null ) {
98 WC()->initialize_session();
99 }
100 return WC()->session;
101 }
102
103 }
104