Automattic\WooCommerce\Internal\Admin\Notes

WooSubscriptionsNotes::add_or_update_subscription_expired()publicWC 1.0

Adds a note for an expired subscription, or updates an expiring note to expired.

Method of the class: WooSubscriptionsNotes{}

No Hooks.

Return

null. Nothing (null).

Usage

$WooSubscriptionsNotes = new WooSubscriptionsNotes();
$WooSubscriptionsNotes->add_or_update_subscription_expired( $subscription );
$subscription(array) (required)
The subscription to work with.

WooSubscriptionsNotes::add_or_update_subscription_expired() code WC 8.6.1

public function add_or_update_subscription_expired( $subscription ) {
	$product_id   = $subscription['product_id'];
	$product_name = $subscription['product_name'];
	$product_page = $subscription['product_url'];
	$expires      = intval( $subscription['expires'] );
	$expires_date = gmdate( 'F jS', $expires );

	$note = $this->find_note_for_product_id( $product_id );
	if ( $note ) {
		$note_content_data = $note->get_content_data();
		if ( $note_content_data->expired ) {
			// We've already got a full fledged expired note for this. Bail.
			// Expired notes' content don't change with time.
			return;
		}
	}

	$note_title = sprintf(
		/* translators: name of the extension subscription that expired */
		__( '%s subscription expired', 'woocommerce' ),
		$product_name
	);

	$note_content = sprintf(
		/* translators: date the subscription expired, e.g. Jun 7th 2018 */
		__( 'Your subscription expired on %s. Get a new subscription to continue receiving updates and access to support.', 'woocommerce' ),
		$expires_date
	);

	$note_content_data = (object) array(
		'product_id'   => $product_id,
		'product_name' => $product_name,
		'expired'      => true,
		'expires'      => $expires,
		'expires_date' => $expires_date,
	);

	if ( ! $note ) {
		$note = new Note();
	}

	$note->set_title( $note_title );
	$note->set_content( $note_content );
	$note->set_content_data( $note_content_data );
	$note->set_type( Note::E_WC_ADMIN_NOTE_WARNING );
	$note->set_name( self::SUBSCRIPTION_NOTE_NAME );
	$note->set_source( 'woocommerce-admin' );
	$note->clear_actions();
	$note->add_action(
		'renew-subscription',
		__( 'Renew Subscription', 'woocommerce' ),
		$product_page
	);
	$note->save();
}