Completed
Push — master ( 97f500...e77626 )
by Gerhard
19:26 queued 11s
created

includes/class-wc-deprecated-action-hooks.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
/**
3
 * Deprecated action hooks
4
 *
5
 * @package WooCommerce\Abstracts
6
 * @since   3.0.0
7
 * @version 3.3.0
8
 */
9
10
defined( 'ABSPATH' ) || exit;
11
12
/**
13
 * Handles deprecation notices and triggering of legacy action hooks.
14
 */
15
class WC_Deprecated_Action_Hooks extends WC_Deprecated_Hooks {
16
17
	/**
18
	 * Array of deprecated hooks we need to handle. Format of 'new' => 'old'.
19
	 *
20
	 * @var array
21
	 */
22
	protected $deprecated_hooks = array(
23
		'woocommerce_new_order_item'        => array(
24
			'woocommerce_order_add_shipping',
25
			'woocommerce_order_add_coupon',
26
			'woocommerce_order_add_tax',
27
			'woocommerce_order_add_fee',
28
			'woocommerce_add_shipping_order_item',
29
			'woocommerce_add_order_item_meta',
30
			'woocommerce_add_order_fee_meta',
31
		),
32
		'woocommerce_update_order_item'     => array(
33
			'woocommerce_order_edit_product',
34
			'woocommerce_order_update_coupon',
35
			'woocommerce_order_update_shipping',
36
			'woocommerce_order_update_fee',
37
			'woocommerce_order_update_tax',
38
		),
39
		'woocommerce_new_payment_token'     => 'woocommerce_payment_token_created',
40
		'woocommerce_new_product_variation' => 'woocommerce_create_product_variation',
41
		'woocommerce_order_details_after_order_table_items' => 'woocommerce_order_items_table',
42
43
		'woocommerce_settings_advanced_page_options' => array(
44
			'woocommerce_settings_checkout_page_options',
45
			'woocommerce_settings_account_page_options',
46
		),
47
		'woocommerce_settings_advanced_page_options_end' => array(
48
			'woocommerce_settings_checkout_page_options_end',
49
			'woocommerce_settings_account_page_options_end',
50
		),
51
		'woocommerce_settings_advanced_page_options_after' => array(
52
			'woocommerce_settings_checkout_page_options_after',
53
			'woocommerce_settings_account_page_options_after',
54
		),
55
	);
56
57
	/**
58
	 * Array of versions on each hook has been deprecated.
59
	 *
60
	 * @var array
61
	 */
62
	protected $deprecated_version = array(
63
		'woocommerce_order_add_shipping'                   => '3.0.0',
64
		'woocommerce_order_add_coupon'                     => '3.0.0',
65
		'woocommerce_order_add_tax'                        => '3.0.0',
66
		'woocommerce_order_add_fee'                        => '3.0.0',
67
		'woocommerce_add_shipping_order_item'              => '3.0.0',
68
		'woocommerce_add_order_item_meta'                  => '3.0.0',
69
		'woocommerce_add_order_fee_meta'                   => '3.0.0',
70
		'woocommerce_order_edit_product'                   => '3.0.0',
71
		'woocommerce_order_update_coupon'                  => '3.0.0',
72
		'woocommerce_order_update_shipping'                => '3.0.0',
73
		'woocommerce_order_update_fee'                     => '3.0.0',
74
		'woocommerce_order_update_tax'                     => '3.0.0',
75
		'woocommerce_payment_token_created'                => '3.0.0',
76
		'woocommerce_create_product_variation'             => '3.0.0',
77
		'woocommerce_order_items_table'                    => '3.0.0',
78
		'woocommerce_settings_checkout_page_options'       => '3.4.0',
79
		'woocommerce_settings_account_page_options'        => '3.4.0',
80
		'woocommerce_settings_checkout_page_options_end'   => '3.4.0',
81
		'woocommerce_settings_account_page_options_end'    => '3.4.0',
82
		'woocommerce_settings_checkout_page_options_after' => '3.4.0',
83
		'woocommerce_settings_account_page_options_after'  => '3.4.0',
84
	);
85
86
	/**
87
	 * Hook into the new hook so we can handle deprecated hooks once fired.
88
	 *
89
	 * @param string $hook_name Hook name.
90
	 */
91
	public function hook_in( $hook_name ) {
92
		add_action( $hook_name, array( $this, 'maybe_handle_deprecated_hook' ), -1000, 8 );
93
	}
94
95
	/**
96
	 * If the old hook is in-use, trigger it.
97
	 *
98
	 * @param  string $new_hook          New hook name.
99
	 * @param  string $old_hook          Old hook name.
100
	 * @param  array  $new_callback_args New callback args.
101
	 * @param  mixed  $return_value      Returned value.
102
	 * @return mixed
103
	 */
104 208 View Code Duplication
	public function handle_deprecated_hook( $new_hook, $old_hook, $new_callback_args, $return_value ) {
0 ignored issues
show
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
105 208
		if ( has_action( $old_hook ) ) {
106 3
			$this->display_notice( $old_hook, $new_hook );
107 3
			$return_value = $this->trigger_hook( $old_hook, $new_callback_args );
108
		}
109 208
		return $return_value;
110
	}
111
112
	/**
113
	 * Fire off a legacy hook with it's args.
114
	 *
115
	 * @param  string $old_hook          Old hook name.
116
	 * @param  array  $new_callback_args New callback args.
117
	 * @return mixed
118
	 */
119 3
	protected function trigger_hook( $old_hook, $new_callback_args ) {
120 3
		switch ( $old_hook ) {
121
			case 'woocommerce_order_add_shipping':
122 View Code Duplication
			case 'woocommerce_order_add_fee':
123
				$item_id  = $new_callback_args[0];
124
				$item     = $new_callback_args[1];
125
				$order_id = $new_callback_args[2];
126
				if ( is_a( $item, 'WC_Order_Item_Shipping' ) || is_a( $item, 'WC_Order_Item_Fee' ) ) {
127
					do_action( $old_hook, $order_id, $item_id, $item );
128
				}
129
				break;
130
			case 'woocommerce_order_add_coupon':
131
				$item_id  = $new_callback_args[0];
132
				$item     = $new_callback_args[1];
133
				$order_id = $new_callback_args[2];
134
				if ( is_a( $item, 'WC_Order_Item_Coupon' ) ) {
135
					do_action( $old_hook, $order_id, $item_id, $item->get_code(), $item->get_discount(), $item->get_discount_tax() );
136
				}
137
				break;
138
			case 'woocommerce_order_add_tax':
139
				$item_id  = $new_callback_args[0];
140
				$item     = $new_callback_args[1];
141
				$order_id = $new_callback_args[2];
142
				if ( is_a( $item, 'WC_Order_Item_Tax' ) ) {
143
					do_action( $old_hook, $order_id, $item_id, $item->get_rate_id(), $item->get_tax_total(), $item->get_shipping_tax_total() );
144
				}
145
				break;
146
			case 'woocommerce_add_shipping_order_item':
147
				$item_id  = $new_callback_args[0];
148
				$item     = $new_callback_args[1];
149
				$order_id = $new_callback_args[2];
150
				if ( is_a( $item, 'WC_Order_Item_Shipping' ) ) {
151
					do_action( $old_hook, $order_id, $item_id, $item->legacy_package_key );
152
				}
153
				break;
154
			case 'woocommerce_add_order_item_meta':
155
				$item_id  = $new_callback_args[0];
156
				$item     = $new_callback_args[1];
157
				$order_id = $new_callback_args[2];
158
				if ( is_a( $item, 'WC_Order_Item_Product' ) ) {
159
					do_action( $old_hook, $item_id, $item->legacy_values, $item->legacy_cart_item_key );
160
				}
161
				break;
162
			case 'woocommerce_add_order_fee_meta':
163
				$item_id  = $new_callback_args[0];
164
				$item     = $new_callback_args[1];
165
				$order_id = $new_callback_args[2];
166
				if ( is_a( $item, 'WC_Order_Item_Fee' ) ) {
167
					do_action( $old_hook, $order_id, $item_id, $item->legacy_fee, $item->legacy_fee_key );
168
				}
169
				break;
170 View Code Duplication
			case 'woocommerce_order_edit_product':
171 1
				$item_id  = $new_callback_args[0];
172 1
				$item     = $new_callback_args[1];
173 1
				$order_id = $new_callback_args[2];
174 1
				if ( is_a( $item, 'WC_Order_Item_Product' ) ) {
175 1
					do_action( $old_hook, $order_id, $item_id, $item, $item->get_product() );
176
				}
177 1
				break;
178
			case 'woocommerce_order_update_coupon':
179
			case 'woocommerce_order_update_shipping':
180
			case 'woocommerce_order_update_fee':
181
			case 'woocommerce_order_update_tax':
182
				if ( ! is_a( $item, 'WC_Order_Item_Product' ) ) {
183
					do_action( $old_hook, $order_id, $item_id, $item );
184
				}
185
				break;
186
			default:
187 2
				do_action_ref_array( $old_hook, $new_callback_args );
188 2
				break;
189
		}
190
	}
191
}
192