content_taxonomy_migrate.module 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. function content_taxonomy_migrate_content_migrate_field_alter(&$field_value, $instance_value) {
  3. if ($field_value['type'] == 'content_taxonomy') {
  4. $field_value['type'] = 'taxonomy_term_reference';
  5. $field_value['module'] = 'taxonomy';
  6. // transform field settings
  7. $old_settings = $field_value['settings'];
  8. $vocabulary = taxonomy_vocabulary_load($old_settings['vid']);
  9. $field_value['settings'] = array();
  10. $field_value['settings']['allowed_values'] = array();
  11. $field_value['settings']['allowed_values'][0]['vocabulary'] = $vocabulary->machine_name;
  12. $field_value['settings']['allowed_values'][0]['parent'] = $old_settings['parent'];
  13. }
  14. }
  15. function content_taxonomy_migrate_content_migrate_instance_alter(&$instance_value, $field_value) {
  16. if ($instance_value['widget_type'] == "content_taxonomy_autocomplete") {
  17. $instance_value['widget_type'] = 'taxonomy_autocomplete';
  18. $instance_value['widget']['type'] = 'taxonomy_autocomplete';
  19. $instance_value['widget']['module'] = 'taxonomy';
  20. }
  21. else if ($instance_value['widget_type'] == "content_taxonomy_options" || $instance_value['widget_type'] == "content_taxonomy_tree") {
  22. $instance_value['widget_type'] = 'options_buttons';
  23. $instance_value['widget']['type'] = 'options_buttons';
  24. $instance_value['widget']['module'] = 'options';
  25. }
  26. else if ($instance_value['widget_type'] == "content_taxonomy_select" || $instance_value['widget_type'] == 'content_taxonomy_hs') {
  27. $instance_value['widget_type'] = 'options_select';
  28. $instance_value['widget']['type'] = 'options_select';
  29. $instance_value['widget']['module'] = 'options';
  30. }
  31. // fix formatter
  32. foreach ($instance_value['display'] as $context => $settings) {
  33. if ($instance_value['display'][$context]['type'] == 'default') {
  34. $instance_value['display'][$context]['type'] = 'taxonomy_term_reference_plain';
  35. }
  36. else if ($instance_value['display'][$context]['type'] == 'link') {
  37. $instance_value['display'][$context]['type'] = 'taxonomy_term_reference_link';
  38. }
  39. }
  40. }
  41. function content_taxonomy_migrate_content_migrate_data_record_alter(&$record, $field) {
  42. // fill the taxonomy_index
  43. if ($field['type'] == 'taxonomy_term_reference') {
  44. if (variable_get('taxonomy_maintain_index_table', TRUE) && $field['storage']['type'] == 'field_sql_storage' && $record['entity_type'] == 'node') {
  45. if (isset($record[$field['field_name'] . "_tid"]) && $record[$field['field_name'] . "_tid"]) {
  46. $entity = node_load($record['entity_id']);
  47. db_delete('taxonomy_index')->condition('nid', $entity->nid)->condition('tid', $record[$field['field_name'] . "_tid"])->execute();
  48. $query = db_insert('taxonomy_index')->fields(array('nid', 'tid', 'sticky', 'created', ));
  49. $query->values(array(
  50. 'nid' => $entity->nid,
  51. 'tid' => $record[$field['field_name'] . "_tid"],
  52. 'sticky' => $entity->sticky,
  53. 'created' => $entity->created,
  54. ));
  55. $query->execute();
  56. }
  57. }
  58. }
  59. }