mirror of
				https://github.com/Icinga/icingaweb2.git
				synced 2025-11-04 13:14:41 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			112 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
// @codeCoverageIgnoreStart
 | 
						|
// {{{ICINGA_LICENSE_HEADER}}}
 | 
						|
// {{{ICINGA_LICENSE_HEADER}}}
 | 
						|
 | 
						|
use Icinga\Web\Session;
 | 
						|
use Icinga\Web\Wizard\Wizard;
 | 
						|
use Icinga\Web\Controller\ActionController;
 | 
						|
 | 
						|
class InstallController extends ActionController
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * Whether the controller requires the user to be authenticated
 | 
						|
     *
 | 
						|
     * The install wizard has its own authentication mechanism.
 | 
						|
     *
 | 
						|
     * @var bool
 | 
						|
     */
 | 
						|
    protected $requiresAuthentication = false;
 | 
						|
 | 
						|
    /**
 | 
						|
     * Whether the controller requires configuration
 | 
						|
     *
 | 
						|
     * The install wizard does not require any configuration.
 | 
						|
     *
 | 
						|
     * @var bool
 | 
						|
     */
 | 
						|
    protected $requiresConfiguration = false;
 | 
						|
 | 
						|
    /**
 | 
						|
     * Show the wizard and run the installation once its finished
 | 
						|
     */
 | 
						|
    public function indexAction()
 | 
						|
    {
 | 
						|
        $wizard = $this->createWizard();
 | 
						|
 | 
						|
        if ($wizard->isSubmittedAndValid()) {
 | 
						|
            $wizard->navigate();
 | 
						|
            if ($wizard->isFinished()) {
 | 
						|
                // TODO: Run the installer (Who creates an installer? How do we handle module installers?)
 | 
						|
                $this->dropConfiguration(); // TODO: Should only be done if the installation has been successfully completed
 | 
						|
                $this->view->installer = '';
 | 
						|
            } else {
 | 
						|
                $this->storeConfiguration($wizard->getConfig());
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        $this->view->wizard = $wizard;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Create the wizard and register all pages
 | 
						|
     *
 | 
						|
     * @return  Wizard
 | 
						|
     */
 | 
						|
    protected function createWizard()
 | 
						|
    {
 | 
						|
        $wizard = new Wizard();
 | 
						|
        $wizard->setTitle('Web');
 | 
						|
        $wizard->setRequest($this->getRequest());
 | 
						|
        $wizard->setConfiguration($this->loadConfiguration());
 | 
						|
        $wizard->addPages(
 | 
						|
            array(
 | 
						|
//                t('Welcome') => 'Icinga\Form\Install\WelcomePage',
 | 
						|
//                t('Requirements') => 'Icinga\Form\Install\RequirementsPage',
 | 
						|
//                t('Authentication') => 'Icinga\Form\Install\AuthenticationPage',
 | 
						|
//                t('Administration') => 'Icinga\Form\Install\AdministrationPage',
 | 
						|
//                t('Preferences') => 'Icinga\Form\Install\PreferencesPage',
 | 
						|
                t('Logging') => 'Icinga\Form\Install\LoggingPage',
 | 
						|
//                t('Database Setup') => 'Icinga\Form\Install\DatabasePage',
 | 
						|
//                t('Summary') => 'Icinga\Form\Install\SummaryPage'
 | 
						|
            )
 | 
						|
        );
 | 
						|
 | 
						|
        return $wizard;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Store the given configuration values
 | 
						|
     *
 | 
						|
     * @param   Zend_Config     $config     The configuration
 | 
						|
     */
 | 
						|
    protected function storeConfiguration(Zend_Config $config)
 | 
						|
    {
 | 
						|
        $session = Session::getSession();
 | 
						|
        $session->getNamespace('WebWizard')->setAll($config->toArray(), true);
 | 
						|
        $session->write();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Load all configuration values
 | 
						|
     *
 | 
						|
     * @return  Zend_Config
 | 
						|
     */
 | 
						|
    protected function loadConfiguration()
 | 
						|
    {
 | 
						|
        return new Zend_Config(Session::getSession()->getNamespace('WebWizard')->getAll(), true);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Clear all stored configuration values
 | 
						|
     */
 | 
						|
    protected function dropConfiguration()
 | 
						|
    {
 | 
						|
        $session = Session::getSession();
 | 
						|
        $session->removeNamespace('WebWizard');
 | 
						|
        $session->write();
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
// @codeCoverageIgnoreEnd
 |