$last_updated = $contact['last-item'];
}
- $fields = ['last-item' => $last_updated, 'last-update' => $updated, 'success_update' => $updated];
+ $fields = ['last-item' => DateTimeFormat::utc($last_updated), 'last-update' => $updated, 'success_update' => $updated];
self::updateContact($contact, $fields);
Contact::unmarkForArchival($contact);
} else {
// Are we allowed to import from this person?
- if ($contact['rel'] == CONTACT_IS_FOLLOWER || $contact['blocked'] || $contact['readonly']) {
+ if ($contact['rel'] == CONTACT_IS_FOLLOWER || $contact['blocked']) {
// set the last-update so we don't keep polling
dba::update('contact', ['last-update' => DateTimeFormat::utcNow()], ['id' => $contact['id']]);
return;
logger("Consume feed of contact ".$contact['id']);
- // Use a copy of the contact to avoid problems.
- // The contact parameter is called by reference.
- $contact2 = $contact;
- consume_feed($xml, $importer, $contact2, $hub, 1, 1);
+ consume_feed($xml, $importer, $contact, $hub);
- // do it twice. Ensures that children of parents which may be later in the stream aren't tossed
-
- $contact2 = $contact;
- consume_feed($xml, $importer, $contact2, $hub, 1, 2);
+ // do it a second time for DFRN so that any children find their parents.
+ if ($contact['network'] === NETWORK_DFRN) {
+ consume_feed($xml, $importer, $contact, $hub);
+ }
$hubmode = 'subscribe';
- if ($contact['network'] === NETWORK_DFRN || $contact['blocked'] || $contact['readonly']) {
+ if ($contact['network'] === NETWORK_DFRN || $contact['blocked']) {
$hubmode = 'unsubscribe';
}