function Add($arFields) { foreach (GetModuleEvents('sale', 'OnBeforeOrderPropsAdd', true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array(&$arFields)) === false) { return false; } } if (!self::CheckFields('ADD', $arFields)) { return false; } $newProperty = CSaleOrderPropsAdapter::convertOldToNew($arFields); $ID = OrderPropsTable::add(array_intersect_key($newProperty, CSaleOrderPropsAdapter::$allFields))->getId(); foreach (GetModuleEvents('sale', 'OnOrderPropsAdd', true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } return $ID; }
$propertyForDB['SETTINGS'] = array_intersect_key($propertyForDB, $inputSettings); $propertyForDB = array_diff_key($propertyForDB, $propertyForDB['SETTINGS']); // 1. update property if ($propertyId) { $update = OrderPropsTable::update($propertyId, array_diff_key($propertyForDB, array('ID' => 1))); if ($update->isSuccess()) { $propertyCode = ($v = $property['CODE']) ? $v : false; $result = CSaleOrderPropsValue::GetList($b = 'ID', $o = 'ASC', array('ORDER_PROPS_ID' => $propertyId, '!CODE' => $propertyCode)); while ($row = $result->Fetch()) { CSaleOrderPropsValue::Update($row['ID'], array('CODE' => $propertyCode)); } } else { $errors[] = loc::getMessage('ERROR_EDIT_PROP') . ': ' . implode(', ', $update->getErrorMessages()); } } else { $insert = OrderPropsTable::add($propertyForDB); if ($insert->isSuccess()) { $propertyId = $property['ID'] = $insert->getId(); } else { $errors[] = loc::getMessage('ERROR_ADD_PROP') . ': ' . implode(', ', $insert->getErrorMessages()); } } // cleanup files if ($errors) { if (isset($savedFiles)) { $filesToDelete = $savedFiles; } } else { if ($existentProperty && $existentProperty['TYPE'] == 'FILE') { $filesToDelete = Input\File::asMultiple(Input\File::getValue($existentProperty, $existentProperty['DEFAULT_VALUE'])); if (isset($files)) {