use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
class Report extends Command {
public const DEFAULT_COUNT_DIRS_MAX_USERS = 500;
/** @var IUserManager */
protected $userManager;
/** @var IConfig */
private $config;
/**
* @param IUserManager $userManager
*/
public function __construct(IUserManager $userManager, IConfig $config) {
public function __construct(IUserManager $userManager,
IConfig $config) {
$this->userManager = $userManager;
$this->config = $config;
parent::__construct();
}
protected function configure() {
protected function configure(): void {
$this
->setName('user:report')
->setDescription('shows how many users have access');
->setDescription('shows how many users have access')
->addOption(
'count-dirs',
null,
InputOption::VALUE_NONE,
'Also count the number of user directories in the database (could time out on huge installations, therefore defaults to no with ' . self::DEFAULT_COUNT_DIRS_MAX_USERS . '+ users)'
)
;
}
protected function execute(InputInterface $input, OutputInterface $output): int {
$table = new Table($output);
$table->setHeaders(['User Report', '']);
$userCountArray = $this->countUsers();
$total = 0;
if (!empty($userCountArray)) {
$total = 0;
$rows = [];
foreach ($userCountArray as $classname => $users) {
$total += $users;
@ -72,10 +83,12 @@ class Report extends Command {
} else {
$rows[] = ['No backend enabled that supports user counting', ''];