После смены движка с myisam на innodb (как рекомендует статья Яна Куакова да и поддержка) блоки с индивидуальным наполнением товаров перестали отображаться.
Вот такие
В файле app/Tygh/BlockManager/Block.php есть метод getById, в которой есть код
$block = db_get_row(
"SELECT b.*, d.*, c.* FROM ?:bm_blocks as b "
. "LEFT JOIN ?:bm_blocks_descriptions as d ON b.block_id = d.block_id "
. "LEFT JOIN ?:bm_blocks_content as c ON b.block_id = c.block_id AND d.lang_code=c.lang_code "
. "WHERE b.block_id = ?i AND d.lang_code=?s ?p ORDER BY snapping_id DESC LIMIT 1",
$block_id,
$lang_code,
$this->getCompanyCondition('b.company_id') . $this->_generateContentCondition($dynamic_object)
);
В действительности в БД существуют две записи, но LIMIT берет первую запись, и получается что на на разных типах движков выдаются разные строки.
На myisam возвращается строка с конкретным object_id и индивидуальным наполнением, а на innodb -с 0-м object_id без наполнения.
Причем тут бета тестирование? Этот файл годами не трогали вроде как…
Но с автором я согласен — дороговато конечно ему обошлось изучение проблемы и исправление кода но не мне судить.
Поддержку svg тоже не трогали годами, в один день просто убрали и все. И даже в документации не написали что вырезали поддержку, а мы дрю###ись сутками понять не могли в чем беда, оказывается забыли или посчитали что это не так важно и не стали писать в документацию.
Очень сложно воспроизвести проблему. Какая DBMS используется и какой версии? Конечно, добавление сортировки по object_id сделает порядок сортировки очевидным для DBMS, но у меня не удалось воспроизвести проблему используя mysql Ver 8.0.40 ни с MyISAM, ни с InnoDB.
Я передам информацию разработчикам, для улучшения продукта в будущем, но всё-таки, хотелось бы знать, какую именно систему управления БД вы используете и какой версии.
Система Bug Bounty у нас действует только для уязвимостей.