manifest
8 years ago
settings
8 years ago
shipment
8 years ago
views
8 years ago
wpdesk
8 years ago
admin-notices.php
8 years ago
bulk-actions.php
8 years ago
flexible-shipping-export.php
8 years ago
flexible-shipping-factory.php
8 years ago
flexible-shipping-plugin.php
8 years ago
multicurrency.php
8 years ago
multilingual.php
8 years ago
order-add-shipping.php
8 years ago
shipping-method-info.php
8 years ago
shipping-method.php
8 years ago
tracker.php
8 years ago
tracker.php
252 lines
| 1 | <?php |
| 2 | |
| 3 | if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly |
| 4 | |
| 5 | if ( ! class_exists( 'WPDesk_Flexible_Shipping_Tracker' ) ) { |
| 6 | class WPDesk_Flexible_Shipping_Tracker { |
| 7 | |
| 8 | public static $script_version = '11'; |
| 9 | |
| 10 | public function __construct() { |
| 11 | $this->hooks(); |
| 12 | } |
| 13 | |
| 14 | public function hooks() { |
| 15 | add_filter( 'wpdesk_tracker_data', array( $this, 'wpdesk_tracker_data_flexible_shipping' ), 11 ); |
| 16 | add_filter( 'wpdesk_tracker_notice_screens', array( $this, 'wpdesk_tracker_notice_screens' ) ); |
| 17 | add_filter( 'wpdesk_track_plugin_deactivation', array( $this, 'wpdesk_track_plugin_deactivation' ) ); |
| 18 | |
| 19 | add_filter( 'plugin_action_links_flexible-shipping/flexible-shipping.php', array( $this, 'plugin_action_links' ) ); |
| 20 | add_action( 'activated_plugin', array( $this, 'activated_plugin' ), 10, 2 ); |
| 21 | } |
| 22 | |
| 23 | public function wpdesk_track_plugin_deactivation( $plugins ) { |
| 24 | $plugins['flexible-shipping/flexible-shipping.php'] = 'flexible-shipping/flexible-shipping.php'; |
| 25 | return $plugins; |
| 26 | } |
| 27 | |
| 28 | public function wpdesk_tracker_data_flexible_shipping( $data ) { |
| 29 | $all_shipping_methods = flexible_shipping_get_all_shipping_methods(); |
| 30 | |
| 31 | $flexible_shipping = $all_shipping_methods['flexible_shipping']; |
| 32 | |
| 33 | $flexible_shipping_rates = $flexible_shipping->get_all_rates(); |
| 34 | $data['flexible_shipping'] = array(); |
| 35 | $data['flexible_shipping']['total_shipping_methods'] = 0; |
| 36 | $data['flexible_shipping']['avg_rules'] = 0; |
| 37 | $data['flexible_shipping']['max_rules'] = 0; |
| 38 | $data['flexible_shipping']['integrations'] = array(); |
| 39 | $data['flexible_shipping']['free_shipping_requires'] = array(); |
| 40 | $data['flexible_shipping']['calculation_methods'] = array(); |
| 41 | $data['flexible_shipping']['based_on'] = array(); |
| 42 | $data['flexible_shipping']['shipping_class_option'] = array(); |
| 43 | $data['flexible_shipping']['method_description_count'] = 0; |
| 44 | $data['flexible_shipping']['free_shipping_label_count'] = 0; |
| 45 | $data['flexible_shipping']['max_cost_count'] = 0; |
| 46 | $data['flexible_shipping']['visibility_count'] = 0; |
| 47 | $data['flexible_shipping']['default_count'] = 0; |
| 48 | |
| 49 | $data['flexible_shipping']['additional_cost_count'] = 0; |
| 50 | |
| 51 | $data['flexible_shipping']['min_count'] = 0; |
| 52 | $data['flexible_shipping']['max_count'] = 0; |
| 53 | |
| 54 | $data['flexible_shipping']['cost_per_order_count'] = 0; |
| 55 | $data['flexible_shipping']['stop_count'] = 0; |
| 56 | $data['flexible_shipping']['cancel_count'] = 0; |
| 57 | foreach ( $flexible_shipping_rates as $flexible_shipping_rate ) { |
| 58 | |
| 59 | $data['flexible_shipping']['total_shipping_methods']++; |
| 60 | |
| 61 | $data['flexible_shipping']['avg_rules'] += count( $flexible_shipping_rate['method_rules'] ); |
| 62 | |
| 63 | if ( count( $flexible_shipping_rate['method_rules'] ) > $data['flexible_shipping']['max_rules'] ) { |
| 64 | $data['flexible_shipping']['max_rules'] = count( $flexible_shipping_rate['method_rules'] ); |
| 65 | } |
| 66 | |
| 67 | if ( empty( $flexible_shipping_rate['method_integration'] ) ) { |
| 68 | $flexible_shipping_rate['method_integration'] = 'none'; |
| 69 | } |
| 70 | if ( empty( $data['flexible_shipping']['integrations'][$flexible_shipping_rate['method_integration']] ) ) { |
| 71 | $data['flexible_shipping']['integrations'][$flexible_shipping_rate['method_integration']] = 0; |
| 72 | } |
| 73 | $data['flexible_shipping']['integrations'][$flexible_shipping_rate['method_integration']]++; |
| 74 | |
| 75 | if ( !empty( $flexible_shipping_rate['method_free_shipping_requires'] ) ) { |
| 76 | if ( empty( $data['flexible_shipping']['free_shipping_requires'][ $flexible_shipping_rate['method_free_shipping_requires'] ] ) ) { |
| 77 | $data['flexible_shipping']['free_shipping_requires'][ $flexible_shipping_rate['method_free_shipping_requires'] ] = 0; |
| 78 | } |
| 79 | $data['flexible_shipping']['free_shipping_requires'][ $flexible_shipping_rate['method_free_shipping_requires'] ] ++; |
| 80 | } |
| 81 | |
| 82 | if ( empty( $data['flexible_shipping']['calculation_methods'][$flexible_shipping_rate['method_calculation_method']] ) ) { |
| 83 | $data['flexible_shipping']['calculation_methods'][$flexible_shipping_rate['method_calculation_method']] = 0; |
| 84 | } |
| 85 | $data['flexible_shipping']['calculation_methods'][$flexible_shipping_rate['method_calculation_method']]++; |
| 86 | |
| 87 | if ( !empty( $flexible_shipping_rate['method_description'] ) ) { |
| 88 | $data['flexible_shipping']['method_description_count']++; |
| 89 | } |
| 90 | |
| 91 | if ( !empty( $flexible_shipping_rate['method_free_shipping_label'] ) ) { |
| 92 | $data['flexible_shipping']['free_shipping_label_count']++; |
| 93 | } |
| 94 | |
| 95 | if ( !empty( $flexible_shipping_rate['method_max_cost'] ) ) { |
| 96 | $data['flexible_shipping']['max_cost_count']++; |
| 97 | } |
| 98 | |
| 99 | if ( !empty( $flexible_shipping_rate['method_visibility'] ) && $flexible_shipping_rate['method_visibility'] != 'no' ) { |
| 100 | $data['flexible_shipping']['visibility_count']++; |
| 101 | } |
| 102 | |
| 103 | if ( !empty( $flexible_shipping_rate['method_default'] ) && $flexible_shipping_rate['method_default'] != 'no' ) { |
| 104 | $data['flexible_shipping']['default_count']++; |
| 105 | } |
| 106 | |
| 107 | foreach ( $flexible_shipping_rate['method_rules'] as $method_rule ) { |
| 108 | if ( empty( $data['flexible_shipping']['based_on'][$method_rule['based_on']] ) ) { |
| 109 | $data['flexible_shipping']['based_on'][$method_rule['based_on']] = 0; |
| 110 | } |
| 111 | $data['flexible_shipping']['based_on'][$method_rule['based_on']]++; |
| 112 | |
| 113 | if ( !empty( $method_rule['shipping_class'] ) ) { |
| 114 | $shipping_class = $method_rule['shipping_class']; |
| 115 | if ( !in_array( $shipping_class, array( 'all', 'any', 'none' ) ) ) { |
| 116 | $shipping_class = 'shipping_class'; |
| 117 | } |
| 118 | if ( empty( $data['flexible_shipping']['shipping_class_option'][$shipping_class] ) ) { |
| 119 | $data['flexible_shipping']['shipping_class_option'][$shipping_class] = 0; |
| 120 | } |
| 121 | $data['flexible_shipping']['shipping_class_option'][$shipping_class]++; |
| 122 | } |
| 123 | |
| 124 | if ( !empty( $method_rule['cost_additional'] ) ) { |
| 125 | $data['flexible_shipping']['additional_cost_count']++; |
| 126 | } |
| 127 | |
| 128 | if ( !empty( $method_rule['min'] ) ) { |
| 129 | $data['flexible_shipping']['min_count']++; |
| 130 | } |
| 131 | |
| 132 | if ( !empty( $method_rule['max'] ) ) { |
| 133 | $data['flexible_shipping']['max_count']++; |
| 134 | } |
| 135 | |
| 136 | if ( !empty( $method_rule['cost_per_order'] ) ) { |
| 137 | $data['flexible_shipping']['cost_per_order_count']++; |
| 138 | } |
| 139 | |
| 140 | if ( !empty( $method_rule['stop'] ) ) { |
| 141 | $data['flexible_shipping']['stop_count']++; |
| 142 | } |
| 143 | |
| 144 | if ( !empty( $method_rule['cancel'] ) ) { |
| 145 | $data['flexible_shipping']['cancel_count']++; |
| 146 | } |
| 147 | |
| 148 | } |
| 149 | |
| 150 | } |
| 151 | if ( $data['flexible_shipping']['total_shipping_methods'] != 0 ) { |
| 152 | $data['flexible_shipping']['avg_rules'] = $data['flexible_shipping']['avg_rules'] / $data['flexible_shipping']['total_shipping_methods']; |
| 153 | } |
| 154 | return $data; |
| 155 | } |
| 156 | |
| 157 | public function wpdesk_tracker_notice_screens( $screens ) { |
| 158 | $current_screen = get_current_screen(); |
| 159 | if ( $current_screen->id == 'woocommerce_page_wc-settings' ) { |
| 160 | if ( isset( $_GET['tab'] ) && $_GET['tab'] == 'shipping' ) { |
| 161 | $screens[] = $current_screen->id; |
| 162 | } |
| 163 | } |
| 164 | return $screens; |
| 165 | } |
| 166 | |
| 167 | public function plugin_action_links( $links ) { |
| 168 | if ( !wpdesk_tracker_enabled() || apply_filters( 'wpdesk_tracker_do_not_ask', false ) ) { |
| 169 | return $links; |
| 170 | } |
| 171 | $options = get_option('wpdesk_helper_options', array() ); |
| 172 | if ( !is_array( $options ) ) { |
| 173 | $options = array(); |
| 174 | } |
| 175 | if ( empty( $options['wpdesk_tracker_agree'] ) ) { |
| 176 | $options['wpdesk_tracker_agree'] = '0'; |
| 177 | } |
| 178 | $plugin_links = array(); |
| 179 | if ( $options['wpdesk_tracker_agree'] == '0' ) { |
| 180 | $opt_in_link = admin_url( 'admin.php?page=wpdesk_tracker&plugin=flexible-shipping/flexible-shipping.php' ); |
| 181 | $plugin_links[] = '<a href="' . $opt_in_link . '">' . __( 'Opt-in', 'flexible-shipping' ) . '</a>'; |
| 182 | } |
| 183 | else { |
| 184 | $opt_in_link = admin_url( 'plugins.php?wpdesk_tracker_opt_out=1&plugin=flexible-shipping/flexible-shipping.php' ); |
| 185 | $plugin_links[] = '<a href="' . $opt_in_link . '">' . __( 'Opt-out', 'flexible-shipping' ) . '</a>'; |
| 186 | } |
| 187 | return array_merge( $plugin_links, $links ); |
| 188 | } |
| 189 | |
| 190 | |
| 191 | public function activated_plugin( $plugin, $network_wide ) { |
| 192 | if ( $network_wide ) { |
| 193 | return; |
| 194 | } |
| 195 | if ( defined( 'WP_CLI' ) && WP_CLI ) { |
| 196 | return; |
| 197 | } |
| 198 | if ( !wpdesk_tracker_enabled() ) { |
| 199 | return; |
| 200 | } |
| 201 | if ( $plugin == 'flexible-shipping/flexible-shipping.php' ) { |
| 202 | $options = get_option('wpdesk_helper_options', array() ); |
| 203 | if ( empty( $options ) ) { |
| 204 | $options = array(); |
| 205 | } |
| 206 | if ( empty( $options['wpdesk_tracker_agree'] ) ) { |
| 207 | $options['wpdesk_tracker_agree'] = '0'; |
| 208 | } |
| 209 | $wpdesk_tracker_skip_plugin = get_option( 'wpdesk_tracker_skip_flexible_shipping', '0' ); |
| 210 | if ( $options['wpdesk_tracker_agree'] == '0' && $wpdesk_tracker_skip_plugin == '0' ) { |
| 211 | update_option( 'wpdesk_tracker_notice', '1' ); |
| 212 | update_option( 'wpdesk_tracker_skip_flexible_shipping', '1' ); |
| 213 | if ( !apply_filters( 'wpdesk_tracker_do_not_ask', false ) ) { |
| 214 | wp_redirect( admin_url( 'admin.php?page=wpdesk_tracker&plugin=flexible-shipping/flexible-shipping.php' ) ); |
| 215 | exit; |
| 216 | } |
| 217 | } |
| 218 | } |
| 219 | } |
| 220 | |
| 221 | |
| 222 | } |
| 223 | |
| 224 | new WPDesk_Flexible_Shipping_Tracker(); |
| 225 | |
| 226 | } |
| 227 | |
| 228 | if ( !function_exists( 'wpdesk_activated_plugin_activation_date' ) ) { |
| 229 | function wpdesk_activated_plugin_activation_date( $plugin, $network_wide ) { |
| 230 | $option_name = 'plugin_activation_' . $plugin; |
| 231 | $activation_date = get_option( $option_name, '' ); |
| 232 | if ( $activation_date == '' ) { |
| 233 | $activation_date = current_time( 'mysql' ); |
| 234 | update_option( $option_name, $activation_date ); |
| 235 | } |
| 236 | } |
| 237 | add_action( 'activated_plugin', 'wpdesk_activated_plugin_activation_date', 10, 2 ); |
| 238 | } |
| 239 | |
| 240 | if ( !function_exists( 'wpdesk_tracker_enabled' ) ) { |
| 241 | function wpdesk_tracker_enabled() { |
| 242 | $tracker_enabled = true; |
| 243 | if ( !empty( $_SERVER['SERVER_ADDR'] ) && $_SERVER['SERVER_ADDR'] == '127.0.0.1' ) { |
| 244 | $tracker_enabled = false; |
| 245 | } |
| 246 | return apply_filters( 'wpdesk_tracker_enabled', $tracker_enabled ); |
| 247 | // add_filter( 'wpdesk_tracker_enabled', '__return_true' ); |
| 248 | // add_filter( 'wpdesk_tracker_do_not_ask', '__return_true' ); |
| 249 | } |
| 250 | } |
| 251 | |
| 252 |