| 
									
										
										
										
											2008-06-14 23:02:02 -04:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2009-08-25 18:12:20 -04:00
										 |  |  |  * StatusNet, the distributed open-source microblogging tool | 
					
						
							| 
									
										
										
										
											2008-06-14 23:02:02 -04:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |  * utilities for sending email | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * PHP version 5 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * LICENCE: This program is free software: you can redistribute it and/or modify | 
					
						
							| 
									
										
										
										
											2008-06-14 23:02:02 -04:00
										 |  |  |  * it under the terms of the GNU Affero General Public License as published by | 
					
						
							|  |  |  |  * the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  |  * (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU Affero General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |  * | 
					
						
							|  |  |  |  * @category  Mail | 
					
						
							| 
									
										
										
										
											2009-08-25 18:12:20 -04:00
										 |  |  |  * @package   StatusNet | 
					
						
							| 
									
										
										
										
											2009-08-25 18:19:04 -04:00
										 |  |  |  * @author    Evan Prodromou <evan@status.net> | 
					
						
							|  |  |  |  * @author    Zach Copley <zach@status.net> | 
					
						
							|  |  |  |  * @author    Robin Millette <millette@status.net> | 
					
						
							|  |  |  |  * @author    Sarven Capadisli <csarven@status.net> | 
					
						
							| 
									
										
										
										
											2009-08-25 18:12:20 -04:00
										 |  |  |  * @copyright 2008 StatusNet, Inc. | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 | 
					
						
							| 
									
										
										
										
											2009-08-25 18:16:46 -04:00
										 |  |  |  * @link      http://status.net/ | 
					
						
							| 
									
										
										
										
											2008-06-14 23:02:02 -04:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-26 10:41:36 -04:00
										 |  |  | if (!defined('STATUSNET') && !defined('LACONICA')) { | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     exit(1); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2008-06-14 23:02:02 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | require_once 'Mail.php'; | 
					
						
							| 
									
										
										
										
											2008-06-14 23:02:02 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | /** | 
					
						
							|  |  |  |  * return the configured mail backend | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Uses the $config array to make a mail backend. Cached so it is safe to call | 
					
						
							|  |  |  |  * more than once. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return Mail backend | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2008-06-20 02:48:24 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | function mail_backend() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     static $backend = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (!$backend) { | 
					
						
							| 
									
										
										
										
											2009-03-09 20:01:35 -05:00
										 |  |  |         $backend = Mail::factory(common_config('mail', 'backend'), | 
					
						
							|  |  |  |                                  (common_config('mail', 'params')) ? | 
					
						
							|  |  |  |                                  common_config('mail', 'params') : | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |                                  array()); | 
					
						
							|  |  |  |         if (PEAR::isError($backend)) { | 
					
						
							|  |  |  |             common_server_error($backend->getMessage(), 500); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return $backend; | 
					
						
							| 
									
										
										
										
											2008-06-14 23:02:02 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | /** | 
					
						
							|  |  |  |  * send an email to one or more recipients | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param array  $recipients array of strings with email addresses of recipients | 
					
						
							|  |  |  |  * @param array  $headers    array mapping strings to strings for email headers | 
					
						
							|  |  |  |  * @param string $body       body of the email | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return boolean success flag | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2008-06-14 23:02:02 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | function mail_send($recipients, $headers, $body) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     // XXX: use Mail_Queue... maybe
 | 
					
						
							|  |  |  |     $backend = mail_backend(); | 
					
						
							| 
									
										
										
										
											2008-12-04 16:34:14 -05:00
										 |  |  |     if (!isset($headers['Content-Type'])) { | 
					
						
							|  |  |  |         $headers['Content-Type'] = 'text/plain; charset=UTF-8'; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     assert($backend); // throws an error if it's bad
 | 
					
						
							|  |  |  |     $sent = $backend->send($recipients, $headers, $body); | 
					
						
							|  |  |  |     if (PEAR::isError($sent)) { | 
					
						
							|  |  |  |         common_log(LOG_ERR, 'Email error: ' . $sent->getMessage()); | 
					
						
							|  |  |  |         return false; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return true; | 
					
						
							| 
									
										
										
										
											2008-06-14 23:02:02 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | /** | 
					
						
							|  |  |  |  * returns the configured mail domain | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Defaults to the server name. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return string mail domain, suitable for making email addresses. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2008-07-19 16:26:25 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | function mail_domain() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     $maildomain = common_config('mail', 'domain'); | 
					
						
							|  |  |  |     if (!$maildomain) { | 
					
						
							|  |  |  |         $maildomain = common_config('site', 'server'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return $maildomain; | 
					
						
							| 
									
										
										
										
											2008-06-14 23:02:02 -04:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2008-06-20 01:15:36 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | /** | 
					
						
							|  |  |  |  * returns a good address for sending email from this server | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Uses either the configured value or a faked-up value made | 
					
						
							|  |  |  |  * from the mail domain. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return string notify from address | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function mail_notify_from() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     $notifyfrom = common_config('mail', 'notifyfrom'); | 
					
						
							| 
									
										
										
										
											2008-06-24 17:50:33 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     if (!$notifyfrom) { | 
					
						
							| 
									
										
										
										
											2008-06-24 17:50:33 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |         $domain = mail_domain(); | 
					
						
							| 
									
										
										
										
											2008-06-24 17:50:33 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-07-21 14:03:08 -04:00
										 |  |  |         $notifyfrom = '"'.common_config('site', 'name') .'" <noreply@'.$domain.'>'; | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return $notifyfrom; | 
					
						
							| 
									
										
										
										
											2008-06-24 17:50:33 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | /** | 
					
						
							|  |  |  |  * sends email to a user | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param User   &$user   user to send email to | 
					
						
							|  |  |  |  * @param string $subject subject of the email | 
					
						
							|  |  |  |  * @param string $body    body of the email | 
					
						
							| 
									
										
										
										
											2010-03-04 17:07:40 +11:00
										 |  |  |  * @param array  $headers optional list of email headers | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |  * @param string $address optional specification of email address | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return boolean success flag | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2008-06-20 01:15:36 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-04 17:07:40 +11:00
										 |  |  | function mail_to_user(&$user, $subject, $body, $headers=array(), $address=null) | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | { | 
					
						
							|  |  |  |     if (!$address) { | 
					
						
							|  |  |  |         $address = $user->email; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-12-09 03:27:50 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     $recipients = $address; | 
					
						
							|  |  |  |     $profile    = $user->getProfile(); | 
					
						
							| 
									
										
										
										
											2008-12-04 16:24:55 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     $headers['From']    = mail_notify_from(); | 
					
						
							|  |  |  |     $headers['To']      = $profile->getBestName() . ' <' . $address . '>'; | 
					
						
							|  |  |  |     $headers['Subject'] = $subject; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return mail_send($recipients, $headers, $body); | 
					
						
							| 
									
										
										
										
											2008-06-20 01:15:36 -04:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2008-07-18 00:12:31 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Send an email to confirm a user's control of an email address | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param User   $user     User claiming the email address | 
					
						
							|  |  |  |  * @param string $code     Confirmation code | 
					
						
							|  |  |  |  * @param string $nickname Nickname of user | 
					
						
							|  |  |  |  * @param string $address  email address to confirm | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @see common_confirmation_code() | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return success flag | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function mail_confirm_address($user, $code, $nickname, $address) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     $subject = _('Email address confirmation'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $body = sprintf(_("Hey, %s.\n\n". | 
					
						
							|  |  |  |                       "Someone just entered this email address on %s.\n\n" . | 
					
						
							|  |  |  |                       "If it was you, and you want to confirm your entry, ". | 
					
						
							|  |  |  |                       "use the URL below:\n\n\t%s\n\n" . | 
					
						
							|  |  |  |                       "If not, just ignore this message.\n\n". | 
					
						
							|  |  |  |                       "Thanks for your time, \n%s\n"), | 
					
						
							|  |  |  |                     $nickname, common_config('site', 'name'), | 
					
						
							|  |  |  |                     common_local_url('confirmaddress', array('code' => $code)), | 
					
						
							|  |  |  |                     common_config('site', 'name')); | 
					
						
							| 
									
										
										
										
											2010-03-04 17:07:40 +11:00
										 |  |  |     $headers = array(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return mail_to_user($user, $subject, $body, $headers, $address); | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * notify a user of subscription by another user | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This is just a wrapper around the profile-based version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param User $listenee user who is being subscribed to | 
					
						
							|  |  |  |  * @param User $listener user who is subscribing | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @see mail_subscribe_notify_profile() | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return void | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function mail_subscribe_notify($listenee, $listener) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     $other = $listener->getProfile(); | 
					
						
							|  |  |  |     mail_subscribe_notify_profile($listenee, $other); | 
					
						
							| 
									
										
										
										
											2008-08-24 16:05:17 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | /** | 
					
						
							|  |  |  |  * notify a user of subscription by a profile (remote or local) | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This function checks to see if the listenee has an email | 
					
						
							|  |  |  |  * address and wants subscription notices. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param User    $listenee user who's being subscribed to | 
					
						
							|  |  |  |  * @param Profile $other    profile of person who's listening | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return void | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function mail_subscribe_notify_profile($listenee, $other) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-11-16 14:11:14 -05:00
										 |  |  |     if ($other->hasRight(Right::EMAILONSUBSCRIBE) && | 
					
						
							|  |  |  |         $listenee->email && $listenee->emailnotifysub) { | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |         // use the recipient's localization
 | 
					
						
							| 
									
										
										
										
											2008-12-04 15:34:33 -05:00
										 |  |  |         common_init_locale($listenee->language); | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $profile = $listenee->getProfile(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $name = $profile->getBestName(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $long_name = ($other->fullname) ? | 
					
						
							|  |  |  |           ($other->fullname . ' (' . $other->nickname . ')') : $other->nickname; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $recipients = $listenee->email; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-04 17:07:40 +11:00
										 |  |  |         $headers = _mail_prepare_headers('subscribe', $listenee->nickname, $other->nickname); | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |         $headers['From']    = mail_notify_from(); | 
					
						
							|  |  |  |         $headers['To']      = $name . ' <' . $listenee->email . '>'; | 
					
						
							|  |  |  |         $headers['Subject'] = sprintf(_('%1$s is now listening to '. | 
					
						
							|  |  |  |                                         'your notices on %2$s.'), | 
					
						
							| 
									
										
										
										
											2008-12-12 12:11:35 -05:00
										 |  |  |                                       $other->getBestName(), | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |                                       common_config('site', 'name')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $body = sprintf(_('%1$s is now listening to your notices on %2$s.'."\n\n". | 
					
						
							|  |  |  |                           "\t".'%3$s'."\n\n". | 
					
						
							|  |  |  |                           '%4$s'. | 
					
						
							|  |  |  |                           '%5$s'. | 
					
						
							|  |  |  |                           '%6$s'. | 
					
						
							|  |  |  |                           "\n".'Faithfully yours,'."\n".'%7$s.'."\n\n". | 
					
						
							|  |  |  |                           "----\n". | 
					
						
							|  |  |  |                           "Change your email address or ". | 
					
						
							| 
									
										
										
										
											2009-02-06 21:17:45 -08:00
										 |  |  |                           "notification options at ".'%8$s' ."\n"), | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |                         $long_name, | 
					
						
							|  |  |  |                         common_config('site', 'name'), | 
					
						
							|  |  |  |                         $other->profileurl, | 
					
						
							|  |  |  |                         ($other->location) ? | 
					
						
							| 
									
										
										
										
											2010-01-10 12:26:24 +01:00
										 |  |  |                         sprintf(_("Location: %s"), $other->location) . "\n" : '', | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |                         ($other->homepage) ? | 
					
						
							| 
									
										
										
										
											2010-01-10 12:26:24 +01:00
										 |  |  |                         sprintf(_("Homepage: %s"), $other->homepage) . "\n" : '', | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |                         ($other->bio) ? | 
					
						
							| 
									
										
										
										
											2010-01-10 12:26:24 +01:00
										 |  |  |                         sprintf(_("Bio: %s"), $other->bio) . "\n\n" : '', | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |                         common_config('site', 'name'), | 
					
						
							|  |  |  |                         common_local_url('emailsettings')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-04 15:34:33 -05:00
										 |  |  |         // reset localization
 | 
					
						
							|  |  |  |         common_init_locale(); | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |         mail_send($recipients, $headers, $body); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-07-18 00:12:31 -04:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2008-07-19 16:26:25 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | /** | 
					
						
							|  |  |  |  * notify a user of their new incoming email address | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * User's email and incoming fields should already be updated. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param User $user user with the new address | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return void | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function mail_new_incoming_notify($user) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     $profile = $user->getProfile(); | 
					
						
							| 
									
										
										
										
											2008-07-19 16:26:25 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     $name = $profile->getBestName(); | 
					
						
							| 
									
										
										
										
											2008-07-21 00:23:33 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     $headers['From']    = $user->incomingemail; | 
					
						
							|  |  |  |     $headers['To']      = $name . ' <' . $user->email . '>'; | 
					
						
							|  |  |  |     $headers['Subject'] = sprintf(_('New email address for posting to %s'), | 
					
						
							|  |  |  |                                   common_config('site', 'name')); | 
					
						
							| 
									
										
										
										
											2008-07-21 00:23:33 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     $body = sprintf(_("You have a new posting address on %1\$s.\n\n". | 
					
						
							|  |  |  |                       "Send email to %2\$s to post new messages.\n\n". | 
					
						
							|  |  |  |                       "More email instructions at %3\$s.\n\n". | 
					
						
							|  |  |  |                       "Faithfully yours,\n%4\$s"), | 
					
						
							|  |  |  |                     common_config('site', 'name'), | 
					
						
							|  |  |  |                     $user->incomingemail, | 
					
						
							|  |  |  |                     common_local_url('doc', array('title' => 'email')), | 
					
						
							|  |  |  |                     common_config('site', 'name')); | 
					
						
							| 
									
										
										
										
											2008-07-21 00:23:33 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     mail_send($user->email, $headers, $body); | 
					
						
							| 
									
										
										
										
											2008-07-19 16:26:25 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | /** | 
					
						
							|  |  |  |  * generate a new address for incoming messages | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @todo check the database for uniqueness | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return string new email address for incoming messages | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function mail_new_incoming_address() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     $prefix = common_confirmation_code(64); | 
					
						
							|  |  |  |     $suffix = mail_domain(); | 
					
						
							|  |  |  |     return $prefix . '@' . $suffix; | 
					
						
							| 
									
										
										
										
											2008-07-19 16:26:25 -04:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2008-07-20 15:55:49 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | /** | 
					
						
							|  |  |  |  * broadcast a notice to all subscribers with SMS notification on | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This function sends SMS messages to all users who have sms addresses; | 
					
						
							|  |  |  |  * have sms notification on; and have sms enabled for this particular | 
					
						
							|  |  |  |  * subscription. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param Notice $notice The notice to broadcast | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return success flag | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2008-07-21 00:23:33 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | function mail_broadcast_notice_sms($notice) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     // Now, get users subscribed to this profile
 | 
					
						
							| 
									
										
										
										
											2008-09-04 22:20:19 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     $user = new User(); | 
					
						
							| 
									
										
										
										
											2008-09-04 22:20:19 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-26 21:10:32 +00:00
										 |  |  |     $UT = common_config('db','type')=='pgsql'?'"user"':'user'; | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     $user->query('SELECT nickname, smsemail, incomingemail ' . | 
					
						
							| 
									
										
										
										
											2009-01-26 21:10:32 +00:00
										 |  |  |                  "FROM $UT JOIN subscription " . | 
					
						
							|  |  |  |                  "ON $UT.id = subscription.subscriber " . | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |                  'WHERE subscription.subscribed = ' . $notice->profile_id . ' ' . | 
					
						
							| 
									
										
										
										
											2009-06-05 10:07:26 -07:00
										 |  |  |                  'AND subscription.subscribed != subscription.subscriber ' . | 
					
						
							| 
									
										
										
										
											2009-01-26 21:10:32 +00:00
										 |  |  |                  "AND $UT.smsemail IS NOT null " . | 
					
						
							|  |  |  |                  "AND $UT.smsnotify = 1 " . | 
					
						
							| 
									
										
										
										
											2008-12-09 21:47:06 -05:00
										 |  |  |                  'AND subscription.sms = 1 '); | 
					
						
							| 
									
										
										
										
											2008-09-04 22:20:19 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     while ($user->fetch()) { | 
					
						
							|  |  |  |         common_log(LOG_INFO, | 
					
						
							|  |  |  |                    'Sending notice ' . $notice->id . ' to ' . $user->smsemail, | 
					
						
							|  |  |  |                    __FILE__); | 
					
						
							|  |  |  |         $success = mail_send_sms_notice_address($notice, | 
					
						
							|  |  |  |                                                 $user->smsemail, | 
					
						
							|  |  |  |                                                 $user->incomingemail); | 
					
						
							|  |  |  |         if (!$success) { | 
					
						
							|  |  |  |             // XXX: Not sure, but I think that's the right thing to do
 | 
					
						
							|  |  |  |             common_log(LOG_WARNING, | 
					
						
							|  |  |  |                        'Sending notice ' . $notice->id . ' to ' . | 
					
						
							|  |  |  |                        $user->smsemail . ' FAILED, cancelling.', | 
					
						
							|  |  |  |                        __FILE__); | 
					
						
							|  |  |  |             return false; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $user->free(); | 
					
						
							|  |  |  |     unset($user); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return true; | 
					
						
							| 
									
										
										
										
											2008-07-20 15:55:49 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | /** | 
					
						
							|  |  |  |  * send a notice to a user via SMS | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * A convenience wrapper around mail_send_sms_notice_address() | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param Notice $notice notice to send | 
					
						
							|  |  |  |  * @param User   $user   user to receive notice | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @see mail_send_sms_notice_address() | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return boolean success flag | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function mail_send_sms_notice($notice, $user) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     return mail_send_sms_notice_address($notice, | 
					
						
							|  |  |  |                                         $user->smsemail, | 
					
						
							|  |  |  |                                         $user->incomingemail); | 
					
						
							| 
									
										
										
										
											2008-09-04 22:20:19 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | /** | 
					
						
							|  |  |  |  * send a notice to an SMS email address from a given address | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * We use the user's incoming email address as the "From" address to make | 
					
						
							|  |  |  |  * replying to notices easier. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param Notice $notice        notice to send | 
					
						
							|  |  |  |  * @param string $smsemail      email address to send to | 
					
						
							|  |  |  |  * @param string $incomingemail email address to set as 'from' | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return boolean success flag | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2008-09-04 22:20:19 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | function mail_send_sms_notice_address($notice, $smsemail, $incomingemail) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     $to = $nickname . ' <' . $smsemail . '>'; | 
					
						
							| 
									
										
										
										
											2008-07-20 15:55:49 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     $other = $notice->getProfile(); | 
					
						
							| 
									
										
										
										
											2008-09-04 22:20:19 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     common_log(LOG_INFO, 'Sending notice ' . $notice->id . | 
					
						
							|  |  |  |                ' to ' . $smsemail, __FILE__); | 
					
						
							| 
									
										
										
										
											2008-09-04 22:20:19 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     $headers = array(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $headers['From']    = ($incomingemail) ? $incomingemail : mail_notify_from(); | 
					
						
							|  |  |  |     $headers['To']      = $to; | 
					
						
							|  |  |  |     $headers['Subject'] = sprintf(_('%s status'), | 
					
						
							|  |  |  |                                   $other->getBestName()); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $body = $notice->content; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return mail_send($smsemail, $headers, $body); | 
					
						
							| 
									
										
										
										
											2008-07-20 15:55:49 -04:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2008-07-20 21:11:28 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | /** | 
					
						
							|  |  |  |  * send a message to confirm a claim for an SMS number | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param string $code     confirmation code | 
					
						
							|  |  |  |  * @param string $nickname nickname of user claiming number | 
					
						
							|  |  |  |  * @param string $address  email address to send the confirmation to | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @see common_confirmation_code() | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return void | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2008-07-20 21:11:28 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | function mail_confirm_sms($code, $nickname, $address) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     $recipients = $address; | 
					
						
							| 
									
										
										
										
											2008-07-21 00:23:33 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     $headers['From']    = mail_notify_from(); | 
					
						
							|  |  |  |     $headers['To']      = $nickname . ' <' . $address . '>'; | 
					
						
							|  |  |  |     $headers['Subject'] = _('SMS confirmation'); | 
					
						
							| 
									
										
										
										
											2008-07-20 21:11:28 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     // FIXME: I18N
 | 
					
						
							| 
									
										
										
										
											2008-07-20 21:11:28 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     $body  = "$nickname: confirm you own this phone number with this code:"; | 
					
						
							|  |  |  |     $body .= "\n\n"; | 
					
						
							|  |  |  |     $body .= $code; | 
					
						
							|  |  |  |     $body .= "\n\n"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     mail_send($recipients, $headers, $body); | 
					
						
							| 
									
										
										
										
											2008-07-20 21:11:28 -04:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2008-09-17 13:47:41 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | /** | 
					
						
							|  |  |  |  * send a mail message to notify a user of a 'nudge' | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param User $from user nudging | 
					
						
							|  |  |  |  * @param User $to   user being nudged | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return boolean success flag | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function mail_notify_nudge($from, $to) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2008-12-04 16:24:55 -05:00
										 |  |  |     common_init_locale($to->language); | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     $subject = sprintf(_('You\'ve been nudged by %s'), $from->nickname); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $from_profile = $from->getProfile(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $body = sprintf(_("%1\$s (%2\$s) is wondering what you are up to ". | 
					
						
							|  |  |  |                       "these days and is inviting you to post some news.\n\n". | 
					
						
							|  |  |  |                       "So let's hear from you :)\n\n". | 
					
						
							|  |  |  |                       "%3\$s\n\n". | 
					
						
							| 
									
										
										
										
											2009-11-09 20:01:46 +01:00
										 |  |  |                       "Don't reply to this email; it won't get to them.\n\n". | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |                       "With kind regards,\n". | 
					
						
							|  |  |  |                       "%4\$s\n"), | 
					
						
							|  |  |  |                     $from_profile->getBestName(), | 
					
						
							|  |  |  |                     $from->nickname, | 
					
						
							|  |  |  |                     common_local_url('all', array('nickname' => $to->nickname)), | 
					
						
							|  |  |  |                     common_config('site', 'name')); | 
					
						
							| 
									
										
										
										
											2008-12-04 16:24:55 -05:00
										 |  |  |     common_init_locale(); | 
					
						
							| 
									
										
										
										
											2010-03-04 17:07:40 +11:00
										 |  |  | 
 | 
					
						
							|  |  |  |     $headers = _mail_prepare_headers('nudge', $to->nickname, $from->nickname); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return mail_to_user($to, $subject, $body, $headers); | 
					
						
							| 
									
										
										
										
											2008-11-15 21:27:35 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | /** | 
					
						
							|  |  |  |  * send a message to notify a user of a direct message (DM) | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This function checks to see if the recipient wants notification | 
					
						
							|  |  |  |  * of DMs and has a configured email address. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param Message $message message to notify about | 
					
						
							|  |  |  |  * @param User    $from    user sending message; default to sender | 
					
						
							|  |  |  |  * @param User    $to      user receiving message; default to recipient | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return boolean success code | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2008-09-17 13:47:41 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | function mail_notify_message($message, $from=null, $to=null) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     if (is_null($from)) { | 
					
						
							|  |  |  |         $from = User::staticGet('id', $message->from_profile); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-10-04 13:45:52 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     if (is_null($to)) { | 
					
						
							|  |  |  |         $to = User::staticGet('id', $message->to_profile); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-09-17 13:47:41 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     if (is_null($to->email) || !$to->emailnotifymsg) { | 
					
						
							|  |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-10-04 13:45:52 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-04 16:24:55 -05:00
										 |  |  |     common_init_locale($to->language); | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     $subject = sprintf(_('New private message from %s'), $from->nickname); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $from_profile = $from->getProfile(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $body = sprintf(_("%1\$s (%2\$s) sent you a private message:\n\n". | 
					
						
							|  |  |  |                       "------------------------------------------------------\n". | 
					
						
							|  |  |  |                       "%3\$s\n". | 
					
						
							|  |  |  |                       "------------------------------------------------------\n\n". | 
					
						
							|  |  |  |                       "You can reply to their message here:\n\n". | 
					
						
							|  |  |  |                       "%4\$s\n\n". | 
					
						
							| 
									
										
										
										
											2009-11-09 20:01:46 +01:00
										 |  |  |                       "Don't reply to this email; it won't get to them.\n\n". | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |                       "With kind regards,\n". | 
					
						
							|  |  |  |                       "%5\$s\n"), | 
					
						
							|  |  |  |                     $from_profile->getBestName(), | 
					
						
							|  |  |  |                     $from->nickname, | 
					
						
							|  |  |  |                     $message->content, | 
					
						
							|  |  |  |                     common_local_url('newmessage', array('to' => $from->id)), | 
					
						
							|  |  |  |                     common_config('site', 'name')); | 
					
						
							| 
									
										
										
										
											2008-10-04 13:45:52 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-04 17:07:40 +11:00
										 |  |  |     $headers = _mail_prepare_headers('message', $to->nickname, $from->nickname); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-04 16:24:55 -05:00
										 |  |  |     common_init_locale(); | 
					
						
							| 
									
										
										
										
											2010-03-04 17:07:40 +11:00
										 |  |  |     return mail_to_user($to, $subject, $body, $headers); | 
					
						
							| 
									
										
										
										
											2008-09-17 13:47:41 -04:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2008-10-04 11:44:54 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | /** | 
					
						
							|  |  |  |  * notify a user that one of their notices has been chosen as a 'fave' | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2009-11-09 20:01:46 +01:00
										 |  |  |  * Doesn't check that the user has an email address nor if they | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |  * want to receive notification of faves. Maybe this happens higher | 
					
						
							|  |  |  |  * up the stack...? | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param User   $other  The user whose notice was faved | 
					
						
							|  |  |  |  * @param User   $user   The user who faved the notice | 
					
						
							|  |  |  |  * @param Notice $notice The notice that was faved | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return void | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function mail_notify_fave($other, $user, $notice) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-11-16 14:28:55 -05:00
										 |  |  |     if (!$user->hasRight(Right::EMAILONFAVE)) { | 
					
						
							|  |  |  |         return; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |     $profile = $user->getProfile(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $bestname = $profile->getBestName(); | 
					
						
							| 
									
										
										
										
											2008-10-04 13:45:52 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-04 16:24:55 -05:00
										 |  |  |     common_init_locale($other->language); | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-12 16:58:04 -04:00
										 |  |  |     $subject = sprintf(_('%s (@%s) added your notice as a favorite'), $bestname, $user->nickname); | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-12 16:58:04 -04:00
										 |  |  |     $body = sprintf(_("%1\$s (@%7\$s) just added your notice from %2\$s". | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |                       " as one of their favorites.\n\n" . | 
					
						
							| 
									
										
										
										
											2009-03-24 10:29:30 -04:00
										 |  |  |                       "The URL of your notice is:\n\n" . | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |                       "%3\$s\n\n" . | 
					
						
							| 
									
										
										
										
											2009-03-24 10:29:30 -04:00
										 |  |  |                       "The text of your notice is:\n\n" . | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |                       "%4\$s\n\n" . | 
					
						
							| 
									
										
										
										
											2009-03-24 10:29:30 -04:00
										 |  |  |                       "You can see the list of %1\$s's favorites here:\n\n" . | 
					
						
							|  |  |  |                       "%5\$s\n\n" . | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |                       "Faithfully yours,\n" . | 
					
						
							| 
									
										
										
										
											2009-03-24 10:29:30 -04:00
										 |  |  |                       "%6\$s\n"), | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |                     $bestname, | 
					
						
							|  |  |  |                     common_exact_date($notice->created), | 
					
						
							|  |  |  |                     common_local_url('shownotice', | 
					
						
							|  |  |  |                                      array('notice' => $notice->id)), | 
					
						
							| 
									
										
										
										
											2009-03-24 10:29:30 -04:00
										 |  |  |                     $notice->content, | 
					
						
							| 
									
										
										
										
											2008-12-23 12:33:30 -05:00
										 |  |  |                     common_local_url('showfavorites', | 
					
						
							|  |  |  |                                      array('nickname' => $user->nickname)), | 
					
						
							| 
									
										
										
										
											2009-09-12 16:58:04 -04:00
										 |  |  |                     common_config('site', 'name'), | 
					
						
							|  |  |  |                     $user->nickname); | 
					
						
							| 
									
										
										
										
											2008-10-04 13:45:52 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-04 17:07:40 +11:00
										 |  |  |     $headers = _mail_prepare_headers('fave', $other->nickname, $user->nickname); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-04 16:24:55 -05:00
										 |  |  |     common_init_locale(); | 
					
						
							| 
									
										
										
										
											2010-03-04 17:07:40 +11:00
										 |  |  |     mail_to_user($other, $subject, $body, $headers); | 
					
						
							| 
									
										
										
										
											2008-10-04 11:44:54 -04:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2009-02-16 18:26:15 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * notify a user that they have received an "attn:" message AKA "@-reply" | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param User   $user   The user who recevied the notice | 
					
						
							|  |  |  |  * @param Notice $notice The notice that was sent | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return void | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function mail_notify_attn($user, $notice) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     if (!$user->email || !$user->emailnotifyattn) { | 
					
						
							|  |  |  |         return; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $sender = $notice->getProfile(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-23 09:00:05 -08:00
										 |  |  |     if ($sender->id == $user->id) { | 
					
						
							|  |  |  |         return; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-16 14:18:51 -05:00
										 |  |  |     if (!$sender->hasRight(Right::EMAILONREPLY)) { | 
					
						
							|  |  |  |         return; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-16 18:26:15 -05:00
										 |  |  |     $bestname = $sender->getBestName(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-20 12:06:54 +02:00
										 |  |  |     common_switch_locale($user->language); | 
					
						
							| 
									
										
										
										
											2009-11-16 14:11:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-04 17:07:40 +11:00
										 |  |  |         if ($notice->conversation != $notice->id) { | 
					
						
							|  |  |  |                 $conversationEmailText = "The full conversation can be read here:\n\n". | 
					
						
							|  |  |  |                                                                  "\t%5\$s\n\n "; | 
					
						
							|  |  |  |                 $conversationUrl            = common_local_url('conversation', | 
					
						
							| 
									
										
										
										
											2009-08-07 15:24:58 -07:00
										 |  |  |                                  array('id' => $notice->conversation)).'#notice-'.$notice->id; | 
					
						
							| 
									
										
										
										
											2010-03-04 17:07:40 +11:00
										 |  |  |         } else { | 
					
						
							|  |  |  |                 $conversationEmailText = "%5\$s"; | 
					
						
							|  |  |  |                 $conversationUrl = null; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2009-11-16 14:11:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-12 16:58:04 -04:00
										 |  |  |     $subject = sprintf(_('%s (@%s) sent a notice to your attention'), $bestname, $sender->nickname); | 
					
						
							| 
									
										
										
										
											2009-11-16 14:11:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-04 17:07:40 +11:00
										 |  |  |         $body = sprintf(_("%1\$s (@%9\$s) just sent a notice to your attention (an '@-reply') on %2\$s.\n\n". | 
					
						
							| 
									
										
										
										
											2009-02-16 18:26:15 -05:00
										 |  |  |                       "The notice is here:\n\n". | 
					
						
							|  |  |  |                       "\t%3\$s\n\n" . | 
					
						
							|  |  |  |                       "It reads:\n\n". | 
					
						
							|  |  |  |                       "\t%4\$s\n\n" . | 
					
						
							| 
									
										
										
										
											2009-08-07 15:24:58 -07:00
										 |  |  |                       $conversationEmailText . | 
					
						
							| 
									
										
										
										
											2009-02-16 18:26:15 -05:00
										 |  |  |                       "You can reply back here:\n\n". | 
					
						
							| 
									
										
										
										
											2009-08-07 15:24:58 -07:00
										 |  |  |                       "\t%6\$s\n\n" . | 
					
						
							| 
									
										
										
										
											2009-02-16 18:26:15 -05:00
										 |  |  |                       "The list of all @-replies for you here:\n\n" . | 
					
						
							| 
									
										
										
										
											2009-08-07 15:24:58 -07:00
										 |  |  |                       "%7\$s\n\n" . | 
					
						
							| 
									
										
										
										
											2009-02-16 18:26:15 -05:00
										 |  |  |                       "Faithfully yours,\n" . | 
					
						
							|  |  |  |                       "%2\$s\n\n" . | 
					
						
							| 
									
										
										
										
											2009-08-07 15:24:58 -07:00
										 |  |  |                       "P.S. You can turn off these email notifications here: %8\$s\n"), | 
					
						
							|  |  |  |                     $bestname,//%1
 | 
					
						
							|  |  |  |                     common_config('site', 'name'),//%2
 | 
					
						
							| 
									
										
										
										
											2009-02-16 18:26:15 -05:00
										 |  |  |                     common_local_url('shownotice', | 
					
						
							| 
									
										
										
										
											2009-08-07 15:24:58 -07:00
										 |  |  |                                      array('notice' => $notice->id)),//%3
 | 
					
						
							|  |  |  |                     $notice->content,//%4
 | 
					
						
							| 
									
										
										
										
											2010-03-04 17:07:40 +11:00
										 |  |  |                                         $conversationUrl,//%5
 | 
					
						
							| 
									
										
										
										
											2009-02-16 18:26:15 -05:00
										 |  |  |                     common_local_url('newnotice', | 
					
						
							| 
									
										
										
										
											2009-09-11 22:37:37 -04:00
										 |  |  |                                      array('replyto' => $sender->nickname, 'inreplyto' => $notice->id)),//%6
 | 
					
						
							| 
									
										
										
										
											2009-02-16 18:26:15 -05:00
										 |  |  |                     common_local_url('replies', | 
					
						
							| 
									
										
										
										
											2009-08-07 15:24:58 -07:00
										 |  |  |                                      array('nickname' => $user->nickname)),//%7
 | 
					
						
							| 
									
										
										
										
											2009-09-12 16:58:04 -04:00
										 |  |  |                     common_local_url('emailsettings'), //%8
 | 
					
						
							|  |  |  |                     $sender->nickname); //%9
 | 
					
						
							| 
									
										
										
										
											2009-11-16 14:11:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-04 17:07:40 +11:00
										 |  |  |     $headers = _mail_prepare_headers('mention', $user->nickname, $sender->nickname); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-20 12:06:54 +02:00
										 |  |  |     common_switch_locale(); | 
					
						
							| 
									
										
										
										
											2010-03-04 17:07:40 +11:00
										 |  |  |     mail_to_user($user, $subject, $body, $headers); | 
					
						
							| 
									
										
										
										
											2009-02-16 18:26:15 -05:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2010-03-04 17:07:40 +11:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Prepare the common mail headers used in notification emails | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param string $msg_type type of message being sent to the user | 
					
						
							|  |  |  |  * @param string $to       nickname of the receipient | 
					
						
							|  |  |  |  * @param string $from     nickname of the user triggering the notification | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return array list of mail headers to include in the message | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | function _mail_prepare_headers($msg_type, $to, $from) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     $headers = array( | 
					
						
							|  |  |  |         'X-StatusNet-MessageType' => $msg_type, | 
					
						
							|  |  |  |         'X-StatusNet-TargetUser'  => $to, | 
					
						
							|  |  |  |         'X-StatusNet-SourceUser'  => $from, | 
					
						
							|  |  |  |         'X-StatusNet-Domain'      => common_config('site', 'server') | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return $headers; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 |