Example #1
0
 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());