kopia lustrzana https://github.com/friendica/friendica
Fetch the own single post if we are processing a feed of multiple entries
rodzic
8e17be7225
commit
ec929d8207
|
@ -328,6 +328,7 @@ class ostatus {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($entries->length == 1) {
|
if ($entries->length == 1) {
|
||||||
|
// We reformat the XML to make it better readable
|
||||||
$doc2 = new DOMDocument();
|
$doc2 = new DOMDocument();
|
||||||
$doc2->loadXML($xml);
|
$doc2->loadXML($xml);
|
||||||
$doc2->preserveWhiteSpace = false;
|
$doc2->preserveWhiteSpace = false;
|
||||||
|
@ -336,6 +337,8 @@ class ostatus {
|
||||||
|
|
||||||
$header["protocol"] = PROTOCOL_OSTATUS_SALMON;
|
$header["protocol"] = PROTOCOL_OSTATUS_SALMON;
|
||||||
$header["source"] = $xml2;
|
$header["source"] = $xml2;
|
||||||
|
} elseif (!$initialize) {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fetch the first author
|
// Fetch the first author
|
||||||
|
@ -351,10 +354,6 @@ class ostatus {
|
||||||
$entrylist[] = $entry;
|
$entrylist[] = $entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$initialize && (count($entrylist) > 1)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (array_reverse($entrylist) AS $entry) {
|
foreach (array_reverse($entrylist) AS $entry) {
|
||||||
// fetch the author
|
// fetch the author
|
||||||
$authorelement = $xpath->query('/atom:entry/atom:author', $entry);
|
$authorelement = $xpath->query('/atom:entry/atom:author', $entry);
|
||||||
|
@ -583,19 +582,23 @@ class ostatus {
|
||||||
$item["body"] = html2bbcode($clear_text) . '[spoiler]' . $item["body"] . '[/spoiler]';
|
$item["body"] = html2bbcode($clear_text) . '[spoiler]' . $item["body"] . '[/spoiler]';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (($self != '') && empty($item['protocol'])) {
|
||||||
|
self::fetchSelf($self, $item);
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($item["conversation-href"])) {
|
if (!empty($item["conversation-href"])) {
|
||||||
self::fetchConversation($item['conversation-href'], $item['conversation-uri']);
|
self::fetchConversation($item['conversation-href'], $item['conversation-uri']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($item["parent-uri"]) && ($related != '')) {
|
if (isset($item["parent-uri"]) && ($related != '')) {
|
||||||
self::FetchRelated($related, $item["parent-uri"], $importer);
|
self::fetchRelated($related, $item["parent-uri"], $importer);
|
||||||
$item["type"] = 'remote-comment';
|
$item["type"] = 'remote-comment';
|
||||||
$item["gravity"] = GRAVITY_COMMENT;
|
$item["gravity"] = GRAVITY_COMMENT;
|
||||||
} else {
|
} else {
|
||||||
$item["parent-uri"] = $item["uri"];
|
$item["parent-uri"] = $item["uri"];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($item['author-link'] != '') && !empty($header["protocol"])) {
|
if (($item['author-link'] != '') && !empty($item['protocol'])) {
|
||||||
$item = store_conversation($item);
|
$item = store_conversation($item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -727,11 +730,53 @@ class ostatus {
|
||||||
|
|
||||||
$conv_data['source'] = $doc2->saveXML();
|
$conv_data['source'] = $doc2->saveXML();
|
||||||
|
|
||||||
|
$condition = array('item-uri' => $conv_data['uri'],'protocol' => PROTOCOL_OSTATUS_FEED);
|
||||||
|
if (dba::exists('conversation', $condition)) {
|
||||||
|
logger('Delete deprecated entry for URI '.$conv_data['uri'], LOGGER_DEBUG);
|
||||||
|
dba::delete('conversation', array('item-uri' => $conv_data['uri']));
|
||||||
|
}
|
||||||
|
|
||||||
logger('Store conversation data for uri '.$conv_data['uri'], LOGGER_DEBUG);
|
logger('Store conversation data for uri '.$conv_data['uri'], LOGGER_DEBUG);
|
||||||
store_conversation($conv_data);
|
store_conversation($conv_data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Fetch the own post so that it can be stored later
|
||||||
|
* @param array $item The item array
|
||||||
|
*
|
||||||
|
* We want to store the original data for later processing.
|
||||||
|
* This function is meant for cases where we process a feed with multiple entries.
|
||||||
|
* In that case we need to fetch the single posts here.
|
||||||
|
*
|
||||||
|
* @param string $self The link to the self item
|
||||||
|
*/
|
||||||
|
private static function fetchSelf($self, &$item) {
|
||||||
|
$condition = array('`item-uri` = ? AND `protocol` IN (?, ?)', $self, PROTOCOL_DFRN, PROTOCOL_OSTATUS_SALMON);
|
||||||
|
if (dba::exists('conversation', $condition)) {
|
||||||
|
logger('Conversation '.$item['uri'].' is already stored.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$self_data = z_fetch_url($self);
|
||||||
|
|
||||||
|
if (!$self_data['success']) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// We reformat the XML to make it better readable
|
||||||
|
$doc = new DOMDocument();
|
||||||
|
$doc->loadXML($self_data['body']);
|
||||||
|
$doc->preserveWhiteSpace = false;
|
||||||
|
$doc->formatOutput = true;
|
||||||
|
$xml = $doc->saveXML();
|
||||||
|
|
||||||
|
$item["protocol"] = PROTOCOL_OSTATUS_SALMON;
|
||||||
|
$item["source"] = $xml;
|
||||||
|
|
||||||
|
logger('Conversation '.$item['uri'].' is now fetched.');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Fetch related posts and processes them
|
* @brief Fetch related posts and processes them
|
||||||
*
|
*
|
||||||
|
|
Ładowanie…
Reference in New Issue