Your IP : 3.142.152.51


Current Path : /var/www/axolotl/data/www/krym.axolotls.ru/bitrix/modules/disk/lib/zipnginx/
Upload File :
Current File : /var/www/axolotl/data/www/krym.axolotls.ru/bitrix/modules/disk/lib/zipnginx/configuration.php

<?php

namespace Bitrix\Disk\ZipNginx;


use Bitrix\Disk\Driver;
use Bitrix\Main\Config\Option;
use Bitrix\Main\Engine\UrlManager;
use Bitrix\Main\ModuleManager;
use Bitrix\Main\Web\HttpClient;

final class Configuration
{
	/**
	 * Returns true if work with mod_zip is enabled.
	 *
	 * @return bool
	 * @throws \Bitrix\Main\ArgumentNullException
	 */
	public static function isEnabled()
	{
		if (ModuleManager::isModuleInstalled('bitrix24'))
		{
			return true;
		}

		return Option::get(Driver::INTERNAL_MODULE_ID, 'disk_nginx_mod_zip_enabled', 'N') === 'Y';
	}

	/**
	 * Disables work with mod_zip.
	 *
	 * @return void
	 */
	public static function disable()
	{
		Option::set(Driver::INTERNAL_MODULE_ID, 'disk_nginx_mod_zip_enabled', 'N');
	}

	/**
	 * Enables work with mod_zip.
	 *
	 * @return void
	 */
	public static function enable()
	{
		Option::set(Driver::INTERNAL_MODULE_ID, 'disk_nginx_mod_zip_enabled', 'Y');
	}

	/**
	 * Checks real opportunity on the current server to send archive by mod_zip.
	 *
	 * @return bool
	 */
	public static function isModInstalled()
	{
		$http = new HttpClient(array(
			'socketTimeout' => 5,
			'streamTimeout' => 5,
			'version' => HttpClient::HTTP_1_1,
		));

		if($http->get(UrlManager::getInstance()->create('disk.testZipNginxDownload.download', [], true)) === false)
		{
			return false;
		}

		if($http->getStatus() != '200')
		{
			return false;
		}

		$contentType = $http->getHeaders()->getContentType();

		if(!$contentType || !is_string($contentType))
		{
			return false;
		}

		return strpos($contentType, 'application/zip') !== false;
	}
}