migrate_example.install 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <?php
  2. /**
  3. * @file
  4. * Set up the migration example module.
  5. */
  6. require_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'migrate_example') .
  7. '/beer.install.inc';
  8. require_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'migrate_example') .
  9. '/wine.install.inc';
  10. function migrate_example_schema() {
  11. $schema = migrate_example_beer_schema();
  12. $schema += migrate_example_wine_schema();
  13. return $schema;
  14. }
  15. function migrate_example_install() {
  16. migrate_example_beer_install();
  17. migrate_example_wine_install();
  18. // A simple format for testing migration of format
  19. $example_format = array(
  20. 'format' => 'migrate_example',
  21. 'name' => 'Migrate example format',
  22. 'weight' => 20,
  23. 'filters' => array(
  24. // Escape all HTML.
  25. 'filter_html_escape' => array(
  26. 'weight' => 0,
  27. 'status' => 1,
  28. ),
  29. ),
  30. );
  31. $example_format = (object) $example_format;
  32. filter_format_save($example_format);
  33. migrate_static_registration();
  34. }
  35. function migrate_example_uninstall() {
  36. migrate_example_beer_uninstall();
  37. migrate_example_wine_uninstall();
  38. if ($format = filter_format_load('migrate_example')) {
  39. filter_format_disable($format);
  40. }
  41. }
  42. function migrate_example_disable() {
  43. migrate_example_beer_disable();
  44. migrate_example_wine_disable();
  45. }
  46. /**
  47. * Convert modificationdate datetime field to modificationdatetime int field.
  48. */
  49. function migrate_example_update_7001() {
  50. $ret = array();
  51. db_add_field('migrate_example_beer_legacy_urls', 'modificationdatetime', array(
  52. 'type' => 'int',
  53. 'unsigned' => TRUE,
  54. 'not null' => FALSE,
  55. )
  56. );
  57. $result = db_select('migrate_example_beer_legacy_urls', 'ms')
  58. ->fields('ms', array('machine_name', 'modificationdate'))
  59. ->execute();
  60. foreach ($result as $row) {
  61. $modificationdatetime = strtotime($row->modificationdate);
  62. db_update('migrate_example_beer_legacy_urls')
  63. ->fields(array('modificationdatetime' => $modificationdatetime))
  64. ->condition('machine_name', $row->machineName)
  65. ->execute();
  66. }
  67. db_drop_field('migrate_example_beer_legacy_urls', 'modificationdate');
  68. $ret[] = t('Converted modificationdate datetime field to modificationdatetime int field');
  69. return $ret;
  70. }
  71. /**
  72. * Add image alt/title/description columns.
  73. */
  74. function migrate_example_update_7002() {
  75. $ret = array();
  76. db_add_field('migrate_example_beer_node', 'image_alt', array(
  77. 'type' => 'varchar',
  78. 'length' => 255,
  79. 'not null' => FALSE,
  80. 'description' => 'Image ALT',
  81. )
  82. );
  83. db_add_field('migrate_example_beer_node', 'image_title', array(
  84. 'type' => 'varchar',
  85. 'length' => 255,
  86. 'not null' => FALSE,
  87. 'description' => 'Image title',
  88. )
  89. );
  90. db_add_field('migrate_example_beer_node', 'image_description', array(
  91. 'type' => 'varchar',
  92. 'length' => 255,
  93. 'not null' => FALSE,
  94. 'description' => 'Image description',
  95. )
  96. );
  97. db_update('migrate_example_beer_node')
  98. ->fields(array(
  99. 'image_alt' => 'Heinekin alt',
  100. 'image_title' => 'Heinekin title',
  101. 'image_description' => 'Heinekin description',
  102. ))
  103. ->condition('bid', 99999999)
  104. ->execute();
  105. $ret[] = t('Added image_alt, image_title, and image_description fields.');
  106. return $ret;
  107. }
  108. /**
  109. * Add data for remote file examples.
  110. */
  111. function migrate_example_update_7003() {
  112. $ret = array();
  113. db_create_table('migrate_example_wine_files', migrate_example_wine_schema_files());
  114. migrate_example_wine_data_files();
  115. db_add_field('migrate_example_wine_account', 'imageid', array(
  116. 'type' => 'int',
  117. 'unsigned' => TRUE,
  118. 'not null' => FALSE,
  119. 'description' => 'Image ID.',
  120. )
  121. );
  122. db_update('migrate_example_wine_account')
  123. ->fields(array('imageid' => 1))
  124. ->condition('accountid', 9)
  125. ->execute();
  126. $ret[] = t('Added migrate_example_wine_files table.');
  127. $ret[] = t('Added imageid field to migrate_example_wine_account table.');
  128. return $ret;
  129. }
  130. /**
  131. * Add sample data for file fields. And, make the image field multi-value.
  132. */
  133. function migrate_example_update_7004() {
  134. $ret = array();
  135. db_update('migrate_example_wine')
  136. ->fields(array('image' => 'http://cyrve.com/files/penguin.jpeg'))
  137. ->condition('wineid', 1)
  138. ->execute();
  139. db_update('migrate_example_wine')
  140. ->fields(array('image' => 'http://cyrve.com/files/rioja.jpeg|http://cyrve.com/files/boutisse_0.jpeg'))
  141. ->condition('wineid', 2)
  142. ->execute();
  143. $field = field_info_field('field_migrate_example_image');
  144. if ($field) {
  145. $field['cardinality'] = -1; // Unlimited
  146. field_update_field($field);
  147. }
  148. else {
  149. migrate_example_beer_image();
  150. migrate_example_wine_fields();
  151. }
  152. $ret[] = t('Added sample data for file fields.');
  153. $ret[] = t('Made field_migrate_example_image multi-value');
  154. return $ret;
  155. }
  156. /**
  157. * Expand file field example data.
  158. */
  159. function migrate_example_update_7005() {
  160. $ret = array();
  161. // Easiest to just start over from scratch
  162. if (db_table_exists('migrate_example_wine_files')) {
  163. db_drop_table('migrate_example_wine_files');
  164. }
  165. db_create_table('migrate_example_wine_files', migrate_example_wine_schema_files());
  166. migrate_example_wine_data_files();
  167. // Moved this data to migrate_example_wine_files
  168. if (db_field_exists('migrate_example_wine', 'image')) {
  169. db_drop_field('migrate_example_wine', 'image');
  170. }
  171. $ret[] = t('Reconfigured sample data for file fields.');
  172. return $ret;
  173. }
  174. /**
  175. * Sample data for table destinations..
  176. */
  177. function migrate_example_update_7006() {
  178. $ret = array();
  179. db_create_table('migrate_example_wine_table_source', migrate_example_wine_schema_table_source());
  180. db_create_table('migrate_example_wine_table_dest', migrate_example_wine_schema_table_dest());
  181. migrate_example_wine_data_table_source();
  182. $ret[] = t('Added sample data for table destinations.');
  183. return $ret;
  184. }
  185. /**
  186. * Add data for testing/demonstrating roles.
  187. */
  188. function migrate_example_update_7007() {
  189. $ret = array();
  190. db_add_field('migrate_example_wine_account', 'positions', array(
  191. 'type' => 'varchar',
  192. 'length' => 255,
  193. 'not null' => FALSE,
  194. 'description' => 'Positions held',
  195. )
  196. );
  197. $query = db_update('migrate_example_wine_account')
  198. ->fields(array('positions' => '5'))
  199. ->condition('accountid', 1)
  200. ->execute();
  201. db_update('migrate_example_wine_account')
  202. ->fields(array('positions' => '18'))
  203. ->condition('accountid', 3)
  204. ->execute();
  205. db_update('migrate_example_wine_account')
  206. ->fields(array('positions' => '5,18'))
  207. ->condition('accountid', 9)
  208. ->execute();
  209. $ret[] = t('Added positions field to migrate_example_wine_account table.');
  210. return $ret;
  211. }