Некорректно показывается статус уведомлений на php 8.1

Где возникла проблема: Store Builder 4.17.1

Суть проблемы: Некорректно показывается статус уведомлений (Администрирование → Уведомления → Уведомления для покупателей и тп). Проблема обнаружена на php 8.1.

Проблема в функции fn_get_notification_settings используется сравнение значений по типу (со строкой)

при этом в таблице значения имеют целочисленный тип

Здравствуйте, @ecomlabs

Спасибо за ваше сообщение.

Некорректно показывается статус уведомлений (Администрирование → Уведомления → Уведомления для покупателей и тп).

Уточните, пожалуйста, как именно проблема проявляется в панели администратора. Скриншоты приветствуются.

Выключаете чекбоксы, жмете сохранить, в базу пишется корректное значение, а в панели администратора они остаются включенными

Спасибо за уточнения.

Такое поведение не удалось воспроизвести. Возможно, есть ещё какие-либо условия, кроме версии php?

Возможно, но таких условий не знаю. Все работает, если поменять

!== '0'

на

!== 0

Я всё-таки воспроизвёл эту проблему с PDO. Действительно тут замешаны изменения в PHP 8.1, которые коснулись работы PDO. Я передал информацию о ней разработчикам, как только будут новости, кто-нибудь из нашей команды о них сообщит.

1 лайк

Здравствуйте, @ecomlabs
Проблема исправлена, исправление войдет в релиз CS-Cart и Multi-Vendor 4.18.3
Для исправления проблемы собственными силами можно использовать патч: app-Tygh-Backend-Database-Pdo.php.diff · GitHub

О том, как применить патч, можно прочитать в нашей документации: Как применить diff-файл — Документация docs.cs-cart.ru 4.18.x

1 лайк

Эта тема была автоматически закрыта через 60 минут после последнего ответа. В ней больше нельзя отвечать.