Esempio n. 1
0
 /**
  * Check if a module is available
  * 
  * @param string $moduleId
  * @param boolean Check the module manager class isAvailable function too. (Used in pro modules to check license for example).
  * @return boolean
  */
 public function isAvailable($moduleId, $checkModuleAvailabiltiy = true)
 {
     if (!$this->_isAllowed($moduleId)) {
         return false;
     }
     $folder = new Fs\Folder(\GO::config()->root_path . 'modules/' . $moduleId);
     $ucfirst = ucfirst($moduleId);
     $moduleClassPath = $folder->path() . '/' . $ucfirst . 'Module.php';
     if (!file_exists($moduleClassPath)) {
         // || !\GO::scriptCanBeDecoded($moduleClassPath)){
         return false;
     }
     $moduleClass = 'GO\\' . $ucfirst . '\\' . $ucfirst . 'Module';
     if (!class_exists($moduleClass)) {
         return false;
     }
     if ($checkModuleAvailabiltiy) {
         $mod = new $moduleClass();
         return $mod->isAvailable();
     } else {
         return true;
     }
 }
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;
 }