Merge pull request #11894 from annando/issue-11893-a

Issue 11893: Postupdate to fix wrong parents
This commit is contained in:
Hypolite Petovan 2022-09-06 19:40:37 -04:00 committed by GitHub
commit f762a38dbb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 55 additions and 0 deletions

View File

@ -111,6 +111,9 @@ class PostUpdate
if (!self::update1452()) { if (!self::update1452()) {
return false; return false;
} }
if (!self::update1483()) {
return false;
}
return true; return true;
} }
@ -1085,4 +1088,36 @@ class PostUpdate
return false; return false;
} }
/**
* Correct the parent.
* This fixes a bug that was introduced in the development of version 2022.09
*
* @return bool "true" when the job is done
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
private static function update1483()
{
// Was the script completed?
if (DI::config()->get('system', 'post_update_version') >= 1483) {
return true;
}
Logger::info('Start');
$posts = DBA::select('post-view', ['uri-id'], ['conversation' => './']);
while ($post = DBA::fetch($posts)) {
$parent = Item::getParent($post['uri-id']);
if ($parent != 0) {
DBA::update('post', ['parent-uri-id' => $parent], ['uri-id' => $post['uri-id']]);
DBA::update('post-user', ['parent-uri-id' => $parent], ['uri-id' => $post['uri-id']]);
}
}
DBA::close($posts);
DI::config()->set('system', 'post_update_version', 1483);
Logger::info('Done');
return true;
}
} }

View File

@ -701,6 +701,26 @@ class Item
return 0; return 0;
} }
/**
* Fetch the uri-id of the parent for the given uri-id
*
* @param integer $uriid
* @return integer
*/
public static function getParent(int $uriid): int
{
$thread_parent = Post::selectFirstPost(['thr-parent-id', 'gravity'], ['uri-id' => $uriid]);
if (empty($thread_parent)) {
return 0;
}
if ($thread_parent['gravity'] == GRAVITY_PARENT) {
return $uriid;
}
return self::getParent($thread_parent['thr-parent-id']);
}
/** /**
* Fetch top-level parent data for the given item array * Fetch top-level parent data for the given item array
* *