/**
  * Save the API connection of a service and retrieve account settings markup.
  *
  * Called via the fl_ajax_fl_builder_connect_service action.
  *
  * @since 1.5.4
  * @return string The JSON encoded response.
  */
 public static function connect_service()
 {
     $saved_services = FLBuilderModel::get_services();
     $post_data = FLBuilderModel::get_post_data();
     $response = array('error' => false, 'html' => '');
     // Validate the service data.
     if (!isset($post_data['service']) || empty($post_data['service'])) {
         $response['error'] = _x('Error: Missing service type.', 'Third party service such as MailChimp.', 'fl-builder');
     } else {
         if (!isset($post_data['fields']) || 0 === count($post_data['fields'])) {
             $response['error'] = _x('Error: Missing service data.', 'Connection data such as an API key.', 'fl-builder');
         } else {
             if (!isset($post_data['fields']['service_account']) || empty($post_data['fields']['service_account'])) {
                 $response['error'] = _x('Error: Missing account name.', 'Account name for a third party service such as MailChimp.', 'fl-builder');
             }
         }
     }
     // Get the service data.
     $service = $post_data['service'];
     $service_account = $post_data['fields']['service_account'];
     // Does this account already exist?
     if (isset($saved_services[$service][$service_account])) {
         $response['error'] = _x('Error: An account with that name already exists.', 'Account name for a third party service such as MailChimp.', 'fl-builder');
     }
     // Try to connect to the service.
     if (!$response['error']) {
         $instance = self::get_service_instance($service);
         $connection = $instance->connect($post_data['fields']);
         if ($connection['error']) {
             $response['error'] = $connection['error'];
         } else {
             FLBuilderModel::update_services($service, $service_account, $connection['data']);
             $response['html'] = self::render_account_settings($service, $service_account);
         }
     }
     // Return the response.
     echo json_encode($response);
     die;
 }