Flexible Shipping for WooCommerce - Version 3.11.0

Version Description

  • 2020-07-30 =
  • Added ability to open shipment label in new tab - works with some integrations
Download this release

Release Info

Developer wpdesk
Plugin Icon 128x128 Flexible Shipping for WooCommerce
Version 3.11.0
Comparing to
See all releases

Code changes from version 3.10.0 to 3.11.0

Files changed (29) hide show
  1. classes/class-flexible-shipping-plugin.php +3 -1
  2. classes/table-rate/shipping-method.php +24 -13
  3. classes/wp-wpdesk-fs-shipment/label/class-single-label-file-dispatcher.php +95 -0
  4. classes/wp-wpdesk-fs-shipment/shipment/class-shipment.php +492 -464
  5. classes/wp-wpdesk-fs-shipment/shipment/cpt-shipment.php +0 -23
  6. composer.lock +417 -230
  7. flexible-shipping.php +3 -3
  8. readme.txt +4 -1
  9. src/WPDesk/FS/Helpers/ShippingMethod.php +67 -0
  10. src/WPDesk/FS/TableRate/NewRulesTablePointer/RulesPointerMessage.php +22 -56
  11. src/WPDesk/FS/TableRate/NewRulesTablePointer/RulesPointerOption.php +7 -5
  12. src/WPDesk/FS/TableRate/NewRulesTablePointer/ShippingMethodNewRuleTableSetting.php +26 -4
  13. src/WPDesk/FS/TableRate/NewRulesTablePointer/views/html-flexible-shipping-settings-script.php +17 -16
  14. src/WPDesk/FS/TableRate/NewRulesTableTracker.php +33 -6
  15. src/WPDesk/FS/TableRate/RulesSettingsField.php +14 -9
  16. src/WPDesk/FS/TableRate/UserFeedback.php +33 -12
  17. src/WPDesk/FS/TableRate/views/shipping-method-settings-rules.php +1 -1
  18. vendor/autoload.php +1 -1
  19. vendor/composer/autoload_classmap.php +3 -0
  20. vendor/composer/autoload_real.php +4 -4
  21. vendor/composer/autoload_static.php +8 -5
  22. vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/composer.json +0 -3
  23. vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/Sender/NullSender.php +26 -0
  24. vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/AjaxUserFeedbackDataHandler.php +8 -10
  25. vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/Scripts.php +1 -1
  26. vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/Thickbox.php +1 -1
  27. vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/Tracker.php +6 -6
  28. vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/TrackerFactory.php +6 -5
  29. vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/UserFeedbackContent.php +1 -1
classes/class-flexible-shipping-plugin.php CHANGED
@@ -151,6 +151,8 @@ class Flexible_Shipping_Plugin extends AbstractPlugin implements HookableCollect
151
  $abtesting = new WPDesk_Flexible_Shipping_AB_Deactivation_Contact_Information();
152
  $this->variant = $abtesting->get_variant();
153
 
 
 
154
  $this->add_hookable( new WPDesk_Flexible_Shipping_Tracker() );
155
 
156
  $this->add_hookable( new WPDesk\FS\Rate\Flexible_Shipping_Order_Counter() );
@@ -172,7 +174,7 @@ class Flexible_Shipping_Plugin extends AbstractPlugin implements HookableCollect
172
  $this->add_hookable( new WPDesk_Flexible_Shipping_Rest_Api_Order_Response_Data_Appender() );
173
 
174
  $this->add_hookable( new ShippingIntegrations( 'flexible_shipping' ) );
175
-
176
  $this->add_hookable( new WPDesk_Flexible_Shipping_Order_Item_Meta() );
177
 
178
  $rules_pointer_option = new RulesPointerOption();
151
  $abtesting = new WPDesk_Flexible_Shipping_AB_Deactivation_Contact_Information();
152
  $this->variant = $abtesting->get_variant();
153
 
154
+ $this->add_hookable( new WPDesk_Flexible_Shipping_Single_Label_File_Dispatcher() );
155
+
156
  $this->add_hookable( new WPDesk_Flexible_Shipping_Tracker() );
157
 
158
  $this->add_hookable( new WPDesk\FS\Rate\Flexible_Shipping_Order_Counter() );
174
  $this->add_hookable( new WPDesk_Flexible_Shipping_Rest_Api_Order_Response_Data_Appender() );
175
 
176
  $this->add_hookable( new ShippingIntegrations( 'flexible_shipping' ) );
177
+
178
  $this->add_hookable( new WPDesk_Flexible_Shipping_Order_Item_Meta() );
179
 
180
  $rules_pointer_option = new RulesPointerOption();
classes/table-rate/shipping-method.php CHANGED
@@ -188,11 +188,22 @@ class WPDesk_Flexible_Shipping extends WC_Shipping_Method {
188
  return $ret;
189
  }
190
 
 
 
 
191
  private function should_show_new_rules_table() {
192
- $new_rule_table_setting = new ShippingMethodNewRuleTableSetting();
193
- return ! wpdesk_is_plugin_active( 'flexible-shipping-pro/flexible-shipping-pro.php' ) && $new_rule_table_setting->is_enabled();
194
  }
195
 
 
 
 
 
 
 
 
 
196
  public function generate_shipping_rules_html( $key, $data ) {
197
  if ( ! function_exists( 'woocommerce_form_field' ) ) {
198
  $wc_template_functions = trailingslashit( dirname( __FILE__ ) ) . '../../woocommerce/includes/wc-template-functions.php';
@@ -200,17 +211,17 @@ class WPDesk_Flexible_Shipping extends WC_Shipping_Method {
200
  include_once $wc_template_functions;
201
  }
202
  }
203
- if ( $this->should_show_new_rules_table() ) {
204
- $field_key = $this->get_field_key( $key );
205
- $rules_settings = new RulesSettingsField( $key, $this->get_field_key( $key ), self::SETTING_METHOD_RULES, $data );
206
- return $rules_settings->render();
207
- } else {
208
- ob_start();
209
- $show_new_rules_table_switch_link = get_option( RulesPointerOption::OPTION_NAME, '0' ) === '1' && get_option( ShippingMethodNewRuleTableSetting::OPTION_NEW_RULES_DISABLED, '0' ) === '0';
210
- include( 'views/html-shipping-method-rules.php' );
211
-
212
- return ob_get_clean();
213
- }
214
  }
215
 
216
  public function shipping_method_title_used( $title, $shipping_methods ) {
188
  return $ret;
189
  }
190
 
191
+ /**
192
+ * @return bool
193
+ */
194
  private function should_show_new_rules_table() {
195
+ $new_rule_table_setting = new ShippingMethodNewRuleTableSetting();
196
+ return ! wpdesk_is_plugin_active( 'flexible-shipping-pro/flexible-shipping-pro.php' ) && $new_rule_table_setting->is_enabled();
197
  }
198
 
199
+ /**
200
+ * Generates method rules field.
201
+ *
202
+ * @param string $key .
203
+ * @param array $data .
204
+ *
205
+ * @return string
206
+ */
207
  public function generate_shipping_rules_html( $key, $data ) {
208
  if ( ! function_exists( 'woocommerce_form_field' ) ) {
209
  $wc_template_functions = trailingslashit( dirname( __FILE__ ) ) . '../../woocommerce/includes/wc-template-functions.php';
211
  include_once $wc_template_functions;
212
  }
213
  }
214
+ if ( $this->should_show_new_rules_table() ) {
215
+ $field_key = $this->get_field_key( $key );
216
+ $rules_settings = new RulesSettingsField( $key, $this->get_field_key( $key ), self::SETTING_METHOD_RULES, $data );
217
+ return $rules_settings->render();
218
+ } else {
219
+ ob_start();
220
+ $show_new_rules_table_switch_link = RulesPointerOption::is_option_set() && ! ShippingMethodNewRuleTableSetting::was_option_disabled();
221
+ include( 'views/html-shipping-method-rules.php' );
222
+
223
+ return ob_get_clean();
224
+ }
225
  }
226
 
227
  public function shipping_method_title_used( $title, $shipping_methods ) {
classes/wp-wpdesk-fs-shipment/label/class-single-label-file-dispatcher.php ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Single label file dispatcher.
4
+ *
5
+ * @package Flexible Shipping
6
+ */
7
+
8
+ use FSVendor\WPDesk\PluginBuilder\Plugin\Hookable;
9
+
10
+ /**
11
+ * Can dispatch single label file.
12
+ */
13
+ class WPDesk_Flexible_Shipping_Single_Label_File_Dispatcher implements Hookable {
14
+
15
+ const PRIORITY_VERY_LOW = 9999999;
16
+
17
+ const DEFAULT_CONTENT_TYPE = 'application/octet-stream';
18
+
19
+ const ACTION_DOWNLOAD = 'download';
20
+ const ACTION_OPEN = 'open';
21
+
22
+ /**
23
+ * Hooks.
24
+ */
25
+ public function hooks() {
26
+ add_action( 'init', array( $this, 'dispatch_label_if_requested' ), self::PRIORITY_VERY_LOW );
27
+ }
28
+
29
+ /**
30
+ * @param array $label_data .
31
+ *
32
+ * @return string
33
+ */
34
+ private function prepare_content_type_from_label_data( array $label_data ) {
35
+ if ( 'html' === $label_data['label_format'] ) {
36
+ return 'text/html';
37
+ }
38
+
39
+ return 'application/' . $label_data['label_format'];
40
+ }
41
+
42
+ /**
43
+ * @return string
44
+ */
45
+ private function get_action_parameter() {
46
+ return ! empty( $_GET['action'] ) ? sanitize_text_field( wp_unslash( $_GET['action'] ) ) : self::ACTION_DOWNLOAD; // phpcs:ignore
47
+ }
48
+
49
+ /**
50
+ * @param array $label_data .
51
+ *
52
+ * @return string
53
+ */
54
+ private function prepare_content_type( array $label_data ) {
55
+ if ( $this->get_action_parameter() === self::ACTION_OPEN ) {
56
+ return $this->prepare_content_type_from_label_data( $label_data );
57
+ } else {
58
+ return self::DEFAULT_CONTENT_TYPE;
59
+ }
60
+ }
61
+
62
+ /**
63
+ * @param string $shipment_id .
64
+ */
65
+ private function dispatch_label_and_die( $shipment_id ) {
66
+ $shipment = fs_get_shipment( $shipment_id );
67
+ $label_data = $shipment->get_label();
68
+ header( 'Content-type: ' . $this->prepare_content_type( $label_data ) );
69
+ if ( $this->get_action_parameter() === self::ACTION_DOWNLOAD ) {
70
+ header( 'Content-Disposition: attachment; filename=' . $label_data['file_name'] );
71
+ }
72
+ echo $label_data['content']; // phpcs:ignore
73
+ die();
74
+ }
75
+
76
+ /**
77
+ * Output shipping label.
78
+ *
79
+ * @internal
80
+ */
81
+ public function dispatch_label_if_requested() {
82
+ if ( ! empty( $_GET['flexible_shipping_get_label'] ) && ! empty( $_GET['nonce'] ) ) {
83
+ $nonce = sanitize_text_field( wp_unslash( $_GET['nonce'] ) );
84
+ if ( ! wp_verify_nonce( $nonce, 'flexible_shipping_get_label' ) ) {
85
+ echo esc_html( __( 'Invalid nonce!', 'flexible-shipping' ) );
86
+ } else {
87
+ try {
88
+ $this->dispatch_label_and_die( sanitize_key( $_GET['flexible_shipping_get_label'] ) );
89
+ } catch ( Exception $e ) {
90
+ wp_die( esc_html( $e->getMessage() ), esc_html( __( 'Label error', 'flexible-shipping' ) ) );
91
+ }
92
+ }
93
+ }
94
+ }
95
+ }
classes/wp-wpdesk-fs-shipment/shipment/class-shipment.php CHANGED
@@ -1,476 +1,504 @@
1
  <?php
 
 
 
 
 
2
 
3
  use Psr\Log\LoggerInterface;
4
 
5
- if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
6
-
7
- if ( ! class_exists( 'WPDesk_Flexible_Shipping_Shipment' ) ) {
8
- /**
9
- * Class WPDesk_Flexible_Shipping_Shipment
10
- */
11
- abstract class WPDesk_Flexible_Shipping_Shipment {
12
-
13
- const STATUS_FS_NEW = 'fs-new';
14
- const STATUS_FS_CREATED = 'fs-created';
15
- const STATUS_FS_CONFIRMED = 'fs-confirmed';
16
- const STATUS_FS_FAILED = 'fs-failed';
17
- const STATUS_FS_MANIFEST = 'fs-manifest';
18
-
19
- const CREATED_VIA = 'created_via';
20
-
21
- const SENT_VIA_METABOX = 'metabox';
22
- const SENT_VIA_BULK = 'bulk';
23
- const SENT_VIA_AUTO = 'auto';
24
-
25
- const SENT_VIA = '_sent_via';
26
-
27
- const NOT_SET = 'not_set';
28
-
29
- /**
30
- * @var int
31
- */
32
- private $id;
33
-
34
- /**
35
- * @var WP_Post
36
- * Post assigned to shipment
37
- */
38
- private $post;
39
-
40
- /**
41
- * @var null|WC_Order
42
- * WC_Order assigned to shipment
43
- */
44
- private $order = null;
45
-
46
- /**
47
- * @var bool
48
- * True if assigned post ich changed. Used when saving post
49
- */
50
- private $save_post = false;
51
-
52
- /**
53
- * @var null
54
- * Holds old status when shipment status is changed
55
- */
56
- private $old_status = null;
57
-
58
- /**
59
- * @var bool
60
- * True when status changing
61
- */
62
- private $status_changed = false;
63
-
64
- /**
65
- * @var array
66
- * Shipment metadata (from postmeta table)
67
- */
68
- private $meta_data = array();
69
-
70
- /**
71
- * @var bool
72
- * True when shipment metadata loaded
73
- */
74
- private $meta_data_loaded = false;
75
-
76
- /**
77
- * @var array
78
- * Holds changed metadata keys. Used when saving shipment
79
- */
80
- private $meta_data_save_keys = array();
81
-
82
- /**
83
- * @var string
84
- * Context for order metabox
85
- */
86
- private $order_metabox_context = 'side';
87
-
88
- /**
89
- * Logger provided by Flexible Shipping plugin.
90
- *
91
- * @var LoggerInterface
92
- */
93
- protected static $fs_logger;
94
-
95
- /**
96
- * WPDesk_Flexible_Shipping_Shipment constructor.
97
- *
98
- * @param int|WP_Post|WPDesk_Flexible_Shipping_Shipment $shipment Shipment or shipment ID.
99
- * @param WC_Order|null $order Order.
100
- */
101
- public function __construct( $shipment, $order = null ) {
102
- if ( is_numeric( $shipment ) ) {
103
- $this->id = absint( $shipment );
104
- $this->post = get_post( $this->id );
105
- } elseif ( $shipment instanceof WPDesk_Flexible_Shipping_Shipment ) {
106
- $this->id = absint( $shipment->get_id() );
107
- $this->post = $shipment->get_post();
108
- } elseif ( isset( $shipment->ID ) ) {
109
- $this->id = absint( $shipment->ID );
110
- $this->post = $shipment;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  }
112
- $this->order = $order;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  }
114
 
115
- /**
116
- * Set logger. This logger is set by Flexible Shipping plugin.
117
- *
118
- * @param LoggerInterface $fs_logger .
119
- */
120
- public static function set_fs_logger( LoggerInterface $fs_logger ) {
121
- static::$fs_logger = $fs_logger;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  }
123
 
124
- /**
125
- * Writes log message to log provided by Flexible Shipping plugin.
126
- *
127
- * @param mixed $level .
128
- * @param string $message .
129
- * @param array $context .
130
- */
131
- private function fs_log( $level, $message, array $context = array() ) {
132
- if ( static::$fs_logger ) {
133
- $context['order_id'] = $this->get_order()->get_id();
134
- $context['shipment_id'] = $this->get_id();
135
- $current_user = wp_get_current_user();
136
- $context['user_id'] = $current_user->ID;
137
- if ( isset( $_SERVER['REQUEST_URI'] ) ) {
138
- $context['request_uri'] = sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) );
139
- }
140
- static::$fs_logger->log( $level, $message, $context );
141
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
142
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
 
144
- /**
145
- * @return mixed
146
- */
147
- public function get_id() {
148
- return $this->id;
149
- }
150
-
151
- /**
152
- * @return mixed
153
- */
154
- public function get_post() {
155
- return $this->post;
156
- }
157
-
158
- /**
159
- * @return WC_Order
160
- */
161
- public function get_order() {
162
- if ( $this->order == null ) {
163
- $this->order = wc_get_order( $this->post->post_parent );
164
- }
165
- return $this->order;
166
- }
167
-
168
- /**
169
- * @return int
170
- */
171
- public function get_order_id() {
172
- return $this->post->post_parent;
173
- }
174
-
175
- /**
176
- * @return string
177
- */
178
- public function get_order_metabox_context() {
179
- return $this->order_metabox_context;
180
- }
181
-
182
- /**
183
- * @param string $order_metabox_context
184
- */
185
- public function set_order_metabox_context( $order_metabox_context ) {
186
- $this->order_metabox_context = $order_metabox_context;
187
- }
188
-
189
- /**
190
- * @param string $meta_key
191
- * @param null|sting $default
192
- * @return array|string|null
193
- */
194
- public function get_meta( $meta_key = '', $default = null ) {
195
- $this->load_meta_data();
196
- if ( $meta_key == '' ) {
197
- return $this->meta_data;
198
- }
199
- if ( isset( $this->meta_data[$meta_key] ) ) {
200
- return maybe_unserialize( $this->meta_data[$meta_key][0] );
201
- }
202
- else {
203
- return $default;
204
- }
205
- return null;
206
- }
207
-
208
- /**
209
- * @param string $meta_key
210
- * @param int|string|array|object|null $value
211
- */
212
- public function set_meta( $meta_key, $value ) {
213
- $this->load_meta_data();
214
- if ( !isset( $this->meta_data[$meta_key] ) ) {
215
- $this->meta_data[$meta_key] = array();
216
- }
217
- $this->meta_data[$meta_key][0] = $value;
218
- $this->meta_data_save_keys[$meta_key] = $meta_key;
219
- }
220
-
221
- /**
222
- * @param string $meta_key
223
- */
224
- public function delete_meta( $meta_key ) {
225
- unset( $this->meta_data[$meta_key] );
226
- $this->meta_data_save_keys[$meta_key] = $meta_key;
227
- }
228
-
229
- /**
230
- * Saves shipment data to database.
231
- */
232
- public function save() {
233
- if ( $this->save_post ) {
234
- wp_update_post($this->post);
235
- $this->fs_log( 'debug', 'Shipment post saved', [ 'post' => $this->post ] );
236
- $this->save_post = false;
237
- }
238
- foreach ( $this->meta_data_save_keys as $key ) {
239
- if ( isset( $this->meta_data[$key] ) ) {
240
- update_post_meta( $this->id, $key, $this->meta_data[$key][0] );
241
- $this->fs_log( 'debug', 'Shipment meta data saved', [ 'key' => $key, 'value' => $this->meta_data[$key][0] ] );
242
- }
243
- else {
244
- delete_post_meta( $this->id, $key );
245
- $this->fs_log( 'debug', 'Shipment meta data deleted', [ 'key' => $key ] );
246
- }
247
- unset( $this->meta_data_save_keys[$key] );
248
- }
249
- if ( $this->status_changed ) {
250
- do_action( 'flexible_shipping_shipment_status_updated', $this->old_status, $this->post->post_status, $this );
251
- $this->status_changed = false;
252
- $this->old_status = null;
253
- }
254
- }
255
-
256
- /**
257
- * Loads all meta data from postmeta
258
- */
259
- public function load_meta_data() {
260
- if ( !$this->meta_data_loaded ) {
261
- $this->meta_data = get_post_meta( $this->id );
262
- $this->meta_data_loaded = true;
263
- }
264
- }
265
-
266
- /**
267
- * @return string|null
268
- * Returns integration assigned to shipment
269
- */
270
- public function get_integration() {
271
- return $this->get_meta( '_integration' );
272
- }
273
-
274
- /**
275
- * @return string
276
- * Returns URL for admin metabox for this shipment
277
- */
278
- public function get_order_metabox_url() {
279
- return admin_url( 'post.php?post=' . $this->get_order_id() . '&action=edit#shipment_meta_box_' . $this->get_id() );
280
- }
281
-
282
- /**
283
- * @return string
284
- */
285
- public function get_status() {
286
- return $this->post->post_status;
287
- }
288
-
289
- /**
290
- * @return string
291
- */
292
- public function get_status_for_shipping_column() {
293
- $statuses = array(
294
- self::STATUS_FS_NEW => 'new',
295
- self::STATUS_FS_CREATED => 'created',
296
- self::STATUS_FS_CONFIRMED => 'confirmed',
297
- self::STATUS_FS_FAILED => 'error',
298
- self::STATUS_FS_MANIFEST => 'manifest',
299
- );
300
- return $statuses[$this->get_status()];
301
- }
302
-
303
- /**
304
- * @return null|string
305
- * Returns URL for label
306
- */
307
- public function get_label_url() {
308
- if ( in_array( $this->get_status(), array( self::STATUS_FS_NEW, self::STATUS_FS_CREATED, self::STATUS_FS_FAILED ) ) ) {
309
- return null;
310
- }
311
- $label_url = '?flexible_shipping_get_label=' . $this->get_id() . '&nonce=' . wp_create_nonce( 'flexible_shipping_get_label' ) ;
312
- return site_url( $label_url );
313
- }
314
-
315
- /**
316
- * @param string $new_status
317
- */
318
- public function update_status( $new_status ) {
319
- $this->old_status = $this->post->post_status;
320
- $this->post->post_status = $new_status;
321
- $this->save_post = true;
322
- $this->status_changed = true;
323
- }
324
-
325
- public function add_to_manifest( WPDesk_Flexible_Shipping_Manifest $manifest ) {
326
- $this->set_meta( '_manifest', $manifest->get_id() );
327
- }
328
-
329
- public function label_avaliable() {
330
- if ( in_array( $this->get_status(), array( self::STATUS_FS_CONFIRMED, self::STATUS_FS_MANIFEST ) ) ) {
331
- return true;
332
- }
333
- return false;
334
- }
335
-
336
- /**
337
- * Displays shipping column in orders list view.
338
- * Must be overwritten!
339
- */
340
- public function shipping_column() {
341
- echo _( 'Please override shipping_column method!', 'flexible-shipping' );
342
- echo '<pre>';
343
- print_r( $this->post );
344
- echo '</pre>';
345
- echo '<pre>';
346
- print_r( $this->meta_data );
347
- echo '</pre>';
348
- }
349
-
350
- /**
351
- * Is status fs-new?
352
- *
353
- * @return bool
354
- */
355
- public function is_status_fs_new() {
356
- return self::STATUS_FS_NEW === $this->get_status();
357
- }
358
-
359
- /**
360
- * Is status fs-created?
361
- *
362
- * @return bool
363
- */
364
- public function is_status_fs_created() {
365
- return self::STATUS_FS_CREATED === $this->get_status();
366
- }
367
-
368
- /**
369
- * Is status fs-confirmed?
370
- *
371
- * @return bool
372
- */
373
- public function is_status_fs_confirmed() {
374
- return self::STATUS_FS_CONFIRMED === $this->get_status();
375
- }
376
-
377
- /**
378
- * Is status fs-failed?
379
- *
380
- * @return bool
381
- */
382
- public function is_status_fs_failed() {
383
- return self::STATUS_FS_FAILED === $this->get_status();
384
- }
385
-
386
- /**
387
- * Is status fs-manifest?
388
- *
389
- * @return bool
390
- */
391
- public function is_status_fs_manifest() {
392
- return self::STATUS_FS_MANIFEST === $this->get_status();
393
- }
394
-
395
- /**
396
- * Set created via.
397
- *
398
- * @param string $created_via Created via.
399
- */
400
- public function set_created_via( $created_via ) {
401
- $this->set_meta( self::CREATED_VIA, $created_via );
402
- }
403
-
404
- /**
405
- * Set created via checkout.
406
- */
407
- public function set_created_via_checkout() {
408
- $this->set_created_via( 'checkout' );
409
- }
410
-
411
- /**
412
- * Set created via add shipment.
413
- */
414
- public function set_created_via_add_shipment() {
415
- $this->set_created_via( 'add_shipment' );
416
- }
417
-
418
- /**
419
- * Get created via.
420
- *
421
- * @return string
422
- */
423
- public function get_created_via() {
424
- return $this->get_meta( self::CREATED_VIA, self::NOT_SET );
425
- }
426
-
427
- /**
428
- * Set sent via.
429
- *
430
- * @param string $sent_via
431
- */
432
- public function set_sent_via( $sent_via ) {
433
- $this->set_meta( self::SENT_VIA, $sent_via );
434
- }
435
-
436
- /**
437
- * Set sent via bulk.
438
- */
439
- public function set_sent_via_bulk() {
440
- $this->set_sent_via( self::SENT_VIA_BULK );
441
- }
442
-
443
- /**
444
- * Set sent via auto.
445
- */
446
- public function set_sent_via_auto() {
447
- $this->set_sent_via( self::SENT_VIA_AUTO );
448
- }
449
-
450
- /**
451
- * Set sent via metabox.
452
- */
453
- public function set_sent_via_metabox() {
454
- $this->set_sent_via( self::SENT_VIA_METABOX );
455
- }
456
-
457
- /**
458
- * Get sent via.
459
- *
460
- * @return string
461
- */
462
- public function get_sent_via() {
463
- return $this->get_meta( self::SENT_VIA, self::NOT_SET );
464
- }
465
-
466
- /**
467
- * Get meta shipping method.
468
- *
469
- * @return WC_Order_Item_Shipping
470
- */
471
- protected function get_meta_shipping_method() {
472
- return $this->get_meta( '_shipping_method' );
473
- }
474
-
475
- }
476
  }
1
  <?php
2
+ /**
3
+ * Shipment.
4
+ *
5
+ * @package Flexible Shipping
6
+ */
7
 
8
  use Psr\Log\LoggerInterface;
9
 
10
+ /**
11
+ * Can handle shipment functionality.
12
+ */
13
+ abstract class WPDesk_Flexible_Shipping_Shipment {
14
+
15
+ const STATUS_FS_NEW = 'fs-new';
16
+ const STATUS_FS_CREATED = 'fs-created';
17
+ const STATUS_FS_CONFIRMED = 'fs-confirmed';
18
+ const STATUS_FS_FAILED = 'fs-failed';
19
+ const STATUS_FS_MANIFEST = 'fs-manifest';
20
+
21
+ const CREATED_VIA = 'created_via';
22
+
23
+ const SENT_VIA_METABOX = 'metabox';
24
+ const SENT_VIA_BULK = 'bulk';
25
+ const SENT_VIA_AUTO = 'auto';
26
+
27
+ const SENT_VIA = '_sent_via';
28
+
29
+ const NOT_SET = 'not_set';
30
+
31
+ const LABEL_ACTION_DOWNLOAD = 'download';
32
+ const LABEL_ACTION_OPEN = 'open';
33
+ /**
34
+ * Logger provided by Flexible Shipping plugin.
35
+ *
36
+ * @var LoggerInterface
37
+ */
38
+ protected static $fs_logger;
39
+ /**
40
+ * @var int
41
+ */
42
+ private $id;
43
+ /**
44
+ * @var WP_Post
45
+ * Post assigned to shipment
46
+ */
47
+ private $post;
48
+ /**
49
+ * @var null|WC_Order
50
+ * WC_Order assigned to shipment
51
+ */
52
+ private $order = null;
53
+ /**
54
+ * @var bool
55
+ * True if assigned post ich changed. Used when saving post
56
+ */
57
+ private $save_post = false;
58
+ /**
59
+ * @var null
60
+ * Holds old status when shipment status is changed
61
+ */
62
+ private $old_status = null;
63
+ /**
64
+ * @var bool
65
+ * True when status changing
66
+ */
67
+ private $status_changed = false;
68
+ /**
69
+ * @var array
70
+ * Shipment metadata (from postmeta table)
71
+ */
72
+ private $meta_data = array();
73
+ /**
74
+ * @var bool
75
+ * True when shipment metadata loaded
76
+ */
77
+ private $meta_data_loaded = false;
78
+ /**
79
+ * @var array
80
+ * Holds changed metadata keys. Used when saving shipment
81
+ */
82
+ private $meta_data_save_keys = array();
83
+ /**
84
+ * @var string
85
+ * Context for order metabox
86
+ */
87
+ private $order_metabox_context = 'side';
88
+
89
+ /**
90
+ * WPDesk_Flexible_Shipping_Shipment constructor.
91
+ *
92
+ * @param int|WP_Post|WPDesk_Flexible_Shipping_Shipment $shipment Shipment or shipment ID.
93
+ * @param WC_Order|null $order Order.
94
+ */
95
+ public function __construct( $shipment, $order = null ) {
96
+ if ( is_numeric( $shipment ) ) {
97
+ $this->id = absint( $shipment );
98
+ $this->post = get_post( $this->id );
99
+ } elseif ( $shipment instanceof WPDesk_Flexible_Shipping_Shipment ) {
100
+ $this->id = absint( $shipment->get_id() );
101
+ $this->post = $shipment->get_post();
102
+ } elseif ( isset( $shipment->ID ) ) {
103
+ $this->id = absint( $shipment->ID );
104
+ $this->post = $shipment;
105
+ }
106
+ $this->order = $order;
107
+ }
108
+
109
+ /**
110
+ * @return mixed
111
+ */
112
+ public function get_id() {
113
+ return $this->id;
114
+ }
115
+
116
+ /**
117
+ * @return mixed
118
+ */
119
+ public function get_post() {
120
+ return $this->post;
121
+ }
122
+
123
+ /**
124
+ * Set logger. This logger is set by Flexible Shipping plugin.
125
+ *
126
+ * @param LoggerInterface $fs_logger .
127
+ */
128
+ public static function set_fs_logger( LoggerInterface $fs_logger ) {
129
+ static::$fs_logger = $fs_logger;
130
+ }
131
+
132
+ /**
133
+ * @return string
134
+ */
135
+ public function get_order_metabox_context() {
136
+ return $this->order_metabox_context;
137
+ }
138
+
139
+ /**
140
+ * @param string $order_metabox_context .
141
+ */
142
+ public function set_order_metabox_context( $order_metabox_context ) {
143
+ $this->order_metabox_context = $order_metabox_context;
144
+ }
145
+
146
+ /**
147
+ * @param string $meta_key .
148
+ */
149
+ public function delete_meta( $meta_key ) {
150
+ unset( $this->meta_data[ $meta_key ] );
151
+ $this->meta_data_save_keys[ $meta_key ] = $meta_key;
152
+ }
153
+
154
+ /**
155
+ * Saves shipment data to database.
156
+ */
157
+ public function save() {
158
+ if ( $this->save_post ) {
159
+ wp_update_post( $this->post );
160
+ $this->fs_log( 'debug', 'Shipment post saved', array( 'post' => $this->post ) );
161
+ $this->save_post = false;
162
+ }
163
+ foreach ( $this->meta_data_save_keys as $key ) {
164
+ if ( isset( $this->meta_data[ $key ] ) ) {
165
+ update_post_meta( $this->id, $key, $this->meta_data[ $key ][0] );
166
+ $this->fs_log(
167
+ 'debug',
168
+ 'Shipment meta data saved',
169
+ array(
170
+ 'key' => $key,
171
+ 'value' => $this->meta_data[ $key ][0],
172
+ )
173
+ );
174
+ } else {
175
+ delete_post_meta( $this->id, $key );
176
+ $this->fs_log( 'debug', 'Shipment meta data deleted', array( 'key' => $key ) );
177
  }
178
+ unset( $this->meta_data_save_keys[ $key ] );
179
+ }
180
+ if ( $this->status_changed ) {
181
+ do_action( 'flexible_shipping_shipment_status_updated', $this->old_status, $this->post->post_status, $this );
182
+ $this->status_changed = false;
183
+ $this->old_status = null;
184
+ }
185
+ }
186
+
187
+ /**
188
+ * Writes log message to log provided by Flexible Shipping plugin.
189
+ *
190
+ * @param mixed $level .
191
+ * @param string $message .
192
+ * @param array $context .
193
+ */
194
+ private function fs_log( $level, $message, array $context = array() ) {
195
+ if ( static::$fs_logger ) {
196
+ $context['order_id'] = $this->get_order()->get_id();
197
+ $context['shipment_id'] = $this->get_id();
198
+ $current_user = wp_get_current_user();
199
+ $context['user_id'] = $current_user->ID;
200
+ if ( isset( $_SERVER['REQUEST_URI'] ) ) {
201
+ $context['request_uri'] = sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) );
202
+ }
203
+ static::$fs_logger->log( $level, $message, $context );
204
+ }
205
+ }
206
+
207
+ /**
208
+ * @return WC_Order
209
+ */
210
+ public function get_order() {
211
+ if ( null === $this->order ) {
212
+ $this->order = wc_get_order( $this->post->post_parent );
213
  }
214
 
215
+ return $this->order;
216
+ }
217
+
218
+ /**
219
+ * @return string|null
220
+ * Returns integration assigned to shipment
221
+ */
222
+ public function get_integration() {
223
+ return $this->get_meta( '_integration' );
224
+ }
225
+
226
+ /**
227
+ * @param string $meta_key .
228
+ * @param null|sting $default .
229
+ *
230
+ * @return array|string|null
231
+ */
232
+ public function get_meta( $meta_key = '', $default = null ) {
233
+ $this->load_meta_data();
234
+ if ( '' === $meta_key ) {
235
+ return $this->meta_data;
236
+ }
237
+ if ( isset( $this->meta_data[ $meta_key ] ) ) {
238
+ return maybe_unserialize( $this->meta_data[ $meta_key ][0] );
239
+ } else {
240
+ return $default;
241
  }
242
 
243
+ return null;
244
+ }
245
+
246
+ /**
247
+ * Loads all meta data from postmeta
248
+ */
249
+ public function load_meta_data() {
250
+ if ( ! $this->meta_data_loaded ) {
251
+ $this->meta_data = get_post_meta( $this->id );
252
+ $this->meta_data_loaded = true;
253
+ }
254
+ }
255
+
256
+ /**
257
+ * @return string
258
+ * Returns URL for admin metabox for this shipment
259
+ */
260
+ public function get_order_metabox_url() {
261
+ return admin_url( 'post.php?post=' . $this->get_order_id() . '&action=edit#shipment_meta_box_' . $this->get_id() );
262
+ }
263
+
264
+ /**
265
+ * @return int
266
+ */
267
+ public function get_order_id() {
268
+ return $this->post->post_parent;
269
+ }
270
+
271
+ /**
272
+ * @return string
273
+ */
274
+ public function get_status_for_shipping_column() {
275
+ $statuses = array(
276
+ self::STATUS_FS_NEW => 'new',
277
+ self::STATUS_FS_CREATED => 'created',
278
+ self::STATUS_FS_CONFIRMED => 'confirmed',
279
+ self::STATUS_FS_FAILED => 'error',
280
+ self::STATUS_FS_MANIFEST => 'manifest',
281
+ );
282
+
283
+ return $statuses[ $this->get_status() ];
284
+ }
285
+
286
+ /**
287
+ * @return string
288
+ */
289
+ public function get_status() {
290
+ return $this->post->post_status;
291
+ }
292
+
293
+ /**
294
+ * @return null|string
295
+ * Returns URL for label
296
+ */
297
+ public function get_label_url() {
298
+ if ( in_array(
299
+ $this->get_status(),
300
+ array(
301
+ self::STATUS_FS_NEW,
302
+ self::STATUS_FS_CREATED,
303
+ self::STATUS_FS_FAILED,
304
+ )
305
+ ) ) {
306
+ return null;
307
  }
308
+ $label_url = '?flexible_shipping_get_label=' . $this->get_id() . '&nonce=' . wp_create_nonce( 'flexible_shipping_get_label' );
309
+ $label_url .= '&action=' . $this->get_label_action();
310
+
311
+ return site_url( $label_url );
312
+ }
313
+
314
+ /**
315
+ * Should open label?
316
+ * By default label should be downloaded. Integration can override this method when label should be opened in browser.
317
+ *
318
+ * @return bool
319
+ */
320
+ protected function get_label_action() {
321
+ return self::LABEL_ACTION_DOWNLOAD;
322
+ }
323
+
324
+ /**
325
+ * @param string $new_status .
326
+ */
327
+ public function update_status( $new_status ) {
328
+ $this->old_status = $this->post->post_status;
329
+ $this->post->post_status = $new_status;
330
+ $this->save_post = true;
331
+ $this->status_changed = true;
332
+ }
333
+
334
+ /**
335
+ * @param WPDesk_Flexible_Shipping_Manifest $manifest .
336
+ */
337
+ public function add_to_manifest( WPDesk_Flexible_Shipping_Manifest $manifest ) {
338
+ $this->set_meta( '_manifest', $manifest->get_id() );
339
+ }
340
+
341
+ /**
342
+ * @param string $meta_key .
343
+ * @param int|string|array|object|null $value .
344
+ */
345
+ public function set_meta( $meta_key, $value ) {
346
+ $this->load_meta_data();
347
+ if ( ! isset( $this->meta_data[ $meta_key ] ) ) {
348
+ $this->meta_data[ $meta_key ] = array();
349
+ }
350
+ $this->meta_data[ $meta_key ][0] = $value;
351
+ $this->meta_data_save_keys[ $meta_key ] = $meta_key;
352
+ }
353
+
354
+ /**
355
+ * @return bool
356
+ */
357
+ public function label_avaliable() {
358
+ if ( in_array( $this->get_status(), array( self::STATUS_FS_CONFIRMED, self::STATUS_FS_MANIFEST ) ) ) {
359
+ return true;
360
+ }
361
+
362
+ return false;
363
+ }
364
+
365
+ /**
366
+ * Displays shipping column in orders list view.
367
+ * Must be overwritten!
368
+ */
369
+ public function shipping_column() {
370
+ echo esc_html( __( 'Please override shipping_column method!', 'flexible-shipping' ) );
371
+ echo '<pre>';
372
+ print_r( $this->post );
373
+ echo '</pre>';
374
+ echo '<pre>';
375
+ print_r( $this->meta_data );
376
+ echo '</pre>';
377
+ }
378
+
379
+ /**
380
+ * Is status fs-new?
381
+ *
382
+ * @return bool
383
+ */
384
+ public function is_status_fs_new() {
385
+ return self::STATUS_FS_NEW === $this->get_status();
386
+ }
387
+
388
+ /**
389
+ * Is status fs-created?
390
+ *
391
+ * @return bool
392
+ */
393
+ public function is_status_fs_created() {
394
+ return self::STATUS_FS_CREATED === $this->get_status();
395
+ }
396
+
397
+ /**
398
+ * Is status fs-confirmed?
399
+ *
400
+ * @return bool
401
+ */
402
+ public function is_status_fs_confirmed() {
403
+ return self::STATUS_FS_CONFIRMED === $this->get_status();
404
+ }
405
+
406
+ /**
407
+ * Is status fs-failed?
408
+ *
409
+ * @return bool
410
+ */
411
+ public function is_status_fs_failed() {
412
+ return self::STATUS_FS_FAILED === $this->get_status();
413
+ }
414
+
415
+ /**
416
+ * Is status fs-manifest?
417
+ *
418
+ * @return bool
419
+ */
420
+ public function is_status_fs_manifest() {
421
+ return self::STATUS_FS_MANIFEST === $this->get_status();
422
+ }
423
+
424
+ /**
425
+ * Set created via checkout.
426
+ */
427
+ public function set_created_via_checkout() {
428
+ $this->set_created_via( 'checkout' );
429
+ }
430
+
431
+ /**
432
+ * Set created via.
433
+ *
434
+ * @param string $created_via Created via.
435
+ */
436
+ public function set_created_via( $created_via ) {
437
+ $this->set_meta( self::CREATED_VIA, $created_via );
438
+ }
439
+
440
+ /**
441
+ * Set created via add shipment.
442
+ */
443
+ public function set_created_via_add_shipment() {
444
+ $this->set_created_via( 'add_shipment' );
445
+ }
446
+
447
+ /**
448
+ * Get created via.
449
+ *
450
+ * @return string
451
+ */
452
+ public function get_created_via() {
453
+ return $this->get_meta( self::CREATED_VIA, self::NOT_SET );
454
+ }
455
+
456
+ /**
457
+ * Set sent via bulk.
458
+ */
459
+ public function set_sent_via_bulk() {
460
+ $this->set_sent_via( self::SENT_VIA_BULK );
461
+ }
462
+
463
+ /**
464
+ * Set sent via.
465
+ *
466
+ * @param string $sent_via .
467
+ */
468
+ public function set_sent_via( $sent_via ) {
469
+ $this->set_meta( self::SENT_VIA, $sent_via );
470
+ }
471
+
472
+ /**
473
+ * Set sent via auto.
474
+ */
475
+ public function set_sent_via_auto() {
476
+ $this->set_sent_via( self::SENT_VIA_AUTO );
477
+ }
478
+
479
+ /**
480
+ * Set sent via metabox.
481
+ */
482
+ public function set_sent_via_metabox() {
483
+ $this->set_sent_via( self::SENT_VIA_METABOX );
484
+ }
485
+
486
+ /**
487
+ * Get sent via.
488
+ *
489
+ * @return string
490
+ */
491
+ public function get_sent_via() {
492
+ return $this->get_meta( self::SENT_VIA, self::NOT_SET );
493
+ }
494
+
495
+ /**
496
+ * Get meta shipping method.
497
+ *
498
+ * @return WC_Order_Item_Shipping
499
+ */
500
+ protected function get_meta_shipping_method() {
501
+ return $this->get_meta( '_shipping_method' );
502
+ }
503
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
504
  }
