diff --git migrate_extras/migrate_extras.info migrate_extras/migrate_extras.info index 691da41..7b56264 100644 --- migrate_extras/migrate_extras.info +++ migrate_extras/migrate_extras.info @@ -17,6 +17,7 @@ files[] = pathauto.inc files[] = profile2.inc files[] = rules.inc files[] = og.inc +files[] = physical_weight.inc files[] = privatemsg.inc files[] = votingapi.inc files[] = user_relationships.inc diff --git migrate_extras/physical_weight.inc migrate_extras/physical_weight.inc new file mode 100644 index 0000000..69de720 --- /dev/null +++ migrate_extras/physical_weight.inc @@ -0,0 +1,37 @@ +addFieldMapping('field_weight', 'weight'); + * $this->addFieldMapping('field_weight:unit', 'weight_units'); + * @endcode + */ +class MigratePhysicalWeightFieldHandler extends MigrateFieldHandler { + public function __construct() { + $this->registerTypes(array('physical_weight')); + } + + public function prepare($entity, array $field_info, array $instance, array $values) { + $arguments = array(); + if (isset($values['arguments'])) { + $arguments = array_filter($values['arguments']); + unset($values['arguments']); + } + $language = $this->getFieldLanguage($entity, $field_info, $arguments); + + $default_unit = isset($instance['widget']['settings']['default_unit']) ? $instance['widget']['settings']['default_unit'] : 'g'; + + // Setup the standard Field API array for saving. + $delta = 0; + foreach ($values as $value) { + $return[$language][$delta]['weight'] = $value; + $return[$language][$delta]['unit'] = isset($arguments['unit']) ? $arguments['unit'] : $default_unit; + $delta++; + } + + return isset($return) ? $return : NULL; + } +} +