From d38dd3874d1baf97b4a0d169470bc561489c5765 Mon Sep 17 00:00:00 2001 From: Pellaeon Lin Date: Thu, 19 Nov 2015 23:50:19 +0800 Subject: [PATCH] Update# send emails to admins to notify about new user --- controller/registercontroller.php | 44 +++++++++++++++++++++++++++ templates/email.newuser_html.php | 2 ++ templates/email.newuser_plaintext.php | 2 ++ 3 files changed, 48 insertions(+) create mode 100644 templates/email.newuser_html.php create mode 100644 templates/email.newuser_plaintext.php diff --git a/controller/registercontroller.php b/controller/registercontroller.php index ac02d2a..4b37337 100644 --- a/controller/registercontroller.php +++ b/controller/registercontroller.php @@ -233,6 +233,20 @@ class RegisterController extends Controller { )) ), 'error'); } + + $admin_users = $this->groupmanager->get('admin')->getUsers(); + $to_arr = array(); + foreach ( $admin_users as $au ) { + $au_email = $this->config->getUserValue($au->getUID(), 'settings', 'email'); + if ( $au_email !== '' ) { + $to_arr[$au_email] = $au->getDisplayName(); + } + } + try { + $this->sendNewUserNotifEmail($to_arr, $user->getUID()); + } catch (\Exception $e) { + \OCP\Util::writeLog('registration', 'Sending admin notification email failed: '. $e->getMessage, \OCP\Util::ERROR); + } } return new TemplateResponse('registration', 'message', array('msg' => @@ -274,4 +288,34 @@ class RegisterController extends Controller { if ( !empty($failed_recipients) ) throw new \Exception('Failed recipients: '.print_r($failed_recipients, true)); } + + /** + * Sends new user notification email to admin + * @param array $to + * @param string $username the new user + * @return null + * @throws \Exception + */ + private function sendNewUserNotifEmail(array $to, string $username) { + $template_var = [ + 'user' => $username, + 'sitename' => $this->defaults->getName() + ]; + $html_template = new TemplateResponse('registration', 'email.newuser_html', $template_var, 'blank'); + $html_part = $html_template->render(); + $plaintext_template = new TemplateResponse('registration', 'email.newuser_plaintext', $template_var, 'blank'); + $plaintext_part = $plaintext_template->render(); + $subject = $this->l10n->t('A new user "%s" had created an account on %s', [$username, $this->defaults->getName()]); + + $from = Util::getDefaultEmailAddress('register'); + $message = $this->mailer->createMessage(); + $message->setFrom([$from => $this->defaults->getName()]); + $message->setTo($to); + $message->setSubject($subject); + $message->setPlainBody($plaintext_part); + $message->setHtmlBody($html_part); + $failed_recipients = $this->mailer->send($message); + if ( !empty($failed_recipients) ) + throw new \Exception('Failed recipients: '.print_r($failed_recipients, true)); + } } diff --git a/templates/email.newuser_html.php b/templates/email.newuser_html.php new file mode 100644 index 0000000..c7ab1ee --- /dev/null +++ b/templates/email.newuser_html.php @@ -0,0 +1,2 @@ +t('A new user "%s" has created an account on %s', [$_['user'], $_['sitename']]); diff --git a/templates/email.newuser_plaintext.php b/templates/email.newuser_plaintext.php new file mode 100644 index 0000000..2a13b13 --- /dev/null +++ b/templates/email.newuser_plaintext.php @@ -0,0 +1,2 @@ +t('A new user "%"s has created an account on %s', [$_['user'], $_['sitename']]);