Домой Wp-Recall WP-Recall: Пишем свое дополнение и кастомизация rcl_update_user_balance - не изменяет значение баланса и не пишет причин в лог
21ответ(ов) в теме
AndrewIOOO
не в сети 4 года
На сайте с 08.05.2017
Участник
Тем 16
Сообщения 63
1
16:33
Версия WP-Recall: 16.18.3

Не могу изловить ошибку. Подскажите, куда смотреть?

rcl_update_user_balance - не изменяет значение баланса и не пишет причин в лог.

вызываю
rcl_update_user_balance(15818,6);

в БД - пустота, лога нет. 🙁

0
Андрей CS
не в сети 2 дня
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
2
16:42

в админке баланс изменяется?

0
AndrewIOOO
не в сети 4 года
На сайте с 08.05.2017
Участник
Тем 16
Сообщения 63
3
17:05

Хм. А где в админке мне посмотреть баланс пользователя?
Это из под администратора должно быть видно или из под самого пользователя?

Я смотрю в ХХХ_rmag_users_balance - и там нет записей и не добавляются. Хотя,
-----------
function rcl_add_user_balance( $money, $user_id, $comment = '' ) {
global $wpdb;

$result = $wpdb->insert( RMAG_PREF . 'users_balance', array( 'user_id' => $user_id, 'user_balance' => $money ) );

....
----------

$result = 1

Не понимаю...

0
Вова (Otshelnik-Fm)
не в сети 14 часов
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
4
17:13

AndrewIOOO сказал(а)
А где в админке мне посмотреть баланс пользователя?

в списке пользователей

0
AndrewIOOO
не в сети 4 года
На сайте с 08.05.2017
Участник
Тем 16
Сообщения 63
5
17:14

Там не вижу такого поля (не выводится)

0
Вова (Otshelnik-Fm)
не в сети 14 часов
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
6
17:16

Доп user balance активирован?

0
AndrewIOOO
не в сети 4 года
На сайте с 08.05.2017
Участник
Тем 16
Сообщения 63
7
17:20

Проверил - активно.

Да, я уже полез в ядро (не исправлять, а с трассировкой). Вызов rcl_update_user_balance, а из неё rcl_add_user_balance проходит. А в БД не пишет, и ошибок не выдаёт..

0
AndrewIOOO
не в сети 4 года
На сайте с 08.05.2017
Участник
Тем 16
Сообщения 63
8
17:38

Добавил запись напрямую.
У соответствующего пользователя баланс не появился,
Но

История платежей
Всего в системе: 15935.00

- как я и указал...

0
Вова (Otshelnik-Fm)
не в сети 14 часов
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
9
17:38

AndrewIOOO сказал(а)
Там не вижу такого поля (не выводится)

так а почему вы там этого тогда не видите

Вы не можете просматривать опубликованные ссылки

если доп активирован?

0
AndrewIOOO
не в сети 4 года
На сайте с 08.05.2017
Участник
Тем 16
Сообщения 63
10
17:41

Не там смотрел. Столбец есть, и сейчас там значение, добавленное вручную.

Удалил "ручную" строку из БД, и значение, разумеется, обнулилось...

0
AndrewIOOO
не в сети 4 года
На сайте с 08.05.2017
Участник
Тем 16
Сообщения 63
11
17:51

Из админки, разумеется, все работает, баланс добавляется и изменяется...

Наверное, проблема в том, что rcl_update_user_balance я вызываю из ajax-обработчика? Там может чего-то не хватать для обращения к БД? (странно, что ошибок нет 🙁 )

Перед вызовом я сохраняю свои данные в свои таблицы - с БД проблем нет...

Редакции сообщения
11.02.2020 17:56AndrewIOOOПричина: не указано
0
Вова (Otshelnik-Fm)
не в сети 14 часов
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
12
17:56

AndrewIOOO сказал(а)
Наверное, проблема в том, что rcl_update_user_balance я вызываю из ajax-обработчика?

вот и проверьте
if( function_exists( 'rcl_update_user_balance' )) - в области видимости она или ее не существует. Хотя тогда была бы фатальная ошибка что вы к неизвестной функции обращаетесь...

Описание работы функции

Вы не можете просматривать опубликованные ссылки

- я проблем у себя в работе с ней не замечал

0
Вова (Otshelnik-Fm)
не в сети 14 часов
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
13
17:56

Тему перенес в кастомизации

0
AndrewIOOO
не в сети 4 года
На сайте с 08.05.2017
Участник
Тем 16
Сообщения 63
14
17:58

Проверил, функция на месте и работает.
И я точно без ошибок прохожу всю трассу... Я проверял (пишу свой лог), и уверен...
Почему нет пишет в БД - загадка...

Редакции сообщения
11.02.2020 18:01AndrewIOOOПричина: не указано
0
Вова (Otshelnik-Fm)
не в сети 14 часов
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
15
18:02

Было бы фаталити. Вам дебажить каждый шаг построчно в самой функции rcl_update_user_balance нужно. Я так иногда делаю когда не могу проверить и что-то идет не так.

$user_id - у вас это строка или число? я хз - но чудеса бывают в типах данных

1
AndrewIOOO
не в сети 4 года
На сайте с 08.05.2017
Участник
Тем 16
Сообщения 63
16
18:15

$user_id - был string, указал int - результат тот же 🙁

Внутри rcl_add_user_balance вижу переданные данные, всё в порядке... Но в БД не хочет писать :)))))

