static function migrate() { $errors = ''; $result = Application::getConnection()->query('SELECT * FROM b_sale_order_props'); while ($oldProperty = $result->fetch()) { $newProperty = self::convertOldToNew($oldProperty); $newProperty['IS_ADDRESS'] = 'N'; // fix oracle's mb default $update = OrderPropsTable::update($newProperty['ID'], array_intersect_key($newProperty, self::$allFields)); if ($update->isSuccess()) { //////CSaleOrderPropsValueAdapter::migrate($oldProperty); } else { $errors .= 'cannot update property: ' . $oldProperty['ID'] . "\n" . implode("\n", $update->getErrorMessages()) . "\n\n"; } } if ($errors) { throw new SystemException($errors, 0, __FILE__, __LINE__); } }
} $files[$i] = Input\File::loadInfoSingle($file); } } $property['DEFAULT_VALUE'] = $files; } // prepare property for database & set defaults $propertyForDB = array(); foreach ($commonSettings + $inputSettings + $stringSettings + $locationSettings as $name => $input) { $propertyForDB[$name] = Input\Manager::getValue($input, $property[$name]); } $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());