Issue 11893: Postupdate to fix wrong parents

This commit is contained in:
Michael 2022-09-06 20:00:06 +00:00
parent f0622163b2
commit ec8377a8c7
2 changed files with 56 additions and 0 deletions

View File

@ -111,6 +111,9 @@ class PostUpdate
if (!self::update1452()) {
return false;
}
if (!self::update1483()) {
return false;
}
return true;
}
@ -1085,4 +1088,37 @@ class PostUpdate
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
*/
public 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)) {
echo $post['uri-id'] . "\n";
$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;
}
/**
* 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
*