/**
  * Writes the config file.
  *
  * @return boolean Returns true if successful; false otherwise.
  */
 public function writeConfig()
 {
     $written = false;
     $configTpl = MODX_CORE_PATH . 'docs/config.inc.tpl';
     $configFile = MODX_CORE_PATH . 'config/' . MODX_CONFIG_KEY . '.inc.php';
     /**
      * Sanitize MySQL Password before writing to config, escaping '
      * I'm sure there's a better way to do this, but this works for now.
      * Otherwise, we risk fatal PHP errors if the entered Password
      * contains any single quotes as they would escape the string.
      * See GitHub issue 12502 for more information. https://github.com/modxcms/revolution/issues/12502
      */
     $this->install->settings->settings['database_password'] = addslashes($this->install->settings->settings['database_password']);
     $settings = $this->install->settings->fetch();
     $settings['last_install_time'] = time();
     $settings['site_id'] = uniqid('modx', true);
     /* make UUID if not set */
     if (empty($settings['uuid'])) {
         $settings['uuid'] = $this->install->generateUUID();
     }
     if (file_exists($configTpl)) {
         if ($tplHandle = @fopen($configTpl, 'rb')) {
             $content = @fread($tplHandle, filesize($configTpl));
             @fclose($tplHandle);
             if ($content) {
                 $replace = array();
                 while (list($key, $value) = each($settings)) {
                     if (is_scalar($value)) {
                         $replace['{' . $key . '}'] = "{$value}";
                     } elseif (is_array($value)) {
                         $replace['{' . $key . '}'] = var_export($value, true);
                     }
                 }
                 $content = str_replace(array_keys($replace), array_values($replace), $content);
                 if ($configHandle = @fopen($configFile, 'wb')) {
                     $written = @fwrite($configHandle, $content);
                     @fclose($configHandle);
                 }
             }
         }
     }
     $perms = $this->install->settings->get('new_file_permissions', sprintf("%04o", 0666 & 0666 - umask()));
     if (is_string($perms)) {
         $perms = octdec($perms);
     }
     $chmodSuccess = @chmod($configFile, $perms);
     if ($written) {
         $this->addResult(modInstallRunner::RESULT_SUCCESS, '<p class="ok">' . $this->install->lexicon('config_file_written') . '</p>');
     } else {
         $this->addResult(modInstallRunner::RESULT_FAILURE, '<p class="notok">' . $this->install->lexicon('config_file_err_w') . '</p>');
     }
     if ($chmodSuccess) {
         $this->addResult(modInstallRunner::RESULT_SUCCESS, '<p class="ok">' . $this->install->lexicon('config_file_perms_set') . '</p>');
     } else {
         $this->addResult(modInstallRunner::RESULT_WARNING, '<p>' . $this->install->lexicon('config_file_perms_notset') . '</p>');
     }
     return $written;
 }
 /**
  * Writes the config file.
  *
  * @return boolean Returns true if successful; false otherwise.
  */
 public function writeConfig()
 {
     $written = false;
     $configTpl = MODX_CORE_PATH . 'docs/config.inc.tpl';
     $configFile = MODX_CORE_PATH . 'config/' . MODX_CONFIG_KEY . '.inc.php';
     $settings = $this->install->settings->fetch();
     $settings['last_install_time'] = time();
     $settings['site_id'] = uniqid('modx', true);
     /* make UUID if not set */
     if (empty($settings['uuid'])) {
         $settings['uuid'] = $this->install->generateUUID();
     }
     if (file_exists($configTpl)) {
         if ($tplHandle = @fopen($configTpl, 'rb')) {
             $content = @fread($tplHandle, filesize($configTpl));
             @fclose($tplHandle);
             if ($content) {
                 $replace = array();
                 while (list($key, $value) = each($settings)) {
                     if (is_scalar($value)) {
                         $replace['{' . $key . '}'] = "{$value}";
                     } elseif (is_array($value)) {
                         $replace['{' . $key . '}'] = var_export($value, true);
                     }
                 }
                 $content = str_replace(array_keys($replace), array_values($replace), $content);
                 if ($configHandle = @fopen($configFile, 'wb')) {
                     $written = @fwrite($configHandle, $content);
                     @fclose($configHandle);
                 }
             }
         }
     }
     $perms = $this->install->settings->get('new_file_permissions', sprintf("%04o", 0666 & 0666 - umask()));
     if (is_string($perms)) {
         $perms = octdec($perms);
     }
     $chmodSuccess = @chmod($configFile, $perms);
     if ($written) {
         $this->addResult(modInstallRunner::RESULT_SUCCESS, '<p class="ok">' . $this->install->lexicon('config_file_written') . '</p>');
     } else {
         $this->addResult(modInstallRunner::RESULT_FAILURE, '<p class="notok">' . $this->install->lexicon('config_file_err_w') . '</p>');
     }
     if ($chmodSuccess) {
         $this->addResult(modInstallRunner::RESULT_SUCCESS, '<p class="ok">' . $this->install->lexicon('config_file_perms_set') . '</p>');
     } else {
         $this->addResult(modInstallRunner::RESULT_WARNING, '<p>' . $this->install->lexicon('config_file_perms_notset') . '</p>');
     }
     return $written;
 }