MetaModels\BackendIntegration\BackendModuleBuilder::export PHP Метод

export() публичный Метод

Set the local data into the GLOBALS config.
public export ( ) : void
Результат void
    public function export()
    {
        // Do not replace the array. See #684.
        foreach ($this->backendMenu as $section => $entries) {
            if (!isset($GLOBALS['BE_MOD'][$section])) {
                $GLOBALS['BE_MOD'][$section] = array();
            }
            // Loop over section elements to ensure we append our values.
            foreach ($entries as $entryName => $entry) {
                if (!isset($GLOBALS['BE_MOD'][$section][$entryName])) {
                    $GLOBALS['BE_MOD'][$section][$entryName] = array();
                }
                $GLOBALS['BE_MOD'][$section][$entryName] = array_merge_recursive($entry, $GLOBALS['BE_MOD'][$section][$entryName]);
            }
        }
        $GLOBALS['TL_LANG'] = array_merge_recursive($this->languageStrings, $GLOBALS['TL_LANG']);
    }

Usage Example

Пример #1
0
 /**
  * Boot the system in the backend.
  *
  * @param MetaModelsBootEvent $event The event.
  *
  * @return void
  *
  * @SuppressWarnings(PHPMD.Superglobals)
  * @SuppressWarnings(PHPMD.CamelCaseVariableName)
  */
 public function perform(MetaModelsBootEvent $event)
 {
     $container = $event->getServiceContainer();
     $viewCombinations = new ViewCombinations($container, $GLOBALS['container']['user']);
     $container->setService($viewCombinations, 'metamodels-view-combinations');
     $menuBuilder = new BackendModuleBuilder($container, $viewCombinations);
     $menuBuilder->export();
     // Prepare lazy loading of the data containers.
     foreach ($viewCombinations->getParentedInputScreenNames() as $metaModelName) {
         $parent = $viewCombinations->getParentOf($metaModelName);
         if (substr($parent, 0, 3) === 'mm_') {
             continue;
         }
         LoadDataContainerHookListener::attachFor($parent, function () use($metaModelName, $viewCombinations, $container) {
             $inputScreen = $viewCombinations->getInputScreenDetails($metaModelName);
             $builder = new MetaModelDcaBuilder($container);
             $builder->injectOperationButton($inputScreen);
         });
     }
     $dispatcher = $container->getEventDispatcher();
     foreach ($container->getFactory()->collectNames() as $metaModelName) {
         $this->attachLoadDataContainerHook($metaModelName, $container);
         $dispatcher->addListener(PreCreateDcGeneralEvent::NAME, function (PreCreateDcGeneralEvent $event) use($metaModelName, $viewCombinations, $container) {
             $factory = $event->getFactory();
             $name = $factory->getContainerName();
             if ($name !== $metaModelName) {
                 return;
             }
             $inputScreen = $viewCombinations->getInputScreenDetails($metaModelName);
             $factory->setContainerClassName('MetaModels\\DcGeneral\\DataDefinition\\MetaModelDataDefinition');
             $dispatcher = $container->getEventDispatcher();
             $generator = new Builder($container, $inputScreen);
             $dispatcher->addListener(BuildDataDefinitionEvent::NAME, function (BuildDataDefinitionEvent $event) use($metaModelName, $generator) {
                 if ($event->getContainer()->getName() !== $metaModelName) {
                     return;
                 }
                 $generator->build($event);
             }, $generator::PRIORITY);
             $dispatcher->addListener(PopulateEnvironmentEvent::NAME, function (PopulateEnvironmentEvent $event) use($metaModelName, $generator) {
                 if ($event->getEnvironment()->getDataDefinition()->getName() !== $metaModelName) {
                     return;
                 }
                 $generator->populate($event);
                 $GLOBALS['TL_CSS'][] = 'system/modules/metamodels/assets/css/style.css';
             }, $generator::PRIORITY);
         });
     }
     // Register the global subscriber.
     new Subscriber($container);
     $this->overrideFilePicker();
 }