| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363 | 
							- <?php
 
- /**
 
-  * @file
 
-  * Migrate module installation
 
-  */
 
- function migrate_schema() {
 
-   $schema = array();
 
-   $schema['migrate_status'] = migrate_schema_status();
 
-   $schema['migrate_log'] = migrate_schema_log();
 
-   return $schema;
 
- }
 
- function migrate_schema_status() {
 
-   return array(
 
-     'description' => 'Status information for migrations',
 
-     'fields' => array(
 
-       'machine_name' => array(
 
-         'type' => 'varchar',
 
-         'length' => 255,
 
-         'not null' => TRUE,
 
-         'description' => 'Unique machine name for migration',
 
-       ),
 
-       'class_name' => array(
 
-         'type' => 'varchar',
 
-         'length' => 255,
 
-         'not null' => TRUE,
 
-         'description' => 'Name of class to instantiate for this migration',
 
-       ),
 
-       'status' => array(
 
-         'type' => 'int',
 
-         'size' => 'tiny',
 
-         'unsigned' => TRUE,
 
-         'not null' => TRUE,
 
-         'default' => 0,
 
-         'description' => 'Current status of migration',
 
-       ),
 
-       'highwater' => array(
 
-         'type' => 'varchar',
 
-         'length' => 255,
 
-         'not null' => TRUE,
 
-         'default' => '',
 
-         'description' => 'Highwater mark for detecting updated content',
 
-       ),
 
-       'arguments' => array(
 
-         'type' => 'blob',
 
-         'not null' => FALSE,
 
-         'size' => 'big',
 
-         'serialize' => TRUE,
 
-         'description' => 'A serialized array of arguments to the migration constructor',
 
-       ),
 
-     ),
 
-     'primary key' => array('machine_name'),
 
-   );
 
- }
 
- function migrate_schema_log() {
 
-   return array(
 
-     'description' => 'History of migration processes',
 
-     'fields' => array(
 
-       'mlid' => array(
 
-         'type' => 'serial',
 
-         'unsigned' => TRUE,
 
-         'not null' => TRUE,
 
-         'description' => 'Primary key for migrate_log table',
 
-       ),
 
-       'machine_name' => array(
 
-         'type' => 'varchar',
 
-         'length' => 255,
 
-         'not null' => TRUE,
 
-         'description' => 'Unique machine name for migration',
 
-       ),
 
-       'process_type' => array(
 
-         'type' => 'int',
 
-         'size' => 'tiny',
 
-         'unsigned' => TRUE,
 
-         'not null' => TRUE,
 
-         'description' => 'Type of migration process - 1 for import, 2 for rollback',
 
-       ),
 
-       'starttime' => array(
 
-         'type' => 'int',
 
-         'size' => 'big',
 
-         'unsigned' => TRUE,
 
-         'not null' => TRUE,
 
-         'description' => 'Begin time of a migration process, times 1000',
 
-       ),
 
-       'endtime' => array(
 
-         'type' => 'int',
 
-         'size' => 'big',
 
-         'unsigned' => TRUE,
 
-         'not null' => FALSE,
 
-         'description' => 'End time of a migration process, times 1000',
 
-       ),
 
-       'initialhighwater' => array(
 
-         'type' => 'varchar',
 
-         'length' => 255,
 
-         'not null' => TRUE,
 
-         'description' => 'Initial highwater mark',
 
-       ),
 
-       'finalhighwater' => array(
 
-         'type' => 'varchar',
 
-         'length' => 255,
 
-         'not null' => FALSE,
 
-         'description' => 'Final highwater mark',
 
-       ),
 
-       'numprocessed' => array(
 
-         'type' => 'int',
 
-         'unsigned' => TRUE,
 
-         'not null' => FALSE,
 
-         'description' => 'Number of items processed',
 
-       ),
 
-     ),
 
-     'primary key' => array('mlid'),
 
-   );
 
- }
 
- /**
 
-  * Implements hook_uninstall().
 
-  * Drop map/message tables, in case implementing classes did not.
 
-  */
 
