Fix user-contact rows not being updated in Contact\User::updateByContactUpdate

- Add new update function to regenerate potentially outdated user-contact rows
This commit is contained in:
Hypolite Petovan 2021-11-10 07:30:02 -05:00
parent fd0d17df31
commit f7714c09e6
2 changed files with 22 additions and 12 deletions

View File

@ -95,16 +95,17 @@ class User
$update_fields = self::preparedFields($fields); $update_fields = self::preparedFields($fields);
if (!empty($update_fields)) { if (!empty($update_fields)) {
$contacts = DBA::select('contact', ['uri-id', 'uid'], $condition); $contacts = DBA::select('contact', ['uri-id', 'uid'], $condition);
while ($row = DBA::fetch($contacts)) { while ($contact = DBA::fetch($contacts)) {
if (empty($row['uri-id']) || empty($contact['uid'])) { if (empty($contact['uri-id']) || empty($contact['uid'])) {
continue; continue;
} }
$ret = DBA::update('user-contact', $update_fields, ['uri-id' => $row['uri-id'], 'uid' => $row['uid']]); $ret = DBA::update('user-contact', $update_fields, ['uri-id' => $contact['uri-id'], 'uid' => $contact['uid']]);
Logger::info('Updated user contact', ['uid' => $row['uid'], 'uri-id' => $row['uri-id'], 'ret' => $ret]); Logger::info('Updated user contact', ['uid' => $contact['uid'], 'uri-id' => $contact['uri-id'], 'ret' => $ret]);
} }
DBA::close($contacts); DBA::close($contacts);
} }
DBA::commit(); DBA::commit();
} }

View File

@ -1000,14 +1000,6 @@ function update_1434()
return Update::SUCCESS; return Update::SUCCESS;
} }
function update_1435()
{
$contacts = DBA::select('contact', [], ["`uid` != ?", 0]);
while ($contact = DBA::fetch($contacts)) {
Contact\User::insertForContactArray($contact);
}
}
function update_1438() function update_1438()
{ {
DBA::update('photo', ['photo-type' => Photo::USER_AVATAR], ['profile' => true]); DBA::update('photo', ['photo-type' => Photo::USER_AVATAR], ['profile' => true]);
@ -1061,3 +1053,20 @@ function update_1442()
return Update::SUCCESS; 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;
}