2namespace Bitrix\Landing;
4use Bitrix\Main\Application;
5use Bitrix\Rest\AppTable;
6use Bitrix\Landing\Site\Type;
7use Bitrix\Main\Localization\Loc;
8use Bitrix\Main\ModuleManager;
10Loc::loadMessages(__FILE__);
52 return __NAMESPACE__ .
'\\PublicAction';
71 if (is_callable(explode(
'::',
$action)))
75 'action' => $actionOriginal,
78 'params_init' =>
array(),
79 'params_missing' =>
array()
82 $reflection = new \ReflectionMethod($class,
$method);
83 $static = $reflection->getStaticVariables();
84 $mixedParams = isset($static[
'mixedParams'])
85 ? $static[
'mixedParams']
87 foreach ($reflection->getParameters() as $param)
89 $name = $param->getName();
92 if (!in_array(
$name, $mixedParams))
103 throw new \Bitrix\Main\ArgumentTypeException(
110 elseif ($param->isDefaultValueAvailable())
112 $info[
'params_init'][
$name] = $param->getDefaultValue();
138 if (Type::getCurrentScopeId() === Type::SCOPE_CODE_GROUP)
143 if (\
Bitrix\
Main\Loader::includeModule(
'extranet'))
145 return \CExtranet::isIntranetUser(
146 \CExtranet::getExtranetSiteID(),
164 if (!is_array(
$data))
169 if (isset(
$data[
'scope']))
181 Loc::getMessage(
'LANDING_ACCESS_DENIED2')
186 ModuleManager::isModuleInstalled(
'bitrix24') &&
193 Loc::getMessage(
'LANDING_ACCESS_DENIED2')
207 Loc::getMessage(
'LANDING_ACCESS_DENIED2')
214 Loc::getMessage(
'LANDING_ACCESS_DENIED2')
224 Loc::getMessage(
'LANDING_SESSION_EXPIRED')
227 if (!empty(
$action[
'params_missing']))
231 Loc::getMessage(
'LANDING_MISSING_PARAMS',
array(
232 '#MISSING#' => implode(
', ',
$action[
'params_missing'])
236 if (method_exists(
$action[
'class'],
'init'))
238 $result = call_user_func_array(
252 $result = call_user_func_array(
266 $restResult =
$result->getResult();
267 $event = new \Bitrix\Main\Event(
'landing',
'onSuccessRest', [
268 'result' => $restResult,
272 foreach (
$event->getResults() as $eventResult)
274 if (($modified = $eventResult->getModified()))
276 if (isset($modified[
'result']))
278 $restResult = $modified[
'result'];
284 'result' => $restResult
292 catch (\TypeError $e)
313 'error' =>
$error->getCode(),
314 'error_description' =>
$error->getMessage()
340 return self::$rawData;
350 $context = Application::getInstance()->getContext();
353 $postlist =
$context->getRequest()->getPostList();
365 if (
$request->offsetExists(
'site_id'))
372 isset($batchItem[
'action']) &&
373 isset($batchItem[
'data'])
376 $batchItem[
'data'] = (
array)$batchItem[
'data'];
379 $batchItem[
'data'][
'siteId'] =
$siteId;
385 $batchItem[
'data'][
$code] = $file;
388 $rawData = $postlist->getRaw(
'batch');
394 $batchItem[
'action'],
412 if (
$request->offsetExists(
'site_id'))
423 $rawData = $postlist->getRaw(
'data');
428 return self::actionProcessing(
444 static $restMethods =
array();
446 if (empty($restMethods))
448 $restMethods[self::REST_SCOPE_DEFAULT] =
array();
449 $restMethods[self::REST_SCOPE_CLOUD] =
array();
452 self::REST_SCOPE_DEFAULT =>
array(
453 'block',
'site',
'landing',
'repo',
'template',
454 'demos',
'role',
'syspage',
'chat',
'repowidget'
456 self::REST_SCOPE_CLOUD =>
array(
462 foreach ($classes as $scope => $classList)
464 foreach ($classList as $className)
466 $fullClassName = self::getNamespacePublicClasses() .
'\\' . $className;
467 $class = new \ReflectionClass($fullClassName);
468 $methods = $class->getMethods(\ReflectionMethod::IS_PUBLIC);
471 $static =
$method->getStaticVariables();
472 if (!isset($static[
'internal']) || !$static[
'internal'])
474 $command = $scope.
'.'.
475 mb_strtolower($className).
'.'.
476 mb_strtolower(
$method->getName());
477 $restMethods[$scope][$command] =
array(
478 __CLASS__,
'restGateway'
487 self::REST_SCOPE_DEFAULT => $restMethods[self::REST_SCOPE_DEFAULT],
488 self::REST_SCOPE_CLOUD => $restMethods[self::REST_SCOPE_CLOUD]
503 self::$restApp = AppTable::getByClientId($server->getClientId());
505 $method = $server->getMethod();
509 $result = self::actionProcessing(
515 if (
$result[
'type'] ==
'error')
519 throw new \Bitrix\Rest\RestException(
520 $error[
'error_description'],
537 return self::$restApp;
547 if (isset(
$app[
'APP_ID']) &&
$app[
'APP_ID'])
549 if ((
$app = AppTable::getByClientId(
$app[
'APP_ID'])))
567 $parameters =
$event->getParameters();
569 if (
$app = AppTable::getByClientId($parameters[
'ID']))
571 $stat = self::getRestStat(
true);
572 if (isset($stat[self::REST_USAGE_TYPE_BLOCK][
$app[
'CODE']]))
574 $eventResult = new \Bitrix\Main\EventResult(
577 Loc::getMessage(
'LANDING_REST_DELETE_EXIST_BLOCKS'),
578 'LANDING_EXISTS_BLOCKS'
584 else if (isset($stat[self::REST_USAGE_TYPE_PAGE][
$app[
'CODE']]))
586 $eventResult = new \Bitrix\Main\EventResult(
589 Loc::getMessage(
'LANDING_REST_DELETE_EXIST_PAGES'),
590 'LANDING_EXISTS_PAGES'
606 public static function getRestStat(
bool $humanFormat =
false,
bool $onlyActive =
true,
array $additionalFilter = []):
array
610 self::REST_USAGE_TYPE_BLOCK => [],
611 self::REST_USAGE_TYPE_PAGE => []
613 $activeValues = $onlyActive ?
'Y' : [
'Y',
'N'];
615 '=%CODE' =>
'repo_%',
617 '=PUBLIC' => $activeValues,
618 '=LANDING.ACTIVE' => $activeValues,
619 '=LANDING.SITE.ACTIVE' => $activeValues
622 if (isset($additionalFilter[
'SITE_ID']))
624 $filter[
'LANDING.SITE_ID'] = $additionalFilter[
'SITE_ID'];
630 $res = Internals\BlockTable::getList([
642 while ($row =
$res->fetch())
644 $blockCnt[mb_substr($row[
'CODE'], 5)] = $row[
'CNT'];
653 'ID' => array_keys($blockCnt)
656 while ($row =
$res->fetch())
658 if (!$row[
'APP_CODE'])
662 if (!isset($fullStat[self::REST_USAGE_TYPE_BLOCK][$row[
'APP_CODE']]))
664 $fullStat[self::REST_USAGE_TYPE_BLOCK][$row[
'APP_CODE']] = 0;
666 $fullStat[self::REST_USAGE_TYPE_BLOCK][$row[
'APP_CODE']] += $blockCnt[$row[
'ID']];
673 $filter[
'!=INITIATOR_APP_CODE'] =
null;
674 $res = Internals\BlockTable::getList([
676 'INITIATOR_APP_CODE',
'CNT'
686 while ($row =
$res->fetch())
688 $appCode = $row[
'INITIATOR_APP_CODE'];
689 if (!isset($fullStat[self::REST_USAGE_TYPE_BLOCK][$appCode]))
691 $fullStat[self::REST_USAGE_TYPE_BLOCK][$appCode] = 0;
693 $fullStat[self::REST_USAGE_TYPE_BLOCK][$appCode] += $row[
'CNT'];
699 '=ACTIVE' => $activeValues,
700 '=SITE.ACTIVE' => $activeValues,
701 '!=INITIATOR_APP_CODE' => null
703 if (isset($additionalFilter[
'SITE_ID']))
705 $filter[
'SITE_ID'] = $additionalFilter[
'SITE_ID'];
709 'INITIATOR_APP_CODE',
'CNT'
719 while ($row =
$res->fetch())
721 $appCode = $row[
'INITIATOR_APP_CODE'];
722 if (!isset($fullStat[self::REST_USAGE_TYPE_PAGE][$appCode]))
724 $fullStat[self::REST_USAGE_TYPE_PAGE][$appCode] = 0;
726 $fullStat[self::REST_USAGE_TYPE_PAGE][$appCode] += $row[
'CNT'];
730 if (!$humanFormat && \
Bitrix\
Main\Loader::includeModule(
'rest'))
732 $appsCode = array_merge(
733 array_keys($fullStat[self::REST_USAGE_TYPE_BLOCK]),
734 array_keys($fullStat[self::REST_USAGE_TYPE_PAGE])
737 self::REST_USAGE_TYPE_BLOCK => [],
738 self::REST_USAGE_TYPE_PAGE => []
742 $appsCode = array_unique($appsCode);
743 $res = AppTable::getList([
751 while ($row =
$res->fetch())
753 foreach ($fullStat as
$code => $stat)
755 if (isset($stat[$row[
'CODE']]))
757 $fullStatNew[
$code][$row[
'CLIENT_ID']] = $stat[$row[
'CODE']];
if(!Loader::includeModule('catalog')) if(!AccessController::getCurrent() ->check(ActionDictionary::ACTION_PRICE_EDIT)) if(!check_bitrix_sessid()) $request
static deleteByAppCode($code)
static getOption($code, $default=null)
static deleteByAppId($id)
static getList(array $params=[])
static getList(array $params=array())
static restApplicationDelete($app)
static beforeRestApplicationDelete(\Bitrix\Main\Event $event)
static getRestStat(bool $humanFormat=false, bool $onlyActive=true, array $additionalFilter=[])
static getNamespacePublicClasses()
static restGateway($fields, $t, $server)
const REST_USAGE_TYPE_PAGE
static actionProcessing($action, $data, $isRest=false)
const REST_USAGE_TYPE_BLOCK
static getMethodInfo($action, $data=array())
static checkForExtranet()
static deleteByAppCode($code)
static hasAdditionalRight($code, $type=null, bool $checkExtraRights=false, bool $strict=false)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
if($NS['step']==6) if( $NS[ 'step']==7) if(COption::GetOptionInt('main', 'disk_space', 0) > 0) $info
check_bitrix_sessid($varname='sessid')
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key