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

87 lines
2.7 KiB
PHP

<?php
namespace AutomateWoo;
defined( 'ABSPATH' ) || exit;
use Exception;
/**
* @class Action_Active_Campaign_Create_Contact
* @since 2.0
*/
class Action_Active_Campaign_Create_Contact extends Action_Active_Campaign_Abstract {
/**
* Load admin details and set Action title/ description
*
* @return void
*/
public function load_admin_details() {
parent::load_admin_details();
$this->title = __( 'Create / Update Contact', 'automatewoo' );
$this->description = __( 'This trigger can be used to create or update contacts in ActiveCampaign. If an existing contact is found by email then an update will occur otherwise a new contact will be created. When updating a contact any fields left blank will not be updated.', 'automatewoo' );
}
/**
* Load Action fields
*
* @return void
*/
public function load_fields() {
$list_select = ( new Fields\Select() )
->set_title( __( 'Add to list', 'automatewoo' ) )
->set_name( 'list' )
->set_options( Integrations::activecampaign()->get_lists() )
->set_description( __( 'Leave blank to add a contact without assigning them to any lists.', 'automatewoo' ) );
$this->add_contact_email_field();
$this->add_contact_fields();
$this->add_field( $list_select );
$this->add_tags_field()
->set_title( __( 'Add tags', 'automatewoo' ) );
}
/**
* Run the Action to create or update a contact on ActiveCampaign
*
* @throws Exception Thrown if there is an error when attempting to sync the contact details.
* @return void
*/
public function run() {
$email = Clean::email( $this->get_option( 'email', true ) );
$first_name = $this->get_option( 'first_name', true );
$last_name = $this->get_option( 'last_name', true );
$phone = $this->get_option( 'phone', true );
$company = $this->get_option( 'company', true );
$list_id = $this->get_option( 'list' );
$tags = $this->parse_tags_field( $this->get_option( 'tag', true ) );
$contact = $this->activecampaign()->sync_contact(
$email,
$first_name,
$last_name,
$phone,
$company,
$list_id
);
if ( ! $contact ) {
throw new Exception( esc_html__( 'There was an error when attempting to create or update a contact', 'automatewoo' ) );
}
if ( $list_id ) {
if ( ! $this->activecampaign()->add_contact_to_list( $contact['id'], $list_id ) ) {
throw new Exception( esc_html__( 'There was an error when attempting to add a contact to a list', 'automatewoo' ) );
}
}
if ( $tags ) {
if ( ! $this->activecampaign()->add_tags( $contact['id'], $tags ) ) {
throw new Exception( esc_html__( 'There was an error when attempting to add tags to the contact', 'automatewoo' ) );
}
}
$this->activecampaign()->clear_contact_transients( $email );
}
}