Адаптация существующих модулей и тем под 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);