0
Вова (Otshelnik-Fm)
не в сети 14 часов
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
17
18:21

Тогда вопрос - что за БД и версия?

Вы же видите что функция передает далее работу WP классу wpdb

Хотя там стоит еще распечатать RMAG_PREF константу (RMAG_PREF . 'users_balance') - точно там ваш префикс бд?

1
AndrewIOOO
не в сети 4 года
На сайте с 08.05.2017
Участник
Тем 16
Сообщения 63
18
18:27

Они (функция и БД) прекрасно дружат из под админки. И префиксы и константу я проверял - все правильно.

0
Вова (Otshelnik-Fm)
не в сети 14 часов
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
19
18:40

Вы из вашей ajax функции передаете в rcl_update_user_balance
и дебажите rcl_update_user_balance уже из ajax?

или вы все это время просто вызываете rcl_update_user_balance не из ajax?

тогда вдвойне странно что она получает на вход данные. Данные доходят до wpdb вордпресса и на этом провал. Что-то вы делаете неверно - или дебажите или еще что

0
AndrewIOOO
не в сети 4 года
На сайте с 08.05.2017
Участник
Тем 16
Сообщения 63
20
21:11

Из под ajax'а. Я добавляю строку с вызовом функции, которая пишет в файл передаваемые ей значения... Добавляю уже прямо в в код rcl_update_user_balance, и в лог пишу то, что получает rcl_update_user_balance, а раз в файл пишется, значит вся цепочка отрабатывает... И именно в момент ajax-обращения...

Буду искать. Отпишусь...

0
AndrewIOOO
не в сети 4 года
На сайте с 08.05.2017
Участник
Тем 16
Сообщения 63
21
01:47

Нашёл.
Дело было вообще не в плагине, и ни с его аддонами (в чем собственно я и не сомневался).

А дело в $wpdb, и в том, что я, как уже писал, до вызова функций плагина, обрабатывал свои данные. И т.к. обработка затрагивает несколько таблиц, использовал транзакции, и соответственно, устанавливал SET AUTOCOMMIT = 0;... И, увы,... добавив позднее вызов функций плагина, я не побеспокоился восстановить перед ними SET AUTOCOMMIT = 1; Поэтому запросы, которые они отправляли в БД, выполнялись, но результаты не записывались...

Тему можно не только закрыть, а может и вовсе удалить, ибо она не о плагине.

1
Тема закрыта. Публикация новых сообщений запрещена.