diff options
author | Nathan Guse <nathaniel.guse@gmail.com> | 2013-01-09 18:24:32 -0600 |
---|---|---|
committer | Nathan Guse <nathaniel.guse@gmail.com> | 2013-01-09 18:24:32 -0600 |
commit | 3d4c00619f1c96df7a4c6f8bc1c03eb21abf49d7 (patch) | |
tree | fcefc44c35f182224fefd4a43fc671514ea37daf /phpBB/includes/db/migration/tool/module.php | |
parent | 28cd253d19f49a6450bce90a5b81df939d0be2c9 (diff) | |
download | forums-3d4c00619f1c96df7a4c6f8bc1c03eb21abf49d7.tar forums-3d4c00619f1c96df7a4c6f8bc1c03eb21abf49d7.tar.gz forums-3d4c00619f1c96df7a4c6f8bc1c03eb21abf49d7.tar.bz2 forums-3d4c00619f1c96df7a4c6f8bc1c03eb21abf49d7.tar.xz forums-3d4c00619f1c96df7a4c6f8bc1c03eb21abf49d7.zip |
[feature/migrations] Reverse data functionality
If data step fails, attempt to roll back any previous calls from the
migration that failed.
Fix some failing tests
PHPBB3-9737
Diffstat (limited to 'phpBB/includes/db/migration/tool/module.php')
-rw-r--r-- | phpBB/includes/db/migration/tool/module.php | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/phpBB/includes/db/migration/tool/module.php b/phpBB/includes/db/migration/tool/module.php index 70a246849a..561faac552 100644 --- a/phpBB/includes/db/migration/tool/module.php +++ b/phpBB/includes/db/migration/tool/module.php @@ -471,4 +471,35 @@ class phpbb_db_migration_tool_module implements phpbb_db_migration_tool_interfac $this->cache->destroy("_modules_$class"); } } + + /** + * Reverse an original install action + * + * First argument is the original call to the class (e.g. add, remove) + * After the first argument, send the original arguments to the function in the original call + * + * @return null + */ + public function reverse() + { + $arguments = func_get_args(); + $original_call = array_shift($arguments); + + $call = false; + switch ($original_call) + { + case 'add': + $call = 'remove'; + break; + + case 'remove': + $call = 'add'; + break; + } + + if ($call) + { + return call_user_func_array(array(&$this, $call), $arguments); + } + } } |