PluginProbe ʕ •ᴥ•ʔ
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping / 6.11.0
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping v6.11.0
6.12.1 6.12.0 6.11.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 / Shipment / BulkAction.php
flexible-shipping / src / WPDesk / FS / Shipment Last commit date
BulkAction 1 week ago views 1 week ago AdminNotices.php 1 week ago BulkAction.php 1 week ago DispatchLabelFile.php 1 week ago FilterOrders.php 1 week ago ModifyOrderTable.php 1 week ago ModifyStatuses.php 1 week ago SubscriptionsIntegration.php 1 week ago
BulkAction.php
140 lines
1 <?php
2 /**
3 * Class BulkAction
4 */
5
6 namespace WPDesk\FS\Shipment;
7
8 use Exception;
9 use FSVendor\WPDesk\PluginBuilder\Plugin\Hookable;
10 use FSVendor\WPDesk\Session\SessionFactory;
11 use WPDesk\FS\Shipment\BulkAction\HandleAction;
12 use WPDesk\FS\Shipment\BulkAction\HandleActionStrategy;
13 use WPDesk\FS\Shipment\BulkAction\HandleActionStrategyInterface;
14
15 /**
16 * Bulk actions on order screen.
17 */
18 class BulkAction implements Hookable {
19
20 /**
21 * @var SessionFactory
22 */
23 private $session_factory;
24
25 /**
26 * @param SessionFactory $session_factory .
27 */
28 public function __construct( SessionFactory $session_factory ) {
29 $this->session_factory = $session_factory;
30 }
31
32 /**
33 * @return void
34 */
35 public function hooks() {
36 // Old Screen.
37 add_filter( 'bulk_actions-edit-shop_order', [ $this, 'add_bulk_action_options' ] );
38 add_filter( 'handle_bulk_actions-edit-shop_order', [ $this, 'handle_bulk_action' ], 10, 3 );
39
40 // New Screen.
41 add_filter( 'bulk_actions-woocommerce_page_wc-orders', [ $this, 'add_bulk_action_options' ] );
42 add_action( 'admin_init', [ $this, 'handle_bulk_action_new_screen' ] );
43 }
44
45 public function handle_bulk_action_new_screen() {
46 if ( ! isset( $_GET['page'], $_GET['action'], $_GET['id'] ) || empty( $_GET['id'] ) || 'wc-orders' !== wp_unslash( $_GET['page'] ) ) { //phpcs:ignore
47 return;
48 }
49
50 $action = wp_unslash( $_GET['action'] ); //phpcs:ignore
51 $orders = wp_parse_id_list( wp_unslash( $_GET['id'] ) );
52
53 try {
54 $this->get_handle_action_strategy( $action );
55 } catch ( Exception $e ) {
56 return;
57 }
58
59 check_admin_referer( 'bulk-orders' );
60 wp_safe_redirect( $this->handle_action( wp_get_referer(), $action, $orders ) );
61 die();
62 }
63
64 /**
65 * @param array $bulk_actions .
66 *
67 * @return mixed
68 */
69 public function add_bulk_action_options( $bulk_actions ) {
70 $integrations = apply_filters( 'flexible_shipping_integration_options', [] );
71
72 if ( count( $integrations ) ) {
73 $bulk_actions['flexible_shipping_send'] = __( 'Send shipment', 'flexible-shipping' );
74 $bulk_actions['flexible_shipping_labels'] = __( 'Get labels', 'flexible-shipping' );
75
76 if ( apply_filters( 'flexible_shipping_has_manifests', false ) ) {
77 $bulk_actions['flexible_shipping_manifest'] = __( 'Create shipping manifest', 'flexible-shipping' );
78 }
79 }
80
81 return $bulk_actions;
82 }
83
84 /**
85 * @param string $redirect_to .
86 * @param string $action .
87 * @param array $post_ids .
88 *
89 * @return string
90 */
91 public function handle_bulk_action( $redirect_to, $action, $post_ids ): string {
92 $redirect_to = is_string( $redirect_to ) ? $redirect_to : add_query_arg( 'post_type', 'shop_order', admin_url( 'edit.php' ) );
93
94 return $this->handle_action( $redirect_to, $action, $post_ids );
95 }
96
97 /**
98 * @param string $redirect_to .
99 * @param string $action .
100 * @param array $ids .
101 *
102 * @return string
103 */
104 private function handle_action( string $redirect_to, string $action, array $ids ): string {
105 $redirect_to = remove_query_arg( 'bulk_flexible_shipping_send', $redirect_to );
106 $redirect_to = remove_query_arg( 'bulk_flexible_shipping_labels', $redirect_to );
107 $redirect_to = remove_query_arg( 'bulk_flexible_shipping_manifests', $redirect_to );
108
109 try {
110 $handle_action = $this->get_handle_action();
111
112 $handle_action->set_strategy( $this->get_handle_action_strategy( $action ) );
113
114 return $handle_action->handle( $redirect_to, wp_parse_id_list( $ids ) );
115 } catch ( Exception $e ) { // phpcs:ignore
116 // Do nothing.
117 }
118
119 return $redirect_to;
120 }
121
122 /**
123 * @return HandleAction
124 */
125 protected function get_handle_action(): HandleAction {
126 return new HandleAction();
127 }
128
129 /**
130 * @param string $action
131 *
132 * @return HandleActionStrategyInterface
133 * @throws Exception
134 */
135 protected function get_handle_action_strategy( string $action ): HandleActionStrategyInterface {
136 return ( new HandleActionStrategy( $this->session_factory ) )->get( $action );
137 }
138
139 }
140