Списание средств с баланса пользователя

Как реализовать списание средств с баланса msProfile при создании Tickets.
Я понял то что надо привязать плагин к событию OnDocFormSave
$user = $modx->getAuthenticatedUser('web');
$user_id = $user->get('id');
$user_money_profile = $modx->getObject('msCustomerProfile', $user_id);
$balance = $user_money_profile->get('account');
$balance = float($balance); 

if ($modx->event->name == 'OnDocFormSave') {
    $modx->log(1, 'Новый');
      if($mode == 'new'){  
        if (!empty($_POST['pricetpl'])){
            if ($balance >= 100) {
            	$new_balance = $balance - 100;
            	$user_money_profile->set('account', $new_balance);
            	$user_money_profile->save();
            	$modx->log(1, 'Списал баланс');
            }else { $modx->log(1, 'Недостаточно средств');}
        } 
    } 
}
Проверял на ошибки $modx->log(1, 'Новый'); не доходит даже. При нажатие на кнопку Опубликовать(добавить тикет) зависает и не редиректит на другую страницу, но при этом тикет создается
Сергей
15 мая 2018, 11:54
modx.pro
2
1 085
0

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

Володя
15 мая 2018, 15:10
4
+1
как минимум переделать так
<?php


if ($modx->event->name === 'OnDocFormSave') {
   
    if($mode == 'new'){
        $modx->log(1, 'Новый');
        
        if (!$user = $modx->getAuthenticatedUser('web')) {
            // не получен пользователь
            return;
        }
        
        $user_id = $user->get('id');
        if (!$user_money_profile = $modx->getObject('msCustomerProfile', $user_id)) {
            // не получе профиль пользователя
            return;
        }
        
        $balance = (float)$user_money_profile->get('account');
       
        if (!empty($_POST['pricetpl'])){
            if ($balance >= 100) {
                $new_balance = $balance - 100;
                $user_money_profile->set('account', $new_balance);
                $user_money_profile->save();
                $modx->log(1, 'Списал баланс');
            }else { $modx->log(1, 'Недостаточно средств');}
        }
    }
}
    Сергей
    15 мая 2018, 15:15
    0
    Спасибо большое боду пробовать
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2