%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/installer/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/installer/Module.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2017 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences */ namespace humhub\modules\installer; use Exception; use humhub\libs\DynamicConfig; use Yii; use yii\console\Application; use yii\helpers\Url; use yii\web\HttpException; /** * InstallerModule provides an web installation interface for the applcation * * @since 0.5 */ class Module extends \humhub\components\Module { /** * @event on configuration steps init */ const EVENT_INIT_CONFIG_STEPS = 'steps'; /** * @inheritdoc */ public $controllerNamespace = 'humhub\modules\installer\controllers'; /** * Array of config steps * * @var array */ public $configSteps = []; /** * @inheritdoc */ public function init() { parent::init(); if (Yii::$app instanceof Application) { return; } $this->layout = '@humhub/modules/installer/views/layouts/main.php'; $this->initConfigSteps(); $this->sortConfigSteps(); } /** * @inheritdoc */ public function beforeAction($action) { // Block installer, when it's marked as installed if (Yii::$app->params['installed']) { throw new HttpException(500, 'HumHub is already installed!'); } Yii::$app->controller->enableCsrfValidation = false; return parent::beforeAction($action); } /** * Checks if database connections works * * @return boolean state of database connection */ public function checkDBConnection() { try { // call setActive with true to open connection. Yii::$app->db->open(); // return the current connection state. return Yii::$app->db->getIsActive(); } catch (Exception $e) { } return false; } /** * Checks if the application is already configured. */ public function isConfigured() { if (Yii::$app->settings->get('secret') == '') { return false; } return true; } /** * Sets application in installed state (disables installer) */ public function setInstalled() { $config = DynamicConfig::load(); $config['params']['installed'] = true; DynamicConfig::save($config); } /** * Sets application database in installed state */ public function setDatabaseInstalled() { $config = DynamicConfig::load(); $config['params']['databaseInstalled'] = true; DynamicConfig::save($config); } protected function initConfigSteps() { /** * Step: Basic Configuration */ $this->configSteps['basic'] = [ 'sort' => 100, 'url' => Url::to(['/installer/config/basic']), 'isCurrent' => function() { return (Yii::$app->controller->id == 'config' && Yii::$app->controller->action->id == 'basic'); }, ]; /** * Step: Use Case */ $this->configSteps['usecase'] = [ 'sort' => 150, 'url' => Url::to(['/installer/config/use-case']), 'isCurrent' => function() { return (Yii::$app->controller->id == 'config' && Yii::$app->controller->action->id == 'use-case'); }, ]; /** * Step: Security */ $this->configSteps['security'] = [ 'sort' => 200, 'url' => Url::to(['/installer/config/security']), 'isCurrent' => function() { return (Yii::$app->controller->id == 'config' && Yii::$app->controller->action->id == 'security'); }, ]; /** * Step: Sample Data */ $this->configSteps['modules'] = [ 'sort' => 300, 'url' => Url::to(['/installer/config/modules']), 'isCurrent' => function() { return (Yii::$app->controller->id == 'config' && Yii::$app->controller->action->id == 'modules'); }, ]; /** * Step: Setup Admin User */ $this->configSteps['admin'] = [ 'sort' => 400, 'url' => Url::to(['/installer/config/admin']), 'isCurrent' => function() { return (Yii::$app->controller->id == 'config' && Yii::$app->controller->action->id == 'admin'); }, ]; /** * Step: Sample Data */ $this->configSteps['sample-data'] = [ 'sort' => 450, 'url' => Url::to(['/installer/config/sample-data']), 'isCurrent' => function() { return (Yii::$app->controller->id == 'config' && Yii::$app->controller->action->id == 'sample-data'); }, ]; /** * Step: Setup Admin User */ $this->configSteps['finish'] = [ 'sort' => 1000, 'url' => Url::to(['/installer/config/finish']), 'isCurrent' => function() { return (Yii::$app->controller->id == 'config' && Yii::$app->controller->action->id == 'finish'); }, ]; $this->trigger(self::EVENT_INIT_CONFIG_STEPS); } /** * Get Next Step */ public function getNextConfigStepUrl() { $foundCurrent = false; foreach ($this->configSteps as $step) { if ($foundCurrent) { return $step['url']; } if (call_user_func($step['isCurrent'])) { $foundCurrent = true; } } return $this->configSteps[0]['url']; } /** * Sorts all configSteps on sort attribute */ protected function sortConfigSteps() { usort($this->configSteps, function($a, $b) { return ($a['sort'] > $b['sort']) ? 1 : -1; }); } }