From 86c0eac27d4ed2a454f752615a1b446cf2acd2b2 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 31 Jan 2012 20:03:46 -0800 Subject: [PATCH] transport for email contacts phase II --- boot.php | 2 ++ include/delivery.php | 12 ++++++++++-- include/notifier.php | 6 ++++-- include/poller.php | 4 ++-- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/boot.php b/boot.php index 0a21e78f86..05df15b9c8 100755 --- a/boot.php +++ b/boot.php @@ -101,10 +101,12 @@ define ( 'NETWORK_OSTATUS', 'stat'); // status.net, identi.ca, GNU-s define ( 'NETWORK_FEED', 'feed'); // RSS/Atom feeds with no known "post/notify" protocol define ( 'NETWORK_DIASPORA', 'dspr'); // Diaspora define ( 'NETWORK_MAIL', 'mail'); // IMAP/POP +define ( 'NETWORK_MAIL2', 'mai2'); // extended IMAP/POP define ( 'NETWORK_FACEBOOK', 'face'); // Facebook API define ( 'NETWORK_LINKEDIN', 'lnkd'); // LinkedIn define ( 'NETWORK_XMPP', 'xmpp'); // XMPP define ( 'NETWORK_MYSPACE', 'mysp'); // MySpace +define ( 'NETWORK_GPLUS', 'goog'); // Google+ /** * Maximum number of "people who like (or don't like) this" that we will list by name diff --git a/include/delivery.php b/include/delivery.php index c05358868a..71ce300235 100755 --- a/include/delivery.php +++ b/include/delivery.php @@ -373,7 +373,8 @@ function delivery_run($argv, $argc){ break; case NETWORK_MAIL : - + case NETWORK_MAIL2: + if(get_config('system','dfrn_only')) break; // WARNING: does not currently convert to RFC2047 header encodings, etc. @@ -413,7 +414,14 @@ function delivery_run($argv, $argc){ $reply_to = $r1[0]['reply_to']; $subject = (($it['title']) ? $it['title'] : t("\x28no subject\x29")) ; - $headers = 'From: ' . $local_user[0]['username'] . ' <' . $local_user[0]['email'] . '>' . "\n"; + + // only expose our real email address to true friends + + if(($contact['rel'] == CONTACT_IS_FRIEND) && (! $contact['blocked'])) + $headers = 'From: ' . $local_user[0]['username'] . ' <' . $local_user[0]['email'] . '>' . "\n"; + else + $headers = 'From: ' . $local_user[0]['username'] . ' <' . t('noreply') . '@' . $a->get_hostname() . '>' . "\n"; + if($reply_to) $headers .= 'Reply-to: ' . $reply_to . "\n"; $headers .= 'Message-id: <' . $it['uri'] . '>' . "\n"; diff --git a/include/notifier.php b/include/notifier.php index ead7aebad4..53178ce53a 100755 --- a/include/notifier.php +++ b/include/notifier.php @@ -584,6 +584,7 @@ function notifier_run($argv, $argc){ break; case NETWORK_MAIL: + case NETWORK_MAIL2: if(get_config('system','dfrn_only')) break; @@ -629,7 +630,7 @@ function notifier_run($argv, $argc){ // only expose our real email address to true friends - if($contact['rel'] == CONTACT_IS_FRIEND) + if(($contact['rel'] == CONTACT_IS_FRIEND) && (! $contact['blocked'])) $headers = 'From: ' . $local_user[0]['username'] . ' <' . $local_user[0]['email'] . '>' . "\n"; else $headers = 'From: ' . $local_user[0]['username'] . ' <' . t('noreply') . '@' . $a->get_hostname() . '>' . "\n"; @@ -754,9 +755,10 @@ function notifier_run($argv, $argc){ ); $r2 = q("SELECT `id`, `name`,`network` FROM `contact` - WHERE `network` = '%s' AND `uid` = %d AND `blocked` = 0 AND `pending` = 0 + WHERE `network` in ( '%s', '%s') AND `uid` = %d AND `blocked` = 0 AND `pending` = 0 AND `rel` != %d order by rand() ", dbesc(NETWORK_DFRN), + dbesc(NETWORK_MAIL2), intval($owner['uid']), intval(CONTACT_IS_SHARING) ); diff --git a/include/poller.php b/include/poller.php index 89e4488b92..7d42c63b5f 100755 --- a/include/poller.php +++ b/include/poller.php @@ -369,7 +369,7 @@ function poller_run($argv, $argc){ $xml = fetch_url($contact['poll']); } - elseif($contact['network'] === NETWORK_MAIL) { + elseif($contact['network'] === NETWORK_MAIL || $contact['network'] === NETWORK_MAIL2) { $mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1); if($mail_disabled) @@ -462,7 +462,7 @@ function poller_run($argv, $argc){ $datarray['contact-id'] = $contact['id']; if($datarray['parent-uri'] === $datarray['uri']) $datarray['private'] = 1; - if(! get_pconfig($importer_uid,'system','allow_public_email_replies')) { + if(($contact['network'] === NETWORK_MAIL) && (! get_pconfig($importer_uid,'system','allow_public_email_replies'))) { $datarray['private'] = 1; $datarray['allow_cid'] = '<' . $contact['id'] . '>'; }