summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Migrate.pm
diff options
context:
space:
mode:
authorrojanu <aliustek@gmail.com>2016-01-15 15:40:10 +0100
committerGervase Markham <gerv@mozilla.org>2016-01-15 15:40:10 +0100
commit933fe72425f6e657c152950246735370f0f06dcf (patch)
tree93dba11fac36dae4e3be00d214427028cc6181fc /Bugzilla/Migrate.pm
parenta0c3ade6d450ee0403612199a96db5bb8a577006 (diff)
downloadbugzilla-933fe72425f6e657c152950246735370f0f06dcf.tar.gz
bugzilla-933fe72425f6e657c152950246735370f0f06dcf.tar.xz
Bug 922549: Bugzilla::Migrate.pm should provide hook in load function. r=gerv.
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;
}
#############