2011-12-08 04:28:27 -05:00
< ? php
2012-08-15 20:14:29 -04:00
require_once ( 'include/email.php' );
2011-12-24 02:07:05 -05:00
function notification ( $params ) {
2011-12-08 04:28:27 -05:00
2011-12-27 17:26:44 -05:00
logger ( 'notification: entry' , LOGGER_DEBUG );
2011-12-26 02:00:19 -05:00
2011-12-08 04:28:27 -05:00
$a = get_app ();
2012-03-26 04:43:26 -04:00
// from here on everything is in the recipients language
push_lang ( $params [ 'language' ]);
2011-12-08 04:28:27 -05:00
$banner = t ( 'Friendica Notification' );
$product = FRIENDICA_PLATFORM ;
2012-05-26 19:11:51 -04:00
$siteurl = $a -> get_baseurl ( true );
2011-12-08 04:28:27 -05:00
$thanks = t ( 'Thank You,' );
2013-04-27 15:40:40 -04:00
$sitename = $a -> config [ 'sitename' ];
2011-12-08 04:28:27 -05:00
$site_admin = sprintf ( t ( '%s Administrator' ), $sitename );
2011-12-27 17:26:44 -05:00
$sender_name = $product ;
2012-02-25 19:56:14 -05:00
$hostname = $a -> get_hostname ();
2012-06-02 21:23:54 -04:00
if ( strpos ( $hostname , ':' ))
$hostname = substr ( $hostname , 0 , strpos ( $hostname , ':' ));
2012-02-25 19:56:14 -05:00
$sender_email = t ( 'noreply' ) . '@' . $hostname ;
$additional_mail_header = " " ;
2011-12-08 04:28:27 -05:00
2011-12-27 17:26:44 -05:00
if ( array_key_exists ( 'item' , $params )) {
2011-12-26 18:47:40 -05:00
$title = $params [ 'item' ][ 'title' ];
$body = $params [ 'item' ][ 'body' ];
}
else {
$title = $body = '' ;
}
2011-12-24 02:07:05 -05:00
2012-02-29 22:23:01 -05:00
// e.g. "your post", "David's photo", etc.
$possess_desc = t ( '%s <!item_type!>' );
2012-02-29 21:19:08 -05:00
2011-12-24 02:07:05 -05:00
if ( $params [ 'type' ] == NOTIFY_MAIL ) {
2012-02-27 20:18:19 -05:00
$subject = sprintf ( t ( '[Friendica:Notify] New mail received at %s' ), $sitename );
2011-12-24 02:07:05 -05:00
2012-06-13 11:55:21 -04:00
$preamble = sprintf ( t ( '%1$s sent you a new private message at %2$s.' ), $params [ 'source_name' ], $sitename );
$epreamble = sprintf ( t ( '%1$s sent you %2$s.' ), '[url=' . $params [ 'source_link' ] . ']' . $params [ 'source_name' ] . '[/url]' , '[url=$itemlink]' . t ( 'a private message' ) . '[/url]' );
2011-12-26 02:00:19 -05:00
$sitelink = t ( 'Please visit %s to view and/or reply to your private messages.' );
2012-02-21 21:10:15 -05:00
$tsitelink = sprintf ( $sitelink , $siteurl . '/message/' . $params [ 'item' ][ 'id' ] );
$hsitelink = sprintf ( $sitelink , '<a href="' . $siteurl . '/message/' . $params [ 'item' ][ 'id' ] . '">' . $sitename . '</a>' );
$itemlink = $siteurl . '/message/' . $params [ 'item' ][ 'id' ];
2011-12-26 17:16:25 -05:00
}
if ( $params [ 'type' ] == NOTIFY_COMMENT ) {
2012-02-27 20:18:19 -05:00
// logger("notification: params = " . print_r($params, true), LOGGER_DEBUG);
2011-12-26 17:16:25 -05:00
2012-02-25 19:56:14 -05:00
$parent_id = $params [ 'parent' ];
2012-02-29 21:19:08 -05:00
2013-01-23 20:46:46 -05:00
// Check to see if there was already a tag notify or comment notify for this post.
2012-07-04 00:40:13 -04:00
// If so don't create a second notification
$p = null ;
2013-01-23 20:46:46 -05:00
$p = q ( " select id from notify where ( type = %d or type = %d ) and link = '%s' and uid = %d limit 1 " ,
2012-07-04 00:40:13 -04:00
intval ( NOTIFY_TAGSELF ),
2013-01-23 20:46:46 -05:00
intval ( NOTIFY_COMMENT ),
2012-07-04 00:40:13 -04:00
dbesc ( $params [ 'link' ]),
intval ( $params [ 'uid' ])
);
if ( $p and count ( $p )) {
pop_lang ();
return ;
}
2012-02-29 21:19:08 -05:00
// if it's a post figure out who's post it is.
$p = null ;
if ( $params [ 'otype' ] === 'item' && $parent_id ) {
$p = q ( " select * from item where id = %d and uid = %d limit 1 " ,
intval ( $parent_id ),
intval ( $params [ 'uid' ])
);
}
2012-06-13 11:55:21 -04:00
$item_post_type = item_post_type ( $p [ 0 ]);
//$possess_desc = str_replace('<!item_type!>',$possess_desc);
2012-02-29 22:23:01 -05:00
// "a post"
2012-06-13 11:55:21 -04:00
$dest_str = sprintf ( t ( '%1$s commented on [url=%2$s]a %3$s[/url]' ),
'[url=' . $params [ 'source_link' ] . ']' . $params [ 'source_name' ] . '[/url]' ,
$itemlink ,
$item_post_type );
2012-02-29 22:23:01 -05:00
// "George Bull's post"
2012-02-29 21:19:08 -05:00
if ( $p )
2012-06-13 11:55:21 -04:00
$dest_str = sprintf ( t ( '%1$s commented on [url=%2$s]%3$s\'s %4$s[/url]' ),
'[url=' . $params [ 'source_link' ] . ']' . $params [ 'source_name' ] . '[/url]' ,
$itemlink ,
2012-06-13 12:08:34 -04:00
$p [ 0 ][ 'author-name' ],
2012-06-13 11:55:21 -04:00
$item_post_type );
2012-02-25 19:56:14 -05:00
2012-02-29 22:23:01 -05:00
// "your post"
2012-02-29 21:19:08 -05:00
if ( $p [ 0 ][ 'owner-name' ] == $p [ 0 ][ 'author-name' ] && $p [ 0 ][ 'wall' ])
2012-06-13 11:55:21 -04:00
$dest_str = sprintf ( t ( '%1$s commented on [url=%2$s]your %3$s[/url]' ),
'[url=' . $params [ 'source_link' ] . ']' . $params [ 'source_name' ] . '[/url]' ,
$itemlink ,
$item_post_type );
2012-02-29 21:19:08 -05:00
2012-02-25 19:56:14 -05:00
// Some mail softwares relies on subject field for threading.
// So, we cannot have different subjects for notifications of the same thread.
// Before this we have the name of the replier on the subject rendering
// differents subjects for messages on the same thread.
2012-02-27 20:18:19 -05:00
2012-06-13 23:03:18 -04:00
$subject = sprintf ( t ( '[Friendica:Notify] Comment to conversation #%1$d by %2$s' ), $parent_id , $params [ 'source_name' ]);
2011-12-30 01:32:30 -05:00
$preamble = sprintf ( t ( '%s commented on an item/conversation you have been following.' ), $params [ 'source_name' ]);
2012-06-13 11:55:21 -04:00
$epreamble = $dest_str ;
2012-02-18 06:18:20 -05:00
2011-12-26 17:16:25 -05:00
$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_WALL ) {
2012-02-27 20:18:19 -05:00
$subject = sprintf ( t ( '[Friendica:Notify] %s posted to your profile wall' ) , $params [ 'source_name' ]);
2012-06-13 23:03:18 -04:00
$preamble = sprintf ( t ( '%1$s posted to your profile wall at %2$s' ) , $params [ 'source_name' ], $sitename );
2012-02-27 20:18:19 -05:00
2012-07-11 05:58:57 -04:00
$epreamble = sprintf ( t ( '%1$s posted to [url=%2$s]your wall[/url]' ) ,
2012-06-13 11:55:21 -04:00
'[url=' . $params [ 'source_link' ] . ']' . $params [ 'source_name' ] . '[/url]' ,
2012-07-11 05:58:57 -04:00
$params [ 'link' ]);
2012-02-18 06:18:20 -05:00
2011-12-26 17:16:25 -05:00
$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' ];
2011-12-08 04:28:27 -05:00
}
2012-02-09 17:06:17 -05:00
if ( $params [ 'type' ] == NOTIFY_TAGSELF ) {
2012-02-27 20:18:19 -05:00
$subject = sprintf ( t ( '[Friendica:Notify] %s tagged you' ) , $params [ 'source_name' ]);
2012-06-13 11:55:21 -04:00
$preamble = sprintf ( t ( '%1$s tagged you at %2$s' ) , $params [ 'source_name' ], $sitename );
2012-06-18 17:00:18 -04:00
$epreamble = sprintf ( t ( '%1$s [url=%2$s]tagged you[/url].' ) ,
2012-06-13 11:55:21 -04:00
'[url=' . $params [ 'source_link' ] . ']' . $params [ 'source_name' ] . '[/url]' ,
$params [ 'link' ]);
2012-02-09 17:06:17 -05:00
$sitelink = t ( 'Please visit %s to view and/or reply to the conversation.' );
2012-07-19 23:13:40 -04:00
$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.' );
2012-02-09 17:06:17 -05:00
$tsitelink = sprintf ( $sitelink , $siteurl );
$hsitelink = sprintf ( $sitelink , '<a href="' . $siteurl . '">' . $sitename . '</a>' );
$itemlink = $params [ 'link' ];
}
if ( $params [ 'type' ] == NOTIFY_TAGSHARE ) {
2012-02-27 20:18:19 -05:00
$subject = sprintf ( t ( '[Friendica:Notify] %s tagged your post' ) , $params [ 'source_name' ]);
2012-06-13 11:55:21 -04:00
$preamble = sprintf ( t ( '%1$s tagged your post at %2$s' ) , $params [ 'source_name' ], $sitename );
$epreamble = sprintf ( t ( '%1$s tagged [url=%2$s]your post[/url]' ) ,
'[url=' . $params [ 'source_link' ] . ']' . $params [ 'source_name' ] . '[/url]' ,
$itemlink );
2012-02-09 17:06:17 -05:00
$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' ];
}
2011-12-26 18:47:40 -05:00
if ( $params [ 'type' ] == NOTIFY_INTRO ) {
2012-02-27 20:18:19 -05:00
$subject = sprintf ( t ( '[Friendica:Notify] Introduction received' ));
2012-06-13 11:55:21 -04:00
$preamble = sprintf ( t ( 'You\'ve received an introduction from \'%1$s\' at %2$s' ), $params [ 'source_name' ], $sitename );
$epreamble = sprintf ( t ( 'You\'ve received [url=%1$s]an introduction[/url] from %2$s.' ),
$itemlink ,
'[url=' . $params [ 'source_link' ] . ']' . $params [ 'source_name' ] . '[/url]' );
2011-12-26 18:47:40 -05:00
$body = sprintf ( t ( 'You may visit their profile at %s' ), $params [ 'source_link' ]);
$sitelink = t ( 'Please visit %s to approve or reject the introduction.' );
$tsitelink = sprintf ( $sitelink , $siteurl );
$hsitelink = sprintf ( $sitelink , '<a href="' . $siteurl . '">' . $sitename . '</a>' );
$itemlink = $params [ 'link' ];
}
2012-01-03 20:29:07 -05:00
if ( $params [ 'type' ] == NOTIFY_SUGGEST ) {
2012-02-27 20:18:19 -05:00
$subject = sprintf ( t ( '[Friendica:Notify] Friend suggestion received' ));
2012-06-13 11:55:21 -04:00
$preamble = sprintf ( t ( 'You\'ve received a friend suggestion from \'%1$s\' at %2$s' ), $params [ 'source_name' ], $sitename );
$epreamble = sprintf ( t ( 'You\'ve received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s.' ),
$itemlink ,
'[url=' . $params [ 'item' ][ 'url' ] . ']' . $params [ 'item' ][ 'name' ] . '[/url]' ,
'[url=' . $params [ 'source_link' ] . ']' . $params [ 'source_name' ] . '[/url]' );
2012-01-03 20:29:07 -05:00
$body = t ( 'Name:' ) . ' ' . $params [ 'item' ][ 'name' ] . " \n " ;
$body .= t ( 'Photo:' ) . ' ' . $params [ 'item' ][ 'photo' ] . " \n " ;
$body .= sprintf ( t ( 'You may visit their profile at %s' ), $params [ 'item' ][ 'url' ]);
$sitelink = t ( 'Please visit %s to approve or reject the suggestion.' );
$tsitelink = sprintf ( $sitelink , $siteurl );
$hsitelink = sprintf ( $sitelink , '<a href="' . $siteurl . '">' . $sitename . '</a>' );
$itemlink = $params [ 'link' ];
}
2011-12-26 18:47:40 -05:00
if ( $params [ 'type' ] == NOTIFY_CONFIRM ) {
2012-03-25 07:37:09 -04:00
}
if ( $params [ 'type' ] == NOTIFY_SYSTEM ) {
2013-03-07 13:34:54 -05:00
2011-12-26 18:47:40 -05:00
}
2012-03-25 08:06:11 -04:00
$h = array (
'params' => $params ,
'subject' => $subject ,
'preamble' => $preamble ,
'epreamble' => $epreamble ,
'body' => $body ,
'sitelink' => $sitelink ,
'tsitelink' => $tsitelink ,
'hsitelink' => $hsitelink ,
'itemlink' => $itemlink
);
call_hooks ( 'enotify' , $h );
$subject = $h [ 'subject' ];
$preamble = $h [ 'preamble' ];
$epreamble = $h [ 'epreamble' ];
$body = $h [ 'body' ];
$sitelink = $h [ 'sitelink' ];
$tsitelink = $h [ 'tsitelink' ];
$hsitelink = $h [ 'hsitelink' ];
$itemlink = $h [ 'itemlink' ];
2011-12-26 18:47:40 -05:00
2012-02-18 05:57:42 -05:00
require_once ( 'include/html2bbcode.php' );
2012-02-20 22:50:05 -05:00
do {
$dups = false ;
$hash = random_string ();
$r = q ( " SELECT `id` FROM `notify` WHERE `hash` = '%s' LIMIT 1 " ,
dbesc ( $hash ));
if ( count ( $r ))
$dups = true ;
} while ( $dups == true );
2012-02-27 02:54:04 -05:00
$datarray = array ();
$datarray [ 'hash' ] = $hash ;
$datarray [ 'name' ] = $params [ 'source_name' ];
$datarray [ 'url' ] = $params [ 'source_link' ];
$datarray [ 'photo' ] = $params [ 'source_photo' ];
$datarray [ 'date' ] = datetime_convert ();
$datarray [ 'uid' ] = $params [ 'uid' ];
$datarray [ 'link' ] = $itemlink ;
2012-02-29 21:19:08 -05:00
$datarray [ 'parent' ] = $parent_id ;
2012-02-27 02:54:04 -05:00
$datarray [ 'type' ] = $params [ 'type' ];
$datarray [ 'verb' ] = $params [ 'verb' ];
$datarray [ 'otype' ] = $params [ 'otype' ];
call_hooks ( 'enotify_store' , $datarray );
2012-02-18 05:57:42 -05:00
// create notification entry in DB
2012-02-29 21:19:08 -05:00
$r = q ( " insert into notify (hash,name,url,photo,date,uid,link,parent,type,verb,otype)
values ( '%s' , '%s' , '%s' , '%s' , '%s' , % d , '%s' , % d , % d , '%s' , '%s' ) " ,
2012-02-27 02:54:04 -05:00
dbesc ( $datarray [ 'hash' ]),
dbesc ( $datarray [ 'name' ]),
dbesc ( $datarray [ 'url' ]),
dbesc ( $datarray [ 'photo' ]),
dbesc ( $datarray [ 'date' ]),
intval ( $datarray [ 'uid' ]),
dbesc ( $datarray [ 'link' ]),
2012-02-29 21:19:08 -05:00
intval ( $datarray [ 'parent' ]),
2012-02-27 02:54:04 -05:00
intval ( $datarray [ 'type' ]),
dbesc ( $datarray [ 'verb' ]),
dbesc ( $datarray [ 'otype' ])
2012-02-18 05:57:42 -05:00
);
2011-12-08 04:28:27 -05:00
2012-02-20 22:50:05 -05:00
$r = q ( " select id from notify where hash = '%s' and uid = %d limit 1 " ,
dbesc ( $hash ),
intval ( $params [ 'uid' ])
);
if ( $r )
$notify_id = $r [ 0 ][ 'id' ];
2012-03-26 04:43:26 -04:00
else {
pop_lang ();
2012-02-20 22:50:05 -05:00
return ;
2012-03-26 04:43:26 -04:00
}
2012-02-20 22:50:05 -05:00
2013-02-08 02:43:55 -05:00
// 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 ;
}
}
2012-02-20 22:50:05 -05:00
$itemlink = $a -> get_baseurl () . '/notify/view/' . $notify_id ;
2012-02-21 03:02:42 -05:00
$msg = replace_macros ( $epreamble , array ( '$itemlink' => $itemlink ));
$r = q ( " update notify set msg = '%s' where id = %d and uid = %d limit 1 " ,
dbesc ( $msg ),
intval ( $notify_id ),
intval ( $params [ 'uid' ])
);
2011-12-24 02:07:05 -05:00
// send email notification if notification preferences permit
2012-12-28 16:51:50 -05:00
require_once ( 'include/bbcode.php' );
2012-03-25 07:37:09 -04:00
if (( intval ( $params [ 'notify_flags' ]) & intval ( $params [ 'type' ])) || $params [ 'type' ] == NOTIFY_SYSTEM ) {
2011-12-24 02:07:05 -05:00
2011-12-27 17:26:44 -05:00
logger ( 'notification: sending notification email' );
2011-12-24 02:07:05 -05:00
2012-02-25 19:56:14 -05:00
$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 " ,
intval ( $params [ 'parent' ]),
intval ( $params [ 'uid' ]) );
// If so, create the record of it and use a message-id smtp header.
if ( ! $r ) {
2012-08-15 20:14:29 -04:00
logger ( " notify_id: " . intval ( $notify_id ) . " , parent: " . intval ( $params [ 'parent' ]) . " uid: " .
2012-02-25 19:56:14 -05:00
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 ),
intval ( $params [ 'parent' ]),
intval ( $params [ 'uid' ]),
0 );
$additional_mail_header .= " Message-ID: < ${ id_for_parent } > \n " ;
$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 );
}
// If not, just "follow" the thread.
else {
$additional_mail_header = " References: < ${ id_for_parent } > \n In-Reply-To: < ${ id_for_parent } > \n " ;
logger ( " include/enotify: There's already a notification for this parent: \n " . print_r ( $r , true ), LOGGER_DEBUG );
}
2011-12-24 02:07:05 -05:00
2011-12-26 02:00:19 -05:00
$textversion = strip_tags ( html_entity_decode ( bbcode ( stripslashes ( str_replace ( array ( " \\ r \\ n " , " \\ r " , " \\ n " ), " \n " ,
$body ))), ENT_QUOTES , 'UTF-8' ));
$htmlversion = html_entity_decode ( bbcode ( stripslashes ( str_replace ( array ( " \\ r \\ n " , " \\ r " , " \\ n \\ n " , " \\ n " ),
" <br /> \n " , $body ))));
2011-12-24 02:07:05 -05:00
2012-02-27 02:54:04 -05:00
$datarray = array ();
$datarray [ 'banner' ] = $banner ;
$datarray [ 'product' ] = $product ;
$datarray [ 'preamble' ] = $preamble ;
$datarray [ 'sitename' ] = $sitename ;
$datarray [ 'siteurl' ] = $siteurl ;
2012-02-27 20:18:19 -05:00
$datarray [ 'type' ] = $params [ 'type' ];
$datarray [ 'parent' ] = $params [ 'parent' ];
2012-02-27 02:54:04 -05:00
$datarray [ 'source_name' ] = $params [ 'source_name' ];
$datarray [ 'source_link' ] = $params [ 'source_link' ];
$datarray [ 'source_photo' ] = $params [ 'source_photo' ];
2012-02-27 20:18:19 -05:00
$datarray [ 'uid' ] = $params [ 'uid' ];
2012-02-27 02:54:04 -05:00
$datarray [ 'username' ] = $params [ 'to_name' ];
$datarray [ 'hsitelink' ] = $hsitelink ;
$datarray [ 'tsitelink' ] = $tsitelink ;
$datarray [ 'hitemlink' ] = '<a href="' . $itemlink . '">' . $itemlink . '</a>' ;
$datarray [ 'titemlink' ] = $itemlink ;
$datarray [ 'thanks' ] = $thanks ;
$datarray [ 'site_admin' ] = $site_admin ;
$datarray [ 'title' ] = stripslashes ( $title );
$datarray [ 'htmlversion' ] = $htmlversion ;
$datarray [ 'textversion' ] = $textversion ;
$datarray [ 'subject' ] = $subject ;
$datarray [ 'headers' ] = $additional_mail_header ;
call_hooks ( 'enotify_mail' , $datarray );
2013-02-23 11:31:34 -05:00
// check whether sending post content in email notifications is allowed
$content_allowed = ! get_config ( 'system' , 'enotify_no_content' );
2011-12-24 02:07:05 -05:00
// load the template for private message notifications
2011-12-26 02:00:19 -05:00
$tpl = get_markup_template ( 'email_notify_html.tpl' );
$email_html_body = replace_macros ( $tpl , array (
2012-02-27 02:54:04 -05:00
'$banner' => $datarray [ 'banner' ],
'$product' => $datarray [ 'product' ],
'$preamble' => $datarray [ 'preamble' ],
'$sitename' => $datarray [ 'sitename' ],
'$siteurl' => $datarray [ 'siteurl' ],
'$source_name' => $datarray [ 'source_name' ],
'$source_link' => $datarray [ 'source_link' ],
'$source_photo' => $datarray [ 'source_photo' ],
'$username' => $datarray [ 'to_name' ],
'$hsitelink' => $datarray [ 'hsitelink' ],
'$hitemlink' => $datarray [ 'hitemlink' ],
'$thanks' => $datarray [ 'thanks' ],
'$site_admin' => $datarray [ 'site_admin' ],
'$title' => $datarray [ 'title' ],
2013-02-23 11:31:34 -05:00
'$htmlversion' => $datarray [ 'htmlversion' ],
'$content_allowed' => $content_allowed ,
2011-12-24 02:07:05 -05:00
));
// load the template for private message notifications
2011-12-26 02:00:19 -05:00
$tpl = get_markup_template ( 'email_notify_text.tpl' );
$email_text_body = replace_macros ( $tpl , array (
2012-02-27 02:54:04 -05:00
'$banner' => $datarray [ 'banner' ],
'$product' => $datarray [ 'product' ],
'$preamble' => $datarray [ 'preamble' ],
'$sitename' => $datarray [ 'sitename' ],
'$siteurl' => $datarray [ 'siteurl' ],
'$source_name' => $datarray [ 'source_name' ],
'$source_link' => $datarray [ 'source_link' ],
'$source_photo' => $datarray [ 'source_photo' ],
'$username' => $datarray [ 'to_name' ],
'$tsitelink' => $datarray [ 'tsitelink' ],
'$titemlink' => $datarray [ 'titemlink' ],
'$thanks' => $datarray [ 'thanks' ],
'$site_admin' => $datarray [ 'site_admin' ],
'$title' => $datarray [ 'title' ],
'$textversion' => $datarray [ 'textversion' ],
2013-02-23 11:31:34 -05:00
'$content_allowed' => $content_allowed ,
2011-12-24 02:07:05 -05:00
));
2011-12-27 17:26:44 -05:00
// logger('text: ' . $email_text_body);
2011-12-26 02:00:19 -05:00
2011-12-24 02:07:05 -05:00
// use the EmailNotification library to send the message
2011-12-26 02:00:19 -05:00
enotify :: send ( array (
'fromName' => $sender_name ,
'fromEmail' => $sender_email ,
'replyTo' => $sender_email ,
'toEmail' => $params [ 'to_email' ],
2012-02-27 02:54:04 -05:00
'messageSubject' => $datarray [ 'subject' ],
2011-12-26 02:00:19 -05:00
'htmlVersion' => $email_html_body ,
2012-02-25 19:56:14 -05:00
'textVersion' => $email_text_body ,
2012-02-27 02:54:04 -05:00
'additionalMailHeader' => $datarray [ 'headers' ],
2011-12-26 02:00:19 -05:00
));
2011-12-24 02:07:05 -05:00
}
2012-02-18 05:57:42 -05:00
pop_lang ();
2011-12-24 02:07:05 -05:00
}
2011-12-08 04:28:27 -05:00
require_once ( 'include/email.php' );
class enotify {
/**
* Send a multipart / alternative message with Text and HTML versions
*
* @ param fromName name of the sender
* @ param fromEmail email fo the sender
* @ param replyTo replyTo address to direct responses
* @ param toEmail destination email address
* @ param messageSubject subject of the message
* @ param htmlVersion html version of the message
* @ param textVersion text only version of the message
2012-02-25 19:56:14 -05:00
* @ param additionalMailHeader additions to the smtp mail header
2011-12-08 04:28:27 -05:00
*/
static public function send ( $params ) {
2011-12-26 02:00:19 -05:00
2012-05-01 18:49:22 -04:00
$fromName = email_header_encode ( html_entity_decode ( $params [ 'fromName' ], ENT_QUOTES , 'UTF-8' ), 'UTF-8' );
$messageSubject = email_header_encode ( html_entity_decode ( $params [ 'messageSubject' ], ENT_QUOTES , 'UTF-8' ), 'UTF-8' );
2011-12-08 04:28:27 -05:00
// generate a mime boundary
$mimeBoundary = rand ( 0 , 9 ) . " - "
. rand ( 10000000000 , 9999999999 ) . " - "
. rand ( 10000000000 , 9999999999 ) . " =: "
. rand ( 10000 , 99999 );
// generate a multipart/alternative message header
$messageHeader =
2012-02-25 19:56:14 -05:00
$params [ 'additionalMailHeader' ] .
2013-01-03 06:47:08 -05:00
" From: $fromName < { $params [ 'fromEmail' ] } > \n " .
" Reply-To: $fromName < { $params [ 'replyTo' ] } > \n " .
2011-12-08 04:28:27 -05:00
" MIME-Version: 1.0 \n " .
" Content-Type: multipart/alternative; boundary= \" { $mimeBoundary } \" " ;
// assemble the final multipart message body with the text and html types included
$textBody = chunk_split ( base64_encode ( $params [ 'textVersion' ]));
$htmlBody = chunk_split ( base64_encode ( $params [ 'htmlVersion' ]));
$multipartMessageBody =
" -- " . $mimeBoundary . " \n " . // plain text section
" Content-Type: text/plain; charset=UTF-8 \n " .
" Content-Transfer-Encoding: base64 \n \n " .
$textBody . " \n " .
" -- " . $mimeBoundary . " \n " . // text/html section
" Content-Type: text/html; charset=UTF-8 \n " .
" Content-Transfer-Encoding: base64 \n \n " .
$htmlBody . " \n " .
" -- " . $mimeBoundary . " -- \n " ; // message ending
// send the message
$res = mail (
2011-12-26 02:00:19 -05:00
$params [ 'toEmail' ], // send to address
2013-01-03 06:47:08 -05:00
$messageSubject , // subject
2011-12-08 04:28:27 -05:00
$multipartMessageBody , // message body
$messageHeader // message headers
);
2012-08-15 20:14:29 -04:00
logger ( " notification: enotify::send header " . 'To: ' . $params [ 'toEmail' ] . " \n " . $messageHeader , LOGGER_DEBUG );
2011-12-27 17:26:44 -05:00
logger ( " notification: enotify::send returns " . $res , LOGGER_DEBUG );
2011-12-08 04:28:27 -05:00
}
}
2012-02-25 19:56:14 -05:00
?>