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

Бэкэнд:

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);