forked from GNUsocial/gnu-social
		
	email notification on new subscriptions
darcs-hash:20080615030202-84dde-ebed7919c227ce280dc818f301e15001eb8b5926.gz
This commit is contained in:
		@@ -55,7 +55,44 @@ class SubscribeAction extends Action {
 | 
				
			|||||||
			return;
 | 
								return;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$this->notify($other, $user);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		common_redirect(common_local_url('subscriptions', array('nickname' =>
 | 
							common_redirect(common_local_url('subscriptions', array('nickname' =>
 | 
				
			||||||
																$user->nickname)));
 | 
																					$user->nickname)));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						function notify($listenee, $listener) {
 | 
				
			||||||
 | 
							# XXX: add other notifications (Jabber, SMS) here
 | 
				
			||||||
 | 
							# XXX: queue this and handle it offline
 | 
				
			||||||
 | 
							$this->notify_email($listenee, $listener);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						function notify_email($listenee, $listener) {
 | 
				
			||||||
 | 
							if ($listenee->email) {
 | 
				
			||||||
 | 
								global $config;
 | 
				
			||||||
 | 
								$profile = $listenee->getProfile();
 | 
				
			||||||
 | 
								$other = $listener->getProfile();
 | 
				
			||||||
 | 
								$name = $profile->getBestName();
 | 
				
			||||||
 | 
								$other_name = $other->getBestName();
 | 
				
			||||||
 | 
								$recipients = $listenee->email;
 | 
				
			||||||
 | 
								$headers['From'] = mail_notify_from();
 | 
				
			||||||
 | 
								$headers['To'] = $name . ' <' . $listenee->email . '>';
 | 
				
			||||||
 | 
								$headers['Subject'] = $other_name . _t(' is now listening to your notices on ') . $config['site']['name'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								$body = 
 | 
				
			||||||
 | 
								  ($other->fullname) ? 
 | 
				
			||||||
 | 
								  ($other->fullname . ' (' . $other->nickname . ')') : $other->nickname;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								$body .= _t(' is now listening to your notices on ') . $config['site']['name'] . '.';
 | 
				
			||||||
 | 
								$body .= "\n\n";
 | 
				
			||||||
 | 
								$body .= "\t".$other->profileurl;
 | 
				
			||||||
 | 
								$body .= "\n\n";
 | 
				
			||||||
 | 
								$body .= _t('Faithfully yours, ');
 | 
				
			||||||
 | 
								$body .= "\n";
 | 
				
			||||||
 | 
								$body .= $config['site']['name'];
 | 
				
			||||||
 | 
								$body .= "\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								mail_send($recipients, $headers, $body);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -133,4 +133,8 @@ class Profile extends DB_DataObject
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						function getBestName() {
 | 
				
			||||||
 | 
							return ($this->fullname) ? $this->fullname : $this->nickname;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,7 +51,11 @@ $config =
 | 
				
			|||||||
		'license' =>
 | 
							'license' =>
 | 
				
			||||||
		array('url' => 'http://creativecommons.org/licenses/by/3.0/',
 | 
							array('url' => 'http://creativecommons.org/licenses/by/3.0/',
 | 
				
			||||||
			  'title' => 'Creative Commons Attribution 3.0',
 | 
								  'title' => 'Creative Commons Attribution 3.0',
 | 
				
			||||||
			  'image' => 'http://i.creativecommons.org/l/by/3.0/88x31.png'));
 | 
								  'image' => 'http://i.creativecommons.org/l/by/3.0/88x31.png'),
 | 
				
			||||||
 | 
							'mail' =>
 | 
				
			||||||
 | 
							array('backend' => 'mail',
 | 
				
			||||||
 | 
								  'params' => NULL)
 | 
				
			||||||
 | 
							);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$config['db'] = &PEAR::getStaticProperty('DB_DataObject','options');
 | 
					$config['db'] = &PEAR::getStaticProperty('DB_DataObject','options');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -68,6 +72,7 @@ require_once(INSTALLDIR.'/config.php');
 | 
				
			|||||||
require_once(INSTALLDIR.'/lib/util.php');
 | 
					require_once(INSTALLDIR.'/lib/util.php');
 | 
				
			||||||
require_once(INSTALLDIR.'/lib/action.php');
 | 
					require_once(INSTALLDIR.'/lib/action.php');
 | 
				
			||||||
require_once(INSTALLDIR.'/lib/theme.php');
 | 
					require_once(INSTALLDIR.'/lib/theme.php');
 | 
				
			||||||
 | 
					require_once(INSTALLDIR.'/lib/mail.php');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require_once(INSTALLDIR.'/classes/Avatar.php');
 | 
					require_once(INSTALLDIR.'/classes/Avatar.php');
 | 
				
			||||||
require_once(INSTALLDIR.'/classes/Notice.php');
 | 
					require_once(INSTALLDIR.'/classes/Notice.php');
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										57
									
								
								lib/mail.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								lib/mail.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,57 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Laconica - a distributed open-source microblogging tool
 | 
				
			||||||
 | 
					 * Copyright (C) 2008, Controlez-Vous, Inc.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 | 
					 * 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/>.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (!defined('LACONICA')) { exit(1); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once('Mail.php');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function mail_backend() {
 | 
				
			||||||
 | 
						static $backend = NULL; 
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						if (!$backend) {
 | 
				
			||||||
 | 
							global $config;
 | 
				
			||||||
 | 
							$backend = Mail::factory($config['mail']['backend'],
 | 
				
			||||||
 | 
													 ($config['mail']['params']) ? $config['mail']['params'] : array());
 | 
				
			||||||
 | 
							if (PEAR::isError($backend)) {
 | 
				
			||||||
 | 
								common_server_error($backend->getMessage(), 500);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return $backend;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# XXX: use Mail_Queue... maybe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function mail_send($recipients, $headers, $body) {
 | 
				
			||||||
 | 
						$backend = mail_backend();
 | 
				
			||||||
 | 
						assert($backend); # throws an error if it's bad
 | 
				
			||||||
 | 
						$sent = $backend->send($recipients, $headers, $body);
 | 
				
			||||||
 | 
						if (PEAR::isError($sent)) {
 | 
				
			||||||
 | 
							common_server_error($sent->getMessage(), 500);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function mail_notify_from() {
 | 
				
			||||||
 | 
						global $config;
 | 
				
			||||||
 | 
						if ($config['mail']['notifyfrom']) {
 | 
				
			||||||
 | 
							return $config['mail']['notifyfrom'];
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							return 'Do Not Reply <nobody@'.$config['site']['server'].'>';
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
		Reference in New Issue
	
	Block a user