- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/helpers/admin/businessvalue.php
- Класс: BitrixSaleHelpersAdminBusinessValueControl
- Вызов: BusinessValueControl::saveMap
public function saveMap()
{
if ($this->errors)
throw new SystemException('There are errors in map!');
$consumers = BusinessValue::getConsumers();
foreach ($this->consumerCodePersonMapping as $consumerKey => $codePersonMapping)
{
$consumer = $consumers[$consumerKey] ?? [];
$setMapping =
isset($consumer['SET_MAPPING']) && is_callable($consumer['SET_MAPPING'])
? $consumer['SET_MAPPING']
: null
;
$codes = $consumer['CODES'] ?? [];
foreach ($codePersonMapping as $codeKey => $personMapping)
{
$code = $codes[$codeKey] ?? [];
$fileInput = $code['INPUT'] ?? [];
$fileType = $fileInput['TYPE'] ?? '';
if (!(is_array($fileInput) && ($fileType == 'FILE' || $fileType == 'DATABASE_FILE')))
{
$fileInput = [];
}
foreach ($personMapping as $personTypeId => $mapping)
{
if ($setMapping)
{
$result = call_user_func($setMapping, $codeKey, $personTypeId, $mapping);
}
else
{
$consumerCodePersonMapping = BitrixSaleBusinessValue::getConsumerCodePersonMapping();
if ($fileInput && ($file =& $mapping['PROVIDER_VALUE']))
{
if (InputFile::isDeletedSingle($file))
{
if ($fileInput['TYPE'] == 'FILE')
{
if (is_numeric($file['ID']) && isset($consumerCodePersonMapping[$consumerKey][$codeKey][$personTypeId]))
{
CFile::Delete($file['ID']); // TODO isSuccess
}
}
$file = null;
}
elseif (InputFile::isUploadedSingle($file))
{
if ($fileInput['TYPE'] == 'FILE')
{
if (($file = CFile::SaveFile(array('MODULE_ID' => 'sale') + $file, 'sale/bizval')) && is_numeric($file))
{
if (($oldFile = BusinessValue::getMapping($codeKey, $consumerKey, $personTypeId, array('MATCH' => BusinessValue::MATCH_EXACT))) && is_numeric($oldFile['PROVIDER_VALUE']))
CFile::Delete($oldFile['PROVIDER_VALUE']); // TODO isSuccess
}
else
{
$this->errors[$consumerKey][$codeKey][$personTypeId]['DATABASE'] = 'unable to save file';
continue;
}
$file = InputManager::getValue($fileInput, $file);
}
elseif($fileInput['TYPE'] == 'DATABASE_FILE')
{
/** @noinspection PhpVariableNamingConventionInspection */
global $APPLICATION;
$content = $APPLICATION->GetFileContent($file['tmp_name']);
if (!$content)
{
continue;
}
$file = $content;
}
}
else
{
$file = $file['ID'];
}
}
elseif (isset($fileInput['TYPE']) && is_array($fileInput) && $fileInput['TYPE'] === 'FILE')
{
if (isset($consumerCodePersonMapping[$consumerKey][$codeKey][$personTypeId]))
{
CFile::Delete($consumerCodePersonMapping[$consumerKey][$codeKey][$personTypeId]['PROVIDER_VALUE']);
}
}
$common = IsModuleInstalled('bitrix24') ? false : true;
$result = BusinessValue::setMapping($codeKey, $consumerKey, $personTypeId, $mapping, $common);
}
if (! $result->isSuccess())
$this->errors[$consumerKey][$codeKey][$personTypeId]['DATABASE'] = $result->getErrorMessages();
}
}
}
return ! $this->errors;
}