- function migrate_uninstall() {
 
-   // Note: If a derived Migration class defined its own map or message
 
-   // table name not fitting this pattern, that class is solely responsible for
 
-   // cleaning up
 
-   // TODO: Prefix table names (db_find_tables does not do it)
 
-   foreach (db_find_tables('migrate_map_%') as $tablename) {
 
-     db_drop_table($tablename);
 
-   }
 
-   foreach (db_find_tables('migrate_message_%') as $tablename) {
 
-     db_drop_table($tablename);
 
-   }
 
-   // Remove any file_usage entries we've written
 
-   if (db_table_exists('file_usage')) {
 
-     db_delete('file_usage')
 
-       ->condition('module', 'migrate')
 
-       ->execute();
 
-   }
 
- }
 
- /**
 
-  * Add highwater mark
 
-  */
 
- function migrate_update_7001() {
 
-   $ret = array();
 
-   if (!db_field_exists('migrate_status', 'highwater')) {
 
-     db_add_field('migrate_status', 'highwater', array(
 
-           'type' => 'varchar',
 
-           'length' => 255,
 
-           'not null' => TRUE,
 
-           'default' => '',
 
-           'description' => 'Highwater mark for detecting updated content',
 
-         )
 
-     );
 
-   }
 
-   $ret[] = t('Added highwater column to migrate_status table');
 
-   return $ret;
 
- }
 
- /**
 
-  * Add last_imported field to all map tables
 
-  */
 
- function migrate_update_7002() {
 
-   $ret = array();
 
-   foreach (db_find_tables('migrate_map_%') as $tablename) {
 
-     if (!db_field_exists($tablename, 'last_imported')) {
 
-       db_add_field($tablename, 'last_imported', array(
 
-         'type' => 'int',
 
-         'unsigned' => TRUE,
 
-         'not null' => TRUE,
 
-         'default' => 0,
 
-         'description' => 'UNIX timestamp of the last time this row was imported',
 
-       ));
 
-     }
 
-   }
 
-   $ret[] = t('Added last_imported column to all map tables');
 
-   return $ret;
 
- }
 
- /**
 
-  * Add lastthroughput column to migrate_status
 
-  */
 
- function migrate_update_7003() {
 
-   $ret = array();
 
-   if (!db_field_exists('migrate_status', 'lastthroughput')) {
 
-     db_add_field('migrate_status', 'lastthroughput', array(
 
-         'type' => 'int',
 
-         'length' => 11,
 
-         'not null' => FALSE,
 
-         'description' => 'Rate of success during most recent completed import (# per minute)',
 
-       )
 
-     );
 
-   }
 
-   $ret[] = t('Added lastthroughput column to migrate_status table');
 
-   return $ret;
 
- }
 
- /**
 
-  * Convert lastimported datetime field to lastimportedtime int field.
 
-  */
 
- function migrate_update_7004() {
 
-   $ret = array();
 
-   if (!db_field_exists('migrate_status', 'lastimportedtime')) {
 
-     db_add_field('migrate_status', 'lastimportedtime', array(
 
-         'type' => 'int',
 
-         'unsigned' => TRUE,
 
-         'not null' => FALSE,
 
-         'description' => 'Date and time of last completed import',
 
-       )
 
-     );
 
-     if (!db_field_exists('migrate_status', 'lastimported')) {
 
-       $result = db_select('migrate_status', 'ms')
 
-                 ->fields('ms', array('machine_name', 'lastimported'))
 
-                 ->execute();
 
-       foreach ($result as $row) {
 
-         $lastimportedtime = strtotime($row->lastimported);
 
-         db_update('migrate_status')
 
-           ->fields(array('lastimportedtime' => $lastimportedtime))
 
-           ->condition('machine_name', $row->machine_name)
 
-           ->execute();
 
-       }
 
-       db_drop_field('migrate_status', 'lastimported');
 
-       $ret[] = t('Converted lastimported datetime field to lastimportedtime int field');
 
-     }
 
-   }
 
-   return $ret;
 
- }
 
- /**
 
-  * Add support for history logging
 
-  */
 
- function migrate_update_7005() {
 
-   $ret = array();
 
-   if (!db_table_exists('migrate_log')) {
 
-     $ret[] = t('Create migrate_log table');
 
-     db_create_table('migrate_log', migrate_schema_log());
 
-     $ret[] = t('Remove historic columns from migrate_status table');
 
-     db_drop_field('migrate_status', 'lastthroughput');
 
-     db_drop_field('migrate_status', 'lastimportedtime');
 
-   }
 
-   return $ret;
 
- }
 
- /**
 
-  * Add and populate class_name field. Any existing migration code using
 
-  * dependencies or sourceMigration() must be changed! See CHANGELOG.txt.
 
-  */
 
