migrate_ui.module 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <?php
  2. function migrate_ui_help($path, $arg) {
  3. switch ($path) {
  4. case 'admin/content/migrate':
  5. return t('The current status of each migration group defined in this system. Click on a group name for details on its configuration.');
  6. }
  7. }
  8. /**
  9. * Implementation of hook_menu().
  10. */
  11. function migrate_ui_menu() {
  12. $items = array();
  13. $items['admin/content/migrate'] = array(
  14. 'type' => MENU_LOCAL_TASK | MENU_NORMAL_ITEM,
  15. 'title' => 'Migrate',
  16. 'description' => 'Manage importing of data into your Drupal site',
  17. 'page callback' => 'drupal_get_form',
  18. 'page arguments' => array('migrate_ui_migrate_dashboard'),
  19. 'access arguments' => array(MIGRATE_ACCESS_BASIC),
  20. 'access callback' => 'user_access',
  21. 'file' => 'migrate_ui.pages.inc',
  22. );
  23. $items['admin/content/migrate/groups'] = array(
  24. 'title' => 'Dashboard',
  25. 'type' => MENU_DEFAULT_LOCAL_TASK,
  26. 'weight' => -10,
  27. );
  28. $items['admin/content/migrate/configure'] = array(
  29. 'title' => 'Configuration',
  30. 'type' => MENU_LOCAL_TASK,
  31. 'description' => 'Configure migration settings',
  32. 'page callback' => 'migrate_ui_configure',
  33. 'access arguments' => array(MIGRATE_ACCESS_ADVANCED),
  34. 'file' => 'migrate_ui.pages.inc',
  35. 'weight' => 100,
  36. );
  37. // Add tabs for each implemented migration wizard.
  38. $wizards = migrate_ui_wizards();
  39. foreach ($wizards as $wizard_class => $wizard) {
  40. $items["admin/content/migrate/new/$wizard_class"] = array(
  41. 'type' => MENU_LOCAL_TASK,
  42. 'title' => 'Import from @source_title',
  43. 'title arguments' => array('@source_title' => $wizard->getSourceName()),
  44. 'page callback' => 'drupal_get_form',
  45. 'page arguments' => array('migrate_ui_wizard', $wizard_class),
  46. 'access arguments' => array(MIGRATE_ACCESS_BASIC),
  47. 'file' => 'migrate_ui.wizard.inc',
  48. );
  49. }
  50. $items['admin/content/migrate/groups/%'] =
  51. array(
  52. 'title callback' => 'migrate_ui_migrate_group_title',
  53. 'title arguments' => array(4),
  54. 'type' => MENU_NORMAL_ITEM,
  55. 'page callback' => 'drupal_get_form',
  56. 'page arguments' => array('migrate_ui_migrate_group', 4),
  57. 'access arguments' => array(MIGRATE_ACCESS_BASIC),
  58. 'file' => 'migrate_ui.pages.inc',
  59. );
  60. $items['admin/content/migrate/groups/%/%'] =
  61. array(
  62. 'title callback' => 'migrate_ui_migrate_migration_title',
  63. 'title arguments' => array(5),
  64. 'type' => MENU_NORMAL_ITEM,
  65. 'page callback' => 'drupal_get_form',
  66. 'page arguments' => array('migrate_migration_info', 4, 5),
  67. 'access arguments' => array(MIGRATE_ACCESS_BASIC),
  68. 'file' => 'migrate_ui.pages.inc',
  69. );
  70. $items['admin/content/migrate/groups/%/%/view'] =
  71. array(
  72. 'title' => 'View',
  73. 'type' => MENU_DEFAULT_LOCAL_TASK,
  74. 'weight' => -10,
  75. );
  76. $items['admin/content/migrate/groups/%/%/edit'] =
  77. array(
  78. 'type' => MENU_LOCAL_TASK,
  79. 'title' => 'Edit',
  80. 'description' => 'Edit migration mappings',
  81. 'page callback' => 'drupal_get_form',
  82. 'page arguments' => array('migrate_ui_edit_mappings', 4, 5),
  83. 'access arguments' => array(MIGRATE_ACCESS_ADVANCED),
  84. 'file' => 'migrate_ui.pages.inc',
  85. );
  86. $items['admin/content/migrate/groups/%/%/messages'] =
  87. array(
  88. 'type' => MENU_LOCAL_TASK,
  89. 'title' => 'Messages',
  90. 'description' => 'View messages from a migration',
  91. 'page callback' => 'migrate_ui_messages',
  92. 'page arguments' => array(4, 5),
  93. 'access arguments' => array(MIGRATE_ACCESS_ADVANCED),
  94. 'file' => 'migrate_ui.pages.inc',
  95. );
  96. return $items;
  97. }
  98. /**
  99. * Title callback for the migrate group view page.
  100. */
  101. function migrate_ui_migrate_group_title($group_name) {
  102. $group = MigrateGroup::getInstance($group_name);
  103. return $group->getTitle();
  104. }
  105. /**
  106. * Title callback for the migration view page.
  107. */
  108. function migrate_ui_migrate_migration_title($migration_name) {
  109. return $migration_name;
  110. }
  111. /**
  112. * Implements hook_theme()
  113. *
  114. * @return array
  115. */
  116. function migrate_ui_theme() {
  117. return array(
  118. 'migrate_ui_field_mapping_form' => array(
  119. 'arguments' => array('field_mappings' => NULL),
  120. 'render element' => 'field_mappings',
  121. 'file' => '/migrate_ui.pages.inc',
  122. ),
  123. 'migrate_ui_field_mapping_dependencies' => array(
  124. 'arguments' => array('dependencies' => NULL),
  125. 'render element' => 'dependencies',
  126. 'file' => '/migrate_ui.pages.inc',
  127. ),
  128. );
  129. }
  130. /**
  131. * Implementation of hook_mail().
  132. *
  133. * @param $key
  134. * @param $message
  135. * @param $params
  136. */
  137. function migrate_ui_mail($key, &$message, $params) {
  138. $options['language'] = $message['language'];
  139. user_mail_tokens($variables, array(), $options);
  140. $langcode = $message['language']->language;
  141. $subject = variable_get('migrate_drush_mail_subject', '');
  142. $message['subject'] = t($subject, array(), array('langcode' => $langcode));
  143. $body = variable_get('migrate_drush_mail_body', '');
  144. $body .= "\n" . $params['output'];
  145. $message['body'][] = t($body, array(), array('langcode' => $langcode));
  146. }
  147. /**
  148. * Get info on all modules supporting a migration wizard.
  149. *
  150. * @return array
  151. * key: machine_name for a particular wizard implementation. Used in the menu
  152. * link.
  153. * value: Wizard configuration array containing:
  154. * source_title -
  155. */
  156. function migrate_ui_wizards() {
  157. $module_apis = migrate_get_module_apis();
  158. $wizards = array();
  159. foreach ($module_apis as $info) {
  160. if (isset($info['wizard classes']) && is_array($info['wizard classes'])) {
  161. foreach ($info['wizard classes'] as $wizard_class) {
  162. $wizard_class = strtolower($wizard_class);
  163. $wizards[$wizard_class] = new $wizard_class;
  164. }
  165. }
  166. }
  167. return $wizards;
  168. }