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 / ConvertNotice.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
ConvertNotice.php
206 lines
1 <?php
2 /**
3 * Class ConvertNotice
4 *
5 * @package WPDesk\FS\TableRate\ShippingMethod\Convert
6 */
7
8 namespace WPDesk\FS\TableRate\ShippingMethod\Convert;
9
10 use FSVendor\WPDesk\Notice\Notice;
11 use FSVendor\WPDesk\PluginBuilder\Plugin\Hookable;
12 use WC_Shipping_Method;
13 use WC_Shipping_Zones;
14 use WPDesk_Flexible_Shipping;
15
16 /**
17 * Display admin notices.
18 */
19 class ConvertNotice implements Hookable {
20 /**
21 * Hooks.
22 */
23 public function hooks() {
24 add_action( 'woocommerce_settings_shipping', array( $this, 'add_admin_notice' ) );
25 }
26
27 /**
28 * Add admin notices.
29 */
30 public function add_admin_notice() {
31 $this->display_required_convert_message();
32 $this->display_success_converted_message();
33 }
34
35 /**
36 * @return bool
37 */
38 private function is_limited_notice_width() {
39 return ! wpdesk_is_plugin_active( 'flexible-shipping-pro/flexible-shipping-pro.php' ) || ! wpdesk_is_plugin_active( 'flexible-shipping-import-export/flexible-shipping-import-export.php' );
40 }
41
42 /**
43 * Display notice on shipping method page.
44 */
45 private function display_required_convert_message() {
46 $zone_id = filter_input( INPUT_GET, 'zone_id', FILTER_VALIDATE_INT );
47 $instance_id = filter_input( INPUT_GET, 'instance_id', FILTER_VALIDATE_INT );
48
49 if ( $zone_id && ! $instance_id ) {
50 return;
51 }
52
53 /** @var WPDesk_Flexible_Shipping $shipping_method */
54 $shipping_method = WC_Shipping_Zones::get_shipping_method( $instance_id );
55
56 if ( ! $shipping_method instanceof WPDesk_Flexible_Shipping ) {
57 return;
58 }
59
60 $convert_url = $this->get_convert_url( $instance_id );
61
62 $is_limited_notice_width = $this->is_limited_notice_width();
63
64 if ( $shipping_method->is_converted() ) {
65 $convert_url = add_query_arg( 'converting_again', 'true', $convert_url );
66
67 $this->add_notice(
68 sprintf(
69 // Translators: URL.
70 __( 'Flexible Shipping group method you are currently viewing has been converted to its new single version and deactivated for safety reasons. Once you make sure everything was converted properly, you can safely delete this group method. If you notice any discrepancies please %1$srun the conversion process once again%2$s.%3$sIf you use any custom functions or plugins targeting the specific shipping methods based on their IDs, e.g. %4$sFlexible Checkout Fields PRO%5$s, %6$sActive Payments%7$s, %8$sShopMagic%9$s or similar, please re-check their configuration in order to maintain their proper functioning after the conversion.', 'flexible-shipping' ),
71 '<a href="' . esc_url( $convert_url ) . '">',
72 '</a>',
73 '<br/>',
74 '<a href="' . esc_url( $this->get_admin_url_fsf_pro_settings() ) . '" target="_blank">',
75 '</a>',
76 '<a href="' . esc_url( $this->get_admin_url_ap_settings() ) . '" target="_blank">',
77 '</a>',
78 '<a href="' . esc_url( $this->get_admin_url_sm_settings() ) . '" target="_blank">',
79 '</a>'
80 ),
81 'error',
82 $is_limited_notice_width
83 );
84
85 return;
86 }
87
88 $learn_more_url = 'pl_PL' === get_locale() ? 'https://octol.io/fs-migration-pl' : 'https://octol.io/fs-migration';
89
90 if ( count( $shipping_method->get_shipping_methods() ) > 0 ) {
91 $this->add_notice(
92 sprintf(
93 // Translators: URL.
94 __( 'Flexible Shipping group methods are no longer supported. Despite the fact that they still remain editable, no other new features are going to be added to them. It is highly recommended to convert them to the supported single ones. %1$sStart converting%2$s or %3$slearn more about it &rarr;%4$s.%5$sPlease mind that if you use any custom functions or plugins targeting the specific shipping methods based on their IDs, e.g. %6$sFlexible Checkout Fields PRO%7$s, %8$sActive Payments%9$s, %10$sShopMagic%11$s or similar, you may need to reconfigure them after the conversion to remain their proper functioning.', 'flexible-shipping' ),
95 '<a href="' . esc_url( $convert_url ) . '">',
96 '</a>',
97 '<a href="' . esc_url( $learn_more_url ) . '" target="_blank">',
98 '</a>',
99 '<br/>',
100 '<a href="' . esc_url( $this->get_admin_url_fsf_pro_settings() ) . '" target="_blank">',
101 '</a>',
102 '<a href="' . esc_url( $this->get_admin_url_ap_settings() ) . '" target="_blank">',
103 '</a>',
104 '<a href="' . esc_url( $this->get_admin_url_sm_settings() ) . '" target="_blank">',
105 '</a>'
106 ),
107 'error',
108 $is_limited_notice_width
109 );
110 } else {
111 $this->add_notice(
112 sprintf(
113 // Translators: URL.
114 __( 'Flexible Shipping group method is no longer supported. %1$sLearn more about it &rarr;%2$s.', 'flexible-shipping' ),
115 '<a href="' . esc_url( $learn_more_url ) . '" target="_blank">',
116 '</a>'
117 ),
118 'error',
119 $is_limited_notice_width
120 );
121 }
122 }
123
124 /**
125 * @param string $message .
126 * @param string $type .
127 * @param bool $is_limited_notice_width .
128 */
129 private function add_notice( $message, $type = 'error', $is_limited_notice_width = false ) {
130 $classes = array( 'fs-notice js--move-notice inline' );
131
132 if ( $is_limited_notice_width ) {
133 $classes[] = 'is-limited-width';
134 }
135
136 new Notice( $message, $type, false, 10, array( 'class' => implode( ' ', $classes ) ) );
137
138 if ( ! has_action( 'admin_footer', array( $this, 'move_notice_script' ) ) ) {
139 add_action( 'admin_footer', array( $this, 'move_notice_script' ) );
140 }
141 }
142
143 /**
144 * Script to move notices.
145 */
146 public function move_notice_script() {
147 include __DIR__ . '/views/move-notices.php';
148 }
149
150 /**
151 * @param int $instance_id .
152 *
153 * @return string
154 */
155 private function get_convert_url( $instance_id ) {
156 $convert_url = admin_url( 'admin-ajax.php' );
157 $convert_url = add_query_arg( 'instance_id', $instance_id, $convert_url );
158 $convert_url = add_query_arg( 'action', ConvertAction::AJAX_ACTION, $convert_url );
159
160 return wp_nonce_url( $convert_url, ConvertAction::AJAX_NONCE );
161 }
162
163 /**
164 * Display notice when shipping method has been converted.
165 */
166 private function display_success_converted_message() {
167 $converted = filter_input( INPUT_GET, 'converted' );
168
169 if ( $converted ) {
170 new Notice( __( 'Flexible Shipping group method has been converted to its new single version and deactivated for safety reasons. Once you make sure everything was converted properly, you can safely delete the previous group method.', 'flexible-shipping' ), 'success' );
171 }
172 }
173
174 /**
175 * @return string
176 */
177 private function get_admin_url_fsf_pro_settings() {
178 return $this->get_admin_url( 'admin.php', 'page', 'inspire_checkout_fields_settings' );
179 }
180
181 /**
182 * @return string
183 */
184 private function get_admin_url_ap_settings() {
185 return $this->get_admin_url( 'admin.php', 'page', 'woocommerce_activepayments' );
186 }
187
188 /**
189 * @return string
190 */
191 private function get_admin_url_sm_settings() {
192 return $this->get_admin_url( 'edit.php', 'post_type', 'shopmagic_automation' );
193 }
194
195 /**
196 * @param string $page .
197 * @param string $key .
198 * @param string $value .
199 *
200 * @return string
201 */
202 private function get_admin_url( $page, $key, $value ) {
203 return add_query_arg( $key, $value, admin_url( $page ) );
204 }
205 }
206