settings = $settings; $this->logger = $logger; $this->translator = $translator; parent::__construct(); } protected function configure() { $this->setName('dms:stats') ->setDescription('Print statistics') ->setHelp('Outputs the number of documents, folders, users, etc. in total and how many of them are owned by they users.') ->addOption('json', '', InputOption::VALUE_NONE, 'Print data as json instead of a table') ; } protected function execute(InputInterface $input, OutputInterface $output) : int { $app = $this->getApplication(); $settings = $this->settings; $logger = $this->logger; $translator = $this->translator; require_once('inc/inc.DBInit.php'); foreach (array('docstotal'=>'documents', 'folderstotal'=>'folders', 'userstotal'=>'users', 'groupstotal'=>'groups', 'categoriestotal'=>'categories') as $type=>$name) { $stats['total'][substr($type, 0, -5)] = $dms->getStatisticalData($type); } foreach (array('docsperuser'=>'documents', 'foldersperuser'=>'folders','sizeperuser'=>'size') as $type=>$name) { $stats[$type] = $dms->getStatisticalData($type); } if ($input->getOption('json')) { $output->writeln(json_encode($stats)); } else { if(1) { $table = new Table($output); $table->setHeaders(['Name', 'Count/Size']); foreach($stats['total'] as $k=>$v) $table->addRow([$k, $v]); $table->addRow(new TableSeparator()); $table->addRow([new TableCell($translator->translate('chart_docsperuser_title'), ['colspan' => 2])]); $table->addRow(new TableSeparator()); foreach($stats['docsperuser'] as $v) $table->addRow([$v['key'], $v['total']]); $table->addRow(new TableSeparator()); $table->addRow([new TableCell($translator->translate('chart_foldersperuser_title'), ['colspan' => 2])]); $table->addRow(new TableSeparator()); foreach($stats['foldersperuser'] as $v) $table->addRow([$v['key'], $v['total']]); $table->addRow(new TableSeparator()); $table->addRow([new TableCell($translator->translate('chart_sizeperuser_title'), ['colspan' => 2])]); $table->addRow(new TableSeparator()); foreach($stats['sizeperuser'] as $v) $table->addRow([$v['key'], SeedDMS_Core_File::format_filesize((int)$v['total'])]); $table->render(); } else { $outformat = '%-30s %-10d'; $output->writeln(sprintf($outformat, 'Documents', $stats['docstotal'])); $output->writeln(sprintf($outformat, 'Folders', $stats['folderstotal'])); $output->writeln(sprintf($outformat, 'Users', $stats['userstotal'])); $output->writeln(sprintf($outformat, 'Groups', $stats['groupstotal'])); $output->writeln(sprintf($outformat, 'Categories', $stats['categoriestotal'])); $output->writeln(''); $output->writeln('Documents per user:'); foreach($stats['docsperuser'] as $d) { $output->writeln(sprintf($outformat, $d['key'], $d['total'])); } $output->writeln(''); $output->writeln('Folders per user:'); foreach($stats['foldersperuser'] as $d) { $output->writeln(sprintf($outformat, $d['key'], $d['total'])); } $output->writeln(''); $output->writeln('Size per user:'); foreach($stats['sizeperuser'] as $d) { $output->writeln(sprintf($outformat, $d['key'], $d['total'])); } } } return Command::SUCCESS; } } // vim: ts=4 sw=4 expandtab