From 44513d2a65a13ae62c8a75e09655dcec682bd212 Mon Sep 17 00:00:00 2001 From: Cameron Date: Sat, 8 Sep 2018 11:19:16 -0700 Subject: [PATCH] Fix for extended user fields not saving in user_extended in the case where the record is missing from the table. --- usersettings.php | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/usersettings.php b/usersettings.php index fb3a554ef..09e50a1b1 100644 --- a/usersettings.php +++ b/usersettings.php @@ -666,24 +666,21 @@ class usersettings_front // Begin Usersettings rewrite. } } - // Save extended field values - if (isset($changedEUFData['data']) && count($changedEUFData['data'])) - { - $ue->addFieldTypes($changedEUFData); // Add in the data types for storage - $changedEUFData['WHERE'] = '`user_extended_id` = '.$inp; - //print_a($changedEUFData); - if (false === $sql->retrieve('user_extended', 'user_extended_id', 'user_extended_id='.$inp)) - { - // ***** Next line creates a record which presumably should be there anyway, so could generate an error if no test first - $sql->gen("INSERT INTO #user_extended (user_extended_id, user_hidden_fields) values ('".$inp."', '')"); - //print_a('New extended fields added: '.$inp.'
'); - } - if (false === $sql->update('user_extended', $changedEUFData)) + // Save extended field values + if (!empty($changedEUFData['data'])) + { + + $ue->addFieldTypes($changedEUFData); // Add in the data types for storage + + $changedEUFData['_DUPLICATE_KEY_UPDATE'] = true; // update record if key found, otherwise INSERT. + $changedEUFData['data']['user_extended_id'] = $inp; + + if (false === $sql->insert('user_extended', $changedEUFData)) { $message .= '
Error updating EUF'; } - + } // Now see if we need to log anything. First check the options and class membership