• Модуль: rest
  • Путь к файлу: ~/bitrix/modules/rest/lib/app.php
  • Класс: BitrixRestAppTable
  • Вызов: AppTable::getAppStatusInfo
static function getAppStatusInfo($app, $detailUrl)
{
	$res = array();

	if (
		!empty($app)
		&& (
			is_string($app)
			|| is_integer($app)
		)
	)
	{
		$appInfo = $app = static::getByClientId($app);
	}
	elseif (isset($app['CODE']))
	{
		$appInfo = static::getByClientId($app['CODE']);
	}

	if(is_array($app))
	{
		$res['STATUS'] = $app['STATUS'];
		$res['PAYMENT_NOTIFY'] = 'N';
		$res['PAYMENT_EXPIRED'] = 'N';
		$res['PAYMENT_ALLOW'] = 'Y';

		if ($app['STATUS'] === self::STATUS_SUBSCRIPTION)
		{
			if (!BitrixRestMarketplaceClient::isSubscriptionAvailable())
			{
				$res['MESSAGE_REPLACE'] = array(
					'#DETAIL_URL#' => $detailUrl,
					'#DAYS#' => 0,
					'#CODE#' => urlencode($app['CODE'])
				);
				$res['PAYMENT_NOTIFY'] = 'Y';
				$res['PAYMENT_EXPIRED'] = 'Y';
				$res['PAYMENT_ALLOW'] = 'N';
			}
			else
			{
				$dateFinish = BitrixRestMarketplaceClient::getSubscriptionFinalDate();
				if ($dateFinish !== false)
				{
					$res['DAYS_LEFT'] = floor(($dateFinish->getTimestamp() - CTimeZone::getOffset() - time()) / 86400);
					if($res['DAYS_LEFT'] < 0)
					{
						$res['MESSAGE_REPLACE'] = array(
							'#DETAIL_URL#' => $detailUrl,
							'#DAYS#' => $res['DAYS_LEFT'],
							'#CODE#' => urlencode($app['CODE'])
						);
						$res['PAYMENT_NOTIFY'] = 'Y';
						$res['PAYMENT_EXPIRED'] = 'Y';
						$res['PAYMENT_ALLOW'] = 'N';
					}
					elseif ($res['DAYS_LEFT'] < static::PAID_NOTIFY_DAYS)
					{
						$res['MESSAGE_REPLACE'] = array(
							'#DETAIL_URL#' => $detailUrl,
							'#DAYS#' => $res['DAYS_LEFT'],
							'#CODE#' => urlencode($app['CODE'])
						);
						$res['PAYMENT_NOTIFY'] = 'Y';
					}
				}
			}
		}
		elseif($app['DATE_FINISH'] <> '' && $app['STATUS'] != self::STATUS_FREE)
		{
			$res['DAYS_LEFT'] = floor(
				(MakeTimeStamp($app['DATE_FINISH']) - CTimeZone::getOffset() - time()) / 86400
			);

			if(
				$res['DAYS_LEFT'] < static::PAID_NOTIFY_DAYS
				|| $app['STATUS'] == static::STATUS_TRIAL)
			{
				$res['PAYMENT_NOTIFY'] = 'Y';

				if($res['DAYS_LEFT'] < 0)
				{
					$res['PAYMENT_EXPIRED'] = 'Y';

					if($app['STATUS'] == static::STATUS_TRIAL)
					{
						$res['PAYMENT_ALLOW'] = 'N';
					}
					elseif(
						$app['STATUS'] == static::STATUS_PAID
						&& $res['DAYS_LEFT'] < static::PAID_GRACE_PERIOD
					)
					{
						if($app['IS_TRIALED'] == 'N' && $app['URL_DEMO'] <> '')
						{
							$res['STATUS'] = static::STATUS_DEMO;
						}
						else
						{
							$res['PAYMENT_ALLOW'] = 'N';
						}
					}
				}
			}

			$res['MESSAGE_REPLACE'] = array(
				"#DETAIL_URL#" => $detailUrl,
				"#DAYS#" => $res['DAYS_LEFT'],
				"#CODE#" => urlencode($app['CODE']),
			);
		}
		elseif($app['STATUS'] == self::STATUS_DEMO)
		{
			$res['PAYMENT_NOTIFY'] = 'Y';
			$res['MESSAGE_REPLACE'] = array(
				"#DETAIL_URL#" => $detailUrl,
				"#CODE#" => urlencode($app['CODE'])
			);
		}
		else
		{
			$res['MESSAGE_REPLACE'] = array(
				"#DETAIL_URL#" => $detailUrl,
				"#CODE#" => urlencode($app['CODE'])
			);
		}

		$res['MESSAGE_SUFFIX'] = '_'.$res['STATUS'].'_'.$res['PAYMENT_EXPIRED'].'_'.$res['PAYMENT_ALLOW'];

	}

	if (!empty($appInfo['CLIENT_ID']))
	{
		$isHold = BitrixRestEngineAccessHoldEntity::is(
			BitrixRestEngineAccessHoldEntity::TYPE_APP,
			$appInfo['CLIENT_ID']
		);
		if ($isHold)
		{
			$res['MESSAGE_SUFFIX'] = '_HOLD_OVERLOAD';
			$res['PAYMENT_NOTIFY'] = 'Y';
		}
	}

	return $res;
}