From 8b38ab702533d7afc4b95bf647b045b3a595e18e Mon Sep 17 00:00:00 2001 From: Lorenzo Pisani Date: Sat, 25 Jun 2011 23:11:09 -0700 Subject: [PATCH] Some better group validation and usage of Minion_CLI to clean up output code. (refs #22) --- classes/minion/task/db/generate.php | 30 +++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/classes/minion/task/db/generate.php b/classes/minion/task/db/generate.php index 2d25f43..3b5e2cb 100644 --- a/classes/minion/task/db/generate.php +++ b/classes/minion/task/db/generate.php @@ -54,10 +54,14 @@ class Minion_Task_Db_Generate extends Minion_Task $config = array_merge($defaults, $config); - if (empty($config['group'])) + // Trim slashes in group + $config['group'] = trim($config['group'], '/'); + + if ( ! $this->_valid_group($config['group'])) { - return 'Please provide --group'.PHP_EOL. - 'See help for more info'.PHP_EOL; + Minion_CLI::write('Please provide a valid --group'); + Minion_CLI::write('See help for more info'); + return; } $group = $config['group'].'/'; @@ -82,7 +86,8 @@ class Minion_Task_Db_Generate extends Minion_Task file_put_contents($file, $data); - return 'Migration generated in '.$file.PHP_EOL; + Minion_CLI::write('Migration generated: '.$file); + return; } /** @@ -129,4 +134,21 @@ class Minion_Task_Db_Generate extends Minion_Task return $filename.EXT; } + protected function _valid_group($group) + { + // Group cannot be empty + if ( ! Valid::not_empty($group)) + return FALSE; + + // Can only consist of alpha-numeric values, dashes, underscores, and slashes + if (preg_match('/[^a-zA-Z0-9\/_-]/', $group)) + return FALSE; + + // Must also contain at least one alpha-numeric value + if ( ! preg_match('/[a-zA-Z0-9]/', $group)) + return FALSE; // --group="/" breaks things but "a/b" should be allowed + + return TRUE; + } + }