src/Service/MelisCoreModulesService.php
public function getModulesAndVersions($moduleName = null)
    {
        $tmpModules = [];
        $repos = $this->getComposer()->getRepositoryManager()->getLocalRepository();

        $composerFile = $_SERVER['DOCUMENT_ROOT'] . '/../vendor/composer/installed.json';
        $composer = (array) \Zend\Json\Json::decode(file_get_contents($composerFile));
       

        foreach ($composer as $package) {
            $packageModuleName = isset($package->extra) ? (array) $package->extra : null;
            $module = null;
            if (isset($packageModuleName['module-name'])) {
                $module = $packageModuleName['module-name'];
            }

            if ($module) {
                $tmpModules[$module] = [
                    'package' => $package->name,
                    'module' => $module,
                    'version' => $package->version,
                ];

                if ($module == $moduleName) {
                    break;
                }
            }

        }

        $userModules = $this->getUserModules();
        $exclusions = ['MelisModuleConfig', 'MelisSites'];

        foreach ($userModules as $module) {
            if (!in_array($module, $exclusions)) {
                $class = $_SERVER['DOCUMENT_ROOT'] . '/../module/' . $module . '/Module.php';
                $class = file_get_contents($class);

                $package = $module;
                $version = '1.0';

                if (preg_match_all('/@(\w+)\s+(.*)\r?\n/m', $class, $matches)) {

                    $result = array_combine($matches[1], $matches[2]);
                    $version = isset($result['version']) ? $result['version'] : '1.0';
                    $package = isset($result['module']) ? $result['module'] : $module;

                }
                $tmpModules[$package] = [
                    'package' => $package,
                    'module' => $package,
                    'version' => $version,
                ];

            }
        }


        $modules = $tmpModules;


        if (!is_null($moduleName)) {
            return isset($modules[$moduleName]) ? $modules[$moduleName] : null;
        }

        return $modules;
    }
public function getModulesAndVersions($moduleName = null)
    {
        $tmpModules = [];
        $repos = $this->getComposer()->getRepositoryManager()->getLocalRepository();

        $composerFile = $_SERVER['DOCUMENT_ROOT'] . '/../vendor/composer/installed.json';
        $composer = (array) \Zend\Json\Json::decode(file_get_contents($composerFile));
       

        foreach ($composer as $package) {
            $packageModuleName = isset($package->extra) ? (array) $package->extra : null;
            $module = null;
            if (isset($packageModuleName['module-name'])) {
                $module = $packageModuleName['module-name'];
            }

            if ($module) {
                $tmpModules[$module] = [
                    'package' => $package->name,
                    'module' => $module,
                    'version' => $package->version,
                ];

                if ($module == $moduleName) {
                    break;
                }
            }

        }

        $userModules = $this->getUserModules();
        $exclusions = ['MelisModuleConfig', 'MelisSites'];

        foreach ($userModules as $module) {
            if (!in_array($module, $exclusions)) {
                $class = $_SERVER['DOCUMENT_ROOT'] . '/../module/' . $module . '/Module.php';
                $class = file_get_contents($class);

                $package = $module;
                $version = '1.0';

                if (preg_match_all('/@(\w+)\s+(.*)\r?\n/m', $class, $matches)) {

                    $result = array_combine($matches[1], $matches[2]);
                    $version = isset($result['version']) ? $result['version'] : '1.0';
                    $package = isset($result['module']) ? $result['module'] : $module;

                }
                $tmpModules[$package] = [
                    'package' => $package,
                    'module' => $package,
                    'version' => $version,
                ];

            }
        }


        $modules = $tmpModules;


        if (!is_null($moduleName)) {
            return isset($modules[$moduleName]) ? $modules[$moduleName] : null;
        }

        return $modules;
    }
public function getModulesAndVersions ( $ moduleName = null ) { $ tmpModules = [ ] ; $ repos = $ this -> getComposer ( ) -> getRepositoryManager ( ) -> getLocalRepository ( ) ; $ composerFile = $ _SERVER [ 'DOCUMENT_ROOT' ] . '/../vendor/composer/installed.json' ; $ composer = ( array ) \ Zend \ Json \ Json :: decode ( file_get_contents ( $ composerFile ) ) ; foreach ( $ composer as $ package ) { $ packageModuleName = isset ( $ package -> extra ) ? ( array ) $ package -> extra : null ; $ module = null ; if ( isset ( $ packageModuleName [ 'module-name' ] ) ) { $ module = $ packageModuleName [ 'module-name' ] ; } if ( $ module ) { $ tmpModules [ $ module ] = [ 'package' => $ package -> name , 'module' => $ module , 'version' => $ package -> version , ] ; if ( $ module == $ moduleName ) { break ; } } } $ userModules = $ this -> getUserModules ( ) ; $ exclusions = [ 'MelisModuleConfig' , 'MelisSites' ] ; foreach ( $ userModules as $ module ) { if ( ! in_array ( $ module , $ exclusions ) ) { $ class = $ _SERVER [ 'DOCUMENT_ROOT' ] . '/../module/' . $ module . '/Module.php' ; $ class = file_get_contents ( $ class ) ; $ package = $ module ; $ version = '1.0' ; if ( preg_match_all ( '/@(\w+)\s+(.*)\r?\n/m' , $ class , $ matches ) ) { $ result = array_combine ( $ matches [ 1 ] , $ matches [ 2 ] ) ; $ version = isset ( $ result [ 'version' ] ) ? $ result [ 'version' ] : '1.0' ; $ package = isset ( $ result [ 'module' ] ) ? $ result [ 'module' ] : $ module ; } $ tmpModules [ $ package ] = [ 'package' => $ package , 'module' => $ package , 'version' => $ version , ] ; } } $ modules = $ tmpModules ; if ( ! is_null ( $ moduleName ) ) { return isset ( $ modules [ $ moduleName ] ) ? $ modules [ $ moduleName ] : null ; } return $ modules ; }
Returns the module name, module package, and its' version

@param null $moduleName - provide the module name if you want to get the package specific information

@return array
Returns the module name module package and its version