%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/catalog/lib/config/ |
| Current File : /home/bitrix/www/bitrix/modules/catalog/lib/config/feature.php |
<?php
namespace Bitrix\Catalog\Config;
use Bitrix\Main\Loader,
Bitrix\Main\Localization\Loc,
Bitrix\Bitrix24;
Loc::loadMessages(__FILE__);
/**
* Class Feature
* Provides unified methods for check B24 tariff limits and Bitrix edition limits.
*
* @package Bitrix\Catalog\Config
*/
final class Feature
{
/** @var null|bool sign of the presence of Bitrix24 */
private static $bitrix24Included = null;
/** @var array features hit cache */
private static $featureList = [];
/** @var array map of compliance with tariff and edition restrictions */
private static $tranferList = [
'catalog_product_sets' => 'CatCompleteSet',
'catalog_multi_price_types' => 'CatMultiPrice',
'catalog_cumulative_discounts' => 'CatDiscountSave',
'catalog_multi_warenhouses' => 'CatMultiStore'
];
/** @var array edition restrictions */
private static $retailExist = [
'catalog_product_sets' => true,
'catalog_multi_price_types' => true,
'catalog_cumulative_discounts' => true,
'catalog_multi_warenhouses' => true
];
/** @var array bitrix24 restrictions */
private static $bitrix24exist = [
'catalog_product_sets' => true,
'catalog_price_quantity_ranges' => true,
'catalog_multi_price_types' => true,
'catalog_multi_warenhouses' => true,
'catalog_inventory_management' => true
];
/**
* Returns true if product sets are allowed.
*
* @return bool
*/
public static function isProductSetsEnabled()
{
return self::isFeatureEnabled('catalog_product_sets');
}
/**
* Returns true if price quantity ranges are allowed.
*
* @return bool
*/
public static function isPriceQuantityRangesEnabled()
{
return self::isFeatureEnabled('catalog_price_quantity_ranges');
}
/**
* Returns true if multi types of prices are allowed.
*
* @return bool
*/
public static function isMultiPriceTypesEnabled()
{
return self::isFeatureEnabled('catalog_multi_price_types');
}
/**
* Return true if cumulative discounts are allowed.
*
* @return bool
*/
public static function isCumulativeDiscountsEnabled()
{
return self::isFeatureEnabled('catalog_cumulative_discounts');
}
/**
* Returns true if multiple warehouses are allowed.
*
* @return bool
*/
public static function isMultiStoresEnabled()
{
return self::isFeatureEnabled('catalog_multi_warenhouses');
}
/**
* Returns true if warehouse inventory management is allowed.
*
* @return bool
*/
public static function isInventoryManagementEnabled()
{
return self::isFeatureEnabled('catalog_inventory_management');
}
/**
* Check restriction.
*
* @param string $featureId Restriction name.
* @return bool
*/
private static function isFeatureEnabled($featureId)
{
$featureId = (string)$featureId;
if ($featureId === '')
return false;
if (!isset(self::$featureList[$featureId]))
{
if (self::isBitrix24())
{
if (isset(self::$bitrix24exist[$featureId]))
self::$featureList[$featureId] = Bitrix24\Feature::isFeatureEnabled($featureId);
else
self::$featureList[$featureId] = true;
}
else
{
if (isset(self::$retailExist[$featureId]))
self::$featureList[$featureId] = \CBXFeatures::IsFeatureEnabled(self::$tranferList[$featureId]);
else
self::$featureList[$featureId] = true;
}
}
return self::$featureList[$featureId];
}
/**
* Return true if Bitrix24 is exists.
*
* @return bool
* @throws \Bitrix\Main\LoaderException
*/
private static function isBitrix24()
{
if (self::$bitrix24Included === null)
self::$bitrix24Included = Loader::includeModule('bitrix24');
return self::$bitrix24Included;
}
}