public function getExtensions() { if (is_null($this->extensions) && $this->filesystem->exists($this->app->basePath() . '/vendor/composer/installed.json')) { $extensions = new Collection(); // Load all packages installed by composer. $installed = json_decode($this->filesystem->get($this->app->basePath() . '/vendor/composer/installed.json'), true); foreach ($installed as $package) { if (Arr::get($package, 'type') != 'flarum-extension' || empty(Arr::get($package, 'name'))) { continue; } // Instantiates an Extension object using the package path and composer.json file. $extension = new Extension($this->getExtensionsDir() . '/' . Arr::get($package, 'name'), $package); // Per default all extensions are installed if they are registered in composer. $extension->setInstalled(true); $extension->setVersion(Arr::get($package, 'version')); $extension->setEnabled($this->isEnabled($extension->getId())); $extensions->put($extension->getId(), $extension); } $this->extensions = $extensions->sortBy(function ($extension, $name) { return $extension->composerJsonAttribute('extra.flarum-extension.title'); }); } return $this->extensions; }
/** * {@inheritdoc} */ protected function getView(ServerRequestInterface $request) { $view = parent::getView($request); $settings = $this->settings->all(); $this->events->fire(new PrepareUnserializedSettings($settings)); $view->setVariable('settings', $settings); $view->setVariable('permissions', Permission::map()); $view->setVariable('extensions', $this->extensions->getExtensions()->toArray()); return $view; }