/** * @param $extension * @return bool */ protected function isExtensionInstalled($extension) { if (!$this->extensions) { $modules = $this->extensionManager->discoverModules()->showCore()->showNoCore()->showInstalled()->getList(TRUE); $themes = $this->extensionManager->discoverThemes()->showCore()->showNoCore()->showInstalled()->getList(TRUE); $profiles = $this->extensionManager->discoverProfiles()->showCore()->showNoCore()->showInstalled()->getList(TRUE); $this->extensions = array_merge($modules, $themes, $profiles); } return in_array($extension, $this->extensions); }
/** * {@inheritdoc} */ protected function interact(InputInterface $input, OutputInterface $output) { $io = new DrupalStyle($input, $output); // --profile option $profile = $input->getArgument('profile'); if (!$profile) { $profiles = $this->extensionManager->discoverProfiles()->showCore()->showNoCore()->showInstalled()->showUninstalled()->getList(true); $profiles = array_filter($profiles, function ($profile) { return strpos($profile, 'testing') !== 0; }); $profile = $io->choice($this->trans('commands.site.install.questions.profile'), $profiles); $input->setArgument('profile', $profile); } // // --langcode option $langcode = $input->getOption('langcode'); if (!$langcode) { $languages = $this->site->getStandardLanguages(); $defaultLanguage = $this->configurationManager->getConfiguration()->get('application.language'); $langcode = $io->choiceNoList($this->trans('commands.site.install.questions.langcode'), $languages, $languages[$defaultLanguage]); $input->setOption('langcode', $langcode); } // Use default database setting if is available $database = Database::getConnectionInfo(); if (empty($database['default'])) { // --db-type option $dbType = $input->getOption('db-type'); if (!$dbType) { $databases = $this->site->getDatabaseTypes(); $dbType = $io->choice($this->trans('commands.migrate.setup.questions.db-type'), array_column($databases, 'name')); foreach ($databases as $dbIndex => $database) { if ($database['name'] == $dbType) { $dbType = $dbIndex; } } $input->setOption('db-type', $dbType); } if ($dbType === 'sqlite') { // --db-file option $dbFile = $input->getOption('db-file'); if (!$dbFile) { $dbFile = $io->ask($this->trans('commands.migrate.execute.questions.db-file'), 'sites/default/files/.ht.sqlite'); $input->setOption('db-file', $dbFile); } } else { // --db-host option $dbHost = $input->getOption('db-host'); if (!$dbHost) { $dbHost = $this->dbHostQuestion($io); $input->setOption('db-host', $dbHost); } // --db-name option $dbName = $input->getOption('db-name'); if (!$dbName) { $dbName = $this->dbNameQuestion($io); $input->setOption('db-name', $dbName); } // --db-user option $dbUser = $input->getOption('db-user'); if (!$dbUser) { $dbUser = $this->dbUserQuestion($io); $input->setOption('db-user', $dbUser); } // --db-pass option $dbPass = $input->getOption('db-pass'); if (!$dbPass) { $dbPass = $this->dbPassQuestion($io); $input->setOption('db-pass', $dbPass); } // --db-port prefix $dbPort = $input->getOption('db-port'); if (!$dbPort) { $dbPort = $this->dbPortQuestion($io); $input->setOption('db-port', $dbPort); } } // --db-prefix $dbPrefix = $input->getOption('db-prefix'); if (!$dbPrefix) { $dbPrefix = $this->dbPrefixQuestion($io); $input->setOption('db-prefix', $dbPrefix); } } else { $input->setOption('db-type', $database['default']['driver']); $input->setOption('db-host', $database['default']['host']); $input->setOption('db-name', $database['default']['database']); $input->setOption('db-user', $database['default']['username']); $input->setOption('db-pass', $database['default']['password']); $input->setOption('db-port', $database['default']['port']); $input->setOption('db-prefix', $database['default']['prefix']['default']); $io->info(sprintf($this->trans('commands.site.install.messages.using-current-database'), $database['default']['driver'], $database['default']['database'], $database['default']['username'])); } // --site-name option $siteName = $input->getOption('site-name'); if (!$siteName) { $siteName = $io->ask($this->trans('commands.site.install.questions.site-name'), 'Drupal 8 Site Install'); $input->setOption('site-name', $siteName); } // --site-mail option $siteMail = $input->getOption('site-mail'); if (!$siteMail) { $siteMail = $io->ask($this->trans('commands.site.install.questions.site-mail'), '*****@*****.**'); $input->setOption('site-mail', $siteMail); } // --account-name option $accountName = $input->getOption('account-name'); if (!$accountName) { $accountName = $io->ask($this->trans('commands.site.install.questions.account-name'), 'admin'); $input->setOption('account-name', $accountName); } // --account-pass option $accountPass = $input->getOption('account-pass'); if (!$accountPass) { $accountPass = $io->askHidden($this->trans('commands.site.install.questions.account-pass')); $input->setOption('account-pass', $accountPass); } // --account-mail option $accountMail = $input->getOption('account-mail'); if (!$accountMail) { $accountMail = $io->ask($this->trans('commands.site.install.questions.account-mail'), $siteMail); $input->setOption('account-mail', $accountMail); } }