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