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; } }