[FEATURE] Hardcoded CLI arguments from $_SERVER vars 29/18929/5
authorBenjamin Mack <benni@typo3.org>
Thu, 14 Mar 2013 23:15:48 +0000 (00:15 +0100)
committerChristian Kuhn <lolli@schwarzbu.ch>
Tue, 19 Mar 2013 19:44:41 +0000 (20:44 +0100)
Currently there is no way to overwrite the used CLI
arguments from the class who extends from the
\TYPO3\CMS\Core\Controller\CommandLineController

This occurs because the
\TYPO3\CMS\Core\Controller\CommandLineController connects
hardcoded to the $_SERVER['argv'] array. This is in
some situations very unhandy - e.g. trigger lowlevel
cleaner during a scheduler task.

Kudos to AOE, Michael Klapper and Tolleiv Nietsch!

Resolves: #21389
Releases: 6.1
Change-Id: I42c14d37e8e7f977b3c7e73b0009e6c8495c3258
Reviewed-on: https://review.typo3.org/18929
Reviewed-by: Dmitry Dulepov
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
typo3/sysext/core/Classes/Controller/CommandLineController.php
typo3/sysext/lowlevel/Classes/CleanerCommand.php

index c78c896..6f78c64 100644 (file)
@@ -80,7 +80,7 @@ class CommandLineController {
         */
        public function __construct() {
                // Loads the cli_args array with command line arguments
-               $this->cli_args = $this->cli_getArgIndex();
+               $this->cli_setArguments($_SERVER['argv']);
        }
 
        /**
@@ -130,13 +130,14 @@ class CommandLineController {
         * Argument names (eg. "-s") will be keys and values after (eg. "-s value1 value2 ..." or "-s=value1") will be in the array.
         * Array is empty if no values
         *
+        * @param array $argv Configuration options
         * @return array
         * @todo Define visibility
         */
-       public function cli_getArgIndex() {
+       public function cli_getArgIndex(array $argv = array()) {
                $cli_options = array();
                $index = '_DEFAULT';
-               foreach ($_SERVER['argv'] as $token) {
+               foreach ($argv as $token) {
                        // Options starting with a number is invalid - they could be negative values!
                        if ($token[0] === '-' && !\TYPO3\CMS\Core\Utility\MathUtility::canBeInterpretedAsInteger($token[1])) {
                                list($index, $opt) = explode('=', $token, 2);
@@ -194,6 +195,16 @@ class CommandLineController {
        }
 
        /**
+        * Set environment array to $cli_args
+        *
+        * @param array $argv Configuration options
+        * @return void
+        */
+       public function cli_setArguments(array $argv = array()) {
+               $this->cli_args = $this->cli_getArgIndex($argv);
+       }
+
+       /**
         * Asks stdin for keyboard input and returns the line (after enter is pressed)
         *
         * @return string
@@ -308,4 +319,4 @@ class CommandLineController {
 }
 
 
-?>
\ No newline at end of file
+?>
index 5fef58f..9120716 100644 (file)
@@ -118,6 +118,9 @@ This will show you missing files in the TYPO3 system and only report back if err
         * @todo Define visibility
         */
        public function cli_main($argv) {
+
+               $this->cli_setArguments($argv);
+
                // Force user to admin state and set workspace to "Live":
                $GLOBALS['BE_USER']->user['admin'] = 1;
                $GLOBALS['BE_USER']->setWorkspace(0);
@@ -577,4 +580,4 @@ NOW Running --AUTOFIX on result. OK?' . ($this->cli_isArg('--dryrun') ? ' (--dry
 }
 
 
-?>
\ No newline at end of file
+?>