1: <?php
2:
3: App::import('Lib', 'Migrations.MigrationVersion');
4:
5: class MigrationAllPluginsShell extends Shell {
6:
7: 8: 9: 10: 11:
12: public function getOptionParser() {
13: $parser = parent::getOptionParser();
14: $parser->description("Migrate all plugins database' schemas utilities.");
15: $parser->addOptions(
16: array(
17: 'reset' => array(
18: 'default' => false,
19: 'boolean' => true,
20: 'help' => __d('base','Reset database schema before migrate')
21: )
22: )
23: );
24: return $parser;
25: }
26:
27: public function main() {
28: $this->dispatchShell('Migrations.migration', 'status', '-q');
29:
30: if ($this->params['reset']) {
31: $this->_migrateAllPlugins('reset');
32: }
33:
34: $this->_migrateAllPlugins('all');
35: }
36:
37: private function _migrateAllPlugins($toVersion) {
38: $version = new MigrationVersion();
39: foreach (CakePlugin::loaded() as $plugin) {
40: if ($plugin != 'Migrations' && $version->getMapping($plugin)) {
41: $this->out('Migrating plugin ' . $plugin);
42: $this->dispatchShell('Migrations.migration', 'run', '--plugin', $plugin, $toVersion);
43: }
44: }
45:
46: $this->dispatchShell('Migrations.migration', 'run', $toVersion);
47: }
48:
49: }
50: ?>
51:
52: