Market 26.300.0: приложение с OPEN_API открывается по ответу установки, класс лимита переименован
Ломающее обновление
Удалены или изменены публичные API — прикладной код может перестать работать.
Market 26.300.0 меняет поведение после установки приложений с OPEN_API=Y: наличие своей страницы теперь определяется по URL и названию пункта меню. Публичный PHP-класс лимита приложений переименован без алиаса. Обновление нужно проверить разработчикам тиражных приложений и тем, кто расширяет компоненты Маркета.
Новое
Маркет учитывает страницу приложения
Раньше любое приложение с OPEN_API=Y считалось REST-only. Теперь приложение без URL по-прежнему считается работающим автоматически. Если URL задан и OPEN_API отличается от Y, у приложения есть страница. Для OPEN_API=Y дополнительно нужен массив MENU_TITLE хотя бы с одним непустым после trim() названием.
Эта проверка выбирает текст после установки: приложение работает автоматически либо находится во вкладке приложений. Кнопка «Открыть» и таймер автозапуска на клиенте теперь зависят от installResult.open, который вернула установка. Если ваше приложение использует открытое API и имеет интерфейс, проверьте URL и локализованные названия меню: один флаг OPEN_API больше не описывает его поведение после установки.
Форма настроек в market.detail тоже получила другое условие. Она доступна при непустом URL_SETTINGS и успешной проверке CRestUtil::checkAppAccess(). Прежней обязательной проверки OPEN_API === 'Y' больше нет.
Заголовок учитывает регион лицензии
У Bitrix\Market\Toolbar появился getMarketPageTitle(?string $licenseRegion = null). Для by он возвращает «Маркет», для остальных регионов — «Маркетплейс». Метод getTotalAppsInfo() тоже принимает необязательный регион и подставляет белорусские названия «Маркет» и «Маркет Плюс».
В отзывах исправлено двойное экранирование текста: апострофы и HTML-сущности декодируются перед обычным текстовым выводом Vue.
Что сломается
Замените VibePlusApplicationLimit
Класс Bitrix\Market\Application\VibePlusApplicationLimit заменён на Bitrix\Market\Application\ApplicationLimit. Алиаса старого имени нет. Создание класса по прежнему имени закончится Class not found. Методы getProjection() и getCountedApplicationCodes() доступны у нового класса.
Например, вызов с флагом из прошлого API теперь выглядит так:
<?php declare(strict_types=1);
use Bitrix\Main\Loader;
use Bitrix\Market\Application\ApplicationLimit;
Loader::requireModule('market');
$projection = (new ApplicationLimit(canManageApplications: false))->getProjection();
Первый параметр конструктора тоже изменился: вместо restAdapter с типом VibePlusLimitAdapter используется limitAdapter с типом ApplicationLimitAdapter. Проверьте именованные аргументы и тесты, которые передавали адаптер явно.
Ключ arResult['VIBE_PLUS_APPLICATION_LIMIT'] в компонентах сохранён, поэтому одно переименование класса не требует менять этот ключ в собственном шаблоне. Источник тарифного лимита переехал в модуль bitrix24; без него проекция возвращает state = 'unknown'.
Обновите обращения к JS-стору
В сторе market-install удалён isRestOnlyApp(). Вместо него используется willOpenAppAfterInstall(), проверяющий installResult.open. Если ваш JS вызывал прежний метод стора, замените обращение и проверьте поведение кнопки и таймера после установки приложения.
Устаревшие и удалённые API в этой версии
| Символ | Статус | Чем заменять |
|---|---|---|
Bitrix\Market\Application\VibePlusApplicationLimit
|
Удалено |
Bitrix\Market\Application\ApplicationLimit
|
market-install::isRestOnlyApp()
|
Удалено |
market-install::willOpenAppAfterInstall()
|