classes/wp-wpdesk-fs-shipment/shipment/cpt-shipment.php CHANGED
@@ -23,7 +23,6 @@ class WPDesk_Flexible_Shipping_Shipment_CPT {
23
  public function hooks() {
24
 
25
  add_action( 'init', array( $this, 'register_post_types' ), 20 );
26
- add_action( 'init', array( $this, 'flexible_shipping_get_label' ), 9999999 );
27
  add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ), 20, 2 );
28
 
29
  $last_priority = PHP_INT_MAX;
@@ -183,28 +182,6 @@ class WPDesk_Flexible_Shipping_Shipment_CPT {
183
  }
184
  }
185
 
186
- public function flexible_shipping_get_label() {
187
- if ( !empty( $_GET['flexible_shipping_get_label'] ) && !empty( $_GET['nonce'] ) ) {
188
- $nonce = sanitize_text_field( $_GET['nonce'] );
189
- if ( !wp_verify_nonce( $nonce, 'flexible_shipping_get_label' ) ) {
190
- echo __( 'Invalid nonce!', 'flexible-shipping' );
191
- exit;
192
- }
193
- try {
194
- $shipment_id = sanitize_key( $_GET['flexible_shipping_get_label'] );
195
- $shipment = fs_get_shipment( $shipment_id );
196
- $label_data = $shipment->get_label();
197
- header( "Content-type: application/octet-stream" );
198
- header( "Content-Disposition: attachment; filename=" . $label_data['file_name'] );
199
- echo $label_data['content'];
200
- }
201
- catch ( Exception $e ) {
202
- echo $e->getMessage();
203
- }
204
- exit();
205
- }
206
- }
207
-
208
  /**
209
  * Get Flexible Shipping method from order shipping method meta data.
210
  *
23
  public function hooks() {
24
 
25
  add_action( 'init', array( $this, 'register_post_types' ), 20 );
 
26
  add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ), 20, 2 );
27
 
28
  $last_priority = PHP_INT_MAX;
182
  }
183
  }
184
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
185
  /**
186
  * Get Flexible Shipping method from order shipping method meta data.
187
  *
composer.lock CHANGED
@@ -4,7 +4,7 @@
4
  "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5
  "This file is @generated automatically"
6
  ],
7
- "content-hash": "d615af29e0ef851f8b88342167776dd0",
8
  "packages": [
9
  {
10
  "name": "psr/log",
@@ -464,20 +464,23 @@
464
  },
465
  {
466
  "name": "codeception/lib-innerbrowser",
467
- "version": "1.3.1",
468
  "source": {
469
  "type": "git",
470
  "url": "https://github.com/Codeception/lib-innerbrowser.git",
471
- "reference": "2123542b1325cc349ac68868abe74638bcb32ab6"
472
  },
473
  "dist": {
474
  "type": "zip",
475
- "url": "https://api.github.com/repos/Codeception/lib-innerbrowser/zipball/2123542b1325cc349ac68868abe74638bcb32ab6",
476
- "reference": "2123542b1325cc349ac68868abe74638bcb32ab6",
477
  "shasum": ""
478
  },
479
  "require": {
480
  "codeception/codeception": "*@dev",
 
 
 
481
  "php": ">=5.6.0 <8.0",
482
  "symfony/browser-kit": ">=2.7 <6.0",
483
  "symfony/dom-crawler": ">=2.7 <6.0"
@@ -513,7 +516,7 @@
513
  "keywords": [
514
  "codeception"
515
  ],
516
- "time": "2020-02-20T14:46:50+00:00"
517
  },
518
  {
519
  "name": "codeception/module-asserts",
@@ -717,24 +720,27 @@
717
  },
718
  {
719
  "name": "codeception/module-phpbrowser",
720
- "version": "1.0.0",
721
  "source": {
722
  "type": "git",
723
  "url": "https://github.com/Codeception/module-phpbrowser.git",
724
- "reference": "fbf585c8562e4e4875f351f5392bcb2b1a633cbe"
725
  },
726
  "dist": {
727
  "type": "zip",
728
- "url": "https://api.github.com/repos/Codeception/module-phpbrowser/zipball/fbf585c8562e4e4875f351f5392bcb2b1a633cbe",
729
- "reference": "fbf585c8562e4e4875f351f5392bcb2b1a633cbe",
730
  "shasum": ""
731
  },
732
  "require": {
733
- "codeception/codeception": "4.0.x-dev | ^4.0",
734
- "codeception/lib-innerbrowser": "^1.0",
735
- "guzzlehttp/guzzle": "^6.3.0",
736
  "php": ">=5.6.0 <8.0"
737
  },
 
 
 
738
  "require-dev": {
739
  "codeception/module-rest": "dev-master | ^1.0",
740
  "codeception/util-robohelpers": "dev-master"
@@ -767,20 +773,20 @@
767
  "functional-testing",
768
  "http"
769
  ],
770
- "time": "2019-10-10T14:25:59+00:00"
771
  },
772
  {
773
  "name": "codeception/module-rest",
774
- "version": "1.2.0",
775
  "source": {
776
  "type": "git",
777
  "url": "https://github.com/Codeception/module-rest.git",
778
- "reference": "c86417af517bb1fb5b88550455d823a7c9fc167e"
779
  },
780
  "dist": {
781
  "type": "zip",
782
- "url": "https://api.github.com/repos/Codeception/module-rest/zipball/c86417af517bb1fb5b88550455d823a7c9fc167e",
783
- "reference": "c86417af517bb1fb5b88550455d823a7c9fc167e",
784
  "shasum": ""
785
  },
786
  "require": {
@@ -818,7 +824,7 @@
818
  "codeception",
819
  "rest"
820
  ],
821
- "time": "2020-02-01T19:23:56+00:00"
822
  },
823
  {
824
  "name": "codeception/module-webdriver",
@@ -1052,16 +1058,16 @@
1052
  },
1053
  {
1054
  "name": "composer/composer",
1055
- "version": "1.10.8",
1056
  "source": {
1057
  "type": "git",
1058
  "url": "https://github.com/composer/composer.git",
1059
- "reference": "56e0e094478f30935e9128552188355fa9712291"
1060
  },
1061
  "dist": {
1062
  "type": "zip",
1063
- "url": "https://api.github.com/repos/composer/composer/zipball/56e0e094478f30935e9128552188355fa9712291",
1064
- "reference": "56e0e094478f30935e9128552188355fa9712291",
1065
  "shasum": ""
1066
  },
1067
  "require": {
@@ -1142,7 +1148,7 @@
1142
  "type": "tidelift"
1143
  }
1144
  ],
1145
- "time": "2020-06-24T19:23:30+00:00"
1146
  },
1147
  {
1148
  "name": "composer/semver",
@@ -1207,16 +1213,16 @@
1207
  },
1208
  {
1209
  "name": "composer/spdx-licenses",
1210
- "version": "1.5.3",
1211
  "source": {
1212
  "type": "git",
1213
  "url": "https://github.com/composer/spdx-licenses.git",
1214
- "reference": "0c3e51e1880ca149682332770e25977c70cf9dae"
1215
  },
1216
  "dist": {
1217
  "type": "zip",
1218
- "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/0c3e51e1880ca149682332770e25977c70cf9dae",
1219
- "reference": "0c3e51e1880ca149682332770e25977c70cf9dae",
1220
  "shasum": ""
1221
  },
1222
  "require": {
@@ -1263,7 +1269,21 @@
1263
  "spdx",
1264
  "validator"
1265
  ],
1266
- "time": "2020-02-14T07:44:31+00:00"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1267
  },
1268
  {
1269
  "name": "composer/xdebug-handler",
@@ -2205,16 +2225,16 @@
2205
  },
2206
  {
2207
  "name": "lucatume/wp-browser",
2208
- "version": "2.6.3",
2209
  "source": {
2210
  "type": "git",
2211
  "url": "https://github.com/lucatume/wp-browser.git",
2212
- "reference": "e9797f2fc919ffe246b66ecfef517b895ed158e6"
2213
  },
2214
  "dist": {
2215
  "type": "zip",
2216
- "url": "https://api.github.com/repos/lucatume/wp-browser/zipball/e9797f2fc919ffe246b66ecfef517b895ed158e6",
2217
- "reference": "e9797f2fc919ffe246b66ecfef517b895ed158e6",
2218
  "shasum": ""
2219
  },
2220
  "require": {
@@ -2284,7 +2304,7 @@
2284
  "codeception",
2285
  "wordpress"
2286
  ],
2287
- "time": "2020-06-30T10:46:22+00:00"
2288
  },
2289
  {
2290
  "name": "matthiasmullie/minify",
@@ -3189,24 +3209,24 @@
3189
  },
3190
  {
3191
  "name": "phpoption/phpoption",
3192
- "version": "1.7.4",
3193
  "source": {
3194
  "type": "git",
3195
  "url": "https://github.com/schmittjoh/php-option.git",
3196
- "reference": "b2ada2ad5d8a32b89088b8adc31ecd2e3a13baf3"
3197
  },
3198
  "dist": {
3199
  "type": "zip",
3200
- "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/b2ada2ad5d8a32b89088b8adc31ecd2e3a13baf3",
3201
- "reference": "b2ada2ad5d8a32b89088b8adc31ecd2e3a13baf3",
3202
  "shasum": ""
3203
  },
3204
  "require": {
3205
  "php": "^5.5.9 || ^7.0 || ^8.0"
3206
  },
3207
  "require-dev": {
3208
- "bamarni/composer-bin-plugin": "^1.3",
3209
- "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0"
3210
  },
3211
  "type": "library",
3212
  "extra": {
@@ -3250,7 +3270,7 @@
3250
  "type": "tidelift"
3251
  }
3252
  ],
3253
- "time": "2020-06-07T10:40:07+00:00"
3254
  },
3255
  {
3256
  "name": "phpspec/prophecy",
@@ -4468,16 +4488,16 @@
4468
  },
4469
  {
4470
  "name": "seld/phar-utils",
4471
- "version": "1.1.0",
4472
  "source": {
4473
  "type": "git",
4474
  "url": "https://github.com/Seldaek/phar-utils.git",
4475
- "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0"
4476
  },
4477
  "dist": {
4478
  "type": "zip",
4479
- "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8800503d56b9867d43d9c303b9cbcc26016e82f0",
4480
- "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0",
4481
  "shasum": ""
4482
  },
4483
  "require": {
@@ -4508,7 +4528,7 @@
4508
  "keywords": [
4509
  "phar"
4510
  ],
4511
- "time": "2020-02-14T15:25:33+00:00"
4512
  },
4513
  {
4514
  "name": "squizlabs/php_codesniffer",
@@ -5132,16 +5152,16 @@
5132
  },
5133
  {
5134
  "name": "symfony/polyfill-ctype",
5135
- "version": "v1.17.1",
5136
  "source": {
5137
  "type": "git",
5138
  "url": "https://github.com/symfony/polyfill-ctype.git",
5139
- "reference": "2edd75b8b35d62fd3eeabba73b26b8f1f60ce13d"
5140
  },
5141
  "dist": {
5142
  "type": "zip",
5143
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/2edd75b8b35d62fd3eeabba73b26b8f1f60ce13d",
5144
- "reference": "2edd75b8b35d62fd3eeabba73b26b8f1f60ce13d",
5145
  "shasum": ""
5146
  },
5147
  "require": {
@@ -5153,7 +5173,7 @@
5153
  "type": "library",
5154
  "extra": {
5155
  "branch-alias": {
5156
- "dev-master": "1.17-dev"
5157
  },
5158
  "thanks": {
5159
  "name": "symfony/polyfill",
@@ -5204,25 +5224,26 @@
5204
  "type": "tidelift"
5205
  }
5206
  ],
5207
- "time": "2020-06-06T08:46:27+00:00"
5208
  },
5209
  {
5210
  "name": "symfony/polyfill-intl-idn",
5211
- "version": "v1.17.1",
5212
  "source": {
5213
  "type": "git",
5214
  "url": "https://github.com/symfony/polyfill-intl-idn.git",
5215
- "reference": "a57f8161502549a742a63c09f0a604997bf47027"
5216
  },
5217
  "dist": {
5218
  "type": "zip",
5219
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a57f8161502549a742a63c09f0a604997bf47027",
5220
- "reference": "a57f8161502549a742a63c09f0a604997bf47027",
5221
  "shasum": ""
5222
  },
5223
  "require": {
5224
  "php": ">=5.3.3",
5225
- "symfony/polyfill-mbstring": "^1.3",
 
5226
  "symfony/polyfill-php72": "^1.10"
5227
  },
5228
  "suggest": {
@@ -5231,7 +5252,7 @@
5231
  "type": "library",
5232
  "extra": {
5233
  "branch-alias": {
5234
- "dev-master": "1.17-dev"
5235
  },
5236
  "thanks": {
5237
  "name": "symfony/polyfill",
@@ -5255,6 +5276,10 @@
5255
  "name": "Laurent Bassin",
5256
  "email": "laurent@bassin.info"
5257
  },
 
 
 
 
5258
  {
5259
  "name": "Symfony Community",
5260
  "homepage": "https://symfony.com/contributors"
@@ -5284,20 +5309,101 @@
5284
  "type": "tidelift"
5285
  }
5286
  ],
5287
- "time": "2020-06-06T08:46:27+00:00"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5288
  },
5289
  {
5290
  "name": "symfony/polyfill-mbstring",
5291
- "version": "v1.17.1",
5292
  "source": {
5293
  "type": "git",
5294
  "url": "https://github.com/symfony/polyfill-mbstring.git",
5295
- "reference": "7110338d81ce1cbc3e273136e4574663627037a7"
5296
  },
5297
  "dist": {
5298
  "type": "zip",
5299
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7110338d81ce1cbc3e273136e4574663627037a7",
5300
- "reference": "7110338d81ce1cbc3e273136e4574663627037a7",
5301
  "shasum": ""
5302
  },
5303
  "require": {
@@ -5309,7 +5415,7 @@
5309
  "type": "library",
5310
  "extra": {
5311
  "branch-alias": {
5312
- "dev-master": "1.17-dev"
5313
  },
5314
  "thanks": {
5315
  "name": "symfony/polyfill",
@@ -5361,20 +5467,97 @@
5361
  "type": "tidelift"
5362
  }
5363
  ],
5364
- "time": "2020-06-06T08:46:27+00:00"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5365
  },
5366
  {
5367
  "name": "symfony/polyfill-php72",
5368
- "version": "v1.17.0",
5369
  "source": {
5370
  "type": "git",
5371
  "url": "https://github.com/symfony/polyfill-php72.git",
5372
- "reference": "f048e612a3905f34931127360bdd2def19a5e582"
5373
  },
5374
  "dist": {
5375
  "type": "zip",
5376
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582",
5377
- "reference": "f048e612a3905f34931127360bdd2def19a5e582",
5378
  "shasum": ""
5379
  },
5380
  "require": {
@@ -5383,7 +5566,11 @@
5383
  "type": "library",
5384
  "extra": {
5385
  "branch-alias": {
5386
- "dev-master": "1.17-dev"
 
 
 
 
5387
  }
5388
  },
5389
  "autoload": {
@@ -5430,7 +5617,7 @@
5430
  "type": "tidelift"
5431
  }
5432
  ],
5433
- "time": "2020-05-12T16:47:27+00:00"
5434
  },
5435
  {
5436
  "name": "symfony/process",
@@ -5570,22 +5757,22 @@
5570
  },
5571
  {
5572
  "name": "vlucas/phpdotenv",
5573
- "version": "v4.1.7",
5574
  "source": {
5575
  "type": "git",
5576
  "url": "https://github.com/vlucas/phpdotenv.git",
5577
- "reference": "db63b2ea280fdcf13c4ca392121b0b2450b51193"
5578
  },
5579
  "dist": {
5580
  "type": "zip",
5581
- "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/db63b2ea280fdcf13c4ca392121b0b2450b51193",
5582
- "reference": "db63b2ea280fdcf13c4ca392121b0b2450b51193",
5583
  "shasum": ""
5584
  },
5585
  "require": {
5586
  "php": "^5.5.9 || ^7.0 || ^8.0",
5587
  "phpoption/phpoption": "^1.7.3",
5588
- "symfony/polyfill-ctype": "^1.16"
5589
  },
5590
  "require-dev": {
5591
  "bamarni/composer-bin-plugin": "^1.4.1",
@@ -5640,7 +5827,7 @@
5640
  "type": "tidelift"
5641
  }
5642
  ],
5643
- "time": "2020-06-07T18:25:35+00:00"
5644
  },
5645
  {
5646
  "name": "vria/nodiacritic",
@@ -5692,20 +5879,20 @@
5692
  },
5693
  {
5694
  "name": "webmozart/assert",
5695
- "version": "1.9.0",
5696
  "source": {
5697
  "type": "git",
5698
  "url": "https://github.com/webmozart/assert.git",
5699
- "reference": "9dc4f203e36f2b486149058bade43c851dd97451"
5700
  },
5701
  "dist": {
5702
  "type": "zip",
5703
- "url": "https://api.github.com/repos/webmozart/assert/zipball/9dc4f203e36f2b486149058bade43c851dd97451",
5704
- "reference": "9dc4f203e36f2b486149058bade43c851dd97451",
5705
  "shasum": ""
5706
  },
5707
  "require": {
5708
- "php": "^5.3.3 || ^7.0",
5709
  "symfony/polyfill-ctype": "^1.8"
5710
  },
5711
  "conflict": {
@@ -5737,20 +5924,20 @@
5737
  "check",
5738
  "validate"
5739
  ],
5740
- "time": "2020-06-16T10:16:42+00:00"
5741
  },
5742
  {
5743
  "name": "wp-cli/cache-command",
5744
- "version": "v2.0.3",
5745
  "source": {
5746
  "type": "git",
5747
  "url": "https://github.com/wp-cli/cache-command.git",
5748
- "reference": "d3264aecf0e981b61adc020f5f6664f6538b7434"
5749
  },
5750
  "dist": {
5751
  "type": "zip",
5752
- "url": "https://api.github.com/repos/wp-cli/cache-command/zipball/d3264aecf0e981b61adc020f5f6664f6538b7434",
5753
- "reference": "d3264aecf0e981b61adc020f5f6664f6538b7434",
5754
  "shasum": ""
5755
  },
5756
  "require": {
@@ -5806,20 +5993,20 @@
5806
  ],
5807
  "description": "Manages object and transient caches.",
5808
  "homepage": "https://github.com/wp-cli/cache-command",
5809
- "time": "2019-11-12T01:43:12+00:00"
5810
  },
5811
  {
5812
  "name": "wp-cli/checksum-command",
5813
- "version": "v2.0.3",
5814
  "source": {
5815
  "type": "git",
5816
  "url": "https://github.com/wp-cli/checksum-command.git",
5817
- "reference": "7db66668ec116c5ccef7bc27b4354fa81b85018a"
5818
  },
5819
  "dist": {
5820
  "type": "zip",
5821
- "url": "https://api.github.com/repos/wp-cli/checksum-command/zipball/7db66668ec116c5ccef7bc27b4354fa81b85018a",
5822
- "reference": "7db66668ec116c5ccef7bc27b4354fa81b85018a",
5823
  "shasum": ""
5824
  },
5825
  "require": {
@@ -5861,20 +6048,20 @@
5861
  ],
5862
  "description": "Verifies file integrity by comparing to published checksums.",
5863
  "homepage": "https://github.com/wp-cli/checksum-command",
5864
- "time": "2019-04-25T00:28:02+00:00"
5865
  },
5866
  {
5867
  "name": "wp-cli/config-command",
5868
- "version": "v2.0.5",
5869
  "source": {
5870
  "type": "git",
5871
  "url": "https://github.com/wp-cli/config-command.git",
5872
- "reference": "9530dc42eebcae1fde10ad9e4aad312e06267eb9"
5873
  },
5874
  "dist": {
5875
  "type": "zip",
5876
- "url": "https://api.github.com/repos/wp-cli/config-command/zipball/9530dc42eebcae1fde10ad9e4aad312e06267eb9",
5877
- "reference": "9530dc42eebcae1fde10ad9e4aad312e06267eb9",
5878
  "shasum": ""
5879
  },
5880
  "require": {
@@ -5930,24 +6117,24 @@
5930
  ],
5931
  "description": "Generates and reads the wp-config.php file.",
5932
  "homepage": "https://github.com/wp-cli/config-command",
5933
- "time": "2019-11-12T01:43:26+00:00"
5934
  },
5935
  {
5936
  "name": "wp-cli/core-command",
5937
- "version": "v2.0.8",
5938
  "source": {
5939
  "type": "git",
5940
  "url": "https://github.com/wp-cli/core-command.git",
5941
- "reference": "be62a9364c77a99698364a888362a8c8b9414f2f"
5942
  },
5943
  "dist": {
5944
  "type": "zip",
5945
- "url": "https://api.github.com/repos/wp-cli/core-command/zipball/be62a9364c77a99698364a888362a8c8b9414f2f",
5946
- "reference": "be62a9364c77a99698364a888362a8c8b9414f2f",
5947
  "shasum": ""
5948
  },
5949
  "require": {
5950
- "composer/semver": "^1.4",
5951
  "wp-cli/wp-cli": "^2.4"
5952
  },
5953
  "require-dev": {
@@ -5997,20 +6184,20 @@
5997
  ],
5998
  "description": "Downloads, installs, updates, and manages a WordPress installation.",
5999
  "homepage": "https://github.com/wp-cli/core-command",
6000
- "time": "2019-11-12T15:31:38+00:00"
6001
  },
6002
  {
6003
  "name": "wp-cli/cron-command",
6004
- "version": "v2.0.4",
6005
  "source": {
6006
  "type": "git",
6007
  "url": "https://github.com/wp-cli/cron-command.git",
6008
- "reference": "184ce82dfd6e7284a73f039ae39cf51a5f73174e"
6009
  },
6010
  "dist": {
6011
  "type": "zip",
6012
- "url": "https://api.github.com/repos/wp-cli/cron-command/zipball/184ce82dfd6e7284a73f039ae39cf51a5f73174e",
6013
- "reference": "184ce82dfd6e7284a73f039ae39cf51a5f73174e",
6014
  "shasum": ""
6015
  },
6016
  "require": {
@@ -6060,20 +6247,20 @@
6060
  ],
6061
  "description": "Tests, runs, and deletes WP-Cron events; manages WP-Cron schedules.",
6062
  "homepage": "https://github.com/wp-cli/cron-command",
6063
- "time": "2019-12-17T17:53:36+00:00"
6064
  },
6065
  {
6066
  "name": "wp-cli/db-command",
6067
- "version": "v2.0.8",
6068
  "source": {
6069
  "type": "git",
6070
  "url": "https://github.com/wp-cli/db-command.git",
6071
- "reference": "b56e5666a9b9b7a9a9767d3d61ee3b50e0af18a5"
6072
  },
6073
  "dist": {
6074
  "type": "zip",
6075
- "url": "https://api.github.com/repos/wp-cli/db-command/zipball/b56e5666a9b9b7a9a9767d3d61ee3b50e0af18a5",
6076
- "reference": "b56e5666a9b9b7a9a9767d3d61ee3b50e0af18a5",
6077
  "shasum": ""
6078
  },
6079
  "require": {
@@ -6130,20 +6317,20 @@
6130
  ],
6131
  "description": "Performs basic database operations using credentials stored in wp-config.php.",
6132
  "homepage": "https://github.com/wp-cli/db-command",
6133
- "time": "2020-04-18T13:34:09+00:00"
6134
  },
6135
  {
6136
  "name": "wp-cli/embed-command",
6137
- "version": "v2.0.4",
6138
  "source": {
6139
  "type": "git",
6140
  "url": "https://github.com/wp-cli/embed-command.git",
6141
- "reference": "f67fd41a056c6cb847e8601e058fa836b9e5d325"
6142
  },
6143
  "dist": {
6144
  "type": "zip",
6145
- "url": "https://api.github.com/repos/wp-cli/embed-command/zipball/f67fd41a056c6cb847e8601e058fa836b9e5d325",
6146
- "reference": "f67fd41a056c6cb847e8601e058fa836b9e5d325",
6147
  "shasum": ""
6148
  },
6149
  "require": {
@@ -6193,24 +6380,24 @@
6193
  ],
6194
  "description": "Inspects oEmbed providers, clears embed cache, and more.",
6195
  "homepage": "https://github.com/wp-cli/embed-command",
6196
- "time": "2019-11-12T01:43:50+00:00"
6197
  },
6198
  {
6199
  "name": "wp-cli/entity-command",
6200
- "version": "v2.0.7",
6201
  "source": {
6202
  "type": "git",
6203
  "url": "https://github.com/wp-cli/entity-command.git",
6204
- "reference": "0df89e4fba48177acf768bff9c00cda95a3fe5b9"
6205
  },
6206
  "dist": {
6207
  "type": "zip",
6208
- "url": "https://api.github.com/repos/wp-cli/entity-command/zipball/0df89e4fba48177acf768bff9c00cda95a3fe5b9",
6209
- "reference": "0df89e4fba48177acf768bff9c00cda95a3fe5b9",
6210
  "shasum": ""
6211
  },
6212
  "require": {
6213
- "wp-cli/wp-cli": "^2"
6214
  },
6215
  "require-dev": {
6216
  "wp-cli/cache-command": "^1 || ^2",
@@ -6399,20 +6586,20 @@
6399
  ],
6400
  "description": "Manage WordPress comments, menus, options, posts, sites, terms, and users.",
6401
  "homepage": "https://github.com/wp-cli/entity-command",
6402
- "time": "2019-11-12T11:32:14+00:00"
6403
  },
6404
  {
6405
  "name": "wp-cli/eval-command",
6406
- "version": "v2.0.6",
6407
  "source": {
6408
  "type": "git",
6409
  "url": "https://github.com/wp-cli/eval-command.git",
6410
- "reference": "d379732f9899387a6a631ccea5116b3da6f16300"
6411
  },
6412
  "dist": {
6413
  "type": "zip",
6414
- "url": "https://api.github.com/repos/wp-cli/eval-command/zipball/d379732f9899387a6a631ccea5116b3da6f16300",
6415
- "reference": "d379732f9899387a6a631ccea5116b3da6f16300",
6416
  "shasum": ""
6417
  },
6418
  "require": {
@@ -6453,20 +6640,20 @@
6453
  ],
6454
  "description": "Executes arbitrary PHP code or files.",
6455
  "homepage": "https://github.com/wp-cli/eval-command",
6456
- "time": "2020-02-06T11:24:47+00:00"
6457
  },
6458
  {
6459
  "name": "wp-cli/export-command",
6460
- "version": "v2.0.3",
6461
  "source": {
6462
  "type": "git",
6463
  "url": "https://github.com/wp-cli/export-command.git",
6464
- "reference": "a31b1777a199a8437127ad3db1b6b92e9cb5cd9b"
6465
  },
6466
  "dist": {
6467
  "type": "zip",
6468
- "url": "https://api.github.com/repos/wp-cli/export-command/zipball/a31b1777a199a8437127ad3db1b6b92e9cb5cd9b",
6469
- "reference": "a31b1777a199a8437127ad3db1b6b92e9cb5cd9b",
6470
  "shasum": ""
6471
  },
6472
  "require": {
@@ -6511,25 +6698,25 @@
6511
  ],
6512
  "description": "Exports WordPress content to a WXR file.",
6513
  "homepage": "https://github.com/wp-cli/export-command",
6514
- "time": "2019-07-16T16:39:17+00:00"
6515
  },
6516
  {
6517
  "name": "wp-cli/extension-command",
6518
- "version": "v2.0.9",
6519
  "source": {
6520
  "type": "git",
6521
  "url": "https://github.com/wp-cli/extension-command.git",
6522
- "reference": "b6b042fbeb7b3765e28b92e2971739af3d4ee888"
6523
  },
6524
  "dist": {
6525
  "type": "zip",
6526
- "url": "https://api.github.com/repos/wp-cli/extension-command/zipball/b6b042fbeb7b3765e28b92e2971739af3d4ee888",
6527
- "reference": "b6b042fbeb7b3765e28b92e2971739af3d4ee888",
6528
  "shasum": ""
6529
  },
6530
  "require": {
6531
- "composer/semver": "^1.4",
6532
- "wp-cli/wp-cli": "^2"
6533
  },
6534
  "require-dev": {
6535
  "wp-cli/entity-command": "^1.3 || ^2",
@@ -6603,20 +6790,20 @@
6603
  ],
6604
  "description": "Manages plugins and themes, including installs, activations, and updates.",
6605
  "homepage": "https://github.com/wp-cli/extension-command",
6606
- "time": "2020-04-13T14:55:45+00:00"
6607
  },
6608
  {
6609
  "name": "wp-cli/i18n-command",
6610
- "version": "v2.2.3",
6611
  "source": {
6612
  "type": "git",
6613
  "url": "https://github.com/wp-cli/i18n-command.git",
6614
- "reference": "7a5d483d872dfec1b89d88d348666ecd59454d52"
6615
  },
6616
  "dist": {
6617
  "type": "zip",
6618
- "url": "https://api.github.com/repos/wp-cli/i18n-command/zipball/7a5d483d872dfec1b89d88d348666ecd59454d52",
6619
- "reference": "7a5d483d872dfec1b89d88d348666ecd59454d52",
6620
  "shasum": ""
6621
  },
6622
  "require": {
@@ -6660,20 +6847,20 @@
6660
  ],
6661
  "description": "Provides internationalization tools for WordPress projects.",
6662
  "homepage": "https://github.com/wp-cli/i18n-command",
6663
- "time": "2020-06-04T07:07:10+00:00"
6664
  },
6665
  {
6666
  "name": "wp-cli/import-command",
6667
- "version": "v2.0.2",
6668
  "source": {
6669
  "type": "git",
6670
  "url": "https://github.com/wp-cli/import-command.git",
6671
- "reference": "e28a7f55138ceb53f2ff5926874d8e5582c87db8"
6672
  },
6673
  "dist": {
6674
  "type": "zip",
6675
- "url": "https://api.github.com/repos/wp-cli/import-command/zipball/e28a7f55138ceb53f2ff5926874d8e5582c87db8",
6676
- "reference": "e28a7f55138ceb53f2ff5926874d8e5582c87db8",
6677
  "shasum": ""
6678
  },
6679
  "require": {
@@ -6716,20 +6903,20 @@
6716
  ],
6717
  "description": "Imports content from a given WXR file.",
6718
  "homepage": "https://github.com/wp-cli/import-command",
6719
- "time": "2019-04-19T14:32:57+00:00"
6720
  },
6721
  {
6722
  "name": "wp-cli/language-command",
6723
- "version": "v2.0.5",
6724
  "source": {
6725
  "type": "git",
6726
  "url": "https://github.com/wp-cli/language-command.git",
6727
- "reference": "a14a385efffba2060f947afa85f7ffd7e7cda5d7"
6728
  },
6729
  "dist": {
6730
  "type": "zip",
6731
- "url": "https://api.github.com/repos/wp-cli/language-command/zipball/a14a385efffba2060f947afa85f7ffd7e7cda5d7",
6732
- "reference": "a14a385efffba2060f947afa85f7ffd7e7cda5d7",
6733
  "shasum": ""
6734
  },
6735
  "require": {
@@ -6791,20 +6978,20 @@
6791
  ],
6792
  "description": "Installs, activates, and manages language packs.",
6793
  "homepage": "https://github.com/wp-cli/language-command",
6794
- "time": "2019-11-12T01:33:31+00:00"
6795
  },
6796
  {
6797
  "name": "wp-cli/maintenance-mode-command",
6798
- "version": "v2.0.2",
6799
  "source": {
6800
  "type": "git",
6801
  "url": "https://github.com/wp-cli/maintenance-mode-command.git",
6802
- "reference": "3c80e731e1032607a2e9589ae6b6398e95c05b91"
6803
  },
6804
  "dist": {
6805
  "type": "zip",
6806
- "url": "https://api.github.com/repos/wp-cli/maintenance-mode-command/zipball/3c80e731e1032607a2e9589ae6b6398e95c05b91",
6807
- "reference": "3c80e731e1032607a2e9589ae6b6398e95c05b91",
6808
  "shasum": ""
6809
  },
6810
  "require": {
@@ -6848,20 +7035,20 @@
6848
  ],
6849
  "description": "Activates, deactivates or checks the status of the maintenance mode of a site.",
6850
  "homepage": "https://github.com/wp-cli/maintenance-mode-command",
6851
- "time": "2019-11-12T01:32:41+00:00"
6852
  },
6853
  {
6854
  "name": "wp-cli/media-command",
6855
- "version": "v2.0.8",
6856
  "source": {
6857
  "type": "git",
6858
  "url": "https://github.com/wp-cli/media-command.git",
6859
- "reference": "5181e5cee2f6cb43cfee6cacf3b08e8fb166b2b5"
6860
  },
6861
  "dist": {
6862
  "type": "zip",
6863
- "url": "https://api.github.com/repos/wp-cli/media-command/zipball/5181e5cee2f6cb43cfee6cacf3b08e8fb166b2b5",
6864
- "reference": "5181e5cee2f6cb43cfee6cacf3b08e8fb166b2b5",
6865
  "shasum": ""
6866
  },
6867
  "require": {
@@ -6906,7 +7093,7 @@
6906
  ],
6907
  "description": "Imports files as attachments, regenerates thumbnails, or lists registered image sizes.",
6908
  "homepage": "https://github.com/wp-cli/media-command",
6909
- "time": "2020-05-13T16:21:49+00:00"
6910
  },
6911
  {
6912
  "name": "wp-cli/mustangostang-spyc",
@@ -6958,22 +7145,22 @@
6958
  },
6959
  {
6960
  "name": "wp-cli/package-command",
6961
- "version": "v2.0.6",
6962
  "source": {
6963
  "type": "git",
6964
  "url": "https://github.com/wp-cli/package-command.git",
6965
- "reference": "92a0d7f2f4b54ad2aeff2292baaa96ba8f93f37a"
6966
  },
6967
  "dist": {
6968
  "type": "zip",
6969
- "url": "https://api.github.com/repos/wp-cli/package-command/zipball/92a0d7f2f4b54ad2aeff2292baaa96ba8f93f37a",
6970
- "reference": "92a0d7f2f4b54ad2aeff2292baaa96ba8f93f37a",
6971
  "shasum": ""
6972
  },
6973
  "require": {
6974
  "composer/composer": ">=1.2.0 <1.7.0 || ^1.7.1",
6975
  "ext-json": "*",
6976
- "wp-cli/wp-cli": "^2.1"
6977
  },
6978
  "require-dev": {
6979
  "wp-cli/scaffold-command": "^1 || ^2",
@@ -7015,7 +7202,7 @@
7015
  ],
7016
  "description": "Lists, installs, and removes WP-CLI packages.",
7017
  "homepage": "https://github.com/wp-cli/package-command",
7018
- "time": "2020-01-28T12:55:09+00:00"
7019
  },
7020
  {
7021
  "name": "wp-cli/php-cli-tools",
@@ -7069,16 +7256,16 @@
7069
  },
7070
  {
7071
  "name": "wp-cli/rewrite-command",
7072
- "version": "v2.0.4",
7073
  "source": {
7074
  "type": "git",
7075
  "url": "https://github.com/wp-cli/rewrite-command.git",
7076
- "reference": "3879bcbf7e695f68097cedb8415ed04915a25465"
7077
  },
7078
  "dist": {
7079
  "type": "zip",
7080
- "url": "https://api.github.com/repos/wp-cli/rewrite-command/zipball/3879bcbf7e695f68097cedb8415ed04915a25465",
7081
- "reference": "3879bcbf7e695f68097cedb8415ed04915a25465",
7082
  "shasum": ""
7083
  },
7084
  "require": {
@@ -7122,20 +7309,20 @@
7122
  ],
7123
  "description": "Lists or flushes the site's rewrite rules, updates the permalink structure.",
7124
  "homepage": "https://github.com/wp-cli/rewrite-command",
7125
- "time": "2019-11-12T01:31:23+00:00"
7126
  },
7127
  {
7128
  "name": "wp-cli/role-command",
7129
- "version": "v2.0.3",
7130
  "source": {
7131
  "type": "git",
7132
  "url": "https://github.com/wp-cli/role-command.git",
7133
- "reference": "bad54a1b02331ee6460cc6a6f967e37dd91e07a3"
7134
  },
7135
  "dist": {
7136
  "type": "zip",
7137
- "url": "https://api.github.com/repos/wp-cli/role-command/zipball/bad54a1b02331ee6460cc6a6f967e37dd91e07a3",
7138
- "reference": "bad54a1b02331ee6460cc6a6f967e37dd91e07a3",
7139
  "shasum": ""
7140
  },
7141
  "require": {
@@ -7184,24 +7371,24 @@
7184
  ],
7185
  "description": "Adds, removes, lists, and resets roles and capabilities.",
7186
  "homepage": "https://github.com/wp-cli/role-command",
7187
- "time": "2019-11-12T01:30:59+00:00"
7188
  },
7189
  {
7190
  "name": "wp-cli/scaffold-command",
7191
- "version": "v2.0.9",
7192
  "source": {
7193
  "type": "git",
7194
  "url": "https://github.com/wp-cli/scaffold-command.git",
7195
- "reference": "8c545c5e6411b3d0b5fda1c336c9dec163d35aee"
7196
  },
7197
  "dist": {
7198
  "type": "zip",
7199
- "url": "https://api.github.com/repos/wp-cli/scaffold-command/zipball/8c545c5e6411b3d0b5fda1c336c9dec163d35aee",
7200
- "reference": "8c545c5e6411b3d0b5fda1c336c9dec163d35aee",
7201
  "shasum": ""
7202
  },
7203
  "require": {
7204
- "php": "^5.4 || ^7.0",
7205
  "wp-cli/wp-cli": "dev-master"
7206
  },
7207
  "require-dev": {
@@ -7247,20 +7434,20 @@
7247
  ],
7248
  "description": "Generates code for post types, taxonomies, blocks, plugins, child themes, etc.",
7249
  "homepage": "https://github.com/wp-cli/scaffold-command",
7250
- "time": "2020-05-28T16:06:11+00:00"
7251
  },
7252
  {
7253
  "name": "wp-cli/search-replace-command",
7254
- "version": "v2.0.6",
7255
  "source": {
7256
  "type": "git",
7257
  "url": "https://github.com/wp-cli/search-replace-command.git",
7258
- "reference": "f446ca1f90144b496dbacb373868118ba40df028"
7259
  },
7260
  "dist": {
7261
  "type": "zip",
7262
- "url": "https://api.github.com/repos/wp-cli/search-replace-command/zipball/f446ca1f90144b496dbacb373868118ba40df028",
7263
- "reference": "f446ca1f90144b496dbacb373868118ba40df028",
7264
  "shasum": ""
7265
  },
7266
  "require": {
@@ -7303,20 +7490,20 @@
7303
  ],
7304
  "description": "Searches/replaces strings in the database.",
7305
  "homepage": "https://github.com/wp-cli/search-replace-command",
7306
- "time": "2019-12-13T09:13:20+00:00"
7307
  },
7308
  {
7309
  "name": "wp-cli/server-command",
7310
- "version": "v2.0.4",
7311
  "source": {
7312
  "type": "git",
7313
  "url": "https://github.com/wp-cli/server-command.git",
7314
- "reference": "b0c8db803aea2133973a9a35b0d94fb62487b456"
7315
  },
7316
  "dist": {
7317
  "type": "zip",
7318
- "url": "https://api.github.com/repos/wp-cli/server-command/zipball/b0c8db803aea2133973a9a35b0d94fb62487b456",
7319
- "reference": "b0c8db803aea2133973a9a35b0d94fb62487b456",
7320
  "shasum": ""
7321
  },
7322
  "require": {
@@ -7356,20 +7543,20 @@
7356
  ],
7357
  "description": "Launches PHP's built-in web server for a specific WordPress installation.",
7358
  "homepage": "https://github.com/wp-cli/server-command",
7359
- "time": "2019-11-12T11:32:15+00:00"
7360
  },
7361
  {
7362
  "name": "wp-cli/shell-command",
7363
- "version": "v2.0.4",
7364
  "source": {
7365
  "type": "git",
7366
  "url": "https://github.com/wp-cli/shell-command.git",
7367
- "reference": "293cc82fe6e99c0168bf834787ac5d0e17825723"
7368
  },
7369
  "dist": {
7370
  "type": "zip",
7371
- "url": "https://api.github.com/repos/wp-cli/shell-command/zipball/293cc82fe6e99c0168bf834787ac5d0e17825723",
7372
- "reference": "293cc82fe6e99c0168bf834787ac5d0e17825723",
7373
  "shasum": ""
7374
  },
7375
  "require": {
@@ -7410,20 +7597,20 @@
7410
  ],
7411
  "description": "Opens an interactive PHP console for running and testing PHP code.",
7412
  "homepage": "https://github.com/wp-cli/shell-command",
7413
- "time": "2019-11-12T01:29:25+00:00"
7414
  },
7415
  {
7416
  "name": "wp-cli/super-admin-command",
7417
- "version": "v2.0.3",
7418
  "source": {
7419
  "type": "git",
7420
  "url": "https://github.com/wp-cli/super-admin-command.git",
7421
- "reference": "b3f3078d25c17ee586a5f31cb5ce3553613e85b4"
7422
  },
7423
  "dist": {
7424
  "type": "zip",
7425
- "url": "https://api.github.com/repos/wp-cli/super-admin-command/zipball/b3f3078d25c17ee586a5f31cb5ce3553613e85b4",
7426
- "reference": "b3f3078d25c17ee586a5f31cb5ce3553613e85b4",
7427
  "shasum": ""
7428
  },
7429
  "require": {
@@ -7467,20 +7654,20 @@
7467
  ],
7468
  "description": "Lists, adds, or removes super admin users on a multisite installation.",
7469
  "homepage": "https://github.com/wp-cli/super-admin-command",
7470
- "time": "2019-11-12T01:28:59+00:00"
7471
  },
7472
  {
7473
  "name": "wp-cli/widget-command",
7474
- "version": "v2.1.0",
7475
  "source": {
7476
  "type": "git",
7477
  "url": "https://github.com/wp-cli/widget-command.git",
7478
- "reference": "ddbc2c3e9966fae8de05a3200b04e0faf42fe06f"
7479
  },
7480
  "dist": {
7481
  "type": "zip",
7482
- "url": "https://api.github.com/repos/wp-cli/widget-command/zipball/ddbc2c3e9966fae8de05a3200b04e0faf42fe06f",
7483
- "reference": "ddbc2c3e9966fae8de05a3200b04e0faf42fe06f",
7484
  "shasum": ""
7485
  },
7486
  "require": {
@@ -7530,7 +7717,7 @@
7530
  ],
7531
  "description": "Adds, moves, and removes widgets; lists sidebars.",
7532
  "homepage": "https://github.com/wp-cli/widget-command",
7533
- "time": "2020-01-18T02:17:30+00:00"
7534
  },
7535
  {
7536
  "name": "wp-cli/wp-cli",
@@ -7538,12 +7725,12 @@
7538
  "source": {
7539
  "type": "git",
7540
  "url": "https://github.com/wp-cli/wp-cli.git",
7541
- "reference": "0ae9f0f0472351480e2f60b55b2c674173f82774"
7542
  },
7543
  "dist": {
7544
  "type": "zip",
7545
- "url": "https://api.github.com/repos/wp-cli/wp-cli/zipball/0ae9f0f0472351480e2f60b55b2c674173f82774",
7546
- "reference": "0ae9f0f0472351480e2f60b55b2c674173f82774",
7547
  "shasum": ""
7548
  },
7549
  "require": {
@@ -7561,7 +7748,7 @@
7561
  "wp-cli/entity-command": "^1.2 || ^2",
7562
  "wp-cli/extension-command": "^1.1 || ^2",
7563
  "wp-cli/package-command": "^1 || ^2",
7564
- "wp-cli/wp-cli-tests": "^2.1"
7565
  },
7566
  "suggest": {
7567
  "ext-readline": "Include for a better --prompt implementation",
@@ -7596,7 +7783,7 @@
7596
  "cli",
7597
  "wordpress"
7598
  ],
7599
- "time": "2020-06-10T15:22:07+00:00"
7600
  },
7601
  {
7602
  "name": "wp-cli/wp-cli-bundle",
@@ -7670,16 +7857,16 @@
7670
  },
7671
  {
7672
  "name": "wp-cli/wp-config-transformer",
7673
- "version": "v1.2.6",
7674
  "source": {
7675
  "type": "git",
7676
  "url": "https://github.com/wp-cli/wp-config-transformer.git",
7677
- "reference": "1ca98343443a8e4585865db5f50e8e6121fee70b"
7678
  },
7679
  "dist": {
7680
  "type": "zip",
7681
- "url": "https://api.github.com/repos/wp-cli/wp-config-transformer/zipball/1ca98343443a8e4585865db5f50e8e6121fee70b",
7682
- "reference": "1ca98343443a8e4585865db5f50e8e6121fee70b",
7683
  "shasum": ""
7684
  },
7685
  "require": {
@@ -7687,7 +7874,7 @@
7687
  },
7688
  "require-dev": {
7689
  "composer/composer": "^1.5.6",
7690
- "phpunit/phpunit": "^6.5.5",
7691
  "wp-coding-standards/wpcs": "^0.14.0 || ^1.0.0 || ^2.0.0"
7692
  },
7693
  "type": "library",
@@ -7707,7 +7894,7 @@
7707
  }
7708
  ],
7709
  "description": "Programmatically edit a wp-config.php file.",
7710
- "time": "2019-07-23T17:24:43+00:00"
7711
  },
7712
  {
7713
  "name": "wp-coding-standards/wpcs",
@@ -8578,16 +8765,16 @@
8578
  },
8579
  {
8580
  "name": "wpdesk/wp-wpdesk-tracker-user-feedback",
8581
- "version": "1.0.0-beta7",
8582
  "source": {
8583
  "type": "git",
8584
  "url": "https://gitlab.com/wpdesk/wp-wpdesk-tracker-user-feedback.git",
8585
- "reference": "9f58774eb3091bfee07f8b31a00f9d8b842663b4"
8586
  },
8587
  "dist": {
8588
  "type": "zip",
8589
- "url": "https://gitlab.com/api/v4/projects/wpdesk%2Fwp-wpdesk-tracker-user-feedback/repository/archive.zip?sha=9f58774eb3091bfee07f8b31a00f9d8b842663b4",
8590
- "reference": "9f58774eb3091bfee07f8b31a00f9d8b842663b4",
8591
  "shasum": ""
8592
  },
8593
  "require": {
@@ -8627,7 +8814,7 @@
8627
  "email": "grzegorz@wpdesk.pl"
8628
  }
8629
  ],
8630
- "time": "2020-07-13T13:51:54+00:00"
8631
  },
8632
  {
8633
  "name": "zordius/lightncandy",
4
  "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5
  "This file is @generated automatically"
6
  ],
7
+ "content-hash": "da5905517e3f56c360e8d418653e95ee",
8
  "packages": [
9
  {
10
  "name": "psr/log",
464
  },
465
  {
466
  "name": "codeception/lib-innerbrowser",
467
+ "version": "1.3.2",
468
  "source": {
469
  "type": "git",
470
  "url": "https://github.com/Codeception/lib-innerbrowser.git",
471
+ "reference": "7bdcee4cf654cfeeedd00405edd4f06f85255659"
472
  },
473
  "dist": {
474
  "type": "zip",
475
+ "url": "https://api.github.com/repos/Codeception/lib-innerbrowser/zipball/7bdcee4cf654cfeeedd00405edd4f06f85255659",
476
+ "reference": "7bdcee4cf654cfeeedd00405edd4f06f85255659",
477
  "shasum": ""
478
  },
479
  "require": {
480
  "codeception/codeception": "*@dev",
481
+ "ext-dom": "*",
482
+ "ext-json": "*",
483
+ "ext-mbstring": "*",
484
  "php": ">=5.6.0 <8.0",
485
  "symfony/browser-kit": ">=2.7 <6.0",
486
  "symfony/dom-crawler": ">=2.7 <6.0"
516
  "keywords": [
517
  "codeception"
518
  ],
519
+ "time": "2020-07-05T14:21:45+00:00"
520
  },
521
  {
522
  "name": "codeception/module-asserts",
720
  },
721
  {
722
  "name": "codeception/module-phpbrowser",
723
+ "version": "1.0.1",
724
  "source": {
725
  "type": "git",
726
  "url": "https://github.com/Codeception/module-phpbrowser.git",
727
+ "reference": "c1962657504a2a476b8dbd1f1ee05e0c912e5645"
728
  },
729
  "dist": {
730
  "type": "zip",
731
+ "url": "https://api.github.com/repos/Codeception/module-phpbrowser/zipball/c1962657504a2a476b8dbd1f1ee05e0c912e5645",
732
+ "reference": "c1962657504a2a476b8dbd1f1ee05e0c912e5645",
733
  "shasum": ""
734
  },
735
  "require": {
736
+ "codeception/codeception": "*@dev",
737
+ "codeception/lib-innerbrowser": "^1.3.2",
738
+ "guzzlehttp/guzzle": "^6.3.0|^7.0.0",
739
  "php": ">=5.6.0 <8.0"
740
  },
741
+ "conflict": {
742
+ "codeception/codeception": "<4.0"
743
+ },
744
  "require-dev": {
745
  "codeception/module-rest": "dev-master | ^1.0",
746
  "codeception/util-robohelpers": "dev-master"
773
  "functional-testing",
774
  "http"
775
  ],
776
+ "time": "2020-07-05T15:29:32+00:00"
777
  },
778
  {
779
  "name": "codeception/module-rest",
780
+ "version": "1.2.1",
781
  "source": {
782
  "type": "git",
783
  "url": "https://github.com/Codeception/module-rest.git",
784
+ "reference": "3664989d35003e182631cd9f4bc055fec009f5be"
785
  },
786
  "dist": {
787
  "type": "zip",
788
+ "url": "https://api.github.com/repos/Codeception/module-rest/zipball/3664989d35003e182631cd9f4bc055fec009f5be",
789
+ "reference": "3664989d35003e182631cd9f4bc055fec009f5be",
790
  "shasum": ""
791
  },
792
  "require": {
824
  "codeception",
825
  "rest"
826
  ],
827
+ "time": "2020-07-05T15:40:45+00:00"
828
  },
829
  {
830
  "name": "codeception/module-webdriver",
1058
  },
1059
  {
1060
  "name": "composer/composer",
1061
+ "version": "1.10.9",
1062
  "source": {
1063
  "type": "git",
1064
  "url": "https://github.com/composer/composer.git",
1065
+ "reference": "83c3250093d5491600a822e176b107a945baf95a"
1066
  },
1067
  "dist": {
1068
  "type": "zip",
1069
+ "url": "https://api.github.com/repos/composer/composer/zipball/83c3250093d5491600a822e176b107a945baf95a",
1070
+ "reference": "83c3250093d5491600a822e176b107a945baf95a",
1071
  "shasum": ""
1072
  },
1073
  "require": {
1148
  "type": "tidelift"
1149
  }
1150
  ],
1151
+ "time": "2020-07-16T10:57:00+00:00"
1152
  },
1153
  {
1154
  "name": "composer/semver",
1213
  },
1214
  {
1215
  "name": "composer/spdx-licenses",
1216
+ "version": "1.5.4",
1217
  "source": {
1218
  "type": "git",
1219
  "url": "https://github.com/composer/spdx-licenses.git",
1220
+ "reference": "6946f785871e2314c60b4524851f3702ea4f2223"
1221
  },
1222
  "dist": {
1223
  "type": "zip",
1224
+ "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/6946f785871e2314c60b4524851f3702ea4f2223",
1225
+ "reference": "6946f785871e2314c60b4524851f3702ea4f2223",
1226
  "shasum": ""
1227
  },
1228
  "require": {
1269
  "spdx",
1270
  "validator"
1271
  ],
1272
+ "funding": [
1273
+ {
1274
+ "url": "https://packagist.com",
1275
+ "type": "custom"
1276
+ },
1277
+ {
1278
+ "url": "https://github.com/composer",
1279
+ "type": "github"
1280
+ },
1281
+ {
1282
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
1283
+ "type": "tidelift"
1284
+ }
1285
+ ],
1286
+ "time": "2020-07-15T15:35:07+00:00"
1287
  },
1288
  {
1289
  "name": "composer/xdebug-handler",
2225
  },
2226
  {
2227
  "name": "lucatume/wp-browser",
2228
+ "version": "2.6.5",
2229
  "source": {
2230
  "type": "git",
2231
  "url": "https://github.com/lucatume/wp-browser.git",
2232
+ "reference": "a14506d589935de7ad9bb0aabaecf56cc2d8f9b9"
2233
  },
2234
  "dist": {
2235
  "type": "zip",
2236
+ "url": "https://api.github.com/repos/lucatume/wp-browser/zipball/a14506d589935de7ad9bb0aabaecf56cc2d8f9b9",
2237
+ "reference": "a14506d589935de7ad9bb0aabaecf56cc2d8f9b9",
2238
  "shasum": ""
2239
  },
2240
  "require": {
2304
  "codeception",
2305
  "wordpress"
2306
  ],
2307
+ "time": "2020-07-16T08:24:48+00:00"
2308
  },
2309
  {
2310
  "name": "matthiasmullie/minify",
3209
  },
3210
  {
3211
  "name": "phpoption/phpoption",
3212
+ "version": "1.7.5",
3213
  "source": {
3214
  "type": "git",
3215
  "url": "https://github.com/schmittjoh/php-option.git",
3216
+ "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525"
3217
  },
3218
  "dist": {
3219
  "type": "zip",
3220
+ "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/994ecccd8f3283ecf5ac33254543eb0ac946d525",
3221
+ "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525",
3222
  "shasum": ""
3223
  },
3224
  "require": {
3225
  "php": "^5.5.9 || ^7.0 || ^8.0"
3226
  },
3227
  "require-dev": {
3228
+ "bamarni/composer-bin-plugin": "^1.4.1",
3229
+ "phpunit/phpunit": "^4.8.35 || ^5.7.27 || ^6.5.6 || ^7.0 || ^8.0 || ^9.0"
3230
  },
3231
  "type": "library",
3232
  "extra": {
3270
  "type": "tidelift"
3271
  }
3272
  ],
3273
+ "time": "2020-07-20T17:29:33+00:00"
3274
  },
3275
  {
3276
  "name": "phpspec/prophecy",
4488
  },
4489
  {
4490
  "name": "seld/phar-utils",
4491
+ "version": "1.1.1",
4492
  "source": {
4493
  "type": "git",
4494
  "url": "https://github.com/Seldaek/phar-utils.git",
4495
+ "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796"
4496
  },
4497
  "dist": {
4498
  "type": "zip",
4499
+ "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8674b1d84ffb47cc59a101f5d5a3b61e87d23796",
4500
+ "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796",
4501
  "shasum": ""
4502
  },
4503
  "require": {
4528
  "keywords": [
4529
  "phar"
4530
  ],
4531
+ "time": "2020-07-07T18:42:57+00:00"
4532
  },
4533
  {
4534
  "name": "squizlabs/php_codesniffer",
5152
  },
5153
  {
5154
  "name": "symfony/polyfill-ctype",
5155
+ "version": "v1.18.0",
5156
  "source": {
5157
  "type": "git",
5158
  "url": "https://github.com/symfony/polyfill-ctype.git",
5159
+ "reference": "1c302646f6efc070cd46856e600e5e0684d6b454"
5160
  },
5161
  "dist": {
5162
  "type": "zip",
5163
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454",
5164
+ "reference": "1c302646f6efc070cd46856e600e5e0684d6b454",
5165
  "shasum": ""
5166
  },
5167
  "require": {
5173
  "type": "library",
5174
  "extra": {
5175
  "branch-alias": {
5176
+ "dev-master": "1.18-dev"
5177
  },
5178
  "thanks": {
5179
  "name": "symfony/polyfill",
5224
  "type": "tidelift"
5225
  }
5226
  ],
5227
+ "time": "2020-07-14T12:35:20+00:00"
5228
  },
5229
  {
5230
  "name": "symfony/polyfill-intl-idn",
5231
+ "version": "v1.18.0",
5232
  "source": {
5233
  "type": "git",
5234
  "url": "https://github.com/symfony/polyfill-intl-idn.git",
5235
+ "reference": "bc6549d068d0160e0f10f7a5a23c7d1406b95ebe"
5236
  },
5237
  "dist": {
5238
  "type": "zip",
5239
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/bc6549d068d0160e0f10f7a5a23c7d1406b95ebe",
5240
+ "reference": "bc6549d068d0160e0f10f7a5a23c7d1406b95ebe",
5241
  "shasum": ""
5242
  },
5243
  "require": {
5244
  "php": ">=5.3.3",
5245
+ "symfony/polyfill-intl-normalizer": "^1.10",
5246
+ "symfony/polyfill-php70": "^1.10",
5247
  "symfony/polyfill-php72": "^1.10"
5248
  },
5249
  "suggest": {
5252
  "type": "library",
5253
  "extra": {
5254
  "branch-alias": {
5255
+ "dev-master": "1.18-dev"
5256
  },
5257
  "thanks": {
5258
  "name": "symfony/polyfill",
5276
  "name": "Laurent Bassin",
5277
  "email": "laurent@bassin.info"
5278
  },
5279
+ {
5280
+ "name": "Trevor Rowbotham",
5281
+ "email": "trevor.rowbotham@pm.me"
5282
+ },
5283
  {
5284
  "name": "Symfony Community",
5285
  "homepage": "https://symfony.com/contributors"
5309
  "type": "tidelift"
5310
  }
5311
  ],
5312
+ "time": "2020-07-14T12:35:20+00:00"
5313
+ },
5314
+ {
5315
+ "name": "symfony/polyfill-intl-normalizer",
5316
+ "version": "v1.18.0",
5317
+ "source": {
5318
+ "type": "git",
5319
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
5320
+ "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e"
5321
+ },
5322
+ "dist": {
5323
+ "type": "zip",
5324
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e",
5325
+ "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e",
5326
+ "shasum": ""
5327
+ },
5328
+ "require": {
5329
+ "php": ">=5.3.3"
5330
+ },
5331
+ "suggest": {
5332
+ "ext-intl": "For best performance"
5333
+ },
5334
+ "type": "library",
5335
+ "extra": {
5336
+ "branch-alias": {
5337
+ "dev-master": "1.18-dev"
5338
+ },
5339
+ "thanks": {
5340
+ "name": "symfony/polyfill",
5341
+ "url": "https://github.com/symfony/polyfill"
5342
+ }
5343
+ },
5344
+ "autoload": {
5345
+ "psr-4": {
5346
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
5347
+ },
5348
+ "files": [
5349
+ "bootstrap.php"
5350
+ ],
5351
+ "classmap": [
5352
+ "Resources/stubs"
5353
+ ]
5354
+ },
5355
+ "notification-url": "https://packagist.org/downloads/",
5356
+ "license": [
5357
+ "MIT"
5358
+ ],
5359
+ "authors": [
5360
+ {
5361
+ "name": "Nicolas Grekas",
5362
+ "email": "p@tchwork.com"
5363
+ },
5364
+ {
5365
+ "name": "Symfony Community",
5366
+ "homepage": "https://symfony.com/contributors"
5367
+ }
5368
+ ],
5369
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
5370
+ "homepage": "https://symfony.com",
5371
+ "keywords": [
5372
+ "compatibility",
5373
+ "intl",
5374
+ "normalizer",
5375
+ "polyfill",
5376
+ "portable",
5377
+ "shim"
5378
+ ],
5379
+ "funding": [
5380
+ {
5381
+ "url": "https://symfony.com/sponsor",
5382
+ "type": "custom"
5383
+ },
5384
+ {
5385
+ "url": "https://github.com/fabpot",
5386
+ "type": "github"
5387
+ },
5388
+ {
5389
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
5390
+ "type": "tidelift"
5391
+ }
5392
+ ],
5393
+ "time": "2020-07-14T12:35:20+00:00"
5394
  },
5395
  {
5396
  "name": "symfony/polyfill-mbstring",
5397
+ "version": "v1.18.0",
5398
  "source": {
5399
  "type": "git",
5400
  "url": "https://github.com/symfony/polyfill-mbstring.git",
5401
+ "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
5402
  },
5403
  "dist": {
5404
  "type": "zip",
5405
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
5406
+ "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
5407
  "shasum": ""
5408
  },
5409
  "require": {
5415
  "type": "library",
5416
  "extra": {
5417
  "branch-alias": {
5418
+ "dev-master": "1.18-dev"
5419
  },
5420
  "thanks": {
5421
  "name": "symfony/polyfill",
5467
  "type": "tidelift"
5468
  }
5469
  ],
5470
+ "time": "2020-07-14T12:35:20+00:00"
5471
+ },
5472
+ {
5473
+ "name": "symfony/polyfill-php70",
5474
+ "version": "v1.18.0",
5475
+ "source": {
5476
+ "type": "git",
5477
+ "url": "https://github.com/symfony/polyfill-php70.git",
5478
+ "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3"
5479
+ },
5480
+ "dist": {
5481
+ "type": "zip",
5482
+ "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/0dd93f2c578bdc9c72697eaa5f1dd25644e618d3",
5483
+ "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3",
5484
+ "shasum": ""
5485
+ },
5486
+ "require": {
5487
+ "paragonie/random_compat": "~1.0|~2.0|~9.99",
5488
+ "php": ">=5.3.3"
5489
+ },
5490
+ "type": "library",
5491
+ "extra": {
5492
+ "branch-alias": {
5493
+ "dev-master": "1.18-dev"
5494
+ },
5495
+ "thanks": {
5496
+ "name": "symfony/polyfill",
5497
+ "url": "https://github.com/symfony/polyfill"
5498
+ }
5499
+ },
5500
+ "autoload": {
5501
+ "psr-4": {
5502
+ "Symfony\\Polyfill\\Php70\\": ""
5503
+ },
5504
+ "files": [
5505
+ "bootstrap.php"
5506
+ ],
5507
+ "classmap": [
5508
+ "Resources/stubs"
5509
+ ]
5510
+ },
5511
+ "notification-url": "https://packagist.org/downloads/",
5512
+ "license": [
5513
+ "MIT"
5514
+ ],
5515
+ "authors": [
5516
+ {
5517
+ "name": "Nicolas Grekas",
5518
+ "email": "p@tchwork.com"
5519
+ },
5520
+ {
5521
+ "name": "Symfony Community",
5522
+ "homepage": "https://symfony.com/contributors"
5523
+ }
5524
+ ],
5525
+ "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
5526
+ "homepage": "https://symfony.com",
5527
+ "keywords": [
5528
+ "compatibility",
5529
+ "polyfill",
5530
+ "portable",
5531
+ "shim"
5532
+ ],
5533
+ "funding": [
5534
+ {
5535
+ "url": "https://symfony.com/sponsor",
5536
+ "type": "custom"
5537
+ },
5538
+ {
5539
+ "url": "https://github.com/fabpot",
5540
+ "type": "github"
5541
+ },
5542
+ {
5543
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
5544
+ "type": "tidelift"
5545
+ }
5546
+ ],
5547
+ "time": "2020-07-14T12:35:20+00:00"
5548
  },
5549
  {
5550
  "name": "symfony/polyfill-php72",
5551
+ "version": "v1.18.0",
5552
  "source": {
5553
  "type": "git",
5554
  "url": "https://github.com/symfony/polyfill-php72.git",
5555
+ "reference": "639447d008615574653fb3bc60d1986d7172eaae"
5556
  },
5557
  "dist": {
5558
  "type": "zip",
5559
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/639447d008615574653fb3bc60d1986d7172eaae",
5560
+ "reference": "639447d008615574653fb3bc60d1986d7172eaae",
5561
  "shasum": ""
5562
  },
5563
  "require": {
5566
  "type": "library",
5567
  "extra": {
5568
  "branch-alias": {
5569
+ "dev-master": "1.18-dev"
5570
+ },
5571
+ "thanks": {
5572
+ "name": "symfony/polyfill",
5573
+ "url": "https://github.com/symfony/polyfill"
5574
  }
5575
  },
5576
  "autoload": {
5617
  "type": "tidelift"
5618
  }
5619
  ],
5620
+ "time": "2020-07-14T12:35:20+00:00"
5621
  },
5622
  {
5623
  "name": "symfony/process",
5757
  },
5758
  {
5759
  "name": "vlucas/phpdotenv",
5760
+ "version": "v4.1.8",
5761
  "source": {
5762
  "type": "git",
5763
  "url": "https://github.com/vlucas/phpdotenv.git",
5764
+ "reference": "572af79d913627a9d70374d27a6f5d689a35de32"
5765
  },
5766
  "dist": {
5767
  "type": "zip",
5768
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/572af79d913627a9d70374d27a6f5d689a35de32",
5769
+ "reference": "572af79d913627a9d70374d27a6f5d689a35de32",
5770
  "shasum": ""
5771
  },
5772
  "require": {
5773
  "php": "^5.5.9 || ^7.0 || ^8.0",
5774
  "phpoption/phpoption": "^1.7.3",
5775
+ "symfony/polyfill-ctype": "^1.17"
5776
  },
5777
  "require-dev": {
5778
  "bamarni/composer-bin-plugin": "^1.4.1",
5827
  "type": "tidelift"
5828
  }
5829
  ],
5830
+ "time": "2020-07-14T19:22:52+00:00"
5831
  },
5832
  {
5833
  "name": "vria/nodiacritic",
5879
  },
5880
  {
5881
  "name": "webmozart/assert",
5882
+ "version": "1.9.1",
5883
  "source": {
5884
  "type": "git",
5885
  "url": "https://github.com/webmozart/assert.git",
5886
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
5887
  },
5888
  "dist": {
5889
  "type": "zip",
5890
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
5891
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
5892
  "shasum": ""
5893
  },
5894
  "require": {
5895
+ "php": "^5.3.3 || ^7.0 || ^8.0",
5896
  "symfony/polyfill-ctype": "^1.8"
5897
  },
5898
  "conflict": {
5924
  "check",
5925
  "validate"
5926
  ],
5927
+ "time": "2020-07-08T17:02:28+00:00"
5928
  },
5929
  {
5930
  "name": "wp-cli/cache-command",
5931
+ "version": "v2.0.4",
5932
  "source": {
5933
  "type": "git",
5934
  "url": "https://github.com/wp-cli/cache-command.git",
5935
+ "reference": "f6c2678c960b60bddaded01d5a33eb0a012451f6"
5936
  },
5937
  "dist": {
5938
  "type": "zip",
5939
+ "url": "https://api.github.com/repos/wp-cli/cache-command/zipball/f6c2678c960b60bddaded01d5a33eb0a012451f6",
5940
+ "reference": "f6c2678c960b60bddaded01d5a33eb0a012451f6",
5941
  "shasum": ""
5942
  },
5943
  "require": {
5993
  ],
5994
  "description": "Manages object and transient caches.",
5995
  "homepage": "https://github.com/wp-cli/cache-command",
5996
+ "time": "2020-06-12T00:17:09+00:00"
5997
  },
5998
  {
5999
  "name": "wp-cli/checksum-command",
6000
+ "version": "v2.0.4",
6001
  "source": {
6002
  "type": "git",
6003
  "url": "https://github.com/wp-cli/checksum-command.git",
6004
+ "reference": "6b2648b01cd016044e2862afc96d3cb2028f2fee"
6005
  },
6006
  "dist": {
6007
  "type": "zip",
6008
+ "url": "https://api.github.com/repos/wp-cli/checksum-command/zipball/6b2648b01cd016044e2862afc96d3cb2028f2fee",
6009
+ "reference": "6b2648b01cd016044e2862afc96d3cb2028f2fee",
6010
  "shasum": ""
6011
  },
6012
  "require": {
6048
  ],
6049
  "description": "Verifies file integrity by comparing to published checksums.",
6050
  "homepage": "https://github.com/wp-cli/checksum-command",
6051
+ "time": "2020-06-10T13:24:38+00:00"
6052
  },
6053
  {
6054
  "name": "wp-cli/config-command",
6055
+ "version": "v2.0.6",
6056
  "source": {
6057
  "type": "git",
6058
  "url": "https://github.com/wp-cli/config-command.git",
6059
+ "reference": "f204bc62c557adb08f32a84683cc1dbfd23e6d96"
6060
  },
6061
  "dist": {
6062
  "type": "zip",
6063
+ "url": "https://api.github.com/repos/wp-cli/config-command/zipball/f204bc62c557adb08f32a84683cc1dbfd23e6d96",
6064
+ "reference": "f204bc62c557adb08f32a84683cc1dbfd23e6d96",
6065
  "shasum": ""
6066
  },
6067
  "require": {
6117
  ],
6118
  "description": "Generates and reads the wp-config.php file.",
6119
  "homepage": "https://github.com/wp-cli/config-command",
6120
+ "time": "2020-06-11T00:17:12+00:00"
6121
  },
6122
  {
6123
  "name": "wp-cli/core-command",
6124
+ "version": "v2.0.10",
6125
  "source": {
6126
  "type": "git",
6127
  "url": "https://github.com/wp-cli/core-command.git",
6128
+ "reference": "a2eb072919b252b3c8859f4c9b68fdbb9601099d"
6129
  },
6130
  "dist": {
6131
  "type": "zip",
6132
+ "url": "https://api.github.com/repos/wp-cli/core-command/zipball/a2eb072919b252b3c8859f4c9b68fdbb9601099d",
6133
+ "reference": "a2eb072919b252b3c8859f4c9b68fdbb9601099d",
6134
  "shasum": ""
6135
  },
6136
  "require": {
6137
+ "composer/semver": "^1.4 || ^2 || ^3",
6138
  "wp-cli/wp-cli": "^2.4"
6139
  },
6140
  "require-dev": {
6184
  ],
6185
  "description": "Downloads, installs, updates, and manages a WordPress installation.",
6186
  "homepage": "https://github.com/wp-cli/core-command",
6187
+ "time": "2020-07-05T13:48:05+00:00"
6188
  },
6189
  {
6190
  "name": "wp-cli/cron-command",
6191
+ "version": "v2.0.5",
6192
  "source": {
6193
  "type": "git",
6194
  "url": "https://github.com/wp-cli/cron-command.git",
6195
+ "reference": "f4e1d02642fc56d84504dd012aeb64adee0aae8c"
6196
  },
6197
  "dist": {
6198
  "type": "zip",
6199
+ "url": "https://api.github.com/repos/wp-cli/cron-command/zipball/f4e1d02642fc56d84504dd012aeb64adee0aae8c",
6200
+ "reference": "f4e1d02642fc56d84504dd012aeb64adee0aae8c",
6201
  "shasum": ""
6202
  },
6203
  "require": {
6247
  ],
6248
  "description": "Tests, runs, and deletes WP-Cron events; manages WP-Cron schedules.",
6249
  "homepage": "https://github.com/wp-cli/cron-command",
6250
+ "time": "2020-07-04T07:16:56+00:00"
6251
  },
6252
  {
6253
  "name": "wp-cli/db-command",
6254
+ "version": "v2.0.9",
6255
  "source": {
6256
  "type": "git",
6257
  "url": "https://github.com/wp-cli/db-command.git",
6258
+ "reference": "05c4765f39644ffd90728cd7dd2cfdf7b8d2d9da"
6259
  },
6260
  "dist": {
6261
  "type": "zip",
6262
+ "url": "https://api.github.com/repos/wp-cli/db-command/zipball/05c4765f39644ffd90728cd7dd2cfdf7b8d2d9da",
6263
+ "reference": "05c4765f39644ffd90728cd7dd2cfdf7b8d2d9da",
6264
  "shasum": ""
6265
  },
6266
  "require": {
6317
  ],
6318
  "description": "Performs basic database operations using credentials stored in wp-config.php.",
6319
  "homepage": "https://github.com/wp-cli/db-command",
6320
+ "time": "2020-06-11T00:17:12+00:00"
6321
  },
6322
  {
6323
  "name": "wp-cli/embed-command",
6324
+ "version": "v2.0.6",
6325
  "source": {
6326
  "type": "git",
6327
  "url": "https://github.com/wp-cli/embed-command.git",
6328
+ "reference": "7186d8f969de31324dd2b54a18e5718f2c5db3e5"
6329
  },
6330
  "dist": {
6331
  "type": "zip",
6332
+ "url": "https://api.github.com/repos/wp-cli/embed-command/zipball/7186d8f969de31324dd2b54a18e5718f2c5db3e5",
6333
+ "reference": "7186d8f969de31324dd2b54a18e5718f2c5db3e5",
6334
  "shasum": ""
6335
  },
6336
  "require": {
6380
  ],
6381
  "description": "Inspects oEmbed providers, clears embed cache, and more.",
6382
  "homepage": "https://github.com/wp-cli/embed-command",
6383
+ "time": "2020-07-05T19:16:43+00:00"
6384
  },
6385
  {
6386
  "name": "wp-cli/entity-command",
6387
+ "version": "v2.0.9",
6388
  "source": {
6389
  "type": "git",
6390
  "url": "https://github.com/wp-cli/entity-command.git",
6391
+ "reference": "39fcea433182d21d5d9e291cf5df32a771cc6d11"
6392
  },
6393
  "dist": {
6394
  "type": "zip",
6395
+ "url": "https://api.github.com/repos/wp-cli/entity-command/zipball/39fcea433182d21d5d9e291cf5df32a771cc6d11",
6396
+ "reference": "39fcea433182d21d5d9e291cf5df32a771cc6d11",
6397
  "shasum": ""
6398
  },
6399
  "require": {
6400
+ "wp-cli/wp-cli": "dev-master"
6401
  },
6402
  "require-dev": {
6403
  "wp-cli/cache-command": "^1 || ^2",
6586
  ],
6587
  "description": "Manage WordPress comments, menus, options, posts, sites, terms, and users.",
6588
  "homepage": "https://github.com/wp-cli/entity-command",
6589
+ "time": "2020-07-05T11:27:27+00:00"
6590
  },
6591
  {
6592
  "name": "wp-cli/eval-command",
6593
+ "version": "v2.0.7",
6594
  "source": {
6595
  "type": "git",
6596
  "url": "https://github.com/wp-cli/eval-command.git",
6597
+ "reference": "390627d0cb5d991ad341c367de1e8e4534edc5ad"
6598
  },
6599
  "dist": {
6600
  "type": "zip",
6601
+ "url": "https://api.github.com/repos/wp-cli/eval-command/zipball/390627d0cb5d991ad341c367de1e8e4534edc5ad",
6602
+ "reference": "390627d0cb5d991ad341c367de1e8e4534edc5ad",
6603
  "shasum": ""
6604
  },
6605
  "require": {
6640
  ],
6641
  "description": "Executes arbitrary PHP code or files.",
6642
  "homepage": "https://github.com/wp-cli/eval-command",
6643
+ "time": "2020-06-13T00:17:03+00:00"
6644
  },
6645
  {
6646
  "name": "wp-cli/export-command",
6647
+ "version": "v2.0.4",
6648
  "source": {
6649
  "type": "git",
6650
  "url": "https://github.com/wp-cli/export-command.git",
6651
+ "reference": "d1b280be8a7d806e345bb4c6965bc85ef0a8bb8a"
6652
  },
6653
  "dist": {
6654
  "type": "zip",
6655
+ "url": "https://api.github.com/repos/wp-cli/export-command/zipball/d1b280be8a7d806e345bb4c6965bc85ef0a8bb8a",
6656
+ "reference": "d1b280be8a7d806e345bb4c6965bc85ef0a8bb8a",
6657
  "shasum": ""
6658
  },
6659
  "require": {
6698
  ],
6699
  "description": "Exports WordPress content to a WXR file.",
6700
  "homepage": "https://github.com/wp-cli/export-command",
6701
+ "time": "2020-06-13T00:17:03+00:00"
6702
  },
6703
  {
6704
  "name": "wp-cli/extension-command",
6705
+ "version": "v2.0.11",
6706
  "source": {
6707
  "type": "git",
6708
  "url": "https://github.com/wp-cli/extension-command.git",
6709
+ "reference": "a0c97ca7e7d449f5dba21beeb711e6b097f6911d"
6710
  },
6711
  "dist": {
6712
  "type": "zip",
6713
+ "url": "https://api.github.com/repos/wp-cli/extension-command/zipball/a0c97ca7e7d449f5dba21beeb711e6b097f6911d",
6714
+ "reference": "a0c97ca7e7d449f5dba21beeb711e6b097f6911d",
6715
  "shasum": ""
6716
  },
6717
  "require": {
6718
+ "composer/semver": "^1.4 || ^2 || ^3",
6719
+ "wp-cli/wp-cli": "dev-master"
6720
  },
6721
  "require-dev": {
6722
  "wp-cli/entity-command": "^1.3 || ^2",
6790
  ],
6791
  "description": "Manages plugins and themes, including installs, activations, and updates.",
6792
  "homepage": "https://github.com/wp-cli/extension-command",
6793
+ "time": "2020-07-05T19:17:08+00:00"
6794
  },
6795
  {
6796
  "name": "wp-cli/i18n-command",
6797
+ "version": "v2.2.5",
6798
  "source": {
6799
  "type": "git",
6800
  "url": "https://github.com/wp-cli/i18n-command.git",
6801
+ "reference": "b02ecdc9a57f9633740c254d19749118b7411f0f"
6802
  },
6803
  "dist": {
6804
  "type": "zip",
6805
+ "url": "https://api.github.com/repos/wp-cli/i18n-command/zipball/b02ecdc9a57f9633740c254d19749118b7411f0f",
6806
+ "reference": "b02ecdc9a57f9633740c254d19749118b7411f0f",
6807
  "shasum": ""
6808
  },
6809
  "require": {
6847
  ],
6848
  "description": "Provides internationalization tools for WordPress projects.",
6849
  "homepage": "https://github.com/wp-cli/i18n-command",
6850
+ "time": "2020-07-08T15:20:38+00:00"
6851
  },
6852
  {
6853
  "name": "wp-cli/import-command",
6854
+ "version": "v2.0.3",
6855
  "source": {
6856
  "type": "git",
6857
  "url": "https://github.com/wp-cli/import-command.git",
6858
+ "reference": "5c5762401b570b95a61152411c4120cd69419001"
6859
  },
6860
  "dist": {
6861
  "type": "zip",
6862
+ "url": "https://api.github.com/repos/wp-cli/import-command/zipball/5c5762401b570b95a61152411c4120cd69419001",
6863
+ "reference": "5c5762401b570b95a61152411c4120cd69419001",
6864
  "shasum": ""
6865
  },
6866
  "require": {
6903
  ],
6904
  "description": "Imports content from a given WXR file.",
6905
  "homepage": "https://github.com/wp-cli/import-command",
6906
+ "time": "2020-06-11T00:17:12+00:00"
6907
  },
6908
  {
6909
  "name": "wp-cli/language-command",
6910
+ "version": "v2.0.6",
6911
  "source": {
6912
  "type": "git",
6913
  "url": "https://github.com/wp-cli/language-command.git",
6914
+ "reference": "569be810e057cf9df7d7924e62ebe569e440f6b1"
6915
  },
6916
  "dist": {
6917
  "type": "zip",
6918
+ "url": "https://api.github.com/repos/wp-cli/language-command/zipball/569be810e057cf9df7d7924e62ebe569e440f6b1",
6919
+ "reference": "569be810e057cf9df7d7924e62ebe569e440f6b1",
6920
  "shasum": ""
6921
  },
6922
  "require": {
6978
  ],
6979
  "description": "Installs, activates, and manages language packs.",
6980
  "homepage": "https://github.com/wp-cli/language-command",
6981
+ "time": "2020-06-12T00:17:09+00:00"
6982
  },
6983
  {
6984
  "name": "wp-cli/maintenance-mode-command",
6985
+ "version": "v2.0.3",
6986
  "source": {
6987
  "type": "git",
6988
  "url": "https://github.com/wp-cli/maintenance-mode-command.git",
6989
+ "reference": "5409778b62daf93e2192f43e2774c5d263d7297d"
6990
  },
6991
  "dist": {
6992
  "type": "zip",
6993
+ "url": "https://api.github.com/repos/wp-cli/maintenance-mode-command/zipball/5409778b62daf93e2192f43e2774c5d263d7297d",
6994
+ "reference": "5409778b62daf93e2192f43e2774c5d263d7297d",
6995
  "shasum": ""
6996
  },
6997
  "require": {
7035
  ],
7036
  "description": "Activates, deactivates or checks the status of the maintenance mode of a site.",
7037
  "homepage": "https://github.com/wp-cli/maintenance-mode-command",
7038
+ "time": "2020-06-11T00:17:12+00:00"
7039
  },
7040
  {
7041
  "name": "wp-cli/media-command",
7042
+ "version": "v2.0.9",
7043
  "source": {
7044
  "type": "git",
7045
  "url": "https://github.com/wp-cli/media-command.git",
7046
+ "reference": "830e72a2cbd3eeec95a97df2c1c17d925d86790d"
7047
  },
7048
  "dist": {
7049
  "type": "zip",
7050
+ "url": "https://api.github.com/repos/wp-cli/media-command/zipball/830e72a2cbd3eeec95a97df2c1c17d925d86790d",
7051
+ "reference": "830e72a2cbd3eeec95a97df2c1c17d925d86790d",
7052
  "shasum": ""
7053
  },
7054
  "require": {
7093
  ],
7094
  "description": "Imports files as attachments, regenerates thumbnails, or lists registered image sizes.",
7095
  "homepage": "https://github.com/wp-cli/media-command",
7096
+ "time": "2020-06-11T00:17:12+00:00"
7097
  },
7098
  {
7099
  "name": "wp-cli/mustangostang-spyc",
7145
  },
7146
  {
7147
  "name": "wp-cli/package-command",
7148
+ "version": "v2.0.7",
7149
  "source": {
7150
  "type": "git",
7151
  "url": "https://github.com/wp-cli/package-command.git",
7152
+ "reference": "b36bfb1125d2f8489f06ce738256f253c99d98ec"
7153
  },
7154
  "dist": {
7155
  "type": "zip",
7156
+ "url": "https://api.github.com/repos/wp-cli/package-command/zipball/b36bfb1125d2f8489f06ce738256f253c99d98ec",
7157
+ "reference": "b36bfb1125d2f8489f06ce738256f253c99d98ec",
7158
  "shasum": ""
7159
  },
7160
  "require": {
7161
  "composer/composer": ">=1.2.0 <1.7.0 || ^1.7.1",
7162
  "ext-json": "*",
7163
+ "wp-cli/wp-cli": "dev-master"
7164
  },
7165
  "require-dev": {
7166
  "wp-cli/scaffold-command": "^1 || ^2",
7202
  ],
7203
  "description": "Lists, installs, and removes WP-CLI packages.",
7204
  "homepage": "https://github.com/wp-cli/package-command",
7205
+ "time": "2020-06-13T00:17:03+00:00"
7206
  },
7207
  {
7208
  "name": "wp-cli/php-cli-tools",
7256
  },
7257
  {
7258
  "name": "wp-cli/rewrite-command",
7259
+ "version": "v2.0.5",
7260
  "source": {
7261
  "type": "git",
7262
  "url": "https://github.com/wp-cli/rewrite-command.git",
7263
+ "reference": "5115c82d6c339ac783d5ee9c7d3ce2949ac25a4b"
7264
  },
7265
  "dist": {
7266
  "type": "zip",
7267
+ "url": "https://api.github.com/repos/wp-cli/rewrite-command/zipball/5115c82d6c339ac783d5ee9c7d3ce2949ac25a4b",
7268
+ "reference": "5115c82d6c339ac783d5ee9c7d3ce2949ac25a4b",
7269
  "shasum": ""
7270
  },
7271
  "require": {
7309
  ],
7310
  "description": "Lists or flushes the site's rewrite rules, updates the permalink structure.",
7311
  "homepage": "https://github.com/wp-cli/rewrite-command",
7312
+ "time": "2020-06-12T00:17:09+00:00"
7313
  },
7314
  {
7315
  "name": "wp-cli/role-command",
7316
+ "version": "v2.0.4",
7317
  "source": {
7318
  "type": "git",
7319
  "url": "https://github.com/wp-cli/role-command.git",
7320
+ "reference": "9f2172988dee5bbeb98e54f291254bee94a556a6"
7321
  },
7322
  "dist": {
7323
  "type": "zip",
7324
+ "url": "https://api.github.com/repos/wp-cli/role-command/zipball/9f2172988dee5bbeb98e54f291254bee94a556a6",
7325
+ "reference": "9f2172988dee5bbeb98e54f291254bee94a556a6",
7326
  "shasum": ""
7327
  },
7328
  "require": {
7371
  ],
7372
  "description": "Adds, removes, lists, and resets roles and capabilities.",
7373
  "homepage": "https://github.com/wp-cli/role-command",
7374
+ "time": "2020-06-11T00:17:12+00:00"
7375
  },
7376
  {
7377
  "name": "wp-cli/scaffold-command",
7378
+ "version": "v2.0.10",
7379
  "source": {
7380
  "type": "git",
7381
  "url": "https://github.com/wp-cli/scaffold-command.git",
7382
+ "reference": "4ce62ca2e8df6ba0d49ce89c1f945f4827ce9344"
7383
  },
7384
  "dist": {
7385
  "type": "zip",
7386
+ "url": "https://api.github.com/repos/wp-cli/scaffold-command/zipball/4ce62ca2e8df6ba0d49ce89c1f945f4827ce9344",
7387
+ "reference": "4ce62ca2e8df6ba0d49ce89c1f945f4827ce9344",
7388
  "shasum": ""
7389
  },
7390
  "require": {
7391
+ "php": "^5.6 || ^7.0",
7392
  "wp-cli/wp-cli": "dev-master"
7393
  },
7394
  "require-dev": {
7434
  ],
7435
  "description": "Generates code for post types, taxonomies, blocks, plugins, child themes, etc.",
7436
  "homepage": "https://github.com/wp-cli/scaffold-command",
7437
+ "time": "2020-07-04T07:42:02+00:00"
7438
  },
7439
  {
7440
  "name": "wp-cli/search-replace-command",
7441
+ "version": "v2.0.7",
7442
  "source": {
7443
  "type": "git",
7444
  "url": "https://github.com/wp-cli/search-replace-command.git",
7445
+ "reference": "1104e4fb7dd83e85dedb8a98ed8f0ac30639694b"
7446
  },
7447
  "dist": {
7448
  "type": "zip",
7449
+ "url": "https://api.github.com/repos/wp-cli/search-replace-command/zipball/1104e4fb7dd83e85dedb8a98ed8f0ac30639694b",
7450
+ "reference": "1104e4fb7dd83e85dedb8a98ed8f0ac30639694b",
7451
  "shasum": ""
7452
  },
7453
  "require": {
7490
  ],
7491
  "description": "Searches/replaces strings in the database.",
7492
  "homepage": "https://github.com/wp-cli/search-replace-command",
7493
+ "time": "2020-06-10T13:24:39+00:00"
7494
  },
7495
  {
7496
  "name": "wp-cli/server-command",
7497
+ "version": "v2.0.5",
7498
  "source": {
7499
  "type": "git",
7500
  "url": "https://github.com/wp-cli/server-command.git",
7501
+ "reference": "945b6843d9f130c378869e3277a33af3fceea78d"
7502
  },
7503
  "dist": {
7504
  "type": "zip",
7505
+ "url": "https://api.github.com/repos/wp-cli/server-command/zipball/945b6843d9f130c378869e3277a33af3fceea78d",
7506
+ "reference": "945b6843d9f130c378869e3277a33af3fceea78d",
7507
  "shasum": ""
7508
  },
7509
  "require": {
7543
  ],
7544
  "description": "Launches PHP's built-in web server for a specific WordPress installation.",
7545
  "homepage": "https://github.com/wp-cli/server-command",
7546
+ "time": "2020-06-16T00:17:21+00:00"
7547
  },
7548
  {
7549
  "name": "wp-cli/shell-command",
7550
+ "version": "v2.0.5",
7551
  "source": {
7552
  "type": "git",
7553
  "url": "https://github.com/wp-cli/shell-command.git",
7554
+ "reference": "f655611701ed331c336932091860e66839a535f3"
7555
  },
7556
  "dist": {
7557
  "type": "zip",
7558
+ "url": "https://api.github.com/repos/wp-cli/shell-command/zipball/f655611701ed331c336932091860e66839a535f3",
7559
+ "reference": "f655611701ed331c336932091860e66839a535f3",
7560
  "shasum": ""
7561
  },
7562
  "require": {
7597
  ],
7598
  "description": "Opens an interactive PHP console for running and testing PHP code.",
7599
  "homepage": "https://github.com/wp-cli/shell-command",
7600
+ "time": "2020-06-12T00:17:09+00:00"
7601
  },
7602
  {
7603
  "name": "wp-cli/super-admin-command",
7604
+ "version": "v2.0.4",
7605
  "source": {
7606
  "type": "git",
7607
  "url": "https://github.com/wp-cli/super-admin-command.git",
7608
+ "reference": "a4b93491afb74a7e4836ab4ab5c2d8c42fa5e3d1"
7609
  },
7610
  "dist": {
7611
  "type": "zip",
7612
+ "url": "https://api.github.com/repos/wp-cli/super-admin-command/zipball/a4b93491afb74a7e4836ab4ab5c2d8c42fa5e3d1",
7613
+ "reference": "a4b93491afb74a7e4836ab4ab5c2d8c42fa5e3d1",
7614
  "shasum": ""
7615
  },
7616
  "require": {
7654
  ],
7655
  "description": "Lists, adds, or removes super admin users on a multisite installation.",
7656
  "homepage": "https://github.com/wp-cli/super-admin-command",
7657
+ "time": "2020-06-10T13:24:39+00:00"
7658
  },
7659
  {
7660
  "name": "wp-cli/widget-command",
7661
+ "version": "v2.1.1",
7662
  "source": {
7663
  "type": "git",
7664
  "url": "https://github.com/wp-cli/widget-command.git",
7665
+ "reference": "1ba59443fc07608450155c7770fe459ddfbc412f"
7666
  },
7667
  "dist": {
7668
  "type": "zip",
7669
+ "url": "https://api.github.com/repos/wp-cli/widget-command/zipball/1ba59443fc07608450155c7770fe459ddfbc412f",
7670
+ "reference": "1ba59443fc07608450155c7770fe459ddfbc412f",
7671
  "shasum": ""
7672
  },
7673
  "require": {
7717
  ],
7718
  "description": "Adds, moves, and removes widgets; lists sidebars.",
7719
  "homepage": "https://github.com/wp-cli/widget-command",
7720
+ "time": "2020-06-16T00:17:21+00:00"
7721
  },
7722
  {
7723
  "name": "wp-cli/wp-cli",
7725
  "source": {
7726
  "type": "git",
7727
  "url": "https://github.com/wp-cli/wp-cli.git",
7728
+ "reference": "49c3cba49ecd40cfac75f30d4e5be996c0b120be"
7729
  },
7730
  "dist": {
7731
  "type": "zip",
7732
+ "url": "https://api.github.com/repos/wp-cli/wp-cli/zipball/49c3cba49ecd40cfac75f30d4e5be996c0b120be",
7733
+ "reference": "49c3cba49ecd40cfac75f30d4e5be996c0b120be",
7734
  "shasum": ""
7735
  },
7736
  "require": {
7748
  "wp-cli/entity-command": "^1.2 || ^2",
7749
  "wp-cli/extension-command": "^1.1 || ^2",
7750
  "wp-cli/package-command": "^1 || ^2",
7751
+ "wp-cli/wp-cli-tests": "^2.1.14"
7752
  },
7753
  "suggest": {
7754
  "ext-readline": "Include for a better --prompt implementation",
7783
  "cli",
7784
  "wordpress"
7785
  ],
7786
+ "time": "2020-07-05T21:55:14+00:00"
7787
  },
7788
  {
7789
  "name": "wp-cli/wp-cli-bundle",
7857
  },
7858
  {
7859
  "name": "wp-cli/wp-config-transformer",
7860
+ "version": "v1.2.7",
7861
  "source": {
7862
  "type": "git",
7863
  "url": "https://github.com/wp-cli/wp-config-transformer.git",
7864
+ "reference": "bae1e975ed1277470e3dcc7fd0ef99c2d4f4c7a8"
7865
  },
7866
  "dist": {
7867
  "type": "zip",
7868
+ "url": "https://api.github.com/repos/wp-cli/wp-config-transformer/zipball/bae1e975ed1277470e3dcc7fd0ef99c2d4f4c7a8",
7869
+ "reference": "bae1e975ed1277470e3dcc7fd0ef99c2d4f4c7a8",
7870
  "shasum": ""
7871
  },
7872
  "require": {
7874
  },
7875
  "require-dev": {
7876
  "composer/composer": "^1.5.6",
7877
+ "phpunit/phpunit": "^6.5.5 || ^7.0.0",
7878
  "wp-coding-standards/wpcs": "^0.14.0 || ^1.0.0 || ^2.0.0"
7879
  },
7880
  "type": "library",
7894
  }
7895
  ],
7896
  "description": "Programmatically edit a wp-config.php file.",
7897
+ "time": "2020-07-05T12:30:35+00:00"
7898
  },
7899
  {
7900
  "name": "wp-coding-standards/wpcs",
8765
  },
8766
  {
8767
  "name": "wpdesk/wp-wpdesk-tracker-user-feedback",
8768
+ "version": "1.0.0",
8769
  "source": {
8770
  "type": "git",
8771
  "url": "https://gitlab.com/wpdesk/wp-wpdesk-tracker-user-feedback.git",
8772
+ "reference": "02a6d77dc89a16079e4f0678cbc399d25be6b361"
8773
  },
8774
  "dist": {
8775
  "type": "zip",
8776
+ "url": "https://gitlab.com/api/v4/projects/wpdesk%2Fwp-wpdesk-tracker-user-feedback/repository/archive.zip?sha=02a6d77dc89a16079e4f0678cbc399d25be6b361",
8777
+ "reference": "02a6d77dc89a16079e4f0678cbc399d25be6b361",
8778
  "shasum": ""
8779
  },
8780
  "require": {
8814
  "email": "grzegorz@wpdesk.pl"
8815
  }
8816
  ],
8817
+ "time": "2020-07-20T12:34:07+00:00"
8818
  },
8819
  {
8820
  "name": "zordius/lightncandy",
flexible-shipping.php CHANGED
@@ -3,14 +3,14 @@
3
  * Plugin Name: Flexible Shipping
4
  * Plugin URI: https://wordpress.org/plugins/flexible-shipping/
5
  * Description: Create additional shipment methods in WooCommerce and enable pricing based on cart weight or total.
6
- * Version: 3.10.0
7
  * Author: WP Desk
8
  * Author URI: https://www.wpdesk.net/
9
  * Text Domain: flexible-shipping
10
  * Domain Path: /lang/
11
  * Requires at least: 4.5
12
  * Tested up to: 5.4.2
13
- * WC requires at least: 3.8
14
  * WC tested up to: 4.4
15
  * Requires PHP: 5.6
16
  *
@@ -38,7 +38,7 @@ if ( ! defined( 'ABSPATH' ) ) {
38
  } // Exit if accessed directly
39
 
40
  /* THIS VARIABLE CAN BE CHANGED AUTOMATICALLY */
