Merge pull request #4936 from annando/fix-reshare

Diaspora reshares should now always reshare the correct content
pull/4948/head
Hypolite Petovan 2018-04-27 10:38:51 -04:00 zatwierdzone przez GitHub
commit 99f288446b
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
1 zmienionych plików z 25 dodań i 15 usunięć

Wyświetl plik

@ -596,9 +596,9 @@ class Diaspora
} }
$importer = ["uid" => 0, "page-flags" => PAGE_FREELOVE]; $importer = ["uid" => 0, "page-flags" => PAGE_FREELOVE];
$message_id = self::dispatch($importer, $msg, $fields); $success = self::dispatch($importer, $msg, $fields);
return $message_id; return $success;
} }
/** /**
@ -2729,10 +2729,15 @@ class Diaspora
*/ */
public static function originalItem($guid, $orig_author) public static function originalItem($guid, $orig_author)
{ {
if (empty($guid)) {
logger('Empty guid. Quitting.');
return false;
}
// Do we already have this item? // Do we already have this item?
$fields = ['body', 'tag', 'app', 'created', 'object-type', 'uri', 'guid', $fields = ['body', 'tag', 'app', 'created', 'object-type', 'uri', 'guid',
'author-name', 'author-link', 'author-avatar']; 'author-name', 'author-link', 'author-avatar'];
$condition = ['guid' => $guid, 'visible' => true, 'deleted' => false]; $condition = ['guid' => $guid, 'visible' => true, 'deleted' => false, 'private' => false];
$item = dba::selectfirst('item', $fields, $condition); $item = dba::selectfirst('item', $fields, $condition);
if (DBM::is_result($item)) { if (DBM::is_result($item)) {
@ -2742,7 +2747,7 @@ class Diaspora
// Then refetch the content, if it is a reshare from a reshare. // Then refetch the content, if it is a reshare from a reshare.
// If it is a reshared post from another network then reformat to avoid display problems with two share elements // If it is a reshared post from another network then reformat to avoid display problems with two share elements
if (self::isReshare($item["body"], true)) { if (self::isReshare($item["body"], true)) {
$r = []; $item = [];
} elseif (self::isReshare($item["body"], false) || strstr($item["body"], "[share")) { } elseif (self::isReshare($item["body"], false) || strstr($item["body"], "[share")) {
$item["body"] = Markdown::toBBCode(BBCode::toMarkdown($item["body"])); $item["body"] = Markdown::toBBCode(BBCode::toMarkdown($item["body"]));
@ -2757,21 +2762,26 @@ class Diaspora
} }
} }
if (!DBM::is_result($r)) { if (!DBM::is_result($item)) {
$server = "https://".substr($orig_author, strpos($orig_author, "@") + 1); if (empty($orig_author)) {
logger("1st try: reshared message ".$guid." will be fetched via SSL from the server ".$server); logger('Empty author for guid ' . $guid . '. Quitting.');
$item_id = self::storeByGuid($guid, $server); return false;
if (!$item_id) {
$server = "http://".substr($orig_author, strpos($orig_author, "@") + 1);
logger("2nd try: reshared message ".$guid." will be fetched without SLL from the server ".$server);
$item_id = self::storeByGuid($guid, $server);
} }
if ($item_id) { $server = "https://".substr($orig_author, strpos($orig_author, "@") + 1);
logger("1st try: reshared message ".$guid." will be fetched via SSL from the server ".$server);
$stored = self::storeByGuid($guid, $server);
if (!$stored) {
$server = "http://".substr($orig_author, strpos($orig_author, "@") + 1);
logger("2nd try: reshared message ".$guid." will be fetched without SSL from the server ".$server);
$stored = self::storeByGuid($guid, $server);
}
if ($stored) {
$fields = ['body', 'tag', 'app', 'created', 'object-type', 'uri', 'guid', $fields = ['body', 'tag', 'app', 'created', 'object-type', 'uri', 'guid',
'author-name', 'author-link', 'author-avatar']; 'author-name', 'author-link', 'author-avatar'];
$condition = ['id' => $item_id, 'visible' => true, 'deleted' => false]; $condition = ['guid' => $guid, 'visible' => true, 'deleted' => false, 'private' => false];
$item = dba::selectfirst('item', $fields, $condition); $item = dba::selectfirst('item', $fields, $condition);
if (DBM::is_result($item)) { if (DBM::is_result($item)) {