/**
  * Save the user settings.
  *
  * @author tddewey
  *
  * @param $user_id integer user ID being updated.
  *
  * @return integer returns the $user_id regardless of success or failure.
  */
 function save_fields($user_id)
 {
     // Check permissions and nonce.
     if (!current_user_can('edit_user', $user_id) && wp_verify_nonce($_POST['_wpnonce'])) {
         return $user_id;
     }
     $old_lp_twitter = get_user_meta($user_id, 'lp_twitter', true);
     // returns empty string if not set, perfect
     $lp_twitter = isset($_POST['lp_twitter']) ? sanitize_text_field($_POST['lp_twitter']) : '';
     $lp_user_password = isset($_POST['lp_user_password']) ? sanitize_text_field($_POST['lp_user_password']) : '';
     if ($old_lp_twitter != $lp_twitter || '' !== $lp_user_password) {
         $user = get_userdata($user_id);
         $options = get_option(LivePress_Administration::$options_name);
         $livepress_com = new LivePress_Communication($options['api_key']);
         $error_message = '';
         try {
             $return_code = $livepress_com->manage_remote_post_from_twitter($lp_twitter, $user->user_login);
         } catch (LivePress_Communication_Exception $e) {
             $return_code = $e->get_code();
             $error_message = $e->getMessage();
         }
         /* User not found at livepress, or password invalid, or WordPress password entered */
         if ($return_code == 403 || '' !== $lp_user_password) {
             $la = new LivePress_Administration();
             $error_message = $livepress_com->get_last_error_message();
             if (!$la->enable_remote_post($user_id, $lp_user_password)) {
                 $this->add_error('Error from the LivePress service: ', $error_message);
             } else {
                 $error_message = '';
                 try {
                     $return_code = $livepress_com->manage_remote_post_from_twitter($lp_twitter, $user->user_login);
                 } catch (LivePress_Communication_Exception $e) {
                     $return_code = $e->get_code();
                     $error_message = $e->getMessage();
                 }
             }
         }
         if ($return_code != 200 && $return_code != 'OK.') {
             if (strlen($error_message) > 0) {
                 $this->add_error('Problem with setting twitter user: '******'Problem with setting twitter user: error #' . $return_code);
                 // Show error code if no msg
             }
         } else {
             // No error
             if (empty($lp_twitter)) {
                 // None left, delete meta
                 delete_user_meta($user_id, 'lp_twitter');
             } else {
                 // Update meta with current lp_twitter
                 update_user_meta($user_id, 'lp_twitter', $lp_twitter);
             }
         }
     }
     $old_lp_phone_number = get_user_meta($user_id, 'lp_phone_number', true);
     // returns empty string if not set, perfect
     $lp_phone_number = isset($_POST['lp_phone_number']) ? sanitize_text_field($_POST['lp_phone_number']) : '';
     if ($old_lp_phone_number != $lp_phone_number) {
         $user = get_userdata($user_id);
         $options = get_option(LivePress_Administration::$options_name);
         $livepress_com = new LivePress_Communication($options['api_key']);
         $error_message = '';
         try {
             $return_code = $livepress_com->set_phone_number($lp_phone_number, $user->user_login);
         } catch (LivePress_Communication_Exception $e) {
             $return_code = $e->get_code();
             $error_message = $e->getMessage();
         }
         if ($return_code == 403) {
             /* User not found at livepress, or password invalid */
             $la = new LivePress_Administration();
             $error_message = $livepress_com->get_last_error_message();
             if (!$la->enable_remote_post($user_id, $lp_user_password)) {
                 $this->add_error('Error from the LivePress service: ', $error_message);
             } else {
                 $error_message = '';
                 try {
                     $return_code = $livepress_com->set_phone_number($lp_phone_number, $user->user_login);
                 } catch (LivePress_Communication_Exception $e) {
                     $return_code = $e->get_code();
                     $error_message = $e->getMessage();
                 }
             }
         }
         if ($return_code != 200 && $return_code != 'OK.') {
             if (strlen($error_message) > 0) {
                 $this->add_error('Problem with setting phone number: ' . $error_message);
                 // Show existing error
             } else {
                 $this->add_error('Problem with setting phone number: error #' . $return_code);
                 // Show error code if no msg
             }
         } else {
             // No error
             if (empty($lp_phone_number)) {
                 // None left, delete meta
                 delete_user_meta($user_id, 'lp_phone_number');
             } else {
                 // Update meta with current lp_phone_number
                 update_user_meta($user_id, 'lp_phone_number', $lp_phone_number);
             }
         }
     }
     return $user_id;
 }