mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-11-28 02:20:41 +00:00
84 lines
3.1 KiB
PHP
84 lines
3.1 KiB
PHP
<?php
|
|
namespace Seeddms\Console\Commands;
|
|
|
|
use Symfony\Component\Console\Command\Command;
|
|
use Symfony\Component\Console\Input\InputInterface;
|
|
use Symfony\Component\Console\Output\OutputInterface;
|
|
use Symfony\Component\Console\Input\InputArgument;
|
|
use Symfony\Component\Console\Input\InputOption;
|
|
|
|
use Seeddms\Seeddms\Settings;
|
|
use Seeddms\Seeddms\Translator;
|
|
use Log_file;
|
|
|
|
class StatsCommand extends Command
|
|
{
|
|
protected $settings;
|
|
|
|
protected $logger;
|
|
|
|
protected $translator;
|
|
|
|
public function __construct(Settings $settings, Log_file $logger, Translator $translator)
|
|
{
|
|
$this->settings = $settings;
|
|
$this->logger = $logger;
|
|
$this->translator = $translator;
|
|
parent::__construct();
|
|
}
|
|
|
|
protected function configure()
|
|
{
|
|
$this->setName('dms:stats')
|
|
->setDescription('Prints Statistics')
|
|
->setHelp('Demonstration of custom commands created by Symfony Console component.')
|
|
->addOption('json', '', InputOption::VALUE_NONE, 'Export data as json')
|
|
;
|
|
}
|
|
|
|
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[$type] = $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 {
|
|
$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
|