$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 for this post.
+ // 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 and link = '%s' and uid = %d limit 1",
+ $p = q("select id from notify where (type = %d or type = %d or type = %d) and link = '%s' and uid = %d limit 1",
intval(NOTIFY_TAGSELF),
+ intval(NOTIFY_COMMENT),
+ intval(NOTIFY_SHARE),
dbesc($params['link']),
intval($params['uid'])
);
pop_lang();
return;
}
-
+
// if it's a post figure out who's post it is.
$itemlink,
$p[0]['author-name'],
$item_post_type);
-
+
// "your post"
if($p[0]['owner-name'] == $p[0]['author-name'] && $p[0]['wall'])
$dest_str = sprintf(t('%1$s commented on [url=%2$s]your %3$s[/url]'),
$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;
+ $epreamble = $dest_str;
$sitelink = t('Please visit %s to view and/or reply to the conversation.');
$tsitelink = sprintf( $sitelink, $siteurl );
$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 %2$s') , $params['source_name'], $sitename);
-
- $epreamble = sprintf( t('%1$s posted to [url=%2$s]your wall[/url]') ,
+
+ $epreamble = sprintf( t('%1$s posted to [url=%2$s]your wall[/url]') ,
'[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
- $params['link']);
-
+ $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>');
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=%2$s]tagged you[/url].') ,
+ $epreamble = sprintf( t('%1$s [url=%2$s]tagged you[/url].') ,
'[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
- $params['link']);
+ $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_SHARE) {
+ $subject = sprintf( t('[Friendica:Notify] %s shared a new post') , $params['source_name']);
+ $preamble = sprintf( t('%1$s shared a new post at %2$s') , $params['source_name'], $sitename);
+ $epreamble = sprintf( t('%1$s [url=%2$s]shared a post[/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 );
}
if($params['type'] == NOTIFY_CONFIRM) {
-
}
if($params['type'] == NOTIFY_SYSTEM) {
-
+
}
$h = array(
$sitelink = $h['sitelink'];
$tsitelink = $h['tsitelink'];
$hsitelink = $h['hsitelink'];
- $itemlink = $h['itemlink'];
+ $itemlink = $h['itemlink'];
- require_once('include/html2bbcode.php');
+ require_once('include/html2bbcode.php');
do {
$dups = false;
$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",
+ 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",
+ $r = q("update notify set msg = '%s' where id = %d and uid = %d",
dbesc($msg),
intval($notify_id),
intval($params['uid'])
);
-
+
// 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');
$id_for_parent = "${params['parent']}@${hostname}";
// Is this the first email notification for this parent item and user?
-
- $r = q("select `id` from `notify-threads` where `master-parent-item` = %d and `receiver-uid` = %d limit 1",
+
+ $r = q("select `id` from `notify-threads` where `master-parent-item` = %d and `receiver-uid` = %d limit 1",
intval($params['parent']),
intval($params['uid']) );
// 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: " .
+ 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
);