173 if (!static::isActiveRules())
179 if (!array_key_exists(
$key, static::$availableAppCount))
181 static::$availableAppCount[
$key] =
true;
182 if ($entityType === static::ENTITY_TYPE_APP)
190 if (isset($appInfo[
'CODE']) && $appInfo[
'CODE'])
195 $entityList = static::getActiveEntity(
true);
196 if ($entityList[static::ENTITY_COUNT] >
$maxCount)
198 static::$availableAppCount[
$key] =
false;
201 $entityList[static::ENTITY_COUNT] ===
$maxCount
202 && !in_array(
$entity, $entityList[$entityType],
true)
205 static::$availableAppCount[
$key] =
false;
209 static::$availableAppCount[
$key] ===
false
213 !static::needCheckCount()
214 && in_array(
$entity, $entityList[$entityType],
true)
219 static::$availableAppCount[
$key] =
true;
226 return static::$availableAppCount[
$key];
236 $subscriptionActive = Client::isSubscriptionAvailable();
237 if (!$subscriptionActive)
239 $restUnlimitedFinish =
false;
240 $count = static::DEFAULT_AVAILABLE_COUNT;
243 if (Client::isSubscriptionAccess())
245 $restUnlimitedFinish = Option::get(static::MODULE_ID, static::OPTION_REST_UNLIMITED_FINISH,
null);
246 $count = (int) \
Bitrix\Bitrix24\Feature::getVariable(
'rest_no_subscribe_access_limit');
247 if (\CBitrix24::getLicensePrefix() ===
'ua')
255 $count = (int) Option::get(
257 static::OPTION_AVAILABLE_COUNT,
258 static::DEFAULT_AVAILABLE_COUNT
262 (!$restUnlimitedFinish || $restUnlimitedFinish < time())
363 $dateFinish = Client::getSubscriptionFinalDate();
364 $isSubscriptionDemoAvailable = Client::isSubscriptionDemoAvailable();
367 if (
$action === static::ACTION_BUY)
371 && $isSubscriptionDemoAvailable
372 && \CBitrix24::isLicenseNeverPayed()
376 return 'limit_market_trial_demo';
379 if ($isB24 && Client::isSubscriptionDemo() && !Client::canBuySubscription())
381 return 'limit_subscription_market_bundle';
384 return 'limit_subscription_market_trial_access';
387 if ($entityType === static::ENTITY_TYPE_APP && !is_array($entityData))
393 $entity = static::getActiveEntity();
395 $isSubscriptionFinished = $dateFinish && $dateFinish < (
new Date());
396 $isSubscriptionAccess = Client::isSubscriptionAccess();
397 $isSubscriptionAvailable = Client::isSubscriptionAvailable();
398 $canBuySubscription = Client::canBuySubscription();
399 $isDemoSubscription = Client::isSubscriptionDemo();
400 $isCanInstallInDemo =
true;
402 !empty($entityData[
'HOLD_INSTALL_BY_TRIAL'])
403 && $entityData[
'HOLD_INSTALL_BY_TRIAL'] ===
'Y'
406 $isCanInstallInDemo =
false;
409 $license = $isB24 ? \CBitrix24::getLicenseFamily() :
'';
411 $isMinLicense = $isB24 && mb_strpos(
$license,
'project') === 0;
414 $isMaxApplication =
false;
417 $isMaxApplication =
true;
420 $isMaxApplicationDemo =
false;
421 if (
$entity[static::ENTITY_COUNT] >= static::DEFAULT_AVAILABLE_COUNT_DEMO)
423 $isMaxApplicationDemo =
true;
426 $hasPaidApplication =
false;
438 $hasPaidApplication =
true;
441 $isFreeEntity =
false;
443 if (
$region !==
'ru' && ($entityType === static::ENTITY_TYPE_INTEGRATION || $entityType === static::ENTITY_TYPE_AP_CONNECT))
445 $isFreeEntity =
true;
447 elseif (!empty($entityData))
450 $entityData[
'ID'] > 0
451 && (isset($entityData[
'ACTIVE']) && $entityData[
'ACTIVE'])
458 $isFreeEntity =
true;
462 !isset($entityData[
'ACTIVE'])
463 || !$entityData[
'ACTIVE']
466 $entityData[
'BY_SUBSCRIPTION'] ===
'Y'
467 || ($entityData[
'FREE'] ===
'N' && !empty($entityData[
'PRICE']))
471 $isFreeEntity =
true;
475 $isUsedDemoLicense =
false;
476 if ($isB24 && (
int) Option::get(
'bitrix24',
'DEMO_START', 0) > 0)
478 $isUsedDemoLicense =
true;
481 if (!static::isActiveRules())
486 $entityData[
'BY_SUBSCRIPTION'] ===
'Y'
491 if ($isSubscriptionDemoAvailable)
494 $code =
'limit_subscription_market_access';
496 elseif ($isB24 && $isDemo)
499 $code =
'limit_subscription_market_tarifwithmarket';
504 $code =
'limit_subscription_market_marketpaid';
508 elseif (!$isSubscriptionAccess)
512 if ($isUsedDemoLicense)
514 $code =
'limit_free_rest_hold_no_demo';
516 elseif ($entityType === static::ENTITY_TYPE_AP_CONNECT)
518 $code =
'limit_market_bus';
522 $code =
'limit_free_rest_hold';
526 elseif (!static::isAvailable())
528 if ($hasPaidApplication || !$isFreeEntity)
530 if ($isSubscriptionDemoAvailable)
533 $code =
'limit_subscription_market_access_buy_marketplus';
538 $code =
'plus_need_trial';
543 $code =
'limit_subscription_market_tarifwithmarket';
545 if (
$action === static::ACTION_OPEN)
547 $code =
'installed_plus_buy_license_with_plus';
552 $code =
'limit_subscription_market_marketpaid_trialend';
555 elseif ($isB24 && !$isUsedDemoLicense)
558 if ($entityType === static::ENTITY_TYPE_AP_CONNECT)
560 $code =
'limit_market_bus';
564 $code =
'limit_free_rest_hold';
567 elseif ($isB24 && !$isMaxApplicationDemo)
569 $code =
'limit_free_rest_hold_no_demo';
571 elseif ($isSubscriptionDemoAvailable)
574 $code =
'limit_subscription_market_marketpaid';
576 elseif ($isB24 && $isSubscriptionAccess)
579 $code =
'limit_subscription_market_tarifwithmarket';
580 if (
$action === static::ACTION_OPEN)
582 $code =
'limit_free_apps_buy_license_with_plus';
585 elseif (!$isB24 && $isSubscriptionAccess)
588 $code =
'plus_need_trial';
591 elseif ($isB24 && !$isDemo && $isMaxApplication && $isFreeEntity && !$isMaxLicense)
593 if (!$isUsedDemoLicense)
596 if ($entityType === static::ENTITY_TYPE_AP_CONNECT)
598 $code =
'limit_market_bus';
602 $code =
'limit_free_apps_need_demo';
607 $code =
'limit_subscription_market_access_buy_marketplus';
611 $code =
'limit_free_apps_buy_license';
615 $isSubscriptionDemoAvailable
616 && $isCanInstallInDemo
617 && ($hasPaidApplication || $isMaxApplication || !$isFreeEntity)
627 $code =
'limit_subscription_market_access_buy_marketplus';
631 $code =
'limit_market_trial_demo';
636 $code =
'limit_subscription_market_access_buy_marketplus';
639 elseif ($isB24 && $isDemo)
642 $code =
'limit_subscription_market_marketpaid';
647 $code =
'limit_subscription_market_access';
650 elseif ($isDemoSubscription && !$isCanInstallInDemo)
653 $code =
'subscription_market_paid_access';
655 elseif ($canBuySubscription)
657 $code =
'limit_subscription_market_access_buy_marketplus';
659 elseif ($isB24 && $isDemo)
661 if (!$isSubscriptionDemoAvailable)
664 $code =
'limit_subscription_market_tarifwithmarket';
669 $code =
'limit_subscription_market_access';
672 elseif (!$isSubscriptionAvailable)
674 $code =
'limit_free_rest_hold_no_demo';