Цель: высылать данные (логин/пароль) о регистрации на почту клиента при оформлении им заказа в интернет-магазине.
Из коробки почему то такого функционала нет, хотя регистрация проходит. Получается так, что пользователь после оформления заказа даже и не подозревает что только что зарегистрировался на сайте. Как-то это не правильно. Собственно отсюда и появилась такая задача.
Было решено написать плагин, который через процессор MODX будет изменять пароль новому клиенту и отправлять его на указанную им почту. Пароль должен генерировать сам MODX.
Плагин сработает при условиях:
- Заказ имеет статус 1 (Новый);
- С момента регистрации пользователя прошло не более 10 секунд;
Код плагина:
if ($modx->event->name == 'msOnChangeOrderStatus') {
// Если статус заказа << Новый >>
if ($status == 1) {
$userId = $order->user_id;
$objUser = $modx->getObject('modUser', $userId);
$objProfile = $modx->getObject('modUserProfile', $userId);
$time = time();
$newUser = 10; // Сколько секунд пользователь считается новым
if ($objUser && $objProfile) {
$username = $objUser->get('username');
$email = $objProfile->get('email');
$createdon = strtotime($objUser->get('createdon')) + $newUser;
$modx = new modX();
$modx->initialize('mgr');
$modx->getService('error','error.modError');
if ($createdon > $time) {
$data = array(
'id' => $userId,
'username' => $username,
'email' => $email,
'newpassword' => 'passwordgenmethod', // любой набор символов
'passwordgenmethod' => 'g', // отдаём генерацию пароля MODX
'passwordnotifymethod' => 'e', // письмо пользователю
);
$response = $modx->runProcessor('/security/user/update', $data);
if ($response->isError()) {
$modx->log(modX::LOG_LEVEL_ERROR, 'Update error. Username: '.$username.', Message: '.$response->getMessage());
}
}
}
}
}
После чего, в системной настройке signupemail_message
меняем шаблон письма на примерно следующее:
<p>Здравствуйте [[+ufn]],</p>
<p>Ваши регистрационные данные для входа на сайт [[+sname]]:</p>
<p>
<strong>Логин:</strong> [[+uid]]<br />
<strong>Пароль:</strong> [[+pwd]]<br />
</p>
<p>После входа на сайт http://my-site.com/, Вы сможете сменить пароль.</p>
<p>С уважением,<br />Администратор сайта</p>
Также в системной настройке emailsubject
можно изменить и тему письма.
На этом всё.