Адаптация существующих модулей и тем под CS-Cart 4.21.2¶
Изменения в ядре¶
Изменения в классе TyghHttp¶
Теперь транспорт явно определяет поддерживаемые схемы URL в Tygh\Http::SUPPORTED_SCHEMES (http, https, ftp, ftps). URL запроса принимается только в том случае, если он использует одну из этих схем и содержит имя хоста; то же правило применяется к URL, на который выполняется перенаправление: если его схема отсутствует в списке поддерживаемых, запрос завершается с ошибкой. Список поддерживаемых схем также передается дескриптору cURL с помощью CURLOPT_PROTOCOLS и CURLOPT_REDIR_PROTOCOLS. Благодаря этому транспорт работает одинаково во всех поддерживаемых версиях libcurl и конфигурациях PHP.
Если ваш модуль передает в Tygh\Http или в функцию, использующую этот класс, URL с другой схемой, используйте вместо этого API соответствующего протокола напрямую.
Состояние ответа (Tygh\Http::getError(), Tygh\Http::getErrorFields(), Tygh\Http::getHeaders(), Tygh\Http::getStatus()) относится к одному запросу. При начале запроса это состояние сбрасывается, поэтому оно всегда содержит информацию о только что выполненном запросе.
Изменения в функции fn_check_user_type()¶
Ключ `create_vendor_admin key в данных пользователя больше не учитывается при определении типа пользователя.
Чтобы создать администратора продавца, установите ключ реестра runtime.users.allow_vendor_admin_creation перед вызовом fn_update_user()` и явно передайте тип пользователя:
Registry::set('runtime.users.allow_vendor_admin_creation', true);
try {
list($user_id) = fn_update_user(0, $user_data, $auth, false, $notify);
} finally {
Registry::del('runtime.users.allow_vendor_admin_creation');
}
Новые функции¶
Tygh\Http::isSupportedUrl($url)- проверяет, поддерживает ли транспорт указанный URL: URL должен использовать поддерживаемую схему и содержать имя хоста.Tygh\Shippings\PickupPoints\Repository::getPickupPointExtraData($provider, $pickup_point_code)- получает дополнительные данные службы для указанного пункта самовывоза.Tygh\Shippings\PickupPoints\Repository::storePickupPoints(array $pickup_points, $cache_key)- сохраняет часть пунктов самовывоза. Состояние синхронизации устанавливается отдельно с помощью setPickupPointSyncState().Tygh\Shippings\PickupPoints\Dto\LookupData\PickupPointsLookupContext::isExtraDataRequired()- проверяет, требуется ли загружать дополнительные данные службы для пунктов самовывоза.Tygh\Shippings\PickupPoints\Dto\LookupData\PickupPointsLookupContext::setExtraDataRequired($is_extra_data_required)- устанавливает, требуется ли загружать дополнительные данные службы для пунктов самовывоза.
Измененные функции¶
fn_get_contents($location, $base_dir = '', $timeout = null)- ресурс по URL загружается только в том случае, еслиTygh\Http::isSupportedUrl()определяет URL как поддерживаемый. В противном случае функция возвращает пустую строку. Обычный путь к файлу в файловой системе обрабатывается без изменений. Сигнатура функции не изменилась.
- Tygh\Shippings\PickupPoints\Repository::findPickupPointsByProviderAndCacheKey($provider, $cache_key)
+ Tygh\Shippings\PickupPoints\Repository::findPickupPointsByProviderAndCacheKey($provider, $cache_key, $with_extra_data = true)
Новые настройки¶
$config['tweaks']['yandex_delivery_rate_cache_ttl']- время в секундах, в течение которого рассчитанный тариф из калькулятора Яндекс Доставки может использоваться повторно, прежде чем калькулятор будет вызван снова. Значение по умолчанию — 600.
Менеджер файлов¶
Загрузка удаленных файлов ограничена сетевыми протоколами¶
При загрузке файла по URL используются протоколы http, https, ftp и ftps. Эти ограничения применяются как к самому запросу, так и к перенаправлениям, во всех поддерживаемых версиях libcurl.
elFinder::restrictCurlProtocols($curl)- применяет список поддерживаемых протоколов к дескриптору cURL. Используйте этот метод для собственного дескриптора, если он выполняет запросы с перенаправлениями.