Email или телефон + отправка пароля для входа на сайт при заказе в miniShop2

Добра и Здравия, уважаемые!

  1. Мне нужно при оформлении заказа проверять, введён ли email или телефон юзера, и если что-то одно введено (например, телефон), то email генерировать автоматом.
  2. Также нужно отправлять мыло с данными для входа (логин/пароль), если введён email юзера.
Как это можно реализовать? Подскажите, в какую сторону копать? Нашёл в каком-то комменте на данном сайте решение, как можно обойти проверку мыла, генерируя его самому, вот код:

class myOrderHandler extends msOrderHandler {
	
	public function submit($data = array()) {
		if(empty($data['email'])) {
			$data['email'] = uniqid('user_').'@MYSITE.ru';
		}
		return parent::submit($data);
	}
	
}

Пытался, что-то своё допинать, получилась какая-то неработающая херня:
class myOrderHandler extends msOrderHandler {
	
	public function validate($key, $value) {
		switch ($key) {
			case 'phone':
				$value = (substr(preg_replace('/[^-+0-9]/iu','',$value),0,15) != '')
					? $value
					: false;
				break;
		}

		//return $value;
		return parent::validate($key, $value);
	}
	
	public function submit($data = array()) {
		if(empty($data['email'])) {
			$data['email'] = uniqid('user_').'@MYSITE.ru';
		}
		return parent::submit($data);
	}
	
}
Пашок
11 февраля 2015, 20:04
modx.pro
1 228
0

Комментарии: 1

Григорий Коленько
12 февраля 2015, 02:36
0
На сколько помню, минишоп создает юзера при заказе. Тогда можно создать такой вот плагин.
Не знаю правда обработает ли системное событие мод икс.
switch ($modx->event->name) {
	case 'OnUserSave':
		if ($user && $mode == 'new') {
			if ($profile = $user->getOne('Profile')) {
				$email = $profile->get('....');
				//Ну и дальше делаешь что надо
			}
		}
		break;
}
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1