41
- $plugin_version = '3.10.0';
42
 
43
  $plugin_name = 'Flexible Shipping';
44
  $product_id = 'Flexible Shipping';
3
  * Plugin Name: Flexible Shipping
4
  * Plugin URI: https://wordpress.org/plugins/flexible-shipping/
5
  * Description: Create additional shipment methods in WooCommerce and enable pricing based on cart weight or total.
6
+ * Version: 3.11.0
7
  * Author: WP Desk
8
  * Author URI: https://www.wpdesk.net/
9
  * Text Domain: flexible-shipping
10
  * Domain Path: /lang/
11
  * Requires at least: 4.5
12
  * Tested up to: 5.4.2
13
+ * WC requires at least: 4.0
14
  * WC tested up to: 4.4
15
  * Requires PHP: 5.6
16
  *
38
  } // Exit if accessed directly
39
 
40
  /* THIS VARIABLE CAN BE CHANGED AUTOMATICALLY */
41
+ $plugin_version = '3.11.0';
42
 
43
  $plugin_name = 'Flexible Shipping';
44
  $product_id = 'Flexible Shipping';
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://flexibleshipping.com/table-rate/
4
  Tags: table rate, table rate shipping, conditional shipping, shipping method, woocommerce shipping, flexible shipping, woocommerce table rate shipping, cart based shipping, weight shipping, weight based shipping, totals based shipping, order based shipping, shipping zones, shipping classes, shipping, free shipping, advanced shipping
