<?php
+require_once('include/email.php');
+
function notification($params) {
logger('notification: entry', LOGGER_DEBUG);
$product = FRIENDICA_PLATFORM;
$siteurl = $a->get_baseurl(true);
$thanks = t('Thank You,');
- $sitename = get_config('config','sitename');
+ $sitename = $a->config['sitename'];
$site_admin = sprintf( t('%s Administrator'), $sitename);
$sender_name = $product;
$parent_id = $params['parent'];
+ // Check to see if there was already a tag notify or comment notify for this post.
+ // If so don't create a second notification
+
+ $p = null;
+ $p = q("select id from notify where ( type = %d or type = %d ) and link = '%s' and uid = %d limit 1",
+ intval(NOTIFY_TAGSELF),
+ intval(NOTIFY_COMMENT),
+ dbesc($params['link']),
+ intval($params['uid'])
+ );
+ if($p and count($p)) {
+ pop_lang();
+ return;
+ }
+
// if it's a post figure out who's post it is.
// Before this we have the name of the replier on the subject rendering
// differents subjects for messages on the same thread.
- $subject = sprintf( t('[Friendica:Notify] Comment to conversation #%1$d by %1$s'), $parent_id, $params['source_name']);
+ $subject = sprintf( t('[Friendica:Notify] Comment to conversation #%1$d by %2$s'), $parent_id, $params['source_name']);
$preamble = sprintf( t('%s commented on an item/conversation you have been following.'), $params['source_name']);
$epreamble = $dest_str;
if($params['type'] == NOTIFY_WALL) {
$subject = sprintf( t('[Friendica:Notify] %s posted to your profile wall') , $params['source_name']);
- $preamble = sprintf( t('%1$s posted to your profile wall at %1$s') , $params['source_name'], $sitename);
+ $preamble = sprintf( t('%1$s posted to your profile wall at %2$s') , $params['source_name'], $sitename);
- $epreamble = sprintf( t('%1$s posted to [url=%2s]your wall[/url]') ,
+ $epreamble = sprintf( t('%1$s posted to [url=%2$s]your wall[/url]') ,
'[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
- $itemlink);
+ $params['link']);
$sitelink = t('Please visit %s to view and/or reply to the conversation.');
$tsitelink = sprintf( $sitelink, $siteurl );
if($params['type'] == NOTIFY_TAGSELF) {
$subject = sprintf( t('[Friendica:Notify] %s tagged you') , $params['source_name']);
$preamble = sprintf( t('%1$s tagged you at %2$s') , $params['source_name'], $sitename);
- $epreamble = sprintf( t('%1$s [url=%2s]tagged you[/url].') ,
+ $epreamble = sprintf( t('%1$s [url=%2$s]tagged you[/url].') ,
+ '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
+ $params['link']);
+
+ $sitelink = t('Please visit %s to view and/or reply to the conversation.');
+ $tsitelink = sprintf( $sitelink, $siteurl );
+ $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
+ $itemlink = $params['link'];
+ }
+
+ if($params['type'] == NOTIFY_POKE) {
+
+ $subject = sprintf( t('[Friendica:Notify] %1$s poked you') , $params['source_name']);
+ $preamble = sprintf( t('%1$s poked you at %2$s') , $params['source_name'], $sitename);
+ $epreamble = sprintf( t('%1$s [url=%2$s]poked you[/url].') ,
'[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
$params['link']);
+ $subject = str_replace('poked', t($params['activity']), $subject);
+ $preamble = str_replace('poked', t($params['activity']), $preamble);
+ $epreamble = str_replace('poked', t($params['activity']), $epreamble);
+
$sitelink = t('Please visit %s to view and/or reply to the conversation.');
$tsitelink = sprintf( $sitelink, $siteurl );
$hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
}
if($params['type'] == NOTIFY_CONFIRM) {
-
}
if($params['type'] == NOTIFY_SYSTEM) {
-
+
}
$h = array(
$datarray['type'] = $params['type'];
$datarray['verb'] = $params['verb'];
$datarray['otype'] = $params['otype'];
+ $datarray['abort'] = false;
call_hooks('enotify_store', $datarray);
+ if($datarray['abort']) {
+ pop_lang();
+ return;
+ }
+
// create notification entry in DB
$r = q("insert into notify (hash,name,url,photo,date,uid,link,parent,type,verb,otype)
return;
}
+ // we seem to have a lot of duplicate comment notifications due to race conditions, mostly from forums
+ // After we've stored everything, look again to see if there are any duplicates and if so remove them
+
+ $p = null;
+ $p = q("select id from notify where ( type = %d or type = %d ) and link = '%s' and uid = %d order by id",
+ intval(NOTIFY_TAGSELF),
+ intval(NOTIFY_COMMENT),
+ dbesc($params['link']),
+ intval($params['uid'])
+ );
+ if($p && (count($p) > 1)) {
+ for ($d = 1; $d < count($p); $d ++) {
+ q("delete from notify where id = %d limit 1",
+ intval($p[$d]['id'])
+ );
+ }
+
+ // only continue on if we stored the first one
+
+ if($notify_id != $p[0]['id']) {
+ pop_lang();
+ return;
+ }
+ }
+
+
+
+
+
+
+
+
$itemlink = $a->get_baseurl() . '/notify/view/' . $notify_id;
$msg = replace_macros($epreamble,array('$itemlink' => $itemlink));
$r = q("update notify set msg = '%s' where id = %d and uid = %d limit 1",
// send email notification if notification preferences permit
- require_once('bbcode.php');
+ require_once('include/bbcode.php');
if((intval($params['notify_flags']) & intval($params['type'])) || $params['type'] == NOTIFY_SYSTEM) {
logger('notification: sending notification email');
// If so, create the record of it and use a message-id smtp header.
if(!$r) {
- logger("norify_id:" . intval($notify_id). ", parent: " . intval($params['parent']) . "uid: " .
+ 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)",
call_hooks('enotify_mail', $datarray);
+ // check whether sending post content in email notifications is allowed
+ $content_allowed = !get_config('system','enotify_no_content');
+
// load the template for private message notifications
$tpl = get_markup_template('email_notify_html.tpl');
$email_html_body = replace_macros($tpl,array(
'$thanks' => $datarray['thanks'],
'$site_admin' => $datarray['site_admin'],
'$title' => $datarray['title'],
- '$htmlversion' => $datarray['htmlversion'],
+ '$htmlversion' => $datarray['htmlversion'],
+ '$content_allowed' => $content_allowed,
));
// load the template for private message notifications
'$site_admin' => $datarray['site_admin'],
'$title' => $datarray['title'],
'$textversion' => $datarray['textversion'],
+ '$content_allowed' => $content_allowed,
));
// logger('text: ' . $email_text_body);
// generate a multipart/alternative message header
$messageHeader =
$params['additionalMailHeader'] .
- "From: {$params['fromName']} <{$params['fromEmail']}>\n" .
- "Reply-To: {$params['fromName']} <{$params['replyTo']}>\n" .
+ "From: $fromName <{$params['fromEmail']}>\n" .
+ "Reply-To: $fromName <{$params['replyTo']}>\n" .
"MIME-Version: 1.0\n" .
"Content-Type: multipart/alternative; boundary=\"{$mimeBoundary}\"";
// send the message
$res = mail(
$params['toEmail'], // send to address
- $params['messageSubject'], // subject
+ $messageSubject, // subject
$multipartMessageBody, // message body
$messageHeader // message headers
);
+ logger("notification: enotify::send header " . 'To: ' . $params['toEmail'] . "\n" . $messageHeader, LOGGER_DEBUG);
logger("notification: enotify::send returns " . $res, LOGGER_DEBUG);
}
}