/** * 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; } } }
/** * 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; }
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)); } } }
/** * 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); }
/** * 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)); } }