Joomla 1.7 – admin email notification after user registration

There are 3 user activation options in Joomla 1.6 and 1.7 (they can be found in Users > User Manager > Options > New User Account Activation):

  • None – no activation required. After registration account is activated automatically and user can login. Notification email is sent to the registered user
  • Self – user receives an email with a link to activate his account. Once activated, user can login.
  • Admin – user receives an email with a link to verify his account. Once verified, administrators (users with “Receive System Email” option enabled) receives and email with a link to activate user’s account. Once activated registered user receives a notification that his account has been activated by administrator. User can now login.

As you can see administrator is only notified about new user registration only if New User Account Activation is set to Admin. If it’s set to None or Self no notification email is sent to the admin account. This behaviour is different from Joomla 1.5 where administrator was always notified.

I couldn’t find a suitable extension to enable administrator notifications with none activation option so had to resort to a small hack on core Joomla files. Be aware that any change to the core files may be overwritten by a Joomla update. Always document changes you make to the core files so you can quickly re-do them if required. Also make backups of all files you modify.

 

 

Step 1

Open file:
components/com_users/models/registration.php

Scroll down to the very bottom of the code


if ($useractivation == 1)
return "useractivate";
else if ($useractivation == 2)
return "adminactivate";
else
return $user->id;
}
}

Delete line
return $user->id;
and paste following code instead:


{
// ===================================================================
// My Custom Edit. Send Notify Email to Admins start
// ===================================================================
// Compile the notification mail values.
$data = $user->getProperties();
$data['fromname'] = $config->get('fromname');
$data['mailfrom'] = $config->get('mailfrom');
$data['sitename'] = $config->get('sitename');
$data['siteurl'] = JUri::base();

$db = $this->getDbo();

$emailSubject = JText::sprintf(
'COM_USERS_EMAIL_REGISTRATION_NOTIFY_SUBJECT',
$data['name']
);

$emailBody = JText::sprintf(
'COM_USERS_EMAIL_REGISTRATION_NOTIFY_BODY',
$data['name'],
$data['email'],
$data['username']
);

// get all admin users
$query = 'SELECT name, email, sendEmail' .
' FROM #__users' .
' WHERE sendEmail=1';

$db->setQuery( $query );
$rows = $db->loadObjectList();

// Send mail to all superadministrators id
foreach( $rows as $row )
{
$return = JUtility::sendMail($data['mailfrom'], $data['fromname'], $row->email, $emailSubject, $emailBody);

// Check for an error.
if ($return !== true) {
$this->setError(JText::_('COM_USERS_REGISTRATION_ACTIVATION_NOTIFY_SEND_MAIL_FAILED'));
return false;
}
}
// ===================================================================
// My Custom Edit End
// ===================================================================

return $user->id;
}

Note: We deleted line: return $user->id; and added it back at the end only because the whole code after else now has to be in between curly brackets { and }

Step 2

Now open file language/en-GB/en-GB.com_users.ini
Note: en-GB refers to a Joomla Language. If you use different language this may be different for you

At the end of the file add following lines:
COM_USERS_EMAIL_REGISTRATION_NOTIFY_SUBJECT=”New user registration details (%s)”
COM_USERS_EMAIL_REGISTRATION_NOTIFY_BODY=”Hello administrator,\n\nA new user has registered.\nThis email contains their details:\n\n Name :  %s \n email:  %s \n Username:  %s “

Obviously you can edit the text so it works best for you.

Now, after user registration (if New User Account Activation option is set to none) all admins with Receive System emails set to Yes will receive email notifications.

This was tested on Joomla 1.7, but should also work on Joomla 1.6.

Update: January 2012 – Joomla 2.5 released

Good news! Joomla 2.5 now got this functionality built in, so there is no need or any core hacks or third party add-ons. Simply go to User Manager > Options and set Notification Mail to Administrators to Yes

Joomla 2.5 User Manager > Options


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *