- Модуль: 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;
}