- function migrate_update_7006() {
 
-   $ret = array();
 
-   if (!db_field_exists('migrate_status', 'class_name')) {
 
-     db_add_field('migrate_status', 'class_name', array(
 
-           'type' => 'varchar',
 
-           'length' => 255,
 
-           'not null' => TRUE,
 
-           'default' => '',
 
-           'description' => 'Name of class to instantiate for this migration',
 
-         )
 
-     );
 
-     db_query("UPDATE {migrate_status}
 
-               SET class_name = CONCAT(machine_name, 'Migration')
 
-              ");
 
-     $ret[] = t('Added class_name column to migrate_status table');
 
-   }
 
-   return $ret;
 
- }
 
- /**
 
-  * Add arguments field to migrate_status table.
 
-  */
 
- function migrate_update_7007() {
 
-   $ret = array();
 
-   if (!db_field_exists('migrate_status', 'arguments')) {
 
-     db_add_field('migrate_status', 'arguments', array(
 
-           'type' => 'blob',
 
-           'not null' => FALSE,
 
-           'size' => 'big',
 
-           'serialize' => TRUE,
 
-           'description' => 'A serialized array of arguments to the migration constructor',
 
-           )
 
-     );
 
-     $ret[] = t('Added arguments column to migrate_status table');
 
-   }
 
-   return $ret;
 
- }
 
- /**
 
-  * Update map tables to reflect change of needs_update to a status column.
 
-  */
 
- function migrate_update_7008() {
 
-   // Updates can be run when the module is disabled, which would mean the
 
-   // call to migrate_migrations() will fail. Just bail in that case...
 
-   if (!module_exists('migrate')) {
 
-     throw new DrupalUpdateException(t('This update cannot be run while the Migrate ' .
 
-       'module is disabled - you must enable Migrate to run this update.'));
 
-   }
 
-   $ret = array();
 
-   foreach (migrate_migrations() as $migration) {
 
-     if (is_a($migration, 'Migration')) {
 
-       // Since we're now tracking failed/ignored rows in the map table,
 
-       // destination keys need to be nullable
 
-       $map = $migration->getMap();
 
-       $map_connection = $map->getConnection();
 
-       $map_table = $map->getMapTable();
 
-       $destination = $migration->getDestination();
 
-       $key_schema = $destination->getKeySchema();
 
-       $index = 1;
 
-       foreach ($key_schema as $field_schema) {
 
-         $field = 'destid' . $index++;
 
-         $field_schema['not null'] = FALSE;
 
-         $map_connection->schema()->changeField($map_table, $field, $field,
 
-                                                $field_schema);
 
-         $ret[] = t('Changed !table.!field to be non-null',
 
-           array('!table' => $map_table, '!field' => $field));
 
-       }
 
-       // Add any existing failures to the map table
 
-       $msg_table = $map->getMessageTable();
 
-       $msg_marked = FALSE;
 
-       $result = $map_connection->select($msg_table, 'msg')
 
-                 ->fields('msg')
 
-                 ->condition('level', Migration::MESSAGE_INFORMATIONAL, '<>')
 
-                 ->execute();
 
-       foreach ($result as $row) {
 
-         $keys = array();
 
-         $index = 1;
 
-         foreach ($row as $field => $value) {
 
-           if (drupal_substr($field, 0, 8) == 'sourceid') {
 
-             $keys['sourceid' . $index++] = $value;
 
-           }
 
-         }
 
-         $map_connection->merge($map_table)
 
-                        ->key($keys)
 
-                        ->fields(array('needs_update' => MigrateMap::STATUS_FAILED))
 
-                        ->execute();
 
-         $msg_marked = TRUE;
 
-       }
 
-       if ($msg_marked) {
 
-         $ret[] = t('Marked failures in !table', array('!table' => $map_table));
 
-       }
 
-     }
 
-   }
 
-   return $ret;
 
- }
 
- /**
 
-  * Warn that there have been incompatible changes to file handling.
 
-  */
 
- function migrate_update_7201() {
 
-   return t('File field and destination handling has been completely refactored
 
-     - if you are migrating files, you will need to change your migration
 
-     implementation to reflect these changes. Please see
 
-     <a href="@doc">Handling files in Drupal 7</a> for more information',
 
-     array('@doc' => 'http://drupal.org/node/1540106'));
 
- }
 
 
  |