| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- <?php
- /**
- * Deprecated action hooks
- *
- * @package WooCommerce\Abstracts
- * @since 3.0.0
- * @version 3.3.0
- */
- defined( 'ABSPATH' ) || exit;
- /**
- * Handles deprecation notices and triggering of legacy action hooks.
- */
- class WC_Deprecated_Action_Hooks extends WC_Deprecated_Hooks {
- /**
- * Array of deprecated hooks we need to handle. Format of 'new' => 'old'.
- *
- * @var array
- */
- protected $deprecated_hooks = array(
- 'woocommerce_new_order_item' => array(
- 'woocommerce_order_add_shipping',
- 'woocommerce_order_add_coupon',
- 'woocommerce_order_add_tax',
- 'woocommerce_order_add_fee',
- 'woocommerce_add_shipping_order_item',
- 'woocommerce_add_order_item_meta',
- 'woocommerce_add_order_fee_meta',
- ),
- 'woocommerce_update_order_item' => array(
- 'woocommerce_order_edit_product',
- 'woocommerce_order_update_coupon',
- 'woocommerce_order_update_shipping',
- 'woocommerce_order_update_fee',
- 'woocommerce_order_update_tax',
- ),
- 'woocommerce_new_payment_token' => 'woocommerce_payment_token_created',
- 'woocommerce_new_product_variation' => 'woocommerce_create_product_variation',
- 'woocommerce_order_details_after_order_table_items' => 'woocommerce_order_items_table',
- 'woocommerce_settings_advanced_page_options' => array(
- 'woocommerce_settings_checkout_page_options',
- 'woocommerce_settings_account_page_options',
- ),
- 'woocommerce_settings_advanced_page_options_end' => array(
- 'woocommerce_settings_checkout_page_options_end',
- 'woocommerce_settings_account_page_options_end',
- ),
- 'woocommerce_settings_advanced_page_options_after' => array(
- 'woocommerce_settings_checkout_page_options_after',
- 'woocommerce_settings_account_page_options_after',
- ),
- );
- /**
- * Array of versions on each hook has been deprecated.
- *
- * @var array
- */
- protected $deprecated_version = array(
- 'woocommerce_order_add_shipping' => '3.0.0',
- 'woocommerce_order_add_coupon' => '3.0.0',
- 'woocommerce_order_add_tax' => '3.0.0',
- 'woocommerce_order_add_fee' => '3.0.0',
- 'woocommerce_add_shipping_order_item' => '3.0.0',
- 'woocommerce_add_order_item_meta' => '3.0.0',
- 'woocommerce_add_order_fee_meta' => '3.0.0',
- 'woocommerce_order_edit_product' => '3.0.0',
- 'woocommerce_order_update_coupon' => '3.0.0',
- 'woocommerce_order_update_shipping' => '3.0.0',
- 'woocommerce_order_update_fee' => '3.0.0',
- 'woocommerce_order_update_tax' => '3.0.0',
- 'woocommerce_payment_token_created' => '3.0.0',
- 'woocommerce_create_product_variation' => '3.0.0',
- 'woocommerce_order_items_table' => '3.0.0',
- 'woocommerce_settings_checkout_page_options' => '3.4.0',
- 'woocommerce_settings_account_page_options' => '3.4.0',
- 'woocommerce_settings_checkout_page_options_end' => '3.4.0',
- 'woocommerce_settings_account_page_options_end' => '3.4.0',
- 'woocommerce_settings_checkout_page_options_after' => '3.4.0',
- 'woocommerce_settings_account_page_options_after' => '3.4.0',
- );
- /**
- * Hook into the new hook so we can handle deprecated hooks once fired.
- *
- * @param string $hook_name Hook name.
- */
- public function hook_in( $hook_name ) {
- add_action( $hook_name, array( $this, 'maybe_handle_deprecated_hook' ), -1000, 8 );
- }
- /**
- * If the old hook is in-use, trigger it.
- *
- * @param string $new_hook New hook name.
- * @param string $old_hook Old hook name.
- * @param array $new_callback_args New callback args.
- * @param mixed $return_value Returned value.
- * @return mixed
- */
- public function handle_deprecated_hook( $new_hook, $old_hook, $new_callback_args, $return_value ) {
- if ( has_action( $old_hook ) ) {
- $this->display_notice( $old_hook, $new_hook );
- $return_value = $this->trigger_hook( $old_hook, $new_callback_args );
- }
- return $return_value;
- }
- /**
- * Fire off a legacy hook with it's args.
- *
- * @param string $old_hook Old hook name.
- * @param array $new_callback_args New callback args.
- * @return mixed
- */
- protected function trigger_hook( $old_hook, $new_callback_args ) {
- switch ( $old_hook ) {
- case 'woocommerce_order_add_shipping':
- case 'woocommerce_order_add_fee':
- $item_id = $new_callback_args[0];
- $item = $new_callback_args[1];
- $order_id = $new_callback_args[2];
- if ( is_a( $item, 'WC_Order_Item_Shipping' ) || is_a( $item, 'WC_Order_Item_Fee' ) ) {
- do_action( $old_hook, $order_id, $item_id, $item );
- }
- break;
- case 'woocommerce_order_add_coupon':
- $item_id = $new_callback_args[0];
- $item = $new_callback_args[1];
- $order_id = $new_callback_args[2];
- if ( is_a( $item, 'WC_Order_Item_Coupon' ) ) {
- do_action( $old_hook, $order_id, $item_id, $item->get_code(), $item->get_discount(), $item->get_discount_tax() );
- }
- break;
- case 'woocommerce_order_add_tax':
- $item_id = $new_callback_args[0];
- $item = $new_callback_args[1];
- $order_id = $new_callback_args[2];
- if ( is_a( $item, 'WC_Order_Item_Tax' ) ) {
- do_action( $old_hook, $order_id, $item_id, $item->get_rate_id(), $item->get_tax_total(), $item->get_shipping_tax_total() );
- }
- break;
- case 'woocommerce_add_shipping_order_item':
- $item_id = $new_callback_args[0];
- $item = $new_callback_args[1];
- $order_id = $new_callback_args[2];
- if ( is_a( $item, 'WC_Order_Item_Shipping' ) ) {
- do_action( $old_hook, $order_id, $item_id, $item->legacy_package_key );
- }
- break;
- case 'woocommerce_add_order_item_meta':
- $item_id = $new_callback_args[0];
- $item = $new_callback_args[1];
- $order_id = $new_callback_args[2];
- if ( is_a( $item, 'WC_Order_Item_Product' ) ) {
- do_action( $old_hook, $item_id, $item->legacy_values, $item->legacy_cart_item_key );
- }
- break;
- case 'woocommerce_add_order_fee_meta':
- $item_id = $new_callback_args[0];
- $item = $new_callback_args[1];
- $order_id = $new_callback_args[2];
- if ( is_a( $item, 'WC_Order_Item_Fee' ) ) {
- do_action( $old_hook, $order_id, $item_id, $item->legacy_fee, $item->legacy_fee_key );
- }
- break;
- case 'woocommerce_order_edit_product':
- $item_id = $new_callback_args[0];
- $item = $new_callback_args[1];
- $order_id = $new_callback_args[2];
- if ( is_a( $item, 'WC_Order_Item_Product' ) ) {
- do_action( $old_hook, $order_id, $item_id, $item, $item->get_product() );
- }
- break;
- case 'woocommerce_order_update_coupon':
- case 'woocommerce_order_update_shipping':
- case 'woocommerce_order_update_fee':
- case 'woocommerce_order_update_tax':
- if ( ! is_a( $item, 'WC_Order_Item_Product' ) ) {
- do_action( $old_hook, $order_id, $item_id, $item );
- }
- break;
- default:
- do_action_ref_array( $old_hook, $new_callback_args );
- break;
- }
- }
- }
|