Preparation for relay posts with DFRN

This commit is contained in:
Michael 2018-04-27 05:11:52 +00:00
parent 4904be0d6f
commit 9f5a6c05fb
2 changed files with 23 additions and 18 deletions

View file

@ -1405,25 +1405,27 @@ class DFRN
{ {
$a = get_app(); $a = get_app();
if (empty($contact['addr'])) { if (!$public_batch) {
logger('Empty contact handle for ' . $contact['id'] . ' - ' . $contact['url'] . ' - trying to update it.');
if (Contact::updateFromProbe($contact['id'])) {
$new_contact = dba::selectFirst('contact', ['addr'], ['id' => $contact['id']]);
$contact['addr'] = $new_contact['addr'];
}
if (empty($contact['addr'])) { if (empty($contact['addr'])) {
logger('Unable to find contact handle for ' . $contact['id'] . ' - ' . $contact['url']); logger('Empty contact handle for ' . $contact['id'] . ' - ' . $contact['url'] . ' - trying to update it.');
Contact::markForArchival($contact); if (Contact::updateFromProbe($contact['id'])) {
return -21; $new_contact = dba::selectFirst('contact', ['addr'], ['id' => $contact['id']]);
} $contact['addr'] = $new_contact['addr'];
} }
$fcontact = Diaspora::personByHandle($contact['addr']); if (empty($contact['addr'])) {
if (empty($fcontact)) { logger('Unable to find contact handle for ' . $contact['id'] . ' - ' . $contact['url']);
logger('Unable to find contact details for ' . $contact['id'] . ' - ' . $contact['addr']); Contact::markForArchival($contact);
Contact::markForArchival($contact); return -21;
return -22; }
}
$fcontact = Diaspora::personByHandle($contact['addr']);
if (empty($fcontact)) {
logger('Unable to find contact details for ' . $contact['id'] . ' - ' . $contact['addr']);
Contact::markForArchival($contact);
return -22;
}
} }
$envelope = Diaspora::buildMessage($atom, $owner, $contact, $owner['uprvkey'], $fcontact['pubkey'], $public_batch); $envelope = Diaspora::buildMessage($atom, $owner, $contact, $owner['uprvkey'], $fcontact['pubkey'], $public_batch);

View file

@ -269,7 +269,10 @@ class Delivery extends BaseObject {
// We don't have a relationship with contacts on a public post. // We don't have a relationship with contacts on a public post.
// Se we transmit with the new method and via Diaspora as a fallback // Se we transmit with the new method and via Diaspora as a fallback
if ($items[0]['uid'] == 0) { if ($items[0]['uid'] == 0) {
$deliver_status = DFRN::transmit($owner, $contact, $atom); // Transmit in public if it's a relay post
$public_dfrn = ($contact['contact-type'] == ACCOUNT_TYPE_RELAY);
$deliver_status = DFRN::transmit($owner, $contact, $atom, $public_dfrn);
if (($deliver_status < 200) || ($deliver_status > 299)) { if (($deliver_status < 200) || ($deliver_status > 299)) {
// Transmit via Diaspora if not possible via Friendica // Transmit via Diaspora if not possible via Friendica
self::deliverDiaspora($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup); self::deliverDiaspora($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup);