-
Notifications
You must be signed in to change notification settings - Fork 0
/
class-inacademia-blocks-integration.php
155 lines (136 loc) · 3.03 KB
/
class-inacademia-blocks-integration.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<?php
/**
* InAcademia
*
* @package InAcademia
*/
use Automattic\WooCommerce\Blocks\Integrations\IntegrationInterface;
/**
* Class for integrating with WooCommerce Blocks
*/
class InAcademia_Blocks_Integration implements IntegrationInterface {
/**
* Url
*
* @var string url
*/
private $url = '#';
/**
* Coupon
*
* @var string coupon
*/
private $coupon = '';
/**
* Button
*
* @var string button
*/
private $button = 'off';
/**
* Img_validate
*
* @var string validate
*/
private $img_validate = '';
/**
* Img_validated
*
* @var string validated
*/
private $img_validated = '';
/**
* Get name
*/
public function get_name() {
return 'inacademia';
}
/**
* Get script handles
*/
public function get_script_handles() {
return array( 'inacademia-blocks' );
}
/**
* Get editor script handles
*/
public function get_editor_script_handles() {
return array( 'inacademia-blocks' );
}
/**
* Get script data
*/
public function get_script_data() {
$data = array(
'url' => $this->url,
'img_validate' => $this->img_validate,
'img_validated' => $this->img_validated,
'coupon' => $this->coupon,
'button' => $this->button,
'coupon_product_ids' => $this->coupon_product_ids,
'excluded_product_ids' => $this->excluded_product_ids,
);
return $data;
}
/**
* Excluded ids
*
* @param int $c coupon id.
*/
private function excluded_ids( $c ) {
if ( ! WC()->cart || WC()->is_rest_api_request() ) {
return false;
}
$coupon = new \WC_Coupon( $c );
$coupon_id = $coupon->get_id();
return $coupon->get_excluded_product_ids();
}
/**
* Coupon ids
*
* @param int $c coupon id.
*/
private function coupon_ids( $c ) {
if ( ! WC()->cart || WC()->is_rest_api_request() ) {
return false;
}
$coupon = new \WC_Coupon( $c );
$coupon_id = $coupon->get_id();
return $coupon->get_product_ids();
}
/**
* Initialize
*/
public function initialize() {
$options = get_option( 'inacademia_options', array() );
$this->coupon = @$options['coupon_name'] ?? '';
$this->button = @$options['button'] ?? 'off';
$this->url = esc_url( inacademia_create_start_url() );
$this->img_validate = plugins_url( 'assets/mortarboard.svg', __FILE__ );
$this->img_validated = plugins_url( 'assets/mortarboard_white.svg', __FILE__ );
$this->coupon_product_ids = $this->coupon_ids( $this->coupon );
$this->excluded_product_ids = $this->excluded_ids( $this->coupon );
$this->register_inacademia_scripts();
}
/**
* Register scripts
*/
public function register_inacademia_scripts() {
$script_path = '/build/index.js';
$script_url = plugins_url( $script_path, __FILE__ );
$script_asset_path = __DIR__ . '/build/index.asset.php';
$script_asset = file_exists( $script_asset_path )
? require $script_asset_path
: array(
'dependencies' => array(),
'version' => INACADEMIA_VERSION,
);
wp_enqueue_script(
'inacademia-blocks',
$script_url,
$script_asset['dependencies'],
$script_asset['version'],
true
);
}
}