use Friendica\Protocol\Email;
use dba;
-require_once 'include/html2plain.php';
require_once 'include/items.php';
-require_once 'include/bbcode.php';
/// @todo This is some ugly code that needs to be split into several methods
$relocate = false;
$top_level = false;
$recipients = [];
- $url_recipients = [];
$followup = false;
$normal_mode = true;
+ $item = null;
+
$recipients[] = $contact_id;
if ($cmd === 'mail') {
}
- $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `blocked` = 0 AND `pending` = 0",
- intval($contact_id)
+ // We don't deliver our items to blocked or pending contacts, and not to ourselves either
+ $contact = dba::selectFirst('contact', [],
+ ['id' => $contact_id, 'blocked' => false, 'pending' => false, 'self' => false]
);
-
- if (DBM::is_result($r)) {
- $contact = $r[0];
- }
- if ($contact['self']) {
+ if (!DBM::is_result($contact)) {
return;
}
+
$deliver_status = 0;
// Transmit via Diaspora if not possible via Friendica
logger('notifier: '.$target_item["guid"].' dfrndelivery: '.$contact['name']);
if ($mail) {
- $item['body'] = Item::fixPrivatePhotos($item['body'],$owner['uid'],null,$message[0]['contact-id']);
+ $item['body'] = Item::fixPrivatePhotos($item['body'], $owner['uid'], null, $item['contact-id']);
$atom = DFRN::mail($item, $owner);
} elseif ($fsuggest) {
$atom = DFRN::fsuggest($item, $owner);
- q("DELETE FROM `fsuggest` WHERE `id` = %d LIMIT 1", intval($item['id']));
+ dba::delete('fsuggest', ['id' => $item['id']]);
} elseif ($relocate) {
$atom = DFRN::relocate($owner, $uid);
} elseif ($followup) {
}
if ($normal_mode) {
- if ($item_id == $item['id'] || $item['id'] == $item['parent']) {
+ // Only add the parent when we don't delete other items.
+ if ($item_id == $item['id'] || (($item['id'] == $item['parent']) && ($cmd != 'drop'))) {
$item["entry:comment-allow"] = true;
$item["entry:cid"] = (($top_level) ? $contact['id'] : 0);
$msgitems[] = $item;
if ($x && count($x)) {
$write_flag = ((($x[0]['rel']) && ($x[0]['rel'] != CONTACT_IS_SHARING)) ? true : false);
if ((($owner['page-flags'] == PAGE_COMMUNITY) || $write_flag) && !$x[0]['writable']) {
- q("UPDATE `contact` SET `writable` = 1 WHERE `id` = %d",
- intval($x[0]['id'])
- );
+ dba::update('contact', ['writable' => true], ['id' => $x[0]['id']]);
$x[0]['writable'] = 1;
}
if (!Queue::wasDelayed($contact['id'])) {
$deliver_status = DFRN::deliver($owner, $contact, $atom);
} else {
- $deliver_status = (-1);
+ $deliver_status = -1;
}
logger('notifier: dfrn_delivery to '.$contact["url"].' with guid '.$target_item["guid"].' returns '.$deliver_status);
if ($deliver_status < 0) {
logger('notifier: delivery failed: queuing message');
Queue::add($contact['id'], NETWORK_DFRN, $atom, false, $target_item['guid']);
+ }
- // The message could not be delivered. We mark the contact as "dead"
- Contact::markForArchival($contact);
- } else {
+ if (($deliver_status >= 200) && ($deliver_status <= 299)) {
// We successfully delivered a message, the contact is alive
Contact::unmarkForArchival($contact);
+ } else {
+ // The message could not be delivered. We mark the contact as "dead"
+ Contact::markForArchival($contact);
}
break;
$headers = 'From: '.Email::encodeHeader($local_user[0]['username'],'UTF-8').' <'.$local_user[0]['email'].'>'."\n";
}
} else {
- $headers = 'From: '. Email::encodeHeader($local_user[0]['username'],'UTF-8') .' <'. L10n::t('noreply') .'@'.$a->get_hostname() .'>'. "\n";
+ $headers = 'From: '. Email::encodeHeader($local_user[0]['username'], 'UTF-8') . ' <noreply@' . $a->get_hostname() . '>' . "\n";
}
//if ($reply_to)