Jarves\Controller\Admin\BundleManager\ManagerController::getInstalledAction PHP Method

getInstalledAction() public method

public getInstalledAction ( ) : array
return array
    public function getInstalledAction()
    {
        $packages = [];
        $bundles = [];
        $fs = $this->localFilesystem;
        if ($fs->has('composer.json')) {
            $composer = $fs->read('composer.json');
            if ($composer) {
                $composer = json_decode($composer, true);
                $installedVersions = [];
                if ($fs->has('composer.lock')) {
                    $locker = $fs->read('composer.lock');
                    $locker = json_decode($locker, true);
                    if ($locker) {
                        foreach ($locker['packages'] as $package) {
                            $version = $package['version'];
                            $ref = false;
                            if ('dev-master' === $version) {
                                if ($package['source']) {
                                    $ref = substr($package['source']['reference'], 0, 7);
                                } else {
                                    if ($package['dist']) {
                                        $ref = substr($package['source']['reference'], 0, 7);
                                    }
                                }
                            }
                            if ($ref) {
                                $version = ['version' => $version, 'reference' => $ref];
                            }
                            $installedVersions[strtolower($package['name'])] = $version;
                        }
                    }
                }
                $packages = [];
                foreach ((array) $composer['require'] as $name => $version) {
                    if ('php' == $name) {
                        continue;
                    }
                    $package = ['name' => $name, 'version' => $version, 'installed' => @$installedVersions[strtolower($name)]];
                    $packages[] = $package;
                }
            }
        }
        $bundleClasses = array_merge($this->getBundlesFromPath('vendor'), $this->getBundlesFromPath('src'));
        if ($bundleClasses) {
            foreach ($bundleClasses as $bundle) {
                if (!class_exists($bundle)) {
                    continue;
                }
                $reflection = new \ReflectionClass($bundle);
                $current = realpath($this->jarves->getRootDir() . '/../');
                $path = substr(dirname($reflection->getFileName()), strlen($current) + 1);
                if (false !== strpos($path, 'vendor/')) {
                    $expl = explode('/', $path);
                    $package = $expl[1] . '/' . $expl[2];
                } else {
                    $package = 'local ./src/';
                }
                $bundleInfo = ['class' => $bundle, 'package' => $package, 'path' => $reflection->getFileName(), 'active' => $this->jarves->isActiveBundle($bundle)];
                $bundles[] = $bundleInfo;
            }
        }
        return ['packages' => $packages, 'bundles' => $bundles];
    }