public function run($formData, $step, &$state)
 {
     $response = parent::run($formData, $step, $state);
     if (!$response->isSuccessful()) {
         return $response;
     }
     $stepsData = [];
     foreach ($state['steps'] as $aStep) {
         if ($stepData = $aStep->getData()) {
             $stepsData = array_merge($stepsData, $stepData);
         }
     }
     unset($stepsData['languages']);
     unset($_SESSION['install_locale']);
     InstallerUtils::createConfig($stepsData, BASE_PATH . '/api');
     InstallerUtils::createTables(BASE_PATH);
     InstallerUtils::addDefaultSettings($stepsData, BASE_PATH);
     $stepsData = InstallerUtils::addDefaultUser($stepsData);
     InstallerUtils::installSchema($stepsData['db_schema'], BASE_PATH);
     $data = ['user' => ['email' => $stepsData['directus_email'], 'token' => $stepsData['user_token'], 'password' => $stepsData['directus_password']], 'project' => ['name' => $stepsData['directus_name'], 'version' => DIRECTUS_VERSION, 'url' => get_url()], 'database' => ['host' => $stepsData['db_host'], 'name' => $stepsData['db_name'], 'user' => $stepsData['db_user'], 'password' => $stepsData['db_password']]];
     if ($response->getData('send_config_email')) {
         Mail::send('mail/new-install.twig.html', $data, function ($message) use($data) {
             $message->setSubject(__t('your_new_directus_instance_x', ['name' => $data['project']['name']]));
             $message->setTo($data['user']['email']);
         });
     }
     return $response;
 }
 public function testCreateFiles()
 {
     InstallerUtils::createConfig(['db_type' => 'mysql', 'db_port' => 3306, 'db_host' => 'localhost', 'db_name' => 'directus', 'db_user' => 'root', 'db_password' => 'password', 'directus_path' => '/directus/', 'directus_email' => '*****@*****.**'], __DIR__ . '/');
     $this->assertSame(sha1_file(__DIR__ . '/mock/config.sample.php'), sha1_file(__DIR__ . '/config.php'));
     $this->assertSame(sha1_file(__DIR__ . '/mock/configuration.sample.php'), sha1_file(__DIR__ . '/configuration.php'));
 }
 public function cmdInstall($args, $extra)
 {
     $data = [];
     $data['directus_email'] = '*****@*****.**';
     $data['directus_password'] = '******';
     $data['directus_name'] = 'Directus';
     $directus_path = BASE_PATH . DIRECTORY_SEPARATOR;
     foreach ($args as $key => $value) {
         switch ($key) {
             case 'e':
                 $data['directus_email'] = $value;
                 break;
             case 'p':
                 $data['directus_password'] = $value;
                 break;
             case 't':
                 $data['directus_name'] = $value;
                 break;
             case 'd':
                 $directus_path = $value;
                 break;
         }
     }
     try {
         $setting = new Setting($directus_path);
         if (!$setting->isConfigured()) {
             InstallerUtils::addDefaultSettings($data, $directus_path);
             InstallerUtils::addDefaultUser($data);
         } else {
             $setting->setSetting('global', 'project_name', $data['directus_name']);
             // NOTE: Do we really want to change the email when re-run install command?
             $user = new User($directus_path);
             try {
                 $user->changeEmail(1, $data['directus_email']);
                 $user->changePassword($data['directus_email'], $data['directus_password']);
             } catch (UserUpdateException $ex) {
                 throw new CommandFailedException(__t('Error changing admin e-mail') . ': ' . $ex->getMessage());
             } catch (PasswordChangeException $ex) {
                 throw new CommandFailedException(__t('Error changing user password') . ': ' . $ex->getMessage());
             }
         }
     } catch (PDOException $e) {
         echo PHP_EOL . "PDO Excetion!!" . PHP_EOL;
         echo PHP_EOL . PHP_EOL . __t('Module ') . $module . __t(' error: ') . $e->getMessage() . PHP_EOL . PHP_EOL;
     }
 }
Exemple #4
0
 private function install()
 {
     $data = [];
     $options = $this->options;
     foreach ($options as $key => $value) {
         switch ($key) {
             case 'e':
                 $data['directus_email'] = $value;
                 unset($options[$key]);
                 break;
             case 'p':
                 $data['directus_password'] = $value;
                 unset($options[$key]);
                 break;
             case 't':
                 $data['directus_name'] = $value;
                 unset($options[$key]);
                 break;
         }
     }
     if (!isset($data['directus_password']) || !isset($data['directus_email'])) {
         echo PHP_EOL . __t('missing_email_or_password') . PHP_EOL;
         exit;
     }
     InstallerUtils::addDefaultSettings($data, $this->directusPath);
     InstallerUtils::addDefaultUser($data);
     $this->clear();
 }