Migrate 2.0 Beta 3
==================
+
Features and enhancements
+
+- #989200 - Support "dynamic" migrations. Changes to be aware of:
+ All modules implementing migration classes must now implement hook_migrate_api()
+ (see migrate_migrate_api() for an example).
+ Dependencies and sourceMigrations must now be expressed in terms of
+ machine name rather than class name.
+ MigrationBase::getInstance now takes a machine name rather than a class name.
+ Migration class names are no longer required to end in 'Migration'.
+
+Add logging of fetch queries and dqp() function to translate DBTNG query object into full SQL.
Inherit default settings for promote, sticky, status, status from content type
configuration. Already done in D7.
Add arguments method for MigrateTermNodeHandler class
+Add dedupe() method for a field mapping.
+maintainStatistics business removed from comment import.
+Default comments to published status
Bug fixes
-- #990960- Initialize fields array for profiles
+
+Avoid notice in user.inc
+- #990960 - Initialize fields array for profiles
+- #839770 - Notice: Undefined property: stdClass:: in forum_node_presave() when
+ generating forum nodes.
- #984294 - Make migrate dashbard a local task.
needs_update => needs-update to match drush conventions.
+Inherit default settings for promote, sticky, status, status from content type
+ configuration. Already done in D7.
+- #898622 - Undefined variable in MigrateDestinationNode::import()
+- #839770 - Notice: Undefined property: stdClass:: in forum_node_presave() when
+ generating forum nodes.
+- #990960 - Initialize fields array for profiles
+- #983968 - Bogus settings of ->uid
Migrate 2.0 Beta 2
==================
* General initialization of a MigrationBase object.
*/
public function __construct() {
- // Construct the machine name by stripping Migration from our class name
- $class = get_class($this);
- $this->machineName = substr($class, 0, strlen($class) - strlen('Migration'));
-
+ $this->machineName = $this->generateMachineName();
+
+ // Make sure migrate_status record exists
+ $class_name = db_select('migrate_status', 'ms')
+ ->fields('ms', array('class_name'))
+ ->condition('machine_name', $this->machineName)
+ ->execute()
+ ->fetchField();
+ if (!$class_name) {
+ db_insert('migrate_status')
+ ->fields(array(
+ 'machine_name' => $this->machineName,
+ 'class_name' => get_class($this),
+ 'arguments' => serialize($arguments),
+ ))
+ ->execute();
+ }
// Record the memory limit in bytes
$limit = trim(ini_get('memory_limit'));
$last = strtolower($limit[strlen($limit)-1]);
}
/**
- * Return the instance of the given class.
+ * By default, construct the machine name by stripping Migration from our class name
*/
- static public function getInstance($class_name) {
- // Otherwise might miss cache hit on case difference
- $class_name = strtolower($class_name);
- if (!isset(self::$migrations[$class_name])) {
- self::$migrations[$class_name] = new $class_name;
+ protected function generateMachineName() {
+ $class = get_class($this);
+ return substr($class, 0, strlen($class) - strlen('Migration'));
+ }
+
+ /**
+ * Return the single instance of the given class.
+ *
+ * @param string $machine_name
+ */
+ static public function getInstance($machine_name) {
+ $row = db_select('migrate_status', 'ms')
+ ->fields('ms', array('class_name', 'arguments'))
+ ->condition('machine_name', $machine_name)
+ ->execute()
+ ->fetchObject();
+ if ($row) {
+ $class_name = $row->class_name;
+ $arguments = unserialize($row->arguments);
+ }
+ else {
+ $class_name = $machine_name . 'Migration';
+ $arguments = array();
}
- return self::$migrations[$class_name];
}
/**
$this->status = $newStatus;
db_merge('migrate_status')
->key(array('machine_name' => $this->machineName))
- ->fields(array('status' => $newStatus))
+ ->fields(array('class_name' => get_class($this), 'status' => $newStatus))
->execute();
// Set an error handler for imports
}
if ($this->processing) {
$this->status = MigrationBase::STATUS_IDLE;
- $fields = array('status' => MigrationBase::STATUS_IDLE);
+ $fields = array('class_name' => get_class($this), 'status' => MigrationBase::STATUS_IDLE);
db_merge('migrate_status')
->key(array('machine_name' => $this->machineName))
->fields($fields)
/**
* General initialization of a Migration object.
*/
- public function __construct() {
- parent::__construct();
+ public function __construct(array $arguments = array()) {
+ parent::__construct($arguments);
}
////////////////////////////////////////////////////////////////////
// Validate input and load Migration(s).
if ($name) {
- if ($migration = MigrationBase::getInstance($name . 'Migration')) {
+ if ($migration = MigrationBase::getInstance($name)) {
$migrations = array($migration);
}
else {
$args = func_get_args();
$machine_name = array_shift($args);
// First, see if it matches a migration class
- $class_name = $machine_name . 'Migration';
- if (class_exists($class_name)) {
- $migration = MigrationBase::getInstance($class_name);
+ $migration = MigrationBase::getInstance($class_name);
+ if ($migration) {
$destination = $migration->getDestination();
}
else {
- // No match, try a destination class
- // TODO: Client implementations won't follow this naming convention - look
- // for subclasses of MigrateDestinationEntity and match entityType?
- $class_name = 'MigrateDestination' . $machine_name;
- if (class_exists($class_name)) {
- $bundle = array_shift($args);
- $destination = new $class_name($bundle);
- }
- else {
- drush_log(dt('No class found matching !machine_name',
- array('!machine_name' => $machine_name)),
- 'error');
- return;
- }
+ drush_log(dt('No migration found matching !machine_name',
+ array('!machine_name' => $machine_name)),
+ 'error');
+ return;
}
if (method_exists($destination, fields)) {
$table = array();
try {
$args = func_get_args();
$machine_name = array_shift($args);
- // See if it matches a migration class
- $class_name = $machine_name . 'Migration';
- if (class_exists($class_name)) {
- $migration = MigrationBase::getInstance($class_name);
- }
- else {
+ $migration = MigrationBase::getInstance($machine_name);
+ if (!$migration) {
return drush_set_error(dt('No class found matching !machine_name',
array('!machine_name' => $machine_name)));
}
function drush_migrate_get_migrations($args) {
static $migration_objects;
+ $migration_objects = migrate_migrations();
+
if ($start = drush_get_option('all')) {
// Handle custom first migration when --all=foo is supplied.
$seen = $start === TRUE ? TRUE : FALSE;
- $migration_objects = migrate_migrations();
foreach ($migration_objects as $name => $migration) {
if (!$seen && (strtolower($start) . 'migration' == strtolower($name))) {
// We found our starting migration. $seen is always TRUE now.
}
}
else {
- if (!isset($migration_objects)) {
- foreach (explode(',', $args) as $name) {
- $class_name = $name . 'Migration';
- $migration = MigrationBase::getInstance($class_name);
- if ($migration->getEnabled()) {
- $migration_objects[$name] = $migration;
- }
+ $named_migrations = array();
+ foreach (explode(',', $args) as $name) {
+ $migration = $migration_objects[$name];
+ if ($migration->getEnabled()) {
+ $named_migrations[$name] = $migration;
}
}
+ $migration_objects = $named_migrations;
}
return $migration_objects;
}
if (empty($args)) {
return drush_set_error(NULL, dt('You must specify either a migration name or the -all option'));
}
- $machine_names = explode(',', strtolower($args));
+ $machine_names = explode(',', $args);
foreach ($machine_names as $machine_name) {
- if (!class_exists($machine_name . 'Migration')) {
+ $class_name = db_select('migrate_status', 'ms')
+ ->fields('ms', array('class_name'))
+ ->condition('machine_name', $machine_name)
+ ->execute()
+ ->fetchField();
+ if (!$class_name || !class_exists($class_name)) {
drush_set_error(dt('Unrecognized migration: !name', array('!name' => $machine_name)));
}
}
'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',
'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'),
);
db_drop_field($ret, 'migrate_status', 'lastimportedtime');
return $ret;
}
+
+/**
+ * Add and populate class_name field, and add arguments field. Any existing
+ * migration code using dependencies or sourceMigration() must be changed!
+ * See CHANGELOG.txt.
+ */
+function migrate_update_6003() {
+ $ret = array();
+ db_add_field($ret, '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')
+ ");
+
+ db_add_field($ret, 'migrate_status', 'arguments', array(
+ 'type' => 'blob',
+ 'not null' => FALSE,
+ 'size' => 'big',
+ 'serialize' => TRUE,
+ 'description' => 'A serialized array of arguments to the migration constructor',
+ )
+ );
+
+ return $ret;
+}
* Array of migration objects, keyed by the class name.
*/
function migrate_migrations($refresh = FALSE) {
- return _migrate_class_list('%Migration', 'MigrationBase', $refresh);
+ // First, get a list of all Migration classes as a starting point. Note
+ // we set up PHP errors to be handled by throwing exceptions, so we can deal
+ // with migrations that have parameters and thus can't be instantiated here.
+// $error_handler = set_error_handler('migrate_exception_error_handler');
+ $migrations = _migrate_class_list('%Migration', 'MigrationBase', $refresh);
+// set_error_handler($error_handler);
+
+ // Then, let modules add instances of dynamic migrations, and perhaps remove
+ // the classes underlying them
+ drupal_alter('migrations', $migrations);
+ return $migrations;
+}
+
+function migrate_exception_error_handler($errno, $errstr, $errfile, $errline ) {
+ throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
/**
// Validate it's an implemented subclass of the parent class
$class = new ReflectionClass($record->name);
if (!$class->isAbstract() && $class->isSubclassOf($parent_class)) {
- if ($parent_class == 'Migration') {
- $object = Migration::getInstance($record->name);
+ if ($parent_class == 'MigrationBase') {
+ $machine_name = substr($record->name, 0, strlen($record->name) - strlen('Migration'));
+ $object = Migration::getInstance($machine_name);
}
else {
- $object = new $record->name;
- }
- $dependencies = $object->getDependencies();
- if (count($dependencies) > 0) {
- // Set classes with dependencies aside for reordering
- $dependent_classes[$record->name] = $object;
- $required_classes += $dependencies;
+ // If the constructor has required parameters, this may fail. We will
+ // silently ignore - it is up to the implementor of such a class to
+ // instantiate it in hook_migrations_alter().
+ try {
+ $object = new $record->name;
+ }
+ catch (Exception $e) {
+ }
}
- else {
- // No dependencies, just add
- $class_lists[$class_pattern][$record->name] = $object;
+ if (isset($object)) {
+ $dependencies = $object->getDependencies();
+ if (count($dependencies) > 0) {
+ // Set classes with dependencies aside for reordering
+ $dependent_classes[$record->name] = $object;
+ $required_classes += $dependencies;
+ }
+ else {
+ // No dependencies, just add
+ $class_lists[$class_pattern][$record->name] = $object;
+ }
}
}
}
// Validate that each depended-on class at least exists
foreach ($required_classes as $class_name) {
+ // Dependencies expressed as machine names, restore class name
+ $class_name .= 'Migration';
if ((!isset($dependent_classes[$class_name])) && !isset($class_lists[$class_pattern][$class_name])) {
throw new MigrateException(t('Dependency on non-existent class !class - make sure ' .
'you have added the file defining !class to the .info file.',
// Scan all the dependencies for this class and make sure they're all
// in the final list
foreach ($object->getDependencies() as $dependency) {
+ // Convert machine name to class name
+ $dependency .= 'Migration';
if (!isset($class_lists[$class_pattern][$dependency])) {
$ready = FALSE;
break;
// You may optionally declare dependencies for your migration - other migrations
// which should run first. In this case, terms assigned to our nodes and
// the authors of the nodes should be migrated before the nodes themselves.
- $this->dependencies = array('BeerTermMigration', 'BeerUserMigration');
+ $this->dependencies = array('BeerTerm', 'BeerUser');
$this->map = new MigrateSQLMap($this->machineName,
array(
// find a corresponding uid for the aid, the owner will be the administrative
// account.
$this->addFieldMapping('uid', 'aid')
- ->sourceMigration('BeerUserMigration')
+ ->sourceMigration('BeerUser')
->defaultValue(1);
// This is a multi-value text field
public function __construct() {
parent::__construct();
$this->description = 'Comments about beers';
- $this->dependencies = array('BeerUserMigration', 'BeerNodeMigration');
+ $this->dependencies = array('BeerUser', 'BeerNode');
$this->map = new MigrateSQLMap($this->machineName,
array('cid' => array(
'type' => 'int',
// Map the incoming beer ID to the resulting Drupal nid
$this->addFieldMapping('nid', 'bid')
- ->sourceMigration('BeerNodeMigration');
+ ->sourceMigration('BeerNode');
$this->addFieldMapping('uid', 'aid')
- ->sourceMigration('BeerUserMigration')
+ ->sourceMigration('BeerUser')
->defaultValue(0);
$this->addFieldMapping('pid', 'cid_parent')
- ->sourceMigration('BeerCommentMigration')
+ ->sourceMigration('BeerComment')
->description('Parent comment.');
$this->addFieldMapping('comment', 'body');
// case, we want the wine migrations to appear after the beer migrations -
// without this line, they would be intermingled due to their lack of
// (formal) interdependencies.
- $this->softDependencies = array('BeerCommentMigration');
+ $this->softDependencies = array('BeerComment');
}
// Define isComplete(), returning a boolean, to indicate whether dependent
// migrations may proceed
public function __construct($type, $vocabulary_name, $description) {
parent::__construct();
$this->description = $description;
- $this->dependencies = array('WinePrepMigration');
+ $this->dependencies = array('WinePrep');
$this->map = new MigrateSQLMap($this->machineName,
array(
'categoryid' => array('type' => 'int',
public function __construct() {
parent::__construct();
$this->description = t('Wine Drinkers of the world');
- $this->dependencies = array('WinePrepMigration');
+ $this->dependencies = array('WinePrep');
$this->map = new MigrateSQLMap($this->machineName,
array('accountid' => array(
'type' => 'int',
public function __construct() {
parent::__construct();
$this->description = t('Wine producers of the world');
- $this->dependencies = array('WineRegionMigration', 'WineUserMigration');
+ $this->dependencies = array('WineRegion', 'WineUser');
$this->map = new MigrateSQLMap($this->machineName,
array(
$this->addFieldMapping('title', 'name')
->description(t('Mapping producer name in source to node title'));
$this->addFieldMapping('uid', 'accountid')
- ->sourceMigration('WineUserMigration')
+ ->sourceMigration('WineUser')
->defaultValue(1);
$this->addFieldMapping('Migrate Example Wine Regions', 'region')
- ->sourceMigration('WineRegionMigration')
+ ->sourceMigration('WineRegion')
->arguments(array('source_type' => 'tid'));
$this->addFieldMapping('body', 'body');
$this->addFieldMapping('teaser', 'excerpt');
public function __construct() {
parent::__construct();
$this->description = t('XML feed of wine producers of the world');
- $this->dependencies = array('WineRegionMigration', 'WineUserMigration');
+ $this->dependencies = array('WineRegion', 'WineUser');
// There isn't a consistent way to automatically identify appropriate "fields"
// from an XML feed, so we pass an explicit list of source fields
->xpath('/producer/name');
$this->addFieldMapping('uid', 'authorid')
->xpath('/producer/authorid')
- ->sourceMigration('WineUserMigration')
+ ->sourceMigration('WineUser')
->defaultValue(1);
$this->addFieldMapping('Migrate Example Wine Regions', 'region')
->xpath('/producer/region');
public function __construct() {
parent::__construct();
$this->description = t('Wines of the world');
- $this->dependencies = array('WineVarietyMigration', 'WineRegionMigration',
- 'WineBestWithMigration', 'WineUserMigration', 'WineProducerMigration');
+ $this->dependencies = array('WineVariety', 'WineRegion',
+ 'WineBestWith', 'WineUser', 'WineProducer');
$this->map = new MigrateSQLMap($this->machineName,
array(
$this->addFieldMapping('title', 'name')
->description(t('Mapping wine name in source to node title'));
$this->addFieldMapping('uid', 'accountid')
- ->sourceMigration('WineUserMigration')
+ ->sourceMigration('WineUser')
->defaultValue(1);
// TIP: By default, term relationship are assumed to be passed by name.
// In this case, the source values are IDs, so we specify the relevant
// migration (so the tid can be looked up in the map), and tell the term
// field handler that it is receiving tids instead of names
$this->addFieldMapping('Migrate Example Wine Varieties', 'variety')
- ->sourceMigration('WineVarietyMigration')
+ ->sourceMigration('WineVariety')
->arguments(array('source_type' => 'tid'));
$this->addFieldMapping('Migrate Example Wine Regions', 'region')
- ->sourceMigration('WineRegionMigration')
+ ->sourceMigration('WineRegion')
->arguments(array('source_type' => 'tid'));
$this->addFieldMapping('Migrate Example Wine Best With', 'best_with')
->separator(',')
- ->sourceMigration('WineBestWithMigration')
+ ->sourceMigration('WineBestWith')
->arguments(array('source_type' => 'tid'));
$this->addFieldMapping('field_migrate_example_wine_ratin', 'rating');
$this->addFieldMapping('field_migrate_example_wine_rvw', 'last_reviewed');
public function __construct() {
parent::__construct();
$this->description = 'Comments about wines';
- $this->dependencies = array('WineUserMigration', 'WineWineMigration');
+ $this->dependencies = array('WineUser', 'WineWine');
$this->map = new MigrateSQLMap($this->machineName,
array('commentid' => array(
'type' => 'int',
$this->addFieldMapping('status')
->defaultValue(COMMENT_PUBLISHED);
$this->addFieldMapping('nid', 'wineid')
- ->sourceMigration('WineWineMigration');
+ ->sourceMigration('WineWine');
$this->addFieldMapping('uid', 'accountid')
- ->sourceMigration('WineUserMigration')
+ ->sourceMigration('WineUser')
->defaultValue(0);
$this->addFieldMapping('pid', 'comment_parent')
- ->sourceMigration('WineCommentMigration')
+ ->sourceMigration('WineComment')
->description('Parent comment');
$this->addFieldMapping('comment', 'body');
$this->addFieldMapping('hostname', 'commenthost');
parent::__construct();
$this->description = t('If auto_nodetitle is present and was previously enabled,
re-enable it');
- $this->dependencies = array('WineCommentMigration');
+ $this->dependencies = array('WineComment');
}
public function isComplete() {
if (module_exists('auto_nodetitle')) {
public function __construct() {
parent::__construct();
$this->description = t('Update wine ratings');
- $this->dependencies = array('WineWineMigration');
- $this->softDependencies = array('WineFinishMigration');
+ $this->dependencies = array('WineWine');
+ $this->softDependencies = array('WineFinish');
$this->map = new MigrateSQLMap($this->machineName,
array(
// has a source id, not a nid, we need to apply the original wine migration
// mapping to populate the nid.
$this->addFieldMapping('nid', 'wineid')
- ->sourceMigration('WineWineMigration');
+ ->sourceMigration('WineWine');
$this->addFieldMapping('field_migrate_example_wine_ratin', 'rating');
// No unmapped source fields
public function __construct() {
parent::__construct();
$this->description = 'Update wine comments';
- $this->dependencies = array('WineCommentMigration');
- $this->softDependencies = array('WineUpdatesMigration');
+ $this->dependencies = array('WineComment');
+ $this->softDependencies = array('WineUpdates');
$this->map = new MigrateSQLMap($this->machineName,
array('commentid' => array(
'type' => 'int',
// Mapped fields
$this->addFieldMapping('cid', 'commentid')
- ->sourceMigration('WineCommentMigration');
+ ->sourceMigration('WineComment');
$this->addFieldMapping('subject', 'subject');
// No unmapped source fields
public function __construct() {
parent::__construct();
$this->description = t('Migrate varieties from the source database to taxonomy terms');
- $this->dependencies = array('WineVarietyMigration');
- $this->softDependencies = array('WineUpdatesMigration');
+ $this->dependencies = array('WineVariety');
+ $this->softDependencies = array('WineUpdates');
$this->map = new MigrateSQLMap($this->machineName,
array(
'categoryid' => array('type' => 'int',
// Mapped fields
$this->addFieldMapping('tid', 'categoryid')
- ->sourceMigration('WineVarietyMigration');
+ ->sourceMigration('WineVariety');
$this->addFieldMapping('description', 'details');
// Unmapped source fields
public function __construct() {
parent::__construct();
$this->description = t('Account updates');
- $this->dependencies = array('WineUserMigration');
- $this->softDependencies = array('WineUpdatesMigration');
+ $this->dependencies = array('WineUser');
+ $this->softDependencies = array('WineUpdates');
$this->map = new MigrateSQLMap($this->machineName,
array('accountid' => array(
'type' => 'int',
// Mapped fields
$this->addFieldMapping('uid', 'accountid')
- ->sourceMigration('WineUserMigration');
+ ->sourceMigration('WineUser');
// Unmapped source fields
// A menu load callback.
function migration_load($machine_name) {
if ($machine_name) {
- $class_name = $machine_name . 'Migration';
- return Migration::getInstance($class_name);
+ return Migration::getInstance($machine_name);
}
}
}
function testCommentImport() {
- $migration = Migration::getInstance('WineVarietyMigration');
+ $migration = Migration::getInstance('WineVariety');
$result = $migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
t('Variety term import returned RESULT_COMPLETED'));
- $migration = Migration::getInstance('WineRegionMigration');
+ $migration = Migration::getInstance('WineRegion');
$result = $migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
t('Region term import returned RESULT_COMPLETED'));
- $migration = Migration::getInstance('WineBestWithMigration');
+ $migration = Migration::getInstance('WineBestWith');
$result = $migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
t('"Best With" term import returned RESULT_COMPLETED'));
- $migration = Migration::getInstance('WineUserMigration');
+ $migration = Migration::getInstance('WineUser');
$result = $migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
t('User import returned RESULT_COMPLETED'));
- $migration = Migration::getInstance('WineProducerMigration');
+ $migration = Migration::getInstance('WineProducer');
$result = $migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
t('Producer node import returned RESULT_COMPLETED'));
- $migration = Migration::getInstance('WineWineMigration');
+ $migration = Migration::getInstance('WineWine');
$result = $migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
t('Wine node import returned RESULT_COMPLETED'));
- $migration = Migration::getInstance('WineCommentMigration');
+ $migration = Migration::getInstance('WineComment');
$result = $migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
t('Comment import returned RESULT_COMPLETED'));
$this->assertEqual($comment->mail, $row->mail, t('Mail matches'));
$this->assertEqual($comment->name, $row->name, t('Name matches'));
$this->assertEqual($comment->status, COMMENT_PUBLISHED, t('Status matches'));
- $wine_migration = MigrationBase::getInstance('WineWineMigration');
+ $wine_migration = MigrationBase::getInstance('WineWine');
$destid = $wine_migration->getMap()->lookupDestinationID(array($row->wineid), $migration);
$this->assertEqual($comment->nid, reset($destid), t('Nid matches'));
$this->assertEqual($comment->comment, $row->body, t('Body matches'));
$comment = $comments['im child'];
$row = $rows['im child'];
- $user_migration = MigrationBase::getInstance('WineUserMigration');
+ $user_migration = MigrationBase::getInstance('WineUser');
$destid = $user_migration->getMap()->lookupDestinationID(array($row->accountid), $migration);
$this->assertEqual($comment->uid, reset($destid), t('Uid matches'));
$this->assertEqual($comment->pid, $comments['im parent']->cid, t('Parent matches'));
}
function testNodeImport() {
- $migration = Migration::getInstance('WineVarietyMigration');
+ $migration = Migration::getInstance('WineVariety');
$result = $migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
t('Variety term import returned RESULT_COMPLETED'));
- $migration = Migration::getInstance('WineRegionMigration');
+ $migration = Migration::getInstance('WineRegion');
$result = $migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
t('Region term import returned RESULT_COMPLETED'));
- $migration = Migration::getInstance('WineBestWithMigration');
+ $migration = Migration::getInstance('WineBestWith');
$result = $migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
t('"Best With" term import returned RESULT_COMPLETED'));
- $migration = Migration::getInstance('WineUserMigration');
+ $migration = Migration::getInstance('WineUser');
$result = $migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
t('User import returned RESULT_COMPLETED'));
- $migration = Migration::getInstance('WineProducerMigration');
+ $migration = Migration::getInstance('WineProducer');
$result = $migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
t('Producer node import returned RESULT_COMPLETED'));
- $migration = Migration::getInstance('WineWineMigration');
+ $migration = Migration::getInstance('WineWine');
$result = $migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
t('Wine node import returned RESULT_COMPLETED'));
$producer_row = $producer_rows['Montes'];
$wine_node = $wine_nodes['Montes Classic Cabernet Sauvignon'];
$wine_row = $wine_rows['Montes Classic Cabernet Sauvignon'];
- $user_migration = MigrationBase::getInstance('WineUserMigration');
+ $user_migration = MigrationBase::getInstance('WineUser');
$mapped_uid = $user_migration->getMap()->lookupDestinationID(
array($producer_row->accountid), $migration);
t('teaser properly migrated'));
// Taxonomy terms - single and multiple
- $variety_migration = MigrationBase::getInstance('WineVarietyMigration');
+ $variety_migration = MigrationBase::getInstance('WineVariety');
$mapped_tid = $variety_migration->getMap()->lookupDestinationID(
array($wine_row->variety), $migration);
if (is_array($mapped_tid)) {
$this->error(t('Variety !var not migrated', array('!var' => $wine_row->variety)));
}
- $best_with_migration = MigrationBase::getInstance('WineBestWithMigration');
+ $best_with_migration = MigrationBase::getInstance('WineBestWith');
$source_ids = explode(',', $wine_row->best_with);
$mapped_tids = array();
foreach ($source_ids as $source_id) {
->condition('wineid', 2)
->execute();
- $migration = Migration::getInstance('WineWineMigration');
+ $migration = Migration::getInstance('WineWine');
$result = $migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
}
function testTermImport() {
- $migration = Migration::getInstance('WineVarietyMigration');
+ $migration = Migration::getInstance('WineVariety');
$result = $migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
t('Variety term import returned RESULT_COMPLETED'));
foreach ($tempterms as $tid => $term) {
$original_terms[$tid] = clone $term;
}
- $update_migration = Migration::getInstance('WineVarietyUpdatesMigration');
+ $update_migration = Migration::getInstance('WineVarietyUpdates');
$result = $update_migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
}
function testUserImport() {
- $migration = Migration::getInstance('WineUserMigration');
+ $migration = Migration::getInstance('WineUser');
$result = $migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
t('User import returned RESULT_COMPLETED'));
}
function testXMLImport() {
- $migration = Migration::getInstance('WineRegionMigration');
+ $migration = Migration::getInstance('WineRegion');
$result = $migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
t('Region term import returned RESULT_COMPLETED'));
- $migration = Migration::getInstance('WineUserMigration');
+ $migration = Migration::getInstance('WineUser');
$result = $migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
t('User import returned RESULT_COMPLETED'));
- $migration = Migration::getInstance('WineProducerXMLMigration');
+ $migration = Migration::getInstance('WineProducerXML');
$result = $migration->processImport();
$this->assertEqual($result, Migration::RESULT_COMPLETED,
t('Producer node import returned RESULT_COMPLETED'));
// Test each base node field
$producer_node = $producer_nodes['Lolonis Winery'];
- $user_migration = MigrationBase::getInstance('WineUserMigration');
+ $user_migration = MigrationBase::getInstance('WineUser');
$mapped_uid = $user_migration->getMap()->lookupDestinationID(
array(3), $migration);