Example #1
0
 protected function saveStructureSettings(Structure $oStructure)
 {
     /** @var Module $oModule */
     $oModule = $oStructure->getModule();
     /** @var ModuleSetting[] $aModuleSettings */
     $aModuleSettings = $oModule->getModuleSettings();
     foreach ($aModuleSettings as $oModuleSetting) {
         /** @var StructureSetting $oStructureSettings */
         $oStructureSettings = DataSource::factory(StructureSetting::cls());
         $oStructureSettings->builder()->where("module_setting_id={$oModuleSetting->id}")->whereAnd()->where("structure_id={$oStructure->id}");
         /** @var StructureSetting[] $aStructureSettings */
         $aStructureSettings = $oStructureSettings->findAll();
         if (!empty($aStructureSettings)) {
             $oStructureSetting = $aStructureSettings[0];
             $oStructureSetting->value = is_null($oModuleSetting->entity) ? (string) Param::post($oModuleSetting->parameter, false)->asString() : (string) Param::post($oModuleSetting->parameter, false)->asInteger();
             $oStructureSetting->commit();
         } else {
             /** @var StructureSetting $oNewStructureSetting */
             $oNewStructureSetting = DataSource::factory(StructureSetting::cls());
             $oNewStructureSetting->structure_id = $oStructure->id;
             $oNewStructureSetting->module_setting_id = $oModuleSetting->id;
             $oNewStructureSetting->value = is_null($oModuleSetting->entity) ? Param::post($oModuleSetting->parameter)->asString() : Param::post($oModuleSetting->parameter)->asInteger();
             $oNewStructureSetting->commit();
         }
     }
 }
 protected function executeModule(Structure $oStructure)
 {
     if (!$oStructure->active || $oStructure->module_id == 0) {
         $controllerName = $this->Router->error404();
         $action = 'actionIndex';
         $controller = new $controllerName();
         $controller->{$action}();
         return;
     }
     $oModule = $oStructure->getModule();
     $modulePath = SFW_MODULES_ROOT . ucfirst($oModule->name) . DIRECTORY_SEPARATOR;
     $indexFilePath = "{$modulePath}manifest.php";
     $manifest = (include $indexFilePath);
     if (!$oStructure->anchor) {
         $frame = $this->getActiveFrame($oStructure);
         $seoTitle = $oStructure->seo_title;
         $seoDescription = $oStructure->seo_description;
         $seoKeywords = $oStructure->seo_keywords;
         $frame->setTitle(empty($seoTitle) ? $oStructure->name : $seoTitle);
         if (!empty($seoDescription)) {
             $frame->addMeta(['name' => 'description', 'content' => $seoDescription]);
         }
         if (!empty($seoKeywords)) {
             $frame->addMeta(['name' => 'keywords', 'content' => $seoKeywords]);
         }
     } else {
         $oClosestIndStructure = $oStructure->getClosetsIndStructure();
         $frame = $this->getActiveFrame($oClosestIndStructure);
     }
     $run = $manifest['run'];
     $controllerName = "App\\Modules\\" . ucfirst($oModule->name) . "\\" . "{$run['controller']}";
     $aModuleSettings = $oModule->getModuleSettings();
     $aStructureSettings = $oStructure->getStructureSettings();
     /** @var PublicAreaController $controller */
     $controller = new $controllerName($frame, $manifest, $oStructure);
     foreach ($aStructureSettings as $oStructureSetting) {
         foreach ($aModuleSettings as $oModuleSetting) {
             if ($oModuleSetting->id == $oStructureSetting->module_setting_id) {
                 $controller->{$oModuleSetting->parameter} = $oStructureSetting->value;
             }
         }
     }
     $controller->{$manifest['run']['action']}();
     $aStructureFragments = $oStructure->getStructureFragments();
     foreach ($aStructureFragments as $oStructureFragment) {
         if ($oStructureFragment->active && !$oStructureFragment->deleted) {
             $this->executeModule($oStructureFragment);
         }
     }
 }