MCONF can be set from outside. An external function can be forced.
[Packages/TYPO3.CMS.git] / t3lib / class.t3lib_scbase.php
index 553d087..ec06c6c 100644 (file)
@@ -136,10 +136,10 @@ class t3lib_SCbase {
         * Loaded with the global array $MCONF which holds some module configuration from the conf.php file of backend modules.
         * @see init()
         */
-       var $MCONF=array();
+       var $MCONF = array();
 
        /**
-        * The integer value of the GET/POST var, 'id'. Used for submodules to the 'Web' module.
+        * The integer value of the GET/POST var, 'id'. Used for submodules to the 'Web' module (page id)
         * @see init()
         */
        var $id;
@@ -162,7 +162,7 @@ class t3lib_SCbase {
         * The module menu items array. Each key represents a key for which values can range between the items in the array of that key.
         * @see init()
         */
-       var $MOD_MENU= Array (
+       var $MOD_MENU = Array (
                        'function' => array()
                );
 
@@ -170,7 +170,7 @@ class t3lib_SCbase {
         * Current settings for the keys of the MOD_MENU array
         * @see $MOD_MENU
         */
-       var $MOD_SETTINGS=array();
+       var $MOD_SETTINGS = array();
 
        /**
         * Module TSconfig based on PAGE TSconfig / USER TSconfig
@@ -214,12 +214,12 @@ class t3lib_SCbase {
         *
         * @see handleExternalFunctionValue()
         */
-       var $include_once=array();
+       var $include_once = array();
 
        /**
         * Generally used for accumulating the output content of backend modules
         */
-       var $content='';
+       var $content = '';
 
        /**
         * Generally used to hold an instance of the 'template' class from typo3/template.php
@@ -247,7 +247,10 @@ class t3lib_SCbase {
         * @see menuConfig()
         */
        function init() {
-               $this->MCONF = $GLOBALS['MCONF'];
+                       // name might be set from outside
+               if (!$this->MCONF['name']) {
+                       $this->MCONF = $GLOBALS['MCONF'];
+               }
                $this->id = intval(t3lib_div::_GP('id'));
                $this->CMD = t3lib_div::_GP('CMD');
                $this->perms_clause = $GLOBALS['BE_USER']->getPagePermsClause(1);
@@ -269,6 +272,9 @@ class t3lib_SCbase {
                $this->MOD_MENU['function'] = $this->mergeExternalItems($this->MCONF['name'],'function',$this->MOD_MENU['function']);
                $this->MOD_MENU['function'] = t3lib_BEfunc::unsetMenuItems($this->modTSconfig['properties'],$this->MOD_MENU['function'],'menu.function');
 
+               #debug($this->MOD_MENU['function'],$this->MCONF['name']);
+               #debug($this->modTSconfig['properties']);
+
                        // CLEANSE 'function' SETTINGS
                $this->MOD_SETTINGS = t3lib_BEfunc::getModuleData($this->MOD_MENU, t3lib_div::_GP('SET'), $this->MCONF['name'], $this->modMenu_type, $this->modMenu_dontValidateList, $this->modMenu_setDefaultList);
        }
@@ -299,11 +305,13 @@ class t3lib_SCbase {
         * If for this array the key 'path' is set then that is expected to be an absolute path to a file which should be included - so it is set in the internal array $this->include_once
         *
         * @param       string          The key to MOD_MENU for which to fetch configuration. 'function' is default since it is first and foremost used to get information per "extension object" (I think that is what its called)
+        * @param       string          The value-key to fetch from the config array. If NULL (default) MOD_SETTINGS[$MM_key] will be used. This is usefull if you want to force another function than the one defined in MOD_SETTINGS[function]. Call this in init() function of your Script Class: handleExternalFunctionValue('function', $forcedSubModKey)
         * @return      void
-        * @see $include_once, init()
+        * @see getExternalItemConfig(), $include_once, init()
         */
-       function handleExternalFunctionValue($MM_key='function')        {
-               $this->extClassConf = $this->getExternalItemConfig($this->MCONF['name'],$MM_key,$this->MOD_SETTINGS[$MM_key]);
+       function handleExternalFunctionValue($MM_key='function', $MS_value=NULL)        {
+               $MS_value = is_null($MS_value) ? $this->MOD_SETTINGS[$MM_key] : $MS_value;
+               $this->extClassConf = $this->getExternalItemConfig($this->MCONF['name'],$MM_key,$MS_value);
                if (is_array($this->extClassConf) && $this->extClassConf['path'])       {
                        $this->include_once[]=$this->extClassConf['path'];
                }