/** * GetModules: Returns an array of all registered class names which are derived from iUtopiaModule */ static function GetModules($refresh = false) { if (self::$allmodules === NULL || $refresh) { $rows = array(); $classes = get_declared_classes(); foreach ($classes as $id => $class) { $ref = new ReflectionClass($class); if ($ref->isAbstract()) { continue; } if (!$ref->implementsInterface('iUtopiaModule')) { continue; } $parents = array_values(class_parents($class)); $interfaces = $ref->getInterfaceNames(); $class = array('module_name' => $class); $class['module_id'] = $id; $class['types'] = array_merge($parents, $interfaces); $class['uuid'] = null; if ($ref->isSubclassOf('uBasicModule')) { $class['uuid'] = $class['module_name']::GetUUID(); } $rows[$class['module_name']] = $class; } self::$allmodules = $rows; } return self::$allmodules; }