diff options
Diffstat (limited to 'plugins/Diagnostics/Controller.php')
-rw-r--r-- | plugins/Diagnostics/Controller.php | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/plugins/Diagnostics/Controller.php b/plugins/Diagnostics/Controller.php new file mode 100644 index 0000000000..be166ccdf9 --- /dev/null +++ b/plugins/Diagnostics/Controller.php @@ -0,0 +1,72 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +namespace Piwik\Plugins\Diagnostics; + +use Piwik\Config; +use Piwik\Piwik; +use Piwik\View; +use Piwik\Settings; + +/** + * A controller let's you for example create a page that can be added to a menu. For more information read our guide + * http://developer.piwik.org/guides/mvc-in-piwik or have a look at the our API references for controller and view: + * http://developer.piwik.org/api-reference/Piwik/Plugin/Controller and + * http://developer.piwik.org/api-reference/Piwik/View + */ +class Controller extends \Piwik\Plugin\ControllerAdmin +{ + /** + * @var ConfigReader + */ + private $configReader; + + public function __construct(ConfigReader $configReader) + { + $this->configReader = $configReader; + parent::__construct(); + } + + public function configfile() + { + Piwik::checkUserHasSuperUserAccess(); + + $allSettings = Settings\Manager::getAllPluginSettings(); + + $configValues = $this->configReader->getConfigValuesFromFiles(); + $configValues = $this->configReader->addConfigValuesFromPluginSettings($configValues, $allSettings); + $configValues = $this->sortConfigValues($configValues); + + return $this->renderTemplate('configfile', array( + 'allConfigValues' => $configValues + )); + } + + private function sortConfigValues($configValues) + { + // we sort by sections alphabetically + uksort($configValues, function ($section1, $section2) { + return strcasecmp($section1, $section2); + }); + + foreach ($configValues as $category => &$settings) { + // we sort keys alphabetically but list the ones that are changed first + uksort($settings, function ($setting1, $setting2) use ($settings) { + if ($settings[$setting1]['isCustomValue'] && !$settings[$setting2]['isCustomValue']) { + return -1; + } elseif (!$settings[$setting1]['isCustomValue'] && $settings[$setting2]['isCustomValue']) { + return 1; + } + return strcasecmp($setting1, $setting2); + }); + } + + return $configValues; + } + +} |