Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 29
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
ConfigController
0.00% covered (danger)
0.00%
0 / 29
0.00% covered (danger)
0.00%
0 / 2
42
0.00% covered (danger)
0.00%
0 / 1
 homeAction
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
6
 enableautoconfigAction
0.00% covered (danger)
0.00%
0 / 21
0.00% covered (danger)
0.00%
0 / 1
20
1<?php
2
3/**
4 * Admin Configuration Controller
5 *
6 * PHP version 8
7 *
8 * Copyright (C) Villanova University 2010.
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License version 2,
12 * as published by the Free Software Foundation.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
22 *
23 * @category VuFind
24 * @package  Controller
25 * @author   Demian Katz <demian.katz@villanova.edu>
26 * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
27 * @link     https://vufind.org Main Site
28 */
29
30namespace VuFindAdmin\Controller;
31
32/**
33 * Class controls VuFind administration.
34 *
35 * @category VuFind
36 * @package  Controller
37 * @author   Demian Katz <demian.katz@villanova.edu>
38 * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
39 * @link     https://vufind.org Main Site
40 */
41class ConfigController extends AbstractAdmin
42{
43    /**
44     * Configuration management
45     *
46     * @return \Laminas\View\Model\ViewModel
47     */
48    public function homeAction()
49    {
50        $view = $this->createViewModel();
51        $view->setTemplate('admin/config/home');
52        $resolver = $this->serviceLocator->get(\VuFind\Config\PathResolver::class);
53        $view->baseConfigPath = $resolver->getBaseConfigPath('');
54        $conf = $this->getConfig();
55        $view->showInstallLink
56            = isset($conf->System->autoConfigure) && $conf->System->autoConfigure;
57        return $view;
58    }
59
60    /**
61     * Support action for config -- attempt to enable auto configuration.
62     *
63     * @return mixed
64     */
65    public function enableautoconfigAction()
66    {
67        $resolver = $this->serviceLocator->get(\VuFind\Config\PathResolver::class);
68        if (!($configFile = $resolver->getLocalConfigPath('config.ini'))) {
69            $this->flashMessenger()->addErrorMessage(
70                'Could not enable auto-configuration; local '
71                . $configFile . ' not found.'
72            );
73            return $this->forwardTo('AdminConfig', 'Home');
74        }
75        $writer = new \VuFind\Config\Writer($configFile);
76        $writer->set('System', 'autoConfigure', 1);
77        $success = false;
78        try {
79            $success = $writer->save();
80        } catch (\Exception $e) {
81            // Failure -- leave $success set to false.
82        }
83        if ($success) {
84            $this->flashMessenger()->addSuccessMessage('Auto-configuration enabled.');
85
86            // Reload config now that it has been edited (otherwise, old setting
87            // will persist in cache):
88            $this->serviceLocator->get(\VuFind\Config\PluginManager::class)
89                ->reload('config');
90        } else {
91            $this->flashMessenger()->addErrorMessage(
92                'Could not enable auto-configuration; check permissions on '
93                . $configFile . '.'
94            );
95        }
96        return $this->forwardTo('AdminConfig', 'Home');
97    }
98}