[BUGFIX] Documentation does not initialize signal slot dispatcher
[Packages/TYPO3.CMS.git] / typo3 / cli_dispatch.phpsh
index d7a5875..079914c 100755 (executable)
@@ -1,41 +1,72 @@
-#! /usr/bin/php -q
+#! /usr/bin/env php
 <?php
+/***************************************************************
+ *  Copyright notice
+ *
+ *  (c) 2005-2013 Kasper Skaarhoj (kasperYYYY@typo3.com)
+ *  All rights reserved
+ *
+ *  This script is part of the TYPO3 project. The TYPO3 project is
+ *  free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  The GNU General Public License can be found at
+ *  http://www.gnu.org/copyleft/gpl.html.
+ *  A copy is found in the text file GPL.txt and important notices to the license
+ *  from the author is found in LICENSE.txt distributed with these scripts.
+ *
+ *
+ *  This script is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  This copyright notice MUST APPEAR in all copies of the script!
+ ***************************************************************/
 
-// *****************************************
-// CLI module dispatcher.
-// This script can take a "cliKey" as first argument and uses that to look up the path of the script to include in the end.
-// See configuration of this feature in $TYPO3_CONF_VARS['SC_OPTIONS']['GLOBAL']['cliKeys']
-// The point is to have only ONE script dealing with the environment initialization while the actual processing is all a developer should care for.
-// *****************************************
-
-       // Defining circumstances for CLI mode:
+/**
+ * Command Line Interface module dispatcher
+ *
+ * This script takes a "cliKey" as first argument and uses that to dispatch
+ * the call to a registered script with that key.
+ * Valid cliKeys must be registered in
+ * $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['GLOBAL']['cliKeys'].
+ *
+ * @author Kasper Skaarhoj <kasperYYYY@typo3.com>
+ */
+define('TYPO3_MODE', 'BE');
 define('TYPO3_cliMode', TRUE);
 
-       // Defining PATH_thisScript here: Must be the ABSOLUTE path of this script in the right context:
-       // This will work as long as the script is called by it's absolute path!
-$temp_PATH_thisScript = isset($_ENV['_']) ? $_ENV['_'] : $_SERVER['_'];
-$BACK_PATH = '';
-
-       // Alternatively, in some environments, we might be able to figure out the absolute path (with no "../" and "./" in) from environment variables...
-if ($temp_PATH_thisScript{0}!='/')     {
-       $temp_CURRENT_DIR = $_SERVER['PWD'].'/';
-       $temp_PATH_thisScript = $temp_CURRENT_DIR.ereg_replace('\.\/','',$temp_PATH_thisScript);
-       if (!@is_file($temp_PATH_thisScript))   {
-               die(wordwrap('ERROR: '.$temp_PATH_thisScript.' was not a file. Maybe your environment does not support running this script with a relative path? Try to run the script with its absolute path and you should be fine.'.chr(10).chr(10)));
-       }
-}
-define('PATH_thisScript',$temp_PATH_thisScript);
+require __DIR__ . '/sysext/core/Classes/Core/CliBootstrap.php';
+\TYPO3\CMS\Core\Core\CliBootstrap::checkEnvironmentOrDie();
+
+require __DIR__ . '/sysext/core/Classes/Core/Bootstrap.php';
+\TYPO3\CMS\Core\Core\Bootstrap::getInstance()
+       ->baseSetup('typo3/')
+       ->loadConfigurationAndInitialize()
+       ->loadTypo3LoadedExtAndExtLocalconf(TRUE)
+       ->applyAdditionalConfigurationSettings()
+       ->initializeTypo3DbGlobal();
 
-       // First argument is a key that 
-define('TYPO3_cliKey', $_SERVER["argv"][0]);
+\TYPO3\CMS\Core\Core\CliBootstrap::initializeCliKeyOrDie();
 
-       // Include init file:
-require(dirname(PATH_thisScript).'/'.$BACK_PATH.'init.php');
+\TYPO3\CMS\Core\Core\Bootstrap::getInstance()
+       ->loadExtensionTables(TRUE)
+       ->initializeBackendUser()
+       ->initializeBackendAuthentication()
+       ->initializeBackendUserMounts()
+       ->initializeLanguageObject();
 
-if (defined('TYPO3_cliInclude'))       {
+       // Make sure output is not buffered, so command-line output and interaction can take place
+\TYPO3\CMS\Core\Utility\GeneralUtility::flushOutputBuffers();
+
+try {
        include(TYPO3_cliInclude);
-} else {
-       echo 'ERROR: Nothing to include.'.chr(10);
-       exit;
+} catch (\Exception $e) {
+       fwrite(STDERR, $e->getMessage() . LF);
+       exit(99);
 }
-?>
+
+\TYPO3\CMS\Core\Core\Bootstrap::getInstance()->shutdown();