Ensure parent exists before adding reply to elements in OStatus and Feed
- Address https://github.com/friendica/friendica/issues/10474#issuecomment-927118628
This commit is contained in:
parent
1cf759d414
commit
9d77958247
2 changed files with 39 additions and 31 deletions
|
@ -1146,27 +1146,31 @@ class Feed
|
||||||
if ($item['gravity'] != GRAVITY_PARENT) {
|
if ($item['gravity'] != GRAVITY_PARENT) {
|
||||||
$parent = Post::selectFirst(['guid', 'author-link', 'owner-link'], ['id' => $item['parent']]);
|
$parent = Post::selectFirst(['guid', 'author-link', 'owner-link'], ['id' => $item['parent']]);
|
||||||
|
|
||||||
$thrparent = Post::selectFirst(['guid', 'author-link', 'owner-link', 'plink'], ['uid' => $owner["uid"], 'uri' => $item['thr-parent']]);
|
$thrparent = Post::selectFirst(['guid', 'author-link', 'owner-link', 'plink'], ['uid' => $owner['uid'], 'uri' => $item['thr-parent']]);
|
||||||
|
|
||||||
if (DBA::isResult($thrparent)) {
|
if (DBA::isResult($thrparent)) {
|
||||||
$mentioned[$thrparent["author-link"]] = $thrparent["author-link"];
|
$mentioned[$thrparent['author-link']] = $thrparent['author-link'];
|
||||||
$mentioned[$thrparent["owner-link"]] = $thrparent["owner-link"];
|
$mentioned[$thrparent['owner-link']] = $thrparent['owner-link'];
|
||||||
$parent_plink = $thrparent["plink"];
|
$parent_plink = $thrparent['plink'];
|
||||||
|
} elseif (DBA::isResult($parent)) {
|
||||||
|
$mentioned[$parent['author-link']] = $parent['author-link'];
|
||||||
|
$mentioned[$parent['owner-link']] = $parent['owner-link'];
|
||||||
|
$parent_plink = DI::baseUrl() . '/display/' . $parent['guid'];
|
||||||
} else {
|
} else {
|
||||||
$mentioned[$parent["author-link"]] = $parent["author-link"];
|
DI::logger()->notice('Missing parent and thr-parent for child item', ['item' => $item]);
|
||||||
$mentioned[$parent["owner-link"]] = $parent["owner-link"];
|
|
||||||
$parent_plink = DI::baseUrl()."/display/".$parent["guid"];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isset($parent_plink)) {
|
||||||
$attributes = [
|
$attributes = [
|
||||||
"ref" => $item['thr-parent'],
|
'ref' => $item['thr-parent'],
|
||||||
"href" => $parent_plink];
|
'href' => $parent_plink];
|
||||||
XML::addElement($doc, $entry, "thr:in-reply-to", "", $attributes);
|
XML::addElement($doc, $entry, 'thr:in-reply-to', '', $attributes);
|
||||||
|
|
||||||
$attributes = [
|
$attributes = [
|
||||||
"rel" => "related",
|
'rel' => 'related',
|
||||||
"href" => $parent_plink];
|
'href' => $parent_plink];
|
||||||
XML::addElement($doc, $entry, "link", "", $attributes);
|
XML::addElement($doc, $entry, 'link', '', $attributes);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// uri-id isn't present for follow entry pseudo-items
|
// uri-id isn't present for follow entry pseudo-items
|
||||||
|
@ -1177,7 +1181,7 @@ class Feed
|
||||||
|
|
||||||
foreach ($tags as $tag) {
|
foreach ($tags as $tag) {
|
||||||
if ($tag['type'] == Tag::HASHTAG) {
|
if ($tag['type'] == Tag::HASHTAG) {
|
||||||
XML::addElement($doc, $entry, "category", "", ["term" => $tag['name']]);
|
XML::addElement($doc, $entry, 'category', '', ['term' => $tag['name']]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1931,27 +1931,31 @@ class OStatus
|
||||||
if ($item['gravity'] != GRAVITY_PARENT) {
|
if ($item['gravity'] != GRAVITY_PARENT) {
|
||||||
$parent = Post::selectFirst(['guid', 'author-link', 'owner-link'], ['id' => $item['parent']]);
|
$parent = Post::selectFirst(['guid', 'author-link', 'owner-link'], ['id' => $item['parent']]);
|
||||||
|
|
||||||
$thrparent = Post::selectFirst(['guid', 'author-link', 'owner-link', 'plink'], ['uid' => $owner["uid"], 'uri' => $item['thr-parent']]);
|
$thrparent = Post::selectFirst(['guid', 'author-link', 'owner-link', 'plink'], ['uid' => $owner['uid'], 'uri' => $item['thr-parent']]);
|
||||||
|
|
||||||
if (DBA::isResult($thrparent)) {
|
if (DBA::isResult($thrparent)) {
|
||||||
$mentioned[$thrparent["author-link"]] = $thrparent["author-link"];
|
$mentioned[$thrparent['author-link']] = $thrparent['author-link'];
|
||||||
$mentioned[$thrparent["owner-link"]] = $thrparent["owner-link"];
|
$mentioned[$thrparent['owner-link']] = $thrparent['owner-link'];
|
||||||
$parent_plink = $thrparent["plink"];
|
$parent_plink = $thrparent['plink'];
|
||||||
|
} elseif (DBA::isResult($parent)) {
|
||||||
|
$mentioned[$parent['author-link']] = $parent['author-link'];
|
||||||
|
$mentioned[$parent['owner-link']] = $parent['owner-link'];
|
||||||
|
$parent_plink = DI::baseUrl() . '/display/' . $parent['guid'];
|
||||||
} else {
|
} else {
|
||||||
$mentioned[$parent["author-link"]] = $parent["author-link"];
|
DI::logger()->notice('Missing parent and thr-parent for child item', ['item' => $item]);
|
||||||
$mentioned[$parent["owner-link"]] = $parent["owner-link"];
|
|
||||||
$parent_plink = DI::baseUrl()."/display/".$parent["guid"];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isset($parent_plink)) {
|
||||||
$attributes = [
|
$attributes = [
|
||||||
"ref" => $item['thr-parent'],
|
'ref' => $item['thr-parent'],
|
||||||
"href" => $parent_plink];
|
'href' => $parent_plink];
|
||||||
XML::addElement($doc, $entry, "thr:in-reply-to", "", $attributes);
|
XML::addElement($doc, $entry, 'thr:in-reply-to', '', $attributes);
|
||||||
|
|
||||||
$attributes = [
|
$attributes = [
|
||||||
"rel" => "related",
|
'rel' => 'related',
|
||||||
"href" => $parent_plink];
|
'href' => $parent_plink];
|
||||||
XML::addElement($doc, $entry, "link", "", $attributes);
|
XML::addElement($doc, $entry, 'link', '', $attributes);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (intval($item['parent']) > 0) {
|
if (intval($item['parent']) > 0) {
|
||||||
|
|
Loading…
Reference in a new issue