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

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

  • Добавлена новая тема “Nova”. Она включена по умолчанию в новых установках и сейчас является дочерней темой от “Responsive”.
  • Пакеты fzaninotto/faker и twig/extensions больше не используются.
  • Минимальная требуемая версия PHP обновлена ​​до 7.4.
  • Smarty обновлён с версии v4.3.0.2 до v5.4.1
    • Чтобы адаптировать свои модули и темы, используйте руководство по миграции с v4 на v5 https://github.com/smarty-php/smarty/blob/v5.4.1/docs/upgrading.md
    • Плагины ядра Smarty: блоки и функции были перемещены из app/functions/smarty_plugins/ в \Tygh\SmartyEngine\Extensions\TyghExtension.
    • Чтобы использовать собственные плагины Smarty, напишите собственное расширение Smarty и добавьте его с помощью метода \Tygh\SmartyEngine\Core::addExtension(ExtensionInterface $extension). Пример в модуле call_requests.
    • Чтобы использовать собственные элементы блока “component”, добавьте к ним путь с помощью метода \Tygh\SmartyEngine\Core::addComponentDir(string $dir).
  • Пакет symfony/lock обновлён до версии 5.4.21.
    • Так как в основной библиотеке изменилась структура интерфейсов для хранилищ (Stores), то интерфейс StoreInterface тоже изменился. В нём теперь отсутствует метод waitAndSave(). Если ваше хранилище (Store) использовало этот метод, реализуйте дополнительно в хранилище (Store) интерфейс BlockingStoreInterface.
    • Если ваш магазин использовал метод waitAndSave(), для продолжения его работы в новой версии замените class YourStore implements StoreInterface на class YourStore implements StoreInterface, BlockingStoreInterface.

Удалённые функции

  • \Tygh\SmartyEngine\Core::__($var, $params = array())

Устаревшие функции

  • \Tygh\SmartyEngine\Core::loadPlugin()
  • \Tygh\SmartyEngine\Core::setPluginsDir()
  • \Tygh\SmartyEngine\Core::registerFilter()

Изменённые функции

// Было:
function fn_attach_image_pairs($name, $object_type, $object_id = 0, $lang_code = CART_LANGUAGE, array $object_ids = [])

// Стало:
function fn_attach_image_pairs($name, $object_type, $object_id = 0, $lang_code = CART_LANGUAGE, array $object_ids = [], $allowed_file_size_bytes = null)

Новые функции

  • \Tygh\SmartyEngine\Core::addComponentDir(string $dir)
  • \Tygh\SmartyEngine\Core::getComponentDirs()

Новые хуки

  1. Выполняется после проверки прав на изменение категории. Позволяет изменять параметры проверки:

    fn_set_hook('is_category_update_allowed_pre', $category_data, $category_id, $lang_code, $auth, $result);
    
  2. Выполняется после проверки прав на изменение категории. Позволяет изменять результаты проверки:

    fn_set_hook('is_category_update_allowed_post', $category_data, $category_id, $lang_code, $auth, $result);
    
  3. Выполняется после получения данных выбранного способа оплаты. Позволяет ограничить размещение заказа:

    fn_set_hook('allow_place_order_check_payment', $cart, $auth, $parent_order_id, $payment_method_data, $total, $result);
    
  4. Выполняется после загрузки данных для платёжных кнопок. Позволяет изменить данные в запросе:

    fn_set_hook('stripe_data_loader_load_payment_request_data_post', $payment_buttons, $product_id, $product_options, $user_data, $shipping_id, $cart, $product, $shippings);
    
  5. Выполняется перед правилами, ограничивающими доступ к обновлению магазина или ПВЗ. Позволяет изменить текущий результат или параметры перед применением правил:

    fn_set_hook('check_store_location_update_allowed_pre', $store_location_id, $result);
    
  6. Выполняется после правил, ограничивающих доступ к обновлению магазина или ПВЗ. Позволяет изменить результат:

    fn_set_hook('check_store_location_update_allowed_post', $store_location_id, $result);
    
  7. Выполняется перед правилами, ограничивающими доступ к обновлению отгрузки. Позволяет изменить текущий результат или параметры перед применением правил:

    fn_set_hook('check_shipment_update_allowed_pre', $shipment_id, $result);
    
  8. Выполняется после правил, ограничивающих доступ к обновлению отгрузки. Позволяет изменить результат:

    fn_set_hook('check_shipment_update_allowed_post', $shipment_id, $result);
    
  9. Выполняется перед правилами, ограничивающими доступ к обновлению комплекта товаров. Позволяет изменить текущий результат или параметры перед применением правил:

    fn_set_hook('check_product_bundle_update_allowed_pre', $bundle_id, $result);
    
  10. Выполняется после правил, ограничивающих доступ к обновлению комплекта товаров. Позволяет изменить результат:

    fn_set_hook('check_product_bundle_update_allowed_post', $bundle_id, $result);
    

Изменения в модулях

Платежи через Stripe Connect

Настройка Комиссия включает удалена. Раньше она позволяла включить в комиссию с заказа долги продавцов. Это поведение было непрозрачным, могло приводить к проблемам и отличалось от поведения других способов оплаты со сплитованием. Поэтому теперь модуль “Платежи через Stripe Connect” берёт с заказа продавца только сумму комиссии за этот заказ. Для работы с долгами мы рекомендуем использовать модуль “Оплата от продавцов администратору”.

Удалённые функции:

  • \Tygh\Addons\StripeConnect\PayoutsManager::acceptPayouts()
  • \Tygh\Addons\StripeConnect\PayoutsManager::getPendingPayouts()
  • \Tygh\Addons\StripeConnect\PayoutsManager::getPendingPayoutsFee()