RSForm!Pro integration

Description

If you use RSForm!Pro on your website, you can integrate AcyMailing with it so that when a user submits a form, this user is also subscribed to one or several AcyMailing Lists.

Integrate using PHP code

You can configure RSForm!Pro to execute a php script to subscribe the user in AcyMailing. First of all, edit your form and go in the PHP Scripts section:

The script should go in the Script called after form has been processed area to ensure the user isn't subscribed if an error occurs on the form:

You can use this script as a base, and modify it to meet your needs:

// Load the AcyMailing library
$postData = $_REQUEST['form'];
$ds = DIRECTORY_SEPARATOR;
include_once rtrim(JPATH_ADMINISTRATOR, $ds).$ds.'components'.$ds.'com_acym'.$ds.'helpers'.$ds.'helper.php';
$userClass = new AcyMailing\Classes\UserClass();
// Build the user based on your form's fields
$myUser = new stdClass();
$myUser->email = strip_tags($postData['EMAIL_FIELD']);
$myUser->name = strip_tags($postData['NAME_FIELD']);
// If the user already exists update it
$existingUser = $userClass->getOneByEmail($postData['EMAIL_FIELD']);
if (!empty($existingUser)) $myUser->id = $existingUser->id;
// You can add as many extra fields as you want if you already created them in AcyMailing
$customFields = [];
$customFields[CUSTOM_FIELD_ID] = $postData['MY_FIELD']; // the custom field id can be found in the Custom fields list of the AcyMailing admin page
$userClass->sendConf = true; // Or false if you don't want a confirmation email to be sent
$userId = $userClass->save($myUser, $customFields);
// The user now exists in AcyMailing, let's add some list subscriptions
$subscribe = [2,5,6]; // Ids of the lists you want the user to be subscribed to need to be added in this array
$userClass->subscribe($userId, $subscribe);

In this code, CUSTOM_FIELD_ID is the ID that can be seen in the Acy custom fields listing.

EMAIL_FIELD, NAME_FIELD and MY_FIELD must be replaced by your form's field names, so in this example it would be "Email", "the user name" and "Our newsletters field name":

Let users choose their subscription

You can add a Radio Group field or a Checkbox Group field to let users choose their subscription. Here are some examples:

Use a Radio Group field as a Yes/No subscription field

// The user now exists in AcyMailing, let's add some list subscriptions
if (!empty($postData['newsletters']) && $postData['newsletters'] === 'Yes') {
$subscribe = [2,5,6]; // Ids of the lists you want the user to be subscribed to need to be added in this array
$userClass->subscribe($userId, $subscribe);
}

Use a Checkbox field to choose the lists individually

// The user now exists in AcyMailing, let's add some list subscriptions
$subscribe = [];
if (!empty($postData['lists'])) {
if (in_array('Monthly news', $postData['lists'])) $subscribe[] = 2; // 2 being the list ID corresponding to the monthly news
if (in_array('Weekly news', $postData['lists'])) $subscribe[] = 5;
if (in_array('Daily news', $postData['lists'])) $subscribe[] = 6;
$userClass->subscribe($userId, $subscribe);
}