- 14 views
Create new submit handler using hook_form_alter()
This code reacts on user_register_form form ID.
function grafeon_custom_form_alter(&$form, &$form_state, $form_id) {
if($form_id == 'user_register_form') {
$form['actions']['submit']['#submit'][] = 'grafeon_custom_ecomail';
}
}
Use the handler to send values to Ecomail
Well I will just copy-paste the code here and maybe, someone in the future can use it. As I said previously, I was getting role from $form_state array but you can safely remove that.
function grafeon_custom_ecomail($form, $form_state) {
$user = $form_state->getFormObject()->getEntity();
// ecomail
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api2.ecomailapp.cz/lists/[LIST_ID]/subscribe"); // Pick your list ID from Ecomail
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"key: [YOUR_API_KEY]",
"Content-Type: application/json"
));
// This gets the custom values, like pretitle, surname, etc.
$titul_pred_menom = $user->get('field_titul_pred_menom')->getString();
$vase_meno = $user->get('field_vase_meno')->getString();
$vase_priezvisko = $user->get('field_vase_priezvisko')->getString();
$titul_za_menom = $user->get('field_titul_za_menom')->getString();
$tags = [];
// This gets the role from Role Expose module
$role = $form_state->getValues()["select_roles"];
if($role == "ucitel") {
array_push($tags,"ucitel");
}
else {
array_push($tags,"student");
}
$data = json_encode(array(
"subscriber_data" => array(
"pretitle" => $titul_pred_menom,
"name" => $vase_meno,
"surname" => $vase_priezvisko,
"surtitle" => $titul_za_menom,
"email" => $user->getEmail(),
"tags" => $tags
)
));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
curl_close($ch);
}