Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/modules/sale/admin/
Upload File :
Current File : /var/www/homesaver/www/bitrix/modules/sale/admin/business_value_ptypes.php

<?
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";
}

?>
	<form method="POST" action="<?=$APPLICATION->GetCurPage().$actionParams?>" name="bizvalTabs_form" id="bizvalTabs_form">

		<?=bitrix_sessid_post()?>

		<div class="adm-detail-content-wrap">
			<div class="adm-detail-content">
				<div class="adm-detail-title"><?=Loc::getMessage('BIZVAL_PAGE_PTYPES')?></div>
				<table border="0" cellspacing="0" cellpadding="0" width="100%" class="adm-detail-content-table edit-table">
					<tbody>
					<?

					foreach ($allPersonTypes as $personTypeId => $personType)
					{
						$error = isset($domainErrors[$personTypeId])
							? $domainErrors[$personTypeId]
							: array();

						?>
						<tr>
							<td class="adm-detail-content-cell-l" width="40%">
								<?

								echo htmlspecialcharsbx($personType['TITLE']);

								if ($error['ADD'])
									echo '<div style="color:#ff5454">'.htmlspecialcharsbx(implode('<br>', $error['ADD'])).'</div>';

								if ($error['DELETE'])
									echo '<div style="color:#ff5454">'.htmlspecialcharsbx(implode('<br>', $error['DELETE'])).'</div>';

								?>
							</td>
							<td class="adm-detail-content-cell-r">
								<?

								echo Input\Manager::getEditHtml("PERSONS_DOMAINS[$personTypeId]", $personDomainInput, $allPersonTypes[$personTypeId]['DOMAIN']);

								if ($error['DOMAIN'])
									echo '<div style="color:#ff5454">'.htmlspecialcharsbx(implode('<br>', $error['DOMAIN'])).'</div>';

								?>
							</td>
						</tr>
						<?
					}

					?>
					</tbody>
				</table>
			</div>
		</div>

		<div class="adm-detail-content-btns-wrap">
			<div class="adm-detail-content-btns">
				<?
				echo '<input'
					.' type="submit" name="apply" value="'.GetMessage("admin_lib_edit_apply").'" title="'
					.GetMessage("admin_lib_edit_apply_title").'" class="adm-btn-save" />';

				?>
			</div>
		</div>

	</form>
<?

require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_admin.php');