• Модуль: rest
  • Путь к файлу: ~/bitrix/modules/rest/lib/marketplace/application.php
  • Класс: BitrixRestMarketplaceApplication
  • Вызов: Application::uninstall
static function uninstall($code, bool $clean = false, $from = null) : array
{
	if (CRestUtil::isAdmin(self::$contextUserId))
	{
		$res = AppTable::getList(
			[
				'filter' => [
					'=CODE' => $code,
					'!=STATUS' => AppTable::STATUS_LOCAL,
				],
			]
		);

		$appInfo = $res->fetch();
		if ($appInfo)
		{
			$checkResult = AppTable::checkUninstallAvailability($appInfo['ID'], $clean);
			if (
				$checkResult->isEmpty()
				&& AppTable::canUninstallByType($appInfo['CODE'], $appInfo['VERSION'])
			)
			{
				AppTable::uninstall($appInfo['ID'], $clean);

				$appFields = [
					'ACTIVE' => 'N',
					'INSTALLED' => 'N',
				];

				AppTable::update($appInfo['ID'], $appFields);

				AppLogTable::log($appInfo['ID'], AppLogTable::ACTION_TYPE_UNINSTALL);

				Analytic::logToFile(
					'finishUninstall',
					$appInfo['CODE'],
					$from ?? 'index'
				);

				$result = ['success' => 1];
			}
			else
			{
				$errorMessage = '';
				foreach ($checkResult as $error)
				{
					$errorMessage .= $error->getMessage() . "n";
				}

				$result = ['error' => $errorMessage];
				if (
					$checkResult->isEmpty()
					&& AppTable::getAppType($appInfo['CODE']) == AppTable::TYPE_CONFIGURATION
				)
				{
					$result = [
						'sliderUrl' => BitrixRestMarketplaceUrl::getConfigurationImportRollbackUrl(
							$appInfo['CODE']
						),
					];
				}
			}
		}
		else
		{
			$result = ['error' => Loc::getMessage('RMP_NOT_FOUND')];
		}
	}
	else
	{
		$result = ['error' => Loc::getMessage('RMP_ACCESS_DENIED')];
	}

	return $result;
}