automatewoo/includes/Triggers/Subscription_Note_Added.php
fei-source 47d3c9a8b6 Update to v6.2.2
Source: GrootMade/Festinger Vault
2026-03-15 08:31:15 +08:00

69 lines
1.8 KiB
PHP

<?php
namespace AutomateWoo;
defined( 'ABSPATH' ) || exit;
use AutomateWoo\DataTypes\DataTypes;
use AutomateWoo\Triggers\Utilities\SubscriptionGroup;
use WC_Order;
/**
* Trigger_Subscription_Note_Added class.
*
* @since 4.5
*/
class Trigger_Subscription_Note_Added extends Trigger_Order_Note_Added {
use SubscriptionGroup;
/**
* Declares data items available in trigger.
*
* @var array
*/
public $supplied_data_items = [ DataTypes::SUBSCRIPTION, DataTypes::ORDER_NOTE, DataTypes::CUSTOMER ];
/**
* Load trigger admin props.
*/
public function load_admin_details() {
$this->title = __( 'Subscription Note Added', 'automatewoo' );
$this->description = __( 'Fires when a note is added to a subscription. This includes private notes and notes to the customer. These notes appear on the right of the subscription edit screen.', 'automatewoo' );
}
/**
* Get order types to target in the order note trigger.
*
* @since 5.2.0
*
* @return array
*/
protected function get_target_order_types(): array {
return [ 'shop_subscription' ];
}
/**
* Handle when an order note is added.
*
* @since 5.2.0
*
* @param Order_Note $order_note
* @param WC_Order $subscription
*/
protected function handle_order_note_added( Order_Note $order_note, WC_Order $subscription ) {
// Reset status transition to prevent it from being triggered again if we run an action to update the subscription.
// See: https://github.com/Automattic/woocommerce-subscriptions-core/issues/549
// This code can be removed again if the behaviour is changed.
$subscription->status_transition = false;
$this->maybe_run(
[
'customer' => Customer_Factory::get_by_user_id( $subscription->get_user_id() ),
'subscription' => $subscription,
'order_note' => $order_note,
]
);
}
}