edit_account добавляет блокировку к уже заблокированному

Технические вопросы по UTM 5.0
Ответить
andreyn
Сообщения: 3
Зарегистрирован: Вт янв 05, 2016 19:19

edit_account добавляет блокировку к уже заблокированному

Сообщение andreyn »

понимаю что форум не для техподдержки, но может кто сталкивался...
в общем надо через utm5_urfaclient отредактировать аккаунт, например выставить кредит:
utm5_urfaclient -a edit_account -account_id 15 -credit 15

все выставляется правильно, НО, если пользователь уже заблокирован, то при системной - добавляется административная, при уже установленной административной - закрывается текущая и добавляется новая...
utm 5.3 002 как заставить его не трогать блокировку?
через php так же пробовал выствлять is_blocked таким же как был, выставлять время начала "текущее" и конец 2033, как это указано в edit_account.xml, так же пробовал устанавливать точно время как в текущей блокировке, все равно одно и тоже - добавляет новую....

это баг utm и надо обновлятся или все же есть решение?

andreyn
Сообщения: 3
Зарегистрирован: Вт янв 05, 2016 19:19

Сообщение andreyn »

в общем разобрался..., чтобы блокировка не добавлялась новая - нужно
is_blocked - указывать МЕНЬШЕ нуля, а не той цифрой что получена из rpcf_get_accountinfo(0x15109)(типтекущей блокировки)!
как то так:
utm5_urfaclient -a edit_account -account_id 15 -credit 15 -is_blocked -1

в php при этом все равно указывать block_start_date = time() и block_end_date = 2000000000...

странно что про это нигде никакого упоминания, а по логике там надо указывать цифру текущей блокировки... или я плохо читал?...

Аватара пользователя
Magnum72
Сообщения: 1947
Зарегистрирован: Чт сен 22, 2005 06:54
Контактная информация:

Сообщение Magnum72 »

Блокировки старые:
16 Системная
48 Системная с перерасчетом абонентки
256 Админская
768 Админская с перерасчетом абонентки
1792 Админская с перерасчетом абонентки и трафика

Блокировки новые:
Системная блокировка = 1
Административная блокировка = 2
Пользовательская - 3

Для параметра is_blocked функции rpcf_add_account допустимы следующие значения:
- 0 - снимается текущая блокировка;
- 0x100 - устанавливается административная блокировка;
- 0x2000 - статус блокировки не меняется.

В текущей реализации ненулевое значение параметр is_blocked обрабатывается следующим образом:
- если результат операции побитового <и> с 0x2000 не равен 0, статус блокировки не меняется;
- если результат операции побитового <и> с 0x2000 равен 0, устанавливается административная блокировка.



Ну и пример:

Код: Выделить всё

<?xml version="1.0"?>
<urfa>
<!-- ######################### USAGE&#58; ##############################################

edit_account -account_id -set_credit

#################################################################################### -->

  <parameter name="user_id"/>
  <parameter name="account_id"/>
  <parameter name="set_credit" value=""/>
  <parameter name="is_blocked"/>
  <parameter name="credit"/>

<!-- Poluchenie User ID -->
  <call function="rpcf_get_user_by_account" output="0"/>

<!-- Poluchenie Account Information -->
  <call function="rpcf_get_accountinfo" output="0"/>

<!-- Set credit -->
  <if variable="set_credit" value="" condition="ne">
    <set dst="credit" src="set_credit"/>
  </if>

<!-- Fix block -->
  <set dst="is_blocked" value="0x2000"/>
  <call function="rpcf_save_account" output="0"/>

</urfa>

andreyn
Сообщения: 3
Зарегистрирован: Вт янв 05, 2016 19:19

Сообщение andreyn »

спасибо... с 0x2000 отрабатывает так же как и с -1, что лучше использовать?

Ответить