/**
  * {@inheritdoc}
  */
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     $cache = $input->getArgument('cache');
     if (!$cache) {
         $cacheKeys = array_keys($this->drupalApi->getCaches());
         $cache = $io->choiceNoList($this->trans('commands.cache.rebuild.questions.cache'), $cacheKeys, 'all');
         $input->setArgument('cache', $cache);
     }
 }
 /**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     $roles = $input->getOption('roles');
     $limit = $input->getOption('limit');
     $uids = $this->splitOption($input->getOption('uid'));
     $usernames = $this->splitOption($input->getOption('username'));
     $mails = $this->splitOption($input->getOption('mail'));
     $userStorage = $this->entityTypeManager->getStorage('user');
     $systemRoles = $this->drupalApi->getRoles();
     $query = $this->entityQuery->get('user');
     $query->condition('uid', 0, '>');
     $query->sort('uid');
     // uid as option
     if (is_array($uids) && $uids) {
         $group = $query->andConditionGroup()->condition('uid', $uids, 'IN');
         $query->condition($group);
     }
     // username as option
     if (is_array($usernames) && $usernames) {
         $group = $query->andConditionGroup()->condition('name', $usernames, 'IN');
         $query->condition($group);
     }
     // mail as option
     if (is_array($mails) && $mails) {
         $group = $query->andConditionGroup()->condition('mail', $mails, 'IN');
         $query->condition($group);
     }
     if ($roles) {
         $query->condition('roles', is_array($roles) ? $roles : [$roles], 'IN');
     }
     if ($limit) {
         $query->range(0, $limit);
     }
     $results = $query->execute();
     $users = $userStorage->loadMultiple($results);
     $tableHeader = [$this->trans('commands.user.debug.messages.user-id'), $this->trans('commands.user.debug.messages.username'), $this->trans('commands.user.debug.messages.roles'), $this->trans('commands.user.debug.messages.status')];
     $tableRows = [];
     foreach ($users as $userId => $user) {
         $userRoles = [];
         foreach ($user->getRoles() as $userRole) {
             $userRoles[] = $systemRoles[$userRole];
         }
         $status = $user->isActive() ? $this->trans('commands.common.status.enabled') : $this->trans('commands.common.status.disabled');
         $tableRows[] = [$userId, $user->getUsername(), implode(', ', $userRoles), $status];
     }
     $io->table($tableHeader, $tableRows);
 }
 /**
  * {@inheritdoc}
  */
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     $username = $input->getArgument('username');
     while (!$username) {
         $username = $io->askEmpty($this->trans('commands.user.create.questions.username'), null);
     }
     $input->setArgument('username', $username);
     $password = $input->getArgument('password');
     if (!$password) {
         $password = $io->askEmpty($this->trans('commands.user.create.questions.password'), null);
     }
     $input->setArgument('password', $password);
     $roles = $input->getOption('roles');
     if (!$roles) {
         $systemRoles = $this->drupalApi->getRoles(false, false, false);
         $roles = $io->choice($this->trans('commands.user.create.questions.roles'), array_values($systemRoles), null, true);
         $roles = array_map(function ($role) use($systemRoles) {
             return array_search($role, $systemRoles);
         }, $roles);
         $input->setOption('roles', $roles);
     }
     $email = $input->getOption('email');
     if (!$email) {
         $email = $io->askEmpty($this->trans('commands.user.create.questions.email'), null);
     }
     $input->setOption('email', $email);
     $status = $input->getOption('status');
     if (!$status) {
         $status = $io->choice($this->trans('commands.user.create.questions.status'), [0, 1], 1);
     }
     $input->setOption('status', $status);
 }
 /**
  * {@inheritdoc}
  */
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     $userId = $input->getOption('user-id');
     if (!$userId) {
         $userId = $io->askEmpty($this->trans('commands.user.delete.questions.user-id'), null);
         $input->setOption('user-id', $userId);
     }
     $roles = $input->getOption('roles');
     if (!$userId && !$roles) {
         $systemRoles = $this->drupalApi->getRoles(false, false, false);
         $roles = $io->choice($this->trans('commands.user.delete.questions.roles'), array_values($systemRoles), null, true);
         $roles = array_map(function ($role) use($systemRoles) {
             return array_search($role, $systemRoles);
         }, $roles);
         $input->setOption('roles', $roles);
     }
 }
 /**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     $bundles = $this->drupalApi->getBundles();
     foreach ($bundles as $bundleType => $bundleName) {
         $key = sprintf($this->trans('commands.site.statistics.messages.node-type'), $bundleName);
         $statistics[$key] = $this->getNodeTypeCount($bundleType);
     }
     $statistics[$this->trans('commands.site.statistics.messages.comments')] = $this->getCommentCount();
     $statistics[$this->trans('commands.site.statistics.messages.vocabulary')] = $this->getTaxonomyVocabularyCount();
     $statistics[$this->trans('commands.site.statistics.messages.taxonomy-terms')] = $this->getTaxonomyTermCount();
     $statistics[$this->trans('commands.site.statistics.messages.files')] = $this->getFileCount();
     $statistics[$this->trans('commands.site.statistics.messages.users')] = $this->getUserCount();
     $statistics[$this->trans('commands.site.statistics.messages.views')] = $this->getViewCount();
     $statistics[$this->trans('commands.site.statistics.messages.modules-enabled')] = $this->getModuleCount(true);
     $statistics[$this->trans('commands.site.statistics.messages.modules-disabled')] = $this->getModuleCount(false);
     $statistics[$this->trans('commands.site.statistics.messages.themes-enabled')] = $this->getThemeCount(true);
     $statistics[$this->trans('commands.site.statistics.messages.themes-disabled')] = $this->getThemeCount(false);
     $this->statisticsList($io, $statistics);
 }
Beispiel #6
0
 /**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     $operation = $input->getArgument('operation');
     $user = $input->getArgument('user');
     $role = $input->getArgument('role');
     $systemRoles = $this->drupalApi->getRoles();
     if (is_numeric($user)) {
         $userObject = user_load($user);
     } else {
         $userObject = user_load_by_name($user);
     }
     if (!is_object($userObject)) {
         if (!filter_var($user, FILTER_VALIDATE_EMAIL) === false) {
             $userObject = user_load_by_mail($user);
         }
     }
     if (!is_object($userObject)) {
         $io->error(sprintf($this->trans('commands.user.role.messages.no-user-found'), $user));
         return 1;
     }
     if (!array_key_exists($role, $systemRoles)) {
         $io->error(sprintf($this->trans('commands.user.role.messages.no-role-found'), $role));
         return 1;
     }
     if ("add" == $operation) {
         $userObject->addRole($role);
         $userObject->save();
         $io->success(sprintf($this->trans('commands.user.role.messages.add-success'), $userObject->name->value . " (" . $userObject->mail->value . ") ", $role));
     }
     if ("remove" == $operation) {
         $userObject->removeRole($role);
         $userObject->save();
         $io->success(sprintf($this->trans('commands.user.role.messages.remove-success'), $userObject->name->value . " (" . $userObject->mail->value . ") ", $role));
     }
 }
 /**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     $vocabularies = $input->getArgument('vocabularies');
     $limit = $input->getOption('limit') ?: 25;
     $nameWords = $input->getOption('name-words') ?: 5;
     if (!$vocabularies) {
         $vocabularies = array_keys($this->drupalApi->getVocabularies());
     }
     $terms = $this->createTermData->create($vocabularies, $limit, $nameWords);
     $tableHeader = [$this->trans('commands.create.terms.messages.term-id'), $this->trans('commands.create.terms.messages.vocabulary'), $this->trans('commands.create.terms.messages.name')];
     $io->table($tableHeader, $terms['success']);
     $io->success(sprintf($this->trans('commands.create.terms.messages.created-terms'), $limit));
     return 0;
 }
 /**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     $roles = $input->getArgument('roles');
     $limit = $input->getOption('limit') ?: 25;
     $password = $input->getOption('password');
     $timeRange = $input->getOption('time-range') ?: 31536000;
     if (!$roles) {
         $roles = $this->drupalApi->getRoles();
     }
     $users = $this->createUserData->create($roles, $limit, $password, $timeRange);
     $tableHeader = [$this->trans('commands.create.users.messages.user-id'), $this->trans('commands.create.users.messages.username'), $this->trans('commands.create.users.messages.roles'), $this->trans('commands.create.users.messages.created')];
     if ($users['success']) {
         $io->table($tableHeader, $users['success']);
         $io->success(sprintf($this->trans('commands.create.users.messages.created-users'), $limit));
     }
     return 0;
 }
 /**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     $modules = $input->getArgument('module');
     $latest = $input->getOption('latest');
     $path = $input->getOption('path');
     $composer = $input->getOption('composer');
     $unstable = true;
     if ($composer) {
         foreach ($modules as $module) {
             if (!$latest) {
                 $versions = $this->drupalApi->getPackagistModuleReleases($module, 10, $unstable);
                 if (!$versions) {
                     $io->error(sprintf($this->trans('commands.module.download.messages.no-releases'), $module));
                     return 1;
                 } else {
                     $version = $io->choice($this->trans('commands.site.new.questions.composer-release'), $versions);
                 }
             } else {
                 $versions = $this->drupalApi->getPackagistModuleReleases($module, 10, $unstable);
                 if (!$versions) {
                     $io->error(sprintf($this->trans('commands.module.download.messages.no-releases'), $module));
                     return 1;
                 } else {
                     $version = current($this->drupalApi->getPackagistModuleReleases($module, 1, $unstable));
                 }
             }
             // Register composer repository
             $command = "composer config repositories.drupal composer https://packagist.drupal-composer.org";
             $this->shellProcess->exec($command, $this->root);
             $command = sprintf('composer require drupal/%s:%s --prefer-dist --optimize-autoloader --sort-packages --update-no-dev', $module, $version);
             if ($this->shellProcess->exec($command, $this->root)) {
                 $io->success(sprintf($this->trans('commands.module.download.messages.composer'), $module));
             }
         }
     } else {
         $this->downloadModules($io, $modules, $latest, $path);
     }
     return true;
 }
Beispiel #10
0
 /**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     $contentTypes = $input->getArgument('content-types');
     $limit = $input->getOption('limit') ?: 25;
     $titleWords = $input->getOption('title-words') ?: 5;
     $timeRange = $input->getOption('time-range') ?: 31536000;
     $available_types = array_keys($this->drupalApi->getBundles());
     foreach ($contentTypes as $type) {
         if (!in_array($type, $available_types)) {
             throw new \Exception('Invalid content type name given.');
         }
     }
     if (!$contentTypes) {
         $contentTypes = $available_types;
     }
     $nodes = $this->createNodeData->create($contentTypes, $limit, $titleWords, $timeRange);
     $tableHeader = [$this->trans('commands.create.nodes.messages.node-id'), $this->trans('commands.create.nodes.messages.content-type'), $this->trans('commands.create.nodes.messages.title'), $this->trans('commands.create.nodes.messages.created')];
     $io->table($tableHeader, $nodes['success']);
     $io->success(sprintf($this->trans('commands.create.nodes.messages.created-nodes'), $limit));
     return 0;
 }