diff --git a/fivestar.info b/fivestar.info index f4d802c..617f36f 100644 --- a/fivestar.info +++ b/fivestar.info @@ -6,3 +6,4 @@ dependencies[] = votingapi configure = admin/config/content/fivestar files[] = test/fivestar.base.test files[] = test/fivestar.field.test +files[] = fivestar.migrate.inc diff --git a/fivestar.migrate.inc b/fivestar.migrate.inc new file mode 100644 index 0000000..c8c2479 --- /dev/null +++ b/fivestar.migrate.inc @@ -0,0 +1,49 @@ + 2, + 'field handlers' => array('MigrateFivestarFieldHandler'), + ); + return $api; +} + +/** + * Custom extended MigrateFieldHandler class for FiveStar module. + */ +class MigrateFivestarFieldHandler extends MigrateFieldHandler { + + public function __construct() { + $this->registerTypes(array('fivestar')); + } + + public function fields($type, $parent_field, $migration = NULL) { + $fields = array( + 'target' => t('Ratings: The target of the rating.'), + ); + return $fields; + } + + 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); + + // Setup the standard Field API array for saving. + foreach (array_values($values) as $delta => $value) { + $return[$language][$delta] = array('rating' => $value) + array_intersect_key($arguments, $field_info['columns']); + } + + return isset($return) ? $return : NULL; + } +}