Notification by mail: Improvement for the threading of notifications, new headers to support filtering.

This commit is contained in:
Michael Vogel 2014-08-21 00:53:01 +02:00
parent 2769089120
commit 716e0b073f
1 changed files with 34 additions and 30 deletions

View File

@ -28,6 +28,13 @@ function notification($params) {
$sender_email = t('noreply') . '@' . $hostname;
$additional_mail_header = "";
$additional_mail_header .= "Precedence: list\n";
$additional_mail_header .= "X-Friendica-Host: ".$hostname."\n";
$additional_mail_header .= "X-Friendica-Platform: ".FRIENDICA_PLATFORM."\n";
$additional_mail_header .= "X-Friendica-Version: ".FRIENDICA_VERSION."\n";
$additional_mail_header .= "List-ID: <notification.".$hostname.">\n";
$additional_mail_header .= "List-Archive: <".$a->get_baseurl()."/notifications/system>\n";
if(array_key_exists('item',$params)) {
$title = $params['item']['title'];
$body = $params['item']['body'];
@ -367,7 +374,8 @@ function notification($params) {
logger('notification: sending notification email');
$id_for_parent = "${params['parent']}@${hostname}";
if (isset($params['parent']) AND (intval($params['parent']) != 0)) {
$id_for_parent = $params['parent']."@".$hostname;
// Is this the first email notification for this parent item and user?
@ -378,8 +386,7 @@ function notification($params) {
// If so, create the record of it and use a message-id smtp header.
if(!$r) {
logger("notify_id:" . intval($notify_id). ", parent: " . intval($params['parent']) . "uid: " .
intval($params['uid']), LOGGER_DEBUG);
logger("notify_id:".intval($notify_id).", parent: ".intval($params['parent'])."uid: ".intval($params['uid']), LOGGER_DEBUG);
$r = q("insert into `notify-threads` (`notify-id`, `master-parent-item`, `receiver-uid`, `parent-item`)
values(%d,%d,%d,%d)",
intval($notify_id),
@ -391,15 +398,12 @@ intval($params['uid']), LOGGER_DEBUG);
$log_msg = "include/enotify: No previous notification found for this parent:\n" .
" parent: ${params['parent']}\n" . " uid : ${params['uid']}\n";
logger($log_msg, LOGGER_DEBUG);
}
} else {
// If not, just "follow" the thread.
else {
$additional_mail_header = "References: <${id_for_parent}>\nIn-Reply-To: <${id_for_parent}>\n";
$additional_mail_header .= "References: <${id_for_parent}>\nIn-Reply-To: <${id_for_parent}>\n";
logger("include/enotify: There's already a notification for this parent:\n" . print_r($r, true), LOGGER_DEBUG);
}
}
$textversion = strip_tags(html_entity_decode(bbcode(stripslashes(str_replace(array("\\r\\n", "\\r", "\\n"), "\n",