Брал решение здесь:
http://www.drupal.ru/node/16161
Проблему там описал, здесь повторю (может на форуме быстрее кто то ответит)
Все работает! Почти...
Не записываются правильно поинты в журнал. Отсекаются где то все данные после точки. ТО есть если было добавлено 0.50 поинтов, то в журнале записывается 0.00 Хотя общий подсчет верен. Уже весь файл просмотрел ни как не могу найти где же собака зарыта. В БД в userpoints_txn так же записываются данные без учета десятичных. То есть там записываются данные 0.00
Комментарии
разобрасля в чем проблема. В модуле используется запись в таблицу функцией друпала drupal_write_record
Вот она, по всей видимости рубит десятичные. Создал в модуле прямую запись в БД - записывается дробная часть без проблем. В друпале не профессионал. Хотел спросить - запись корректная для друпала?
(txn_id, uid, approver_uid, points, time_stamp, changed, status, description, reference, expirydate, expired, parent_txn_id, tid, entity_id, entity_type, operation)
VALUES (%d, %d, %d, %f, %d, %d, %d, '%s', %d, %d, %d, %d, %d, %d, '%s', '%s')",
$params['txn_id'],
$params['uid'],
$params['approver_uid'],
$params['points'],
$params['time_stamp'],
$params['changed'],
$params['status'],
$params['description'],
$params['reference'],
$params['expirydate'],
$params['expired'],
$params['parent_txn_id'],
$params['tid'],
$params['entity_id'],
$params['entity_type'],
$params['operation']
);
Ерундой не занимайтесь... в bd ставите тип float...Далее в файле userpoints.install
'description' => 'Points',
'type' => 'int',
'not null' => TRUE,
'default' => 0,
),
меняете на
'description' => 'Points',
'type' => 'float',
'precision' => 10,
'scale' => 2,
'not null' => TRUE,
'default' => 0.00,
),
аналогично и для max_points. Чистим кэш и наслаждаемся))
А если таблица с данными еще не заполнена заменяем приложенный в атаече userpoints.install и перестанавливаем модуль.. только заведомо нужно его удалить))
А при чем здесь правка типа в БД? да еще и 'not null' => TRUE,? Это к чему для решения задачи? Если вы не заметили - то типы строк правятся первым делом, но при этом в журнале будет все так же установлено значение целых чисел. Проблема была описана полностью. Прежде чем давать свои советы - потрудитесь вникнуть в проблему. Ерунда - это ваш совет. Для работы я написал что нужно делать. Запрос к БД правильный. А это можно сделать только правя файл самого модуля.
Все правильно вам посоветовали. drupal_write_record для записи использует данные о структуре таблицы из hook_schema(). Если вы изменили тип колонки в phpmyadmin, то еще необходимо изменить данные в hook_schema. Для этого есть hook_schema_alter.