Ошибка SQL при импорте товаров в Ubercart
Ошибка SQL при импорте товаров в UbercartВо время импорта товаров в Ubercart, при помощи модулей feeds+uc_feeds получаем ошибку:
SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect decimal value: '' for column 'sell_price' at row 1
Для решения проблемы, я применил следующий костыль. В файле uc_feeds/uc_feeds.module находим функцию uc_feeds_set_target(). Добавляем в начало функции три строки, которые из массива с одним элементом делают простую переменную.
function uc_feeds_set_target($source, $node, $target, $value) {
if (is_array($value) && sizeof($value)==1) {
$value = $value[0];
}
if (!is_array($value)) {
...
}
}
Небольшое пояснение:
Как видно, функция не работает с переменной $value в случае если она массив. Но самая засада кроется в методе FeedsProcessor->mapToTarget(). Именно из этого метода вызывается uc_feeds_set_target() и в нем содержится следующий код:
...
// All target callbacks expect an array.
if (!is_array($value)) {
$value = array($value);
}
...
ЗЫ Буду рад, если кто предложит более красивое решение, или укажет на моменты которые я не учел.