setName('customvariables:info');
$this->setDescription('Get info about configured custom variables');
}
protected function doExecute(): int
{
$output = $this->getOutput();
$maxVars = CustomVariables::getNumUsableCustomVariables();
if ($this->hasEverywhereSameAmountOfVariables()) {
$this->writeSuccessMessage([
'Your Matomo is configured for ' . $maxVars . ' custom variables.'
]);
return self::SUCCESS;
}
$output->writeln('There is a problem with your custom variables configuration:');
$output->writeln('Some database tables miss custom variables columns.');
$output->writeln('');
$output->writeln('Your Matomo seems to be configured for ' . $maxVars . ' custom variables.');
$output->writeln('Executing "./console customvariables:set-max-custom-variables ' . $maxVars . '" might fix this issue.');
$output->writeln('If not check the following tables whether they have the same columns starting with custom_var_: ');
foreach (Model::getScopes() as $scope) {
$output->writeln(Common::prefixTable($scope));
}
return self::SUCCESS;
}
private function hasEverywhereSameAmountOfVariables()
{
$indexesBefore = null;
foreach (Model::getScopes() as $scope) {
$model = new Model($scope);
$indexes = $model->getCustomVarIndexes();
if (is_null($indexesBefore)) {
$indexesBefore = $indexes;
} elseif ($indexes != $indexesBefore) {
return false;
}
}
return true;
}
}