Commit 08912869 authored by Thomas Maroschik's avatar Thomas Maroschik
Browse files

[TASK][WIP] Move non class code back to source files

Change-Id: I916ad5a3a24864a52e945aeb66e6f997b8e6fabd
parent 864782a3
<?php
/***************************************************************
* Copyright notice
* 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.
*
* 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!
***************************************************************/
* Copyright notice
* 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.
*
* 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!
***************************************************************/
/**
* A Command Controller which provides help for available commands
*
......@@ -91,12 +90,10 @@ class Tx_Extbase_Command_HelpCommandController extends Tx_Extbase_MVC_Controller
*/
protected function displayHelpIndex() {
$this->buildCommandsIndex();
$this->outputLine('Extbase %s', array(t3lib_extMgm::getExtensionVersion('extbase')));
$this->outputLine('usage: ./cli_dispatch.phpsh extbase <command identifier>');
$this->outputLine();
$this->outputLine('The following commands are currently available:');
foreach ($this->commandsByExtensionsAndControllers as $extensionKey => $commandControllers) {
$this->outputLine('');
$this->outputLine('EXTENSION "%s":', array(strtoupper($extensionKey)));
......@@ -105,7 +102,7 @@ class Tx_Extbase_Command_HelpCommandController extends Tx_Extbase_MVC_Controller
foreach ($commands as $command) {
$description = wordwrap($command->getShortDescription(), self::MAXIMUM_LINE_LENGTH - 43, PHP_EOL . str_repeat(' ', 43), TRUE);
$shortCommandIdentifier = $this->commandManager->getShortestIdentifierForCommand($command);
$this->outputLine('%-2s%-40s %s', array(' ', $shortCommandIdentifier , $description));
$this->outputLine('%-2s%-40s %s', array(' ', $shortCommandIdentifier, $description));
}
$this->outputLine();
}
......@@ -124,10 +121,8 @@ class Tx_Extbase_Command_HelpCommandController extends Tx_Extbase_MVC_Controller
$this->outputLine();
$this->outputLine($command->getShortDescription());
$this->outputLine();
$this->outputLine('COMMAND:');
$this->outputLine('%-2s%s', array(' ', $command->getCommandIdentifier()));
$commandArgumentDefinitions = $command->getArgumentDefinitions();
$usage = '';
$hasOptions = FALSE;
......@@ -138,16 +133,12 @@ class Tx_Extbase_Command_HelpCommandController extends Tx_Extbase_MVC_Controller
$usage .= sprintf(' <%s>', strtolower(preg_replace('/([A-Z])/', ' $1', $commandArgumentDefinition->getName())));
}
}
$usage = './cli_dispatch.phpsh extbase ' . $this->commandManager->getShortestIdentifierForCommand($command) . ($hasOptions ? ' [<options>]' : '') . $usage;
$usage = (('./cli_dispatch.phpsh extbase ' . $this->commandManager->getShortestIdentifierForCommand($command)) . ($hasOptions ? ' [<options>]' : '')) . $usage;
$this->outputLine();
$this->outputLine('USAGE:');
$this->outputLine(' ' . $usage);
$argumentDescriptions = array();
$optionDescriptions = array();
if ($command->hasArguments()) {
foreach ($commandArgumentDefinitions as $commandArgumentDefinition) {
$argumentDescription = $commandArgumentDefinition->getDescription();
......@@ -159,7 +150,6 @@ class Tx_Extbase_Command_HelpCommandController extends Tx_Extbase_MVC_Controller
}
}
}
if (count($argumentDescriptions) > 0) {
$this->outputLine();
$this->outputLine('ARGUMENTS:');
......@@ -167,7 +157,6 @@ class Tx_Extbase_Command_HelpCommandController extends Tx_Extbase_MVC_Controller
$this->outputLine($argumentDescription);
}
}
if (count($optionDescriptions) > 0) {
$this->outputLine();
$this->outputLine('OPTIONS:');
......@@ -175,7 +164,6 @@ class Tx_Extbase_Command_HelpCommandController extends Tx_Extbase_MVC_Controller
$this->outputLine($optionDescription);
}
}
if ($command->getDescription() !== '') {
$this->outputLine();
$this->outputLine('DESCRIPTION:');
......@@ -184,7 +172,6 @@ class Tx_Extbase_Command_HelpCommandController extends Tx_Extbase_MVC_Controller
$this->outputLine('%-2s%s', array(' ', $descriptionLine));
}
}
$relatedCommandIdentifiers = $command->getRelatedCommandIdentifiers();
if ($relatedCommandIdentifiers !== array()) {
$this->outputLine();
......@@ -194,7 +181,6 @@ class Tx_Extbase_Command_HelpCommandController extends Tx_Extbase_MVC_Controller
$this->outputLine('%-2s%s (%s)', array(' ', $commandIdentifier, $command->getShortDescription()));
}
}
$this->outputLine();
}
......@@ -240,5 +226,7 @@ class Tx_Extbase_Command_HelpCommandController extends Tx_Extbase_MVC_Controller
$this->commandsByExtensionsAndControllers[$extensionKey][$commandControllerClassName][$commandName] = $command;
}
}
}
?>
\ No newline at end of file
<?php
/***************************************************************
* Copyright notice
*
* (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
* 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.
*
* 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!
***************************************************************/
* Copyright notice
*
* (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
* 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.
*
* 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!
***************************************************************/
/**
* Abstract base class for a general purpose configuration manager
*
......@@ -35,9 +34,9 @@ abstract class Tx_Extbase_Configuration_AbstractConfigurationManager implements
* Default backend storage PID
*/
const DEFAULT_BACKEND_STORAGE_PID = 0;
/**
* Storage of the raw TypoScript configuration
*
* @var array
*/
protected $configuration = array();
......@@ -59,12 +58,14 @@ abstract class Tx_Extbase_Configuration_AbstractConfigurationManager implements
/**
* name of the extension this Configuration Manager instance belongs to
*
* @var string
*/
protected $extensionName;
/**
* name of the plugin this Configuration Manager instance belongs to
*
* @var string
*/
protected $pluginName;
......@@ -107,7 +108,6 @@ abstract class Tx_Extbase_Configuration_AbstractConfigurationManager implements
if ($this->contentObject !== NULL) {
return $this->contentObject;
}
return NULL;
}
......@@ -121,7 +121,6 @@ abstract class Tx_Extbase_Configuration_AbstractConfigurationManager implements
public function setConfiguration(array $configuration = array()) {
// reset 1st level cache
$this->configurationCache = array();
$this->extensionName = isset($configuration['extensionName']) ? $configuration['extensionName'] : NULL;
$this->pluginName = isset($configuration['pluginName']) ? $configuration['pluginName'] : NULL;
$this->configuration = $this->typoScriptService->convertTypoScriptArrayToPlainArray($configuration);
......@@ -139,18 +138,16 @@ abstract class Tx_Extbase_Configuration_AbstractConfigurationManager implements
*/
public function getConfiguration($extensionName = NULL, $pluginName = NULL) {
// 1st level cache
$configurationCacheKey = strtolower(($extensionName ?: $this->extensionName) . '_' . ($pluginName ?: $this->pluginName));
$configurationCacheKey = strtolower((($extensionName ?: $this->extensionName) . '_') . ($pluginName ?: $this->pluginName));
if (isset($this->configurationCache[$configurationCacheKey])) {
return $this->configurationCache[$configurationCacheKey];
}
$frameworkConfiguration = $this->getExtbaseConfiguration();
if (!isset($frameworkConfiguration['persistence']['storagePid'])) {
$frameworkConfiguration['persistence']['storagePid'] = $this->getDefaultBackendStoragePid();
}
// only merge $this->configuration and override switchableControllerActions when retrieving configuration of the current plugin
if ($extensionName === NULL || ($extensionName === $this->extensionName && $pluginName === $this->pluginName)) {
if ($extensionName === NULL || $extensionName === $this->extensionName && $pluginName === $this->pluginName) {
$pluginConfiguration = $this->getPluginConfiguration($this->extensionName, $this->pluginName);
$pluginConfiguration = t3lib_div::array_merge_recursive_overrule($pluginConfiguration, $this->configuration);
$pluginConfiguration['controllerConfiguration'] = $this->getSwitchableControllerActions($this->extensionName, $this->pluginName);
......@@ -162,19 +159,14 @@ abstract class Tx_Extbase_Configuration_AbstractConfigurationManager implements
$pluginConfiguration['controllerConfiguration'] = $this->getSwitchableControllerActions($extensionName, $pluginName);
}
$frameworkConfiguration = t3lib_div::array_merge_recursive_overrule($frameworkConfiguration, $pluginConfiguration);
// only load context specific configuration when retrieving configuration of the current plugin
if ($extensionName === NULL || ($extensionName === $this->extensionName && $pluginName === $this->pluginName)) {
if ($extensionName === NULL || $extensionName === $this->extensionName && $pluginName === $this->pluginName) {
$frameworkConfiguration = $this->getContextSpecificFrameworkConfiguration($frameworkConfiguration);
}
if (!empty($frameworkConfiguration['persistence']['storagePid']) &&
is_array($frameworkConfiguration['persistence']['storagePid'])) {
/**
* We simulate the frontend to enable the use of cObjects in
* stdWrap. Than we convert the configuration to normal TypoScript
* and apply the stdWrap to the storagePid
*/
if (!empty($frameworkConfiguration['persistence']['storagePid']) && is_array($frameworkConfiguration['persistence']['storagePid'])) {
/** We simulate the frontend to enable the use of cObjects in
stdWrap. Than we convert the configuration to normal TypoScript
and apply the stdWrap to the storagePid */
if (TYPO3_MODE !== 'FE') {
Tx_Extbase_Utility_FrontendSimulator::simulateFrontendEnvironment($this->getContentObject());
}
......@@ -184,7 +176,6 @@ abstract class Tx_Extbase_Configuration_AbstractConfigurationManager implements
Tx_Extbase_Utility_FrontendSimulator::resetFrontendEnvironment();
}
}
// 1st level cache
$this->configurationCache[$configurationCacheKey] = $frameworkConfiguration;
return $frameworkConfiguration;
......@@ -216,7 +207,6 @@ abstract class Tx_Extbase_Configuration_AbstractConfigurationManager implements
/**
* @param array &$frameworkConfiguration
* @param array $switchableControllerActions
* in the format array('Controller1' => array('action1', 'action2'), 'Controller2' => ...)
* @return void
*/
protected function overrideSwitchableControllerActions(array &$frameworkConfiguration, array $switchableControllerActions) {
......@@ -227,13 +217,11 @@ abstract class Tx_Extbase_Configuration_AbstractConfigurationManager implements
}
$overriddenSwitchableControllerActions[$controllerName] = array('actions' => $actions);
$nonCacheableActions = $frameworkConfiguration['controllerConfiguration'][$controllerName]['nonCacheableActions'];
if (!is_array($nonCacheableActions)) {
// There are no non-cacheable actions, thus we can directly continue
// with the next controller name.
continue;
}
$overriddenNonCacheableActions = array_intersect($nonCacheableActions, $actions);
if (!empty($overriddenNonCacheableActions)) {
$overriddenSwitchableControllerActions[$controllerName]['nonCacheableActions'] = $overriddenNonCacheableActions;
......@@ -275,8 +263,8 @@ abstract class Tx_Extbase_Configuration_AbstractConfigurationManager implements
/**
* Returns the configured controller/action pairs of the specified plugin/module in the format
* array(
* 'Controller1' => array('action1', 'action2'),
* 'Controller2' => array('action3', 'action4')
* 'Controller1' => array('action1', 'action2'),
* 'Controller2' => array('action3', 'action4')
* )
*
* @param string $extensionName
......@@ -284,5 +272,7 @@ abstract class Tx_Extbase_Configuration_AbstractConfigurationManager implements
* @return array
*/
abstract protected function getSwitchableControllerActions($extensionName, $pluginName);
}
?>
\ No newline at end of file
<?php
/***************************************************************
* Copyright notice
*
* (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
* 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.
*
* 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!
***************************************************************/
* Copyright notice
*
* (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
* 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.
*
* 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!
***************************************************************/
/**
* A general purpose configuration manager used in backend mode.
*
......@@ -44,21 +43,19 @@ class Tx_Extbase_Configuration_BackendConfigurationManager extends Tx_Extbase_Co
public function getTypoScriptSetup() {
if ($this->typoScriptSetupCache === NULL) {
$template = t3lib_div::makeInstance('t3lib_TStemplate');
// do not log time-performance information
// do not log time-performance information
$template->tt_track = 0;
$template->init();
// Get the root line
// Get the root line
$rootline = array();
$pageId = $this->getCurrentPageId();
if ($pageId > 0) {
/** @var $sysPage t3lib_pageSelect */
$sysPage = t3lib_div::makeInstance('t3lib_pageSelect');
// Get the rootline for the current page
// Get the rootline for the current page
$rootline = $sysPage->getRootLine($this->getCurrentPageId(), '', TRUE);
}
// This generates the constants/config + hierarchy info for the template.
// This generates the constants/config + hierarchy info for the template.
$template->runThroughTemplates($rootline, 0);
$template->generateConfig();
$this->typoScriptSetupCache = $template->setup;
......@@ -77,25 +74,23 @@ class Tx_Extbase_Configuration_BackendConfigurationManager extends Tx_Extbase_Co
protected function getPluginConfiguration($extensionName, $pluginName = NULL) {
$setup = $this->getTypoScriptSetup();
$pluginConfiguration = array();
if (is_array($setup['module.']['tx_' . strtolower($extensionName) . '.'])) {
$pluginConfiguration = $this->typoScriptService->convertTypoScriptArrayToPlainArray($setup['module.']['tx_' . strtolower($extensionName) . '.']);
if (is_array($setup['module.'][('tx_' . strtolower($extensionName)) . '.'])) {
$pluginConfiguration = $this->typoScriptService->convertTypoScriptArrayToPlainArray($setup['module.'][('tx_' . strtolower($extensionName)) . '.']);
}
if ($pluginName !== NULL) {
$pluginSignature = strtolower($extensionName . '_' . $pluginName);
if (is_array($setup['module.']['tx_' . $pluginSignature . '.'])) {
$pluginConfiguration = t3lib_div::array_merge_recursive_overrule($pluginConfiguration, $this->typoScriptService->convertTypoScriptArrayToPlainArray($setup['module.']['tx_' . $pluginSignature . '.']));
$pluginSignature = strtolower(($extensionName . '_') . $pluginName);
if (is_array($setup['module.'][('tx_' . $pluginSignature) . '.'])) {
$pluginConfiguration = t3lib_div::array_merge_recursive_overrule($pluginConfiguration, $this->typoScriptService->convertTypoScriptArrayToPlainArray($setup['module.'][('tx_' . $pluginSignature) . '.']));
}
}
return $pluginConfiguration;
}
/**
* Returns the configured controller/action pairs of the specified module in the format
* array(
* 'Controller1' => array('action1', 'action2'),
* 'Controller2' => array('action3', 'action4')
* 'Controller1' => array('action1', 'action2'),
* 'Controller2' => array('action3', 'action4')
* )
*
* @param string $extensionName
......@@ -117,24 +112,21 @@ class Tx_Extbase_Configuration_BackendConfigurationManager extends Tx_Extbase_Co
* @return integer current page id. If no page is selected current root page id is returned
*/
protected function getCurrentPageId() {
$pageId = (integer)t3lib_div::_GP('id');
$pageId = (int) t3lib_div::_GP('id');
if ($pageId > 0) {
return $pageId;
}
// get current site root
// get current site root
$rootPages = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('uid', 'pages', 'deleted=0 AND hidden=0 AND is_siteroot=1', '', '', '1');
if (count($rootPages) > 0) {
return $rootPages[0]['uid'];
}
// get root template
// get root template
$rootTemplates = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('pid', 'sys_template', 'deleted=0 AND hidden=0 AND root=1', '', '', '1');
if (count($rootTemplates) > 0) {
return $rootTemplates[0]['pid'];
}
// fallback
// fallback
return self::DEFAULT_BACKEND_STORAGE_PID;
}
......@@ -164,5 +156,7 @@ class Tx_Extbase_Configuration_BackendConfigurationManager extends Tx_Extbase_Co
}
return $frameworkConfiguration;
}
}
?>
\ No newline at end of file
......@@ -21,7 +21,6 @@
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* A configuration manager following the strategy pattern (GoF315). It hides the concrete
* implementation of the configuration manager and provides an unified acccess point.
......@@ -41,7 +40,7 @@ class Tx_Extbase_Configuration_ConfigurationManager implements Tx_Extbase_Config
/**
* @var Tx_Extbase_Configuration_AbstractConfigurationManager
**/
*/
protected $concreteConfigurationManager;
/**
......@@ -103,15 +102,15 @@ class Tx_Extbase_Configuration_ConfigurationManager implements Tx_Extbase_Config
*/
public function getConfiguration($configurationType, $extensionName = NULL, $pluginName = NULL) {
switch ($configurationType) {
case self::CONFIGURATION_TYPE_SETTINGS :
$configuration = $this->concreteConfigurationManager->getConfiguration($extensionName, $pluginName);
return $configuration['settings'];
case self::CONFIGURATION_TYPE_FRAMEWORK :
return $this->concreteConfigurationManager->getConfiguration($extensionName, $pluginName);
case self::CONFIGURATION_TYPE_FULL_TYPOSCRIPT :
return $this->concreteConfigurationManager->getTypoScriptSetup();
default :
throw new Tx_Extbase_Configuration_Exception_InvalidConfigurationType('Invalid configuration type "' . $configurationType . '"', 1206031879);
case self::CONFIGURATION_TYPE_SETTINGS:
$configuration = $this->concreteConfigurationManager->getConfiguration($extensionName, $pluginName);
return $configuration['settings'];
case self::CONFIGURATION_TYPE_FRAMEWORK:
return $this->concreteConfigurationManager->getConfiguration($extensionName, $pluginName);
case self::CONFIGURATION_TYPE_FULL_TYPOSCRIPT:
return $this->concreteConfigurationManager->getTypoScriptSetup();
default:
throw new Tx_Extbase_Configuration_Exception_InvalidConfigurationType(('Invalid configuration type "' . $configurationType) . '"', 1206031879);
}
}
......@@ -127,8 +126,9 @@ class Tx_Extbase_Configuration_ConfigurationManager implements Tx_Extbase_Config
*/
public function isFeatureEnabled($featureName) {
$configuration = $this->getConfiguration(self::CONFIGURATION_TYPE_FRAMEWORK);
return (boolean)(isset($configuration['features'][$featureName]) && $configuration['features'][$featureName]);
return (bool) (isset($configuration['features'][$featureName]) && $configuration['features'][$featureName]);
}
}
?>
\ No newline at end of file
......@@ -21,20 +21,16 @@
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
*
*
* @package Extbase
* @subpackage Configuration
* @version $ID:$
*/
interface Tx_Extbase_Configuration_ConfigurationManagerInterface extends t3lib_Singleton {
interface Tx_Extbase_Configuration_ConfigurationManagerInterface extends t3lib_Singleton
{
const CONFIGURATION_TYPE_FRAMEWORK = 'Framework';
const CONFIGURATION_TYPE_SETTINGS = 'Settings';
const CONFIGURATION_TYPE_FULL_TYPOSCRIPT = 'FullTypoScript';
/**
* @param tslib_cObj $contentObject
* @return void
......
<?php
/***************************************************************
* Copyright notice
*
* (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
* All rights reserved
*
* This class is a backport of the corresponding class of FLOW3.
* All credits go to the v5 team.
*
* 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.
*
* 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!
***************************************************************/
* Copyright notice
*
* (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
* All rights reserved
*
* This class is a backport of the corresponding class of FLOW3.
* All credits go to the v5 team.
*
* 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.
*
* 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!
***************************************************************/
/**
* A generic Configuration Exception
*
......@@ -34,6 +33,7 @@
*/