1 Differences visible to users/implementors:
3 Field handlers have no $field_info parameter in D6
5 D6 has no machine names for vocabularies - the D6 migrate module will basically
6 generate one from the the user-visible name (lower-case, spaces=>underscores),
7 there is a small risk of collision as a result if vocabulary names differ only
8 in punctuation and/or case.
11 Conventions to make porting changes between Drupal 6 and Drupal 7 easier:
13 Try to always use specific DBTNG functions such as db_select() instead of the more
14 general db_query(), which needs to be renamed to dbtng_query() under Drupal 6.
17 TODOs for initial backport to Drupal 6:
19 Most of the visible differences above can probably be eliminated
20 MigrateDestinationTerm constructor takes name instead of machine name as a
21 parameter, should use a generated machine name.
22 node.inc: Retrieve attached fields in fields()
23 comment.inc: Changes needed for D6 comment_save() (form assumptions)
24 fields.inc: File API changes
34 D6 requires explicit install/uninstall of schema
35 D6 implements hook_requirements() to verify autoload 2 is present.
38 Rollback/wipe need to run as uid 1 in D6
41 D6 dependent on autoload/dbtng
48 migrate_field_handler_invoke_all() has no $field_info parameter in D6
49 migrate_watchdog() disabled in D6 (review)
52 No second chance (drupal_static_reset) on low memory in D6
54 plugins/destinations/comment.inc:
55 Field differences: timestamp vs. created/changed
56 No fields on comments in D6
57 Differences in node_comment_statistics query
58 Table name (comments/comment)
59 comment_save takes array in D6.
61 plugins/destinations/fields.inc:
62 Handlers have both $instance and $field_info on D7, $instance only on D6
63 Field arrays keyed by language on D7 only
64 Fields only apply to nodes in D6
65 No taxonomy_term_reference in D6
67 plugins/destinations/node.inc:
69 Teaser field in D6 only.
70 Body is a field API field in D7.
71 No node_object_prepare() in D6.
73 plugins/destinations/term.inc:
74 Fields only apply to nodes in D6.
75 Taxonomy API differences
77 plugins/destinations/user.inc:
78 Fields only apply to nodes in D6.
80 plugins/sources/sqlmap.inc:
81 db_table_exists/dbtng_table_exists
83 migrate_example/beer.inc:
84 Destination term specified by visible name instead of (non-existent) machine
86 No fields on users in D6.
87 Node IDs not preserved in D6.
88 Teaser is its own field in D6, not a body argument.
90 migrate_example/beer.install.inc:
91 No image field in D6 (yet)
92 Taxonomy API differences.
93 Vocabulary not a field in D6.
94 Difference in node_type_save parameter.
95 No node_add_body_field() in D6.
96 No user fields (gender, favs) in D6.
97 Field/CCK API differences.
99 migrate_example/migrate_example.info:
100 D6 dependent on content
102 migrate_example/migrate_example.install:
103 No DRUPAL_ROOT for required files in D6
104 No API for format creation in D6
106 migrate_example/wine.inc:
107 Destination term specified by visible name instead of (non-existent) machine
109 No fields on users in D6.
110 Teaser is its own field in D6, not a body argument.
111 Comment field differences
113 migrate_example/wine.install.inc:
114 No image field in D6 (yet)
115 Taxonomy API differences.
116 Vocabulary not a field in D6.
117 Difference in node_type_save parameter.
118 No node_add_body_field() in D6.
119 No user fields (gender, favs) in D6.
120 Field/CCK API differences.
122 migrate_ui/migrate_ui.module:
123 hook_perm() vs. hook_permission()
125 migrate_ui/migrate_ui.pages.inc:
126 D6 uses drupal_get_form(), D7 returns form array directly
127 D6 uses theme_table(), D7 uses '#theme' => 'table', ditto for item_list
128 No vertical tabs in D6
130 Classes passed as arrays in D7