function migrate_autoregister in Migrate 6.2
On request, scan the Drupal code registry for any new migration classes for us to register in migrate_status.
2 calls to migrate_autoregister()
- drush_migrate_auto_register in ./
migrate.drush.inc - Register any previously-unrecognized non-dynamic migrations.
- migrate_ui_configure_register_submit in migrate_ui/
migrate_ui.pages.inc - Submit callback for the configuration form registration fieldset.
File
- ./
migrate.module, line 132
Code
function migrate_autoregister() {
// Make sure the registry is up-to-date on all available classes.
autoload_registry_update();
// Get list of modules implementing Migrate API
$modules = array_keys(migrate_get_module_apis(TRUE));
// Get list of classes we already know about
$existing_classes = array();
$result = db_query("SELECT class_name\n FROM {migrate_status}");
while ($row = db_fetch_object($result)) {
$existing_classes[$row->class_name] = $row->class_name;
}
// Discover class names registered with Drupal by modules implementing our API
$result = db_query("SELECT name\n FROM {autoload_registry}\n WHERE type='class' AND module IN (" . db_placeholders($modules, 'varchar') . ") AND filename NOT LIKE '%.test'", $modules);
while ($record = db_fetch_object($result)) {
$class_name = $record->name;
// If we already know about this class, skip it
if (isset($existing_classes[$class_name])) {
continue;
}
// Validate it's an implemented subclass of the parent class
// Ignore errors
try {
$class = new ReflectionClass($class_name);
} catch (Exception $e) {
continue;
}
if (!$class
->isAbstract() && $class
->isSubclassOf('MigrationBase')) {
// Verify that it's not a dynamic class (the implementor will be responsible
// for registering those).
$dynamic = call_user_func(array(
$class_name,
'isDynamic',
));
if (!$dynamic) {
// OK, this is a new non-dynamic migration class, register it
MigrationBase::registerMigration($class_name);
}
}
}
}