setName('diagnostics:archiving-metrics'); $this->addNoValueOption( 'json', null, "If supplied, the command will return data in json format" ); $this->setDescription('Show metrics describing the current archiving status'); } protected function doExecute(): int { $input = $this->getInput(); $output = $this->getOutput(); $metrics = $this->getMetrics(); if ($input->getOption('json')) { $output->write(json_encode($metrics)); } else { $headers = ['Metric', 'Value']; $this->renderTable($headers, $metrics); } return self::SUCCESS; } /** * Get an archiving metrics array from the diagnostics class * * @return array * @throws \Piwik\Exception\DI\DependencyException * @throws \Piwik\Exception\DI\NotFoundException */ public function getMetrics(): array { $metrics = []; $informational = new ArchiveInvalidationsInformational(StaticContainer::get(Translator::class)); $diags[] = $informational->execute(); if (is_array($diags)) { foreach (reset($diags) as $diag) { $items = $diag->getItems(); if (count($items) > 0) { $metrics[] = [$diag->getLabel(), reset($items)->getComment()]; } } } return $metrics; } }