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;
}