Esempio n. 1
0
 /**
  * Returns an array of all module classes as string found in the modules folder.
  * 
  * This function does not check the module isAvailable function. So pro modules
  * will be returned even if they can't be decoded. Check the availability manually
  * if needed.
  * 
  * @return array Module class names eg. \GO\Calendar\Module
  */
 public function getAvailableModules($returnInstalled = false)
 {
     $folder = new Fs\Folder(\GO::config()->root_path . 'modules');
     $folders = $folder->ls();
     $modules = array();
     foreach ($folders as $folder) {
         if ($folder->isFolder()) {
             $ucfirst = ucfirst($folder->name());
             //				$moduleClass = $folder->path().'/'.$ucfirst.'Module.php';
             if ($this->isAvailable($folder->name(), false) && ($returnInstalled || !Model\Module::model()->findByPk($folder->name(), false, true))) {
                 $modules[] = 'GO\\' . $ucfirst . '\\' . $ucfirst . 'Module';
             }
         }
     }
     return $modules;
 }
Esempio n. 2
0
 /**
  * Find all classes in a folder.
  * 
  * @param string $subfolder
  * @return \ReflectionClass array
  */
 public function findClasses($subfolder)
 {
     $classes = array();
     $folder = new Fs\Folder($this->path() . $subfolder);
     if ($folder->exists()) {
         $items = $folder->ls();
         foreach ($items as $item) {
             if ($item instanceof Fs\File) {
                 $subParts = explode('/', $subfolder);
                 $subParts = array_map("ucfirst", $subParts);
                 $className = 'GO\\' . ucfirst($this->id()) . '\\' . implode('\\', $subParts) . '\\' . $item->nameWithoutExtension();
                 if (class_exists($className)) {
                     $reflectionClass = new \ReflectionClass($className);
                     if (!$reflectionClass->isAbstract()) {
                         $classes[] = $reflectionClass;
                     }
                 }
             }
         }
     }
     return $classes;
 }
Esempio n. 3
0
 public function getAllLanguage()
 {
     $folder = new Fs\Folder(\GO::config()->root_path . 'language');
     $items = $folder->ls();
     foreach ($items as $folder) {
         if ($folder instanceof Fs\Folder) {
             $this->_loadSection('base', $folder->name());
         }
     }
     //always load users lang for settings panels
     $this->_loadSection('users');
     $modules = \GO::modules()->getAllModules();
     while ($module = array_shift($modules)) {
         $this->_loadSection($module->id);
     }
     return $this->_lang;
 }