• Модуль: market
  • Путь к файлу: ~/bitrix/modules/market/lib/Application/Action.php
  • Класс: BitrixMarketApplicationAction
  • Вызов: Action::list
static function list(array $app, bool $isTestsInstall = false): array
{
	$actions = [];

	$isInstalledApp = isset($app['ACTIVE']) && $app['ACTIVE'] === 'Y';

	if (!empty($app['CODE']) && Loader::includeModule('rest')) {
		if (CRestUtil::canInstallApplication($app)) {
			if ($isInstalledApp) {
				if (
					Access::isAvailable($app['CODE']) &&
					Access::isAvailableCount(Access::ENTITY_TYPE_APP, $app['CODE'])
				) {
					if (isset($app['TYPE']) && $app['TYPE'] === AppTable::TYPE_CONFIGURATION) {
						$actions[Action::CONFIGURATION_IMPORT] = 'Y';
					} else if ($isTestsInstall) {
						$actions[Action::INSTALL] = 'Y';
					} else  {
						if (Client::getAvailableUpdate($app['CODE'])) {
							$actions[Action::UPDATE] = 'Y';
						}
					}
				}

				if (isset($app['BY_SUBSCRIPTION']) && $app['BY_SUBSCRIPTION'] === 'Y') {
					$appStatus = AppTable::getAppStatusInfo($app, '');
					if ($appStatus['PAYMENT_NOTIFY'] === 'Y') {
						$actions[Action::PROLONG_SUBSCRIPTION] = 'Y';
					}
				}
			} else {
				$actions[Action::INSTALL] = 'Y';
			}
		} else if (!$isInstalledApp) {
			$actions[Action::NO_ACCESS_INSTALL] = 'Y';
		}

		if (
			isset($app['TYPE']) && $app['TYPE'] === AppTable::TYPE_CONFIGURATION &&
			isset($app['MODE']) && $app['MODE'] === AppTable::MODE_SITE &&
			!empty($app['SITE_URL'])
		) {
			// TODO site template app
			// $actions[Action::OPEN_PREVIEW] = 'Y';
		}

		if (CRestUtil::isAdmin() && $isInstalledApp) {
			if (!isset($app['TYPE']) || $app['TYPE'] != AppTable::TYPE_CONFIGURATION) {
				$actions[Action::RIGHTS_SETTING] = 'Y';
			}

			$actions[Action::DELETE] = 'Y';
		}
	}

	return $actions;
}