Last active
April 4, 2024 16:22
-
-
Save razorfrog/9a785a848248f041f1f4ab13379cacad to your computer and use it in GitHub Desktop.
Gravity Forms to Groups.IO subgroup signup
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
///////////////////////////////////////////////////////////// | |
// Gravity Forms to groups.io subgroup signup | |
// API details: https://groups.io/api/20190816#login | |
// Code details: https://razorfrog.com | |
///////////////////////////////////////////////////////////// | |
add_action( 'gform_after_submission_2', 'post_to_third_party', 10, 2 ); // Edit the "_2" to the correct form ID | |
function post_to_third_party( $entry, $form ) { | |
// https://docs.gravityforms.com/entry-object/ | |
// Customize these numbers to the correct field IDs | |
$email = rgar( $entry, '1' ); // Email field | |
$notes = rgar( $entry, '5' ); // Admin Member Notes field | |
$firstname = rgar( $entry, '4.3' ); // First Name field | |
$lastname = rgar( $entry, '4.6' ); // Last Name field | |
$fullname = $firstname.' '.$lastname; | |
$acctEmail = '[email protected]'; // Admin account email address | |
$acctPassword = 'password'; // Admin account password | |
$groupName = 'group-name'; // Your group name | |
$url = 'https://groups.io/api/v1/login?email='.$acctEmail.'&password='.$acctPassword.'&token=true'; | |
$response = wp_remote_post($url); | |
$token = 'false'; | |
if (is_wp_error($response)) { | |
$error = $term->get_error_message(); | |
// GFCommon::log_debug('Error in obtaining token from groups.io'. $error); | |
return false; | |
} else { | |
$body = wp_remote_retrieve_body( $response ); | |
$data = json_decode( $body ); | |
$token = $data->token; | |
// GFCommon::log_debug('Token received is ' . $token); | |
} | |
if( $token != 'false' ) { | |
// get subgroup checkboxes | |
// Details: https://docs.gravityforms.com/entry-object/#h-checkboxes-field | |
$form_or_id = 2; // Update this to the form id | |
$field_id = 3; // Update this number to the checkbox field id | |
$field = GFAPI::get_field( $form_or_id, $field_id ); | |
$checkboxes = is_object( $field ) ? $field->get_value_export( $entry, $field_id, false ) : ''; // returns values | |
$checkboxes = str_replace(' ', '', $checkboxes); | |
// GFCommon::log_debug('Checkbox values:'.$checkboxes); | |
$url = 'https://groups.io/api/v1/directadd'; | |
$args = array( | |
'headers' => array( | |
'Authorization' => 'Basic ' . base64_encode( $token . ':' . '' ) | |
), | |
'body' => array( | |
'group_name' => $groupName, | |
'emails' => $email, | |
'subgroupnames' => $checkboxes | |
), | |
); | |
$request = wp_remote_post( $url, $args ); | |
// GFCommon::log_debug('foorequest: '.print_r($request,true)); | |
$memberID = json_decode($request['body'],true)['added_members'][0]['id']; | |
// second API request to set user first/last name | |
$url2 = 'https://groups.io/api/v1/updatemember'; | |
$args2 = array( | |
'headers' => array( | |
'Authorization' => 'Basic ' . base64_encode( $token . ':' . '' ) | |
), | |
'body' => array( | |
'group_name' => $groupName, | |
'member_info_id' => $memberID, | |
'full_name' => $fullname, | |
'moderator_notes' => $notes | |
), | |
); | |
$request2 = wp_remote_post( $url2, $args2 ); | |
// GFCommon::log_debug('Request2: '.print_r($request2,true)); | |
if( is_wp_error($request) ) { | |
// GFCommon::log_debug('wp error:'.print_r($request,true)); | |
return false; | |
} else { | |
// GFCommon::log_debug('Add sent!'.print_r($request,true)); | |
return true; | |
} | |
} | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment