- logger('notifier: dfrndelivery: ' . $contact['name']);
- $deliver_status = dfrn_deliver($owner,$contact,$atom);
-
- logger('notifier: dfrn_delivery returns ' . $deliver_status);
-
- if($deliver_status == (-1)) {
- logger('notifier: delivery failed: queuing message');
- // queue message for redelivery
- add_to_queue($contact['id'],NETWORK_DFRN,$atom);
- }
- break;
- case NETWORK_OSTATUS:
-
- // Do not send to ostatus if we are not configured to send to public networks
- if($owner['prvnets'])
- break;
-
- if(get_config('system','ostatus_disabled') || get_config('system','dfrn_only'))
- break;
-
- if($followup && $contact['notify']) {
- logger('notifier: slapdelivery: ' . $contact['name']);
- $deliver_status = slapper($owner,$contact['notify'],$slap);
-
- if($deliver_status == (-1)) {
- // queue message for redelivery
- add_to_queue($contact['id'],NETWORK_OSTATUS,$slap);
- }
- } else {
-
- // only send salmon if public - e.g. if it's ok to notify
- // a public hub, it's ok to send a salmon
-
- if((count($slaps)) && ($public_message) && (! $expire)) {
- logger('notifier: slapdelivery: ' . $contact['name']);
- foreach($slaps as $slappy) {
- if($contact['notify']) {
- $deliver_status = slapper($owner,$contact['notify'],$slappy);
- if($deliver_status == (-1)) {
- // queue message for redelivery
- add_to_queue($contact['id'],NETWORK_OSTATUS,$slappy);
- }
- }
- }
- }
- }
- break;
-
- case NETWORK_MAIL:
- case NETWORK_MAIL2:
-
- if(get_config('system','dfrn_only'))
- break;
-
- // WARNING: does not currently convert to RFC2047 header encodings, etc.
-
- $addr = $contact['addr'];
- if(! strlen($addr))
- break;
-
- if($cmd === 'wall-new' || $cmd === 'comment-new') {
-
- $it = null;
- if($cmd === 'wall-new')
- $it = $items[0];
- else {
- $r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
- intval($argv[2]),
- intval($uid)
- );
- if(count($r))
- $it = $r[0];
- }
- if(! $it)
- break;
-
-
-
- $local_user = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
- intval($uid)
- );
- if(! count($local_user))
- break;
-
- $reply_to = '';
- $r1 = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1",
- intval($uid)
- );
- if($r1 && $r1[0]['reply_to'])
- $reply_to = $r1[0]['reply_to'];
-
- $subject = (($it['title']) ? email_header_encode($it['title'],'UTF-8') : t("\x28no subject\x29")) ;
-
- // only expose our real email address to true friends
- if(($contact['rel'] == CONTACT_IS_FRIEND) && (! $contact['blocked']))
- if($reply_to) {
- $headers = 'From: ' . email_header_encode($local_user[0]['username'],'UTF-8') . ' <' . $reply_to . '>' . "\n";
- $headers .= 'Sender: '.$local_user[0]['email']."\n";
- } else
- $headers = 'From: ' . email_header_encode($local_user[0]['username'],'UTF-8') . ' <' . $local_user[0]['email'] . '>' . "\n";
- else
- $headers = 'From: ' . email_header_encode($local_user[0]['username'],'UTF-8') . ' <' . t('noreply') . '@' . $a->get_hostname() . '>' . "\n";
-
- //if($reply_to)
- // $headers .= 'Reply-to: ' . $reply_to . "\n";
-
- // for testing purposes: Collect exported mails
- //$file = tempnam("/tmp/friendica/", "mail-out2-");
- //file_put_contents($file, json_encode($it));
-
- $headers .= 'Message-Id: <' . iri2msgid($it['uri']) . '>' . "\n";
-
- if($it['uri'] !== $it['parent-uri']) {
- $headers .= "References: <".iri2msgid($it["parent-uri"]).">";
-
- // If Threading is enabled, write down the correct parent
- if (($it["thr-parent"] != "") and ($it["thr-parent"] != $it["parent-uri"]))
- $headers .= " <".iri2msgid($it["thr-parent"]).">";
- $headers .= "\n";
-
- if(!$it['title']) {
- $r = q("SELECT `title` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
- dbesc($it['parent-uri']),
- intval($uid));
-
- if(count($r) AND ($r[0]['title'] != ''))
- $subject = $r[0]['title'];
- else {
- $r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d LIMIT 1",
- dbesc($it['parent-uri']),
- intval($uid));
-
- if(count($r) AND ($r[0]['title'] != ''))
- $subject = $r[0]['title'];
- }
- }
- if(strncasecmp($subject,'RE:',3))
- $subject = 'Re: '.$subject;
- }
- email_send($addr, $subject, $headers, $it);
- }
- break;
- case NETWORK_DIASPORA:
- require_once('include/diaspora.php');
-
- if(get_config('system','dfrn_only') || (! get_config('system','diaspora_enabled')))
- break;
-
- if($mail) {
- diaspora_send_mail($item,$owner,$contact);
- break;
- }
-
- if(! $normal_mode)
- break;
-
- // special handling for followup to public post
- // all other public posts processed as public batches further below
-
- if($public_message) {
- if($followup)
- diaspora_send_followup($target_item,$owner,$contact, true);
- break;
- }
-
- if(! $contact['pubkey'])
- break;
-
- if($target_item['verb'] === ACTIVITY_DISLIKE) {
- // unsupported
- break;
- }
- elseif(($target_item['deleted']) && (($target_item['uri'] === $target_item['parent-uri']) || $followup)) {
- // send both top-level retractions and relayable retractions for owner to relay
- diaspora_send_retraction($target_item,$owner,$contact);
- break;
- }
- elseif($followup) {
- // send comments and likes to owner to relay
- diaspora_send_followup($target_item,$owner,$contact);
- break;
- }
- elseif($target_item['uri'] !== $target_item['parent-uri']) {
- // we are the relay - send comments, likes and relayable_retractions
- // (of comments and likes) to our conversants
- diaspora_send_relay($target_item,$owner,$contact);
- break;
- }
- elseif(($top_level) && (! $walltowall)) {
- // currently no workable solution for sending walltowall
- diaspora_send_status($target_item,$owner,$contact);
- break;
- }
-
- break;
-
- case NETWORK_FEED:
- case NETWORK_FACEBOOK:
- if(get_config('system','dfrn_only'))
- break;
- case NETWORK_PUMPIO:
- if(get_config('system','dfrn_only'))
- break;
- default:
- break;
- }