Hello there,
I would like to contribute with Seblod (the best and more
complete Joomla extension).
I think "Resend user activation email" feature should be native in joomla, bot It is not. So I did these
instructions if someone else need It too.
Seblod made It happens so easy!
Here we go:
You will need:
Seblod code pack plugin.(Specifically before store field)
Steps:
1)Create a content type named: Resend_Activation
with
USERr object
2)Create these fields :
Main
Body Position
res_explanation Type: Freetext Storage: none
res_Email Type: text Storage: none
res _send Type: Submit Storage: none Task: Save & New
Hidden Position
res_id Type: text Storage:
none
res_name Type: text Storage: none
res_username Type: text Storage: none
res_activation Type: text Storage: none
res_activation_email Type: email Storage: none
res_before_store Type: BeforeStore Storage: none
You should read this tutorial to learn how configure email type fields. This is an example text I´ve put in the EDITOR button of email field, but you can change as you want to:
Hello #res_name#,
Your user name to login: #res_username#
Click in the link and activate your account!
#res_activation#
Thank You
In the email field "To (fields):" you shloud use this field: res_email
In the the field res_before_store you must put this code:
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id', 'name', 'username', 'activation')));
$query->from($db->quoteName('#__users'));
$query->where($db->quoteName('email') . ' = '. $db->quote($fields['res_email']->value));
$db->setQuery($query);
$row = $db->loadAssoc();
$app= JFactory::getApplication();
If ($row == NULL) {
$app->redirect('/index.php?option=com_cck&view=form&layout=edit&type=resend_activation','This email does not exist in site database','warning');
}
elseif ($row['activation']=="") {
$app->redirect('/index.php?option=com_cck&view=form&layout=edit&type=resend_activation','This account is already activated','warning');
}
$fields['res_name']->value = $row['name'];
$fields['res_username']->value = $row['username'];
$fields['res_activation']->value =JURI::Base()."index.php/component/users/?task=registration.activate&token=".$row['activation'];
You can change the warning messages as you want, and you must set a success message in the content site form view configuration.
If you need that resend email link appears in joomla just after native messages like "Forgot your password?"; "Create an account" you must do an override of this file: joomla_root/components/com_users/login/default_login.php
You mus add this code about the line number 118:
|
<li> |
<a href="/<?php echo
JRoute::_('/index.php?option=com_cck&view=form&layout=edit&type=resend_activation');
?>"> |
<?php echo JText::_('COM_USERS_RESEND_ACTIVATION'); ?></a> |
</li> |
Don´t forget to add the string "COM_USERS_RESEND_ACTIVATION" as an override in the joomla backend language menu.
Enjoy