fivestar.migrate.inc 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. /**
  3. * @file
  4. * Base integration with the Migrate API class.
  5. */
  6. /**
  7. * Implements hook_migrate_api().
  8. */
  9. function fivestar_migrate_api() {
  10. $api = array(
  11. 'api' => 2,
  12. 'field handlers' => array('MigrateFivestarFieldHandler'),
  13. );
  14. return $api;
  15. }
  16. /**
  17. * Custom extended MigrateFieldHandler class for FiveStar module.
  18. */
  19. class MigrateFivestarFieldHandler extends MigrateFieldHandler {
  20. /**
  21. *
  22. */
  23. public function __construct() {
  24. $this->registerTypes(array('fivestar'));
  25. }
  26. /**
  27. *
  28. */
  29. public function fields($type, $parent_field, $migration = NULL) {
  30. $fields = array(
  31. 'target' => t('Ratings: The target of the rating.'),
  32. );
  33. return $fields;
  34. }
  35. /**
  36. *
  37. */
  38. public function prepare($entity, array $field_info, array $instance, array $values) {
  39. $arguments = array();
  40. if (isset($values['arguments'])) {
  41. $arguments = array_filter($values['arguments']);
  42. unset($values['arguments']);
  43. }
  44. $language = $this->getFieldLanguage($entity, $field_info, $arguments);
  45. // Setup the standard Field API array for saving.
  46. foreach (array_values($values) as $delta => $value) {
  47. $return[$language][$delta] = array('rating' => $value) + array_intersect_key($arguments, $field_info['columns']);
  48. }
  49. return isset($return) ? $return : NULL;
  50. }
  51. }