require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_before.php'); $readOnly = $APPLICATION->GetGroupRight('sale') < 'W'; if ($readOnly) $APPLICATION->AuthForm(GetMessage('ACCESS_DENIED')); require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/sale/prolog.php'); \Bitrix\Main\Loader::includeModule('sale'); use Bitrix\Sale\BusinessValue; use Bitrix\Sale\Internals\BusinessValueTable; use Bitrix\Sale\Internals\BusinessValuePersonDomainTable; use Bitrix\Sale\Internals\Input; use Bitrix\Main\Localization\Loc; Loc::loadMessages(__FILE__); $domainErrors = array(); $allPersonTypes = BusinessValue::getPersonTypes(true); $personDomainInput = array('TYPE' => 'ENUM', 'OPTIONS' => array( '' => Loc::getMessage('BIZVAL_DOMAIN_NONE' ), BusinessValue::INDIVIDUAL_DOMAIN => Loc::getMessage('BIZVAL_DOMAIN_INDIVIDUAL'), BusinessValue::ENTITY_DOMAIN => Loc::getMessage('BIZVAL_DOMAIN_ENTITY' ), )); // 1. post persons domains if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['PERSONS_DOMAINS']) && is_array($_POST['PERSONS_DOMAINS'])) { // sanitize & validate call_user_func( function () use (&$domainErrors, $allPersonTypes, $personDomainInput) { foreach ($_POST['PERSONS_DOMAINS'] as $personTypeId => $personTypeDomain) { if ($allPersonTypes[$personTypeId]) { if ($error = Input\Manager::getError($personDomainInput, $personTypeDomain)) $domainErrors[$personTypeId]['DOMAIN'] = $error; } else { unset ($_POST['PERSONS_DOMAINS'][$personTypeId]); } } } ); if (! $domainErrors && ! $readOnly && check_bitrix_sessid() && ($_POST['save'] || $_POST['apply'])) { // save call_user_func( function () use (&$domainErrors, &$allPersonTypes) { foreach ($_POST['PERSONS_DOMAINS'] as $personTypeId => $postedPersonDomain) { $savedPersonDomain = $allPersonTypes[$personTypeId]['DOMAIN']; if ($postedPersonDomain != $savedPersonDomain) { if ($savedPersonDomain) { $deletePersonDomainResult = BusinessValuePersonDomainTable::delete(array( 'PERSON_TYPE_ID' => $personTypeId, 'DOMAIN' => $savedPersonDomain, )); if ($deletePersonDomainResult->isSuccess()) { $result = BusinessValueTable::getList(array( 'select' => array('CODE_KEY', 'CONSUMER_KEY', 'PERSON_TYPE_ID'), 'filter' => array('=PERSON_TYPE_ID' => $personTypeId), )); while ($row = $result->fetch()) { // TODO remove save_data_modification hack if (! $row['CONSUMER_KEY']) $row['CONSUMER_KEY'] = BusinessValueTable::COMMON_CONSUMER_KEY; BusinessValueTable::delete($row); // TODO errors } $allPersonTypes[$personTypeId]['DOMAIN'] = null; } else { $domainErrors[$personTypeId]['DELETE'] = $deletePersonDomainResult->getErrorMessages(); } } if ($postedPersonDomain) { $addPersonDomainResult = BusinessValuePersonDomainTable::add(array( 'PERSON_TYPE_ID' => $personTypeId, 'DOMAIN' => $postedPersonDomain, )); if ($addPersonDomainResult->isSuccess()) { $allPersonTypes[$personTypeId]['DOMAIN'] = $postedPersonDomain; } else { $domainErrors[$personTypeId]['ADD'] = $addPersonDomainResult->getErrorMessages(); } } } } } ); } } // VIEW //////////////////////////////////////////////////////////////////////////////////////////////////////////////// $APPLICATION->SetTitle(Loc::getMessage('BIZVAL_PAGE_TITLE')); require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_after.php'); if ($domainErrors) { call_user_func(function () { $m = new CAdminMessage(Loc::getMessage('BIZVAL_PAGE_ERRORS')); echo $m->Show(); }); } $actionParams = '?lang='.LANGUAGE_ID; if ($adminSidePanelHelper->isSidePanel()) { $actionParams .= "&IFRAME=Y&IFRAME_TYPE=SIDE_SLIDER"; } ?>