return;
}
- if (($contact['network'] != Protocol::MAIL) || $force) {
- Contact::updateFromProbe($contact_id, '', $force);
+ if (($contact['network'] != Protocol::MAIL) && $force) {
+ Contact::updateFromProbe($contact_id);
}
// Special treatment for wrongly detected local contacts
if (!$force && ($contact['network'] != Protocol::DFRN) && Contact::isLocalById($contact_id)) {
- Contact::updateFromProbe($contact_id, Protocol::DFRN, true);
+ Contact::updateFromProbe($contact_id, Protocol::DFRN);
$contact = DBA::selectFirst('contact', [], ['id' => $contact_id]);
}
return;
}
+ // Don't poll local contacts
+ if (User::getIdForURL($contact['url'])) {
+ Logger::info('Local contacts are not polled', ['id' => $contact['id']]);
+
+ // set the last-update so we don't keep polling
+ DBA::update('contact', ['last-update' => $updated], ['id' => $contact['id']]);
+ return;
+ }
+
// We don't poll AP contacts by now
if ($protocol === Protocol::ACTIVITYPUB) {
Logger::log("Don't poll AP contact");
}
$cookiejar = tempnam(get_temppath(), 'cookiejar-onepoll-');
- $curlResult = DI::httpRequest()->get($contact['poll'], false, ['cookiejar' => $cookiejar]);
+ $curlResult = DI::httpRequest()->get($contact['poll'], ['cookiejar' => $cookiejar]);
unlink($cookiejar);
if ($curlResult->isTimeout()) {
}
}
$condition = ['uri' => $refs_arr, 'uid' => $importer_uid];
- $parent = Item::selectFirst(['parent-uri'], $condition);
+ $parent = Item::selectFirst(['uri'], $condition);
if (DBA::isResult($parent)) {
- $datarray['parent-uri'] = $parent['parent-uri']; // Set the parent as the top-level item
+ $datarray['thr-parent'] = $parent['uri'];
}
}
$datarray['title'] = self::RemoveReply($datarray['title']);
// If it seems to be a reply but a header couldn't be found take the last message with matching subject
- if (empty($datarray['parent-uri']) && $reply) {
+ if (empty($datarray['thr-parent']) && $reply) {
$condition = ['title' => $datarray['title'], 'uid' => $importer_uid, 'network' => Protocol::MAIL];
$params = ['order' => ['created' => true]];
- $parent = Item::selectFirst(['parent-uri'], $condition, $params);
+ $parent = Item::selectFirst(['uri'], $condition, $params);
if (DBA::isResult($parent)) {
- $datarray['parent-uri'] = $parent['parent-uri'];
+ $datarray['thr-parent'] = $parent['uri'];
}
}
- if (empty($datarray['parent-uri'])) {
- $datarray['parent-uri'] = $datarray['uri'];
- }
-
$headers = imap_headerinfo($mbox, $meta->msgno);
$object = [];
$datarray['owner-link'] = "mailto:".$contact['addr'];
$datarray['owner-avatar'] = $contact['photo'];
- if ($datarray['parent-uri'] === $datarray['uri']) {
+ if ($datarray['thr-parent'] === $datarray['uri']) {
$datarray['private'] = Item::PRIVATE;
}
Logger::log("Mail: no mails for ".$mailconf['user']);
}
+ self::updateContact($contact, ['failed' => false, 'last-update' => $updated, 'success_update' => $updated]);
+ Contact::unmarkForArchival($contact);
+
Logger::log("Mail: closing connection for ".$mailconf['user']);
imap_close($mbox);
}