Back to ListUserCommand class

Method doExecute

protected int
doExecute
(\Symfony\Component\Console\Input\InputInterface $input, \Symfony\Component\Console\Output\OutputInterface $output)
Internal function to execute the command.
Parameters
  • \Symfony\Component\Console\Input\InputInterface $input The input to inject into the command.
  • \Symfony\Component\Console\Output\OutputInterface $output The output to inject into the command.
Returns
  • int The command exit code
Since
  • 4.0.0

Method doExecute - Source code

/**
 * Internal function to execute the command.
 *
 * @param   InputInterface   $input   The input to inject into the command.
 * @param   OutputInterface  $output  The output to inject into the command.
 *
 * @return  integer  The command exit code
 *
 * @since   4.0.0
 */
protected function doExecute(InputInterface $input, OutputInterface $output) : int
{
    $db = Factory::getDbo();
    $this->configureIO($input, $output);
    $this->ioStyle->title('List users');
    $groupsQuery = $db->getQuery(true)->select($db->quoteName(['title', 'id']))->from($db->quoteName('#__usergroups'));
    $groups = $db->setQuery($groupsQuery)->loadAssocList('id', 'title');
    $query = $db->getQuery(true);
    $query->select($db->quoteName(['u.id', 'u.username', 'u.name', 'u.email', 'u.block']))->select($query->groupConcat($query->castAs('CHAR', $db->quoteName('g.group_id'))) . ' AS ' . $db->quoteName('groups'))->innerJoin($db->quoteName('#__user_usergroup_map', 'g'), $db->quoteName('g.user_id') . ' = ' . $db->quoteName('u.id'))->from($db->quoteName('#__users', 'u'))->group($db->quoteName('u.id'));
    $db->setQuery($query);
    $users = [];
    foreach ($db->loadAssocList() as $user) {
        $user["groups"] = array_map(function ($groupId) use($groups) {
            return $groups[$groupId];
        }, explode(",", $user["groups"]));
        $user["groups"] = implode(", ", $user["groups"]);
        $users[] = $user;
    }
    $this->ioStyle->table(['id', 'username', 'name', 'email', 'blocked', 'groups'], $users);
    return Command::SUCCESS;
}