summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Migrate.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Bugzilla/Migrate.pm')
-rw-r--r--Bugzilla/Migrate.pm20
1 files changed, 16 insertions, 4 deletions
diff --git a/Bugzilla/Migrate.pm b/Bugzilla/Migrate.pm
index 0731d4fed..6ecdb5c0d 100644
--- a/Bugzilla/Migrate.pm
+++ b/Bugzilla/Migrate.pm
@@ -199,12 +199,24 @@ sub load {
my @migration_modules = glob("$libdir/Bugzilla/Migrate/*");
my ($module) = grep { basename($_) =~ /^\Q$from\E\.pm$/i }
@migration_modules;
- if (!$module) {
+ if ($module) {
+ require $module;
+ my $canonical_name = _canonical_name($module);
+ return "Bugzilla::Migrate::$canonical_name"->new;
+ }
+ else {
+ my $migrate_module = {};
+ Bugzilla::Hook::process('migrate_modules', $migrate_module);
+ @migration_modules = glob($migrate_module->{path}."/*");
+ ($module) = grep { basename($_) =~ /^\Q$from\E\.pm$/i }
+ @migration_modules;
+ if (!$module) {
ThrowUserError('migrate_from_invalid', { from => $from });
+ }
+ require $module;
+ my $canonical_name = _canonical_name($module);
+ return "$migrate_module->{prefix}::$canonical_name"->new;
}
- require $module;
- my $canonical_name = _canonical_name($module);
- return "Bugzilla::Migrate::$canonical_name"->new;
}
#############