%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/components/bitrix/rest.marketplace.localapp.edit/ |
| Current File : //home/bitrix/www/bitrix/components/bitrix/rest.marketplace.localapp.edit/component.php |
<?php
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
die();
}
/**
* Bitrix vars
*
* @var array $arParams
* @var array $arResult
* @var CBitrixComponent $this
* @global CMain $APPLICATION
* @global CUser $USER
*/
if(
!\Bitrix\Main\Loader::includeModule("rest")
|| !\CRestUtil::isAdmin()
)
{
return;
}
$arParams['ID'] = intval($arParams['ID']);
$arResult['ALLOW_ZIP'] = \Bitrix\Main\ModuleManager::isModuleInstalled("bitrix24");
if ($arParams['ID'] > 0)
{
$APPLICATION->SetTitle(GetMessage('MARKETPLACE_LOCAL_EDIT_TITLE'));
$arResult["APP"] = \Bitrix\Rest\AppTable::getByClientId($arParams['ID']);
if (is_array($arResult["APP"]) && $arResult['APP']['STATUS'] === \Bitrix\Rest\AppTable::STATUS_LOCAL)
{
if(!empty($arResult["APP"]["SCOPE"]))
{
$arResult["APP"]["SCOPE"] = explode(",", $arResult["APP"]["SCOPE"]);
}
$langNames = \Bitrix\Rest\AppLangTable::getList(array(
'filter' => array(
'=APP_ID' => $arResult["APP"]["ID"]
)
));
$arResult['APP']['MENU_NAME'] = array();
while($langName = $langNames->fetch())
{
$arResult['APP']['MENU_NAME'][$langName["LANGUAGE_ID"]] = $langName["MENU_NAME"];
}
}
else
{
ShowError(GetMessage('MARKETPLACE_LOCAL_NOT_FOUND'));
return;
}
}
else
{
$APPLICATION->SetTitle(GetMessage('MARKETPLACE_LOCAL_ADD_TITLE'));
$arResult['APP'] = array(
'SCOPE' => array(),
);
}
$dbRes = \Bitrix\Main\Localization\LanguageTable::getList(array(
'order' => array('DEF' => 'DESC', 'NAME' => 'ASC'),
'filter' => array('=ACTIVE' => 'Y'),
'select' => array('LID', 'NAME')
));
$arResult['LANG'] = array();
while($lang = $dbRes->fetch())
{
$arResult['LANG'][$lang['LID']] = $lang['NAME'];
}
if ($_SERVER["REQUEST_METHOD"] == "POST" && check_bitrix_sessid())
{
$arFields = array(
"URL" => $_POST['APP_URL'],
"URL_INSTALL" => $_POST['APP_URL_INSTALL'],
"SCOPE" => is_array($_POST["SCOPE"]) && !empty($_POST["SCOPE"]) ? $_POST["SCOPE"] : array(),
"APP_NAME" => trim($_POST["APP_NAME"]),
"ONLY_API" => isset($_POST["APP_ONLY_API"]) ? "Y" : "N",
"MOBILE" => isset($_POST["MOBILE"]) ? "Y" : "N",
);
if(strlen($arFields['APP_NAME']) <= 0)
{
$arResult["ERROR"] = \Bitrix\Main\Localization\Loc::getMessage("MP_ERROR_EMPTY_NAME");
}
elseif(count($arFields['SCOPE']) <= 0)
{
$arResult["ERROR"] = \Bitrix\Main\Localization\Loc::getMessage("MP_ERROR_EMPTY_SCOPE");
}
if(empty($arResult['ERROR']))
{
foreach(GetModuleEvents('rest', 'OnRestLocalAppSave', true) as $eventHandler)
{
$eventResult = ExecuteModuleEventEx($eventHandler, array($arResult['APP'], &$arFields));
if($eventResult !== null)
{
$arResult["ERROR"] = $eventResult;
}
}
}
if(!\Bitrix\Rest\OAuthService::getEngine()->isRegistered())
{
try
{
\Bitrix\Rest\OAuthService::register();
}
catch(\Bitrix\Main\SystemException $e)
{
$arResult['ERROR'] = $e->getCode().': '.$e->getMessage();
}
}
if(empty($arResult['ERROR']))
{
if(strlen($arFields['URL']) <= 0)
{
$arResult["ERROR"] = \Bitrix\Main\Localization\Loc::getMessage("MP_ERROR_INCORRECT_URL");
}
}
if(empty($arResult["ERROR"]))
{
try
{
$appFields = array(
'URL' => $arFields['URL'],
'URL_INSTALL' => $arFields['URL_INSTALL'],
'SCOPE' => implode(',', $arFields['SCOPE']),
'STATUS' => \Bitrix\Rest\AppTable::STATUS_LOCAL,
'APP_NAME' => $arFields['APP_NAME'],
'MOBILE' => $arFields['MOBILE'],
);
if($arResult["APP"]['ID'] > 0)
{
$result = \Bitrix\Rest\AppTable::update($arResult['APP']['ID'], $appFields);
}
else
{
$appFields['INSTALLED'] = (!empty($arFields['URL_INSTALL']) && $arFields['ONLY_API'] !== 'Y')
? \Bitrix\Rest\AppTable::NOT_INSTALLED
: \Bitrix\Rest\AppTable::INSTALLED;
$result = \Bitrix\Rest\AppTable::add($appFields);
}
if($result->isSuccess())
{
$appId = $result->getId();
\Bitrix\Rest\AppLangTable::deleteByApp($appId);
if($arFields['ONLY_API'] === 'N')
{
foreach($_POST['APP_MENU_NAME'] as $lang => $name)
{
\Bitrix\Rest\AppLangTable::add(array(
'APP_ID' => $appId,
'LANGUAGE_ID' => $lang,
'MENU_NAME' => $name
));
}
}
else
{
if(
$arFields["ONLY_API"] === "Y"
&& !empty($arFields["URL_INSTALL"])
&& empty($arResult['APP']['URL_INSTALL'])
)
{
// checkCallback is already called inside checkFields
$result = \Bitrix\Rest\EventTable::add(array(
"APP_ID" => $appId,
"EVENT_NAME" => "ONAPPINSTALL",
"EVENT_HANDLER" => $arFields["URL_INSTALL"],
));
if($result->isSuccess())
{
\Bitrix\Rest\Event\Sender::bind('rest', 'OnRestAppInstall');
}
}
if($arResult['APP']['ID'] <= 0)
{
\Bitrix\Rest\AppTable::install($appId);
}
}
$url = $arResult['APP']['ID'] > 0
? $APPLICATION->GetCurPageParam("success=Y", array('success'))
: (
$arFields['ONLY_API'] === "Y"
? str_replace("#id#", $appId, $arParams['EDIT_URL_TPL'])
: $arParams['LIST_URL']
);
if(defined("BX_COMP_MANAGED_CACHE"))
{
global $CACHE_MANAGER;
$CACHE_MANAGER->ClearByTag('sonet_group');
}
LocalRedirect($url);
}
else
{
$arResult["ERROR"] = implode('<br />', $result->getErrorMessages());
}
}
catch (\Bitrix\Rest\OAuthException $e)
{
$arResult["ERROR"] = $e->getMessage();
}
}
$arResult['APP']['APP_NAME'] = $_POST['APP_NAME'];
$arResult['APP']['MENU_NAME'] = $_POST['APP_MENU_NAME'];
$arResult['APP']['SCOPE'] = !empty($_POST['SCOPE']) ? $_POST['SCOPE'] : array();
$arResult['APP']['URL'] = $_POST['APP_URL'];
$arResult['APP']['URL_INSTALL'] = $_POST['APP_URL_INSTALL'];
}
$arResult["SCOPE"] = \Bitrix\Rest\AppTable::cleanLocalPermissionList(
\CRestUtil::getScopeList()
);
$this->IncludeComponentTemplate();