Filter uncanny-automator

automator_armember_parse_common_trigger_code

Filters Armember trigger code to allow modification of common trigger types like plan cancellations.

add_filter( 'automator_armember_parse_common_trigger_code', $callback, 10, 1 );

Description

Filters the array of allowed trigger codes for Armember actions before they are parsed. Developers can use this hook to add or remove specific Armember trigger codes that the plugin should recognize, enabling custom trigger logic for integrations.


Usage

add_filter( 'automator_armember_parse_common_trigger_code', 'your_function_name', 10, 1 );

Parameters

$pieces (mixed)
This parameter represents an array containing specific ARMember trigger codes that are being processed.

Return Value

The filtered value.


Examples

/**
 * Example function to modify the ARMEMBER trigger code validations.
 *
 * This function intercepts the 'automator_armember_parse_common_trigger_code' filter
 * and adds a custom validation for a hypothetical 'ARM_CUSTOM_EVENT' trigger code.
 * It checks if the 'ARM_CANCEL_PLAN' code is present and adds the custom code to the list.
 *
 * @param array $trigger_meta_validations An array of ARMEMBER trigger codes to validate.
 * @param array $pieces An array containing information about the trigger pieces.
 * @return array The modified array of trigger meta validations.
 */
add_filter( 'automator_armember_parse_common_trigger_code', 'my_custom_armember_trigger_validations', 10, 2 );

function my_custom_armember_trigger_validations( $trigger_meta_validations, $pieces ) {
    // Check if ARM_CANCEL_PLAN is in the current validations and add our custom one if it is.
    if ( in_array( 'ARM_CANCEL_PLAN', $trigger_meta_validations ) ) {
        // You could also check specific pieces data if needed to conditionally add the validation.
        // For example: if ( isset( $pieces['pieces'][1] ) && $pieces['pieces'][1] === 'specific_plan_id' ) { ... }
        $trigger_meta_validations[] = 'ARM_CUSTOM_EVENT';
    }

    return $trigger_meta_validations;
}

Placement

This code should be placed in the functions.php file of your active theme, a custom plugin, or using a code snippets plugin.


Source Code

src/integrations/armember/tokens/armember-tokens.php:176

public function parse_armember_tokens( $value, $pieces, $recipe_id, $trigger_data, $user_id, $replace_args ) {

		if ( ! is_array( $pieces ) || ! isset( $pieces[1] ) || ! isset( $pieces[2] ) ) {
			return $value;
		}

		$trigger_meta_validations = apply_filters(
			'automator_armember_parse_common_trigger_code',
			array( 'ARM_CANCEL_PLAN' ),
			array(
				'pieces'       => $pieces,
				'recipe_id'    => $recipe_id,
				'trigger_data' => $trigger_data,
				'user_id'      => $user_id,
				'replace_args' => $replace_args,
			)
		);

		if ( ! array_intersect( $trigger_meta_validations, $pieces ) ) {
			return $value;
		}

		$to_replace        = $pieces[2];
		$member_id         = Automator()->db->token->get( 'save_user_id', $replace_args );
		$plan_id           = Automator()->db->token->get( 'save_plan_id', $replace_args );
		$arm_members       = $this->armember_class;
		$arm_subscriptions = $this->armember_subscription_class;
		$plan              = $arm_subscriptions->arm_get_subscription_plan( $plan_id, 'arm_subscription_plan_name,arm_subscription_plan_options' );
		$member            = $arm_members->arm_get_member_detail( $member_id );

		switch ( $to_replace ) {
			case 'ARM_MEMBERSHIP_PLAN':
				$value = $plan['arm_subscription_plan_name'];
				break;
			case 'ARM_MEMBERSHIP_PLAN_ID':
				$value = $plan_id;
				break;
			case 'ARM_MEMBERSHIP_TYPE':
				$value = ucfirst( $plan['arm_subscription_plan_options']['access_type'] ) . ' - ' . ucfirst( str_replace( '_', ' ', $plan['arm_subscription_plan_options']['payment_type'] ) );
				break;
			case 'ARM_MEMBER_STATUS':
				$status_arm = array(
					1 => 'Active',
					2 => 'Inactive',
					3 => 'Pending',
				);
				$value      = $status_arm[ arm_get_member_status( $member_id ) ];
				break;
			case 'ARM_MEMBER_JOINED_DATE':
				$value = wp_date( 'F j, Y', strtotime( $member->user_registered ) );
				break;
			case 'ARM_MEMBER_USERNAME':
				$value = $member->user_login;
				break;
			case 'ARM_MEMBER_EMAIL':
				$value = $member->user_email;
				break;
			case 'ARM_MEMBER_FIRST_NAME':
				$value = $member->first_name;
				break;
			case 'ARM_MEMBER_LAST_NAME':
				$value = $member->last_name;
				break;
			case 'ARM_MEMBER_ROLE':
				$value = join( ', ', $member->roles );
				break;
		}

		return $value;
	}

Scroll to Top