Адаптация существующих модулей и тем под CS-Cart 4.20.1

Изменения в ядре

Изменения в функции fn_get_users()

Поскольку GROUP BY и JOIN с таблицей user_profiles не используются в большинстве запросов, они будут выполняться только при определенных условиях.

Если в ваших модулях используются хуки из fn_get_users() и вы выполняете дополнительные JOIN-ы из таблиц, которые могут приводить к дублированию пользователей в списке, следует использовать новый параметр $group_by в хуке get_users.

Пример:

fn_my_addon_get_users($params, $fields, $sortings, $condition, &$join, $auth, &$group_by)
{
    $join .= ' LEFT JOIN ?:my_table ON ?:my_table.user_id = ?:users.user_id;

    $group_by[] = '?users.user_id';
}

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

Безопасность

Некоторые режимы контроллеров использовали разрешенные GET-запросы для операций, изменяющих базу данных. Мы перенесли их под условие, что методом запроса является POST.

Ниже приведен список dispatch-ей. Если вы их использовали, убедитесь, что они вызываются через POST.

Backend:

storage.clear_cache
storage.clear_thumbnails
tools.remove_quick_menu_item
tools.update_position
custom_menu.update_position

Frontend:

products.product_notifications

Изменения в схемах менеджера блоков

Переработана структура схемы сеток (grid) app/schemas/block_manager/grids.php.

Вместо

'wrappers' => [
     'wrapper_name' => 'template_name', // the list of "name -> template" pairs that will wrap blocks content inside grid
]

используйте новую структуру:

Новая структура удобнее, так как ее можно расширять дополнительными параметрами.

Схемы, в которых используется старая структура, продолжат работать, поскольку в коде предусмотрена обратная совместимость. Тем не менее, рекомендуем перейти на новый формат.

Изменения в хуках

Измененные хуки

- fn_set_hook('get_users', $params, $fields, $sortings, $condition, $join, $auth);

+ fn_set_hook('get_users', $params, $fields, $sortings, $condition, $join, $auth, $group_by);
- fn_set_hook('update_payment_pre', $payment_data, $payment_id, $lang_code, $certificate_file, $certificates_dir, $can_remove_offline_payment_params);

+ fn_set_hook('update_payment_pre', $payment_data, $payment_id, $lang_code, $certificate_file, $certificates_dir, $can_remove_offline_payment_params, $certificate_key_file, $certificate_keys_dir);
- fn_set_hook('update_payment_post', $payment_data, $payment_id, $lang_code, $certificate_file, $certificates_dir, $processor_params, $action);

+ fn_set_hook('update_payment_post', $payment_data, $payment_id, $lang_code, $certificate_file, $certificates_dir, $processor_params, $action, $certificate_key_file, $certificate_keys_dir);