PluginProbe ʕ •ᴥ•ʔ
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping / 6.10.0
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping v6.10.0
6.10.0 6.9.1 6.9.0 6.8.1 6.8.0 6.7.4 6.7.3 6.7.2 6.7.0 4.21.7 4.22.0 4.22.1 4.23.0 4.23.1 4.23.2 4.23.3 4.24.0 4.24.1 4.24.10 4.24.11 4.24.12 4.24.13 4.24.14 4.24.15 4.24.16 4.24.17 4.24.18 4.24.19 4.24.2 4.24.4 4.24.6 4.24.7 4.24.8 4.24.9 4.25.0 4.25.1 4.25.2 4.25.4 4.25.5 4.25.6 4.25.7 4.25.8 4.3.0 4.3.1 4.4.0 4.4.1 4.5.0 4.5.1 4.6.0 4.6.1 4.7.0 4.7.1 4.7.2 4.8.0 4.8.1 4.8.3 4.8.4 4.8.5 4.9.0 5.0.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.0.9 5.1.0 5.1.1 5.1.2 5.1.3 5.2.0 5.3.0 5.3.1 5.3.3 5.3.4 5.3.5 6.0.0 6.1.0 6.1.1 6.1.2 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.3.0 trunk 6.4.0 1.4 6.4.1 1.4.1 6.4.2 1.5 6.4.3 1.6 6.4.5 1.6.1 6.5.0 1.6.2 6.5.1 1.7 6.5.2 1.8 6.5.3 1.9 6.5.4 1.9.1 6.5.5 1.9.10 6.5.6 1.9.11 6.5.7 1.9.12 6.5.8 1.9.2 6.6.0 1.9.3 6.6.1 1.9.4 6.6.2 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0 2.0.1 2.1 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.6 3.0.7 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.10.0 3.11.0 3.11.1 3.11.2 3.11.3 3.11.4 3.12.0 3.13.0 3.14.0 3.14.1 3.14.2 3.14.3 3.14.4 3.15.0 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.2.0 3.3.1 3.3.10 3.3.11 3.3.12 3.3.13 3.3.14 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4.0 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.8.0 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.15 3.9.16 3.9.17 3.9.18 3.9.19 3.9.2 3.9.20 3.9.21 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.9 4.0.0 4.0.1 4.0.10 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.11.0 4.11.1 4.11.2 4.11.3 4.11.4 4.11.5 4.11.6 4.11.7 4.11.8 4.11.9 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.14.0 4.14.1 4.14.2 4.15.0 4.16.0 4.16.1 4.16.2 4.17.0 4.18.0 4.18.1 4.18.2 4.18.3 4.18.4 4.18.5 4.18.6 4.19.0 4.19.1 4.2.0 4.20.0 4.20.1 4.20.2 4.20.3 4.21.0 4.21.1 4.21.2 4.21.3 4.21.4 4.21.5
flexible-shipping / src / WPDesk / FS / TableRate / ShippingMethod / Convert / ConvertTracker.php
flexible-shipping / src / WPDesk / FS / TableRate / ShippingMethod / Convert Last commit date
views 3 days ago ConvertAction.php 3 days ago ConvertNotice.php 3 days ago ConvertTracker.php 3 days ago
ConvertTracker.php
138 lines
1 <?php
2 /**
3 * Class ConvertTracker
4 *
5 * @package WPDesk\FS\TableRate\ShippingMethod\Convert
6 */
7
8 namespace WPDesk\FS\TableRate\ShippingMethod\Convert;
9
10 use FSVendor\WPDesk\PluginBuilder\Plugin\Hookable;
11 use WC_Shipping_Zones;
12 use WPDesk_Flexible_Shipping;
13
14 /**
15 * Tracking of convert usages.
16 */
17 class ConvertTracker implements Hookable {
18 const OPTION_FIRST = 'flexible_shipping_convert_first';
19 const OPTION_AGAIN = 'flexible_shipping_convert_again';
20 const OPTION_DELETED = 'flexible_shipping_convert_deleted';
21
22 const PRIORYTY_AFTER_FS_TRACKER = 12;
23
24 /**
25 * @var array .
26 */
27 private $to_delete_methods = array();
28
29 /**
30 * Hooks.
31 */
32 public function hooks() {
33 add_filter( 'wpdesk_tracker_data', array( $this, 'add_tracking_data' ), self::PRIORYTY_AFTER_FS_TRACKER );
34
35 // Trackers.
36 add_action( 'woocommerce_shipping_zone_method_deleted', array( $this, 'track_deleted_method' ) );
37 add_action( 'flexible-shipping/group-method/converted-method', array( $this, 'track_convert_method' ) );
38
39 // Prepare before tracking.
40 add_action(
41 'wp_ajax_woocommerce_shipping_zone_methods_save_changes',
42 array(
43 $this,
44 'check_deleted_methods',
45 ),
46 5
47 );
48 }
49
50 /**
51 * Track running of converting.
52 */
53 public function track_convert_method() {
54 $converting_again = filter_input( INPUT_GET, 'converting_again' );
55
56 $this->update_count( $converting_again ? self::OPTION_AGAIN : self::OPTION_FIRST );
57 }
58
59 /**
60 * Check if FS Group has been deleted.
61 */
62 public function check_deleted_methods() {
63 if ( ! isset( $_POST['wc_shipping_zones_nonce'], $_POST['zone_id'], $_POST['changes'] ) ) {
64 return;
65 }
66
67 if ( ! wp_verify_nonce( wp_unslash( $_POST['wc_shipping_zones_nonce'] ), 'wc_shipping_zones_nonce' ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
68 return;
69 }
70
71 if ( ! current_user_can( 'manage_woocommerce' ) ) {
72 return;
73 }
74
75 $changes = wp_unslash( $_POST['changes'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
76
77 if ( ! isset( $changes['methods'] ) ) {
78 return;
79 }
80
81 foreach ( $changes['methods'] as $instance_id => $data ) {
82 if ( ! isset( $data['deleted'] ) ) {
83 continue;
84 }
85
86 $shipping_method = WC_Shipping_Zones::get_shipping_method( $instance_id );
87
88 if ( ! $shipping_method instanceof WPDesk_Flexible_Shipping ) {
89 continue;
90 }
91
92 $this->to_delete_methods[] = $instance_id;
93 }
94 }
95
96 /**
97 * @param int $instance_id .
98 */
99 public function track_deleted_method( $instance_id ) {
100 if ( ! in_array( $instance_id, $this->to_delete_methods ) ) {
101 return;
102 }
103
104 $this->update_count( self::OPTION_DELETED );
105 }
106
107 /**
108 * @param array $data .
109 *
110 * @return array
111 */
112 public function add_tracking_data( $data ) {
113 $data['flexible_shipping']['convert'] = $this->prepare_data();
114
115 return $data;
116 }
117
118 /**
119 * @return array
120 */
121 private function prepare_data() {
122 return array(
123 'first' => (int) get_option( self::OPTION_FIRST, 0 ),
124 'again' => (int) get_option( self::OPTION_AGAIN, 0 ),
125 'deleted' => (int) get_option( self::OPTION_DELETED, 0 ),
126 );
127 }
128
129 /**
130 * Update option count.
131 *
132 * @param string $option .
133 */
134 private function update_count( $option ) {
135 update_option( $option, (int) get_option( $option, 0 ) + 1 );
136 }
137 }
138