Плагин msOnBeforeCreateOrder иногда не срабатывает

Всем привет!

Есть задача: при попытке оформления нового заказа в minishop2, если заказчик уже есть в БД и у него есть хотя бы один заказ, выдавать предупреждение и не оформлять текущий заказ. Казалось бы, достаточно простая задача, был написан плагин на событие msOnBeforeCreateOrder
<?php
if ($modx->event->name == 'msOnBeforeCreateOrder') {
    $arr = $order->get();
    $email = str_replace(' ', '', $arr['email']);
    $user = $modx->getObject('modUserProfile', ['email' => $email]);
    if(is_object($user)) {	   
    	$user_id = $user->internalKey;
    	$orders = $modx->getCollection('msOrder', ['user_id' => $user_id]);
    	if (count($orders) > 0) {    	   
    	    $modx->event->output('пользователь с email '.$arr['email'].' уже зарегистрирован! Попробуйте ввести другой email');
    	}
    }
}
Плагин срабатывает корректно, но в списке заказов увидел, что у пары пользователей есть более одного заказа.

Что-то не так в коде плагина? Я пытался воспроизвести эту ситуацию — но всё норм, плагин не пропускает повторный заказ моего пользователя.
Alexey
21 октября 2020, 09:51
modx.pro
1
138
+1

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

Михаил
21 октября 2020, 11:00
+1
а не проще запретить пользователю вообще делать заказ, убирать ту же кнопку заказать в принципе или корзину?
    Alexey
    21 октября 2020, 11:07
    0
    Не получится — до отправки формы заказа неизвестен email пользователя, по которому происходит проверка
    Alexey
    21 октября 2020, 11:13
    0
    Немного поясню ситуацию. На сайте нужна регистрация пользователя на одном из трех тарифов. То есть вначале выбираем тариф (кладем товар(тариф) в корзину — перед каждым добавлением товара корзина очищается), потом оформляем заказ. В процессе оформления происходит регистрация. Задача в том, что у зареганного юзера уже есть тариф (заказ) и нужно запретить ему менять-добавлять другой тариф.
      Aborrol
      22 октября 2020, 04:17
      +1
      можно дополнительно на msOnAddToOrder проверять поле email и выдавать ошибку, заодно и кнопку оформления делать не активной
      Роман
      22 октября 2020, 19:35
      +1
      Может пользователи просто хитрят и вместо английской буквы пишут русскую. =) Должно работать.
        Alexey
        29 октября 2020, 18:57
        0
        В итоге, вот ответ: modx.pro/help/20502. Юзеры регались с одним телефоном.

        Раньше не сообразил. Спасибо всем за участие!
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          6