diff --git a/src/Model/Contact/User.php b/src/Model/Contact/User.php index 05530cccc5..984d1ce986 100644 --- a/src/Model/Contact/User.php +++ b/src/Model/Contact/User.php @@ -95,16 +95,17 @@ class User $update_fields = self::preparedFields($fields); if (!empty($update_fields)) { $contacts = DBA::select('contact', ['uri-id', 'uid'], $condition); - while ($row = DBA::fetch($contacts)) { - if (empty($row['uri-id']) || empty($contact['uid'])) { + while ($contact = DBA::fetch($contacts)) { + if (empty($contact['uri-id']) || empty($contact['uid'])) { continue; } - $ret = DBA::update('user-contact', $update_fields, ['uri-id' => $row['uri-id'], 'uid' => $row['uid']]); - Logger::info('Updated user contact', ['uid' => $row['uid'], 'uri-id' => $row['uri-id'], 'ret' => $ret]); + $ret = DBA::update('user-contact', $update_fields, ['uri-id' => $contact['uri-id'], 'uid' => $contact['uid']]); + Logger::info('Updated user contact', ['uid' => $contact['uid'], 'uri-id' => $contact['uri-id'], 'ret' => $ret]); } DBA::close($contacts); } + DBA::commit(); } diff --git a/update.php b/update.php index 368b70b228..81e5be8d64 100644 --- a/update.php +++ b/update.php @@ -1000,14 +1000,6 @@ function update_1434() return Update::SUCCESS; } -function update_1435() -{ - $contacts = DBA::select('contact', [], ["`uid` != ?", 0]); - while ($contact = DBA::fetch($contacts)) { - Contact\User::insertForContactArray($contact); - } -} - function update_1438() { DBA::update('photo', ['photo-type' => Photo::USER_AVATAR], ['profile' => true]); @@ -1061,3 +1053,20 @@ function update_1442() return Update::SUCCESS; } + +/** + * A bug in Contact\User::updateByContactUpdate prevented any update to the user-contact table since the rows have been + * created in version 1435. This version fixes this bug but the user-contact rows are outdated, we need to regenerate + * them. + */ +function update_1444() +{ + DBA::e('TRUNCATE TABLE `user-contact`'); + + $contacts = DBA::select('contact', [], ["`uid` != ?", 0]); + while ($contact = DBA::fetch($contacts)) { + Contact\User::insertForContactArray($contact); + } + + return Update::SUCCESS; +}