Files
Phraseanet/lib/Alchemy/Phrasea/Command/Report/CountUsersCommand.php
Aina Sitraka e7b280a70c PHRAS-3823 Report - command line report generator (#4265)
* command report connections

* some report

* prefix beta

* Update .dockerignore

* some fix, add range option

---------

Co-authored-by: Nicolas Maillat <maillat@alchemy.fr>
2023-03-11 16:40:27 +01:00

67 lines
2.0 KiB
PHP

<?php
namespace Alchemy\Phrasea\Command\Report;
use Alchemy\Phrasea\Report\ReportUsers;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
class CountUsersCommand extends AbstractReportCommand
{
const TYPES = [
'added,year',
'added,year,month',
];
public function __construct()
{
parent::__construct('count:users');
$this
->setDescription('BETA - Get users count')
->addOption('type', null, InputOption::VALUE_REQUIRED, 'type of users count report')
->setHelp(
"eg: bin/report count:users --databox_id 2 --email 'admin@alchemy.fr' --dmin '2022-01-01' --dmax '2023-01-01' --type 'added,year,month' \n"
. "\<TYPE>type users count report\n"
. "- <info>'added,year'</info> number of newly added user per year\n"
. "- <info>'added,year,month' </info> number of newly added user per year, month\n"
);
}
/**
* @inheritDoc
*/
protected function getReport(InputInterface $input, OutputInterface $output)
{
$type = $input->getOption('type');
$this->isAppboxConnection = true;
if (!empty($type) && !in_array($type, self::TYPES)) {
$output->writeln("<error>wrong '--type' option (--help for available value)</error>");
return 1;
}
// get just one databox registered to initialize the base class Report
$databoxes = $this->container->getDataboxes();
if (count($databoxes) > 0) {
$databox = current($databoxes);
} else {
throw new NotFoundHttpException("NO databox set on this application");
}
return new ReportUsers(
$databox,
[
'dmin' => $this->dmin,
'dmax' => $this->dmax,
'group' => $type
]
);
}
}