5
  Requires at least: 4.5
6
  Tested up to: 5.4.2
7
- Stable tag: 3.10.0
8
  Requires PHP: 5.6
9
  License: GPLv3 or later
10
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
@@ -163,6 +163,9 @@ If you are upgrading from the old Flexible Shipping version (1.3.2, woo-flexible
163
 
164
  == Changelog ==
165
 
 
 
 
166
  = 3.10.0 - 2020-07-15 =
167
  * Added ability to test New Table Interface
168
 
4
  Tags: table rate, table rate shipping, conditional shipping, shipping method, woocommerce shipping, flexible shipping, woocommerce table rate shipping, cart based shipping, weight shipping, weight based shipping, totals based shipping, order based shipping, shipping zones, shipping classes, shipping, free shipping, advanced shipping
5
  Requires at least: 4.5
6
  Tested up to: 5.4.2
7
+ Stable tag: 3.11.0
8
  Requires PHP: 5.6
9
  License: GPLv3 or later
10
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
163
 
164
  == Changelog ==
165
 
166
+ = 3.11.0 - 2020-07-30 =
167
+ * Added ability to open shipment label in new tab - works with some integrations
168
+
169
  = 3.10.0 - 2020-07-15 =
170
  * Added ability to test New Table Interface
171
 
src/WPDesk/FS/Helpers/ShippingMethod.php ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Helpers for Shipping method.
4
+ *
5
+ * @package WPDesk\FS\TableRate\NewRulesTablePointer
6
+ */
7
+
8
+ namespace WPDesk\FS\Helpers;
9
+
10
+ /**
11
+ * Collection of helpers for Shipping method.
12
+ */
13
+ class ShippingMethod {
14
+
15
+ /**
16
+ * Pattern of option with Flexible Shipping methods.
17
+ *
18
+ * @var string
19
+ */
20
+ const FS_METHODS_OPTION_PREFIX = 'flexible_shipping_methods_%d';
21
+
22
+ /**
23
+ * Checks if there are Flexible Shipping methods in the Shipping Zones.
24
+ *
25
+ * @param string $method_name Name of Shipping method.
26
+ *
27
+ * @return bool Status.
28
+ */
29
+ public static function check_if_method_exists_in_zones( $method_name ) {
30
+ $zones = \WC_Shipping_Zones::get_zones();
31
+ foreach ( $zones as $zone ) {
32
+ $zone_instance = \WC_Shipping_Zones::get_zone( $zone['zone_id'] );
33
+
34
+ if ( self::check_if_method_exists_in_zone( $method_name, $zone_instance ) === true ) {
35
+ return true;
36
+ }
37
+ }
38
+
39
+ return false;
40
+ }
41
+
42
+ /**
43
+ * Checks if there are Flexible Shipping methods in the Shipping Zone.
44
+ *
45
+ * @param string $method_name Name of Shipping method.
46
+ * @param \WC_Shipping_Zone $zone_instance Instance of Shipping Zone.
47
+ *
48
+ * @return bool Status.
49
+ */
50
+ private static function check_if_method_exists_in_zone( $method_name, $zone_instance ) {
51
+ $zone_methods = $zone_instance->get_shipping_methods();
52
+ foreach ( $zone_methods as $zone_method ) {
53
+ if ( $zone_method->id !== $method_name ) {
54
+ continue;
55
+ }
56
+
57
+ $option_key = sprintf( self::FS_METHODS_OPTION_PREFIX, $zone_method->instance_id );
58
+ $shipping_methods = get_option( $option_key, array() );
59
+ if ( $shipping_methods ) {
60
+ return true;
61
+ }
62
+ }
63
+
64
+ return false;
65
+ }
66
+
67
+ }
src/WPDesk/FS/TableRate/NewRulesTablePointer/RulesPointerMessage.php CHANGED
@@ -12,6 +12,9 @@ use FSVendor\WPDesk\Pointer\PointerConditions;
12
  use FSVendor\WPDesk\Pointer\PointerMessage;
13
  use FSVendor\WPDesk\Pointer\PointerPosition;
14
  use FSVendor\WPDesk\Pointer\PointersScripts;
 
 
 
15
 
16
  /**
17
  * Can display new rules pointer message.
@@ -22,12 +25,6 @@ class RulesPointerMessage implements Hookable {
22
 
23
  const NEW_RULES_TABLE_PARAMETER = 'new_rules_table';
24
 
25
- /**
26
- * Pattern of option with Flexible Shipping methods.
27
- * @var string
28
- */
29
- const FS_METHODS_OPTION_PREFIX = 'flexible_shipping_methods_%d';
30
-
31
  /**
32
  * @var RulesPointerOption
33
  */
@@ -36,7 +33,7 @@ class RulesPointerMessage implements Hookable {
36
  /**
37
  * RulesPointerMessage constructor.
38
  *
39
- * @param RulesPointerOption $rules_pointer_option .
40
  */
41
  public function __construct( RulesPointerOption $rules_pointer_option ) {
42
  $this->rules_pointer_option = $rules_pointer_option;
@@ -54,9 +51,9 @@ class RulesPointerMessage implements Hookable {
54
  */
55
  private function should_show_pointer() {
56
  if ( ! ( new \FSVendor\WPDesk_Tracker_Persistence_Consent() )->is_active()
57
- || ( intval( get_option( RulesPointerOption::OPTION_NAME, '0' ) ) === 1 )
58
  || wpdesk_is_plugin_active( 'flexible-shipping-pro/flexible-shipping-pro.php' )
59
- || ! $this->check_is_fs_methods_exists_in_zones() ) {
60
  return false;
61
  }
62
 
@@ -64,56 +61,21 @@ class RulesPointerMessage implements Hookable {
64
  }
65
 
66
  /**
67
- * Checks if there are Flexible Shipping methods in the Shipping Zones.
68
  *
69
- * @return bool Status.
70
  */
71
- private function check_is_fs_methods_exists_in_zones() {
72
- $zones = \WC_Shipping_Zones::get_zones();
73
- foreach ( $zones as $zone ) {
74
- $zone_instance = \WC_Shipping_Zones::get_zone( $zone['zone_id'] );
75
-
76
- if ( $this->check_is_fs_methods_exists_in_zone( $zone_instance ) === true ) {
77
- return true;
78
- }
79
- }
80
-
81
- return false;
82
- }
83
-
84
- /**
85
- * Checks if there are Flexible Shipping methods in the Shipping Zone.
86
- *
87
- * @param \WC_Shipping_Zone $zone_instance Instance of Shipping Zone.
88
- *
89
- * @return bool Status.
90
- */
91
- private function check_is_fs_methods_exists_in_zone( $zone_instance ) {
92
- $zone_methods = $zone_instance->get_shipping_methods();
93
- foreach ( $zone_methods as $zone_method ) {
94
- if ( $zone_method->id !== 'flexible_shipping' ) {
95
- continue;
96
- }
97
-
98
- $option_key = sprintf( self::FS_METHODS_OPTION_PREFIX, $zone_method->instance_id );
99
- $shipping_methods = get_option( $option_key, array() );
100
- if ( $shipping_methods ) {
101
- return true;
102
- }
103
  }
104
 
105
- return false;
106
  }
107
 
108
  /**
109
- * Add pointer messages.
110
  */
111
- public function add_pointer_messages() {
112
- if ( $this->should_show_pointer() ) {
113
- $this->create_pointer_message();
114
- }
115
- }
116
-
117
  private function create_pointer_message() {
118
  $enable_new_rules_table_link = admin_url( 'admin.php' );
119
  foreach ( $_GET as $parameter => $value ) {
@@ -121,10 +83,11 @@ class RulesPointerMessage implements Hookable {
121
  }
122
  $enable_new_rules_table_link = add_query_arg( self::NEW_RULES_TABLE_PARAMETER, '1', $enable_new_rules_table_link );
123
 
124
- ob_start();
125
- include __DIR__ . '/views/html-rule-pointer-message.php';
126
- $content = trim( ob_get_contents() );
127
- ob_end_clean();
 
128
 
129
  $pointer_conditions = new PointerConditions( 'woocommerce_page_wc-settings', 'manage_woocommerce' );
130
  $pointer_message = new PointerMessage(
@@ -136,7 +99,10 @@ class RulesPointerMessage implements Hookable {
136
  'wp-pointer',
137
  330,
138
  $pointer_conditions,
139
- array( 'margin-left' => '10px', 'font-weight' => 'initial' )
 
 
 
140
  );
141
  }
142
 
12
  use FSVendor\WPDesk\Pointer\PointerMessage;
13
  use FSVendor\WPDesk\Pointer\PointerPosition;
14
  use FSVendor\WPDesk\Pointer\PointersScripts;
15
+ use FSVendor\WPDesk\View\Renderer\SimplePhpRenderer;
16
+ use FSVendor\WPDesk\View\Resolver\DirResolver;
17
+ use WPDesk\FS\Helpers\ShippingMethod;
18
 
19
  /**
20
  * Can display new rules pointer message.
25
 
26
  const NEW_RULES_TABLE_PARAMETER = 'new_rules_table';
27
 
 
 
 
 
 
 
28
  /**
29
  * @var RulesPointerOption
30
  */
33
  /**
34
  * RulesPointerMessage constructor.
35
  *
36
+ * @param RulesPointerOption $rules_pointer_option Class object.
37
  */
38
  public function __construct( RulesPointerOption $rules_pointer_option ) {
39
  $this->rules_pointer_option = $rules_pointer_option;
51
  */
52
  private function should_show_pointer() {
53
  if ( ! ( new \FSVendor\WPDesk_Tracker_Persistence_Consent() )->is_active()
54
+ || RulesPointerOption::is_option_set()
55
  || wpdesk_is_plugin_active( 'flexible-shipping-pro/flexible-shipping-pro.php' )
56
+ || ! ShippingMethod::check_if_method_exists_in_zones( 'flexible_shipping' ) ) {
57
  return false;
58
  }
59
 
61
  }
62
 
63
  /**
64
+ * Add pointer messages if it should be visible.
65
  *
66
+ * @internal
67
  */
68
+ public function add_pointer_messages() {
69
+ if ( ! $this->should_show_pointer() ) {
70
+ return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  }
72
 
73
+ $this->create_pointer_message();
74
  }
75
 
76
  /**
77
+ * Creates pointer message.
78
  */
 
 
 
 
 
 
79
  private function create_pointer_message() {
80
  $enable_new_rules_table_link = admin_url( 'admin.php' );
81
  foreach ( $_GET as $parameter => $value ) {
83
  }
84
  $enable_new_rules_table_link = add_query_arg( self::NEW_RULES_TABLE_PARAMETER, '1', $enable_new_rules_table_link );
85
 
86
+ $template_args = array(
87
+ 'enable_new_rules_table_link' => $enable_new_rules_table_link,
88
+ );
89
+ $renderer = new SimplePhpRenderer( new DirResolver( __DIR__ . '/views' ) );
90
+ $content = $renderer->render( 'html-rule-pointer-message', $template_args );
91
 
92
  $pointer_conditions = new PointerConditions( 'woocommerce_page_wc-settings', 'manage_woocommerce' );
93
  $pointer_message = new PointerMessage(
99
  'wp-pointer',
100
  330,
101
  $pointer_conditions,
102
+ array(
103
+ 'margin-left' => '10px',
104
+ 'font-weight' => 'initial',
105
+ )
106
  );
107
  }
108
 
src/WPDesk/FS/TableRate/NewRulesTablePointer/RulesPointerOption.php CHANGED
@@ -34,7 +34,7 @@ class RulesPointerOption implements Hookable {
34
  public function update_option_on_enabling_new_rules_table() {
35
  if ( current_user_can( 'manage_woocommerce' )
36
  && isset( $_GET[ RulesPointerMessage::NEW_RULES_TABLE_PARAMETER ] )
37
- && intval( get_option( self::OPTION_NAME, '0' ) ) === 0
38
  ) {
39
  update_option( self::OPTION_NAME, '1' );
40
  $this->update_shipping_method_settings();
@@ -59,7 +59,7 @@ class RulesPointerOption implements Hookable {
59
  * @param mixed $_meta_value Metadata value. Serialized if non-scalar.
60
  */
61
  public function update_option_on_pointer_dismiss( $meta_id, $object_id, $meta_key, $_meta_value ) {
62
- if ( 'dismissed_wp_pointers' === $meta_key && ! $this->is_option_set() ) {
63
  $dismissed = explode( ',', (string) $_meta_value );
64
  if ( in_array( RulesPointerMessage::POINTER_ID, $dismissed ) ) {
65
  update_option( self::OPTION_NAME, '1' );
@@ -68,10 +68,12 @@ class RulesPointerOption implements Hookable {
68
  }
69
 
70
  /**
71
- * @return bool
 
 
72
  */
73
- public function is_option_set() {
74
  return 1 === intval( get_option( self::OPTION_NAME, '0' ) );
75
  }
76
 
77
- }
34
  public function update_option_on_enabling_new_rules_table() {
35
  if ( current_user_can( 'manage_woocommerce' )
36
  && isset( $_GET[ RulesPointerMessage::NEW_RULES_TABLE_PARAMETER ] )
37
+ && ! self::is_option_set()
38
  ) {
39
  update_option( self::OPTION_NAME, '1' );
40
  $this->update_shipping_method_settings();
59
  * @param mixed $_meta_value Metadata value. Serialized if non-scalar.
60
  */
61
  public function update_option_on_pointer_dismiss( $meta_id, $object_id, $meta_key, $_meta_value ) {
62
+ if ( 'dismissed_wp_pointers' === $meta_key && ! self::is_option_set() ) {
63
  $dismissed = explode( ',', (string) $_meta_value );
64
  if ( in_array( RulesPointerMessage::POINTER_ID, $dismissed ) ) {
65
  update_option( self::OPTION_NAME, '1' );
68
  }
69
 
70
  /**
71
+ * Checks if pointer is active.
72
+ *
73
+ * @return bool Option status.
74
  */
75
+ public static function is_option_set() {
76
  return 1 === intval( get_option( self::OPTION_NAME, '0' ) );
77
  }
78
 
79
+ }
src/WPDesk/FS/TableRate/NewRulesTablePointer/ShippingMethodNewRuleTableSetting.php CHANGED
@@ -23,8 +23,11 @@ class ShippingMethodNewRuleTableSetting {
23
  const VALUE_NO = 'no';
24
  const VALUE_YES = 'yes';
25
 
 
 
 
26
  private function should_add_field_to_settings() {
27
- return 1 === intval( get_option( RulesPointerOption::OPTION_NAME, '0' ) ) && ! wpdesk_is_plugin_active( 'flexible-shipping-pro/flexible-shipping-pro.php' );
28
  }
29
 
30
  /**
@@ -45,11 +48,19 @@ class ShippingMethodNewRuleTableSetting {
45
  return $settings;
46
  }
47
 
 
 
 
 
 
48
  public function is_enabled() {
49
  $settings = get_option( self::SHIPPING_METHOD_SETTINGS_OPTION, array() );
50
  return isset( $settings[ self::SETTINGS_OPTION ] ) && $settings[ self::SETTINGS_OPTION ] === self::VALUE_YES;
51
  }
52
 
 
 
 
53
  public function watch_settings_change() {
54
  add_action( 'update_option_' . self::SHIPPING_METHOD_SETTINGS_OPTION, array( $this, 'update_option_if_settings_changed' ), 10, 3 );
55
  }
@@ -79,10 +90,21 @@ class ShippingMethodNewRuleTableSetting {
79
  * Display settings JavaScript.
80
  */
81
  public function settings_script() {
82
- if ( get_option( RulesPointerOption::OPTION_NAME, '0' ) === '1' ) {
83
- $trigger = self::TRIGGER;
84
- include __DIR__ . '/views/html-flexible-shipping-settings-script.php';
85
  }
 
 
 
 
 
 
 
 
 
 
 
 
86
  }
87
 
88
  }
23
  const VALUE_NO = 'no';
24
  const VALUE_YES = 'yes';
25
 
26
+ /**
27
+ * @return bool
28
+ */
29
  private function should_add_field_to_settings() {
30
+ return RulesPointerOption::is_option_set() && ! wpdesk_is_plugin_active( 'flexible-shipping-pro/flexible-shipping-pro.php' );
31
  }
32
 
33
  /**
48
  return $settings;
49
  }
50
 
51
+ /**
52
+ * Is new rules table enabled?
53
+ *
54
+ * @return bool
55
+ */
56
  public function is_enabled() {
57
  $settings = get_option( self::SHIPPING_METHOD_SETTINGS_OPTION, array() );
58
  return isset( $settings[ self::SETTINGS_OPTION ] ) && $settings[ self::SETTINGS_OPTION ] === self::VALUE_YES;
59
  }
60
 
61
+ /**
62
+ * Adds action to watch option update.
63
+ */
64
  public function watch_settings_change() {
65
  add_action( 'update_option_' . self::SHIPPING_METHOD_SETTINGS_OPTION, array( $this, 'update_option_if_settings_changed' ), 10, 3 );
66
  }
90
  * Display settings JavaScript.
91
  */
92
  public function settings_script() {
93
+ if ( ! RulesPointerOption::is_option_set() ) {
94
+ return;
 
95
  }
96
+
97
+ $trigger = self::TRIGGER;
98
+ include __DIR__ . '/views/html-flexible-shipping-settings-script.php';
99
+ }
100
+
101
+ /**
102
+ * Checks if pointer was turned off.
103
+ *
104
+ * @return bool Option status.
105
+ */
106
+ public static function was_option_disabled() {
107
+ return 1 === intval( get_option( self::OPTION_NEW_RULES_DISABLED, '0' ) );
108
  }
109
 
110
  }
src/WPDesk/FS/TableRate/NewRulesTablePointer/views/html-flexible-shipping-settings-script.php CHANGED
@@ -8,21 +8,22 @@ if ( ! defined( 'ABSPATH' ) ) {
8
  ?><script type="text/javascript">
9
  jQuery(document).ready(function(){
10
 
11
- var proceed = false;
 
12
 
13
- jQuery(".woocommerce-save-button").on('click', function(e){
14
- if (!proceed && !jQuery('#woocommerce_flexible_shipping_info_enable_new_rules_table').is(':checked') ) {
15
- e.preventDefault();
16
- jQuery(document).trigger('<?php echo esc_attr( $trigger ); ?>');
17
- }
18
- });
19
- jQuery(document).on('<?php echo esc_attr( $trigger ); ?>_proceed', function(){
20
- proceed = true;
21
- jQuery(".woocommerce-save-button").trigger('click');
22
- });
23
- if ( window.location.hash === '#woocommerce_flexible_shipping_info_enable_new_rules_table' ) {
24
- jQuery('#woocommerce_flexible_shipping_info_enable_new_rules_table').closest('tr').css('background-color', '#ccc');
25
- }
26
 
27
- });
28
- </script>
8
  ?><script type="text/javascript">
9
  jQuery(document).ready(function(){
10
 
11
+ var trigger = '<?php echo esc_attr( $trigger ); ?>';
12
+ var proceed = false;
13
 
14
+ jQuery(".woocommerce-save-button").on('click', function(e){
15
+ if (!proceed && !jQuery('#woocommerce_flexible_shipping_info_enable_new_rules_table').is(':checked') ) {
16
+ e.preventDefault();
17
+ jQuery(document).trigger(trigger);
18
+ }
19
+ });
20
+ jQuery(document).on(trigger + '_proceed', function(){
21
+ proceed = true;
22
+ jQuery(".woocommerce-save-button").trigger('click');
23
+ });
24
+ if ( window.location.hash === '#woocommerce_flexible_shipping_info_enable_new_rules_table' ) {
25
+ jQuery('#woocommerce_flexible_shipping_info_enable_new_rules_table').closest('tr').css('background-color', '#ccc');
26
+ }
27
 
28
+ });
29
+ </script>
src/WPDesk/FS/TableRate/NewRulesTableTracker.php CHANGED
@@ -1,15 +1,19 @@
1
  <?php
2
  /**
 
3
  *
 
4
  */
5
 
6
  namespace WPDesk\FS\TableRate;
7
 
8
-
9
  use FSVendor\WPDesk\PluginBuilder\Plugin\Hookable;
10
  use WPDesk\FS\TableRate\NewRulesTablePointer\RulesPointerOption;
11
  use WPDesk\FS\TableRate\NewRulesTablePointer\ShippingMethodNewRuleTableSetting;
12
 
 
 
 
13
  class NewRulesTableTracker implements Hookable {
14
 
15
  const NEW_USERS_AFTER_THIS_DATE = '2020-07-07 01:00:00';
@@ -17,6 +21,9 @@ class NewRulesTableTracker implements Hookable {
17
  const PRIORITY_AFTER_FS_TRACKER = 12;
18
  const TRACKER_DATA_FLEXIBLE_SHIPPING = 'flexible_shipping';
19
 
 
 
 
20
  public function hooks() {
21
  add_filter( 'wpdesk_tracker_data', array( $this, 'append_new_rules_table_data_to_tracker' ), self::PRIORITY_AFTER_FS_TRACKER );
22
  }
@@ -33,7 +40,7 @@ class NewRulesTableTracker implements Hookable {
33
  /**
34
  * Activation date according to wpdesk helper.
35
  *
36
- * @return int timestamp
37
  */
38
  private function activation_date_according_to_wpdesk_helper() {
39
  $option_name = 'plugin_activation_flexible-shipping/flexible-shipping.php';
@@ -46,6 +53,11 @@ class NewRulesTableTracker implements Hookable {
46
  return strtotime( $activation_date );
47
  }
48
 
 
 
 
 
 
49
  private function get_new_rules_table_enabled() {
50
  $shipping_method_settings = get_option( ShippingMethodNewRuleTableSetting::SHIPPING_METHOD_SETTINGS_OPTION, array() );
51
  if ( isset( $shipping_method_settings[ ShippingMethodNewRuleTableSetting::SETTINGS_OPTION ] ) ) {
@@ -54,6 +66,14 @@ class NewRulesTableTracker implements Hookable {
54
  return 'no';
55
  }
56
 
 
 
 
 
 
 
 
 
57
  private function append_user_feedback_data( $data, $user_feedback ) {
58
  if ( isset( $user_feedback['selected_option'] ) ) {
59
  $data['feedback_option'] = $user_feedback['selected_option'];
@@ -65,13 +85,20 @@ class NewRulesTableTracker implements Hookable {
65
  return $data;
66
  }
67
 
 
 
 
 
 
 
 
68
  public function append_new_rules_table_data_to_tracker( $data ) {
69
  $new_rules_table_data = array();
70
 
71
  $new_rules_table_data['new_installation'] = $this->is_new_installation() ? 'yes' : 'no';
72
- $new_rules_table_data['pointer_clicked'] = get_option( RulesPointerOption::OPTION_NAME, '0' ) === '1' ? 'yes' : 'no';
73
- $new_rules_table_data['table_enabled'] = $this->get_new_rules_table_enabled();
74
- $new_rules_table_data['was_disabled'] = get_option( ShippingMethodNewRuleTableSetting::OPTION_NEW_RULES_DISABLED, '0' ) === '1' ? 'yes' : 'no';
75
 
76
  $user_feedback = get_option( UserFeedback::USER_FEEDBACK_OPTION );
77
 
@@ -84,4 +111,4 @@ class NewRulesTableTracker implements Hookable {
84
  return $data;
85
  }
86
 
87
- }
1
  <?php
2
  /**
3
+ * Tracker data.
4
  *
5
+ * @package WPDesk\FS\TableRate
6
  */
7
 
8
  namespace WPDesk\FS\TableRate;
9
 
 
10
  use FSVendor\WPDesk\PluginBuilder\Plugin\Hookable;
11
  use WPDesk\FS\TableRate\NewRulesTablePointer\RulesPointerOption;
12
  use WPDesk\FS\TableRate\NewRulesTablePointer\ShippingMethodNewRuleTableSetting;
13
 
14
+ /**
15
+ * Can add new rates table data to tracked data.
16
+ */
17
  class NewRulesTableTracker implements Hookable {
18
 
19
  const NEW_USERS_AFTER_THIS_DATE = '2020-07-07 01:00:00';
21
  const PRIORITY_AFTER_FS_TRACKER = 12;
22
  const TRACKER_DATA_FLEXIBLE_SHIPPING = 'flexible_shipping';
23
 
24
+ /**
25
+ * Hooks.
26
+ */
27
  public function hooks() {
28
  add_filter( 'wpdesk_tracker_data', array( $this, 'append_new_rules_table_data_to_tracker' ), self::PRIORITY_AFTER_FS_TRACKER );
29
  }
40
  /**
41
  * Activation date according to wpdesk helper.
42
  *
43
+ * @return int Activation date timestamp.
44
  */
45
  private function activation_date_according_to_wpdesk_helper() {
46
  $option_name = 'plugin_activation_flexible-shipping/flexible-shipping.php';
53
  return strtotime( $activation_date );
54
  }
55
 
56
+ /**
57
+ * Checks if new tables are activated.
58
+ *
59
+ * @return string Status "yes" for true or "no" for false.
60
+ */
61
  private function get_new_rules_table_enabled() {
62
  $shipping_method_settings = get_option( ShippingMethodNewRuleTableSetting::SHIPPING_METHOD_SETTINGS_OPTION, array() );
63
  if ( isset( $shipping_method_settings[ ShippingMethodNewRuleTableSetting::SETTINGS_OPTION ] ) ) {
66
  return 'no';
67
  }
68
 
69
+ /**
70
+ * Adds info about New Table Interface to user feedback.
71
+ *
72
+ * @param array $data Stats about New Table Interface.
73
+ * @param array $user_feedback User feedback.
74
+ *
75
+ * @return array Updated $data array.
76
+ */
77
  private function append_user_feedback_data( $data, $user_feedback ) {
78
  if ( isset( $user_feedback['selected_option'] ) ) {
79
  $data['feedback_option'] = $user_feedback['selected_option'];
85
  return $data;
86
  }
87
 
88
+ /**
89
+ * Adds data to the tracker about New Table Interface.
90
+ *
91
+ * @param array $data Original data sent to tracker.
92
+ *
93
+ * @return array Updated $data array.
94
+ */
95
  public function append_new_rules_table_data_to_tracker( $data ) {
96
  $new_rules_table_data = array();
97
 
98
  $new_rules_table_data['new_installation'] = $this->is_new_installation() ? 'yes' : 'no';
99
+ $new_rules_table_data['pointer_clicked'] = RulesPointerOption::is_option_set() ? 'yes' : 'no';
100
+ $new_rules_table_data['table_enabled'] = $this->get_new_rules_table_enabled();
101
+ $new_rules_table_data['was_disabled'] = ShippingMethodNewRuleTableSetting::was_option_disabled() ? 'yes' : 'no';
102
 
103
  $user_feedback = get_option( UserFeedback::USER_FEEDBACK_OPTION );
104
 
111
  return $data;
112
  }
113
 
114
+ }
src/WPDesk/FS/TableRate/RulesSettingsField.php CHANGED
@@ -1,14 +1,18 @@
1
  <?php
2
  /**
 
 
3
  * @package WPDesk\FS\TableRate
4
  */
5
 
6
  namespace WPDesk\FS\TableRate;
7
 
8
  use FSVendor\WPDesk\Forms\Field;
 
 
9
 
10
  /**
11
- * Class RulesSettings
12
  */
13
  class RulesSettingsField {
14
 
@@ -35,10 +39,10 @@ class RulesSettingsField {
35
  /**
36
  * RulesSettings constructor.
37
  *
38
- * @param string $settings_field_name .
39
  * @param string $field_key .
40
- * @param string $settings_field_title .
41
- * @param array $settings .
42
  */
43
  public function __construct( $settings_field_id, $field_key, $settings_field_name, $data ) {
44
  $this->settings_field_id = $settings_field_id;
@@ -53,11 +57,12 @@ class RulesSettingsField {
53
  * @return string
54
  */
55
  public function render() {
56
- ob_start();
57
- $field_key = $this->field_key;
58
- $data = $this->data;
59
- include __DIR__ . '/views/shipping-method-settings-rules.php';
60
- return ob_get_clean();
 
61
  }
62
 
63
  }
1
  <?php
2
  /**
3
+ * New rules settings table.
4
+ *
5
  * @package WPDesk\FS\TableRate
6
  */
7
 
8
  namespace WPDesk\FS\TableRate;
9
 
10
  use FSVendor\WPDesk\Forms\Field;
11
+ use FSVendor\WPDesk\View\Renderer\SimplePhpRenderer;
12
+ use FSVendor\WPDesk\View\Resolver\DirResolver;
13
 
14
  /**
15
+ * Can display new rules settings table.
16
  */
17
  class RulesSettingsField {
18
 
39
  /**
40
  * RulesSettings constructor.
41
  *
42
+ * @param string $settings_field_id .
43
  * @param string $field_key .
44
+ * @param string $settings_field_name .
45
+ * @param array $data Rules for shipping method.
46
  */
47
  public function __construct( $settings_field_id, $field_key, $settings_field_name, $data ) {
48
  $this->settings_field_id = $settings_field_id;
57
  * @return string
58
  */
59
  public function render() {
60
+ $renderer = new SimplePhpRenderer( new DirResolver( __DIR__ . '/views' ) );
61
+ $template_args = array(
62
+ 'field_key' => $this->field_key,
63
+ 'data' => $this->data,
64
+ );
65
+ return $renderer->render( 'shipping-method-settings-rules', $template_args );
66
  }
67
 
68
  }
src/WPDesk/FS/TableRate/UserFeedback.php CHANGED
@@ -1,38 +1,57 @@
1
  <?php
 
 
 
 
 
2
 
3
  namespace WPDesk\FS\TableRate;
4
 
5
  use FSVendor\WPDesk\PluginBuilder\Plugin\Hookable;
6
  use FSVendor\WPDesk\Tracker\UserFeedback\AjaxUserFeedbackDataHandler;
 
7
  use FSVendor\WPDesk\Tracker\UserFeedback\TrackerFactory;
8
  use FSVendor\WPDesk\Tracker\UserFeedback\UserFeedbackData;
9
  use FSVendor\WPDesk\Tracker\UserFeedback\UserFeedbackOption;
10
  use WPDesk\FS\TableRate\NewRulesTablePointer\RulesPointerOption;
11
  use WPDesk\FS\TableRate\NewRulesTablePointer\ShippingMethodNewRuleTableSetting;
12
 
 
 
 
13
  class UserFeedback implements Hookable {
14
 
15
  const THICKBOX_ID = 'new-rules-table';
16
  const USER_FEEDBACK_OPTION = 'flexible_shipping_new_rules_feedback';
17
 
 
 
 
18
  public function hooks() {
19
- if ( get_option( RulesPointerOption::OPTION_NAME, '0' ) === '1' ) {
20
- $user_feedback = $this->prepare_user_feedback();
21
  $user_feedback->hooks();
22
  }
23
  add_action( 'wpdesk_tracker_user_feedback_data_handled', array( $this, 'save_user_feedback' ) );
24
  }
25
 
26
  /**
27
- * @param array $payload .
 
 
28
  */
29
  public function save_user_feedback( $payload ) {
30
- if ( is_array( $payload ) && isset( $payload[ AjaxUserFeedbackDataHandler::FEEDBACK_ID ] ) && $payload[ AjaxUserFeedbackDataHandler::FEEDBACK_ID ] === self::THICKBOX_ID ) {
31
  update_option( self::USER_FEEDBACK_OPTION, $payload );
32
  }
33
  }
34
 
35
- private function prepare_user_feedback() {
 
 
 
 
 
36
  $user_feedback_data = new UserFeedbackData(
37
  self::THICKBOX_ID,
38
  __( 'You are disabling new rules table', 'flexible-shipping' ),
@@ -40,14 +59,16 @@ class UserFeedback implements Hookable {
40
  __( 'What should we do to improve your experience?', 'flexible-shipping' ),
41
  'woocommerce_page_wc-settings'
42
  );
43
- $user_feedback_data->add_feedback_option( new UserFeedbackOption(
44
- 'have_comment',
45
- '',
46
- true,
47
- __( 'Comment', 'flexible-shipping' )
48
- ));
 
 
49
 
50
- return TrackerFactory::createCustomTrackerWithoutSender( $user_feedback_data );
51
  }
52
 
53
  }
1
  <?php
2
+ /**
3
+ * User feedback.
4
+ *
5
+ * @package WPDesk\FS\TableRate
6
+ */
7
 
8
  namespace WPDesk\FS\TableRate;
9
 
10
  use FSVendor\WPDesk\PluginBuilder\Plugin\Hookable;
11
  use FSVendor\WPDesk\Tracker\UserFeedback\AjaxUserFeedbackDataHandler;
12
+ use FSVendor\WPDesk\Tracker\UserFeedback\Tracker;
13
  use FSVendor\WPDesk\Tracker\UserFeedback\TrackerFactory;
14
  use FSVendor\WPDesk\Tracker\UserFeedback\UserFeedbackData;
15
  use FSVendor\WPDesk\Tracker\UserFeedback\UserFeedbackOption;
16
  use WPDesk\FS\TableRate\NewRulesTablePointer\RulesPointerOption;
17
  use WPDesk\FS\TableRate\NewRulesTablePointer\ShippingMethodNewRuleTableSetting;
18
 
19
+ /**
20
+ * Can display and handle user feedback when disabling new rules settings table.
21
+ */
22
  class UserFeedback implements Hookable {
23
 
24
  const THICKBOX_ID = 'new-rules-table';
25
  const USER_FEEDBACK_OPTION = 'flexible_shipping_new_rules_feedback';
26
 
27
+ /**
28
+ * Hooks.
29
+ */
30
  public function hooks() {
31
+ if ( RulesPointerOption::is_option_set() ) {
32
+ $user_feedback = $this->prepare_user_feedback_tracker();
33
  $user_feedback->hooks();
34
  }
35
  add_action( 'wpdesk_tracker_user_feedback_data_handled', array( $this, 'save_user_feedback' ) );
36
  }
37
 
38
  /**
39
+ * Saves user feedback for lated sending by Tracker.
40
+ *
41
+ * @param array $payload Tracker request data.
42
  */
43
  public function save_user_feedback( $payload ) {
44
+ if ( is_array( $payload ) && isset( $payload[ AjaxUserFeedbackDataHandler::FEEDBACK_ID ] ) && self::THICKBOX_ID === $payload[ AjaxUserFeedbackDataHandler::FEEDBACK_ID ] ) {
45
  update_option( self::USER_FEEDBACK_OPTION, $payload );
46
  }
47
  }
48
 
49
+ /**
50
+ * Prepares tracker for save user feedback.
51
+ *
52
+ * @return Tracker
53
+ */
54
+ private function prepare_user_feedback_tracker() {
55
  $user_feedback_data = new UserFeedbackData(
56
  self::THICKBOX_ID,
57
  __( 'You are disabling new rules table', 'flexible-shipping' ),
59
  __( 'What should we do to improve your experience?', 'flexible-shipping' ),
60
  'woocommerce_page_wc-settings'
61
  );
62
+ $user_feedback_data->add_feedback_option(
63
+ new UserFeedbackOption(
64
+ 'have_comment',
65
+ '',
66
+ true,
67
+ __( 'Comment', 'flexible-shipping' )
68
+ )
69
+ );
70
 
71
+ return TrackerFactory::create_custom_tracker_with_null_sender( $user_feedback_data );
72
  }
73
 
74
  }
src/WPDesk/FS/TableRate/views/shipping-method-settings-rules.php CHANGED
@@ -71,7 +71,7 @@ $count_rules = 0;
71
  <?php
72
  $fs_pro_link = get_locale() === 'pl_PL' ? 'https://www.wpdesk.pl/sklep/flexible-shipping-pro-woocommerce/' : 'https://flexibleshipping.com/table-rate/';
73
 
74
- if ( ! in_array( 'flexible-shipping-pro/flexible-shipping-pro.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ):
75
  ?>
76
  <p><?php printf( __( 'Check %sFlexible Shipping PRO &rarr;%s to add advanced rules based on shipment classes, product/item count or additional handling fees/insurance.', 'flexible-shipping' ), '<a href="' . $fs_pro_link . '?utm_campaign=flexible-shipping&utm_source=user-site&utm_medium=link&utm_term=flexible-shipping-pro&utm_content=fs-shippingzone-addnew-rules" target="_blank">', '</a>' ); ?></p>
77
  <?php endif; ?>
71
  <?php
72
  $fs_pro_link = get_locale() === 'pl_PL' ? 'https://www.wpdesk.pl/sklep/flexible-shipping-pro-woocommerce/' : 'https://flexibleshipping.com/table-rate/';
73
 
74
+ if ( ! wpdesk_is_plugin_active( 'flexible-shipping-pro/flexible-shipping-pro.php' ) ):
75
  ?>
76
  <p><?php printf( __( 'Check %sFlexible Shipping PRO &rarr;%s to add advanced rules based on shipment classes, product/item count or additional handling fees/insurance.', 'flexible-shipping' ), '<a href="' . $fs_pro_link . '?utm_campaign=flexible-shipping&utm_source=user-site&utm_medium=link&utm_term=flexible-shipping-pro&utm_content=fs-shippingzone-addnew-rules" target="_blank">', '</a>' ); ?></p>
77
  <?php endif; ?>
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInitafb063eabe97243cd9e95aa0d780ed05::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit052cd55d6ab2bb805b5c19888ea1afd6::getLoader();
vendor/composer/autoload_classmap.php CHANGED
@@ -211,6 +211,7 @@ return array(
211
  'FSVendor\\WPDesk\\Tracker\\Deactivation\\Thickbox' => $baseDir . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-deactivation/src/WPDesk/Tracker/Deactivation/Thickbox.php',
212
  'FSVendor\\WPDesk\\Tracker\\Deactivation\\Tracker' => $baseDir . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-deactivation/src/WPDesk/Tracker/Deactivation/Tracker.php',
213
  'FSVendor\\WPDesk\\Tracker\\Deactivation\\TrackerFactory' => $baseDir . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-deactivation/src/WPDesk/Tracker/Deactivation/TrackerFactory.php',
 
214
  'FSVendor\\WPDesk\\Tracker\\UserFeedback\\AjaxUserFeedbackDataHandler' => $baseDir . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/AjaxUserFeedbackDataHandler.php',
215
  'FSVendor\\WPDesk\\Tracker\\UserFeedback\\Scripts' => $baseDir . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/Scripts.php',
216
  'FSVendor\\WPDesk\\Tracker\\UserFeedback\\Thickbox' => $baseDir . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/Thickbox.php',
@@ -296,6 +297,7 @@ return array(
296
  'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/DummyTest.php',
297
  'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
298
  'Psr\\Log\\Test\\TestLogger' => $vendorDir . '/psr/log/Psr/Log/Test/TestLogger.php',
 
299
  'WPDesk\\FS\\Rate\\FirstRateNotice' => $baseDir . '/classes/wp-wpdesk-fs-shipment/rate-notices/first-rate-notice.php',
300
  'WPDesk\\FS\\Rate\\Flexible_Shipping_Order_Counter' => $baseDir . '/classes/wp-wpdesk-fs-shipment/rate-notices/order-counter.php',
301
  'WPDesk\\FS\\Rate\\RateNotice' => $baseDir . '/classes/wp-wpdesk-fs-shipment/rate-notices/abstract-rate.php',
@@ -386,6 +388,7 @@ return array(
386
  'WPDesk_Flexible_Shipping_Shipping_Manifest_CPT' => $baseDir . '/classes/wp-wpdesk-fs-shipment/manifest/cpt-shipping-manifest.php',
387
  'WPDesk_Flexible_Shipping_Shorcode_Unit_Dimension' => $baseDir . '/classes/table-rate/class-shortcode-unit-dimension.php',
388
  'WPDesk_Flexible_Shipping_Shorcode_Unit_Weight' => $baseDir . '/classes/table-rate/class-shortcode-unit-weight.php',
 
389
  'WPDesk_Flexible_Shipping_Tracker' => $baseDir . '/classes/tracker/tracker.php',
390
  'WPDesk_Flexible_Shipping_Unable_To_Create_Tmp_File_Exception' => $baseDir . '/classes/wp-wpdesk-fs-shipment/exception/class-shipment-unable-to-create-tmp-file-exception.php',
391
  'WPDesk_Flexible_Shipping_Unable_To_Create_Tmp_Zip_File_Exception' => $baseDir . '/classes/wp-wpdesk-fs-shipment/exception/class-shipment-unable-to-create-tmp-zip-file-exception.php',
211
  'FSVendor\\WPDesk\\Tracker\\Deactivation\\Thickbox' => $baseDir . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-deactivation/src/WPDesk/Tracker/Deactivation/Thickbox.php',
212
  'FSVendor\\WPDesk\\Tracker\\Deactivation\\Tracker' => $baseDir . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-deactivation/src/WPDesk/Tracker/Deactivation/Tracker.php',
213
  'FSVendor\\WPDesk\\Tracker\\Deactivation\\TrackerFactory' => $baseDir . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-deactivation/src/WPDesk/Tracker/Deactivation/TrackerFactory.php',
214
+ 'FSVendor\\WPDesk\\Tracker\\Sender\\NullSender' => $baseDir . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/Sender/NullSender.php',
215
  'FSVendor\\WPDesk\\Tracker\\UserFeedback\\AjaxUserFeedbackDataHandler' => $baseDir . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/AjaxUserFeedbackDataHandler.php',
216
  'FSVendor\\WPDesk\\Tracker\\UserFeedback\\Scripts' => $baseDir . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/Scripts.php',
217
  'FSVendor\\WPDesk\\Tracker\\UserFeedback\\Thickbox' => $baseDir . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/Thickbox.php',
297
  'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/DummyTest.php',
298
  'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
299
  'Psr\\Log\\Test\\TestLogger' => $vendorDir . '/psr/log/Psr/Log/Test/TestLogger.php',
300
+ 'WPDesk\\FS\\Helpers\\ShippingMethod' => $baseDir . '/src/WPDesk/FS/Helpers/ShippingMethod.php',
301
  'WPDesk\\FS\\Rate\\FirstRateNotice' => $baseDir . '/classes/wp-wpdesk-fs-shipment/rate-notices/first-rate-notice.php',
302
  'WPDesk\\FS\\Rate\\Flexible_Shipping_Order_Counter' => $baseDir . '/classes/wp-wpdesk-fs-shipment/rate-notices/order-counter.php',
303
  'WPDesk\\FS\\Rate\\RateNotice' => $baseDir . '/classes/wp-wpdesk-fs-shipment/rate-notices/abstract-rate.php',
388
  'WPDesk_Flexible_Shipping_Shipping_Manifest_CPT' => $baseDir . '/classes/wp-wpdesk-fs-shipment/manifest/cpt-shipping-manifest.php',
389
  'WPDesk_Flexible_Shipping_Shorcode_Unit_Dimension' => $baseDir . '/classes/table-rate/class-shortcode-unit-dimension.php',
390
  'WPDesk_Flexible_Shipping_Shorcode_Unit_Weight' => $baseDir . '/classes/table-rate/class-shortcode-unit-weight.php',
391
+ 'WPDesk_Flexible_Shipping_Single_Label_File_Dispatcher' => $baseDir . '/classes/wp-wpdesk-fs-shipment/label/class-single-label-file-dispatcher.php',
392
  'WPDesk_Flexible_Shipping_Tracker' => $baseDir . '/classes/tracker/tracker.php',
393
  'WPDesk_Flexible_Shipping_Unable_To_Create_Tmp_File_Exception' => $baseDir . '/classes/wp-wpdesk-fs-shipment/exception/class-shipment-unable-to-create-tmp-file-exception.php',
394
  'WPDesk_Flexible_Shipping_Unable_To_Create_Tmp_Zip_File_Exception' => $baseDir . '/classes/wp-wpdesk-fs-shipment/exception/class-shipment-unable-to-create-tmp-zip-file-exception.php',
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInitafb063eabe97243cd9e95aa0d780ed05
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInitafb063eabe97243cd9e95aa0d780ed05
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInitafb063eabe97243cd9e95aa0d780ed05', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInitafb063eabe97243cd9e95aa0d780ed05', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInitafb063eabe97243cd9e95aa0d780ed05::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit052cd55d6ab2bb805b5c19888ea1afd6
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit052cd55d6ab2bb805b5c19888ea1afd6', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit052cd55d6ab2bb805b5c19888ea1afd6', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInit052cd55d6ab2bb805b5c19888ea1afd6::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInitafb063eabe97243cd9e95aa0d780ed05
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'W' =>
@@ -243,6 +243,7 @@ class ComposerStaticInitafb063eabe97243cd9e95aa0d780ed05
243
  'FSVendor\\WPDesk\\Tracker\\Deactivation\\Thickbox' => __DIR__ . '/../..' . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-deactivation/src/WPDesk/Tracker/Deactivation/Thickbox.php',
244
  'FSVendor\\WPDesk\\Tracker\\Deactivation\\Tracker' => __DIR__ . '/../..' . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-deactivation/src/WPDesk/Tracker/Deactivation/Tracker.php',
245
  'FSVendor\\WPDesk\\Tracker\\Deactivation\\TrackerFactory' => __DIR__ . '/../..' . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-deactivation/src/WPDesk/Tracker/Deactivation/TrackerFactory.php',
 
246
  'FSVendor\\WPDesk\\Tracker\\UserFeedback\\AjaxUserFeedbackDataHandler' => __DIR__ . '/../..' . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/AjaxUserFeedbackDataHandler.php',
247
  'FSVendor\\WPDesk\\Tracker\\UserFeedback\\Scripts' => __DIR__ . '/../..' . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/Scripts.php',
248
  'FSVendor\\WPDesk\\Tracker\\UserFeedback\\Thickbox' => __DIR__ . '/../..' . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/Thickbox.php',
@@ -328,6 +329,7 @@ class ComposerStaticInitafb063eabe97243cd9e95aa0d780ed05
328
  'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/DummyTest.php',
329
  'Psr\\Log\\Test\\LoggerInterfaceTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
330
  'Psr\\Log\\Test\\TestLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/TestLogger.php',
 
331
  'WPDesk\\FS\\Rate\\FirstRateNotice' => __DIR__ . '/../..' . '/classes/wp-wpdesk-fs-shipment/rate-notices/first-rate-notice.php',
332
  'WPDesk\\FS\\Rate\\Flexible_Shipping_Order_Counter' => __DIR__ . '/../..' . '/classes/wp-wpdesk-fs-shipment/rate-notices/order-counter.php',
333
  'WPDesk\\FS\\Rate\\RateNotice' => __DIR__ . '/../..' . '/classes/wp-wpdesk-fs-shipment/rate-notices/abstract-rate.php',
@@ -418,6 +420,7 @@ class ComposerStaticInitafb063eabe97243cd9e95aa0d780ed05
418
  'WPDesk_Flexible_Shipping_Shipping_Manifest_CPT' => __DIR__ . '/../..' . '/classes/wp-wpdesk-fs-shipment/manifest/cpt-shipping-manifest.php',
419
  'WPDesk_Flexible_Shipping_Shorcode_Unit_Dimension' => __DIR__ . '/../..' . '/classes/table-rate/class-shortcode-unit-dimension.php',
420
  'WPDesk_Flexible_Shipping_Shorcode_Unit_Weight' => __DIR__ . '/../..' . '/classes/table-rate/class-shortcode-unit-weight.php',
 
421
  'WPDesk_Flexible_Shipping_Tracker' => __DIR__ . '/../..' . '/classes/tracker/tracker.php',
422
  'WPDesk_Flexible_Shipping_Unable_To_Create_Tmp_File_Exception' => __DIR__ . '/../..' . '/classes/wp-wpdesk-fs-shipment/exception/class-shipment-unable-to-create-tmp-file-exception.php',
423
  'WPDesk_Flexible_Shipping_Unable_To_Create_Tmp_Zip_File_Exception' => __DIR__ . '/../..' . '/classes/wp-wpdesk-fs-shipment/exception/class-shipment-unable-to-create-tmp-zip-file-exception.php',
@@ -435,10 +438,10 @@ class ComposerStaticInitafb063eabe97243cd9e95aa0d780ed05
435
  public static function getInitializer(ClassLoader $loader)
436
  {
437
  return \Closure::bind(function () use ($loader) {
438
- $loader->prefixLengthsPsr4 = ComposerStaticInitafb063eabe97243cd9e95aa0d780ed05::$prefixLengthsPsr4;
439
- $loader->prefixDirsPsr4 = ComposerStaticInitafb063eabe97243cd9e95aa0d780ed05::$prefixDirsPsr4;
440
- $loader->fallbackDirsPsr4 = ComposerStaticInitafb063eabe97243cd9e95aa0d780ed05::$fallbackDirsPsr4;
441
- $loader->classMap = ComposerStaticInitafb063eabe97243cd9e95aa0d780ed05::$classMap;
442
 
443
  }, null, ClassLoader::class);
444
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit052cd55d6ab2bb805b5c19888ea1afd6
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'W' =>
243
  'FSVendor\\WPDesk\\Tracker\\Deactivation\\Thickbox' => __DIR__ . '/../..' . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-deactivation/src/WPDesk/Tracker/Deactivation/Thickbox.php',
244
  'FSVendor\\WPDesk\\Tracker\\Deactivation\\Tracker' => __DIR__ . '/../..' . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-deactivation/src/WPDesk/Tracker/Deactivation/Tracker.php',
245
  'FSVendor\\WPDesk\\Tracker\\Deactivation\\TrackerFactory' => __DIR__ . '/../..' . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-deactivation/src/WPDesk/Tracker/Deactivation/TrackerFactory.php',
246
+ 'FSVendor\\WPDesk\\Tracker\\Sender\\NullSender' => __DIR__ . '/../..' . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/Sender/NullSender.php',
247
  'FSVendor\\WPDesk\\Tracker\\UserFeedback\\AjaxUserFeedbackDataHandler' => __DIR__ . '/../..' . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/AjaxUserFeedbackDataHandler.php',
248
  'FSVendor\\WPDesk\\Tracker\\UserFeedback\\Scripts' => __DIR__ . '/../..' . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/Scripts.php',
249
  'FSVendor\\WPDesk\\Tracker\\UserFeedback\\Thickbox' => __DIR__ . '/../..' . '/vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/Thickbox.php',
329
  'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/DummyTest.php',
330
  'Psr\\Log\\Test\\LoggerInterfaceTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
331
  'Psr\\Log\\Test\\TestLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/TestLogger.php',
332
+ 'WPDesk\\FS\\Helpers\\ShippingMethod' => __DIR__ . '/../..' . '/src/WPDesk/FS/Helpers/ShippingMethod.php',
333
  'WPDesk\\FS\\Rate\\FirstRateNotice' => __DIR__ . '/../..' . '/classes/wp-wpdesk-fs-shipment/rate-notices/first-rate-notice.php',
334
  'WPDesk\\FS\\Rate\\Flexible_Shipping_Order_Counter' => __DIR__ . '/../..' . '/classes/wp-wpdesk-fs-shipment/rate-notices/order-counter.php',
335
  'WPDesk\\FS\\Rate\\RateNotice' => __DIR__ . '/../..' . '/classes/wp-wpdesk-fs-shipment/rate-notices/abstract-rate.php',
420
  'WPDesk_Flexible_Shipping_Shipping_Manifest_CPT' => __DIR__ . '/../..' . '/classes/wp-wpdesk-fs-shipment/manifest/cpt-shipping-manifest.php',
421
  'WPDesk_Flexible_Shipping_Shorcode_Unit_Dimension' => __DIR__ . '/../..' . '/classes/table-rate/class-shortcode-unit-dimension.php',
422
  'WPDesk_Flexible_Shipping_Shorcode_Unit_Weight' => __DIR__ . '/../..' . '/classes/table-rate/class-shortcode-unit-weight.php',
423
+ 'WPDesk_Flexible_Shipping_Single_Label_File_Dispatcher' => __DIR__ . '/../..' . '/classes/wp-wpdesk-fs-shipment/label/class-single-label-file-dispatcher.php',
424
  'WPDesk_Flexible_Shipping_Tracker' => __DIR__ . '/../..' . '/classes/tracker/tracker.php',
425
  'WPDesk_Flexible_Shipping_Unable_To_Create_Tmp_File_Exception' => __DIR__ . '/../..' . '/classes/wp-wpdesk-fs-shipment/exception/class-shipment-unable-to-create-tmp-file-exception.php',
426
  'WPDesk_Flexible_Shipping_Unable_To_Create_Tmp_Zip_File_Exception' => __DIR__ . '/../..' . '/classes/wp-wpdesk-fs-shipment/exception/class-shipment-unable-to-create-tmp-zip-file-exception.php',
438
  public static function getInitializer(ClassLoader $loader)
439
  {
440
  return \Closure::bind(function () use ($loader) {
441
+ $loader->prefixLengthsPsr4 = ComposerStaticInit052cd55d6ab2bb805b5c19888ea1afd6::$prefixLengthsPsr4;
442
+ $loader->prefixDirsPsr4 = ComposerStaticInit052cd55d6ab2bb805b5c19888ea1afd6::$prefixDirsPsr4;
443
+ $loader->fallbackDirsPsr4 = ComposerStaticInit052cd55d6ab2bb805b5c19888ea1afd6::$fallbackDirsPsr4;
444
+ $loader->classMap = ComposerStaticInit052cd55d6ab2bb805b5c19888ea1afd6::$classMap;
445
 
446
  }, null, ClassLoader::class);
447
  }
vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/composer.json CHANGED
@@ -31,9 +31,6 @@
31
  }
32
  },
33
  "autoload-dev": {
34
- "psr-4": {
35
- "FSVendor\\WPDesk\\Tracker\\UserFeedback\\": "src\/WPDesk\/Tracker\/UserFeedback\/"
36
- },
37
  "classmap": [
38
  "tests\/"
39
  ]
31
  }
32
  },
33
  "autoload-dev": {
 
 
 
34
  "classmap": [
35
  "tests\/"
36
  ]
vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/Sender/NullSender.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Null sender.
5
+ *
6
+ * @package WPDesk\Tracker\Sender
7
+ */
8
+ namespace FSVendor\WPDesk\Tracker\Sender;
9
+
10
+ /**
11
+ * Can send data to nowhere.
12
+ */
13
+ class NullSender implements \WPDesk_Tracker_Sender
14
+ {
15
+ /**
16
+ * Does nothing.
17
+ *
18
+ * @param array $payload .
19
+ *
20
+ * @return array|void
21
+ */
22
+ public function send_payload(array $payload)
23
+ {
24
+ // Do nothing
25
+ }
26
+ }
vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/AjaxUserFeedbackDataHandler.php CHANGED
@@ -22,9 +22,9 @@ class AjaxUserFeedbackDataHandler implements \FSVendor\WPDesk\PluginBuilder\Plug
22
  private $sender;
23
  /**
24
  * @param UserFeedbackData $user_feedback_data .
25
- * @param \WPDesk_Tracker_Sender|null $sender
26
  */
27
- public function __construct(\FSVendor\WPDesk\Tracker\UserFeedback\UserFeedbackData $user_feedback_data, $sender = null)
28
  {
29
  $this->user_feedback_data = $user_feedback_data;
30
  $this->sender = $sender;
@@ -34,7 +34,7 @@ class AjaxUserFeedbackDataHandler implements \FSVendor\WPDesk\PluginBuilder\Plug
34
  */
35
  public function hooks()
36
  {
37
- \add_action('wp_ajax_' . self::AJAX_ACTION . $this->user_feedback_data->get_thickbox_id(), array($this, 'handleAjaxRequest'));
38
  }
39
  /**
40
  * Prepare payload.
@@ -43,7 +43,7 @@ class AjaxUserFeedbackDataHandler implements \FSVendor\WPDesk\PluginBuilder\Plug
43
  *
44
  * @return array
45
  */
46
- private function preparePayload(array $request)
47
  {
48
  $payload = array('click_action' => 'user_feedback', self::FEEDBACK_ID => $this->user_feedback_data->get_thickbox_id(), 'selected_option' => $request[self::REQUEST_SELECTED_OPTION]);
49
  if (!empty($request[self::REQUEST_ADDITIONAL_INFO])) {
@@ -56,21 +56,19 @@ class AjaxUserFeedbackDataHandler implements \FSVendor\WPDesk\PluginBuilder\Plug
56
  *
57
  * @param array $payload
58
  */
59
- private function sendPayloadToWpdesk(array $payload)
60
  {
61
  $this->sender->send_payload($payload);
62
  }
63
  /**
64
  * Handle AJAX request.
65
  */
66
- public function handleAjaxRequest()
67
  {
68
  \check_ajax_referer(self::AJAX_ACTION . $this->user_feedback_data->get_thickbox_id());
69
  if (isset($_REQUEST[self::REQUEST_SELECTED_OPTION])) {
70
- $payload = $this->preparePayload($_REQUEST);
71
- if (null !== $this->sender) {
72
- $this->sendPayloadToWpdesk($this->preparePayload($_REQUEST));
73
- }
74
  \do_action('wpdesk_tracker_user_feedback_data_handled', $payload);
75
  }
76
  }
22
  private $sender;
23
  /**
24
  * @param UserFeedbackData $user_feedback_data .
25
+ * @param \WPDesk_Tracker_Sender $sender
26
  */
27
+ public function __construct(\FSVendor\WPDesk\Tracker\UserFeedback\UserFeedbackData $user_feedback_data, $sender)
28
  {
29
  $this->user_feedback_data = $user_feedback_data;
30
  $this->sender = $sender;
34
  */
35
  public function hooks()
36
  {
37
+ \add_action('wp_ajax_' . self::AJAX_ACTION . $this->user_feedback_data->get_thickbox_id(), array($this, 'handle_ajax_request'));
38
  }
39
  /**
40
  * Prepare payload.
43
  *
44
  * @return array
45
  */
46
+ private function prepare_payload(array $request)
47
  {
48
  $payload = array('click_action' => 'user_feedback', self::FEEDBACK_ID => $this->user_feedback_data->get_thickbox_id(), 'selected_option' => $request[self::REQUEST_SELECTED_OPTION]);
49
  if (!empty($request[self::REQUEST_ADDITIONAL_INFO])) {
56
  *
57
  * @param array $payload
58
  */
59
+ private function send_payload_to_wpdesk(array $payload)
60
  {
61
  $this->sender->send_payload($payload);
62
  }
63
  /**
64
  * Handle AJAX request.
65
  */
66
+ public function handle_ajax_request()
67
  {
68
  \check_ajax_referer(self::AJAX_ACTION . $this->user_feedback_data->get_thickbox_id());
69
  if (isset($_REQUEST[self::REQUEST_SELECTED_OPTION])) {
70
+ $payload = $this->prepare_payload($_REQUEST);
71
+ $this->send_payload_to_wpdesk($this->prepare_payload($_REQUEST));
 
 
72
  \do_action('wpdesk_tracker_user_feedback_data_handled', $payload);
73
  }
74
  }
vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/Scripts.php CHANGED
@@ -12,7 +12,7 @@ class Scripts
12
  * Constructor.
13
  *
14
  * @param UserFeedbackData $user_feedback_data .
15
- * @param string|null $view_file .
16
  */
17
  public function __construct(\FSVendor\WPDesk\Tracker\UserFeedback\UserFeedbackData $user_feedback_data, $view_file = null)
18
  {
12
  * Constructor.
13
  *
14
  * @param UserFeedbackData $user_feedback_data .
15
+ * @param string|null $view_file If null given default scrips file is used.
16
  */
17
  public function __construct(\FSVendor\WPDesk\Tracker\UserFeedback\UserFeedbackData $user_feedback_data, $view_file = null)
18
  {
vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/Thickbox.php CHANGED
@@ -12,7 +12,7 @@ class Thickbox
12
  * Constructor.
13
  *
14
  * @param UserFeedbackData $user_feedback_data .
15
- * @param string|null $view_file .
16
  */
17
  public function __construct(\FSVendor\WPDesk\Tracker\UserFeedback\UserFeedbackData $user_feedback_data, $view_file = null)
18
  {
12
  * Constructor.
13
  *
14
  * @param UserFeedbackData $user_feedback_data .
15
+ * @param string|null $view_file If null given default thickbox file is used.
16
  */
17
  public function __construct(\FSVendor\WPDesk\Tracker\UserFeedback\UserFeedbackData $user_feedback_data, $view_file = null)
18
  {
vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/Tracker.php CHANGED
@@ -44,8 +44,8 @@ class Tracker implements \FSVendor\WPDesk\PluginBuilder\Plugin\Hookable
44
  */
45
  public function hooks()
46
  {
47
- \add_action('admin_print_footer_scripts-' . $this->user_feedback_data->get_hook_suffix(), [$this, 'printUserFeedbackScripts']);
48
- \add_action('admin_footer-' . $this->user_feedback_data->get_hook_suffix(), [$this, 'printUserFeedbackThickbox']);
49
  \add_action('admin_enqueue_scripts', [$this, 'enqueue_thickbox']);
50
  $this->ajax->hooks();
51
  }
@@ -60,15 +60,15 @@ class Tracker implements \FSVendor\WPDesk\PluginBuilder\Plugin\Hookable
60
  /**
61
  * Print user feedback scripts.
62
  */
63
- public function printUserFeedbackScripts()
64
  {
65
- echo $this->scripts->getContent();
66
  }
67
  /**
68
  * Print user feedback thickbox.
69
  */
70
- public function printUserFeedbackThickbox()
71
  {
72
- echo $this->thickbox->getContent();
73
  }
74
  }
44
  */
45
  public function hooks()
46
  {
47
+ \add_action('admin_print_footer_scripts-' . $this->user_feedback_data->get_hook_suffix(), [$this, 'print_user_feedback_scripts']);
48
+ \add_action('admin_footer-' . $this->user_feedback_data->get_hook_suffix(), [$this, 'print_user_feedback_thickbox']);
49
  \add_action('admin_enqueue_scripts', [$this, 'enqueue_thickbox']);
50
  $this->ajax->hooks();
51
  }
60
  /**
61
  * Print user feedback scripts.
62
  */
63
+ public function print_user_feedback_scripts()
64
  {
65
+ echo $this->scripts->get_content();
66
  }
67
  /**
68
  * Print user feedback thickbox.
69
  */
70
+ public function print_user_feedback_thickbox()
71
  {
72
+ echo $this->thickbox->get_content();
73
  }
74
  }
vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/TrackerFactory.php CHANGED
@@ -2,6 +2,7 @@
2
 
3
  namespace FSVendor\WPDesk\Tracker\UserFeedback;
4
 
 
5
  /**
6
  * Can create tracker.
7
  */
@@ -11,13 +12,13 @@ class TrackerFactory
11
  * Create custom tracker.
12
  *
13
  * @param PluginData $user_feedback_data .
14
- * @param Scripts|null $scripts .
15
- * @param Thickbox|null $thickbox .
16
  * @param AjaxUserFeedbackDataHandler|null $ajax
17
  *
18
  * @return Tracker
19
  */
20
- public static function createCustomTracker(\FSVendor\WPDesk\Tracker\UserFeedback\UserFeedbackData $user_feedback_data, $scripts = null, $thickbox = null, $ajax = null)
21
  {
22
  if (empty($scripts)) {
23
  $scripts = new \FSVendor\WPDesk\Tracker\UserFeedback\Scripts($user_feedback_data);
@@ -43,7 +44,7 @@ class TrackerFactory
43
  *
44
  * @return Tracker
45
  */
46
- public static function createCustomTrackerWithoutSender(\FSVendor\WPDesk\Tracker\UserFeedback\UserFeedbackData $user_feedback_data, $scripts = null, $thickbox = null, $ajax = null)
47
  {
48
  if (empty($scripts)) {
49
  $scripts = new \FSVendor\WPDesk\Tracker\UserFeedback\Scripts($user_feedback_data);
@@ -52,7 +53,7 @@ class TrackerFactory
52
  $thickbox = new \FSVendor\WPDesk\Tracker\UserFeedback\Thickbox($user_feedback_data);
53
  }
54
  if (empty($ajax)) {
55
- $ajax = new \FSVendor\WPDesk\Tracker\UserFeedback\AjaxUserFeedbackDataHandler($user_feedback_data);
56
  }
57
  return new \FSVendor\WPDesk\Tracker\UserFeedback\Tracker($user_feedback_data, $scripts, $thickbox, $ajax);
58
  }
2
 
3
  namespace FSVendor\WPDesk\Tracker\UserFeedback;
4
 
5
+ use FSVendor\WPDesk\Tracker\Sender\NullSender;
6
  /**
7
  * Can create tracker.
8
  */
12
  * Create custom tracker.
13
  *
14
  * @param PluginData $user_feedback_data .
15
+ * @param Scripts|null $scripts If null given default scrips file is used.
16
+ * @param Thickbox|null $thickbox If null given default thickbox file is used.
17
  * @param AjaxUserFeedbackDataHandler|null $ajax
18
  *
19
  * @return Tracker
20
  */
21
+ public static function create_custom_tracker(\FSVendor\WPDesk\Tracker\UserFeedback\UserFeedbackData $user_feedback_data, $scripts = null, $thickbox = null, $ajax = null)
22
  {
23
  if (empty($scripts)) {
24
  $scripts = new \FSVendor\WPDesk\Tracker\UserFeedback\Scripts($user_feedback_data);
44
  *
45
  * @return Tracker
46
  */
47
+ public static function create_custom_tracker_with_null_sender(\FSVendor\WPDesk\Tracker\UserFeedback\UserFeedbackData $user_feedback_data, $scripts = null, $thickbox = null, $ajax = null)
48
  {
49
  if (empty($scripts)) {
50
  $scripts = new \FSVendor\WPDesk\Tracker\UserFeedback\Scripts($user_feedback_data);
53
  $thickbox = new \FSVendor\WPDesk\Tracker\UserFeedback\Thickbox($user_feedback_data);
54
  }
55
  if (empty($ajax)) {
56
+ $ajax = new \FSVendor\WPDesk\Tracker\UserFeedback\AjaxUserFeedbackDataHandler($user_feedback_data, new \FSVendor\WPDesk\Tracker\Sender\NullSender());
57
  }
58
  return new \FSVendor\WPDesk\Tracker\UserFeedback\Tracker($user_feedback_data, $scripts, $thickbox, $ajax);
59
  }
vendor_prefixed/wpdesk/wp-wpdesk-tracker-user-feedback/src/WPDesk/Tracker/UserFeedback/UserFeedbackContent.php CHANGED
@@ -20,7 +20,7 @@ trait UserFeedbackContent
20
  *
21
  * @return string
22
  */
23
- public function getContent()
24
  {
25
  $thickbox_id = $this->user_feedback_data->get_thickbox_id();
26
  $thickbox_title = $this->user_feedback_data->get_thickbox_title();
20
  *
21
  * @return string
22
  */
23
+ public function get_content()
24
  {
25
  $thickbox_id = $this->user_feedback_data->get_thickbox_id();
26
  $thickbox_title = $this->user_feedback_data->get_thickbox_title();