diff options
author | rojanu <aliustek@gmail.com> | 2016-01-15 15:40:10 +0100 |
---|---|---|
committer | Gervase Markham <gerv@mozilla.org> | 2016-01-15 15:40:10 +0100 |
commit | 933fe72425f6e657c152950246735370f0f06dcf (patch) | |
tree | 93dba11fac36dae4e3be00d214427028cc6181fc /Bugzilla/Migrate.pm | |
parent | a0c3ade6d450ee0403612199a96db5bb8a577006 (diff) | |
download | bugzilla-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.pm | 20 |
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; } ############# |