92 $this->BE_USER = $beUser ?:
$GLOBALS[
'BE_USER'];
95 unset($modulesArray[
'_configuration']);
96 $this->navigationComponents = $modulesArray[
'_navigationComponents'];
97 unset($modulesArray[
'_navigationComponents']);
101 foreach ($mainModules as $mainModuleName => $subModules) {
102 $mainModuleConfiguration = $this->
checkMod($mainModuleName);
104 if (is_array($mainModuleConfiguration)) {
105 $this->modules[$mainModuleName] = $mainModuleConfiguration;
107 if (is_array($subModules)) {
108 foreach ($subModules as $subModuleName) {
109 $subModuleConfiguration = $this->
checkMod($mainModuleName .
'_' . $subModuleName);
110 if (is_array($subModuleConfiguration)) {
111 $this->modules[$mainModuleName][
'sub'][$subModuleName] = $subModuleConfiguration;
115 } elseif ($mainModuleConfiguration !==
false) {
118 if (is_array($subModules)) {
119 foreach ($subModules as $subModuleName) {
120 $this->
checkMod($mainModuleName .
'_' . $subModuleName);
141 if (is_array(
$GLOBALS[
'TBE_MODULES'][
'_configuration'][$name][
'configureModuleFunction'] ??
false)) {
142 trigger_error(
'Registering a module using "configureModuleFunction" will be removed in TYPO3 v10.0.', E_USER_DEPRECATED);
143 $obj =
$GLOBALS[
'TBE_MODULES'][
'_configuration'][$name][
'configureModuleFunction'];
144 if (is_callable($obj)) {
145 $MCONF = call_user_func($obj, $name);
158 if (empty($setupInformation[
'configuration'])) {
161 $finalModuleConfiguration = $setupInformation[
'configuration'];
162 if (!empty($finalModuleConfiguration[
'shy'])
168 $finalModuleConfiguration[
'name'] = $name;
170 $this->
addLabelsForModule($name, $finalModuleConfiguration[
'labels'] ?? $setupInformation[
'labels']);
172 $uriBuilder = GeneralUtility::makeInstance(\
TYPO3\CMS\Backend\Routing\UriBuilder::class);
173 if (isset($setupInformation[
'configuration'][
'routeTarget'])) {
174 $finalModuleConfiguration[
'script'] = (string)$uriBuilder->buildUriFromRoute($name);
176 $finalModuleConfiguration[
'script'] = (string)$uriBuilder->buildUriFromRoute(
'dummy');
179 if (!empty($setupInformation[
'configuration'][
'navigationFrameModule'])) {
180 $finalModuleConfiguration[
'navFrameScript'] = (string)$uriBuilder->buildUriFromRoute(
181 $setupInformation[
'configuration'][
'navigationFrameModule'],
182 !empty($setupInformation[
'configuration'][
'navigationFrameModuleParameters'])
183 ? $setupInformation[
'configuration'][
'navigationFrameModuleParameters']
190 if (strpos($name,
'_') !==
false) {
191 list($mainModule, ) = explode(
'_', $name, 2);
195 if (is_array($this->navigationComponents[$name] ??
false)) {
196 $finalModuleConfiguration[
'navigationComponentId'] = $this->navigationComponents[$name][
'componentId'];
197 } elseif ($mainModule
198 && is_array($this->navigationComponents[$mainModule] ??
false)
199 && $setupInformation[
'configuration'][
'inheritNavigationComponentFromMainModule'] !==
false) {
202 $finalModuleConfiguration[
'navigationComponentId'] = $this->navigationComponents[$mainModule][
'componentId'];
204 return $finalModuleConfiguration;
216 $moduleSetupInformation = [
217 'configuration' => [],
221 $moduleConfiguration = !empty(
$GLOBALS[
'TBE_MODULES'][
'_configuration'][$moduleName])
222 ?
$GLOBALS[
'TBE_MODULES'][
'_configuration'][$moduleName]
224 if ($moduleConfiguration !==
null) {
226 if (!empty($moduleConfiguration[
'labels']) && is_array($moduleConfiguration[
'labels'])) {
227 if (empty($moduleSetupInformation[
'labels'][
'default']) || !is_array($moduleSetupInformation[
'labels'][
'default'])) {
228 $moduleSetupInformation[
'labels'][
'default'] = $moduleConfiguration[
'labels'];
230 $moduleSetupInformation[
'labels'][
'default'] = array_replace_recursive($moduleSetupInformation[
'labels'][
'default'], $moduleConfiguration[
'labels']);
232 unset($moduleConfiguration[
'labels']);
235 if (is_array($moduleConfiguration)) {
236 $moduleSetupInformation[
'configuration'] = array_replace_recursive($moduleSetupInformation[
'configuration'], $moduleConfiguration);
241 if (!isset($moduleSetupInformation[
'configuration'][
'inheritNavigationComponentFromMainModule'])) {
242 $moduleSetupInformation[
'configuration'][
'inheritNavigationComponentFromMainModule'] =
true;
245 return $moduleSetupInformation;
257 if (empty($MCONF[
'access'])) {
260 $access = strtolower($MCONF[
'access']);
263 return $this->BE_USER->isSystemMaintainer();
267 if (strpos($access,
'admin') !==
false && $this->BE_USER->isAdmin()) {
271 if (strpos($access,
'user') !==
false) {
272 $this->modListUser[] = $name;
274 if (strpos($access,
'group') !==
false) {
275 $this->modListGroup[] = $name;
278 if ($this->BE_USER->isAdmin() || $this->BE_USER->check(
'modules', $name)) {
294 if (!$this->observeWorkspaces) {
298 if (!empty($MCONF[
'workspaces'])) {
299 $status = $this->BE_USER->workspace === 0 && GeneralUtility::inList($MCONF[
'workspaces'],
'online')
300 || $this->BE_USER->workspace === -1 && GeneralUtility::inList($MCONF[
'workspaces'],
'offline')
301 || $this->BE_USER->workspace > 0 && GeneralUtility::inList($MCONF[
'workspaces'],
'custom');
302 } elseif ($this->BE_USER->workspace === -99) {
318 if (is_array($arr)) {
319 foreach ($arr as $mod => $subs) {
324 $subsArr = GeneralUtility::trimExplode(
',', $subs);
325 foreach ($subsArr as $subMod) {
328 $theMods[$mod][] = $subMod;
349 return preg_replace(
'/[^a-z0-9]/i',
'', $str);
368 if (is_string($labels)) {
370 $this->moduleLabels[$moduleName] = [
371 'shortdescription' => $labels .
':mlang_labels_tablabel',
372 'description' => $labels .
':mlang_labels_tabdescr',
373 'title' => $labels .
':mlang_tabs_tab',
375 } elseif (isset($labels[
'title'])) {
377 $this->moduleLabels[$moduleName] = $labels;
378 } elseif (isset($labels[
'll_ref'])) {
386 $language =
'default';
389 if (isset($labels[$language][
'll_ref'])) {
391 } elseif (isset($labels[
'default'][
'll_ref'])) {
394 $this->moduleLabels[$moduleName] = [
395 'shortdescription' => $labels[$language][
'labels'][
'tablabel'] ?? $labels[
'default'][
'labels'][
'tablabel'],
396 'description' => $labels[$language][
'labels'][
'tabdescr'] ?? $labels[
'default'][
'labels'][
'tabdescr'],
397 'title' => $labels[$language][
'tabs'][
'tab'] ?? $labels[
'default'][
'tabs'][
'tab'],
411 return $this->moduleLabels[$moduleName] ?? [];