Bug #22410 » 14050_cleaning_t3lib_scbase.patch
t3lib/class.t3lib_scbase.php (revision ) | ||
---|---|---|
<?php
|
||
/***************************************************************
|
||
* Copyright notice
|
||
*
|
||
* (c) 1999-2010 Kasper Sk?rh?j (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 textfile 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!
|
||
***************************************************************/
|
||
* Copyright notice
|
||
*
|
||
* (c) 1999-2010 Kasper Sk?rh?j (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 textfile 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!
|
||
***************************************************************/
|
||
/**
|
||
* Contains the parent class for 'ScriptClasses' in backend modules.
|
||
*
|
||
... | ... | |
*
|
||
*
|
||
* 133: class t3lib_SCbase
|
||
* 249: function init()
|
||
* 249: function init()
|
||
* 269: function menuConfig()
|
||
* 269: function menuConfig()
|
||
* 292: function mergeExternalItems($modName,$menuKey,$menuArr)
|
||
* 292: function mergeExternalItems($modName,$menuKey,$menuArr)
|
||
* 317: function handleExternalFunctionValue($MM_key='function', $MS_value=NULL)
|
||
* 317: function handleExternalFunctionValue($MM_key='function', $MS_value=NULL)
|
||
* 335: function getExternalItemConfig($modName,$menuKey,$value='')
|
||
* 335: function getExternalItemConfig($modName,$menuKey,$value='')
|
||
* 349: function checkExtObj()
|
||
* 349: function checkExtObj()
|
||
* 363: function checkSubExtObj()
|
||
* 363: function checkSubExtObj()
|
||
* 375: function extObjHeader()
|
||
* 375: function extObjHeader()
|
||
* 384: function extObjContent()
|
||
* 384: function extObjContent()
|
||
*
|
||
* TOTAL FUNCTIONS: 9
|
||
* (This index is automatically created/updated by the extension "extdeveval")
|
||
... | ... | |
*/
|
||
/**
|
||
* EXAMPLE PROTOTYPE
|
||
*
|
||
... | ... | |
* However you can see a prototype example of how a module might use this class in an index.php file typically hosting a backend module.
|
||
* NOTICE: This example only outlines the basic structure of how this class is used. You should consult the documentation and other real-world examples for some actual things to do when building modules.
|
||
*
|
||
* // TYPICAL 'HEADER' OF A BACKEND MODULE:
|
||
* // TYPICAL 'HEADER' OF A BACKEND MODULE:
|
||
* unset($MCONF);
|
||
* unset($MCONF);
|
||
* require ('conf.php');
|
||
* require ('conf.php');
|
||
* require ($BACK_PATH.'init.php');
|
||
* require ($BACK_PATH.'init.php');
|
||
* require ($BACK_PATH.'template.php');
|
||
* require ($BACK_PATH.'template.php');
|
||
* $LANG->includeLLFile('EXT:prototype/locallang.php');
|
||
* $LANG->includeLLFile('EXT:prototype/locallang.php');
|
||
* $BE_USER->modAccess($MCONF,1);
|
||
* $BE_USER->modAccess($MCONF,1);
|
||
*
|
||
* // SC_mod_prototype EXTENDS THE CLASS t3lib_SCbase with a main() and printContent() function:
|
||
* // SC_mod_prototype EXTENDS THE CLASS t3lib_SCbase with a main() and printContent() function:
|
||
* class SC_mod_prototype extends t3lib_SCbase {
|
||
* class SC_mod_prototype extends t3lib_SCbase {
|
||
* // MAIN FUNCTION - HERE YOU CREATE THE MODULE CONTENT IN $this->content
|
||
* // MAIN FUNCTION - HERE YOU CREATE THE MODULE CONTENT IN $this->content
|
||
* function main() {
|
||
* function main() {
|
||
* // TYPICALLY THE INTERNAL VAR, $this->doc is instantiated like this:
|
||
* // TYPICALLY THE INTERNAL VAR, $this->doc is instantiated like this:
|
||
* $this->doc = t3lib_div::makeInstance('mediumDoc');
|
||
* $this->doc = t3lib_div::makeInstance('mediumDoc');
|
||
* // TYPICALLY THE INTERNAL VAR, $this->backPath is set like this:
|
||
* // TYPICALLY THE INTERNAL VAR, $this->backPath is set like this:
|
||
* $this->backPath = $this->doc->backPath = $GLOBALS['BACK_PATH'];
|
||
* $this->backPath = $this->doc->backPath = $GLOBALS['BACK_PATH'];
|
||
* // ... AND OF COURSE A LOT OF OTHER THINGS GOES ON - LIKE PUTTING CONTENT INTO $this->content
|
||
* // ... AND OF COURSE A LOT OF OTHER THINGS GOES ON - LIKE PUTTING CONTENT INTO $this->content
|
||
* $this->content='';
|
||
* $this->content='';
|
||
* }
|
||
* }
|
||
* // PRINT CONTENT - DONE AS THE LAST THING
|
||
* // PRINT CONTENT - DONE AS THE LAST THING
|
||
* function printContent() {
|
||
* function printContent() {
|
||
* echo $this->content;
|
||
* echo $this->content;
|
||
* }
|
||
* }
|
||
* }
|
||
* }
|
||
*
|
||
* // CHECKING IF THERE ARE AN EXTENSION CLASS CONFIGURED FOR THIS CLASS:
|
||
* // CHECKING IF THERE ARE AN EXTENSION CLASS CONFIGURED FOR THIS CLASS:
|
||
* if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/prototype/index.php']) {
|
||
* if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/prototype/index.php']) {
|
||
* include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/prototype/index.php']);
|
||
* include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/prototype/index.php']);
|
||
* }
|
||
* }
|
||
*
|
||
* // MAKE INSTANCE OF THE SCRIPT CLASS AND CALL init()
|
||
* // MAKE INSTANCE OF THE SCRIPT CLASS AND CALL init()
|
||
* $SOBE = t3lib_div::makeInstance('SC_mod_prototype');
|
||
* $SOBE = t3lib_div::makeInstance('SC_mod_prototype');
|
||
* $SOBE->init();
|
||
* $SOBE->init();
|
||
*
|
||
* // AFTER INIT THE INTERNAL ARRAY ->include_once MAY HOLD FILENAMES TO INCLUDE
|
||
* // AFTER INIT THE INTERNAL ARRAY ->include_once MAY HOLD FILENAMES TO INCLUDE
|
||
* foreach($SOBE->include_once as $INC_FILE) include_once($INC_FILE);
|
||
* foreach($SOBE->include_once as $INC_FILE) include_once($INC_FILE);
|
||
*
|
||
* // THEN WE WILL CHECK IF THERE IS A 'SUBMODULE' REGISTERED TO BE INITIALIZED AS WELL:
|
||
* // THEN WE WILL CHECK IF THERE IS A 'SUBMODULE' REGISTERED TO BE INITIALIZED AS WELL:
|
||
* $SOBE->checkExtObj();
|
||
* $SOBE->checkExtObj();
|
||
*
|
||
* // THEN WE CALL THE main() METHOD AND THIS SHOULD SPARK THE CREATION OF THE MODULE OUTPUT.
|
||
* // THEN WE CALL THE main() METHOD AND THIS SHOULD SPARK THE CREATION OF THE MODULE OUTPUT.
|
||
* $SOBE->main();
|
||
* $SOBE->main();
|
||
* // FINALLY THE printContent() FUNCTION WILL OUTPUT THE ACCUMULATED CONTENT
|
||
* // FINALLY THE printContent() FUNCTION WILL OUTPUT THE ACCUMULATED CONTENT
|
||
* $SOBE->printContent();
|
||
* $SOBE->printContent();
|
||
*/
|
||
/**
|
||
... | ... | |
var $perms_clause;
|
||
/**
|
||
* 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()
|
||
);
|
||
'function' => array()
|
||
);
|
||
/**
|
||
* Current settings for the keys of the MOD_MENU array
|
||
... | ... | |
var $extObj;
|
||
/**
|
||
* Initializes the backend module by setting internal variables, initializing the menu.
|
||
*
|
||
* @return void
|
||
* @see menuConfig()
|
||
*/
|
||
function init() {
|
||
function init() {
|
||
// name might be set from outside
|
||
if (!$this->MCONF['name']) {
|
||
$this->MCONF = $GLOBALS['MCONF'];
|
||
... | ... | |
* @return void
|
||
* @see init(), $MOD_MENU, $MOD_SETTINGS, t3lib_BEfunc::getModuleData(), mergeExternalItems()
|
||
*/
|
||
function menuConfig() {
|
||
function menuConfig() {
|
||
// page/be_user TSconfig settings and blinding of menu-items
|
||
$this->modTSconfig = t3lib_BEfunc::getModTSconfig($this->id,'mod.'.$this->MCONF['name']);
|
||
$this->modTSconfig = t3lib_BEfunc::getModTSconfig($this->id, 'mod.' . $this->MCONF['name']);
|
||
$this->MOD_MENU['function'] = $this->mergeExternalItems($this->MCONF['name'],'function',$this->MOD_MENU['function']);
|
||
$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');
|
||
$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']);
|
||
$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);
|
||
$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
|
||
);
|
||
}
|
||
/**
|
||
... | ... | |
* @access private
|
||
* @see t3lib_extMgm::insertModuleFunction(), menuConfig()
|
||
*/
|
||
function mergeExternalItems($modName,$menuKey,$menuArr) {
|
||
function mergeExternalItems($modName, $menuKey, $menuArr) {
|
||
$mergeArray = $GLOBALS['TBE_MODULES_EXT'][$modName]['MOD_MENU'][$menuKey];
|
||
if (is_array($mergeArray)) {
|
||
if (is_array($mergeArray)) {
|
||
foreach ($mergeArray as $k => $v) {
|
||
if ((string)$v['ws']==='' ||
|
||
if ((string) $v['ws'] === '' ||
|
||
($GLOBALS['BE_USER']->workspace===0 && t3lib_div::inList($v['ws'],'online')) ||
|
||
($GLOBALS['BE_USER']->workspace === 0 && t3lib_div::inList($v['ws'], 'online')) ||
|
||
($GLOBALS['BE_USER']->workspace===-1 && t3lib_div::inList($v['ws'],'offline')) ||
|
||
($GLOBALS['BE_USER']->workspace === -1 && t3lib_div::inList($v['ws'], 'offline')) ||
|
||
($GLOBALS['BE_USER']->workspace>0 && t3lib_div::inList($v['ws'],'custom'))) {
|
||
($GLOBALS['BE_USER']->workspace > 0 && t3lib_div::inList($v['ws'], 'custom'))) {
|
||
$menuArr[$k]=$GLOBALS['LANG']->sL($v['title']);
|
||
$menuArr[$k] = $GLOBALS['LANG']->sL($v['title']);
|
||
}
|
||
}
|
||
}
|
||
... | ... | |
* @return void
|
||
* @see getExternalItemConfig(), $include_once, init()
|
||
*/
|
||
function handleExternalFunctionValue($MM_key='function', $MS_value=NULL) {
|
||
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);
|
||
$this->extClassConf = $this->getExternalItemConfig($this->MCONF['name'], $MM_key, $MS_value);
|
||
if (is_array($this->extClassConf) && $this->extClassConf['path']) {
|
||
if (is_array($this->extClassConf) && $this->extClassConf['path']) {
|
||
$this->include_once[]=$this->extClassConf['path'];
|
||
$this->include_once[] = $this->extClassConf['path'];
|
||
}
|
||
}
|
||
... | ... | |
* @return mixed The value from the TBE_MODULES_EXT array.
|
||
* @see handleExternalFunctionValue()
|
||
*/
|
||
function getExternalItemConfig($modName,$menuKey,$value='') {
|
||
function getExternalItemConfig($modName, $menuKey, $value = '') {
|
||
return strcmp($value,'')?$GLOBALS['TBE_MODULES_EXT'][$modName]['MOD_MENU'][$menuKey][$value]:$GLOBALS['TBE_MODULES_EXT'][$modName]['MOD_MENU'][$menuKey];
|
||
return strcmp($value, '') ? $GLOBALS['TBE_MODULES_EXT'][$modName]['MOD_MENU'][$menuKey][$value] : $GLOBALS['TBE_MODULES_EXT'][$modName]['MOD_MENU'][$menuKey];
|
||
}
|
||
/**
|
||
... | ... | |
* @return void
|
||
* @see handleExternalFunctionValue(), t3lib_extMgm::insertModuleFunction(), $extObj
|
||
*/
|
||
function checkExtObj() {
|
||
function checkExtObj() {
|
||
if (is_array($this->extClassConf) && $this->extClassConf['name']) {
|
||
if (is_array($this->extClassConf) && $this->extClassConf['name']) {
|
||
$this->extObj = t3lib_div::makeInstance($this->extClassConf['name']);
|
||
$this->extObj->init($this,$this->extClassConf);
|
||
$this->extObj->init($this, $this->extClassConf);
|
||
// Re-write:
|
||
$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);
|
||
$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
|
||
);
|
||
}
|
||
}
|
||
... | ... | |
*
|
||
* @return void
|
||
*/
|
||
function checkSubExtObj() {
|
||
function checkSubExtObj() {
|
||
if (is_object($this->extObj)) $this->extObj->checkExtObj();
|
||
if (is_object($this->extObj)) {
|
||
$this->extObj->checkExtObj();
|
||
}
|
||
}
|
||
}
|
||
/**
|
||
* Calls the 'header' function inside the "Function menu module" if present.
|
||
... | ... | |
*
|
||
* @return void
|
||
*/
|
||
function extObjHeader() {
|
||
function extObjHeader() {
|
||
if (is_callable(array($this->extObj,'head'))) $this->extObj->head();
|
||
if (is_callable(array($this->extObj, 'head'))) {
|
||
$this->extObj->head();
|
||
}
|
||
}
|
||
}
|
||
/**
|
||
* Calls the 'main' function inside the "Function menu module" if present
|