/** @global CMain $APPLICATION
* @global CDatabase $DB
*/
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/currency/prolog.php");
$CURRENCY_RIGHT = $APPLICATION->GetGroupRight("currency");
if ($CURRENCY_RIGHT=="D")
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
CModule::IncludeModule('currency');
IncludeModuleLangFile(__FILE__);
$errorMessage = array();
$ID = '';
if (isset($_REQUEST['ID']))
$ID = trim((string)$_REQUEST['ID']);
$aTabs = array(
array("DIV" => "edit1", "TAB" => GetMessage("currency_curr"), "ICON"=>"", "TITLE"=>GetMessage("currency_curr_settings")),
array("DIV" => "edit2", "TAB" => GetMessage("BT_CURRENCY_EDIT_TAB_NAME_LANGUAGE"), "ICON"=>"", "TITLE"=>GetMessage("BT_CURRENCY_EDIT_TAB_TITLE_LANGUAGE")),
);
$tabControl = new CAdminTabControl("tabControl", $aTabs);
$arTemplates = CCurrencyLang::GetFormatTemplates();
$separatorList = CCurrencyLang::GetSeparatorTypes(true);
$langList = array();
$langID = array();
$langIterator = CLangAdmin::GetList();
while ($oneLang = $langIterator->Fetch())
{
$langID[] = $oneLang['LID'];
$langList[$oneLang['LID']] = $oneLang['NAME'];
}
unset($oneLang, $langIterator);
$arFields = array();
if ($_SERVER['REQUEST_METHOD'] == 'POST' && $CURRENCY_RIGHT=="W" && !empty($_POST['Update']) && check_bitrix_sessid())
{
if (!isset($_POST['BASE']) || $_POST['BASE'] != 'Y')
{
$arFields = array(
'AMOUNT' => ($_POST['AMOUNT'] ?? ''),
'AMOUNT_CNT' => ($_POST['AMOUNT_CNT'] ?? ''),
'SORT' => ($_POST['SORT'] ?? ''),
'NUMCODE' => ($_POST['NUMCODE'] ?? '')
);
}
else
{
$arFields = array(
'AMOUNT' => 1,
'AMOUNT_CNT' => 1,
'SORT' => ($_POST['SORT'] ?? ''),
'NUMCODE' => ($_POST['NUMCODE'] ?? '')
);
}
if (!$ID && isset($_POST['CURRENCY']))
{
$arFields['CURRENCY'] = $_POST['CURRENCY'];
}
$strAction = ($ID ? 'UPDATE' : 'ADD');
$langSettings = array();
foreach ($langID as $oneLang)
{
if (isset($_POST['LANG_'.$oneLang]))
$langSettings[$oneLang] = $_POST['LANG_'.$oneLang];
}
unset($oneLang);
$arFields['LANG'] = $langSettings;
unset($langSettings);
$DB->StartTransaction();
if ($ID)
{
$res = CCurrency::Update($ID, $arFields);
}
else
{
$ID = (string)CCurrency::Add($arFields);
$res = ($ID !== '');
}
if (!$res)
{
$DB->Rollback();
if ($ex = $APPLICATION->GetException())
$errorMessage[] = $ex->GetString();
else
$errorMessage[] = ($ID ? str_replace('#ID#', $ID, GetMessage('BT_CURRENCY_EDIT_ERR_UPDATE')) : GetMessage('BT_CURRENCY_EDIT_ERR_ADD'))."
";
}
else
{
$DB->Commit();
if (empty($_POST['apply']))
LocalRedirect('/bitrix/admin/currencies.php?lang='.LANGUAGE_ID);
LocalRedirect('/bitrix/admin/currency_edit.php?ID='.$ID.'&lang='.LANGUAGE_ID.'&'.$tabControl->ActiveTabParam());
}
}
$defaultValues = array(
'CURRENCY' => '',
'AMOUNT_CNT' => 1,
'AMOUNT' => 1,
'SORT' => 100,
'NUMCODE' => '',
'BASE' => 'N'
);
$defaultLangValues = array(
'FULL_NAME' => '',
'FORMAT_STRING' => '#',
'DEC_POINT' => '.',
'THOUSANDS_SEP' => '',
'DECIMALS' => 2,
'THOUSANDS_VARIANT' => CCurrencyLang::SEP_SPACE,
'HIDE_ZERO' => 'Y'
);
if ($ID != '')
$APPLICATION->SetTitle(GetMessage("CURRENCY_EDIT_TITLE"));
else
$APPLICATION->SetTitle(GetMessage("CURRENCY_NEW_TITLE"));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
$currency = $defaultValues;
$currencyLangs = array_fill_keys($langID, $defaultLangValues);
if ($ID != '')
{
$currency = CCurrency::GetByID($ID);
if (empty($currency))
{
$ID = '';
$currency = $defaultValues;
}
else
{
$langIterator = CCurrencyLang::GetList('currency', 'asc', $ID);
while ($language = $langIterator->Fetch())
{
$language['THOUSANDS_SEP'] = (string)$language['THOUSANDS_SEP'];
$language['THOUSANDS_VARIANT'] = (string)$language['THOUSANDS_VARIANT'];
$language['FULL_NAME'] = (string)$language['FULL_NAME'];
if ($language['FULL_NAME'] === '')
$language['FULL_NAME'] = $ID;
$currencyLangs[$language['LID']] = $language;
}
unset($language, $langIterator);
}
}
if (!empty($errorMessage))
{
$currency = $arFields;
if (!isset($currency['CURRENCY']))
$currency['CURRENCY'] = '';
$currencyLangs = $arFields['LANG'];
}
$aContext = array(
array(
"ICON" => "btn_list",
"TEXT" => GetMessage("MAIN_ADMIN_MENU_LIST"),
"LINK" => "currencies.php?lang=".LANGUAGE_ID,
"TITLE" => GetMessage("MAIN_ADMIN_MENU_LIST")
),
);
if ($ID != '')
{
$aContext[] = array(
"ICON" => "btn_new",
"TEXT" => GetMessage("MAIN_ADMIN_MENU_CREATE"),
"LINK" => "currency_edit.php?lang=".LANGUAGE_ID,
"TITLE" => GetMessage("MAIN_ADMIN_MENU_CREATE")
);
if ($CURRENCY_RIGHT == "W" && $currency['BASE'] != 'Y')
{
$aContext[] = array(
"ICON" => "btn_delete",
"TEXT" => GetMessage("MAIN_ADMIN_MENU_DELETE"),
"ONCLICK" => "javascript:if(confirm('".GetMessageJS("CONFIRM_DEL_MESSAGE")."'))window.location='currencies.php?action=delete&ID[]=".CUtil::JSEscape($ID)."&lang=".LANGUAGE_ID."&".bitrix_sessid_get()."';",
);
}
}
$context = new CAdminContextMenu($aContext);
$context->Show();
if (!empty($errorMessage))
CAdminMessage::ShowMessage(implode('
', $errorMessage));
?>