Example #1
0
 /**
  * Initializes the bundle names by fetching those containing modules with adjustable templates
  */
 protected function InitBundles()
 {
     $bundles = PathUtil::Bundles();
     $this->bundles = array();
     foreach ($bundles as $bundle) {
         if (count($this->BundleModules($bundle)) > 0) {
             $this->bundles[] = $bundle;
         }
     }
 }
Example #2
0
 /**
  * Gets all bundles containing backend modules
  * @return string[] Returns all bundle names
  */
 protected function Bundles()
 {
     $bundles = PathUtil::Bundles();
     $result = array();
     foreach ($bundles as $bundle) {
         if (count($this->Modules($bundle)) > 0) {
             $result[] = $bundle;
         }
     }
     return $result;
 }
Example #3
0
 private function AddModulesField()
 {
     $name = 'Module';
     $select = new Select($name, '');
     $select->AddOption('', Trans('Core.PleaseSelect'));
     $this->AddField($select);
     $this->SetRequired($name);
     foreach (PathUtil::Bundles() as $bundle) {
         $modules = PathUtil::FrontendModules($bundle);
         foreach ($modules as $moduleName) {
             $type = ClassFinder::CalcModuleType($bundle, $moduleName);
             $module = ClassFinder::CreateFrontendModule($type);
             if ($module instanceof FrontendModule && self::Guard()->Allow(BackendAction::UseIt(), $module->ContentForm())) {
                 $this->AddModuleTypeOption($select, $type);
             }
             //$select->AddOption($type, Trans($type));
         }
     }
 }
Example #4
0
 /**
  * The modules for the backend navigation
  * @return Returns an array with bundle names as keys and backend modules as list
  */
 static function BackendNavModules()
 {
     $result = array();
     $allBundles = PathUtil::Bundles();
     //force Core to appear first
     $coreKey = array_search('Core', $allBundles);
     unset($allBundles[$coreKey]);
     array_unshift($allBundles, 'Core');
     $bundles = array_values($allBundles);
     foreach ($bundles as $bundle) {
         $modules = PathUtil::BackendModules($bundle);
         foreach ($modules as $module) {
             $type = self::CalcModuleType($bundle, $module);
             $instance = self::CreateBackendModule($type);
             if (!$instance instanceof BackendModule) {
                 continue;
             }
             if ($instance->SideNavIndex() >= 0 && BackendModule::Guard()->Allow(BackendAction::Read(), $instance)) {
                 self::AddBackendNavModule($result, $instance);
             }
         }
     }
     return self::SortByNavIndex($result);
 }
Example #5
0
 /**
  * Clears installed bundles
  */
 private function ClearInstalledBundles()
 {
     //Clear bundles without code folder
     $bundles = PathUtil::Bundles();
     $sql = new Sql\Builder($this->connection);
     $inList = $sql->InListFromValues($bundles);
     $tbl = InstalledBundle::Schema()->Table();
     $where = $sql->NotIn($tbl->Field('Bundle'), $inList);
     InstalledBundle::Schema()->Delete($where);
     //Clear failed bundles
     $failedList = $sql->InListFromValues(array_keys($this->failedBundles));
     if ($failedList) {
         InstalledBundle::Schema()->Delete($sql->In($tbl->Field('Bundle'), $failedList));
     }
 }